diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 3a287c451431..000000000000 --- a/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = false - -[*.md] -trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 4d536e4abe56..000000000000 --- a/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 847b69e8c5a9..000000000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,23 +0,0 @@ -# Contributing - -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 -submitting pull requests. If it's not something that most people will use, I -probably won't consider it. When in doubt ask. - -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:. - -## Pull Requests - -When submitting a pull request: - -1. Clone the repo. -2. Create a branch off of `master` and give it a meaningful name (e.g. - `my-awesome-new-feature`) and describe the feature or fix. -3. Open a pull request on GitHub. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index cb3aac83607a..000000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -name: "Bug Report" -about: "Is something not working as expected?" ---- - - - -## Environment - - - -- Minimal Mistakes version: -- Ruby gem or remote theme version: -- Jekyll version: -- Git repository URL: -- Hosted on GitHub Pages (if yes provide URL to site): -- Operating system: - -## Expected behavior - - - -## Steps to reproduce the behavior - - - -## Other - - diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 3adfbcd18905..000000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,81 +0,0 @@ -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: What happened? - 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: - - Hosted on GitHub Pages (if yes provide URL to site): - - Operating system: - 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 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index e02be34d82d0..000000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -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?" ---- - - - -## Motivation - - - - - -## Suggestion - - \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml deleted file mode 100644 index 65a03152deae..000000000000 --- a/.github/ISSUE_TEMPLATE/documentation.yml +++ /dev/null @@ -1,25 +0,0 @@ -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/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 3271858f6dae..000000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - -## Summary - - - -## Context - - - - diff --git a/.github/workflows/bad-pr.yml b/.github/workflows/bad-pr.yml deleted file mode 100644 index bf5572e0a896..000000000000 --- a/.github/workflows/bad-pr.yml +++ /dev/null @@ -1,32 +0,0 @@ -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: 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 deleted file mode 100644 index 733ad0d6668c..000000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,47 +0,0 @@ -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 old mode 100644 new mode 100755 index 406061feb7db..e769f21c3fbb --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,5 @@ -# 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 +.sass-cache +.jekyll-metadata +*~ +*.swp diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1bb28592f877..000000000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: ruby -cache: bundler -gemfile: docs/Gemfile -script: - - bundle exec jekyll algolia --source docs --destination docs/_site --config docs/_config.yml -branches: - only: - # Change this to gh-pages if you're deploying using the gh-pages branch - - master -rvm: - - 2.4 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index d8b6e7757c83..000000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,1737 +0,0 @@ -# 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). - -### 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) - -### 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 `

` 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 `` 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 `` 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 `

` 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 - -- Update jQuery to v3.4.1. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137) -- Update Gumshoe to v5.1.1. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140) - -### Bug Fixes - -- Fix JavaScript error when resizing pages with table of contents. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140) - -## [4.16.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.2) - -### Bug Fixes - -- Revert jQuery back to version v3.3.1, v.3.4.0 causes issues with other plugins that haven't been updated. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137) - -## [4.16.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.1) - -### Enhancements - -- Update [`compress` layout](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#compress-layout) to v3.1.0. [#2128](https://github.com/mmistakes/minimal-mistakes/pull/2128) -- Update jQuery to v3.4.0. [#2129](https://github.com/mmistakes/minimal-mistakes/pull/2129) - -### Bug Fixes - -- Fix Gumshoe related JavaScript error on pages without a table of contents. [#2124](https://github.com/mmistakes/minimal-mistakes/pull/2124) - -## [4.16.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.0) - -### Enhancements - -- Improve search `input` semantics for Lunr and Google search providers. [#2123](https://github.com/mmistakes/minimal-mistakes/pull/2123) -- Allow adding JavaScript files after those bundled in the theme. [#2110](https://github.com/mmistakes/minimal-mistakes/issues/2110) [#2116](https://github.com/mmistakes/minimal-mistakes/pull/2116) -- Add `$max-width` Sass variable for adjusting page content's maximum width. [#2093](https://github.com/mmistakes/minimal-mistakes/pull/2093) -- Add Thai localized UI text strings. [#2111](https://github.com/mmistakes/minimal-mistakes/pull/2111) -- Update Font Awesome to [v5.8.1](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.8.1). [#2102](https://github.com/mmistakes/minimal-mistakes/pull/2102) -- Add missing Vietnamese localized UI text strings. [#2097](https://github.com/mmistakes/minimal-mistakes/pull/2097) -- Replace jQuery Smooth Scroll with Smooth Scroll + Gumshoe. [#2082](https://github.com/mmistakes/minimal-mistakes/pull/2082) -- Add styling for [GFM task lists](https://help.github.com/en/articles/about-task-lists#creating-task-lists). [#2092](https://github.com/mmistakes/minimal-mistakes/issues/2092) -- Update Google Universal Analytics to load async. [#2079](https://github.com/mmistakes/minimal-mistakes/pull/2079) -- Remove Google+ social sharing button, comment provider, and author link configs from theme. -- Add missing Chinese text strings. [#2072](https://github.com/mmistakes/minimal-mistakes/pull/2072) - -### Bug Fixes - -- Fix table of contents active link styling. -- Add missing Hindi localized UI text strings. [#2105](https://github.com/mmistakes/minimal-mistakes/pull/2105) [#2106](https://github.com/mmistakes/minimal-mistakes/pull/2106) -- Fix Brazilian Portuguese text strings. [#2098](https://github.com/mmistakes/minimal-mistakes/pull/2098) -- Fix typo in French `results_found` text string. [#2096](https://github.com/mmistakes/minimal-mistakes/pull/2096) -- Fix figures inside of list elements. [#2094](https://github.com/mmistakes/minimal-mistakes/pull/2094) -- Remove Font Awesome `data-search-pseudo-elements` attribute as it degrades smooth scroll performance. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075#issuecomment-472437014) -- Fix footnote links incompatibility with smooth scroll plugin. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075) -- Loosen Bundler dependency in ruby gem. - -## [4.15.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.2) - -### Enhancements - -- Close search overlay with Esc. [#2055](https://github.com/mmistakes/minimal-mistakes/pull/2055) -- Update Swedish localized UI text strings. [#2056](https://github.com/mmistakes/minimal-mistakes/pull/2056) -- Update Font Awesome to 5.7.1 and add `data-search-pseudo-elements` attribute. [#2053](https://github.com/mmistakes/minimal-mistakes/pull/2053) -- Add Malayalam localized UI text strings. [#2037](https://github.com/mmistakes/minimal-mistakes/pull/2037) - -### Bug Fixes - -- 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) - -## [4.15.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.1) - -### Bug Fixes - -- Fix empty `` when `site_logo` is not assigned. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-454809876) - -## [4.15.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.0) - -### Enhancements - -- Add logo and title customization to the masthead. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026) -- Add support to customize `issue-term` for utterances comment provider. [#2022](https://github.com/mmistakes/minimal-mistakes/pull/2022) -- Allow custom canonical url on a page-by-page basis. [#2021](https://github.com/mmistakes/minimal-mistakes/pull/2021) -- Update table of contents navigation based on scroll position to indicate which link is currently active in the viewport. [#2020](https://github.com/mmistakes/minimal-mistakes/pull/2020) -- Clicking table of contents links changes URL has fragment. [#2019](https://github.com/mmistakes/minimal-mistakes/pull/2019) [#2023](https://github.com/mmistakes/minimal-mistakes/pull/2023) - -## [4.14.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.2) - -### Enhancements - -- Improve accessibility by adding label text to search button toggle. [#2014](https://github.com/mmistakes/minimal-mistakes/pull/2014) -- Update Lunr to 2.3.5. [#2010](https://github.com/mmistakes/minimal-mistakes/pull/2010) -- Shorten Internet Explorer conditional statement in `_includes/head.html`. [#2006](https://github.com/mmistakes/minimal-mistakes/pull/2006) -- Add Persian localized UI text strings. [#2004](https://github.com/mmistakes/minimal-mistakes/pull/2004) -- Remove unused JavaScript variables from Staticman comment script. [#1996](https://github.com/mmistakes/minimal-mistakes/pull/1996) -- Update Font Awesome to 5.6.0. [#1995](https://github.com/mmistakes/minimal-mistakes/pull/1995) -- Change remaining schema.org markup to `https`. [#1978](https://github.com/mmistakes/minimal-mistakes/pull/1978) -- Update NPM dependencies. - -### Bug Fixes - -- Fix wide tables that overflow parent container. [#2008](https://github.com/mmistakes/minimal-mistakes/issues/2008) -- Fix Spanish `comments_label` and `comments_title` UI text strings. [#1997](https://github.com/mmistakes/minimal-mistakes/pull/1997) -- Allow sidebar navigation with custom sidebar content. [#1986](https://github.com/mmistakes/minimal-mistakes/issues/1986) -- Fix Google Custom Search JavaScript error when not using Instant Search. [#1983](https://github.com/mmistakes/minimal-mistakes/pull/1983) - -## [4.14.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.1) - -### Bug Fixes - -- Fix closed navicon on hover. - -## [4.14.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.0) - -### Enhancements - -- Change schema.org markup to `https`. [#1969](https://github.com/mmistakes/minimal-mistakes/pull/1969) -- Add Google Drive as video provider. [#1967](https://github.com/mmistakes/minimal-mistakes/pull/1967) -- Match `:focus` color to skin. -- Add support for [utterances](https://utteranc.es/) comments. [#1909](https://github.com/mmistakes/minimal-mistakes/issues/1909) -- Use privacy aware embed options for YouTube and Vimeo in [responsive video helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#responsive-video-embed). [#1964](https://github.com/mmistakes/minimal-mistakes/pull/1964) -- Add `rel="nofollow noopener noreferrer"` to author profile links. [#1924](https://github.com/mmistakes/minimal-mistakes/pull/1924) -- Improve color contrast of primary buttons and links. -- Add Punjabi localized UI text strings. [#1962](https://github.com/mmistakes/minimal-mistakes/pull/1962) -- Add Hindi localized UI text strings. [#1888](https://github.com/mmistakes/minimal-mistakes/pull/1888) -- Update Lunr to `2.3.3`. [#1885](https://github.com/mmistakes/minimal-mistakes/pull/1885) -- Cache "static" includes to improve build performance. **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. [#1874](https://github.com/mmistakes/minimal-mistakes/pull/1874) -- Make entire feature and archive items "clickable". [#1864](https://github.com/mmistakes/minimal-mistakes/pull/1864) -- Allow custom Staticman endpoints. [#1842](https://github.com/mmistakes/minimal-mistakes/issues/1842) -- Remove `type="text/css"` from Algolia script includes. [#1836](https://github.com/mmistakes/minimal-mistakes/pull/1836) -- Remove unneeded `HandheldFriendly` and `MobileOptimized` meta tags. [#1837](https://github.com/mmistakes/minimal-mistakes/pull/1837) -- Update Font Awesome to version `5.5.0` and add `integrity` hash. [#1922](https://github.com/mmistakes/minimal-mistakes/pull/1922) -- Always load Google 404 Linkhelp script over HTTPS. [#1829](https://github.com/mmistakes/minimal-mistakes/pull/1829) -- Remove deprecated `base_path` include helper. - -### Bug Fixes - -- Prevent current post from showing in the related posts section. [#1976](https://github.com/mmistakes/minimal-mistakes/pull/1976) -- Fix dark skins syntax highlighting colors. [#1973](https://github.com/mmistakes/minimal-mistakes/issues/1973) -- Remove unnecessary closing bracket in analytics documentation. [#1915](https://github.com/mmistakes/minimal-mistakes/pull/1915) -- Fix breadcrumb navigation alignment. [#1917](https://github.com/mmistakes/minimal-mistakes/issues/1917) -- Fix Algolia search link positioning. [#1904](https://github.com/mmistakes/minimal-mistakes/pull/1904) -- Fix Lunr search index merging words. [#1883](https://github.com/mmistakes/minimal-mistakes/issues/1883) -- Properly apply `relative_url` filter to internal links in header overlay `actions` array. -- Revert cached includes (`include_cached`) for comment and analytics providers. [#1905](https://github.com/mmistakes/minimal-mistakes/issues/1905) - -## [4.13.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.13.0) - -### Enhancements - -- Add Romanian localized UI text strings. [#1814](https://github.com/mmistakes/minimal-mistakes/pull/1814) -- Improve author link flexibility. [#1581](https://github.com/mmistakes/minimal-mistakes/issues/1581) -- Improve footer link flexibility. -- Deprecate `cta_label` and `cta_url` in header overlay in favor of new `actions` array that allows for multiple "call to action" button links. [#1461](https://github.com/mmistakes/minimal-mistakes/issues/1461) -- Add support to [gallery helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) for defining column layout (`half`, `third`, or single `''`). [#1821](https://github.com/mmistakes/minimal-mistakes/issues/1821) - -### Bug Fixes - -- Fix sidebar navigation list toggle. [#1819](https://github.com/mmistakes/minimal-mistakes/issues/1819) -- Fix hover animation for links with `:visited` state. [#1820](https://github.com/mmistakes/minimal-mistakes/issues/1820) - -## [4.12.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.2) - -### Enhancements - -- Add missing Italian localized UI text strings. [#1793](https://github.com/mmistakes/minimal-mistakes/pull/1793) -- Update [jekyll-toc](https://github.com/allejo/jekyll-toc) to `v1.0.5`. -- 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 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 `{{ 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) - -### Enhancements - -- Add missing French localized UI text strings. [#1769](https://github.com/mmistakes/minimal-mistakes/pull/1769) [#1741](https://github.com/mmistakes/minimal-mistakes/pull/1741) -- Update Font Awesome to version [`5.2.0`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). [#1754](https://github.com/mmistakes/minimal-mistakes/pull/1754) -- Add documentation note to update root `Gemfile` when forking theme. - -### Bug Fixes - -- Remove slash at the beginning of `path` in staticman.yml example. [#1772](https://github.com/mmistakes/minimal-mistakes/pull/1772) -- Fix `read_time` logic in header image overlay. [#1756](https://github.com/mmistakes/minimal-mistakes/pull/1756) - -## [4.12.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.0) - -### Enhancements - -- Add Hungarian localized UI text strings. [#1682](https://github.com/mmistakes/minimal-mistakes/pull/1682) -- DRY `tags_max` calculation in tags.html layout. [#1696](https://github.com/mmistakes/minimal-mistakes/pull/1696) -- DRY `categories_max` calculation in categories.html layout. -- 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) -- 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) - -### 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 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) -- Fix "Back to Top" links on pages that use [header overlays](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay). - -## [4.11.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.11.2) - -### Enhancements - -- 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. - -## [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. - -### 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. - -## [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) - -### Bug Fixes - -- 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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 `
` 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. `
my link`). -- Add `air`, `contrast`, `dark`, `dirt`, `mint`, and `sunrise` skin color options. [#1208](https://github.com/mmistakes/minimal-mistakes/issues/1208) -- Allow scripts in `` and before `` 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) - -### 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. - -## [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) - -### 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) - -### 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) - -## [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) - -### 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) - -### 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) - -## [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) - -### Bug Fixes - -- Toggle close button on `mouseleave`. [#975](https://github.com/mmistakes/minimal-mistakes/issues/975) -- Remove extraneous `` and `` 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`. - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -## [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: - - ``` - --- - layout: - --- - ``` - - Any local customizations you make to `/assets/js/main.min.js` should now replace the theme gem's version. - -## [4.2.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.2.2) - -### 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) - -### 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) - -### 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) - -## [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/) - -### Maintenance - -- 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) - -### 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) - -### 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). - -## [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) - -### Bug Fixes - -- 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 - -### 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) - -## [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) - -### Maintenance - -- 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) - -## [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. - -### Maintenance - -- 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) - -### 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) - -### Maintenance - -- 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 `
` 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) - -### Maintenance - -- 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`). - -### Bug Fixes - -- 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. - -## [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 `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. - -### 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. - -## [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) - -### Bug Fixes - -- 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. - -## [3.4.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.7) - -### Enhancements - -- Add `layout` based and user-defined class names to `` 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) - -## [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) - -### Bug Fixes - -- 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) - -### Bug Fixes - -- 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 `{% 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) - -### Enhancements - -- Add French "comments" related localized UI text. [#472](https://github.com/mmistakes/minimal-mistakes/pull/472) - -### Bug Fixes - -- Exclude `vendor` in Jekyll config file. -- Fix Liquid syntax error for offending parenthesis. [#479](https://github.com/mmistakes/minimal-mistakes/issues/479) - -### Maintenance - -- Update gems: `colorator` (1.1.0), `forwardable-extended` (2.6.0), `github-pages` (93), `jekyll` (= 3.2.1), `minima` (= 1.0.1). - -## [3.4.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.3) - -### Enhancements - -- Make ["honeypot" `input`](https://github.com/mmistakes/minimal-mistakes/commit/06a8249a69a37dddda7e2a5bfbe32056c1a9a607) in Staticman comment form less obvious to spam bots -- Add padding to `.highlight` code blocks to better [align `overflow` scrollbar](https://github.com/mmistakes/minimal-mistakes/commit/e4abec0a6f7f8cff72505ca0754615df294fd5b3) to the bottom. -- Add additional image options for Twitter card social sharing meta tags. [#466](https://github.com/mmistakes/minimal-mistakes/pull/466) -- Add structured data markup for Staticman comments. [#458](https://github.com/mmistakes/minimal-mistakes/issues/458) - -### Bug Fixes - -- Format `og:locale` tag with `_` instead of `-`. [#462](https://github.com/mmistakes/minimal-mistakes/issues/462) - -### Maintenance - -- Add note to docs about using `url: http://localhost:4000` when working locally. - -## [3.4.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.2) - -### Enhancements - -- Improve UX of static comment forms. [#448](https://github.com/mmistakes/minimal-mistakes/issues/448) - -## [3.4.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.1) - -### Enhancements - -- Add `staticman.filename` configuration with UNIX timestamp for sorting data files. example ~> `comment-1470943149`. - -### Bug Fixes - -- Don't add `` to author name if URL is blank. - -## [3.4.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.0) - -### Enhancements - -- Support static-based commenting via [Staticman](https://staticman.net/) for sites hosted with GitHub Pages. [#424](https://github.com/mmistakes/minimal-mistakes/issues/424) - -## [3.3.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.7) - -### Bug Fixes - -- Re-enabled Jekyll plugins in `_config.yml` in case they aren't autoloaded in `Gemfile`. [#417](https://github.com/mmistakes/minimal-mistakes/issues/417) - -### Enhancements - -- Fallback to `site.github.url` for use in `{{ base_path }}` when `site.url` is `nil`. -- Replace Sass and Autoprefixer `npm` build scripts with [Jekyll's built-in asset support](https://jekyllrb.com/docs/assets/). [#333](https://github.com/mmistakes/minimal-mistakes/issues/333) - -### Maintenance - -- Document `site.repository` and its role with [`github-metadata`](https://github.com/jekyll/github-metadata) gem. -- Add sample [archive page with content](https://mmistakes.github.io/minimal-mistakes/archive-layout-with-content/) for testing styles on demo site. - -## [3.3.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.6) - -### Bug Fixes - -- 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 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) -- 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.` - -## [3.3.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.4) - -### Enhancements - -- Add support for configurable feed URL to use a service like FeedBurner instead of linking directly to `feed.xml` in `` and the site footer. [#378](https://github.com/mmistakes/minimal-mistakes/issues/378), [#379](https://github.com/mmistakes/minimal-mistakes/pull/379), [#406](https://github.com/mmistakes/minimal-mistakes/pull/406) -- Add Turkish localized UI text. [#403](https://github.com/mmistakes/minimal-mistakes/pull/403) - -### Maintenance - -- Update gems: `activesupport` (4.2.7), `ffi` (1.9.14), `github-pages` (88), `jekyll-redirect-from` (0.11.0), `jekyll-watch` (1.5.0). - -## [3.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.3) - -### 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 - -- Fix JavaScript that triggers "sticky" sidebar to avoid layout issues on screen sizes < `1024px`. [#396](https://github.com/mmistakes/minimal-mistakes/issues/396) - -## [3.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.1) - -### Enhancements - -- Enable image popup on < 500px wide screens. [#385](https://github.com/mmistakes/minimal-mistakes/issues/385) -- Indicate the relationship between component URLs in a paginated series by applying `rel="prev"` and `rel="next"` to pages that use `site.paginator`. [#253](https://github.com/mmistakes/minimal-mistakes/issues/253) -- Improve link posts in archive listings. [#276](https://github.com/mmistakes/minimal-mistakes/issues/276) - -### Maintenance - -- Update gems: `github-pages` (86), `ffi` 1.9.13, `jekyll-mentions` 1.1.3, and `rouge` 1.11.1 -- Fix note about custom sidebar content appearing below author profile. [#388](https://github.com/mmistakes/minimal-mistakes/issues/388) - -## [3.2.13](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.13) - -### 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`. - -## [3.2.12](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.12) - -### Enhancements - -- Remove window width "magic number" from sticky sidebar check in `main.js` for improved flexibility. [#375](https://github.com/mmistakes/minimal-mistakes/pull/375) - -### Bug Fixes - -- Fix author override conditional where a missing `authors.yml` would show broken sidebar content. Defaults to `site.author`. [#376](https://github.com/mmistakes/minimal-mistakes/pull/376) - -## [3.2.11](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.11) - -### Bug Fixes - -- Fix disappearing author sidebar links [#372](https://github.com/mmistakes/minimal-mistakes/issues/372) - -### Maintenance - -- Update gems: `github-pages` (84), `jekyll-github-metadata` 2.0.2, and `kramdown` 1.11.1 -- Update vendor JavaScript: jQuery 1.12.4, Stickyfill.js 1.1.4 -- Update Font Awesome 4.6.3 - -## [3.2.10](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.10) - -### Maintenance - -- Add `CONTRIBUTING.md` - -## [3.2.9](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.9) - -### Enhancements - -- Add support for [header overlay images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay) for Open Graph images. [#358](https://github.com/mmistakes/minimal-mistakes/pull/358) - -### Bug Fixes - -- Fix `Person` typo Schema.org type [#358](https://github.com/mmistakes/minimal-mistakes/pull/358) - -### Maintenance - -- Update `github-pages` gem and dependencies. -- Remove `minutes_read` to avoid awkward reading time wording [#356](https://github.com/mmistakes/minimal-mistakes/issues/356) - -## [3.2.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.8) - -### Bug Fixes - -- Remove `cursor: pointer` that appears on white-space surrounding author side list items and links. [#354](https://github.com/mmistakes/minimal-mistakes/pull/354) - -### Maintenance - -- Add contributing information to `README.md`. [#357](https://github.com/mmistakes/minimal-mistakes/issues/357) - -## [3.2.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.7) - -### Enhancements - -- Add French localized UI text. [#346](https://github.com/mmistakes/minimal-mistakes/pull/346) - -### Bug Fixes - -- Fix branch logic for Yandex and Alexa in `seo.html`. [#348](https://github.com/mmistakes/minimal-mistakes/pull/348) - -## [3.2.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.6) - -### Bug Fixes - -- Fix error `Liquid Exception: divided by 0 in _includes/archive-single.html, included in _layouts/single.html` caused by null `words_per_minute` in `_config.yml`. [#345](https://github.com/mmistakes/minimal-mistakes/pull/345) - -## [3.2.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.5) - -### Bug Fixes - -- Fix link color in hero overlay to be white. -- Remove underlines from archive item titles. - -## [3.2.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.4) - -### Enhancements - -- Improve text alignment of masthead, hero overlay, page footer to be flush left and remove awkward white-space gaps. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342) -- Add Spanish localized UI text. [#338](https://github.com/mmistakes/minimal-mistakes/pull/338) - -### Bug Fixes - -- Fix alignment of icons in author sidebar [#341](https://github.com/mmistakes/minimal-mistakes/issues/341) - -### Maintenance - -- Add background color to page footer to set it apart from main content. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342) -- Add terms and privacy policy to theme's demo site. [#343](https://github.com/mmistakes/minimal-mistakes/issues/343) -- Update screenshots found in theme documentation. - -## [3.2.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.3) - -### Enhancements - -- 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) - -### 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) - -## [3.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.1) - -### Bug Fixes - -- Remove need for "double tapping" masthead menu links on iOS devices. [#315](https://github.com/mmistakes/minimal-mistakes/issues/315) - -### Maintenance - -- Add `ISSUE_TEMPLATE.md` for improve issue submission process. - -## [3.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.0) - -### Bug Fixes - -- Fix missing category/tag links in post footer due to possible conflict with `site.tags` and `site.categories`. [#329](https://github.com/mmistakes/minimal-mistakes/issues/329#issuecomment-222375568) - -## [3.1.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.8) - -### Bug Fixes - -- Fix `Liquid Exception: undefined method 'gsub' for nil:NilClass in _layouts/single.html` error when `page.title` is null. `

` element is now conditional if `title:` is not set for a `page` or collection item. [#312](https://github.com/mmistakes/minimal-mistakes/issues/312) - -### Maintenance - -- Remove duplicate `fa-twitter` and `fa-twitter-square` classes from `_utilities.scss`. [#302](https://github.com/mmistakes/minimal-mistakes/issues/302) - -- Document installing additional Jekyll gem dependencies when using `gem "jekyll"` instead of `gem "github-pages"` to avoid any errors on run. [#305](https://github.com/mmistakes/minimal-mistakes/issues/305) - -## [3.1.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.7) - -### Enhancements - -- Add translation key for "Recent Posts" used in home page `index.html`. [#316](https://github.com/mmistakes/minimal-mistakes/pull/316) - -### Maintenance - -- Small fix to avoid underlying the whitespace between icons and related text when hovering. [#303](https://github.com/mmistakes/minimal-mistakes/pull/303) - -## [3.1.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.6) - -### Maintenance - -- Update gem dependencies. Run `bundle` to update `Gemfile.lock`. - -## [3.1.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.5) - -### Maintenance - -- Fix `www` and `https` links in author profile include [#293](https://github.com/mmistakes/minimal-mistakes/pull/293) - -## [3.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.4) - -### Enhancements - -- 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) - -### Enhancements - -- Improve `site.locale` documentation [#284](https://github.com/mmistakes/minimal-mistakes/issues/284) -- Remove ProTip note about protocol-less `site.url` as it is an anti-pattern [#288](https://github.com/mmistakes/minimal-mistakes/issues/288) - -### Bug Fixes - -- Fix `og_image` URL in seo.html [#277](https://github.com/mmistakes/minimal-mistakes/issues/277) -- Fix `author_profile` toggle when assigned in a `_layout` [#285](https://github.com/mmistakes/minimal-mistakes/issues/285) -- Fix typo in `build:all` npm script [#283](https://github.com/mmistakes/minimal-mistakes/pull/283) -- Fix URL typo documentation [#287](https://github.com/mmistakes/minimal-mistakes/issues/287) -- SEO author bug. If `twitter.username` is set and `author.twitter` is `nil` bad things happen. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289) - -## [3.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.2) - -### 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 - -- Fixed reading time bug when `words_per_minute` wasn't set in `_config.yml` [#271](https://github.com/mmistakes/minimal-mistakes/issues/271) - -## [3.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.0) - -### Enhancements - -- Updated [Font Awesome](https://fortawesome.github.io/Font-Awesome/whats-new/) to version 4.6.1 -- Added optional GitHub and Bitbucket links to footer if set on `site.author` in `_config.yml`. - -### Bug Fixes - -- Fixed Bitbucket URL typo in author sidebar. - -## [3.0.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.0.3) - -### Enhancements - -- Rebuilt the entire theme: layouts, includes, stylesheets, scripts, you name it. -- Refreshed the look and feel while staying true to the original design of the theme (author sidebar/main content). -- Replaced grid system with [Susy](http://susy.oddbird.net/). -- Replaced Grunt tasks with `npm` scripts. -- Removed Google Fonts and replaced with system fonts to improve performance (they can be [added back](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/) if desired) -- Greatly improved [theme documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/). -- Increased the amount of sample posts, sample pages, and sample collections to throughly test the theme and edge-cases. -- Moved all sample content and assets out of `master` to keep it as clean as possible for forking. -- Added new layouts for `splash` pages, archives for [`jekyll-archives`](https://github.com/jekyll/jekyll-archives) if enabled, and [`compress.html`](https://github.com/penibelst/jekyll-compress-html) to improve performance. -- Added taxonomy links to posts (tags and categories). -- Added optional "reading time" meta data. -- Improved Liquid used for Twitter Cards and Open Graph data in ``. -- Improved `gallery` include helper and added `feature_row` for use with splash page layout. -- Added Keybase.io, author web URI, and Bitbucket optional links to sidebar. -- Add `feed.xml` link to footer. -- Added a [UI text data file](https://mmistakes.github.io/minimal-mistakes/docs/ui-text/) to easily change all text found in the theme. -- Added LinkedIn to optional social share buttons. -- Added Facebook, Google+, and custom commenting options in addition to Disqus. -- Added optional breadcrumb links. - -## [2.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.1) - -## [2.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.0) - -### Enhancements - -- Add support for Jekyll 3.0 -- Minor updates to syntax highlighting CSS and theme documentation - -## [2.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.3) - -### Enhancements - -- Cleaner print styles that remove the top navigation, social sharing buttons, and other elements not needed when printed. - -## [2.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.2) - -### Enhancements - -- Add optional CodePen icon/url to author side bar [#156](https://github.com/mmistakes/minimal-mistakes/pull/156) -- Documented Stackoverflow username explanation in `_config.yml` [#157](https://github.com/mmistakes/minimal-mistakes/pull/157) -- Simplified Liquid in `post-index.html` to better handle year listings [#166](https://github.com/mmistakes/minimal-mistakes/pull/166) - -### Bug Fixes - -- Cleanup Facebook related Open Graph meta tags [#149](https://github.com/mmistakes/minimal-mistakes/issues/149) -- Corrected minor typos [#158](https://github.com/mmistakes/minimal-mistakes/pull/158) [#175](https://github.com/mmistakes/minimal-mistakes/issues/175) - -## [2.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.1) - -### Enhancements - -- Add optional XING profile link to author sidebar -- Include open graph meta tags for feature image (if assigned) [#149](https://github.com/mmistakes/minimal-mistakes/issues/149) -- Create an include for feed footer - -### Bug Fixes - -- Remove http protocol from Google search form on sample 404 page -- Only show related posts if there are one or more available -- Fix alignment of email address link in author sidebar - -## [2.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.0) - -### Enhancements - -- Add optional social sharing buttons ([#42](https://github.com/mmistakes/minimal-mistakes/issues/42)) - -![social sharing buttons](https://cloud.githubusercontent.com/assets/1376749/5860522/d9f28a96-a22f-11e4-9b83-940a3a9a766a.png) - -- Add Soundcloud, YouTube ([#95](https://github.com/mmistakes/minimal-mistakes/pull/95)), Flickr ([#119](https://github.com/mmistakes/minimal-mistakes/pull/119)), and Weibo ([#116](https://github.com/mmistakes/minimal-mistakes/pull/116)) icons for use in author sidebar. -- Fix typos in posts and documentation and remove references to Less -- Include note about Octopress gem being optional -- Post author override support extended to the Atom feed ([#71](https://github.com/mmistakes/minimal-mistakes/pull/71)) -- Only include email address in feed if specified in `_config.yml` or author `_data` -- Wrap all page content in `#main` to harmonize article and post index styles ([#86](https://github.com/mmistakes/minimal-mistakes/issues/86)) -- Include new sample feature images for posts and pages -- Table of contents improvements: fix collapse toggle, indent nested elements, show on small screens, and create an `_include` for reusing in posts and pages. -- Include note about running Jekyll with `bundle exec` when using Bundler -- Fix home page path in top navigation -- Remove Google Authorship ([#120](https://github.com/mmistakes/minimal-mistakes/issues/120)) -- Remove duplicate author content that displayed in `div.article-author-bottom` -- Removed unused `_sass/print.scss` styles -- Improve comments in `.scss` files - -## [2.0.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/v2.0) - -## [1.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.3) - -### Enhancements - -- Added new icons and profile links for Stackoverflow, Dribbble, Pinterest, Foursquare, and Steam to the author bio sidebar. -- Cleaned up the Kramdown auto table of contents styling to be more readable -- Removed page width specific .less stylesheets and created mixins for easier updating -- Removed Modernizr since it wasn't being used -- Added pages to sitemap.xml -- Added category: to rake new_post task -- Minor typographic changes - -### Bug Fixes - -- Corrected various broken links in README and Theme Setup. - -## [1.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.1) - -### Enhancements - -- Cleaned up table of contents styling -- Reworked top navigation to be a better experience on small screens. Nav items now display vertically when the menu button is tapped, revealing links with larger touch targets. - -![menu animation](https://camo.githubusercontent.com/3fbd8c1326485f4b1ab32c0005c0fca7660b5d31/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313337363734392f323136343037352f31653366303663322d393465372d313165332d383961612d6436623636376562306564662e676966) - -## [1.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.2.0) - -### Bug Fixes - -- Table weren't filling the entire width of the content container. They now scale at 100%. Thanks [@dhruvbhatia](https://github.com/dhruvbhatia) - -### Enhancements - -- Decreased spacing between Markdown footnotes -- Removed dark background on footer -- Removed UPPERCASE styling on post titles in the index listing - -## [1.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.4) - -### Bug Fixes - -- Fix top navigation bug issue ([#10](https://github.com/mmistakes/minimal-mistakes/issues/10)) for real this time. Remember to clear your floats kids. - -## [1.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.3) - -### Bug Fixes - -- Fix top navigation links that weren't click able on small viewports (Issue [#10](https://github.com/mmistakes/minimal-mistakes/issues/10)). -- Remove line wrap from top navigation links that may span multiple lines. - -## [1.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.2) - -### Enhancements - -- Added Grunt build script for compiling Less/JavaScript and optimizing image assets. -- Added support for large image summary Twitter card. -- Stylesheet adjustments - -## [1.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.1) - -### Bug Fixes - -- Removed [Typeplate](http://typeplate.com/) styles. Was [causing issues with newer versions of Less](https://github.com/typeplate/typeplate.github.io/issues/108) and is no longer maintained. - -### Enhancements - -- Added [image attribution](http://mmistakes.github.io/minimal-mistakes/theme-setup/#feature-images) for post and page feature images. -- Added [404 page](http://mmistakes.github.io/minimal-mistakes/404.html). -- Cleaned up various Less variables to better align with naming conventions used in other MM Jekyll themes. -- Removed Chrome Frame references. -- Added global CSS3 transitions to text and block elements. -- Improved typography in a few places. - -## [1.0.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.2) - -### Enhancements - -- 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) diff --git a/CNAME b/CNAME new file mode 100644 index 000000000000..7646edd765ed --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +edgriebel.com \ No newline at end of file diff --git a/Gemfile b/Gemfile index 3be9c3cd812e..e768744a9daf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,20 @@ source "https://rubygems.org" -gemspec + +gem "github-pages", group: :jekyll_plugins + +gem "tzinfo-data" +gem "wdm", "~> 0.1.0" if Gem.win_platform? + +# If you have any plugins, put them here! +#group :jekyll_plugins do + gem "jekyll-paginate" + gem "jekyll-sitemap" + gem "jekyll-gist" + gem "jekyll-feed" + gem "jemoji" + gem "jekyll-include-cache" + # gem "jekyll-algolia" +#end + +gem "jekyll-remote-theme" + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000000..4255f7e50b49 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,260 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.3) + dnsruby (1.61.2) + addressable (~> 2.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.11.0) + ffi (>= 1.3.0) + eventmachine (1.2.7) + execjs (2.7.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) + ffi (1.9.25) + forwardable-extended (2.6.0) + gemoji (3.0.0) + github-pages (193) + activesupport (= 4.2.10) + github-pages-health-check (= 1.8.1) + jekyll (= 3.7.4) + jekyll-avatar (= 0.6.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.5) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.11.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.9.4) + jekyll-mentions (= 1.4.1) + jekyll-optional-front-matter (= 0.3.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.2.0) + jekyll-redirect-from (= 0.14.0) + jekyll-relative-links (= 0.5.3) + jekyll-remote-theme (= 0.3.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.5.0) + jekyll-sitemap (= 1.2.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.3) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.1) + jemoji (= 0.10.1) + kramdown (= 1.17.0) + liquid (= 4.0.0) + listen (= 3.1.5) + mercenary (~> 0.3) + minima (= 2.5.0) + nokogiri (>= 1.8.2, < 2.0) + rouge (= 2.2.1) + terminal-table (~> 1.4) + github-pages-health-check (1.8.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 2.0) + typhoeus (~> 1.3) + html-pipeline (2.9.1) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.2.0) + commonmarker (~> 0.14) + jekyll (>= 3.0, < 4.0) + jekyll-commonmark-ghpages (0.1.5) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1) + rouge (~> 2) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.9.4) + jekyll (~> 3.1) + octokit (~> 4.0, != 4.4.0) + jekyll-include-cache (0.1.0) + jekyll (~> 3.3) + jekyll-mentions (1.4.1) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.3.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.2.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.14.0) + jekyll (~> 3.3) + jekyll-relative-links (0.5.3) + jekyll (~> 3.3) + jekyll-remote-theme (0.3.1) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.3) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.1) + jekyll (~> 3.3) + jekyll-watch (2.1.2) + listen (~> 3.0) + jemoji (0.10.1) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.17.0) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + mini_portile2 (2.3.0) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.11.3) + multipart-post (2.0.0) + nokogiri (1.8.5) + mini_portile2 (~> 2.3.0) + octokit (4.13.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (2.0.5) + rb-fsevent (0.10.3) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + rouge (2.2.1) + ruby-enum (0.7.2) + i18n + ruby_dep (1.5.0) + rubyzip (1.2.2) + safe_yaml (1.0.4) + sass (3.7.2) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + tzinfo-data (1.2018.7) + tzinfo (>= 1.0.0) + unicode-display_width (1.4.0) + +PLATFORMS + ruby + +DEPENDENCIES + github-pages + jekyll-feed + jekyll-gist + jekyll-include-cache + jekyll-paginate + jekyll-remote-theme + jekyll-sitemap + jemoji + tzinfo-data + +BUNDLED WITH + 1.17.1 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 67814e6c3f9e..000000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -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 -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. diff --git a/README.md b/README.md deleted file mode 100644 index 8ee23f65fc62..000000000000 --- a/README.md +++ /dev/null @@ -1,289 +0,0 @@ -# [Minimal Mistakes Jekyll theme](https://mmistakes.github.io/minimal-mistakes/) - -[![LICENSE](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://raw.githubusercontent.com/mmistakes/minimal-mistakes/master/LICENSE) -[![Jekyll](https://img.shields.io/badge/jekyll-%3E%3D%203.7-blue.svg)](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). - -**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] - -[1]: https://mmistakes.github.io/minimal-mistakes/ -[2]: screenshot.png (live preview) - -![layout examples](screenshot-layouts.png) - -## Notable features - -- Bundled as a "theme gem" for easier installation/upgrading. -- Compatible with GitHub Pages. -- Support for Jekyll's built-in Sass/SCSS preprocessor. -- Nine different skins (color variations). -- 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/), [utterances](https://utteranc.es/), and [giscus](https://giscus.app/)). -- [Google Analytics](https://www.google.com/analytics/) support. -- UI localized text in English (default), Arabic (عربي), Brazilian Portuguese (Português brasileiro), 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 (in addition to the default one). - -| `air` | `contrast` | `dark` | -| --- | --- | --- | -| [![air skin](https://mmistakes.github.io/minimal-mistakes/assets/images/air-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/air-skin-archive-large.png) | [![contrast skin](https://mmistakes.github.io/minimal-mistakes/assets/images/contrast-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/contrast-skin-archive-large.png) | [![dark skin](https://mmistakes.github.io/minimal-mistakes/assets/images/dark-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/dark-skin-archive-large.png) | - -| `dirt` | `mint` | `sunrise` | -| --- | --- | --- | -| [![dirt skin](https://mmistakes.github.io/minimal-mistakes/assets/images/dirt-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/dirt-skin-archive-large.png) | [![mint skin](https://mmistakes.github.io/minimal-mistakes/assets/images/mint-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/mint-skin-archive-large.png) | [![sunrise skin](https://mmistakes.github.io/minimal-mistakes/assets/images/sunrise-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/sunrise-skin-archive-large.png) | - -| `aqua` | `neon` | `plum` | -| --- | --- | --- | -| [![aqua skin](https://mmistakes.github.io/minimal-mistakes/assets/images/aqua-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/aqua-skin-archive-large.png) | [![neon skin](https://mmistakes.github.io/minimal-mistakes/assets/images/neon-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/neon-skin-archive-large.png) | [![plum skin](https://mmistakes.github.io/minimal-mistakes/assets/images/plum-skin-archive.png)](https://mmistakes.github.io/minimal-mistakes/assets/images/plum-skin-archive-large.png) | - -## Demo pages - -| Name | Description | -| ------------------------------------------- | ----------------------------------------------------- | -| [Post with Header Image][header-image-post] | A post with a large header image. | -| [HTML Tags and Formatting Post][html-tags-post] | A variety of common markup showing how the theme styles them. | -| [Syntax Highlighting Post][syntax-post] | Post displaying highlighted code. | -| [Post with a Gallery][gallery-post] | A post showing several images wrapped in `
` elements. | -| [Sample Collection Page][sample-collection] | Single page from a collection. | -| [Categories Archive][categories-archive] | Posts grouped by category. | -| [Tags Archive][tags-archive] | Posts grouped by tag. | - -Additional sample posts are available under [posts archive][year-archive] on the demo site. Source files for these (and the entire demo site) can be found in [`/docs`](docs). - -[header-image-post]: https://mmistakes.github.io/minimal-mistakes/layout-header-image-text-readability/ -[gallery-post]: https://mmistakes.github.io/minimal-mistakes/post%20formats/post-gallery/ -[html-tags-post]: https://mmistakes.github.io/minimal-mistakes/markup/markup-html-tags-and-formatting/ -[syntax-post]: https://mmistakes.github.io/minimal-mistakes/markup-syntax-highlighting/ -[sample-collection]: https://mmistakes.github.io/minimal-mistakes/recipes/chocolate-chip-cookies/ -[categories-archive]: https://mmistakes.github.io/minimal-mistakes/categories/ -[tags-archive]: https://mmistakes.github.io/minimal-mistakes/tags/ -[year-archive]: https://mmistakes.github.io/minimal-mistakes/year-archive/ - -## Installation - -There are three ways to install: as a [gem-based theme](https://jekyllrb.com/docs/themes/#understanding-gem-based-themes), as a [remote theme](https://blog.github.com/2017-11-29-use-any-theme-with-github-pages/) (GitHub Pages compatible), or forking/directly copying all of the theme files into your project. - -### Gem-based method - -With Gem-based themes, directories such as the `assets`, `_layouts`, `_includes`, and `_sass` are stored in the theme’s gem, hidden from your immediate view. Yet all of the necessary directories will be read and processed during Jekyll’s build process. - -This allows for easier installation and updating as you don't have to manage any of the theme files. To install: - -1. Add the following to your `Gemfile`: - - ```ruby - gem "minimal-mistakes-jekyll" - ``` - -2. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: - - ```bash - bundle - ``` - -3. Set the `theme` in your project's Jekyll `_config.yml` file: - - ```yaml - theme: minimal-mistakes-jekyll - ``` - -To update the theme run `bundle update`. - -### Remote theme method - -Remote themes are similar to Gem-based themes, but do not require `Gemfile` changes or whitelisting making them ideal for sites hosted with GitHub Pages. - -To install: - -1. Create/replace the contents of your `Gemfile` with the following: - - ```ruby - 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](https://bundler.io/) command: - - ```bash - bundle - ``` - -4. Add `remote_theme: "mmistakes/minimal-mistakes@4.26.2"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry. - - - -**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 - -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/). - -### Pull Requests - -When submitting a pull request: - -1. Clone the repo. -2. Create a branch off of `master` and give it a meaningful name (e.g. `my-awesome-new-feature`). -3. Open a pull request on GitHub and describe the feature or fix. - -Theme documentation and demo pages can be found in the [`/docs`](docs) if submitting improvements, typo corrections, etc. - -## Development - -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 - -**Michael Rose** - -- -- -- - -### Icons + Demo Images: - -- [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/) - -### Other: - -- [Jekyll](http://jekyllrb.com/) -- [jQuery](http://jquery.com/) -- [Susy](http://susy.oddbird.net/) -- [Breakpoint](http://breakpoint-sass.com/) -- [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/) -- [FitVids.JS](http://fitvidsjs.com/) -- [GreedyNav.js](https://github.com/lukejacksonn/GreedyNav) -- [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-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 -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. - -Minimal Mistakes incorporates icons from [The Noun Project](https://thenounproject.com/) -creators Garrett Knoll, Arthur Shlain, and tracy tam. -Icons are distributed under Creative Commons Attribution 3.0 United States (CC BY 3.0 US). - -Minimal Mistakes incorporates [Font Awesome](http://fontawesome.io/), -Copyright (c) 2017 Dave Gandy. -Font Awesome is distributed under the terms of the [SIL OFL 1.1](http://scripts.sil.org/OFL) -and [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates photographs from [Unsplash](https://unsplash.com). - -Minimal Mistakes incorporates [Susy](http://susy.oddbird.net/), -Copyright (c) 2017, Miriam Eric Suzanne. -Susy is distributed under the terms of the [BSD 3-clause "New" or "Revised" License](https://opensource.org/licenses/BSD-3-Clause). - -Minimal Mistakes incorporates [Breakpoint](http://breakpoint-sass.com/). -Breakpoint is distributed under the terms of the [MIT/GPL Licenses](http://opensource.org/licenses/MIT). - -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://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 [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. -jQuery throttle / debounce is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates [GreedyNav.js](https://github.com/lukejacksonn/GreedyNav), -Copyright (c) 2015 Luke Jackson. -GreedyNav.js is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates [Jekyll Group-By-Array](https://github.com/mushishi78/jekyll-group-by-array), -Copyright (c) 2015 Max White . -Jekyll Group-By-Array is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates [@allejo's Pure Liquid Jekyll Table of Contents](https://allejo.io/blog/a-jekyll-toc-in-liquid-only/), -Copyright (c) 2017 Vladimir Jimenez. -Pure Liquid Jekyll Table of Contents is distributed under the terms of the [MIT License](http://opensource.org/licenses/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 deleted file mode 100644 index a7ef88994137..000000000000 --- a/Rakefile +++ /dev/null @@ -1,204 +0,0 @@ -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) - [ - /_config\.ya?ml/, - /_site/, - /\.jekyll-metadata/ - ] -end - -def listen_handler(base, options) - site = Jekyll::Site.new(options) - Jekyll::Command.process_site(site) - proc do |modified, added, removed| - t = Time.now - c = modified + added + removed - n = c.length - relative_paths = c.map{ |p| Pathname.new(p).relative_path_from(base).to_s } - print Jekyll.logger.message("Regenerating:", "#{relative_paths.join(", ")} changed... ") - begin - Jekyll::Command.process_site(site) - puts "regenerated in #{Time.now - t} seconds." - rescue => e - puts "error:" - Jekyll.logger.warn "Error:", e.message - Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information." - end - end -end - -task :preview do - base = Pathname.new('.').expand_path - options = { - "source" => base.join('test').to_s, - "destination" => base.join('test/_site').to_s, - "force_polling" => false, - "serving" => true, - "theme" => "minimal-mistakes-jekyll" - } - - options = Jekyll.configuration(options) - - ENV["LISTEN_GEM_DEBUGGING"] = "1" - listener = Listen.to( - base.join("_data"), - base.join("_includes"), - base.join("_layouts"), - base.join("_sass"), - base.join("assets"), - options["source"], - :ignore => listen_ignore_paths(base, options), - :force_polling => options['force_polling'], - &(listen_handler(base, options)) - ) - - begin - listener.start - Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'" - - unless options['serving'] - trap("INT") do - listener.stop - puts " Halting auto-regeneration." - exit 0 - end - sleep - end - rescue ThreadError - # You pressed Ctrl-C, oh my! - end - - 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 "" - f.puts "" - f.puts "{% raw %}" - # Remove H1 - changelog = File.read(t.prerequisites.first).gsub(/^# [^\n]*$/m, "").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 af7d57221b02..a8a2e35ef2fe 100644 --- a/_config.yml +++ b/_config.yml @@ -1,325 +1,121 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your entire site, values -# which you are expected to set up once and rarely need to edit after that. # For technical reasons, this file is *NOT* reloaded automatically when you use -# `jekyll serve`. If you change this file, please restart the server process. - -# Theme Settings -# -# Review documentation to determine if you should use `theme` or `remote_theme` -# https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/#installing-the-theme - -# theme : "minimal-mistakes-jekyll" -# remote_theme : "mmistakes/minimal-mistakes" -minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" - -# 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" -baseurl : # the subpath of your site, e.g. "/blog" -repository : # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes" -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 : # 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", "giscus", "custom" - disqus: - shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- - discourse: - server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org - facebook: - # https://developers.facebook.com/docs/plugins/comments - appid : - num_posts : # 5 (default) - colorscheme : # "light" (default), "dark" - utterances: - theme : # "github-light" (default), "github-dark" - issue_term : # "pathname" (default) - 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 - search_only_api_key : # YOUR_SEARCH_ONLY_API_KEY - powered_by : # true (default), false -google: - search_engine_id : # YOUR_SEARCH_ENGINE_ID - instant_search : # false (default), true -# SEO Related -google_site_verification : -bing_site_verification : -naver_site_verification : -yandex_site_verification : -baidu_site_verification : - -# Social Sharing -twitter: - username : -facebook: - username : - app_id : - publisher : -og_image : # Open Graph/Twitter default site image -# For specifying social profiles -# - https://developers.google.com/structured-data/customize/social-profiles -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 - -# Analytics -analytics: - provider : # false (default), "google", "google-universal", "google-gtag", "custom" - google: - tracking_id : - anonymize_ip : # true, false (default) - - -# Site Author -author: - name : "Your Name" - avatar : # path of avatar image, e.g. "/assets/images/bio-photo.jpg" - 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" - - label: "Website" - icon: "fas fa-fw fa-link" - # url: "https://your-website.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - # url: "https://twitter.com/" - - label: "Facebook" - icon: "fab fa-fw fa-facebook-square" - # url: "https://facebook.com/" - - label: "GitHub" - icon: "fab fa-fw fa-github" - # url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - # url: "https://instagram.com/" - -# Site Footer -footer: - links: - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - # url: - - label: "Facebook" - icon: "fab fa-fw fa-facebook-square" - # url: - - label: "GitHub" - icon: "fab fa-fw fa-github" - # url: - - label: "GitLab" - icon: "fab fa-fw fa-gitlab" - # url: - - label: "Bitbucket" - icon: "fab fa-fw fa-bitbucket" - # url: - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - # url: - - -# Reading Files -include: - - .htaccess - - _pages -exclude: - - "*.sublime-project" - - "*.sublime-workspace" - - vendor - - .asset-cache - - .bundle - - .jekyll-assets-cache - - .sass-cache - - assets/js/plugins - - assets/js/_main.js - - assets/js/vendor - - Capfile - - CHANGELOG - - config - - Gemfile - - Gruntfile.js - - gulpfile.js - - LICENSE - - log - - node_modules - - package.json - - package-lock.json - - Rakefile - - README - - tmp - - /docs # ignore Minimal Mistakes /docs - - /test # ignore Minimal Mistakes /test -keep_files: - - .git - - .svn -encoding: "utf-8" -markdown_ext: "markdown,mkdown,mkdn,mkd,md" - - -# Conversion +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +# **but __NOT__ in front matter!!** + +remote_theme: "mmistakes/minimal-mistakes@4.14.1" +title: Java Gems +url: https://ritika-mukherji.github.io/ +name: Java Gems +## > # this means to ignore newlines until "baseurl:" +description: Just another Jekyll site +baseurl: "/" +show_downloads: false + +# twitter_username: edgriebel +# github_username: edgriebel +# linkedin_username: edgriebel + +# Build settings markdown: kramdown highlighter: rouge -lsi: false -excerpt_separator: "\n\n" -incremental: false - - -# Markdown Processing -kramdown: - input: GFM - hard_wrap: false - auto_ids: true - footnote_nr: 1 - entity_output: as_char - toc_levels: 1..6 - smart_quotes: lsquo,rsquo,ldquo,rdquo - enable_coderay: false - - -# Sass/SCSS -sass: - sass_dir: _sass - 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 +# unused-theme: jekyll-theme-time-machine ## bug in post title uses site title +# pretty plain! theme: jekyll-theme-slate +# Too Minimal!! theme: jekyll-theme-minimal +# unused-theme: jekyll-theme-minimal +# unused-theme: jekyll-theme-primer +# unused-theme: minima +# unused-theme: jekyll-theme-tactile +# unused-theme: jekyll-theme-cayman +# unused-theme: jekyll-theme-modernist +# unused-theme: jekyll-theme-leap-day +# unused-remote_theme: daattali/beautiful-jekyll # Unsupported as a remote_theme - -# Pagination with jekyll-paginate -paginate: 5 # amount of posts to show +# +# minimal-mistakes customizations +# +minimal_mistakes_skin: "air" +title_separator: "|" +breadcrumbs: true +paginate: 10 paginate_path: /page:num/ +defaults: + # _posts + - scope: + path: "" + type: posts + values: + layout: single + read_time: true + author_profile: true + share: true + related: true +author: + name: "Ed Griebel" + avatar: "https://www.gravatar.com/avatar/aac3ed50382d1bf4dcc7b91b4bb94ef4?size=250" + bio: "Placeholder bio!!" + links: + - label: "GitHub" + icon: "fab fa-fw fa-github" + url: "https://github.com/edgriebel" + - label: "My Resume" + icon: "fas fa-file-pdf" + url: "https://github.com/edgriebel/resume-cv/blob/master/Ed_Griebel_CV.pdf" + - label: "LinkedIn" + icon: "fab fa-linkedin" + url: "https://www.linkedin.com/in/edgriebel" +repository: ritika-mukherji/ritika-mukherji.github.io +twitter: + username: &twitter edgriebel +linkedin: + username: edgriebel +analytics: + provider: 'google-gtag' + google: + tracking_id: 'UA-50378804-1' + anonymize_ip: false +# +# END minimal-mistakes customizations +# -# 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 - +repository: ritika-mukherji/ritika-mukherji.github.io -# Plugins (previously gems:) plugins: - - jekyll-paginate - - jekyll-sitemap - - jekyll-gist - jekyll-feed - - jekyll-include-cache + - jekyll-sitemap # minimal-mistakes + - jekyll-include-cache # minimal-mistakes + - jekyll-paginate # minimal-mistakes + - jekyll-gist # minimal-mistakes + - jekyll-remote-theme -# mimic GitHub Pages with --safe -whitelist: - - jekyll-paginate - - jekyll-sitemap - - jekyll-gist +whitelist: - jekyll-feed - - jekyll-include-cache - - -# Archives -# Type -# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default) -# - Jekyll Archives plugin archive pages ~> type: jekyll-archives -# Path (examples) -# - Archive page should exist at path when using Liquid method or you can -# expect broken links (especially with breadcrumbs enabled) -# - /tags/my-awesome-tag/index.html ~> path: /tags/ -# - /categories/my-awesome-category/index.html ~> path: /categories/ -# - /my-awesome-category/index.html ~> path: / + - jekyll-sitemap # minimal-mistakes + - jekyll-include-cache # minimal-mistakes + - jekyll-paginate # minimal-mistakes + - jekyll-gist # minimal-mistakes + - jekyll-remote-theme + +include: + - _pages +# exclude: + # - Gemfile + # - Gemfile.lock + +# minimal-mistakes customizations category_archive: type: liquid path: /categories/ tag_archive: type: liquid path: /tags/ -# https://github.com/jekyll/jekyll-archives -# jekyll-archives: -# enabled: -# - categories -# - tags -# layouts: -# category: archive-taxonomy -# tag: archive-taxonomy -# permalinks: -# category: /categories/:name/ -# tag: /tags/:name/ - - -# HTML Compression -# - https://jch.penibelst.de/ -compress_html: - clippings: all - ignore: - envs: development - +# END minimal-mistakes customizations -# Defaults -defaults: - # _posts - - scope: - path: "" - type: posts - values: - layout: single - author_profile: true - read_time: true - comments: # true - share: true - related: true +# Should this be :year-:title? /:year/:month/:title? /:year/:title? /:title? +permalink: /:categories/:year-:title/ diff --git a/_data/navigation.yml b/_data/navigation.yml index 6f30866f3bed..76720e138c83 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -1,12 +1,3 @@ -# main links main: - - title: "Quick-Start Guide" - url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/ - # - title: "About" - # url: https://mmistakes.github.io/minimal-mistakes/about/ - # - title: "Sample Posts" - # url: /year-archive/ - # - title: "Sample Collections" - # url: /collection-archive/ - # - title: "Sitemap" - # url: /sitemap/ \ No newline at end of file + - title: "About" + url: /about diff --git a/_data/ui-text.yml b/_data/ui-text.yml deleted file mode 100644 index 38f6b3fd3167..000000000000 --- a/_data/ui-text.yml +++ /dev/null @@ -1,2132 +0,0 @@ -# User interface text and labels - -# 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" - 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_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: - <<: *DEFAULT_EN -en-CA: - <<: *DEFAULT_EN -en-GB: - <<: *DEFAULT_EN -en-AU: - <<: *DEFAULT_EN - -# 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 : "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(s) de lectura" - share_on_label : "Compartir en" - meta_label : - tags_label : "Etiquetas:" - categories_label : "Categorías:" - date_label : "Actualizado:" - comments_label : "Deja un comentario" - comments_title : "Comentarios" - more_label : "Ver más" - related_label : "Puede que también te interese" - follow_label : "Seguir:" - feed_label : "Feed" - powered_by : "Funciona con" - website_label : "Sitio web" - email_label : "Correo electrónico" - recent_posts : "Entradas recientes" - 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 : "Puedes utilizar Markdown" - comment_form_name_label : "Nombre" - comment_form_email_label : "Dirección de correo electrónico" - comment_form_website_label : "Sitio web (opcional)" - comment_btn_submit : "Enviar comentario" - comment_btn_submitted : "Enviado" - 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: - <<: *DEFAULT_ES - -# French -# ------ -fr: &DEFAULT_FR - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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_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: - <<: *DEFAULT_FR -fr-BE: - <<: *DEFAULT_FR -fr-CH: - <<: *DEFAULT_FR - -# Turkish -# ------- -tr: &DEFAULT_TR - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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..." - 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" - 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..." - 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 : "Início" - breadcrumb_separator : "/" - menu_label : "Chavear menu" - search_label : "Chavear busca" - toc_label : "Nesta página" - ext_link_label : "Link direto" - less_than : "menos de" - 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 : "Saiba mais" - related_label : "Talvez você também goste" - follow_label : "Siga:" - feed_label : "Feed" - powered_by : "Desenvolvido com" - website_label : "Site" - 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 : "Você pode usar Markdown." - comment_form_name_label : "Nome" - comment_form_email_label : "E-mail" - 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. 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" - -# Italian -# ------- -it: &DEFAULT_IT - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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_label_text : - search_placeholder_text : "Inserisci termini di ricerca..." - search_algolia_no_results : - results_found : "Risultati" - back_to_top : "Vai su" -it-IT: - <<: *DEFAULT_IT - -# Chinese (zh-CN Chinese - China) -# -------------------------------- -zh: &DEFAULT_ZH_HANS - 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 : "返回顶部" -zh-CN: - <<: *DEFAULT_ZH_HANS -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 : "後一頁" - 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 : "載入中..." - 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" - 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_label_text : - search_placeholder_text : "Suchbegriff eingeben..." - search_algolia_no_results : - 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 - 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 : "अपरिभाषित प्यारामिटर शब्दहरू_प्रति_मिनेट 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 : "लोड हुँदैछ ..." - 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 : "다음" - 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 : "로딩중..." - 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 : "Следующая" - 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 : "Найдено" -ru-RU: - <<: *DEFAULT_RU - -# Lithuanian / Lietuviškai -# ------------------------ -lt: &DEFAULT_LT - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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..." - 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" - 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_label_text : - search_placeholder_text : "Εισάγετε όρο αναζήτησης..." - search_algolia_no_results : - results_found : "Αποτελέσματα" -gr-GR: - <<: *DEFAULT_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" - 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_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: - <<: *DEFAULT_SV -sv-FI: - <<: *DEFAULT_SV - -# Dutch -# ----- -nl: &DEFAULT_NL - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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..." - 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: - <<: *DEFAULT_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 : "Sebelumnya" - pagination_next : "Selanjutnya" - breadcrumb_home_label : "Beranda" - breadcrumb_separator : "/" - menu_label : "Menu" - search_label : "Pencarian" - toc_label : "Pada Halaman Ini" - ext_link_label : "Link langsung" - less_than : "Kurang dari" - minute_read : "menit baca" - share_on_label : "Bagikan di" - meta_label : - tags_label : "Label:" - categories_label : "Kategori:" - date_label : "Diupdate:" - comments_label : "Tinggalkan komentar" - comments_title : "Komentar" - more_label : "Pelajari lagi" - related_label : "Anda mungkin suka" - follow_label : "Ikuti:" - feed_label : "Feed" - powered_by : "Didukung oleh" - website_label : "Website" - email_label : "Email" - 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 dengan tanda " - comment_form_comment_label : "Komentar" - 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 : "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 : "Kế tiếp" - breadcrumb_home_label : "Trang chủ" - breadcrumb_separator : "/" - menu_label : "Menu" - search_label : "Tìm kiếm" - toc_label : "Mục lục" - ext_link_label : "Đường dẫn trực tiếp" - less_than : "chỉ cần" - minute_read : "phút để đọc" - share_on_label : "Chia sẻ tại" - meta_label : - 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 : "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_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_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: - <<: *DEFAULT_VI - -# 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 : "Forside" - breadcrumb_separator : "/" - menu_label : "Vis/skjul menu" - search_label : "Søgning til/fra" - 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_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: - <<: *DEFAULT_DA - -# 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 : "Przełącz wyszukiwanie" - 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..." - 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 : "次へ" - 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_label_text : - search_placeholder_text : "検索キーワードを入力してください..." - search_algolia_no_results : - results_found : "件" -ja-JP: - <<: *DEFAULT_JA - -# Slovak -# ----------------- -sk: &DEFAULT_SK - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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_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: - <<: *DEFAULT_SK - -# Hungarian -# ----------------- -hu: &DEFAULT_HU - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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_label_text : - search_placeholder_text : "Keresendő szöveg..." - search_algolia_no_results : - results_found : "Találatok:" - back_to_top : "Oldal tetejére" -hu-HU: - <<: *DEFAULT_HU - -# Romanian -# ----------------- -ro: &DEFAULT_RO - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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_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: - <<: *DEFAULT_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 : "ਖੋਜ" - 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_label_text : "ਖੋਜ" - search_placeholder_text : "ਆਪਣੀ ਖੋਜ ਦੇ ਸ਼ਬਦ ਨੂੰ ਦਰਜ ਕਰੋ..." - search_algolia_no_results : - results_found : "ਨਤੀਜਾ ਮਿਲਿਆ/ਮਿਲੇ" - back_to_top : "ਵਾਪਸ ਚੋਟੀ 'ਤੇ ਜਾਓ" -pa-IN: - <<: *DEFAULT_PA - -# Persian (Farsi) -# -------------- -fa: &DEFAULT_FA - skip_links : - skip_primary_nav : - skip_content : - skip_footer : - 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_label_text : - search_placeholder_text : "عبارت جستجوی خود را وارد کنید..." - search_algolia_no_results : - results_found : "نتایج" - back_to_top : "بازگشت به بالا" -fa-IR: - <<: *DEFAULT_FA - - -# Malayalam -# ----------------- -ml: &DEFAULT_ML - 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 : "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 : "മുകളിലേയ്ക്ക്" -ml-IN: - <<: *DEFAULT_ML - -# Thailand -# -------------- -th: &DEFAULT_TH - 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 : "กลับด้านบน" -th-TH: - <<: *DEFAULT_TH - -# Hindi -# ----------------- -hi: &DEFAULT_HI - skip_links : "लिंक छोड़ें" - skip_primary_nav : "प्राथमिक पथ-प्रदर्शन छोड़ें" - skip_content : "सामग्री छोड़ें" - skip_footer : "अंत-में लिखा छोड़ें" - 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_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 - -# Another locale -# -------------- -# diff --git a/_drafts/2017-03-10-12-factors-and-beyond-in-java.md b/_drafts/2017-03-10-12-factors-and-beyond-in-java.md new file mode 100644 index 000000000000..fc49f45818b1 --- /dev/null +++ b/_drafts/2017-03-10-12-factors-and-beyond-in-java.md @@ -0,0 +1,8 @@ +--- +layout: post + +--- + +> Get a sense of estimating the skills, knowledge of users, and developers. Invest adequately in the understanding of the existing codebase. + +Source: [12 Factors and Beyond in Java](https://dzone.com/articles/12-factors-and-beyond-in-java) diff --git a/_drafts/2017-03-10-biggest-problem-not-seeing-problems-as-problems.md b/_drafts/2017-03-10-biggest-problem-not-seeing-problems-as-problems.md new file mode 100644 index 000000000000..a7a01148d464 --- /dev/null +++ b/_drafts/2017-03-10-biggest-problem-not-seeing-problems-as-problems.md @@ -0,0 +1,26 @@ +--- +layout: post +tag: pain-points +--- +
+![special snowflake](/wp-content/uploads/2016/09/Special-Snowflake-300x300.png){:width="300px"} +
+I have "a friend" whose company has a big problem: they don't see problems as problems. They have a number of things that outsiders would see as obvious problems but IT don't see or focus on: + +* Developer Laptops or PCs that run 20% slower due to [antivirus] +* Firewalls that require authenticaion (even worse, NTLM-based authentication) +* Failover from one datacenter to another takes more than single-digit minutes +* Development and IT staff having the same firewall, IT, and PC management as non-IT (e.g. Sales, HR, etc.) +* Releases that take hours instead of minutes requiring 10, 20, or more participants across dev, DB, networking, operations, "release management", etc. +* Calls by web clients for read-only data take seconds to complete +* Years go between app server software and OS upgrades (Java and .Net) +* Whitelisting required for any websites not in the Big Three TLDs (.com, .net, .org) or .edu +* Multi-tenancy implemented by requiring separate (virtual) database instances + +All of these cost money and political capital to fix, but the one thing these all have in common +is that nothing is "broken". Everying still functions, no systems are "down", so the business units +look at these and (rightfully?) conclude that there **really is no problem**. +Servers will still return results if they're running Java 6 (released to GA **in 2006**). +Developers whose cycle time is measured in minutes or quarter-hours instead of seconds are still delivering code. + +[antivirus]: future-mcafee-post diff --git a/_drafts/2017-03-10-conflict-with-hibernate-weblogic-wlfullclient.jar-and-javax.validation.md b/_drafts/2017-03-10-conflict-with-hibernate-weblogic-wlfullclient.jar-and-javax.validation.md new file mode 100644 index 000000000000..1333ed77b7e1 --- /dev/null +++ b/_drafts/2017-03-10-conflict-with-hibernate-weblogic-wlfullclient.jar-and-javax.validation.md @@ -0,0 +1 @@ +TODO diff --git a/_drafts/2017-03-10-smartphones-are-computers-and-can-be-as-hard-to-use.md b/_drafts/2017-03-10-smartphones-are-computers-and-can-be-as-hard-to-use.md new file mode 100644 index 000000000000..66ffbbb792f3 --- /dev/null +++ b/_drafts/2017-03-10-smartphones-are-computers-and-can-be-as-hard-to-use.md @@ -0,0 +1,6 @@ +--- +layout: post +tag: human-computer-interaction +--- +My father-in-law got a new Galaxy S3, his first smartphone after having had a "feature phone" for years. + diff --git a/_drafts/2017-03-10-the-human-cost-of-tech-debt.md b/_drafts/2017-03-10-the-human-cost-of-tech-debt.md new file mode 100644 index 000000000000..f98222b61647 --- /dev/null +++ b/_drafts/2017-03-10-the-human-cost-of-tech-debt.md @@ -0,0 +1,9 @@ +--- +layout: post +tags: + - tech-debt +--- +> Editorial Note: I originally wrote this post for the Infragistics blog. Head over to their site and check out the original. While you're there, have a look at the other blog authors and their product offering. If you're not already familiar with the concept of technical debt, it's worth becoming familiar with it. I say ... + +Source: [The Human Cost of Tech Debt --- DaedTech](http://www.infragistics.com/community/blogs/erikdietrich/archive/2016/06/29/the-human-cost-of-tech-debt.aspx) + diff --git a/_drafts/2017-03-10-translated-job-description-999.md b/_drafts/2017-03-10-translated-job-description-999.md new file mode 100644 index 000000000000..4495da0b5a63 --- /dev/null +++ b/_drafts/2017-03-10-translated-job-description-999.md @@ -0,0 +1,25 @@ +--- +tag: funny +template: post +--- +
+![sweatshop](../wp-content/uploads/2017/01/open-plan-150x150.jpg){:width="150px"} +
+> We are seeking mid and senior level C++ developers with excellent computer science and programming skills. Must have strong core fundamental knowledge of the C++ language and exceptional problem solving abilities. Multiple full time openings available within various teams. The work environment is fast paced, energetic and you’ll be working on exciting projects and on cutting-edge technologies. + +**Translation** +excellent CS and programming skills = our interviews are now as hard as Google because we’ve hired some real duds in the past + +must have exceptional problem solving skills = our codebase is old and crappy and full of bugs so bad that people have walked out + +multiple full time openings = a lot of people just left because we took a calculated risk at low-balling people’s year-end bonuses + +within various teams = this low-balling happened across all of development + +work environment is fast paced = your workload will be Sisyphean and your priorities will change weekly/daily + +and energetic = you’ll be working in an open plan office with peers that always put in 60-80 hour weeks because they haven't learned the power of "no" + +you’ll be working on exciting projects = you’ll be working on multiple high-vis/high-pressure Agile teams simultaneously + +cutting-edge technologies = our tech stack evolves on a quarterly if not monthly basis, which compensates for working in C++ diff --git a/_includes/after-content.html b/_drafts/2017-03-14-mcafee-av-sucks.md similarity index 100% rename from _includes/after-content.html rename to _drafts/2017-03-14-mcafee-av-sucks.md diff --git a/_drafts/2018-01-Estimation-Bargaining b/_drafts/2018-01-Estimation-Bargaining new file mode 100644 index 000000000000..e449e82d053d --- /dev/null +++ b/_drafts/2018-01-Estimation-Bargaining @@ -0,0 +1 @@ +https://www.liquidplanner.com/blog/defense-dark-art-estimation-bargaining/ diff --git a/_drafts/2018-05-18-leaving-because-of-manager.md b/_drafts/2018-05-18-leaving-because-of-manager.md new file mode 100644 index 000000000000..fa62f407e1a0 --- /dev/null +++ b/_drafts/2018-05-18-leaving-because-of-manager.md @@ -0,0 +1,30 @@ +--- +layout: post +categories: + - utils +title: When I've left because of a manager +--- + +[The Biggest Lie in HR: People Quit Managers](https://blog.cultureamp.com/blog/the-biggest-lie-in-hr-people-quit-managers) + +They say that people don't leave a company, they leave a manager. In my case that is partially true. + +# Case 1 +I left one job because my manager did things that were petty, but the job, org, and company also had systemic issues. + +# Case 2 +I left another team lead role because it felt like my manager held me responsible for everything because "You should have anticipated problem and resolved it" including problems with external teams availability, hardware and infrastructure issues, etc. +I was also putting in too much time because I would allocate too many tasks to myself when we'd plan work in our iterations. +I would also accept scope creep without negotiating existing committed features or timelines by taking on the development myself to shield the rest of the team. +The decision to leave was also helped by a huge pay bump for the new position. + +If I was faced with the same situation today I would: +* Not take on as many tasks for myself especially at the start of a project when doing a lot of architecture work and at the end where there can be more issues to fix +* Not fully allocate a team for each sprint but leave some room for unanticipated problems and work that can be pulled into the sprint if time is available +* Brainstorm and decide mitigation for problems outside of team's domain, including formalized work like [RACI Charts](https://en.wikipedia.org/wiki/Responsibility_assignment_matrix) +* Realize that some deadlines are negotiable and are a starting point for a discussion instead of either accepting or rejecting them +* Related, instead of saying "no" to all scope creep and starting a battle that the team inevtiably would lose, try "We can add that, but we need 2 more weeks for this iteration, or we can deliver current feature X in the next iteration" + +# People leaving because of _my_ management +Once as a team lead, over the span of a few years I had 2 people leave due to conflicts over responsibilities. +At that time I didn't have the skills then to find a compromise, and I wasn't mature enough to not dig in my heels and de-escalate. diff --git a/_drafts/2018-12-05-Software-is-still-eating-the-world.md b/_drafts/2018-12-05-Software-is-still-eating-the-world.md new file mode 100644 index 000000000000..893e0473061f --- /dev/null +++ b/_drafts/2018-12-05-Software-is-still-eating-the-world.md @@ -0,0 +1,5 @@ +--- +title: "Software Is STILL Eating the World" +--- + +https://a16z.com/2016/08/20/why-software-is-eating-the-world/ diff --git a/_drafts/2018-12-05-github-pages-remote-theme-problem.md b/_drafts/2018-12-05-github-pages-remote-theme-problem.md new file mode 100644 index 000000000000..46837e79b29b --- /dev/null +++ b/_drafts/2018-12-05-github-pages-remote-theme-problem.md @@ -0,0 +1,7 @@ +--- +title: "GitHub Pages and Remote Theme problems" +tags: + - Jekyll + - GitHub +--- + diff --git a/_includes/before-related.html b/_drafts/2019-03-08-git-concepts-for-those-new-to-git.md similarity index 100% rename from _includes/before-related.html rename to _drafts/2019-03-08-git-concepts-for-those-new-to-git.md diff --git a/_includes/analytics-providers/custom.html b/_includes/analytics-providers/custom.html deleted file mode 100644 index c34b97ad90d9..000000000000 --- a/_includes/analytics-providers/custom.html +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/_includes/analytics-providers/google-gtag.html b/_includes/analytics-providers/google-gtag.html deleted file mode 100644 index 16d0cf176bac..000000000000 --- a/_includes/analytics-providers/google-gtag.html +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/_includes/analytics-providers/google-universal.html b/_includes/analytics-providers/google-universal.html deleted file mode 100644 index 68c2674ba930..000000000000 --- a/_includes/analytics-providers/google-universal.html +++ /dev/null @@ -1,7 +0,0 @@ - - diff --git a/_includes/analytics-providers/google.html b/_includes/analytics-providers/google.html deleted file mode 100644 index c5742b9817d6..000000000000 --- a/_includes/analytics-providers/google.html +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/_includes/analytics.html b/_includes/analytics.html deleted file mode 100644 index 371469f0af9b..000000000000 --- a/_includes/analytics.html +++ /dev/null @@ -1,14 +0,0 @@ -{% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %} - -{% case site.analytics.provider %} -{% when "google" %} - {% include /analytics-providers/google.html %} -{% when "google-universal" %} - {% include /analytics-providers/google-universal.html %} -{% when "google-gtag" %} - {% include /analytics-providers/google-gtag.html %} -{% when "custom" %} - {% include /analytics-providers/custom.html %} -{% endcase %} - -{% endif %} \ No newline at end of file diff --git a/_includes/archive-single.html b/_includes/archive-single.html deleted file mode 100644 index 7854c961bd43..000000000000 --- a/_includes/archive-single.html +++ /dev/null @@ -1,30 +0,0 @@ -{% if post.header.teaser %} - {% capture teaser %}{{ post.header.teaser }}{% endcapture %} -{% else %} - {% assign teaser = site.teaser %} -{% endif %} - -{% if post.id %} - {% assign title = post.title | markdownify | remove: "

" | remove: "

" %} -{% else %} - {% assign title = post.title %} -{% endif %} - -
- -
diff --git a/_includes/author-profile-custom-links.html b/_includes/author-profile-custom-links.html deleted file mode 100644 index 1a3d4caefc55..000000000000 --- a/_includes/author-profile-custom-links.html +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/_includes/author-profile.html b/_includes/author-profile.html deleted file mode 100644 index e256ec7dd18f..000000000000 --- a/_includes/author-profile.html +++ /dev/null @@ -1,246 +0,0 @@ -{% assign author = page.author | default: page.authors[0] | default: site.author %} -{% assign author = site.data.authors[author] | default: author %} - -
- - {% if author.avatar %} -
- - {{ author.name }} - -
- {% endif %} - -
-

- -

- {% if author.bio %} -
- {{ author.bio | markdownify }} -
- {% endif %} -
- -
- - -
-
diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html deleted file mode 100644 index 929725ef830c..000000000000 --- a/_includes/breadcrumbs.html +++ /dev/null @@ -1,40 +0,0 @@ -{% case site.category_archive.type %} - {% when "liquid" %} - {% assign path_type = "#" %} - {% when "jekyll-archives" %} - {% assign path_type = nil %} -{% endcase %} - -{% if page.collection != 'posts' %} - {% assign path_type = nil %} - {% assign crumb_path = '/' %} -{% else %} - {% assign crumb_path = site.category_archive.path %} -{% endif %} - - diff --git a/_includes/category-list.html b/_includes/category-list.html deleted file mode 100644 index ad9a3fc71423..000000000000 --- a/_includes/category-list.html +++ /dev/null @@ -1,19 +0,0 @@ -{% case site.category_archive.type %} - {% when "liquid" %} - {% assign path_type = "#" %} - {% when "jekyll-archives" %} - {% assign path_type = nil %} -{% endcase %} - -{% if site.category_archive.path %} - {% assign categories_sorted = page.categories | sort_natural %} - -

- {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} - - {% for category_word in categories_sorted %} - {% unless forloop.last %}, {% endunless %} - {% endfor %} - -

-{% endif %} \ No newline at end of file diff --git a/_includes/comment.html b/_includes/comment.html deleted file mode 100644 index 2e3013ee2a76..000000000000 --- a/_includes/comment.html +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/_includes/comments-providers/custom.html b/_includes/comments-providers/custom.html deleted file mode 100644 index 90993691ed40..000000000000 --- a/_includes/comments-providers/custom.html +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/_includes/comments-providers/custom_scripts.html b/_includes/comments-providers/custom_scripts.html deleted file mode 100644 index 6947946a73c9..000000000000 --- a/_includes/comments-providers/custom_scripts.html +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/_includes/comments-providers/discourse.html b/_includes/comments-providers/discourse.html deleted file mode 100644 index aca62cc84892..000000000000 --- a/_includes/comments-providers/discourse.html +++ /dev/null @@ -1,13 +0,0 @@ -{% if site.comments.discourse.server %} -{% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} - - -{% endif %} diff --git a/_includes/comments-providers/disqus.html b/_includes/comments-providers/disqus.html deleted file mode 100644 index 16a6027c71c6..000000000000 --- a/_includes/comments-providers/disqus.html +++ /dev/null @@ -1,15 +0,0 @@ -{% if site.comments.disqus.shortname %} - - -{% endif %} diff --git a/_includes/comments-providers/facebook.html b/_includes/comments-providers/facebook.html deleted file mode 100644 index 009dc1c6c5e5..000000000000 --- a/_includes/comments-providers/facebook.html +++ /dev/null @@ -1,8 +0,0 @@ -
- \ No newline at end of file diff --git a/_includes/comments-providers/giscus.html b/_includes/comments-providers/giscus.html deleted file mode 100644 index a4f6365aecef..000000000000 --- a/_includes/comments-providers/giscus.html +++ /dev/null @@ -1,34 +0,0 @@ - diff --git a/_includes/comments-providers/scripts.html b/_includes/comments-providers/scripts.html deleted file mode 100644 index e87badabd365..000000000000 --- a/_includes/comments-providers/scripts.html +++ /dev/null @@ -1,20 +0,0 @@ -{% if site.comments.provider and page.comments %} -{% case site.comments.provider %} - {% when "disqus" %} - {% include /comments-providers/disqus.html %} - {% when "discourse" %} - {% include /comments-providers/discourse.html %} - {% when "facebook" %} - {% include /comments-providers/facebook.html %} - {% when "staticman" %} - {% include /comments-providers/staticman.html %} - {% when "staticman_v2" %} - {% 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_scripts.html %} -{% endcase %} -{% endif %} \ No newline at end of file diff --git a/_includes/comments-providers/staticman.html b/_includes/comments-providers/staticman.html deleted file mode 100644 index ae3991d9d619..000000000000 --- a/_includes/comments-providers/staticman.html +++ /dev/null @@ -1,40 +0,0 @@ -{% if site.repository and site.staticman.branch %} - -{% endif %} diff --git a/_includes/comments-providers/staticman_v2.html b/_includes/comments-providers/staticman_v2.html deleted file mode 100644 index 3d8ba1112b73..000000000000 --- a/_includes/comments-providers/staticman_v2.html +++ /dev/null @@ -1,40 +0,0 @@ -{% if site.repository and site.comments.staticman.branch %} - -{% endif %} diff --git a/_includes/comments-providers/utterances.html b/_includes/comments-providers/utterances.html deleted file mode 100644 index 5cf6c5ccbb88..000000000000 --- a/_includes/comments-providers/utterances.html +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/_includes/comments.html b/_includes/comments.html deleted file mode 100644 index b27c893bbaf1..000000000000 --- a/_includes/comments.html +++ /dev/null @@ -1,180 +0,0 @@ -
- {% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %} - {% case site.comments.provider %} - {% when "discourse" %} -

{{ comments_label }}

-
- {% when "disqus" %} -

{{ comments_label }}

-
- {% when "facebook" %} -

{{ comments_label }}

-
- {% when "staticman_v2" %} -
- {% if site.repository and site.comments.staticman.branch %} - -
- {% if site.data.comments[page.slug] %} -

{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}

- {% assign comments = site.data.comments[page.slug] %} - - - {% 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.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 %} -
- - - -
-

{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}

-

{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} *

-
-
- - {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }} -
- -
- - - -
-
- - -
-
- - -
-
- - -
- - - - - {% if site.reCaptcha.siteKey %} -
-
-
- {% endif %} -
- -
-
-
- - {% if site.reCaptcha.siteKey %}{% endif %} - {% endif %} -
- {% when "staticman" %} -
- {% if site.repository and site.staticman.branch %} - -
- {% if site.data.comments[page.slug] %} -

{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}

- {% assign comments = site.data.comments[page.slug] %} - - - {% 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.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 %} -
- - - -
-

{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}

-

{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} *

-
-
- - {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }} -
- -
- - - -
-
- - -
-
- - -
-
- - -
- - - - -
- -
-
-
- - {% endif %} -
- {% when "utterances" %} -

{{ comments_label }}

-
- {% when "giscus" %} -

{{ comments_label }}

-
- {% when "custom" %} - {% include /comments-providers/custom.html %} - {% endcase %} -
diff --git a/_includes/copyright.html b/_includes/copyright.html deleted file mode 100644 index 36de639afc3e..000000000000 --- a/_includes/copyright.html +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/_includes/copyright.js b/_includes/copyright.js deleted file mode 100644 index b70c0374f557..000000000000 --- a/_includes/copyright.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * 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 deleted file mode 100644 index bb19bfb60710..000000000000 --- a/_includes/documents-collection.html +++ /dev/null @@ -1,13 +0,0 @@ -{% assign entries = site[include.collection] | where_exp: "post", "post.hidden != true" %} - -{% 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 %} -{%- endfor -%} diff --git a/_includes/feature_row b/_includes/feature_row deleted file mode 100644 index 03f09c15cf0c..000000000000 --- a/_includes/feature_row +++ /dev/null @@ -1,41 +0,0 @@ -{% if include.id %} - {% assign feature_row = page[include.id] %} -{% else %} - {% assign feature_row = page.feature_row %} -{% endif %} - -
- - {% for f in feature_row %} -
-
- {% if f.image_path %} -
- {% if f.alt %}{{ f.alt }}{% endif %} - {% if f.image_caption %} - {{ f.image_caption | markdownify | remove: "

" | remove: "

" }}
- {% endif %} -
- {% endif %} - -
- {% if f.title %} -

{{ f.title }}

- {% endif %} - - {% if f.excerpt %} -
- {{ f.excerpt | markdownify }} -
- {% endif %} - - {% if f.url %} -

{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}

- {% endif %} -
-
-
- {% endfor %} - -
diff --git a/_includes/figure b/_includes/figure deleted file mode 100644 index 7c539d2d79bb..000000000000 --- a/_includes/figure +++ /dev/null @@ -1,11 +0,0 @@ -
- {%- if include.popup -%}{%- endif -%} - {% if include.alt %}{{ include.alt }}{% endif %} - {%- if include.popup -%}{%- endif -%} - {%- if include.caption -%} -
- {{ include.caption | markdownify | remove: "

" | remove: "

" }} -
- {%- endif -%} -
diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index 2b2b7ee1e479..000000000000 --- a/_includes/footer.html +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/_includes/footer/custom.html b/_includes/footer/custom.html deleted file mode 100644 index d512599d1abf..000000000000 --- a/_includes/footer/custom.html +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/_includes/gallery b/_includes/gallery deleted file mode 100644 index 71a9e1e1b3d1..000000000000 --- a/_includes/gallery +++ /dev/null @@ -1,35 +0,0 @@ -{% if include.id %} - {% assign gallery = page[include.id] %} -{% else %} - {% assign gallery = page.gallery %} -{% endif %} - -{% if include.layout %} - {% assign gallery_layout = include.layout %} -{% else %} - {% if gallery.size == 2 %} - {% assign gallery_layout = 'half' %} - {% elsif gallery.size >= 3 %} - {% assign gallery_layout = 'third' %} - {% else %} - {% assign gallery_layout = '' %} - {% endif %} -{% endif %} - - diff --git a/_includes/group-by-array b/_includes/group-by-array deleted file mode 100644 index 708de41ae3f8..000000000000 --- a/_includes/group-by-array +++ /dev/null @@ -1,47 +0,0 @@ - - - -{% assign __empty_array = '' | split: ',' %} -{% assign group_names = __empty_array %} -{% assign group_items = __empty_array %} - - -{% assign __names = include.collection | map: include.field %} - - -{% assign __names = __names | join: ',' | join: ',' | split: ',' %} - - -{% assign __names = __names | sort %} -{% for name in __names %} - - -{% unless name == previous %} - - -{% assign group_names = group_names | push: name %} -{% endunless %} - -{% assign previous = name %} -{% endfor %} - - - -{% for name in group_names %} - - -{% assign __item = __empty_array %} -{% for __element in include.collection %} -{% if __element[include.field] contains name %} -{% assign __item = __item | push: __element %} -{% endif %} -{% endfor %} - - -{% assign group_items = group_items | push: __item %} -{% endfor %} \ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index 45ad0f1a7cb2..000000000000 --- a/_includes/head.html +++ /dev/null @@ -1,28 +0,0 @@ - - -{% include seo.html %} - -{% unless site.atom_feed.hide %} - -{% endunless %} - -{%- comment %} https://docs.google.com/presentation/d/1rmxwWa9P6_xHqonmh5ONXRS-jPc5XKbnv99Rjkhe04s/present {% endcomment -%} - - - - - - - - - -{% if site.head_scripts %} - {% for script in site.head_scripts %} - - {% endfor %} -{% endif %} diff --git a/_includes/head/custom.html b/_includes/head/custom.html deleted file mode 100644 index 978d84fd8bdd..000000000000 --- a/_includes/head/custom.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/_includes/masthead.html b/_includes/masthead.html deleted file mode 100644 index f919fb77937c..000000000000 --- a/_includes/masthead.html +++ /dev/null @@ -1,39 +0,0 @@ -{% capture logo_path %}{{ site.logo }}{% endcapture %} - -
-
-
- -
-
-
diff --git a/_includes/nav_list b/_includes/nav_list deleted file mode 100644 index d25f9e9480bc..000000000000 --- a/_includes/nav_list +++ /dev/null @@ -1,27 +0,0 @@ - diff --git a/_includes/page__date.html b/_includes/page__date.html deleted file mode 100644 index ec02005f1307..000000000000 --- a/_includes/page__date.html +++ /dev/null @@ -1,6 +0,0 @@ -{% assign date_format = site.date_format | default: "%B %-d, %Y" %} -{% if page.last_modified_at %} -

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

-{% elsif page.date %} -

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

-{% endif %} \ No newline at end of file diff --git a/_includes/page__hero.html b/_includes/page__hero.html deleted file mode 100644 index ebc0b6b43068..000000000000 --- a/_includes/page__hero.html +++ /dev/null @@ -1,53 +0,0 @@ -{% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %} - -{% 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 %} - {% assign image_description = page.header.image_description %} -{% else %} - {% assign image_description = page.title %} -{% endif %} - -{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %} - -
- {% if page.header.overlay_color or page.header.overlay_image %} -
-

- {% if paginator and site.paginate_show_page_num %} - {{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %} - {% else %} - {{ page.title | default: site.title | markdownify | remove: "

" | remove: "

" }} - {% endif %} -

- {% if page.tagline %} -

{{ page.tagline | markdownify | remove: "

" | remove: "

" }}

- {% elsif page.header.show_overlay_excerpt != false and page.excerpt %} -

{{ page.excerpt | markdownify | remove: "

" | remove: "

" }}

- {% endif %} - {% include page__meta.html %} - {% if page.header.actions %} -

- {% for action in page.header.actions %} - {{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }} - {% endfor %} -

- {% endif %} -
- {% else %} - {{ image_description }} - {% endif %} - {% if page.header.caption %} - {{ page.header.caption | markdownify | remove: "

" | remove: "

" }}
- {% endif %} -
diff --git a/_includes/page__hero_video.html b/_includes/page__hero_video.html deleted file mode 100644 index a313a23d45b9..000000000000 --- a/_includes/page__hero_video.html +++ /dev/null @@ -1,2 +0,0 @@ -{% 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 deleted file mode 100644 index 3d228c921205..000000000000 --- a/_includes/page__meta.html +++ /dev/null @@ -1,31 +0,0 @@ -{% assign document = post | default: page %} -{% if document.read_time or document.show_date %} -

- {% if document.show_date and document.date %} - {% assign date = document.date %} - - - {% assign date_format = site.date_format | default: "%B %-d, %Y" %} - - - {% endif %} - - {% if document.read_time and document.show_date %}{% 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 %} - - - - {% 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 %} - - {% endif %} -

-{% endif %} diff --git a/_includes/page__related.html b/_includes/page__related.html deleted file mode 100644 index 9777865eeefd..000000000000 --- a/_includes/page__related.html +++ /dev/null @@ -1,11 +0,0 @@ -{% assign posts = include.posts | where_exp: "post", "post.hidden != true" %} - diff --git a/_includes/page__taxonomy.html b/_includes/page__taxonomy.html deleted file mode 100644 index 75c76c81ddf2..000000000000 --- a/_includes/page__taxonomy.html +++ /dev/null @@ -1,7 +0,0 @@ -{% if site.tag_archive.type and page.tags[0] %} - {% include tag-list.html %} -{% endif %} - -{% if site.category_archive.type and page.categories[0] %} - {% include category-list.html %} -{% endif %} \ No newline at end of file diff --git a/_includes/paginator-v1.html b/_includes/paginator-v1.html deleted file mode 100644 index c24d4909f488..000000000000 --- a/_includes/paginator-v1.html +++ /dev/null @@ -1,70 +0,0 @@ -{% if paginator.total_pages > 1 %} - -{% endif %} diff --git a/_includes/paginator-v2.html b/_includes/paginator-v2.html deleted file mode 100644 index ea5707d56965..000000000000 --- a/_includes/paginator-v2.html +++ /dev/null @@ -1,68 +0,0 @@ - diff --git a/_includes/paginator.html b/_includes/paginator.html deleted file mode 100644 index c4ab29edf29b..000000000000 --- a/_includes/paginator.html +++ /dev/null @@ -1,7 +0,0 @@ -{% if paginator.total_pages > 1 %} - {% 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 deleted file mode 100644 index a93c6279763b..000000000000 --- a/_includes/post_pagination.html +++ /dev/null @@ -1,14 +0,0 @@ -{% if page.previous or page.next %} - -{% endif %} \ No newline at end of file diff --git a/_includes/posts-category.html b/_includes/posts-category.html deleted file mode 100644 index 658f315104b2..000000000000 --- a/_includes/posts-category.html +++ /dev/null @@ -1,4 +0,0 @@ -{% 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 deleted file mode 100644 index a8fc472b443a..000000000000 --- a/_includes/posts-tag.html +++ /dev/null @@ -1,4 +0,0 @@ -{% 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 deleted file mode 100644 index e99db65c875f..000000000000 --- a/_includes/posts-taxonomy.html +++ /dev/null @@ -1,37 +0,0 @@ -{% assign items_max = 0 %} -{% for item in include.taxonomies %} - {% if item[1].size > items_max %} - {% assign items_max = item[1].size %} - {% endif %} -{% endfor %} - -
    - {% for i in (1..items_max) reversed %} - {% for item in include.taxonomies %} - {% if item[1].size == i %} -
  • - - {{ item[0] }} {{ i }} - -
  • - {% endif %} - {% endfor %} - {% endfor %} -
- -{% 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 %} -
-

{{ taxonomy[0] }}

-
- {% for post in taxonomy.last %} - {% include archive-single.html type=entries_layout %} - {% endfor %} -
- {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ -
- {% endif %} - {% endfor %} -{% endfor %} diff --git a/_includes/schema.html b/_includes/schema.html deleted file mode 100644 index 1dae6e2d7243..000000000000 --- a/_includes/schema.html +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/_includes/scripts.html b/_includes/scripts.html deleted file mode 100644 index bbdaddff0bab..000000000000 --- a/_includes/scripts.html +++ /dev/null @@ -1,28 +0,0 @@ -{% if site.footer_scripts %} - {% for script in site.footer_scripts %} - - {% endfor %} -{% else %} - -{% endif %} - -{% if site.search == true or page.layout == "search" %} - {%- assign search_provider = site.search_provider | default: "lunr" -%} - {%- case search_provider -%} - {%- when "lunr" -%} - {% include_cached search/lunr-search-scripts.html %} - {%- when "google" -%} - {% include_cached search/google-search-scripts.html %} - {%- when "algolia" -%} - {% include_cached search/algolia-search-scripts.html %} - {%- endcase -%} -{% endif %} - -{% include analytics.html %} -{% include /comments-providers/scripts.html %} - -{% if site.after_footer_scripts %} - {% for script in site.after_footer_scripts %} - - {% endfor %} -{% endif %} diff --git a/_includes/search/algolia-search-scripts.html b/_includes/search/algolia-search-scripts.html deleted file mode 100644 index f2e100224f97..000000000000 --- a/_includes/search/algolia-search-scripts.html +++ /dev/null @@ -1,82 +0,0 @@ - diff --git a/_includes/search/google-search-scripts.html b/_includes/search/google-search-scripts.html deleted file mode 100644 index 4af7423bb3ca..000000000000 --- a/_includes/search/google-search-scripts.html +++ /dev/null @@ -1,30 +0,0 @@ - \ No newline at end of file diff --git a/_includes/search/lunr-search-scripts.html b/_includes/search/lunr-search-scripts.html deleted file mode 100644 index 574c39009489..000000000000 --- a/_includes/search/lunr-search-scripts.html +++ /dev/null @@ -1,10 +0,0 @@ -{% assign lang = site.locale | slice: 0,2 | default: "en" %} -{% case lang %} -{% when "gr" %} - {% assign lang = "gr" %} -{% else %} - {% assign lang = "en" %} -{% endcase %} - - - \ No newline at end of file diff --git a/_includes/search/search_form.html b/_includes/search/search_form.html deleted file mode 100644 index b9de365c6efe..000000000000 --- a/_includes/search/search_form.html +++ /dev/null @@ -1,26 +0,0 @@ -
- {%- assign search_provider = site.search_provider | default: "lunr" -%} - {%- case search_provider -%} - {%- when "lunr" -%} - -
- {%- when "google" -%} - -
- -
- {%- when "algolia" -%} - -
- {%- endcase -%} -
diff --git a/_includes/seo.html b/_includes/seo.html deleted file mode 100644 index 8c2f6f72ec2f..000000000000 --- a/_includes/seo.html +++ /dev/null @@ -1,130 +0,0 @@ - -{%- assign title_separator = site.title_separator | default: '-' -%} - -{%- assign page_title = page.title | default: site.title | replace: '|', '|' -%} -{%- assign seo_title = page_title | append: " " | append: title_separator | append: " " | append: site.title | replace: '|', '|' -%} - -{%- assign page_title = page_title | markdownify | strip_html | strip_newlines | escape_once -%} -{%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%} - -{%- 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 | newline_to_br | strip_newlines | replace: '
', ' ' | escape_once | strip -%} -{%- endif -%} - -{%- 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 | 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" -%} -{%- else -%} - {%- assign og_type = "website" -%} -{%- endif -%} - -{{ seo_title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %} - - -{% if author.name %} - - {% if og_type == "article" %} - - {% endif %} -{% endif %} - - - - - - - -{% if seo_description %} - -{% endif %} - -{% if page_large_image %} - -{% elsif page_teaser_image %} - -{% endif %} - -{% if site.twitter.username %} - - - - - - {% if page_large_image %} - - - {% else %} - - {% if page_teaser_image %} - - {% endif %} - {% endif %} - - {% if author_twitter %} - - {% endif %} -{% endif %} - -{% if page.date %} - -{% endif %} - -{% if og_type == "article" and page.last_modified_at %} - -{% endif %} - -{% if site.facebook %} - {% if site.facebook.publisher %} - - {% endif %} - - {% if site.facebook.app_id %} - - {% endif %} -{% endif %} - - - -{% if paginator.previous_page %} - -{% endif %} -{% if paginator.next_page %} - -{% endif %} - -{% if page.url == '/' %} - {% include schema.html %} -{% endif %} - -{% if site.google_site_verification %} - -{% endif %} -{% if site.bing_site_verification %} - -{% endif %} -{% if site.alexa_site_verification %} - -{% endif %} -{% if site.yandex_site_verification %} - -{% endif %} -{% if site.naver_site_verification %} - -{% endif %} -{% if site.baidu_site_verification %} - -{% endif %} - diff --git a/_includes/sidebar.html b/_includes/sidebar.html deleted file mode 100644 index a4ca1ca78151..000000000000 --- a/_includes/sidebar.html +++ /dev/null @@ -1,19 +0,0 @@ -{% if page.author_profile or layout.author_profile or page.sidebar %} - -{% endif %} diff --git a/_includes/skip-links.html b/_includes/skip-links.html deleted file mode 100644 index c2d52235e14f..000000000000 --- a/_includes/skip-links.html +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/_includes/social-share.html b/_includes/social-share.html deleted file mode 100644 index db69ff16571c..000000000000 --- a/_includes/social-share.html +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/_includes/tag-list.html b/_includes/tag-list.html deleted file mode 100644 index 5893ee4e4d46..000000000000 --- a/_includes/tag-list.html +++ /dev/null @@ -1,19 +0,0 @@ -{% case site.tag_archive.type %} - {% when "liquid" %} - {% assign path_type = "#" %} - {% when "jekyll-archives" %} - {% assign path_type = nil %} -{% endcase %} - -{% if site.tag_archive.path %} - {% assign tags_sorted = page.tags | sort_natural %} - -

- {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} - - {% for tag_word in tags_sorted %} - {% unless forloop.last %}, {% endunless %} - {% endfor %} - -

-{% endif %} \ No newline at end of file diff --git a/_includes/toc b/_includes/toc deleted file mode 100644 index 6423ccdc72e1..000000000000 --- a/_includes/toc +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/_includes/toc.html b/_includes/toc.html deleted file mode 100644 index bc90d08a994b..000000000000 --- a/_includes/toc.html +++ /dev/null @@ -1,189 +0,0 @@ -{% capture tocWorkspace %} - {% comment %} - 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 - - Usage: - {% 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 - - 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(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 - {% endcomment %} - - {% capture newline %} - {% endcapture %} - {% assign newline = newline | rstrip %} - - {% capture deprecation_warnings %}{% endcapture %} - - {% if include.baseurl %} - {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ newline }}{% endcapture %} - {% endif %} - - {% if include.skipNoIDs %} - {% capture deprecation_warnings %}{{ deprecation_warnings }}{{ 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 | strip | split: ' maxHeader %} - {% continue %} - {% endif %} - - {% assign _workspace = node | split: '' | first }}>{% endcapture %} - {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} - - {% if include.item_class and include.item_class != blank %} - {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %} - {% endif %} - - {% 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 %}{{ anchorBody }}{% 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 %} - - {% for i in (1..repeatCount) %} - {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} - {% endfor %} - - {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} - {% else %} - {% capture jekyll_toc %}{{ jekyll_toc }}{% endcapture %} - {% endif %} - - {% capture jekyll_toc %}{{ jekyll_toc }}{{ listItem }}{% endcapture %} - - {% assign lastLevel = currLevel %} - {% assign firstHeader = false %} - {% endfor %} - - {% if flatToc == true %} - {% assign repeatCount = 1 %} - {% else %} - {% assign repeatCount = minHeader | minus: 1 %} - {% assign repeatCount = lastLevel | minus: repeatCount %} - {% endif %} - - {% for i in (1..repeatCount) %} - {% capture jekyll_toc %}{{ jekyll_toc }}{% 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 = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}} diff --git a/_includes/video b/_includes/video deleted file mode 100644 index c85a868c1d0b..000000000000 --- a/_includes/video +++ /dev/null @@ -1,24 +0,0 @@ -{% capture video_id %}{{ include.id }}{% endcapture %} -{% capture video_provider %}{{ include.provider }}{% endcapture %} -{% capture video_danmaku %}{{ include.danmaku | default: 0 }}{% endcapture %} - -{% 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 %} - - -{% unless video_src == "" %} -
- -
-{% endunless %} diff --git a/_layouts/archive-taxonomy.html b/_layouts/archive-taxonomy.html deleted file mode 100644 index 4e94867df655..000000000000 --- a/_layouts/archive-taxonomy.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default -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 %} - -
- {% include sidebar.html %} - -
- {% unless page.header.overlay_color or page.header.overlay_image %} -

{{ page.title }}

- {% endunless %} - {% for post in page.posts %} - {% include archive-single.html %} - {% endfor %} -
-
diff --git a/_layouts/archive.html b/_layouts/archive.html deleted file mode 100644 index 83e109b58cb4..000000000000 --- a/_layouts/archive.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default ---- - -{% 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 %} - -
- {% include sidebar.html %} - -
- {% unless page.header.overlay_color or page.header.overlay_image %} -

{{ page.title }}

- {% endunless %} - {{ content }} -
-
diff --git a/_layouts/categories.html b/_layouts/categories.html deleted file mode 100644 index 4d3661188982..000000000000 --- a/_layouts/categories.html +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -{% include posts-taxonomy.html taxonomies=site.categories %} diff --git a/_layouts/category.html b/_layouts/category.html deleted file mode 100644 index b281c8560395..000000000000 --- a/_layouts/category.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -{% assign entries_layout = page.entries_layout | default: 'list' %} -
- {% include posts-category.html taxonomy=page.taxonomy type=entries_layout %} -
diff --git a/_layouts/collection.html b/_layouts/collection.html deleted file mode 100644 index d23d0c723bf4..000000000000 --- a/_layouts/collection.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -{% assign entries_layout = page.entries_layout | default: 'list' %} -
- {% include documents-collection.html collection=page.collection sort_by=page.sort_by sort_order=page.sort_order type=entries_layout %} -
diff --git a/_layouts/compress.html b/_layouts/compress.html deleted file mode 100644 index bb34487d2a75..000000000000 --- a/_layouts/compress.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -# Jekyll layout that compresses HTML -# v3.1.0 -# http://jch.penibelst.de/ -# © 2014–2015 Anatol Broder -# MIT License ---- - -{% capture _LINE_FEED %} -{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index ecfc46620257..000000000000 --- a/_layouts/default.html +++ /dev/null @@ -1,36 +0,0 @@ ---- ---- - - -{% include copyright.html %} - - - {% include head.html %} - {% include head/custom.html %} - - - - {% include_cached skip-links.html %} - {% include_cached masthead.html %} - -
- {{ content }} - {% include after-content.html %} -
- - {% if site.search == true %} -
- {% include_cached search/search_form.html %} -
- {% endif %} - - - - {% include scripts.html %} - - diff --git a/_layouts/home.html b/_layouts/home.html deleted file mode 100644 index 02e96eb81ca1..000000000000 --- a/_layouts/home.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -

{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}

- -{% if paginator %} - {% assign posts = paginator.posts %} -{% else %} - {% assign posts = site.posts %} -{% endif %} - -{% assign entries_layout = page.entries_layout | default: 'list' %} -
- {% for post in posts %} - {% include archive-single.html type=entries_layout %} - {% endfor %} -
- -{% include paginator.html %} diff --git a/_layouts/posts.html b/_layouts/posts.html deleted file mode 100644 index 13fc707cf00a..000000000000 --- a/_layouts/posts.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -
    - {% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %} - {% for year in postsInYear %} -
  • - - {{ year.name }} {{ year.items | size }} - -
  • - {% endfor %} -
- -{% 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 %} -
-

{{ year.name }}

-
- {% for post in year.items %} - {% include archive-single.html type=entries_layout %} - {% endfor %} -
- {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ -
-{% endfor %} diff --git a/_layouts/search.html b/_layouts/search.html deleted file mode 100644 index da8784350fd6..000000000000 --- a/_layouts/search.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default ---- - -{% if page.header.overlay_color or page.header.overlay_image or page.header.image %} - {% include page__hero.html %} -{% endif %} - -{% if page.url != "/" and site.breadcrumbs %} - {% unless paginator %} - {% include breadcrumbs.html %} - {% endunless %} -{% endif %} - -
- {% include sidebar.html %} - -
- {% unless page.header.overlay_color or page.header.overlay_image %} -

{{ page.title }}

- {% endunless %} - - {{ content }} - - {%- assign search_provider = site.search_provider | default: "lunr" -%} - {%- case search_provider -%} - {%- when "lunr" -%} - -
- {%- when "google" -%} -
- -
-
- -
- {%- when "algolia" -%} - -
- {%- endcase -%} -
-
diff --git a/_layouts/single.html b/_layouts/single.html deleted file mode 100644 index 1e42e3f6b8a4..000000000000 --- a/_layouts/single.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: default ---- - -{% 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 %} - -{% 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 %} -{% endif %} - -
- {% include sidebar.html %} - -
- {% if page.title %}{% endif %} - {% if page.excerpt %}{% endif %} - {% if page.date %}{% endif %} - {% if page.last_modified_at %}{% endif %} - -
- {% unless page.header.overlay_color or page.header.overlay_image %} -
- {% if page.title -%} -

- -

- {%- endif %} - {% include page__meta.html %} -
- {% endunless %} - -
- {% if page.toc %} - - {% endif %} - {{ content }} - {% if page.link %}{% endif %} -
- -
- {% if site.data.ui-text[site.locale].meta_label %} -

{{ site.data.ui-text[site.locale].meta_label }}

- {% endif %} - {% include page__taxonomy.html %} - {% include page__date.html %} -
- - {% if page.share %}{% include social-share.html %}{% endif %} - - {% include post_pagination.html %} -
- - {% if jekyll.environment == 'production' and site.comments.provider and page.comments %} - {% include comments.html %} - {% endif %} -
- - {% comment %}{% endcomment %} - {% if page.id and page.related and site.related_posts.size > 0 %} - {% include page__related.html posts=site.related_posts %} - {% comment %}{% endcomment %} - {% elsif page.id and page.related %} - {% include page__related.html posts=site.posts %} - {% endif %} -
diff --git a/_layouts/splash.html b/_layouts/splash.html deleted file mode 100644 index 394209d8c512..000000000000 --- a/_layouts/splash.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default ---- - -{% 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.title %}{% endif %} - {% if page.excerpt %}{% endif %} - {% if page.date %}{% endif %} - {% if page.last_modified_at %}{% endif %} - -
- {{ content }} -
-
-
diff --git a/_layouts/tag.html b/_layouts/tag.html deleted file mode 100644 index 8b1c1885004f..000000000000 --- a/_layouts/tag.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -{% assign entries_layout = page.entries_layout | default: 'list' %} -
- {% include posts-tag.html taxonomy=page.taxonomy type=entries_layout %} -
diff --git a/_layouts/tags.html b/_layouts/tags.html deleted file mode 100644 index a28fa5d709c6..000000000000 --- a/_layouts/tags.html +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -{% include posts-taxonomy.html taxonomies=site.tags %} diff --git a/_pages/about.md b/_pages/about.md new file mode 100644 index 000000000000..af625ca4b3f5 --- /dev/null +++ b/_pages/about.md @@ -0,0 +1,27 @@ +--- +title: About Me +date: 2018-06-01 +# 2014-04-22T17:25:32+00:00 +# author: edgriebel +layout: single +author_profile: true +# guid: http://www.edgriebel.com/?page_id=2 +permalink: /about/ +author_profile: true +--- + +Full stack developer with over 20 years of consistent achievement solving diverse business problems. + +My wide breadth of experience in multiple industries, languages, tools, and third-party applications demonstrates success. + +I am passionate about creating code to deliver high quality useful software, which results in systems that support business growth. + + + +My LinkedIn Page + +Contact me: _edgriebel [at] gmail.com_ diff --git a/docs/_pages/category-archive.md b/_pages/category-archive.md similarity index 100% rename from docs/_pages/category-archive.md rename to _pages/category-archive.md diff --git a/docs/_pages/tag-archive.md b/_pages/tags-archive.md similarity index 100% rename from docs/_pages/tag-archive.md rename to _pages/tags-archive.md index 3f4e3f0df86c..35240171a6fe 100644 --- a/docs/_pages/tag-archive.md +++ b/_pages/tags-archive.md @@ -1,6 +1,6 @@ --- title: "Posts by Tag" -permalink: /tags/ layout: tags +permalink: /tags/ author_profile: true --- diff --git a/_posts/2014-04-24-grids-in-javascript.md b/_posts/2014-04-24-grids-in-javascript.md new file mode 100644 index 000000000000..49cb7c4e7100 --- /dev/null +++ b/_posts/2014-04-24-grids-in-javascript.md @@ -0,0 +1,33 @@ +--- +id: 19 +title: Tiles in Javascript +date: 2014-04-24T19:54:07+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=19 +permalink: /grids-in-javascript/ +categories: + - Uncategorized +tags: + - CSS + - HTML + - Javascript +--- +Tried using Freewall, a small tiling library written in jquery. It looked nice in the demos and easy to incorporate but didn't like tiles composed dynamic ajax content. Even calling $(window).sendResize() after each block loaded and formatted, content would frequently overlap unless a height was specified in advance. Little documentation. +Before trying the very popular Masonry I thought I would try some basic CSS, float-left, float-right on content and clear on a spacer div. Although layout is now hard-coded, it works and is easy for anyone to figure out. Simple CSS and layout is below. + +The HTML: +[sourcecode language="html"] +
+
+
+
+
+[/sourcecode] + +And the CSS: +[sourcecode language="css"] +.cell { width: 47%; padding: 10px; } +.left { float: left } +.right { float: right } +.spacer { height: 20px; clear: both } +[/sourcecode] diff --git a/_posts/2014-04-29-some-functional-jquery-bits.md b/_posts/2014-04-29-some-functional-jquery-bits.md new file mode 100644 index 000000000000..52592169f3a7 --- /dev/null +++ b/_posts/2014-04-29-some-functional-jquery-bits.md @@ -0,0 +1,48 @@ +--- +id: 33 +title: Some Functional JQuery bits +date: 2014-04-29T12:51:43+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=33 +permalink: /some-functional-jquery-bits/ +categories: + - Uncategorized +--- +
  • Return a processed array, leaving underlying array unaltered + +var arr = Array.apply(null, Array(5)).map(function (_, i) {return i;}); +var processedArr = $.map(arr, function(el) { return el * 2; } ); +// arr = [0, 1, 2, 3, 4] +// processedArr = [0, 2, 4, 6, 8] + + +
  • Summarize values in an array + + var keys = $.unique($.map(objects, function(e) { return e[keyfield] })) + $.map(keys,function(e){ + var ret = {}; + ret[e]= $.grep(objects, function(gr) { + return gr[keyfield] == e; + }).length; + return ret; +} ); + +JSFiddle + +
  • Modify every row in an array + +var arr = Array.apply(null, Array(5)).map(function (_, i) {return i;}); +// note that no records change with scalar elements b/c items passed by value +$.each(arr, function(idx, el) { el *= 2; }); +// [ 0, 1, 2, 3, 4 ] + +var arr1 = [ ['a',1],['b',2],['c',3] ]; +$.each(arr, function(idx, el) { el *= 2; }); +// [["a", 2], ["b", 4], ["c", 6]] + +var arr2 = [ {a: 1}, {a: 2}, {a: 3} ]; +// records change with an object +$.each(arr2, function(idx, el) { el.a *= 2; }); +// [ {a: 2}, {a: 4}, {a: 6} ]; + + \ No newline at end of file diff --git a/_posts/2014-05-08-idiom-for-generics-on-static-methods.md b/_posts/2014-05-08-idiom-for-generics-on-static-methods.md new file mode 100644 index 000000000000..4dce00eed14d --- /dev/null +++ b/_posts/2014-05-08-idiom-for-generics-on-static-methods.md @@ -0,0 +1,26 @@ +--- +id: 40 +title: Idiom for generics on static methods +date: 2014-05-08T09:21:40+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=40 +permalink: /idiom-for-generics-on-static-methods/ +categories: + - Uncategorized +--- +I always forget this idiom: +[sourcecode language="java"] + public static Collection getFirstN(int numRecs, Collection records) { + List rtn = new ArrayList(numRecs); + if (records == null || numRecs <= 0) { + return rtn; + } + int i=0; + for (T obj : records) { + rtn.add(obj); + if (i++ >= numRecs) + break; + } + return rtn; + } +[/sourcecode] \ No newline at end of file diff --git a/_posts/2014-05-09-making-a-jaxb-object-extend-a-real-class.md b/_posts/2014-05-09-making-a-jaxb-object-extend-a-real-class.md new file mode 100644 index 000000000000..b4c93b14f303 --- /dev/null +++ b/_posts/2014-05-09-making-a-jaxb-object-extend-a-real-class.md @@ -0,0 +1,42 @@ +--- +id: 44 +title: 'Making a JAXB object extend a “real” class' +date: 2014-05-09T17:14:38+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=44 +permalink: /making-a-jaxb-object-extend-a-real-class/ +categories: + - Uncategorized +--- +Finally got the magic incantations correct to have a generated jaxb extend an existing class. + +http://confluence.highsource.org/display/J2B/Inheritance+plugin + +[sourcecode language="xml"] + + + + + + +            com.edgriebel.util.Pair + + + pairDO + + + + + + + +[/sourcecode] \ No newline at end of file diff --git a/_posts/2014-05-12-injecting-code-via-xsd-into-a-jaxb-object.md b/_posts/2014-05-12-injecting-code-via-xsd-into-a-jaxb-object.md new file mode 100644 index 000000000000..15cfa3f18c12 --- /dev/null +++ b/_posts/2014-05-12-injecting-code-via-xsd-into-a-jaxb-object.md @@ -0,0 +1,46 @@ +--- +id: 46 +title: Injecting code via xsd into a jaxb object +date: 2014-05-12T14:18:33+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=46 +permalink: /injecting-code-via-xsd-into-a-jaxb-object/ +categories: + - Uncategorized +tags: + - jaxb + - xsd +--- +Found a cool feature of jaxb/xjc, -Xinject-code. With example xsd from prior post, look for 'ci'. The code should probably be wrapped in a CDATA element. + +[sourcecode language="xsd"] + + + + + + + com.edgriebel.util.Pair + + + pairDO + + + + /* any test method here */ + + + + + +[/sourcecode] \ No newline at end of file diff --git a/_posts/2014-06-04-the-most-unusual-place-youve-written-code.md b/_posts/2014-06-04-the-most-unusual-place-youve-written-code.md new file mode 100644 index 000000000000..e01450333c4b --- /dev/null +++ b/_posts/2014-06-04-the-most-unusual-place-youve-written-code.md @@ -0,0 +1,18 @@ +--- +id: 55 +title: 'The most unusual place you’ve written code' +date: 2014-06-04T09:44:48+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=55 +permalink: /the-most-unusual-place-youve-written-code/ +categories: + - Uncategorized +tags: + - Axeda +--- +This piece asks about the most unusual place you've written code. My most unusual place was in PowerPoint at FL280 and in a Lincoln. + +Embraer Regional Jet +I had an interview assignment for Axeda where I had to create program stubs to do mumble and create slides to support a presentation to devs, architects, and the CTO. + +I was given about 24 hours notice that there was this assignment including time flying to the Foxboro office. The program was done the day before but I wasn't happy with it nor the presentation, so with my netbook in hand (small Asus 1201N) I tweaked the code and redid my presentation on the plane flight and livery ride to the office. The presentation must have been good because I was there for three years. My trip was 14 hours door-to-door for about 4 hours of interviews because of a transfer each way to/from Logan, so I did have plenty of time for coding. diff --git a/_posts/2014-06-17-connecting-to-ms-sql-server-with-ntlm-on-linux.md b/_posts/2014-06-17-connecting-to-ms-sql-server-with-ntlm-on-linux.md new file mode 100644 index 000000000000..ec896bd37e9d --- /dev/null +++ b/_posts/2014-06-17-connecting-to-ms-sql-server-with-ntlm-on-linux.md @@ -0,0 +1,14 @@ +--- +id: 69 +title: Connecting to MS SQL Server with NTLM on Linux +date: 2014-06-17T16:13:44+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=69 +permalink: /connecting-to-ms-sql-server-with-ntlm-on-linux/ +categories: + - Uncategorized +--- +A MS SQL Server instance can be configured to use NTLM authentication for connections so that it goes against Active Directory for authentication and authorization. There is a "Type 4" (pure Java) JDBC driver provided by Microsoft. When the server is configured for NTLM, however, there is a DLL that needs to be in the classpath (e.g. \windows\system32, which paradoxically holds 64-bit DLLs), sqljdbc_auth.dll. + +Including a DLL is problematic when running Java on a non-Windows host. There is an open source library that can access MS SQL Server, http://jtds.sourceforge.net/. Getting the URL correct is tricky because of the parameters that need to be supplied. The URL I found that works is: +jdbc:jtds:sqlserver://<serverhost>;useNTLMv2=true;user=<userid>;databaseName=<definedDbName>;domain=<NTLM Domain>;instance=<"Other" database name> \ No newline at end of file diff --git a/_posts/2014-07-03-learning-experience-with-git-push.md b/_posts/2014-07-03-learning-experience-with-git-push.md new file mode 100644 index 000000000000..ce57e41ba0ac --- /dev/null +++ b/_posts/2014-07-03-learning-experience-with-git-push.md @@ -0,0 +1,23 @@ +--- +id: 80 +title: Learning experience with git push +date: 2014-07-03T12:42:42+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=80 +permalink: /learning-experience-with-git-push/ +image: /wp-content/uploads/2014/07/gitlogo.jpg +categories: + - Uncategorized +tags: + - git +--- +TL;DR, #1: merges in all branches in a directory/local repo will be pushed regardless of the current branch when push is done, #2 use a new clone “every” time you make a change, #3 git pull is an implicit merge without a commit and shows up in the shared remote repo when local is pushed + +So I’ve been doing my merges from our release branch to master in a clone in directory /work. This directory is “clean”, no development taking place or changing files, so I have been reusing this directory, probably not the best practice as I'm about to find out. + + +Another developer, "Joe", and I were doing some experimentation, so I went to /work because I knew it was clean and checked out Joe's branch “A”, then did a merge of branch “B” into it to see if we could see changes between the two branches. + +Later on I wanted to move some files from one of my dev branches into a new branch, so in my clean /work directory I did a git checkout -b new-branch, copied the files over, did git add and git commit of these. Then did a git push origin. + +Turns out, doing a push from the new branch doesn’t only commit the changes on the branch I’m in but in all branches in the local repo that I was sitting in. So the merge I did that was not supposed to be pushed to the repo at all ended up being pushed. Fortunately the merge changes are independent of Joe's existing code on A so no major harm done. diff --git a/_posts/2014-10-23-two-hard-things.md b/_posts/2014-10-23-two-hard-things.md new file mode 100644 index 000000000000..03b3dba6e339 --- /dev/null +++ b/_posts/2014-10-23-two-hard-things.md @@ -0,0 +1,20 @@ +--- +id: 86 +title: 'Two Hard Things…' +date: 2014-10-23T08:19:17+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=86 +permalink: /two-hard-things/ +categories: + - Uncategorized +--- +
    There are only two hard things in Computer Science: cache invalidation and naming things. + +-- Phil Karlton + + +Long a favorite saying of mine, one for which I couldn't find a satisfactory URL. + +There is also a variation on this that says there are two hard things in computer science: cache invalidation, naming things, and off-by-one errors. + +http://martinfowler.com/bliki/TwoHardThings.html
    \ No newline at end of file diff --git a/_posts/2015-01-27-quick-graphic-model-of-a-db.md b/_posts/2015-01-27-quick-graphic-model-of-a-db.md new file mode 100644 index 000000000000..2482920f64d2 --- /dev/null +++ b/_posts/2015-01-27-quick-graphic-model-of-a-db.md @@ -0,0 +1,20 @@ +--- +id: 90 +title: Quick graphic model of a DB +date: 2015-01-27T10:43:49+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=90 +permalink: /quick-graphic-model-of-a-db/ +categories: + - Uncategorized +tags: + - SQL +--- +Found a quick way to generate a DB entity model diagram with Oracle's SQL Developer. Here is a description of how to do it, but in short: +
      +
    • Open up the Data Model browser and create a "New Relational Model"
    • +
    • Drag tables from the table list in the Connection list. Hold down <ctrl> to automatically bring in child tables
    • +
    +Movie showing creation of a diagram: + +Entity Diagram Movie \ No newline at end of file diff --git a/_posts/2015-02-04-creating-a-new-developer-box.md b/_posts/2015-02-04-creating-a-new-developer-box.md new file mode 100644 index 000000000000..61318282ba10 --- /dev/null +++ b/_posts/2015-02-04-creating-a-new-developer-box.md @@ -0,0 +1,20 @@ +--- +id: 96 +title: Creating a new developer box +date: 2015-02-04T16:18:05+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=96 +permalink: /creating-a-new-developer-box/ +categories: + - Uncategorized +--- +{:right: style="float: right; width:250px; padding: 2px"} +![boxstarter]({{site.url}}/assets/boxlogo_sm.png){:width="250px"} +{:right:} +I was issued a new laptop, HP 840 G1, so needed to set up a proper development environment. The first time I set it up I manually downloaded and installed my regular dev kit. When I was upgraded to an SSD, I had to do it again so figured there must be a better way. I found Boxstarter.org would install applications similar to how Puppet and Chef work. My gist of the packages I install. It took a little bit to learn how to run Boxstarter and chose my packages, but once these are set up and running it's fire-and-forget. + +Boxstarter has a URL-based install that downloads a small application that steps through the packages in the gist that is specified in the URL. According to the documentation, the installer will use http_proxy/https_proxy environment variables if defined. + +Aside from the underlying exe/msi's for a few packages being 404'd (commented out in gist) it worked quite well! + +  diff --git a/_posts/2015-02-04-funny-oracle-error-message.md b/_posts/2015-02-04-funny-oracle-error-message.md new file mode 100644 index 000000000000..e8c997012c6d --- /dev/null +++ b/_posts/2015-02-04-funny-oracle-error-message.md @@ -0,0 +1,18 @@ +--- +id: 100 +title: Funny Oracle error message +date: 2015-02-04T15:56:40+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=100 +permalink: /funny-oracle-error-message/ +categories: + - Uncategorized +tags: + - Oracle + - wtf +--- +Oracle has an "Early Adopter" version of SQL Developer, a tool I have "become accustomed to" at a prior job where they couldn't/wouldn't pay for developers to have the superior TOAD SQL product. One of the caveats they list on the download page is that it only runs under JDK 8, so I got a chuckle out of this error message. + +Note that JDK 7 end-of-life (called "end of public updates", meaning for a big $$ support contract you can still get updates) has been announced for April 2015 by...Oracle. + +oracle-1.8-error \ No newline at end of file diff --git a/_posts/2015-03-05-determining-oracle-materialized-view-usage.md b/_posts/2015-03-05-determining-oracle-materialized-view-usage.md new file mode 100644 index 000000000000..fcea0ccaf324 --- /dev/null +++ b/_posts/2015-03-05-determining-oracle-materialized-view-usage.md @@ -0,0 +1,32 @@ +--- +id: 109 +title: Determining Oracle Materialized View usage +date: 2015-03-05T21:49:41+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=109 +permalink: /determining-oracle-materialized-view-usage/ +categories: + - Uncategorized +--- +We have some materialized views but are not sure they're being used after index and schema changes were made to improve performance. +
      +
    1. Enable auditing: AUDIT SELECT ON MVIEW_NAME;
    2. +
    3. run targeted queries
    4. +
    5. Find no data in SYS.AUD$ +
        +
      1. Table is huge so straight SELECT * FROM SYS.AUD$; takes too long
      2. +
      3. Try to look for selects: SELECT * FROM SYS.AUD$ WHERE ACTION#=3 /* SELECT from SYS.AUDIT_ACTIONS */;
      4. +
      5. Non-relevant data found
      6. +
      +
    6. +
    7. Enable auditing on table that is commonly used: AUDIT SELECT ON TABLE_NAME;
    8. +
    9. Run some selects
    10. +
    11. Still find no data in SYS.AUD$
    12. +
    +Since auditing seems to not be working as I expected (possibly because google-whacking it wrong), try a different tack. See if the common queries being run would be rewritten with dbms_mview.explain_rewrite on each query. +
      +
    1. The REWRITE_TABLE needs to be created if not already done
    2. +
    3. run begin dbms_mview.explain_rewrite('<the query>', 'MVIEW_NAME', to_char(sysdate, 'yyyy-mm-dd-hh24:mi:ss.ssss')); end;
    4. +
    5. Look at the results in the REWRITE_TABLE: select * from rewrite_table order by 1 desc;
    6. +
    + diff --git a/_posts/2015-04-30-careerbuilder-listings-used-as-phishing-platform.md b/_posts/2015-04-30-careerbuilder-listings-used-as-phishing-platform.md new file mode 100644 index 000000000000..83e6889d6c38 --- /dev/null +++ b/_posts/2015-04-30-careerbuilder-listings-used-as-phishing-platform.md @@ -0,0 +1,19 @@ +--- +id: 115 +title: CareerBuilder listings used as Phishing platform +date: 2015-04-30T12:48:39+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=115 +permalink: /careerbuilder-listings-used-as-phishing-platform/ +categories: + - Uncategorized +--- +{:left: style="float: left" width="250px"} +![phished](../wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_.jpg){:width="250px"} +{:left:} +Researchers at Proofpoint recently discovered a Phishing campaign that originated from select job postings on CareerBuilder. + +Companies seeking applicants allow them to send resumes. Someone figured out how to upload files that install viruses in a staged attack. The brilliant part of it is that most companies using CareerBuilder will also whitelist attachments from CareerBuilder, and are expecting to get attachments from unknown people, making a (spear-)phishing attack that much easier. + +Source: +[CareerBuilder listings used as Phishing platform | CSO Online](http://www.csoonline.com/article/2916524/social-engineering/careerbuilder-listings-used-as-phishing-platform.html) diff --git a/_posts/2015-04-30-the-technical-treadmill-of-software-development.md b/_posts/2015-04-30-the-technical-treadmill-of-software-development.md new file mode 100644 index 000000000000..bdf2498f82b9 --- /dev/null +++ b/_posts/2015-04-30-the-technical-treadmill-of-software-development.md @@ -0,0 +1,21 @@ +--- +id: 119 +title: The technical treadmill of software development +date: 2015-04-30T14:14:54+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=119 +permalink: /the-technical-treadmill-of-software-development/ +categories: + - Uncategorized +--- + +{:right: style="float: right" width="300px"} +![netflix](../wp-content/uploads/2015/04/treadmill-cartoon.jpg){:width="250px"}\\ +The natural state of a Developer +{:right:} + +> How do I keep up with all of this? 70/20/10 rule + +> Short answer you don't. There is too much to learn to try every great new framework or language. Trying to learn everything will leave you with little long lasting or useful knowledge as a software developer. So I have a a technique I personally try to follow and it may help you. I follow the 70/20/10 rule. You may have heard this rule from Google. The idea is you invest 70% of your time or resources into parts of the business that make money and continue improving on them. The next 20% is on investments that have a start and continue to get them off the ground. The last 10% is spent on completely new products or ideas. Now this idea is designed for businesses but is easily adaptable to improving ourselves as developers. After all we are investing in ourselves with our education. + +Source: The technical treadmill of software development diff --git a/_posts/2016-01-13-the-registration-test-results-netflix-never-expected-dzone-mobile.md b/_posts/2016-01-13-the-registration-test-results-netflix-never-expected-dzone-mobile.md new file mode 100644 index 000000000000..1d47193876e6 --- /dev/null +++ b/_posts/2016-01-13-the-registration-test-results-netflix-never-expected-dzone-mobile.md @@ -0,0 +1,29 @@ +--- +id: 130 +title: 'The Registration Test Results Netflix Never Expected' +date: 2016-01-13T08:44:17+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=130 +permalink: /the-registration-test-results-netflix-never-expected-dzone-mobile/ +categories: + - Uncategorized +tags: + - ui +--- +{:right: style="float: right" width="300px"} +![netflix](../wp-content/uploads/2016/01/Netflix-Results.png){:width="250px"} +{:right} +As a current long-time customer of Netflix (since way before they had streaming) I've found their movie selection lacking, almost as bad as HBO/Cinemax/Showtime. Maybe potential customers saw this too when presented with the variants that showed available movies. + +>A lot of potential Netflix users claimed that being able to see the vast library would improve sign-up. However, Netflix's test proved this might not be true. +> +>According to a their data, 46% of survey respondents said that making titles of Netflix content available to browse was the 1 thing they wanted to know more about before signing up. + +> +>The test would start out with the control (not allowing users to browse titles) vs. Variant 1 (where users could scroll different genres, click on a title, get a synopsis, and see all the titles)....  +> +>The team was shocked by the results. The survey data and best practices learned had suggested the exact opposite. Everyone had thought that allowing visitors to preview titles would increase signups. So they dug deep to figure out the reasons why the original performed best. +> +>While survey had shown that 46% of users wanted to browse titles before signing up for Netflix, the tests proved otherwise. Testing reveals our assumptions. That’s why it’s so important to run tests and trust the data. If Netflix had simply followed best practices, they would have been scrambling trying to figure out why their new onboarding was performing so poorly. + +Source: The Registration Test Results Netflix Never Expected - DZone Mobile diff --git a/_posts/2016-06-15-big-numbers.md b/_posts/2016-06-15-big-numbers.md new file mode 100644 index 000000000000..1c590f2adfa8 --- /dev/null +++ b/_posts/2016-06-15-big-numbers.md @@ -0,0 +1,16 @@ +--- +id: 136 +title: Big Numbers +date: 2016-06-15T11:42:07+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=136 +permalink: /big-numbers/ +categories: + - Uncategorized +tags: + - java +--- + +Source: Big Numbers + +The easiest way to start a flamewar.... \ No newline at end of file diff --git a/_posts/2016-09-15-ntlm-proxies-suck.md b/_posts/2016-09-15-ntlm-proxies-suck.md new file mode 100644 index 000000000000..d1444385fa03 --- /dev/null +++ b/_posts/2016-09-15-ntlm-proxies-suck.md @@ -0,0 +1,22 @@ +--- +id: 149 +title: 'NTLM Proxies are the Devil''s spawn' +date: 2016-09-15T11:34:25+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=149 +permalink: /ntlm-proxies-suck/ +categories: + - Uncategorized +tags: + - pain-points +--- +{:left: width="250px" style="float: left"} +![Very Evil Firewall](https://cdn.meme.am/instances/41007948.jpg){:width="250px"}\\ +*how NTLM proxies were conceived* +{:left} + +Even though most developer apps recognize and support proxies, they all require some sort of configuration either on the commandline, through environment vars (e.g. http_proxy) or via a configuration file. Setting up a non-encrypting proxy is tedious, but none in my experience support NTLM-based authentication. The process for getting these apps to talk across a proxied firewall is painful. + +So, every developer who wants their tools to access the internet needs to configure CNTLM and configure their apps to use this proxy. This is fiddly too, as some apps use HTTP_PROXY/HTTPS_PROXY environment variables, and some use a config file. This config file could be in the install directory, users home directory (%USERPROFILE%/.gitconfig), an app directory in the home directory (%USERPROFILE%/.m2/settings.xml), some other random place, or commandline (npm config set proxy..., npm config set http-proxy ..., etc. + +Woe to you if the https proxy cert's is self-signed so that the signature can't be traced back to a standard Certificate Authority (CA). There's a whole new ring of Hell of figuring out how to disable signature validation. Most of the time signature validation can't be disabled, so another configuration needs to be set to tell the app to use the http flavor of a given repo instead of the default https, if it even offers a non-encrypted version. diff --git a/_posts/2016-10-25-yet-another-reason-to-not-use-ie-smashing-magazine.md b/_posts/2016-10-25-yet-another-reason-to-not-use-ie-smashing-magazine.md new file mode 100644 index 000000000000..7ed93528e190 --- /dev/null +++ b/_posts/2016-10-25-yet-another-reason-to-not-use-ie-smashing-magazine.md @@ -0,0 +1,25 @@ +--- +id: 158 +title: 'Yet another reason to not use IE --- Smashing Magazine' +date: 2016-10-25T11:55:10+00:00 +author: edgriebel +guid: http://www.edgriebel.com/?p=158 +permalink: /yet-another-reason-to-not-use-ie-smashing-magazine/ +categories: + - Uncategorized +tags: + - ie +--- +This must be reason #84 at this point to use anything (even Opera) instead of IE... + +{:right: style="float: right" width="150px"} +![ie6](../wp-content/uploads/2016/10/IE6-150x150.png)\\ +*"Microsoft Standards"* +{:right} +> 512 MAGICAL BYTES: This is, hands down, +> one of the strangest quirks I have ever encountered in web development. +> You must ensure that the total size of your 404.html page is greater than 512 bytes, because if it isn’t, Internet Explorer will disregard it and show a generic browser 404 page instead. When I finally figured this out, I had to crack open a beer to cope with the amount of time it took. + +Source: +[S(GH)PA: The Single-Page App Hack For GitHub Pages – Smashing Magazine](https://www.smashingmagazine.com/2016/08/sghpa-single-page-app-hack-github-pages/#512-magical-bytes) + diff --git a/_posts/2017-02-27-getting-a-blog-running-on-github-with-jekyll.md b/_posts/2017-02-27-getting-a-blog-running-on-github-with-jekyll.md new file mode 100755 index 000000000000..cb74be078e73 --- /dev/null +++ b/_posts/2017-02-27-getting-a-blog-running-on-github-with-jekyll.md @@ -0,0 +1,158 @@ +--- +title: Getting a Blog running on Github with Jekyll +date: 2017-02-27T20:00:00+00:00 +author: edgriebel +permalink: /first-jekyll/ +tags: + - blogging + - jekyll + - ruby + - ubuntu +--- +# Overall thoughts +{:right: style="float: right" width="250px"} +![jekyll](../wp-content/uploads/2017/jekyll.png){:width="250px"}\\ +*With special Ruby Powers!* +{:right} +Jekyll is complicated! I had a very hard time converting an existing Wordpress +blog to Jekyll. It took 15-20 hours because of futzing with themes, +working around firewalls, false starts with running Jekyll in Windows, etc. + +I'm still not happy with the theme. +Theming in Jekyll is way harder than in Wordpress. Wordpress is click-click to change +to a new theme and even just a single click to preview. The way with Jekyll is +to: +1. clone someone else's github repo with a style you like +2. copy `_posts` directory into the clone +3. copy static/asset content to the clone +4. figure out what layout they use in their posts and pages and change appropriately +5. run `jekyll serve` multiple times until all bugs are exorcised +6. Clever people will do this on a different branch and have github serve up the branch temporarily + +Instead of changing every post, one can make an alias, if you use layout "mypost", create `_layouts/mypost.html`: +~~~~ +--- +layout: themepost # the layout specified in the new theme +--- +{% raw %}{{ content }}{% endraw %} + +~~~~ + +When there are any errors in the numerous cookbook-style blogs about how to convert, +there is a lot to know about Ruby, Jekyll, `bundle`, `Gemfile`s, RubyGems, etc. +to get all the moving parts working. + +Jekyll does not work well with Windows. Most of the blogs say this, and I agree, _do not use windows_ +for Jekyll. The toolchain just doesn't work well for anything more complicated than the +default `minima` theme. +Things went much smoother when I set up a linux vm in VirtualBox on my windows box, +but there were still some gotchas when getting github previews working. + +# Exporting from existing wordpress blog +This was tons of trouble. It seems that the [wordpress exporter] I used +would export the post content and images, etc. but doesn't preserve +the theme. When the `_posts` contents copied into a newly-initialized +`jekyll new testblog`, there are errors about specified layouts not found. +A barely acceptable solution is to create a new jekyll blog and then copy Gemfile, +make changes in `_config.yml`, and futz with stuff to get `jekyll build` to complete. +Some of the problems could also have been because of trying to use Windows. **DO NOT USE WINDOWS!!** + + +# Steps to get Jekyll working with Github themes (a.k.a. github "preview") on Ubuntu MATE +**Do not try to use Windows until you _completely_ understand Jekyll!!!** + +## Install requisite libraries to preview github-themed pages +~~~~ bash +sudo apt-get install ruby +sudo apt-get install libz-dev +sudo apt-get install g++ +sudo gem install jekyll +# change perms so gem doesn't have to be run with sudo +sudo chmod -R a+w /var/lib/gems +gem install bundler +gem install jekyll-feed +gem install jekyll-instant +gem install minima # originally used the minima theme +gem install nokogiri +gem install therubyracer # For coffeescript used by github-pages build +# need to remove newer version of Jekyll as github pages supports older version +gem uninstall jekyll +# choose newer version from list +~~~~ + +At some point this could probably be turned into a [Vagrant](https://www.vagrantup.com/) vm-based dev env. + +## Troubleshooting Notes +`Gemfile.lock` is required to be in the repo. +It is NOT a lockfile to prevent multiple edits as I initially assumed, +but a listing of all the [gem] [versions] used the last time `gem update` was run. + +Most of the github themes don't list an individual page's +title at the top of the page. The `default.html` page was copied from the +theme's `_layout` directory and then `

    {{ page.title }}

    ` was added +inside the page. A title was similarly added to `

    ` block +as almost every stock github-pages theme uses the site's title. + +`gem "therubyracer"` was required in `Gemfile` due to error about needing a +javascript engine. Node.js would have been usable as well if installed. + +Need to fix `gem "jekyll", "~> 3.3"` because this is the version that +Github uses and `github-pages` requires this version. + +_NOTE_ that jekyll __does not__ run on Windows with this arrangement even if +Ruby and Jekyll are installed due to therubyracer and native libraries required +by github-pages. + +# Update for new environment 2018-11-01: +~~~~ bash +# install dependencies that will be needed by ruby-build +sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev + +# use rbenv +sudo apt install rbenv + +# Add rbenv to .bashrc +rbenv init 2>> ~/.bashrc +. ~/.bashrc + +# verify setup (repeatedly to fix errors) +curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash + +sudo apt install ruby-build + +rbenv install --list +# old versions, so we need to update versions +git clone https://github.com/rbenv/rbenv-default-gems.git ~/.rbenv/plugins/rbenv-default-gems +git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build + +# install good ruby +rbenv install 2.5.3 + +# still getting /var/lib/gems errors: +gem install bundler +# wrong directory: +gem env home + +# Install plugin that sets it to local dirs +git clone https://github.com/jf/rbenv-gemset.git $HOME/.rbenv/plugins/rbenv-gemset + +# set up paths again +. ~/.bashrc +# verify.. +gem env home + +# installs all the gems specified in Gemfile +bundle install + +gem install jekyll + +gem update jekyll + +bundle update + +~~~~ + +[jekyll]: https://jekyllrb.com/ +[wordpress exporter]: https://wordpress.org/plugins/jekyll-exporter/ +[gem]: http://stackoverflow.com/a/7518215/3889 +[versions]: http://stackoverflow.com/a/21527203/3889 diff --git a/_posts/2017-03-16-czar-of-bad-systems.md b/_posts/2017-03-16-czar-of-bad-systems.md new file mode 100644 index 000000000000..5486b3d34c72 --- /dev/null +++ b/_posts/2017-03-16-czar-of-bad-systems.md @@ -0,0 +1,33 @@ +--- +categories: + - bureaucracy +--- +After spending $200 on approvals and other bureaucracy to send a t-shirt to someone (acrophyal?), +HootSuite CEO appoints a "Czar of Bad Systems", Czar Noel, who is charged with helping +"cut the proverbial 'red tape' that is often cursed but rarely challenged". + +>In a company of 1,000 people, we’re talking about hundreds +of employee hours saved over a year’s time–just on ordering swag. +Once I realized that, the gears started turning: How much time and +money were being tied up in other bad and broken processes–simple +stuff that was eminently fixable, but that no one was looking into? + + +This reminds me of how Security, Ergonomics, standardized IT, and other bureaucracies +work at some companies. When decisions are made about standards, processes, forms/paperwork, etc., rarely the _Opportunity Cost_ of these decisions is considered. + +As an example of bureaucracy trumping usage, my company blocks any website in a [non-Generic TLD] not +reviewed and categorized by our [proxy provider]. Sounds like a good idea, except that when doing any +amount of "real" development you soon realize that many informative and necessary nuggets of +information are published on "personal" webpages on github.io. _All_ of these pages are blocked by +default, and to get these unblocked one has to fill out a form, wait for external proxy provider to review +and publish info about the website, then wait up to a day or two for that to be refleced locally. +Doesn't cost Security anything to have this restrictive policy, so it is unlikely to change, yet +I'm sure that the Big 4 don't have a deny-first policy for websites. + +Source: [FastCompany: Why This CEO Appointed An Employee To Change Dumb Company Rules][article] (_[HT]_) + +[article]: https://www.fastcompany.com/3068931/why-this-ceo-appointed-an-employee-to-change-dumb-company-rules +[HT]: https://thehustle.co/hootsuite-bad-systems +[non-Generic TLD]: https://en.wikipedia.org/wiki/Generic_top-level_domain +[proxy provider]: https://www.bluecoat.com diff --git a/_posts/2017-06-06-stupid-error-messages-#99.md b/_posts/2017-06-06-stupid-error-messages-#99.md new file mode 100644 index 000000000000..960253913989 --- /dev/null +++ b/_posts/2017-06-06-stupid-error-messages-#99.md @@ -0,0 +1,16 @@ +--- +title: Stupid Error Messages #99 +--- + +``` +C:> net stop cntlm +The Cntlm Authentication Proxy service is not started. + +More help is available by typing NET HELPMSG 3521. + +C:> net helpmsg 3521 + +The *** service is not started. + +C:> +``` diff --git a/_posts/2018-01-30-synergy-on-windows-and-linux.md b/_posts/2018-01-30-synergy-on-windows-and-linux.md new file mode 100644 index 000000000000..50dc6e69903c --- /dev/null +++ b/_posts/2018-01-30-synergy-on-windows-and-linux.md @@ -0,0 +1,40 @@ +--- +categories: + - utils +title: Installing Synergy to share Windows and Linux +--- + +I haven't used Synergy in...years, but it was mostly reliable when I did use it last. + +# Configuration: +- HP 840 G1, 16GB i5, Windows 7 Enterprise as server +- HP Compaq 8200 Elite SFF Linux, 16GB i7, Mint 18.3 Sylvia MATE 64-bit + +# Install on Windows +- Start with a Windows server as the "Server" where the kbd/mouse will be used +- To test it, download a version (1.8.8) from [forked Synergy repo] +- Install msi file +- App will launch, set it up as a server, don't bother to install Bonjour +- Create a map with the hostname of the new machine on the screen setup page +- click "Start" button +- Note ip address (e.g. `ipconfig`) + +# Install on Linux +- run `sudo apt-get install synergy` +- Launch synergy: `synergy&` +- Select "Client" option +- Enter Server's IP address +- Click "Start" + +Once these steps are done, you should see handshaking between the servers in the console. +When you get a connection message, the windows go away on both hosts. + +Test that the mouse and keyboard work by hitting the edge of the screen, if so you're done! + +Notes: +* copy/paste between systems doesn't seem to work, I haven't tried to troubleshoot it +* Error message in Linux window `The program 'Synergy' uses the Apple Bonjour compatibility layer of Avahi.`, I haven't tried to troubleshoot it +* As noted above, bonjour not installed on windows. This will probably cause a problem with auto-discovery and auto-configuration. +Entering IP address manually worked fine. Systems with a changing DHCP assignment may not work as well. + +[forked Synergy repo]: https://github.com/brahma-dev/synergy-stable-builds/releases diff --git a/_posts/2018-11-01-words-to-remove-from-writing.md b/_posts/2018-11-01-words-to-remove-from-writing.md new file mode 100644 index 000000000000..375ad358d4e5 --- /dev/null +++ b/_posts/2018-11-01-words-to-remove-from-writing.md @@ -0,0 +1,24 @@ +--- +categories: + - personal-development +title: Words to Cut from Writing +--- +* just, perhaps, maybe +* that +* I think/I believe +* All adverbs and most adjectives + * really, very, seriously, ... +* Don't use big "two dollar" words: + * numerous -> many + * assistance -> help + * sufficient -> enough +* Useless phrases like: + * > It is interesting to point out + * > In a sense + * > I am tempted to say +* Useless phrases (according to _Strunk & White_) + * There is no doubt that -> No doubt + * This is a topic that -> This topic + * In order to -> To + +(Via: Medium.com/writingcooperative.com) diff --git a/_posts/2018-11-03-rebooting-blog-moving-github-pages.md b/_posts/2018-11-03-rebooting-blog-moving-github-pages.md new file mode 100644 index 000000000000..9eaffa555299 --- /dev/null +++ b/_posts/2018-11-03-rebooting-blog-moving-github-pages.md @@ -0,0 +1,15 @@ +--- +categories: blog +title: Rebooting Blog and Moving to Github Pages +--- +I'm taking the plunge and finally finishing up moving this off of Dreamhost and onto Github pages. +It's been "staged" on github for a while now, finally allocated time to getting it fully off dreamhost (and will save $10/mo). +HTTPS is not working yet, some extra config needs to be done on github's side. +It was pretty easy on Dreamhost, just click a box and it automatically set up a LetsEncrypt cert for your domain. +I'm just happy that www redirection works :-) + +I'm going to be moving content that's been in draft form for "a while" (a _long_ while in some cases), I'll mark them the date I published them as the as-of date. If I'm disciplined enough I'll add the original date in the text. + +At some point I'm going to go on a theme hunt again. +I have to add an 'about' page with my resume and contact info, and find a template that shows the title and date at the top of a post. +I've added them in myself to an old verison of the website, but then you can't auto-update anymore (or at least I haven't figured out how to do it yet). diff --git a/_posts/2018-11-26-using-r-in-jupyter.md b/_posts/2018-11-26-using-r-in-jupyter.md new file mode 100644 index 000000000000..fd93a5ae8ac7 --- /dev/null +++ b/_posts/2018-11-26-using-r-in-jupyter.md @@ -0,0 +1,14 @@ +--- +title: Using R in Jupyter +tags: + - Jupyter + - r-project +--- +[Jupyter Notebooks](http://jupyter.org/) will handle [R](https://www.r-project.org/about.html) well by following [these steps](https://docs.anaconda.com/anaconda/navigator/tutorials/r-lang/). +But, these steps don't work with [Jupyterlab](https://towardsdatascience.com/jupyter-notebooks-are-breathtakingly-featureless-use-jupyter-lab-be858a67b59d). + +Following the instructions [here](https://richpauloo.github.io/2018-05-16-Installing-the-R-kernel-in-Jupyter-Lab/) will enable one to choose an R kernel. Note that there is a *ton* of output from R when running `install.packages("deftools")` because it's building it from source. + +If one is not doing a lot of R development then create an [environment](https://medium.freecodecamp.org/why-you-need-python-environments-and-how-to-manage-them-with-conda-85f155f4353c) that can be switched into using `source activate ` when R notebooks are needed. I do this because R is a **ton** of code that could crap up your root Python install. + +([This](https://www.datacamp.com/community/blog/jupyter-notebook-r) is an alternative description of how to set up R in Jupyter and includes steps that work for Jupyter Notebooks and Jupyterlab.) diff --git a/_posts/2018-12-04-new-theme-minimal-mistakes.md b/_posts/2018-12-04-new-theme-minimal-mistakes.md new file mode 100644 index 000000000000..8002db0ccf9f --- /dev/null +++ b/_posts/2018-12-04-new-theme-minimal-mistakes.md @@ -0,0 +1,34 @@ +--- +title: "New Theme: Minimal Mistakes" +tags: + - Jekyll +--- +I'm moving to a new theme, [Minimal Mistakes](https://mademistakes.com/work/minimal-mistakes-jekyll-theme/). + +I don't like the default github themes because they're missing basic things like sidebars and displaying post titles. +These _can_ be added (because it's all code nothing is impossible), but it requires modifying a theme's \_layout and locking you into a theme, but theme flexibility is the point of using a [built-in theme](https://pages.github.com/themes/). + +Github has recently-ish (11/2017) added [shared themes a.k.a remote themes](https://blog.github.com/2017-11-29-use-any-theme-with-github-pages/), allowing specially-built [themes](https://github.com/topics/jekyll-theme) stored in github to be used by reference in your `_config.yaml`. + +I chose Minimal Mistakes because it looked good and didn't need any customization in `_layouts` (none in my case) and minimal configuration. + +Some of the steps I needed to do to incorporate it: +* Changes to `_config.yml` + * added required new plugins + * defaults for posts + * Added sidebar links and avatar that links to my Gravatar page + * Declarations for pagination, breadcrumbs, + * Include for `_pages` dir to get it processed +* created `_pages/category-archive.md` and `_pages/tags-archive.md` to generate pages with tags and categories +* removed `layout: post` from front matter in every post (now defaulted in `_config.yml`) +* Added a lot of defaults for posts and pages in `_config.yml` +* Removed all customizations from `_layouts` +* Moved `about.md` to `_pages` and fixed the permalink in the file +* Created `_data/navigation.yml` to set up a menubar +* Changed `index.html` to have "important" front matter, the key being `layout: home`. Until I added this the homepage didn't work. +* Add a header image and configure header code in `index.html` front matter + +It looks like a lot of steps, but was a good learning experience for Jekyll and a lot of these steps were because I was porting from another theme. + +I will be labeling the merge to `master` branch so I can easily find the changes, but for now all changes are made on the +[ branch](https://github.com/edgriebel/edgriebel.github.io/tree/minimal-mistakes) `minimal-mistakes`. diff --git a/_posts/2019-01-21-as-a-programmer-you-need-to-know-several-things.md b/_posts/2019-01-21-as-a-programmer-you-need-to-know-several-things.md new file mode 100644 index 000000000000..11050ff1ba79 --- /dev/null +++ b/_posts/2019-01-21-as-a-programmer-you-need-to-know-several-things.md @@ -0,0 +1,27 @@ +--- +title: As a Programmer you need to know several things +tags: + - Programming +--- + +> As a Systems Programmer you need to know several things; +> +> How to do something, arguably the easiest to learn. +> Why do I do it. +> When do I do it. +> When don’t I do it. +> When to follow the rules. +> When not to follow the rules. +> How to make the process foolproof. +> How to make the process damn foolproof, or as close to it as possible. +> How to think inside the box. +> How to think outside the box. +> Knowing which one to use. +> How to get out of any mess you created. +> How to get out of any mess someone else created. +> When to ask for permission. +> When to ask for forgiveness. +> +> It’s as much as an art as it is a science. We can teach the science, the art of Systems Programming has to be lived. + +(From a quote by Mark Jacobs on LinkedIn posted to rands-leadership.slack.com, I can't find original post) diff --git a/_posts/2019-03-08-embedding-mermaid-diagram.md b/_posts/2019-03-08-embedding-mermaid-diagram.md new file mode 100644 index 000000000000..236bb73f7fc2 --- /dev/null +++ b/_posts/2019-03-08-embedding-mermaid-diagram.md @@ -0,0 +1,31 @@ +--- +title: "Embedding Mermaid Diagrams in Jekyll without plugins!" +tags: + - Jekyll +--- +Embed a jekyll diagram by including a javascript file and putting diagram in a `
    ` object with class `mermaid`: + + + +
    +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +
    + +And the code: +~~~ html + + +
    +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +
    +~~~ + +Adapted from diff --git a/_posts/2019-03-19-mysql-for-oracle-devs.md b/_posts/2019-03-19-mysql-for-oracle-devs.md new file mode 100644 index 000000000000..dda904e95567 --- /dev/null +++ b/_posts/2019-03-19-mysql-for-oracle-devs.md @@ -0,0 +1,48 @@ +--- +title: "MySQL for Oracle Developers" +tags: + - Oracle + - MySQL +--- +{:right: style="float: right" width="200px"} +![mysql](https://www.mysql.com/common/logos/powered-by-mysql-167x86.png){:width="200px"}\\ +*Not MariaDB* +{:right} + +I've been using Oracle DBMS for years, and sometimes it's hard to differentiate what is an "Oracle built-in" and a standard SQL feature. + +In teaching a Database Modeling course at RIT in MySQL I have found out that there are some differences between Oracle and MySQL: + +- MySQL comparisons are case-insensitive, so `SELECT * FROM table WHERE name='ABC';` returns the same results as `SELECT * FROM table WHERE name='abc';` + +- MySQL table names *are* case-sensitive but only on Linux. + +- MySQL has a richer set of datatypes, especially for integer types: `tinyint`, `smallint`, `mediumint`, `int`, and `bigint`, but is missing `BLOB`/`CLOB` and native(-ish) XML. + +- Single and double-quotes are allowed for string literals (but cannot be mixed). + +- Executing queries in an Oracle database are done by specifying the database name in the connect string. MySQL supports the `USE` command to choose a database to run. + +- There are a lot fewer functions available than in Oracle (which someone could write a an-oracle-function-a-day series and have a year's worth of material). + +- `CHECK` constraints are "supported" in DDL but before MySQL 8 are only verified to be syntatically correct. + +- `MINUS` is not supported, but can be simulated with `NOT IN ()` + +- Concatenation operator `||` isn't supported, must use `CONCAT()`. + MySQL allows string literals to be concatenated without operators (`SELECT 'foo' 'bar';`). + +- tables can be aliased by backticks with or without the `AS` keyword because " and ' are both allowed for string literals. +Oracle lets you use a `"quoted"` value for a table alias without `AS`, for example `SELECT 'foo' AS foo_col, 'bar' "bar_col" FROM dual;` + +- nested queries must have a table alias in MySQL even if table name isn't referenced. For instance, `AS my_sales` is mandatory in this statement: `SELECT count(*) from (SELECT distinct * from sales) AS my_sales;` + +- Joins inside nested queries need to have unique column names in MySQL. Oracle will rename the columns (generally by appending "\_1" to the duplicate column name) but an error is returned. +For instance, given tables **STOCKTRADES(cusip, price, trade_date, commission)** and **BONDTRADES(cusip, price, trade_date, commission)**. +In Oracle, `SELECT count(*) FROM (SELECT * FROM stocktrades UNION SELECT * FROM bondtrades) AS all_trades;` + +- `NVL()` is not supported, use `COALESCE()` instead + +- Good summary is at [this SlideShare][1] but it's sometimes not clear what the original Oracle analog would be and it's a little dated. + +[1]: https://www.slideshare.net/ronaldbradford/mysql-for-oracle-developers diff --git a/_posts/2019-04-11-my-craziest-production-fix-ever.md b/_posts/2019-04-11-my-craziest-production-fix-ever.md new file mode 100644 index 000000000000..070d17300e8d --- /dev/null +++ b/_posts/2019-04-11-my-craziest-production-fix-ever.md @@ -0,0 +1,35 @@ +--- +title: My Craziest Production Fix Ever! +tags: + - c + - trading-floor + - war-story + - hacks +--- + +I used to work on a trading floor for the short term bond/repo desk some time ago at a small buy-side firm. +My job was to create and maintain command-line and GUI applications written in C (_definitely_ some time ago). +There was a bug in an application that was caused by a problem in a string. +Fixing the string in the source code would have required a code edit and a recompile. +This would have taken at minimum a half-hour, where time really is money and the fix was needed *right now*. + +Because the users needed the fix as soon as possible, I reviewed +with the head of the desk and responsible development manager +the half-hour option, as well as a more expedient option. + +Since we could contain the risk by making a copy of the executable, and because it was used only by this trading desk, +the expedient solution was chosen. + +Emacs is well known to safely binary files because it doesn't add characters (e.g. trailing newline, word-wrapping, etc.), +I brought up the executable in Emacs; the fix only required substituting a smaller string for the existing one. +I searched for the string in the file (`C-x C-f`) and made the change. `nul` characters were added at the end of the new string, +making sure that I had the exact same number of characters including the original trailing `nul`. + +After making sure that the file was the same size, I crossed my fingers while saving the file (`C-x C-s`) over the original one and had one +of the traders restart the application. (Other traders already running the app weren't affected because the original version was still at +the same inode.) + +The app started fine and the bug was fixed, so the other traders restarted theirs and had no problems either. +Because I fixed this problem in about 5 minutes I was hero for a day and became known as a go-to guy for problems. + +(original as bullet points 3/10/17) diff --git a/_posts/2020-03-31-goodbye-catalant.md b/_posts/2020-03-31-goodbye-catalant.md new file mode 100644 index 000000000000..687ef78bac72 --- /dev/null +++ b/_posts/2020-03-31-goodbye-catalant.md @@ -0,0 +1,15 @@ +--- +title: Goodbye Catalant +tags: + - Catalant + - job +--- + +Today marks the end of my journey at Catalant Technologies. Even though the end was unexpected, I have met so many great people and learned so much in the time that I was there. Some highlights: +* How to have a software product without a dedicated datacenter. Every developer could run the entire system on their desktop in Docker (with a subset of obfuscated production data), and when pushed to production "it just works" +* Super-short release times. It was not unusual that I'd finish coding a feature after lunch and it would be released before the end of the day +* Incredibly frequent releases. There were some days where we would release over 20 features to production. Coming from organizations that struggled to define and implement bi-weekly releases, this was a revelation and amazing to see first-hand a real-world example of releases as described in _The Phoenix Project_ + +Each of these is a big lesson, but probably the biggest lesson is that the "Principal Software Engineer" role has wide variations, not only between organizations but sometimes within the same company. + +If your organization is looking for a problem solver with deep experience in software engineering using Java, Python, and SQL please keep me in mind. diff --git a/_sass/minimal-mistakes.scss b/_sass/minimal-mistakes.scss deleted file mode 100644 index ba9d13d5df2f..000000000000 --- a/_sass/minimal-mistakes.scss +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright comment */ -@import "minimal-mistakes/copyright"; - -/* Variables */ -@import "minimal-mistakes/variables"; - -/* Mixins and functions */ -@import "minimal-mistakes/vendor/breakpoint/breakpoint"; -@include breakpoint-set("to ems", true); -@import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup -@import "minimal-mistakes/vendor/susy/susy"; -@import "minimal-mistakes/mixins"; - -/* Core CSS */ -@import "minimal-mistakes/reset"; -@import "minimal-mistakes/base"; -@import "minimal-mistakes/forms"; -@import "minimal-mistakes/tables"; -@import "minimal-mistakes/animations"; - -/* Components */ -@import "minimal-mistakes/buttons"; -@import "minimal-mistakes/notices"; -@import "minimal-mistakes/masthead"; -@import "minimal-mistakes/navigation"; -@import "minimal-mistakes/footer"; -@import "minimal-mistakes/search"; -@import "minimal-mistakes/syntax"; - -/* Utility classes */ -@import "minimal-mistakes/utilities"; - -/* Layout specific */ -@import "minimal-mistakes/page"; -@import "minimal-mistakes/archive"; -@import "minimal-mistakes/sidebar"; -@import "minimal-mistakes/print"; diff --git a/_sass/minimal-mistakes/_animations.scss b/_sass/minimal-mistakes/_animations.scss deleted file mode 100644 index 25ef77fbbfce..000000000000 --- a/_sass/minimal-mistakes/_animations.scss +++ /dev/null @@ -1,21 +0,0 @@ -/* ========================================================================== - ANIMATIONS - ========================================================================== */ - -@-webkit-keyframes intro { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@keyframes intro { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} \ No newline at end of file diff --git a/_sass/minimal-mistakes/_archive.scss b/_sass/minimal-mistakes/_archive.scss deleted file mode 100644 index aee718909418..000000000000 --- a/_sass/minimal-mistakes/_archive.scss +++ /dev/null @@ -1,431 +0,0 @@ -/* ========================================================================== - ARCHIVE - ========================================================================== */ - -.archive { - margin-top: 1em; - margin-bottom: 2em; - - @include breakpoint($large) { - float: inline-end; - width: calc(100% - #{$right-sidebar-width-narrow}); - padding-inline-end: $right-sidebar-width-narrow; - } - - @include breakpoint($x-large) { - width: calc(100% - #{$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.5em; - padding-bottom: 0.5em; - font-size: $type-size-5; - color: $muted-text-color; - border-bottom: 1px solid $border-color; - - + .list__item .archive__item-title { - margin-top: 0.5em; - } -} - -.archive__item-title { - margin-bottom: 0.25em; - font-family: $sans-serif-narrow; - line-height: initial; - overflow: hidden; - text-overflow: ellipsis; - - a[rel="permalink"]::before { - content: ''; - position: absolute; - inset: 0; - } - - a + a { - opacity: 0.5; - } -} - -/* remove border*/ -.page__content { - .archive__item-title { - margin-top: 1em; - border-bottom: none; - } -} - -.archive__item-excerpt { - margin-top: 0; - font-size: $type-size-6; - - & + p { - text-indent: 0; - } - - a { - position: relative; - } -} - -.archive__item-teaser { - position: relative; - border-radius: $border-radius; - overflow: hidden; - - img { - width: 100%; - } -} - -.archive__item-caption { - position: absolute; - bottom: 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: end; - z-index: 5; - opacity: 0.5; - border-radius: $border-radius 0 0 0; - - @include breakpoint($large) { - padding: 5px 10px; - } - - a { - color: #fff; - text-decoration: none; - } -} - -/* - List view - ========================================================================== */ - -.list__item { - .page__meta { - margin: 0 0 4px; - font-size: 0.6em; - } -} - -/* - Grid view - ========================================================================== */ - -.archive { - .grid__wrapper { - /* extend grid elements to the right */ - - @include breakpoint($large) { - margin-inline-end: -1 * $right-sidebar-width-narrow; - } - - @include breakpoint($x-large) { - margin-inline-end: -1 * $right-sidebar-width; - } - } -} - -.grid__item { - margin-bottom: 2em; - - @include breakpoint($small) { - float: inline-start; - width: span(5 of 10); - - &:nth-child(2n + 1) { - clear: both; - margin-inline-start: 0; - } - - &:nth-child(2n + 2) { - clear: none; - margin-inline-start: gutter(of 10); - } - } - - @include breakpoint($medium) { - margin-inline: 0; /* override margin*/ - width: span(3 of 12); - - &:nth-child(2n + 1) { - clear: none; - } - - &:nth-child(4n + 1) { - clear: both; - } - - &:nth-child(4n + 2) { - clear: none; - margin-inline-start: gutter(1 of 12); - } - - &:nth-child(4n + 3) { - clear: none; - margin-inline-start: gutter(1 of 12); - } - - &:nth-child(4n + 4) { - clear: none; - margin-inline-start: gutter(1 of 12); - } - } - - .page__meta { - margin: 0 0 4px; - font-size: 0.6em; - } - - .page__meta-sep { - display: block; - - &::before { - display: none; - } - } - - .archive__item-title { - margin-top: 0.5em; - font-size: $type-size-5; - } - - .archive__item-excerpt { - display: none; - - @include breakpoint($medium) { - display: block; - font-size: $type-size-6; - } - } - - .archive__item-teaser { - @include breakpoint($small) { - max-height: 200px; - } - - @include breakpoint($medium) { - max-height: 120px; - } - } -} - -/* - Features - ========================================================================== */ - -.feature__wrapper { - @include clearfix(); - margin-bottom: 2em; - border-bottom: 1px solid $border-color; - - .archive__item-title { - margin-bottom: 0; - } -} - -.feature__item { - position: relative; - margin-bottom: 2em; - font-size: 1.125em; - - @include breakpoint($small) { - float: inline-start; - margin-bottom: 0; - width: span(4 of 12); - - &:nth-child(3n + 1) { - clear: both; - margin-inline-start: 0; - } - - &:nth-child(3n + 2) { - clear: none; - margin-inline-start: gutter(of 12); - } - - &:nth-child(3n + 3) { - clear: none; - margin-inline-start: gutter(of 12); - } - - .feature__item-teaser { - max-height: 200px; - overflow: hidden; - } - } - - .archive__item-body { - padding-inline: gutter(1 of 12); - } - - a.btn::before { - content: ''; - position: absolute; - inset: 0; - } - - &--left, &--right { - position: relative; - margin-inline: 0; - width: 100%; - clear: both; - font-size: 1.125em; - - a.btn::before { - content: ''; - position: absolute; - inset: 0; - } - - .archive__item-teaser { - margin-bottom: 2em; - } - } - - &--left { - float: inline-start; - - .archive__item { - float: inline-start; - } - - @include breakpoint($small) { - .archive__item-teaser { - float: inline-start; - width: span(5 of 12); - } - - .archive__item-body { - float: inline-end; - width: span(7 of 12); - padding-inline-start: gutter(0.5 of 12); - padding-inline-end: gutter(1 of 12); - } - } - } - - &--right { - float: inline-end; - - .archive__item { - float: inline-end; - } - - @include breakpoint($small) { - text-align: end; - - .archive__item-teaser { - float: inline-end; - width: span(5 of 12); - } - - .archive__item-body { - float: inline-start; - width: span(7 of 12); - padding-inline-start: gutter(1 of 12); - padding-inline-end: gutter(0.5 of 12); - } - } - } - - &--center { - position: relative; - float: inline-start; - margin-inline: 0; - width: 100%; - clear: both; - font-size: 1.125em; - - .archive__item { - float: inline-start; - width: 100%; - } - - .archive__item-teaser { - margin-bottom: 2em; - } - - a.btn::before { - content: ''; - position: absolute; - inset: 0; - } - - @include breakpoint($small) { - text-align: center; - - .archive__item-teaser { - margin: 0 auto; - width: span(5 of 12); - } - - .archive__item-body { - margin: 0 auto; - width: span(7 of 12); - } - } - } -} - -/* Place inside an archive layout */ - -.archive { - .feature__wrapper { - .archive__item-title { - margin-top: 0.25em; - font-size: 1em; - } - } - - .feature__item, - .feature__item--left, - .feature__item--center, - .feature__item--right { - font-size: 1em; - } -} - -/* - Wide Pages - ========================================================================== */ - -.wide { - .archive { - @include breakpoint($large) { - padding-inline-end: 0; - } - - @include breakpoint($x-large) { - padding-inline-end: 0; - } - } -} - -/* 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 deleted file mode 100644 index d52a42f2bc03..000000000000 --- a/_sass/minimal-mistakes/_base.scss +++ /dev/null @@ -1,339 +0,0 @@ -/* ========================================================================== - BASE ELEMENTS - ========================================================================== */ - -html { - /* sticky footer fix */ - position: relative; - min-height: 100%; -} - -body { - margin: 0; - padding: 0; - color: $text-color; - font-family: $global-font-family; - line-height: 1.5; - - &.overflow--hidden { - /* when primary navigation is visible, the content in the background won't scroll */ - overflow: hidden; - } -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 2em 0 0.5em; - line-height: 1.2; - font-family: $header-font-family; - font-weight: bold; -} - -h1 { - margin-top: 0; - font-size: $h-size-1; -} - -h2 { - font-size: $h-size-2; -} - -h3 { - font-size: $h-size-3; -} - -h4 { - font-size: $h-size-4; -} - -h5 { - font-size: $h-size-5; -} - -h6 { - font-size: $h-size-6; -} - -small, -.small { - font-size: $type-size-6; -} - -p { - margin-bottom: 1.3em; -} - -u, -ins { - text-decoration: none; - border-bottom: 1px solid $text-color; - a { - color: inherit; - } -} - -del a { - color: inherit; -} - -/* reduce orphans and widows when printing */ - -p, -pre, -blockquote, -ul, -ol, -dl, -figure, -table, -fieldset { - orphans: 3; - widows: 3; -} - -/* abbreviations */ - -abbr[title], -abbr[data-original-title] { - text-decoration: none; - cursor: help; - border-bottom: 1px dotted $text-color; -} - -/* blockquotes */ - -blockquote { - margin-block: 2em; - margin-inline-end: 1em; - padding-inline: 1em; - font-style: italic; - border-inline-start: 0.25em solid $primary-color; - - cite { - font-style: italic; - - &::before { - content: "\2014"; - padding-inline-end: 5px; - } - } -} - -/* links */ - -a { - &:focus { - @extend %tab-focus; - } - - &:visited { - color: $link-color-visited; - } - - &:hover { - color: $link-color-hover; - outline: 0; - } -} - -/* buttons */ - -button:focus { - @extend %tab-focus; -} - -/* code */ - -tt, -code, -kbd, -samp, -pre { - font-family: $monospace; -} - -pre { - overflow-x: auto; /* add scrollbars to wide code blocks*/ -} - -/* horizontal rule */ - -hr { - display: block; - margin: 1em 0; - border: 0; - border-top: 1px solid $border-color; -} - -/* lists */ - -ul li, -ol li { - margin-bottom: 0.5em; -} - -li ul, -li ol { - margin-top: 0.5em; -} - -/* - Media and embeds - ========================================================================== */ - -/* Figures and images */ - -figure { - display: -webkit-box; - display: flex; - -webkit-box-pack: justify; - justify-content: space-between; - -webkit-box-align: start; - align-items: flex-start; - flex-wrap: wrap; - margin: 2em 0; - - img, - iframe, - .fluid-width-video-wrapper { - margin-bottom: 1em; - } - - img { - width: 100%; - border-radius: $border-radius; - -webkit-transition: $global-transition; - transition: $global-transition; - } - - > a { - display: block; - } - - &.half { - > a, - > img { - @include breakpoint($small) { - width: calc(50% - 0.5em); - } - } - - figcaption { - width: 100%; - } - } - - &.third { - > a, - > img { - @include breakpoint($small) { - width: calc(33.3333% - 0.5em); - } - } - - figcaption { - width: 100%; - } - } -} - -/* Figure captions */ - -figcaption { - margin-bottom: 0.5em; - color: $muted-text-color; - font-family: $caption-font-family; - font-size: $type-size-6; - - a { - -webkit-transition: $global-transition; - transition: $global-transition; - - &:hover { - color: $link-color-hover; - } - } -} - -/* Fix IE9 SVG bug */ - -svg:not(:root) { - overflow: hidden; -} - -/* - Navigation lists - ========================================================================== */ - -/** - * Removes margins, padding, and bullet points from navigation lists - * - * Example usage: - * - */ - -nav { - ul { - margin: 0; - padding: 0; - } - - li { - list-style: none; - } - - a { - text-decoration: none; - } - - /* override white-space for nested lists */ - ul li, - ol li { - margin-bottom: 0; - } - - li ul, - li ol { - margin-top: 0; - } -} - -/* - Global animation transition - ========================================================================== */ - -b, -i, -strong, -em, -blockquote, -p, -q, -span, -figure, -img, -h1, -h2, -header, -input, -a, -tr, -td, -form button, -input[type="submit"], -.btn, -.highlight, -.archive__item-teaser { - -webkit-transition: $global-transition; - transition: $global-transition; -} diff --git a/_sass/minimal-mistakes/_buttons.scss b/_sass/minimal-mistakes/_buttons.scss deleted file mode 100644 index 87e705cd6572..000000000000 --- a/_sass/minimal-mistakes/_buttons.scss +++ /dev/null @@ -1,97 +0,0 @@ -/* ========================================================================== - BUTTONS - ========================================================================== */ - -/* - Default button - ========================================================================== */ - -.btn { - /* default */ - display: inline-block; - margin-bottom: 0.25em; - padding: 0.5em 1em; - font-family: $sans-serif; - font-size: $type-size-6; - font-weight: bold; - text-align: center; - text-decoration: none; - border-width: 0; - border-radius: $border-radius; - cursor: pointer; - - .icon { - margin-inline-end: 0.5em; - } - - .icon + .hidden { - margin-inline-start: -0.5em; /* override for hidden text*/ - } - - /* button colors */ - $buttoncolors: - (primary, $primary-color), - (inverse, #fff), - (light-outline, transparent), - (success, $success-color), - (warning, $warning-color), - (danger, $danger-color), - (info, $info-color), - (facebook, $facebook-color), - (twitter, $twitter-color), - (linkedin, $linkedin-color); - - @each $buttoncolor, $color in $buttoncolors { - &--#{$buttoncolor} { - @include yiq-contrasted($color); - @if ($buttoncolor == inverse) { - border: 1px solid $border-color; - } - @if ($buttoncolor == light-outline) { - border: 1px solid #fff; - } - - &:visited { - @include yiq-contrasted($color); - } - - &:hover { - @include yiq-contrasted(mix(#000, $color, 20%)); - } - } - } - - /* fills width of parent container */ - &--block { - display: block; - width: 100%; - - + .btn--block { - margin-top: 0.25em; - } - } - - /* disabled */ - &--disabled { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - box-shadow: none; - opacity: 0.65; - } - - /* extra large button */ - &--x-large { - font-size: $type-size-4; - } - - /* large button */ - &--large { - font-size: $type-size-5; - } - - /* small button */ - &--small { - font-size: $type-size-7; - } -} diff --git a/_sass/minimal-mistakes/_copyright.scss b/_sass/minimal-mistakes/_copyright.scss deleted file mode 100644 index b70c0374f557..000000000000 --- a/_sass/minimal-mistakes/_copyright.scss +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * 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 deleted file mode 100644 index 96d0842cedef..000000000000 --- a/_sass/minimal-mistakes/_footer.scss +++ /dev/null @@ -1,83 +0,0 @@ -/* ========================================================================== - FOOTER - ========================================================================== */ - -.page__footer { - @include clearfix; - float: inline-start; - margin-inline: 0; - width: 100%; - margin-top: 3em; - color: $muted-text-color; - -webkit-animation: $intro-transition; - animation: $intro-transition; - -webkit-animation-delay: 0.45s; - animation-delay: 0.45s; - background-color: $footer-background-color; - - footer { - @include clearfix; - margin-inline: auto; - margin-top: 2em; - max-width: 100%; - padding: 0 1em 2em; - - @include breakpoint($x-large) { - max-width: $x-large; - } - } - - a { - color: inherit; - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } - - .fas, - .fab, - .far, - .fal { - color: $muted-text-color; - } -} - -.page__footer-copyright { - font-family: $global-font-family; - font-size: $type-size-7; -} - -.page__footer-follow { - ul { - margin: 0; - padding: 0; - list-style-type: none; - } - - li { - display: inline-block; - padding-top: 5px; - padding-bottom: 5px; - font-family: $sans-serif-narrow; - font-size: $type-size-6; - text-transform: uppercase; - } - - li + li::before { - content: ""; - padding-inline-end: 5px; - } - - a { - padding-inline-end: 10px; - font-weight: bold; - } - - .social-icons { - a { - white-space: nowrap; - } - } -} diff --git a/_sass/minimal-mistakes/_forms.scss b/_sass/minimal-mistakes/_forms.scss deleted file mode 100644 index af29b9f72138..000000000000 --- a/_sass/minimal-mistakes/_forms.scss +++ /dev/null @@ -1,348 +0,0 @@ -/* ========================================================================== - Forms - ========================================================================== */ - -form { - margin-bottom: 5px; - padding: 1em; - background-color: $form-background-color; - - fieldset { - margin-bottom: 5px; - padding: 0; - border-width: 0; - } - - legend { - display: block; - width: 100%; - margin-bottom: 5px * 2; - margin-inline-start: -7px; - padding: 0; - color: $text-color; - border: 0; - white-space: normal; - } - - p { - margin-bottom: (5px / 2); - } - - ul { - list-style-type: none; - margin: 0 0 5px 0; - padding: 0; - } - - br { - display: none; - } -} - -label, -input, -button, -select, -textarea { - vertical-align: baseline; -} - -input, -button, -select, -textarea { - box-sizing: border-box; - font-family: $sans-serif; -} - -label { - display: block; - margin-bottom: 0.25em; - color: $text-color; - cursor: pointer; - - small { - font-size: $type-size-6; - } - - input, - textarea, - select { - display: block; - } -} - -input, -textarea, -select { - display: inline-block; - width: 100%; - padding: 0.25em; - margin-bottom: 0.5em; - color: $text-color; - background-color: $background-color; - border: $border-color; - border-radius: $border-radius; - box-shadow: $box-shadow; -} - -.input-mini { - width: 60px; -} - -.input-small { - width: 90px; -} - -input[type="image"], -input[type="checkbox"], -input[type="radio"] { - width: auto; - height: auto; - padding: 0; - margin: 3px 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; -} - -input[type="image"] { - border: 0; -} - -input[type="file"] { - width: auto; - padding: initial; - line-height: initial; - border: initial; - background-color: transparent; - background-color: initial; - box-shadow: none; -} - -input[type="button"], -input[type="reset"], -input[type="submit"] { - width: auto; - height: auto; - cursor: pointer; -} - -select { - width: auto; - background-color: #fff; -} - -select[multiple], -select[size] { - height: auto; -} - -textarea { - resize: vertical; - height: auto; - overflow: auto; - vertical-align: top; -} - -input[type="hidden"] { - display: none; -} - -.form { - position: relative; -} - -.radio, -.checkbox { - padding-inline-start: 18px; - font-weight: normal; -} - -.radio input[type="radio"], -.checkbox input[type="checkbox"] { - float: inline-start; - margin-inline-start: -18px; -} - -.radio.inline, -.checkbox.inline { - display: inline-block; - padding-top: 5px; - margin-bottom: 0; - vertical-align: middle; -} - -.radio.inline + .radio.inline, -.checkbox.inline + .checkbox.inline { - margin-inline-start: 10px; -} - -/* - Disabled state - ========================================================================== */ - -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - opacity: 0.5; - cursor: not-allowed; -} - -/* - Focus & active state - ========================================================================== */ - -input:focus, -textarea:focus { - border-color: $primary-color; - outline: 0; - outline: thin dotted \9; - box-shadow: inset 0 1px 3px rgba($text-color, 0.06), - 0 0 5px rgba($primary-color, 0.7); -} - -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus, -select:focus { - box-shadow: none; -} - -/* - Help text - ========================================================================== */ - -.help-block, -.help-inline { - color: $muted-text-color; -} - -.help-block { - display: block; - margin-bottom: 1em; - line-height: 1em; -} - -.help-inline { - display: inline-block; - vertical-align: middle; - padding-inline-start: 5px; -} - -/* - .form-group - ========================================================================== */ - -.form-group { - margin-bottom: 5px; - padding: 0; - border-width: 0; -} - -/* - .form-inline - ========================================================================== */ - -.form-inline input, -.form-inline textarea, -.form-inline select { - display: inline-block; - margin-bottom: 0; -} - -.form-inline label { - display: inline-block; -} - -.form-inline .radio, -.form-inline .checkbox, -.form-inline .radio { - padding-inline-start: 0; - margin-bottom: 0; - vertical-align: middle; -} - -.form-inline .radio input[type="radio"], -.form-inline .checkbox input[type="checkbox"] { - float: inline-start; - margin-inline-start: 0; - margin-inline-end: 3px; -} - -/* - .form-search - ========================================================================== */ - -.form-search input, -.form-search textarea, -.form-search select { - display: inline-block; - margin-bottom: 0; -} - -.form-search .search-query { - padding-inline: 14px; - margin-bottom: 0; - border-radius: 14px; -} - -.form-search label { - display: inline-block; -} - -.form-search .radio, -.form-search .checkbox, -.form-inline .radio { - padding-inline-start: 0; - margin-bottom: 0; - vertical-align: middle; -} - -.form-search .radio input[type="radio"], -.form-search .checkbox input[type="checkbox"] { - float: inline-start; - margin-inline-start: 0; - margin-inline-end: 3px; -} - -/* - .form--loading - ========================================================================== */ - -.form--loading::before { - content: ""; -} - -.form--loading .form__spinner { - display: block; -} - -.form::before { - position: absolute; - top: 0; - inset-inline-start: 0; - width: 100%; - height: 100%; - background-color: rgba(255, 255, 255, 0.7); - z-index: 10; -} - -.form__spinner { - display: none; - position: absolute; - top: 50%; - inset-inline-start: 50%; - z-index: 11; -} diff --git a/_sass/minimal-mistakes/_masthead.scss b/_sass/minimal-mistakes/_masthead.scss deleted file mode 100644 index 80b0ed57ab40..000000000000 --- a/_sass/minimal-mistakes/_masthead.scss +++ /dev/null @@ -1,91 +0,0 @@ -/* ========================================================================== - MASTHEAD - ========================================================================== */ - -.masthead { - position: relative; - border-bottom: 1px solid $border-color; - -webkit-animation: $intro-transition; - animation: $intro-transition; - -webkit-animation-delay: 0.15s; - animation-delay: 0.15s; - z-index: 20; - - &__inner-wrap { - @include clearfix; - margin-inline: auto; - padding: 1em; - max-width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - font-family: $sans-serif-narrow; - - @include breakpoint($x-large) { - max-width: $max-width; - } - - nav { - z-index: 10; - } - - a { - text-decoration: none; - } - } -} - -.site-logo img { - max-height: 2rem; -} - -.site-title { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-item-align: center; - align-self: center; - font-weight: bold; - // z-index: 20; -} - -.site-subtitle { - display: block; - font-size: $type-size-8; -} - -.masthead__menu { - float: inline-start; - margin-inline: 0; - width: 100%; - clear: both; - - .site-nav { - margin-inline-start: 0; - - @include breakpoint($small) { - float: inline-end; - } - } - - ul { - margin: 0; - padding: 0; - clear: both; - list-style-type: none; - } -} - -.masthead__menu-item { - display: block; - list-style-type: none; - white-space: nowrap; - - &--lg { - padding-inline-end: 2em; - font-weight: 700; - } -} diff --git a/_sass/minimal-mistakes/_mixins.scss b/_sass/minimal-mistakes/_mixins.scss deleted file mode 100644 index 4aa9eb09ca80..000000000000 --- a/_sass/minimal-mistakes/_mixins.scss +++ /dev/null @@ -1,92 +0,0 @@ -/* ========================================================================== - MIXINS - ========================================================================== */ - -%tab-focus { - /* Default*/ - outline: thin dotted $focus-color; - /* Webkit*/ - outline: 5px auto $focus-color; - outline-offset: -2px; -} - -/* - em function - ========================================================================== */ - -@function em($target, $context: $doc-font-size) { - @return ($target / $context) * 1em; -} - - -/* - Bourbon clearfix - ========================================================================== */ - -/* - * Provides an easy way to include a clearfix for containing floats. - * link http://cssmojo.com/latest_new_clearfix_so_far/ - * - * example scss - Usage - * - * .element { - * @include clearfix; - * } - * - * example css - CSS Output - * - * .element::after { - * clear: both; - * content: ""; - * display: table; - * } -*/ - -@mixin clearfix { - clear: both; - - &::after { - clear: both; - content: ""; - display: table; - } -} - -/* - Compass YIQ Color Contrast - https://github.com/easy-designs/yiq-color-contrast - ========================================================================== */ - -@function yiq-is-light( - $color, - $threshold: $yiq-contrasted-threshold -) { - $red: red($color); - $green: green($color); - $blue: blue($color); - - $yiq: (($red*299)+($green*587)+($blue*114))/1000; - - @if $yiq-debug { @debug $yiq, $threshold; } - - @return if($yiq >= $threshold, true, false); -} - -@function yiq-contrast-color( - $color, - $dark: $yiq-contrasted-dark-default, - $light: $yiq-contrasted-light-default, - $threshold: $yiq-contrasted-threshold -) { - @return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default); -} - -@mixin yiq-contrasted( - $background-color, - $dark: $yiq-contrasted-dark-default, - $light: $yiq-contrasted-light-default, - $threshold: $yiq-contrasted-threshold -) { - background-color: $background-color; - color: yiq-contrast-color($background-color, $dark, $light, $threshold); -} \ No newline at end of file diff --git a/_sass/minimal-mistakes/_navigation.scss b/_sass/minimal-mistakes/_navigation.scss deleted file mode 100644 index 3ba1b66deaa0..000000000000 --- a/_sass/minimal-mistakes/_navigation.scss +++ /dev/null @@ -1,571 +0,0 @@ -/* ========================================================================== - NAVIGATION - ========================================================================== */ - -/* - Breadcrumb navigation links - ========================================================================== */ - -.breadcrumbs { - @include clearfix; - margin: 0 auto; - max-width: 100%; - padding-inline: 1em; - font-family: $sans-serif; - -webkit-animation: $intro-transition; - animation: $intro-transition; - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; - - @include breakpoint($x-large) { - max-width: $x-large; - } - - ol { - padding: 0; - list-style: none; - font-size: $type-size-6; - - @include breakpoint($large) { - float: inline-end; - width: calc(100% - #{$right-sidebar-width-narrow}); - } - - @include breakpoint($x-large) { - width: calc(100% - #{$right-sidebar-width}); - } - } - - li { - display: inline; - } - - .current { - font-weight: bold; - } -} - -/* - Post pagination navigation links - ========================================================================== */ - -.pagination { - @include clearfix(); - float: inline-start; - margin-top: 1em; - padding-top: 1em; - width: 100%; - - ul { - margin: 0; - padding: 0; - list-style-type: none; - font-family: $sans-serif; - } - - li { - display: block; - float: inline-start; - margin-inline-start: -1px; - - a { - display: block; - margin-bottom: 0.25em; - padding: 0.5em 1em; - font-family: $sans-serif; - font-size: 14px; - font-weight: bold; - line-height: 1.5; - text-align: center; - text-decoration: none; - color: $muted-text-color; - border: 1px solid mix(#000, $border-color, 25%); - border-radius: 0; - - &:hover { - color: $link-color-hover; - } - - &.current, - &.current.disabled { - color: #fff; - background: $primary-color; - } - - &.disabled { - color: rgba($muted-text-color, 0.5); - pointer-events: none; - cursor: not-allowed; - } - } - - &:first-child { - margin-inline-start: 0; - - a { - border-start-start-radius: $border-radius; - border-end-start-radius: $border-radius; - } - } - - &:last-child { - a { - border-start-end-radius: $border-radius; - border-end-end-radius: $border-radius; - } - } - } - - /* next/previous buttons */ - &--pager { - display: block; - padding: 1em 2em; - float: inline-start; - width: 50%; - font-family: $sans-serif; - font-size: $type-size-5; - font-weight: bold; - text-align: center; - text-decoration: none; - color: $muted-text-color; - border: 1px solid mix(#000, $border-color, 25%); - border-radius: $border-radius; - - &:hover { - @include yiq-contrasted($muted-text-color); - } - - &:first-child { - border-start-end-radius: 0; - border-end-end-radius: 0; - } - - &:last-child { - margin-inline-start: -1px; - border-start-start-radius: 0; - border-end-start-radius: 0; - } - - &.disabled { - color: rgba($muted-text-color, 0.5); - pointer-events: none; - cursor: not-allowed; - } - } -} - -.page__content + .pagination, -.page__meta + .pagination, -.page__share + .pagination, -.page__comments + .pagination { - margin-top: 2em; - padding-top: 2em; - border-top: 1px solid $border-color; -} - -/* - Priority plus navigation - ========================================================================== */ - -.greedy-nav { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-height: $nav-height; - background: $background-color; - - a { - display: block; - margin: 0 1rem; - color: $masthead-link-color; - text-decoration: none; - -webkit-transition: none; - transition: none; - - &:hover { - color: $masthead-link-color-hover; - } - - &.site-logo { - margin-inline-start: 0; - margin-inline-end: 0.5rem; - } - - &.site-title { - margin-inline-start: 0; - } - } - - img { - -webkit-transition: none; - transition: none; - } - - &__toggle { - -ms-flex-item-align: center; - align-self: center; - height: $nav-toggle-height; - border: 0; - outline: none; - background-color: transparent; - cursor: pointer; - } - - .visible-links { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow: hidden; - - li { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - } - - a { - position: relative; - - &:before { - content: ""; - position: absolute; - inset-inline-start: 0; - bottom: 0; - height: 4px; - background: $primary-color; - width: 100%; - -webkit-transition: $global-transition; - transition: $global-transition; - -webkit-transform: scaleX(0) translate3d(0, 0, 0); - transform: scaleX(0) translate3d(0, 0, 0); // hide - } - - &:hover:before { - -webkit-transform: scaleX(1); - -ms-transform: scaleX(1); - transform: scaleX(1); // reveal - } - } - } - - .hidden-links { - position: absolute; - top: 100%; - inset-inline-end: 0; - margin-top: 15px; - padding: 5px; - border: 1px solid $border-color; - border-radius: $border-radius; - background: $background-color; - -webkit-box-shadow: 0 2px 4px 0 rgba(#000, 0.16), - 0 2px 10px 0 rgba(#000, 0.12); - box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12); - - &.hidden { - display: none; - } - - a { - margin: 0; - padding: 10px 20px; - font-size: $type-size-5; - - &:hover { - color: $masthead-link-color-hover; - background: $navicon-link-color-hover; - } - } - - &::before { - content: ""; - position: absolute; - top: -11px; - inset-inline-end: 10px; - width: 0; - border-style: solid; - border-width: 0 10px 10px; - border-color: $border-color transparent; - display: block; - z-index: 0; - } - - &::after { - content: ""; - position: absolute; - top: -10px; - inset-inline-end: 10px; - width: 0; - border-style: solid; - border-width: 0 10px 10px; - border-color: $background-color transparent; - display: block; - z-index: 1; - } - - li { - display: block; - border-bottom: 1px solid $border-color; - - &:last-child { - border-bottom: none; - } - } - } -} - -.no-js { - .greedy-nav { - .visible-links { - -ms-flex-wrap: wrap; - flex-wrap: wrap; - overflow: visible; - } - } -} - -/* - Navigation list - ========================================================================== */ - -.nav__list { - margin-bottom: 1.5em; - - input[type="checkbox"], - label { - display: none; - } - - @include breakpoint(max-width $large - 1px) { - label { - position: relative; - display: inline-block; - padding: 0.5em 2.5em 0.5em 1em; - color: $gray; - font-size: $type-size-6; - font-weight: bold; - border: 1px solid $light-gray; - border-radius: $border-radius; - z-index: 20; - -webkit-transition: 0.2s ease-out; - transition: 0.2s ease-out; - cursor: pointer; - - &::before, - &::after { - content: ""; - position: absolute; - inset-inline-end: 1em; - top: 1.25em; - width: 0.75em; - height: 0.125em; - line-height: 1; - background-color: $gray; - -webkit-transition: 0.2s ease-out; - transition: 0.2s ease-out; - } - - &:after { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - } - - &:hover { - color: #fff; - border-color: $gray; - background-color: mix(white, #000, 20%); - - &:before, - &:after { - background-color: #fff; - } - } - } - - /* selected*/ - input:checked + label { - color: white; - background-color: mix(white, #000, 20%); - - &:before, - &:after { - background-color: #fff; - } - } - - /* on hover show expand*/ - label:hover:after { - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - } - - input:checked + label:hover:after { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - } - - ul { - margin-bottom: 1em; - } - - a { - display: block; - padding: 0.25em 0; - - @include breakpoint($large) { - padding-top: 0.125em; - padding-bottom: 0.125em; - } - - &:hover { - text-decoration: underline; - } - } - } -} - -.nav__list .nav__items { - margin: 0; - font-size: 1.25rem; - - a { - color: inherit; - } - - .active { - margin-inline-start: -0.5em; - padding-inline: 0.5em; - font-weight: bold; - } - - @include breakpoint(max-width $large - 1px) { - position: relative; - max-height: 0; - opacity: 0%; - overflow: hidden; - z-index: 10; - -webkit-transition: 0.3s ease-in-out; - transition: 0.3s ease-in-out; - -webkit-transform: translate(0, 10%); - -ms-transform: translate(0, 10%); - transform: translate(0, 10%); - } -} - -@include breakpoint(max-width $large - 1px) { - .nav__list input:checked ~ .nav__items { - -webkit-transition: 0.5s ease-in-out; - transition: 0.5s ease-in-out; - max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/ - overflow: visible; - opacity: 1; - margin-top: 1em; - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); - } -} - -.nav__title { - margin: 0; - padding: 0.5rem 0.75rem; - font-family: $sans-serif-narrow; - font-size: $type-size-5; - font-weight: bold; -} - -.nav__sub-title { - display: block; - margin: 0.5rem 0; - padding: 0.25rem 0; - font-family: $sans-serif-narrow; - font-size: $type-size-6; - font-weight: bold; - text-transform: uppercase; - border-bottom: 1px solid $border-color; -} - -/* - Table of contents navigation - ========================================================================== */ - -.toc { - font-family: $sans-serif-narrow; - color: $gray; - background-color: $background-color; - border: 1px solid $border-color; - border-radius: $border-radius; - -webkit-box-shadow: $box-shadow; - box-shadow: $box-shadow; - - .nav__title { - color: #fff; - font-size: $type-size-6; - background: $primary-color; - border-start-start-radius: $border-radius; - border-start-end-radius: $border-radius; - } - - // Scrollspy marks toc items as .active when they are in focus - .active a { - @include yiq-contrasted($active-color); - } -} - -.toc__menu { - margin: 0; - padding: 0; - width: 100%; - list-style: none; - font-size: $type-size-6; - - @include breakpoint($large) { - font-size: $type-size-7; - } - - a { - display: block; - padding: 0.25rem 0.75rem; - color: $muted-text-color; - font-weight: bold; - line-height: 1.5; - border-bottom: 1px solid $border-color; - - &:hover { - color: $text-color; - } - } - - li ul > li a { - padding-inline-start: 1.25rem; - font-weight: normal; - } - - li ul li ul > li a { - padding-inline-start: 1.75rem; - } - - li ul li ul li ul > li a { - padding-inline-start: 2.25rem; - } - - li ul li ul li ul li ul > li a { - padding-inline-start: 2.75rem; - } - - li ul li ul li ul li ul li ul > li a { - padding-inline-start: 3.25rem; - } -} diff --git a/_sass/minimal-mistakes/_notices.scss b/_sass/minimal-mistakes/_notices.scss deleted file mode 100644 index 6b4e40128803..000000000000 --- a/_sass/minimal-mistakes/_notices.scss +++ /dev/null @@ -1,109 +0,0 @@ -/* ========================================================================== - NOTICE TEXT BLOCKS - ========================================================================== */ - -/** - * Default Kramdown usage (no indents!): - *
    - * #### Headline for the Notice - * Text for the notice - *
    - */ - -@mixin notice($notice-color) { - margin: 2em 0 !important; /* override*/ - padding: 1em; - color: $text-color; - font-family: $global-font-family; - font-size: $type-size-6 !important; - text-indent: initial; /* override*/ - 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 { - /* using at-root to override .page-content h4 font size*/ - margin-bottom: 0; - font-size: 1em; - } - - p { - &:last-child { - margin-bottom: 0 !important; /* override*/ - } - } - - h4 + p { - /* remove space above paragraphs that appear directly after notice headline*/ - margin-top: 0; - padding-top: 0; - } - - a { - color: mix(#000, $notice-color, 10%); - - &:hover { - color: mix(#000, $notice-color, 50%); - } - } - - @at-root #{selector-unify(&, "blockquote")} { - border-inline-start-color: mix(#000, $notice-color, 10%); - } - - code { - background-color: mix($background-color, $notice-color, $code-notice-background-mix) - } - - pre code { - background-color: inherit; - } - - ul { - &:last-child { - margin-bottom: 0; /* override*/ - } - } -} - -/* Default notice */ - -.notice { - @include notice($light-gray); -} - -/* Primary notice */ - -.notice--primary { - @include notice($primary-color); -} - -/* Info notice */ - -.notice--info { - @include notice($info-color); -} - -/* Warning notice */ - -.notice--warning { - @include notice($warning-color); -} - -/* Success notice */ - -.notice--success { - @include notice($success-color); -} - -/* Danger notice */ - -.notice--danger { - @include notice($danger-color); -} diff --git a/_sass/minimal-mistakes/_page.scss b/_sass/minimal-mistakes/_page.scss deleted file mode 100644 index e33888400eed..000000000000 --- a/_sass/minimal-mistakes/_page.scss +++ /dev/null @@ -1,561 +0,0 @@ -/* ========================================================================== - SINGLE PAGE/POST - ========================================================================== */ - -#main { - @include clearfix; - margin-inline: auto; - padding-inline: 1em; - -webkit-animation: $intro-transition; - animation: $intro-transition; - max-width: 100%; - -webkit-animation-delay: 0.15s; - animation-delay: 0.15s; - - @include breakpoint($x-large) { - max-width: $max-width; - } -} - -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: inline-end; - width: calc(100% - #{$right-sidebar-width-narrow}); - padding-inline-end: $right-sidebar-width-narrow; - } - - @include breakpoint($x-large) { - width: calc(100% - #{$right-sidebar-width}); - padding-inline-end: $right-sidebar-width; - } - - .page__inner-wrap { - float: inline-start; - margin-top: 1em; - margin-inline: 0; - width: 100%; - clear: both; - - .page__content, - .page__meta, - .page__share { - position: relative; - float: inline-start; - margin-inline: 0; - width: 100%; - clear: both; - } - } -} - -.page__title { - margin-top: 0; - line-height: 1; - - a { - color: $text-color; - text-decoration: none; - } - - & + .page__meta { - margin-top: -0.5em; - } -} - -.page__lead { - font-family: $global-font-family; - font-size: $type-size-4; -} - -.page__content { - h2 { - padding-bottom: 0.5em; - 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 { - font-size: 1em; - } - - /* paragraph indents */ - p { - margin: 0 0 $indent-var; - - /* sibling indentation*/ - @if $paragraph-indent == true { - & + p { - text-indent: $indent-var; - margin-top: -($indent-var); - } - } - } - - a:not(.btn) { - &:hover { - text-decoration: underline; - - img { - box-shadow: 0 0 10px rgba(#000, 0.25); - } - } - } - - :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; - font-weight: bold; - } - - dd { - margin-inline-start: 1em; - font-family: $sans-serif; - font-size: $type-size-6; - } - - .small { - font-size: $type-size-6; - } - - /* blockquote citations */ - blockquote + .small { - margin-top: -1.5em; - padding-inline-start: 1.25rem; - } -} - -.page__hero { - position: relative; - margin-bottom: 2em; - @include clearfix; - -webkit-animation: $intro-transition; - animation: $intro-transition; - -webkit-animation-delay: 0.25s; - animation-delay: 0.25s; - - &--overlay { - position: relative; - margin-bottom: 2em; - padding: 3em 0; - @include clearfix; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - -webkit-animation: $intro-transition; - animation: $intro-transition; - -webkit-animation-delay: 0.25s; - animation-delay: 0.25s; - - a { - color: #fff; - } - - .wrapper { - padding-inline: 1em; - - @include breakpoint($x-large) { - max-width: $x-large; - } - } - - .page__title, - .page__meta, - .page__lead, - .btn { - color: #fff; - text-shadow: 1px 1px 4px rgba(#000, 0.5); - } - - .page__lead { - max-width: $medium; - } - - .page__title { - font-size: $type-size-2; - - @include breakpoint($small) { - font-size: $type-size-1; - } - } - } -} - -.page__hero-image { - width: 100%; - height: auto; - -ms-interpolation-mode: bicubic; -} - -.page__hero-caption { - position: absolute; - bottom: 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: end; - z-index: 5; - opacity: 0.5; - border-radius: $border-radius 0 0 0; - - @include breakpoint($large) { - padding: 5px 10px; - } - - a { - color: #fff; - text-decoration: none; - } -} - -/* - Social sharing - ========================================================================== */ - -.page__share { - margin-top: 2em; - padding-top: 1em; - border-top: 1px solid $border-color; - - @include breakpoint(max-width $small) { - .btn span { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - } - } -} - -.page__share-title { - margin-bottom: 10px; - font-size: $type-size-6; - text-transform: uppercase; -} - -/* - Page meta - ========================================================================== */ - -.page__meta { - margin-top: 2em; - color: $muted-text-color; - font-family: $sans-serif; - font-size: $type-size-6; - - p { - margin: 0; - } - - a { - color: inherit; - } -} - -.page__meta-title { - margin-bottom: 10px; - font-size: $type-size-6; - text-transform: uppercase; -} - -.page__meta-sep::before { - content: "\2022"; - padding-inline: 0.5em; -} - -/* - Page taxonomy - ========================================================================== */ - -.page__taxonomy { - .sep { - display: none; - } - - strong { - margin-inline-end: 10px; - } -} - -.page__taxonomy-item { - display: inline-block; - margin-inline-end: 5px; - margin-bottom: 8px; - padding: 5px 10px; - text-decoration: none; - border: 1px solid mix(#000, $border-color, 25%); - border-radius: $border-radius; - - &:hover { - text-decoration: none; - color: $link-color-hover; - } -} - -.taxonomy__section { - margin-bottom: 2em; - padding-bottom: 1em; - - &:not(:last-child) { - border-bottom: solid 1px $border-color; - } - - .archive__item-title { - margin-top: 0; - } - - .archive__subtitle { - clear: both; - border: 0; - } - - + .taxonomy__section { - margin-top: 2em; - } -} - -.taxonomy__title { - margin-bottom: 0.5em; - color: $muted-text-color; -} - -.taxonomy__count { - color: $muted-text-color; -} - -.taxonomy__index { - display: grid; - grid-column-gap: 2em; - grid-template-columns: repeat(2, 1fr); - margin: 1.414em 0; - padding: 0; - font-size: 0.75em; - list-style: none; - - @include breakpoint($large) { - grid-template-columns: repeat(3, 1fr); - } - - a { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0.25em 0; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - color: inherit; - text-decoration: none; - border-bottom: 1px solid $border-color; - } -} - -.back-to-top { - display: block; - clear: both; - color: $muted-text-color; - font-size: 0.6em; - text-transform: uppercase; - text-align: end; - text-decoration: none; -} - -/* - Comments - ========================================================================== */ - -.page__comments { - float: inline-start; - margin-inline: 0; - width: 100%; - clear: both; -} - -.page__comments-title { - margin-top: 2rem; - margin-bottom: 10px; - padding-top: 2rem; - font-size: $type-size-6; - border-top: 1px solid $border-color; - text-transform: uppercase; -} - -.page__comments-form { - -webkit-transition: $global-transition; - transition: $global-transition; - - &.disabled { - input, - button, - textarea, - label { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - box-shadow: none; - opacity: 0.65; - } - } -} - -.comment { - @include clearfix(); - margin: 1em 0; - - &:not(:last-child) { - border-bottom: 1px solid $border-color; - } -} - -.comment__avatar-wrapper { - float: inline-start; - width: 60px; - height: 60px; - - @include breakpoint($large) { - width: 100px; - height: 100px; - } -} - -.comment__avatar { - width: 40px; - height: 40px; - border-radius: 50%; - - @include breakpoint($large) { - width: 80px; - height: 80px; - padding: 5px; - border: 1px solid $border-color; - } -} - -.comment__content-wrapper { - float: inline-end; - width: calc(100% - 60px); - - @include breakpoint($large) { - width: calc(100% - 100px); - } -} - -.comment__author { - margin: 0; - - a { - text-decoration: none; - } -} - -.comment__date { - @extend .page__meta; - margin: 0; - - a { - text-decoration: none; - } -} - -/* - Related - ========================================================================== */ - -.page__related { - @include clearfix(); - float: inline-start; - margin-top: 2em; - padding-top: 1em; - border-top: 1px solid $border-color; - - @include breakpoint($large) { - float: inline-end; - width: calc(100% - #{$right-sidebar-width-narrow}); - } - - @include breakpoint($x-large) { - width: calc(100% - #{$right-sidebar-width}); - } - - a { - color: inherit; - text-decoration: none; - } -} - -.page__related-title { - margin-bottom: 10px; - font-size: $type-size-6; - text-transform: uppercase; -} - -/* - Wide Pages - ========================================================================== */ - -.wide { - .page, .page__related { - @include breakpoint($large) { - padding-inline-end: 0; - } - - @include breakpoint($x-large) { - padding-inline-end: 0; - } - } -} diff --git a/_sass/minimal-mistakes/_print.scss b/_sass/minimal-mistakes/_print.scss deleted file mode 100644 index b93f1d404e4d..000000000000 --- a/_sass/minimal-mistakes/_print.scss +++ /dev/null @@ -1,252 +0,0 @@ -/* ========================================================================== - PRINT STYLES - ========================================================================== */ - -@media print { - - [hidden] { - display: none; - } - - * { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - } - - html { - margin: 0; - padding: 0; - min-height: auto !important; - font-size: 16px; - } - - body { - margin: 0 auto; - background: #fff !important; - color: #000 !important; - font-size: 1rem; - line-height: 1.5; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - color: #000; - line-height: 1.2; - margin-bottom: 0.75rem; - margin-top: 0; - } - - h1 { - font-size: 2.5rem; - } - - h2 { - font-size: 2rem; - } - - h3 { - font-size: 1.75rem; - } - - h4 { - font-size: 1.5rem; - } - - h5 { - font-size: 1.25rem; - } - - h6 { - font-size: 1rem; - } - - a, - a:visited { - color: #000; - text-decoration: underline; - word-wrap: break-word; - } - - table { - border-collapse: collapse; - } - - thead { - display: table-header-group; - } - - table, - th, - td { - border-bottom: 1px solid #000; - } - - td, - th { - padding: 8px 16px; - } - - img { - border: 0; - display: block; - max-width: 100% !important; - vertical-align: middle; - } - - hr { - border: 0; - border-bottom: 2px solid #bbb; - height: 0; - margin: 2.25rem 0; - padding: 0; - } - - dt { - font-weight: bold; - } - - dd { - margin: 0; - margin-bottom: 0.75rem; - } - - abbr[title], - acronym[title] { - border: 0; - text-decoration: none; - } - - table, - blockquote, - pre, - code, - figure, - li, - hr, - ul, - ol, - a, - tr { - page-break-inside: avoid; - } - - h2, - h3, - h4, - p, - a { - orphans: 3; - widows: 3; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - page-break-after: avoid; - page-break-inside: avoid; - } - - h1 + p, - h2 + p, - h3 + p { - page-break-before: avoid; - } - - img { - page-break-after: auto; - page-break-before: auto; - page-break-inside: avoid; - } - - pre { - white-space: pre-wrap !important; - word-wrap: break-word; - } - - a[href^='http://']:after, - a[href^='https://']:after, - a[href^='ftp://']:after { - content: " (" attr(href) ")"; - font-size: 80%; - } - - abbr[title]:after, - acronym[title]:after { - content: " (" attr(title) ")"; - } - - #main { - max-width: 100%; - } - - .page { - margin: 0; - padding: 0; - width: 100%; - } - - .page-break, - .page-break-before { - page-break-before: always; - } - - .page-break-after { - page-break-after: always; - } - - .no-print { - display: none; - } - - a.no-reformat:after { - content: ''; - } - - abbr[title].no-reformat:after, - acronym[title].no-reformat:after { - content: ''; - } - - .page__hero-caption { - color: #000 !important; - background: #fff !important; - opacity: 1; - - a { - color: #000 !important; - } - } - -/* - Hide the following elements on print - ========================================================================== */ - - .masthead, - .toc, - .page__share, - .page__related, - .pagination, - .ads, - .page__footer, - .page__comments-form, - .author__avatar, - .author__content, - .author__urls-wrapper, - .nav__list, - .sidebar, - .adsbygoogle { - display: none !important; - height: 1px !important; - } -} \ No newline at end of file diff --git a/_sass/minimal-mistakes/_reset.scss b/_sass/minimal-mistakes/_reset.scss deleted file mode 100644 index 6380590318c5..000000000000 --- a/_sass/minimal-mistakes/_reset.scss +++ /dev/null @@ -1,184 +0,0 @@ -/* ========================================================================== - STYLE RESETS - ========================================================================== */ - -* { box-sizing: border-box; } - -html { - /* apply a natural box layout model to all elements */ - box-sizing: border-box; - background-color: $background-color; - font-size: 16px; - - @include breakpoint($medium) { - font-size: 18px; - } - - @include breakpoint($large) { - font-size: 20px; - } - - @include breakpoint($x-large) { - font-size: 22px; - } - - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -/* Remove margin */ - -body { margin: 0; } - -/* Selected elements */ - -::-moz-selection { - color: #fff; - background: #000; -} - -::selection { - color: #fff; - background: #000; -} - -/* Display HTML5 elements in IE6-9 and FF3 */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section { - display: block; -} - -/* Display block in IE6-9 and FF3 */ - -audio, -canvas, -video { - display: inline-block; -} - -/* Prevents modern browsers from displaying 'audio' without controls */ - -audio:not([controls]) { - display: none; -} - -a { - color: $link-color; -} - -/* Apply focus state */ - -a:focus { - @extend %tab-focus; -} - -/* Remove outline from links */ - -a:hover, -a:active { - outline: 0; -} - -/* Prevent sub and sup affecting line-height in all browsers */ - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* img border in anchor's and image quality */ - -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; /* part 1: Set a maximum relative to the parent*/ - width: auto\9; /* IE7-8 need help adjusting responsive images*/ - height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/ - - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} - -/* Prevent max-width from affecting Google Maps */ - -#map_canvas img, -.google-maps img { - max-width: none; -} - -/* Consistent form font size in all browsers, margin changes, misc */ - -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} - -button, -input { - line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/ -} - -button::-moz-focus-inner, -input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/ - padding: 0; - border: 0; -} - -button, -html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/ - cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/ -} - -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/ -} - -input[type="search"] { /* Appearance in Safari/Chrome*/ - box-sizing: border-box; - -webkit-appearance: textfield; -} - -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/ -} - -textarea { - overflow: auto; /* remove vertical scrollbar in IE6-9*/ - vertical-align: top; /* readability and alignment cross-browser*/ -} diff --git a/_sass/minimal-mistakes/_search.scss b/_sass/minimal-mistakes/_search.scss deleted file mode 100644 index 4a3a2b37e997..000000000000 --- a/_sass/minimal-mistakes/_search.scss +++ /dev/null @@ -1,129 +0,0 @@ -/* ========================================================================== - SEARCH - ========================================================================== */ - -.layout--search { - .archive__item-teaser { - margin-bottom: 0.25em; - } -} - -.search__toggle { - margin-inline: 1rem; - height: $nav-toggle-height; - border: 0; - outline: none; - color: $primary-color; - background-color: transparent; - cursor: pointer; - -webkit-transition: 0.2s; - transition: 0.2s; - - &:hover { - color: mix(#000, $primary-color, 25%); - } -} - -.search-icon { - width: 100%; - height: 100%; -} - -.search-content { - display: none; - visibility: hidden; - padding-top: 1em; - padding-bottom: 1em; - - &__inner-wrap { - width: 100%; - margin-inline: auto; - padding-inline: 1em; - -webkit-animation: $intro-transition; - animation: $intro-transition; - -webkit-animation-delay: 0.15s; - animation-delay: 0.15s; - - @include breakpoint($x-large) { - max-width: $max-width; - } - - } - - &__form { - background-color: transparent; - } - - .search-input { - display: block; - margin-bottom: 0; - padding: 0; - border: none; - outline: none; - box-shadow: none; - background-color: transparent; - font-size: $type-size-3; - - @include breakpoint($large) { - font-size: $type-size-2; - } - - @include breakpoint($x-large) { - font-size: $type-size-1; - } - } - - &.is--visible { - display: block; - visibility: visible; - - &::after { - content: ""; - display: block; - } - } - - .results__found { - margin-top: 0.5em; - font-size: $type-size-6; - } - - .archive__item { - margin-bottom: 2em; - - @include breakpoint($large) { - width: 75%; - } - - @include breakpoint($x-large) { - width: 50%; - } - } - - .archive__item-title { - margin-top: 0; - } - - .archive__item-excerpt { - margin-bottom: 0; - } -} - -/* Algolia search */ - -.ais-search-box { - max-width: 100% !important; - margin-bottom: 2em; -} - -.archive__item-title .ais-Highlight { - color: $primary-color; - font-style: normal; - text-decoration: underline; -} - -.archive__item-excerpt .ais-Highlight { - color: $primary-color; - font-style: normal; - font-weight: bold; -} diff --git a/_sass/minimal-mistakes/_sidebar.scss b/_sass/minimal-mistakes/_sidebar.scss deleted file mode 100644 index e51443527a62..000000000000 --- a/_sass/minimal-mistakes/_sidebar.scss +++ /dev/null @@ -1,349 +0,0 @@ -/* ========================================================================== - SIDEBAR - ========================================================================== */ - -/* - Default - ========================================================================== */ - -.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($large) { - float: inline-start; - width: calc(#{$right-sidebar-width-narrow} - 1em); - opacity: 0.75; - -webkit-transition: opacity 0.2s ease-in-out; - transition: opacity 0.2s ease-in-out; - - &:hover { - opacity: 1; - } - - &.sticky { - overflow-y: auto; - /* calculate height of nav list - viewport height - nav height - masthead x-padding - */ - max-height: calc(100vh - #{$nav-height} - 2em); - } - } - - @include breakpoint($x-large) { - width: calc(#{$right-sidebar-width} - 1em); - } - - > * { - margin-top: 1em; - margin-bottom: 1em; - } - - h2, - h3, - h4, - h5, - h6 { - margin-bottom: 0; - font-family: $sans-serif-narrow; - } - - p, - li { - font-family: $sans-serif; - font-size: $type-size-6; - line-height: 1.5; - } - - img { - width: 100%; - - &.emoji { - width: 20px; - height: 20px; - } - } -} - -.sidebar__right { - margin-bottom: 1em; - - @include breakpoint($large) { - position: absolute; - top: 0; - inset-inline-end: 0; - width: $right-sidebar-width-narrow; - margin-inline-end: -1 * $right-sidebar-width-narrow; - padding-inline-start: 1em; - z-index: 10; - - &.sticky { - @include clearfix(); - position: -webkit-sticky; - position: sticky; - top: 2em; - float: inline-end; - - .toc { - .toc__menu { - overflow-y: auto; - max-height: calc(100vh - 7em); - } - } - } - } - - @include breakpoint($x-large) { - width: $right-sidebar-width; - margin-inline-end: -1 * $right-sidebar-width; - } -} - -.splash .sidebar__right { - @include breakpoint($large) { - position: relative; - float: inline-end; - margin-inline-end: 0; - } - - @include breakpoint($x-large) { - margin-inline-end: 0; - } -} - -/* - Author profile and links - ========================================================================== */ - -.author__avatar { - display: table-cell; - vertical-align: top; - width: 36px; - height: 36px; - - @include breakpoint($large) { - display: block; - width: auto; - height: auto; - } - - img { - max-width: 110px; - border-radius: 50%; - - @include breakpoint($large) { - padding: 5px; - border: 1px solid $border-color; - } - } -} - -.author__content { - display: table-cell; - vertical-align: top; - padding-inline: 15px 25px; - line-height: 1; - - @include breakpoint($large) { - display: block; - width: 100%; - padding-inline: 0; - } - - a { - color: inherit; - text-decoration: none; - } -} - -.author__name { - margin: 0; - - @include breakpoint($large) { - margin-top: 10px; - margin-bottom: 10px; - } -} -.sidebar .author__name { - font-family: $sans-serif; - font-size: $type-size-5; -} - -.author__bio { - margin: 0; - - @include breakpoint($large) { - margin-top: 10px; - margin-bottom: 20px; - } -} - -.author__urls-wrapper { - position: relative; - display: table-cell; - vertical-align: middle; - font-family: $sans-serif; - z-index: 20; - cursor: pointer; - - li:last-child { - a { - margin-bottom: 0; - } - } - - .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; - } - } -} - -.author__urls { - display: none; - position: absolute; - 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; - box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12); - cursor: default; - - &.is--visible { - display: block; - } - - @include breakpoint($large) { - display: block; - position: relative; - margin: 0; - padding: 0; - border: 0; - background: transparent; - box-shadow: none; - } - - &::before { - display: block; - content: ""; - position: absolute; - top: -11px; - inset-inline-start: calc(50% - 10px); - width: 0; - border-style: solid; - border-width: 0 10px 10px; - border-color: $border-color transparent; - z-index: 0; - - @include breakpoint($large) { - display: none; - } - } - - &:after { - display: block; - content: ""; - position: absolute; - top: -10px; - inset-inline-start: calc(50% - 10px); - width: 0; - border-style: solid; - border-width: 0 10px 10px; - border-color: $background-color transparent; - z-index: 1; - - @include breakpoint($large) { - display: none; - } - } - - ul { - padding: 10px; - list-style-type: none; - } - - li { - white-space: nowrap; - } - - a { - display: block; - margin-bottom: 5px; - padding-block: 2px; - padding-inline-end: 5px; - color: inherit; - font-size: $type-size-5; - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } -} - -/* - Wide Pages - ========================================================================== */ - -.wide .sidebar__right { - margin-bottom: 1em; - - @include breakpoint($large) { - position: initial; - top: initial; - inset-inline-end: initial; - width: initial; - margin-inline-end: initial; - padding-inline-start: initial; - z-index: initial; - - &.sticky { - float: none; - } - } - - @include breakpoint($x-large) { - width: initial; - margin-inline-end: initial; - } -} diff --git a/_sass/minimal-mistakes/_syntax.scss b/_sass/minimal-mistakes/_syntax.scss deleted file mode 100644 index 6d9102d6f663..000000000000 --- a/_sass/minimal-mistakes/_syntax.scss +++ /dev/null @@ -1,329 +0,0 @@ -/* ========================================================================== - Syntax highlighting - ========================================================================== */ - -div.highlighter-rouge, -figure.highlight { - position: relative; - margin-bottom: 1em; - background: $base00; - color: $base05; - font-family: $monospace; - font-size: $type-size-6; - line-height: 1.8; - border-radius: $border-radius; - - [dir=rtl] & { - direction: ltr; - text-align: start; - } - - > pre, - pre.highlight { - margin: 0; - padding: 1em; - } -} - -.highlight table { - margin-bottom: 0; - font-size: 1em; - border: 0; - - td { - padding: 0; - width: calc(100% - 1em); - border: 0; - - /* line numbers*/ - &.gutter, - &.rouge-gutter { - padding-inline-end: 1em; - width: 1em; - color: $base04; - border-inline-end: 1px solid $base04; - text-align: end; - } - - /* code */ - &.code, - &.rouge-code { - padding-inline-start: 1em; - } - } - - pre { - margin: 0; - } -} - -.highlight pre { - width: 100%; -} - -.highlight .hll { - background-color: $base06; -} -.highlight { - .c { - /* Comment */ - color: $base04; - } - .err { - /* Error */ - color: $base08; - } - .k { - /* Keyword */ - color: $base0e; - } - .l { - /* Literal */ - color: $base09; - } - .n { - /* Name */ - color: $base05; - } - .o { - /* Operator */ - color: $base0c; - } - .p { - /* Punctuation */ - color: $base05; - } - .cm { - /* Comment.Multiline */ - color: $base04; - } - .cp { - /* Comment.Preproc */ - color: $base04; - } - .c1 { - /* Comment.Single */ - color: $base04; - } - .cs { - /* Comment.Special */ - color: $base04; - } - .gd { - /* Generic.Deleted */ - color: $base08; - } - .ge { - /* Generic.Emph */ - font-style: italic; - } - .gh { - /* Generic.Heading */ - color: $base05; - font-weight: bold; - } - .gi { - /* Generic.Inserted */ - color: $base0b; - } - .gp { - /* Generic.Prompt */ - color: $base04; - font-weight: bold; - } - .gs { - /* Generic.Strong */ - font-weight: bold; - } - .gu { - /* Generic.Subheading */ - color: $base0c; - font-weight: bold; - } - .kc { - /* Keyword.Constant */ - color: $base0e; - } - .kd { - /* Keyword.Declaration */ - color: $base0e; - } - .kn { - /* Keyword.Namespace */ - color: $base0c; - } - .kp { - /* Keyword.Pseudo */ - color: $base0e; - } - .kr { - /* Keyword.Reserved */ - color: $base0e; - } - .kt { - /* Keyword.Type */ - color: $base0a; - } - .ld { - /* Literal.Date */ - color: $base0b; - } - .m { - /* Literal.Number */ - color: $base09; - } - .s { - /* Literal.String */ - color: $base0b; - } - .na { - /* Name.Attribute */ - color: $base0d; - } - .nb { - /* Name.Builtin */ - color: $base05; - } - .nc { - /* Name.Class */ - color: $base0a; - } - .no { - /* Name.Constant */ - color: $base08; - } - .nd { - /* Name.Decorator */ - color: $base0c; - } - .ni { - /* Name.Entity */ - color: $base05; - } - .ne { - /* Name.Exception */ - color: $base08; - } - .nf { - /* Name.Function */ - color: $base0d; - } - .nl { - /* Name.Label */ - color: $base05; - } - .nn { - /* Name.Namespace */ - color: $base0a; - } - .nx { - /* Name.Other */ - color: $base0d; - } - .py { - /* Name.Property */ - color: $base05; - } - .nt { - /* Name.Tag */ - color: $base0c; - } - .nv { - /* Name.Variable */ - color: $base08; - } - .ow { - /* Operator.Word */ - color: $base0c; - } - .w { - /* Text.Whitespace */ - color: $base05; - } - .mf { - /* Literal.Number.Float */ - color: $base09; - } - .mh { - /* Literal.Number.Hex */ - color: $base09; - } - .mi { - /* Literal.Number.Integer */ - color: $base09; - } - .mo { - /* Literal.Number.Oct */ - color: $base09; - } - .sb { - /* Literal.String.Backtick */ - color: $base0b; - } - .sc { - /* Literal.String.Char */ - color: $base05; - } - .sd { - /* Literal.String.Doc */ - color: $base04; - } - .s2 { - /* Literal.String.Double */ - color: $base0b; - } - .se { - /* Literal.String.Escape */ - color: $base09; - } - .sh { - /* Literal.String.Heredoc */ - color: $base0b; - } - .si { - /* Literal.String.Interpol */ - color: $base09; - } - .sx { - /* Literal.String.Other */ - color: $base0b; - } - .sr { - /* Literal.String.Regex */ - color: $base0b; - } - .s1 { - /* Literal.String.Single */ - color: $base0b; - } - .ss { - /* Literal.String.Symbol */ - color: $base0b; - } - .bp { - /* Name.Builtin.Pseudo */ - color: $base05; - } - .vc { - /* Name.Variable.Class */ - color: $base08; - } - .vg { - /* Name.Variable.Global */ - color: $base08; - } - .vi { - /* Name.Variable.Instance */ - color: $base08; - } - .il { - /* Literal.Number.Integer.Long */ - color: $base09; - } -} - -.gist { - th, td { - border-bottom: 0; - } -} diff --git a/_sass/minimal-mistakes/_tables.scss b/_sass/minimal-mistakes/_tables.scss deleted file mode 100644 index e2704ee81edc..000000000000 --- a/_sass/minimal-mistakes/_tables.scss +++ /dev/null @@ -1,39 +0,0 @@ -/* ========================================================================== - TABLES - ========================================================================== */ - -table { - display: block; - margin-bottom: 1em; - width: 100%; - font-family: $global-font-family; - font-size: $type-size-6; - border-collapse: collapse; - overflow-x: auto; - - & + table { - margin-top: 1em; - } -} - -thead { - background-color: $border-color; - border-bottom: 2px solid mix(#000, $border-color, 25%); -} - -th { - padding: 0.5em; - font-weight: bold; - text-align: start; -} - -td { - padding: 0.5em; - border-bottom: 1px solid mix(#000, $border-color, 25%); -} - -tr, -td, -th { - vertical-align: middle; -} diff --git a/_sass/minimal-mistakes/_utilities.scss b/_sass/minimal-mistakes/_utilities.scss deleted file mode 100644 index cd6e94b7fd1d..000000000000 --- a/_sass/minimal-mistakes/_utilities.scss +++ /dev/null @@ -1,568 +0,0 @@ -/* ========================================================================== - UTILITY CLASSES - ========================================================================== */ - -/* - Visibility - ========================================================================== */ - -/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */ - -.hidden, -.is--hidden { - display: none; - visibility: hidden; -} - -/* for preloading images */ - -.load { - display: none; -} - -.transparent { - opacity: 0; -} - -/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */ - -.visually-hidden, -.screen-reader-text, -.screen-reader-text span, -.screen-reader-shortcut { - position: absolute !important; - clip: rect(1px, 1px, 1px, 1px); - height: 1px !important; - width: 1px !important; - border: 0 !important; - overflow: hidden; -} - -body:hover .visually-hidden a, -body:hover .visually-hidden input, -body:hover .visually-hidden button { - display: none !important; -} - -/* screen readers */ - -.screen-reader-text:focus, -.screen-reader-shortcut:focus { - clip: auto !important; - height: auto !important; - width: auto !important; - display: block; - font-size: 1em; - font-weight: bold; - padding: 15px 23px 14px; - background: #fff; - z-index: 100000; - text-decoration: none; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); -} - -/* - Skip links - ========================================================================== */ - -.skip-link { - position: fixed; - z-index: 20; - margin: 0; - font-family: $sans-serif; - white-space: nowrap; -} - -.skip-link li { - height: 0; - width: 0; - list-style: none; -} - -/* - Type - ========================================================================== */ - -$text-alignments: left, right, start, end, center, justify; -@each $alignment in $text-alignments { - .text-#{$alignment} { - text-align: $alignment; - } -} - -.text-nowrap { - white-space: nowrap; -} - -/* - Task lists - ========================================================================== */ - -.task-list { - padding: 0; - - li { - list-style-type: none; - } - - .task-list-item-checkbox { - margin-inline-end: 0.5em; - opacity: 1; - } -} - -.task-list .task-list { - margin-inline-start: 1em; -} - -/* - Alignment - ========================================================================== */ - -/* clearfix */ - -.cf { - clear: both; -} - -.wrapper { - margin-inline: auto; - width: 100%; -} - -/* - Images - ========================================================================== */ - -/* image align left */ - -.align-left { - display: block; - margin-inline: auto; - - @include breakpoint($small) { - float: left; - margin-right: 1em; - } -} - -/* image align right */ - -.align-right { - display: block; - margin-inline: auto; - - @include breakpoint($small) { - float: right; - margin-left: 1em; - } -} - -/* image align center */ - -.align-center { - display: block; - margin-inline: auto; -} - -/* file page content container */ - -.full { - @include breakpoint($large) { - margin-inline-end: -1 * span(2.5 of 12) !important; - } -} - -/* - Icons - ========================================================================== */ - -.icon { - display: inline-block; - fill: currentColor; - width: 1em; - height: 1.1em; - line-height: 1; - position: relative; - top: -0.1em; - vertical-align: middle; -} - -/* social icons*/ - -.social-icons { - .fas, - .fab, - .far, - .fal { - color: $text-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; - } - } -} - -/* - Navicons - ========================================================================== */ - -.navicon { - position: relative; - width: $navicon-width; - height: $navicon-height; - background: $primary-color; - margin: auto; - -webkit-transition: 0.3s; - transition: 0.3s; - - &::before, - &::after { - content: ""; - position: absolute; - inset-inline-start: 0; - width: $navicon-width; - height: $navicon-height; - background: $primary-color; - -webkit-transition: 0.3s; - transition: 0.3s; - } - - &:before { - top: (-2 * $navicon-height); - } - - &:after { - bottom: (-2 * $navicon-height); - } -} - -.close .navicon { - /* hide the middle line*/ - background: transparent; - - /* overlay the lines by setting both their top values to 0*/ - &:before, - &:after { - -webkit-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - transform-origin: 50% 50%; - top: 0; - width: $navicon-width; - } - - /* rotate the lines to form the x shape*/ - &:before { - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - } - &:after { - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - } -} - -.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, - .navicon:after { - background: mix(#000, $primary-color, 25%); - } - - &.close { - .navicon { - background: transparent; - } - } -} - -/* - Sticky, fixed to top content - ========================================================================== */ - -.sticky { - @include breakpoint($large) { - @include clearfix(); - position: -webkit-sticky; - position: sticky; - top: 2em; - - > * { - display: block; - } - } -} - -/* - Wells - ========================================================================== */ - -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: $border-radius; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} - -/* - Modals - ========================================================================== */ - -.show-modal { - overflow: hidden; - position: relative; - - &::before { - position: absolute; - content: ""; - top: 0; - inset-inline-start: 0; - width: 100%; - height: 100%; - z-index: 999; - background-color: rgba(255, 255, 255, 0.85); - } - - .modal { - display: block; - } -} - -.modal { - display: none; - position: fixed; - width: 300px; - top: 50%; - inset-inline-start: 50%; - margin-inline-start: -150px; - margin-top: -150px; - min-height: 0; - z-index: 9999; - background: #fff; - border: 1px solid $border-color; - border-radius: $border-radius; - box-shadow: $box-shadow; - - &__title { - margin: 0; - padding: 0.5em 1em; - } - - &__supporting-text { - padding: 0 1em 0.5em 1em; - } - - &__actions { - padding: 0.5em 1em; - border-top: 1px solid $border-color; - } -} - -/* - Footnotes - ========================================================================== */ - -.footnote { - color: mix(#fff, $gray, 25%); - text-decoration: none; -} - -.footnotes { - color: mix(#fff, $gray, 25%); - - ol, - li, - p { - margin-bottom: 0; - font-size: $type-size-6; - } -} - -a.reversefootnote { - color: $gray; - text-decoration: none; - - &:hover { - text-decoration: underline; - } -} - -/* - Required - ========================================================================== */ - -.required { - color: $danger-color; - font-weight: bold; -} - -/* - Google Custom Search Engine - ========================================================================== */ - -.gsc-control-cse { - table, - tr, - td { - border: 0; /* remove table borders widget */ - } -} - -/* - Responsive Video Embed - ========================================================================== */ - -.responsive-video-container { - position: relative; - margin-bottom: 1em; - padding-bottom: 56.25%; - height: 0; - overflow: hidden; - max-width: 100%; - - iframe, - object, - embed { - position: absolute; - top: 0; - inset-inline-start: 0; - width: 100%; - height: 100%; - } -} - -// full screen video fixes -:-webkit-full-screen-ancestor { - .masthead, - .page__footer { - position: static; - } -} - -/* - Copy
     block to clipboard
    -   ========================================================================== */
    -
    -// a ",g.noCloneChecked=!!D.cloneNode(!0).lastChild.defaultValue,D.innerHTML="",g.option=!!D.lastChild,{thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_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",""]);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\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").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="
    ",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").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=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&&ox

    ',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
    ').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],po[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("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(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("").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:'',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("
    ")),e.inlineElement=r):(h.updateStatus("ready"),h._parseMarkup(t,{},e),t)}}}),"ajax");u.magnificPopup.registerModule(j,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content 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:'
    ',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image 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
    ',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',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.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('').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;1t.durationMax?t.durationMax:t.durationMin&&e=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.")}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:'Image #%curr% 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}),document.querySelector(".page__content").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='Permalink',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='Copy code',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 deleted file mode 100644 index 454db8c5ae57..000000000000 --- a/assets/js/main.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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","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/gumshoe.js b/assets/js/plugins/gumshoe.js deleted file mode 100644 index 713b6eb30302..000000000000 --- a/assets/js/plugins/gumshoe.js +++ /dev/null @@ -1,484 +0,0 @@ -/*! - * gumshoejs v5.1.1 - * A simple, framework-agnostic scrollspy script. - * (c) 2019 Chris Ferdinandi - * MIT License - * http://github.com/cferdinandi/gumshoe - */ - -(function (root, factory) { - if ( typeof define === 'function' && define.amd ) { - define([], (function () { - return factory(root); - })); - } else if ( typeof exports === 'object' ) { - module.exports = factory(root); - } else { - root.Gumshoe = factory(root); - } -})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) { - - 'use strict'; - - // - // Defaults - // - - var defaults = { - - // Active classes - navClass: 'active', - contentClass: 'active', - - // Nested navigation - nested: false, - nestedClass: 'active', - - // Offset & reflow - offset: 0, - reflow: false, - - // Event support - events: true - - }; - - - // - // Methods - // - - /** - * Merge two or more objects together. - * @param {Object} objects The objects to merge together - * @returns {Object} Merged values of defaults and options - */ - var extend = function () { - var merged = {}; - Array.prototype.forEach.call(arguments, (function (obj) { - for (var key in obj) { - if (!obj.hasOwnProperty(key)) return; - merged[key] = obj[key]; - } - })); - return merged; - }; - - /** - * Emit a custom event - * @param {String} type The event type - * @param {Node} elem The element to attach the event to - * @param {Object} detail Any details to pass along with the event - */ - var emitEvent = function (type, elem, detail) { - - // Make sure events are enabled - if (!detail.settings.events) return; - - // Create a new event - var event = new CustomEvent(type, { - bubbles: true, - cancelable: true, - detail: detail - }); - - // Dispatch the event - elem.dispatchEvent(event); - - }; - - /** - * Get an element's distance from the top of the Document. - * @param {Node} elem The element - * @return {Number} Distance from the top in pixels - */ - var getOffsetTop = function (elem) { - var location = 0; - if (elem.offsetParent) { - while (elem) { - location += elem.offsetTop; - elem = elem.offsetParent; - } - } - return location >= 0 ? location : 0; - }; - - /** - * Sort content from first to last in the DOM - * @param {Array} contents The content areas - */ - var sortContents = function (contents) { - if(contents) { - contents.sort((function (item1, item2) { - var offset1 = getOffsetTop(item1.content); - var offset2 = getOffsetTop(item2.content); - if (offset1 < offset2) return -1; - return 1; - })); - } - }; - - /** - * Get the offset to use for calculating position - * @param {Object} settings The settings for this instantiation - * @return {Float} The number of pixels to offset the calculations - */ - var getOffset = function (settings) { - - // if the offset is a function run it - if (typeof settings.offset === 'function') { - return parseFloat(settings.offset()); - } - - // Otherwise, return it as-is - return parseFloat(settings.offset); - - }; - - /** - * Get the document element's height - * @private - * @returns {Number} - */ - var getDocumentHeight = function () { - return Math.max( - document.body.scrollHeight, document.documentElement.scrollHeight, - document.body.offsetHeight, document.documentElement.offsetHeight, - document.body.clientHeight, document.documentElement.clientHeight - ); - }; - - /** - * Determine if an element is in view - * @param {Node} elem The element - * @param {Object} settings The settings for this instantiation - * @param {Boolean} bottom If true, check if element is above bottom of viewport instead - * @return {Boolean} Returns true if element is in the viewport - */ - var isInView = function (elem, settings, bottom) { - var bounds = elem.getBoundingClientRect(); - var offset = getOffset(settings); - if (bottom) { - return parseInt(bounds.bottom, 10) < (window.innerHeight || document.documentElement.clientHeight); - } - return parseInt(bounds.top, 10) <= offset; - }; - - /** - * Check if at the bottom of the viewport - * @return {Boolean} If true, page is at the bottom of the viewport - */ - var isAtBottom = function () { - if (window.innerHeight + window.pageYOffset >= getDocumentHeight()) return true; - return false; - }; - - /** - * Check if the last item should be used (even if not at the top of the page) - * @param {Object} item The last item - * @param {Object} settings The settings for this instantiation - * @return {Boolean} If true, use the last item - */ - var useLastItem = function (item, settings) { - if (isAtBottom() && isInView(item.content, settings, true)) return true; - return false; - }; - - /** - * Get the active content - * @param {Array} contents The content areas - * @param {Object} settings The settings for this instantiation - * @return {Object} The content area and matching navigation link - */ - var getActive = function (contents, settings) { - var last = contents[contents.length-1]; - if (useLastItem(last, settings)) return last; - for (var i = contents.length - 1; i >= 0; i--) { - if (isInView(contents[i].content, settings)) return contents[i]; - } - }; - - /** - * Deactivate parent navs in a nested navigation - * @param {Node} nav The starting navigation element - * @param {Object} settings The settings for this instantiation - */ - var deactivateNested = function (nav, settings) { - - // If nesting isn't activated, bail - if (!settings.nested) return; - - // Get the parent navigation - var li = nav.parentNode.closest('li'); - if (!li) return; - - // Remove the active class - li.classList.remove(settings.nestedClass); - - // Apply recursively to any parent navigation elements - deactivateNested(li, settings); - - }; - - /** - * Deactivate a nav and content area - * @param {Object} items The nav item and content to deactivate - * @param {Object} settings The settings for this instantiation - */ - var deactivate = function (items, settings) { - - // Make sure their are items to deactivate - if (!items) return; - - // Get the parent list item - var li = items.nav.closest('li'); - if (!li) return; - - // Remove the active class from the nav and content - li.classList.remove(settings.navClass); - items.content.classList.remove(settings.contentClass); - - // Deactivate any parent navs in a nested navigation - deactivateNested(li, settings); - - // Emit a custom event - emitEvent('gumshoeDeactivate', li, { - link: items.nav, - content: items.content, - settings: settings - }); - - }; - - - /** - * Activate parent navs in a nested navigation - * @param {Node} nav The starting navigation element - * @param {Object} settings The settings for this instantiation - */ - var activateNested = function (nav, settings) { - - // If nesting isn't activated, bail - if (!settings.nested) return; - - // Get the parent navigation - var li = nav.parentNode.closest('li'); - if (!li) return; - - // Add the active class - li.classList.add(settings.nestedClass); - - // Apply recursively to any parent navigation elements - activateNested(li, settings); - - }; - - /** - * Activate a nav and content area - * @param {Object} items The nav item and content to activate - * @param {Object} settings The settings for this instantiation - */ - var activate = function (items, settings) { - - // Make sure their are items to activate - if (!items) return; - - // Get the parent list item - var li = items.nav.closest('li'); - if (!li) return; - - // Add the active class to the nav and content - li.classList.add(settings.navClass); - items.content.classList.add(settings.contentClass); - - // Activate any parent navs in a nested navigation - activateNested(li, settings); - - // Emit a custom event - emitEvent('gumshoeActivate', li, { - link: items.nav, - content: items.content, - settings: settings - }); - - }; - - /** - * Create the Constructor object - * @param {String} selector The selector to use for navigation items - * @param {Object} options User options and settings - */ - var Constructor = function (selector, options) { - - // - // Variables - // - - var publicAPIs = {}; - var navItems, contents, current, timeout, settings; - - - // - // Methods - // - - /** - * Set variables from DOM elements - */ - publicAPIs.setup = function () { - - // Get all nav items - navItems = document.querySelectorAll(selector); - - // Create contents array - contents = []; - - // Loop through each item, get it's matching content, and push to the array - Array.prototype.forEach.call(navItems, (function (item) { - - // Get the content for the nav item - var content = document.getElementById(decodeURIComponent(item.hash.substr(1))); - if (!content) return; - - // Push to the contents array - contents.push({ - nav: item, - content: content - }); - - })); - - // Sort contents by the order they appear in the DOM - sortContents(contents); - - }; - - /** - * Detect which content is currently active - */ - publicAPIs.detect = function () { - - // Get the active content - var active = getActive(contents, settings); - - // if there's no active content, deactivate and bail - if (!active) { - if (current) { - deactivate(current, settings); - current = null; - } - return; - } - - // If the active content is the one currently active, do nothing - if (current && active.content === current.content) return; - - // Deactivate the current content and activate the new content - deactivate(current, settings); - activate(active, settings); - - // Update the currently active content - current = active; - - }; - - /** - * Detect the active content on scroll - * Debounced for performance - */ - var scrollHandler = function (event) { - - // If there's a timer, cancel it - if (timeout) { - window.cancelAnimationFrame(timeout); - } - - // Setup debounce callback - timeout = window.requestAnimationFrame(publicAPIs.detect); - - }; - - /** - * Update content sorting on resize - * Debounced for performance - */ - var resizeHandler = function (event) { - - // If there's a timer, cancel it - if (timeout) { - window.cancelAnimationFrame(timeout); - } - - // Setup debounce callback - timeout = window.requestAnimationFrame((function () { - sortContents(contents); - publicAPIs.detect(); - })); - - }; - - /** - * Destroy the current instantiation - */ - publicAPIs.destroy = function () { - - // Undo DOM changes - if (current) { - deactivate(current, settings); - } - - // Remove event listeners - window.removeEventListener('scroll', scrollHandler, false); - if (settings.reflow) { - window.removeEventListener('resize', resizeHandler, false); - } - - // Reset variables - contents = null; - navItems = null; - current = null; - timeout = null; - settings = null; - - }; - - /** - * Initialize the current instantiation - */ - var init = function () { - - // Merge user options into defaults - settings = extend(defaults, options || {}); - - // Setup variables based on the current DOM - publicAPIs.setup(); - - // Find the currently active content - publicAPIs.detect(); - - // Setup event listeners - window.addEventListener('scroll', scrollHandler, false); - if (settings.reflow) { - window.addEventListener('resize', resizeHandler, false); - } - - }; - - - // - // Initialize and return the public APIs - // - - init(); - return publicAPIs; - - }; - - - // - // Return the Constructor - // - - return Constructor; - -})); \ No newline at end of file diff --git a/assets/js/plugins/jquery.ba-throttle-debounce.js b/assets/js/plugins/jquery.ba-throttle-debounce.js deleted file mode 100644 index fa30bdfffe23..000000000000 --- a/assets/js/plugins/jquery.ba-throttle-debounce.js +++ /dev/null @@ -1,252 +0,0 @@ -/*! - * jQuery throttle / debounce - v1.1 - 3/7/2010 - * http://benalman.com/projects/jquery-throttle-debounce-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ - -// Script: jQuery throttle / debounce: Sometimes, less is more! -// -// *Version: 1.1, Last updated: 3/7/2010* -// -// Project Home - http://benalman.com/projects/jquery-throttle-debounce-plugin/ -// GitHub - http://github.com/cowboy/jquery-throttle-debounce/ -// Source - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.js -// (Minified) - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.min.js (0.7kb) -// -// About: License -// -// Copyright (c) 2010 "Cowboy" Ben Alman, -// Dual licensed under the MIT and GPL licenses. -// http://benalman.com/about/license/ -// -// About: Examples -// -// These working examples, complete with fully commented code, illustrate a few -// ways in which this plugin can be used. -// -// Throttle - http://benalman.com/code/projects/jquery-throttle-debounce/examples/throttle/ -// Debounce - http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/ -// -// About: Support and Testing -// -// Information about what version or versions of jQuery this plugin has been -// tested with, what browsers it has been tested in, and where the unit tests -// reside (so you can test it yourself). -// -// jQuery Versions - none, 1.3.2, 1.4.2 -// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome 4-5, Opera 9.6-10.1. -// Unit Tests - http://benalman.com/code/projects/jquery-throttle-debounce/unit/ -// -// About: Release History -// -// 1.1 - (3/7/2010) Fixed a bug in where trailing callbacks -// executed later than they should. Reworked a fair amount of internal -// logic as well. -// 1.0 - (3/6/2010) Initial release as a stand-alone project. Migrated over -// from jquery-misc repo v0.4 to jquery-throttle repo v1.0, added the -// no_trailing throttle parameter and debounce functionality. -// -// Topic: Note for non-jQuery users -// -// jQuery isn't actually required for this plugin, because nothing internal -// uses any jQuery methods or properties. jQuery is just used as a namespace -// under which these methods can exist. -// -// Since jQuery isn't actually required for this plugin, if jQuery doesn't exist -// when this plugin is loaded, the method described below will be created in -// the `Cowboy` namespace. Usage will be exactly the same, but instead of -// $.method() or jQuery.method(), you'll need to use Cowboy.method(). - -(function(window,undefined){ - '$:nomunge'; // Used by YUI compressor. - - // Since jQuery really isn't required for this plugin, use `jQuery` as the - // namespace only if it already exists, otherwise use the `Cowboy` namespace, - // creating it if necessary. - var $ = window.jQuery || window.Cowboy || ( window.Cowboy = {} ), - - // Internal method reference. - jq_throttle; - - // Method: jQuery.throttle - // - // Throttle execution of a function. Especially useful for rate limiting - // execution of handlers on events like resize and scroll. If you want to - // rate-limit execution of a function to a single time, see the - // method. - // - // In this visualization, | is a throttled-function call and X is the actual - // callback execution: - // - // > Throttled with `no_trailing` specified as false or unspecified: - // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - // > X X X X X X X X X X X X - // > - // > Throttled with `no_trailing` specified as true: - // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - // > X X X X X X X X X X - // - // Usage: - // - // > var throttled = jQuery.throttle( delay, [ no_trailing, ] callback ); - // > - // > jQuery('selector').bind( 'someevent', throttled ); - // > jQuery('selector').unbind( 'someevent', throttled ); - // - // This also works in jQuery 1.4+: - // - // > jQuery('selector').bind( 'someevent', jQuery.throttle( delay, [ no_trailing, ] callback ) ); - // > jQuery('selector').unbind( 'someevent', callback ); - // - // Arguments: - // - // delay - (Number) A zero-or-greater delay in milliseconds. For event - // callbacks, values around 100 or 250 (or even higher) are most useful. - // no_trailing - (Boolean) Optional, defaults to false. If no_trailing is - // true, callback will only execute every `delay` milliseconds while the - // throttled-function is being called. If no_trailing is false or - // unspecified, callback will be executed one final time after the last - // throttled-function call. (After the throttled-function has not been - // called for `delay` milliseconds, the internal counter is reset) - // callback - (Function) A function to be executed after delay milliseconds. - // The `this` context and all arguments are passed through, as-is, to - // `callback` when the throttled-function is executed. - // - // Returns: - // - // (Function) A new, throttled, function. - - $.throttle = jq_throttle = function( delay, no_trailing, callback, debounce_mode ) { - // After wrapper has stopped being called, this timeout ensures that - // `callback` is executed at the proper times in `throttle` and `end` - // debounce modes. - var timeout_id, - - // Keep track of the last time `callback` was executed. - last_exec = 0; - - // `no_trailing` defaults to falsy. - if ( typeof no_trailing !== 'boolean' ) { - debounce_mode = callback; - callback = no_trailing; - no_trailing = undefined; - } - - // The `wrapper` function encapsulates all of the throttling / debouncing - // functionality and when executed will limit the rate at which `callback` - // is executed. - function wrapper() { - var that = this, - elapsed = +new Date() - last_exec, - args = arguments; - - // Execute `callback` and update the `last_exec` timestamp. - function exec() { - last_exec = +new Date(); - callback.apply( that, args ); - }; - - // If `debounce_mode` is true (at_begin) this is used to clear the flag - // to allow future `callback` executions. - function clear() { - timeout_id = undefined; - }; - - if ( debounce_mode && !timeout_id ) { - // Since `wrapper` is being called for the first time and - // `debounce_mode` is true (at_begin), execute `callback`. - exec(); - } - - // Clear any existing timeout. - timeout_id && clearTimeout( timeout_id ); - - if ( debounce_mode === undefined && elapsed > delay ) { - // In throttle mode, if `delay` time has been exceeded, execute - // `callback`. - exec(); - - } else if ( no_trailing !== true ) { - // In trailing throttle mode, since `delay` time has not been - // exceeded, schedule `callback` to execute `delay` ms after most - // recent execution. - // - // If `debounce_mode` is true (at_begin), schedule `clear` to execute - // after `delay` ms. - // - // If `debounce_mode` is false (at end), schedule `callback` to - // execute after `delay` ms. - timeout_id = setTimeout( debounce_mode ? clear : exec, debounce_mode === undefined ? delay - elapsed : delay ); - } - }; - - // Set the guid of `wrapper` function to the same of original callback, so - // it can be removed in jQuery 1.4+ .unbind or .die by using the original - // callback as a reference. - if ( $.guid ) { - wrapper.guid = callback.guid = callback.guid || $.guid++; - } - - // Return the wrapper function. - return wrapper; - }; - - // Method: jQuery.debounce - // - // Debounce execution of a function. Debouncing, unlike throttling, - // guarantees that a function is only executed a single time, either at the - // very beginning of a series of calls, or at the very end. If you want to - // simply rate-limit execution of a function, see the - // method. - // - // In this visualization, | is a debounced-function call and X is the actual - // callback execution: - // - // > Debounced with `at_begin` specified as false or unspecified: - // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - // > X X - // > - // > Debounced with `at_begin` specified as true: - // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - // > X X - // - // Usage: - // - // > var debounced = jQuery.debounce( delay, [ at_begin, ] callback ); - // > - // > jQuery('selector').bind( 'someevent', debounced ); - // > jQuery('selector').unbind( 'someevent', debounced ); - // - // This also works in jQuery 1.4+: - // - // > jQuery('selector').bind( 'someevent', jQuery.debounce( delay, [ at_begin, ] callback ) ); - // > jQuery('selector').unbind( 'someevent', callback ); - // - // Arguments: - // - // delay - (Number) A zero-or-greater delay in milliseconds. For event - // callbacks, values around 100 or 250 (or even higher) are most useful. - // at_begin - (Boolean) Optional, defaults to false. If at_begin is false or - // unspecified, callback will only be executed `delay` milliseconds after - // the last debounced-function call. If at_begin is true, callback will be - // executed only at the first debounced-function call. (After the - // throttled-function has not been called for `delay` milliseconds, the - // internal counter is reset) - // callback - (Function) A function to be executed after delay milliseconds. - // The `this` context and all arguments are passed through, as-is, to - // `callback` when the debounced-function is executed. - // - // Returns: - // - // (Function) A new, debounced, function. - - $.debounce = function( delay, at_begin, callback ) { - return callback === undefined - ? jq_throttle( delay, at_begin, false ) - : jq_throttle( delay, callback, at_begin !== false ); - }; - -})(this); diff --git a/assets/js/plugins/jquery.fitvids.js b/assets/js/plugins/jquery.fitvids.js deleted file mode 100644 index 5c2f85c992a6..000000000000 --- a/assets/js/plugins/jquery.fitvids.js +++ /dev/null @@ -1,82 +0,0 @@ -/*jshint browser:true */ -/*! -* FitVids 1.1 -* -* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com -* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ -* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ -* -*/ - -;(function( $ ){ - - 'use strict'; - - $.fn.fitVids = function( options ) { - var settings = { - customSelector: null, - ignore: null - }; - - if(!document.getElementById('fit-vids-style')) { - // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js - var head = document.head || document.getElementsByTagName('head')[0]; - var css = '.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%;}'; - var div = document.createElement("div"); - div.innerHTML = '

    x

    '; - head.appendChild(div.childNodes[1]); - } - - if ( options ) { - $.extend( settings, options ); - } - - return this.each(function(){ - var selectors = [ - 'iframe[src*="player.vimeo.com"]', - 'iframe[src*="youtube.com"]', - 'iframe[src*="youtube-nocookie.com"]', - 'iframe[src*="kickstarter.com"][src*="video.html"]', - 'object', - 'embed' - ]; - - if (settings.customSelector) { - selectors.push(settings.customSelector); - } - - var ignoreList = '.fitvidsignore'; - - if(settings.ignore) { - ignoreList = ignoreList + ', ' + settings.ignore; - } - - var $allVideos = $(this).find(selectors.join(',')); - $allVideos = $allVideos.not('object object'); // SwfObj conflict patch - $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. - - $allVideos.each(function(count){ - var $this = $(this); - if($this.parents(ignoreList).length > 0) { - return; // Disable FitVids on this video. - } - if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } - if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width')))) - { - $this.attr('height', 9); - $this.attr('width', 16); - } - var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), - width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), - aspectRatio = height / width; - if(!$this.attr('id')){ - var videoID = 'fitvid' + count; - $this.attr('id', videoID); - } - $this.wrap('
    ').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%'); - $this.removeAttr('height').removeAttr('width'); - }); - }); - }; -// Works with either jQuery or Zepto -})( window.jQuery || window.Zepto ); \ No newline at end of file diff --git a/assets/js/plugins/jquery.greedy-navigation.js b/assets/js/plugins/jquery.greedy-navigation.js deleted file mode 100644 index ce8a80ca2874..000000000000 --- a/assets/js/plugins/jquery.greedy-navigation.js +++ /dev/null @@ -1,128 +0,0 @@ -/* -GreedyNav.js - https://github.com/lukejacksonn/GreedyNav -Licensed under the MIT license - http://opensource.org/licenses/MIT -Copyright (c) 2015 Luke Jackson http://lukejacksonn.com -*/ - -$(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; - - // 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 - 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 - 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 enought space - if (requiredSpace > availableSpace) { - $vlinks.children().last().prependTo($hlinks); - numOfVisibleItems -= 1; - check(); - // 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'); - } - - // Window listeners - $(window).resize(function() { - check(); - }); - - $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'); - $('.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/jquery.magnific-popup.js b/assets/js/plugins/jquery.magnific-popup.js deleted file mode 100644 index 7d1d1978490c..000000000000 --- a/assets/js/plugins/jquery.magnific-popup.js +++ /dev/null @@ -1,1860 +0,0 @@ -/*! Magnific Popup - v1.1.0 - 2016-02-20 -* http://dimsemenov.com/plugins/magnific-popup/ -* Copyright (c) 2016 Dmitry Semenov; */ -;(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(window.jQuery || window.Zepto); - } - }(function($) { - - /*>>core*/ - /** - * - * Magnific Popup Core JS file - * - */ - - - /** - * Private static constants - */ - var CLOSE_EVENT = 'Close', - BEFORE_CLOSE_EVENT = 'BeforeClose', - AFTER_CLOSE_EVENT = 'AfterClose', - BEFORE_APPEND_EVENT = 'BeforeAppend', - MARKUP_PARSE_EVENT = 'MarkupParse', - OPEN_EVENT = 'Open', - CHANGE_EVENT = 'Change', - NS = 'mfp', - EVENT_NS = '.' + NS, - READY_CLASS = 'mfp-ready', - REMOVING_CLASS = 'mfp-removing', - PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; - - - /** - * Private vars - */ - /*jshint -W079 */ - var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' - MagnificPopup = function(){}, - _isJQ = !!(window.jQuery), - _prevStatus, - _window = $(window), - _document, - _prevContentType, - _wrapClasses, - _currPopupType; - - - /** - * Private functions - */ - var _mfpOn = function(name, f) { - mfp.ev.on(NS + name + EVENT_NS, f); - }, - _getEl = function(className, appendTo, html, raw) { - var el = document.createElement('div'); - el.className = 'mfp-'+className; - if(html) { - el.innerHTML = html; - } - if(!raw) { - el = $(el); - if(appendTo) { - el.appendTo(appendTo); - } - } else if(appendTo) { - appendTo.appendChild(el); - } - return el; - }, - _mfpTrigger = function(e, data) { - mfp.ev.triggerHandler(NS + e, data); - - if(mfp.st.callbacks) { - // converts "mfpEventName" to "eventName" callback and triggers it if it's present - e = e.charAt(0).toLowerCase() + e.slice(1); - if(mfp.st.callbacks[e]) { - mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); - } - } - }, - _getCloseBtn = function(type) { - if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { - mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); - _currPopupType = type; - } - return mfp.currTemplate.closeBtn; - }, - // Initialize Magnific Popup only when called at least once - _checkInstance = function() { - if(!$.magnificPopup.instance) { - /*jshint -W020 */ - mfp = new MagnificPopup(); - mfp.init(); - $.magnificPopup.instance = mfp; - } - }, - // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr - supportsTransitions = function() { - var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist - v = ['ms','O','Moz','Webkit']; // 'v' for vendor - - if( s['transition'] !== undefined ) { - return true; - } - - while( v.length ) { - if( v.pop() + 'Transition' in s ) { - return true; - } - } - - return false; - }; - - - - /** - * Public functions - */ - MagnificPopup.prototype = { - - constructor: MagnificPopup, - - /** - * Initializes Magnific Popup plugin. - * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed - */ - init: function() { - var appVersion = navigator.appVersion; - mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; - mfp.isAndroid = (/android/gi).test(appVersion); - mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); - mfp.supportsTransition = supportsTransitions(); - - // We disable fixed positioned lightbox on devices that don't handle it nicely. - // If you know a better way of detecting this - let me know. - mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); - _document = $(document); - - mfp.popupsCache = {}; - }, - - /** - * Opens popup - * @param data [description] - */ - open: function(data) { - - var i; - - if(data.isObj === false) { - // convert jQuery collection to array to avoid conflicts later - mfp.items = data.items.toArray(); - - mfp.index = 0; - var items = data.items, - item; - for(i = 0; i < items.length; i++) { - item = items[i]; - if(item.parsed) { - item = item.el[0]; - } - if(item === data.el[0]) { - mfp.index = i; - break; - } - } - } else { - mfp.items = $.isArray(data.items) ? data.items : [data.items]; - mfp.index = data.index || 0; - } - - // if popup is already opened - we just update the content - if(mfp.isOpen) { - mfp.updateItemHTML(); - return; - } - - mfp.types = []; - _wrapClasses = ''; - if(data.mainEl && data.mainEl.length) { - mfp.ev = data.mainEl.eq(0); - } else { - mfp.ev = _document; - } - - if(data.key) { - if(!mfp.popupsCache[data.key]) { - mfp.popupsCache[data.key] = {}; - } - mfp.currTemplate = mfp.popupsCache[data.key]; - } else { - mfp.currTemplate = {}; - } - - - - mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); - mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; - - if(mfp.st.modal) { - mfp.st.closeOnContentClick = false; - mfp.st.closeOnBgClick = false; - mfp.st.showCloseBtn = false; - mfp.st.enableEscapeKey = false; - } - - - // Building markup - // main containers are created only once - if(!mfp.bgOverlay) { - - // Dark overlay - mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { - mfp.close(); - }); - - mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { - if(mfp._checkIfClose(e.target)) { - mfp.close(); - } - }); - - mfp.container = _getEl('container', mfp.wrap); - } - - mfp.contentContainer = _getEl('content'); - if(mfp.st.preloader) { - mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); - } - - - // Initializing modules - var modules = $.magnificPopup.modules; - for(i = 0; i < modules.length; i++) { - var n = modules[i]; - n = n.charAt(0).toUpperCase() + n.slice(1); - mfp['init'+n].call(mfp); - } - _mfpTrigger('BeforeOpen'); - - - if(mfp.st.showCloseBtn) { - // Close button - if(!mfp.st.closeBtnInside) { - mfp.wrap.append( _getCloseBtn() ); - } else { - _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { - values.close_replaceWith = _getCloseBtn(item.type); - }); - _wrapClasses += ' mfp-close-btn-in'; - } - } - - if(mfp.st.alignTop) { - _wrapClasses += ' mfp-align-top'; - } - - - - if(mfp.fixedContentPos) { - mfp.wrap.css({ - overflow: mfp.st.overflowY, - overflowX: 'hidden', - overflowY: mfp.st.overflowY - }); - } else { - mfp.wrap.css({ - top: _window.scrollTop(), - position: 'absolute' - }); - } - if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { - mfp.bgOverlay.css({ - height: _document.height(), - position: 'absolute' - }); - } - - - - if(mfp.st.enableEscapeKey) { - // Close on ESC key - _document.on('keyup' + EVENT_NS, function(e) { - if(e.keyCode === 27) { - mfp.close(); - } - }); - } - - _window.on('resize' + EVENT_NS, function() { - mfp.updateSize(); - }); - - - if(!mfp.st.closeOnContentClick) { - _wrapClasses += ' mfp-auto-cursor'; - } - - if(_wrapClasses) - mfp.wrap.addClass(_wrapClasses); - - - // this triggers recalculation of layout, so we get it once to not to trigger twice - var windowHeight = mfp.wH = _window.height(); - - - var windowStyles = {}; - - if( mfp.fixedContentPos ) { - if(mfp._hasScrollBar(windowHeight)){ - var s = mfp._getScrollbarSize(); - if(s) { - windowStyles.marginRight = s; - } - } - } - - if(mfp.fixedContentPos) { - if(!mfp.isIE7) { - windowStyles.overflow = 'hidden'; - } else { - // ie7 double-scroll bug - $('body, html').css('overflow', 'hidden'); - } - } - - - - var classesToadd = mfp.st.mainClass; - if(mfp.isIE7) { - classesToadd += ' mfp-ie7'; - } - if(classesToadd) { - mfp._addClassToMFP( classesToadd ); - } - - // add content - mfp.updateItemHTML(); - - _mfpTrigger('BuildControls'); - - // remove scrollbar, add margin e.t.c - $('html').css(windowStyles); - - // add everything to DOM - mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) ); - - // Save last focused element - mfp._lastFocusedEl = document.activeElement; - - // Wait for next cycle to allow CSS transition - setTimeout(function() { - - if(mfp.content) { - mfp._addClassToMFP(READY_CLASS); - mfp._setFocus(); - } else { - // if content is not defined (not loaded e.t.c) we add class only for BG - mfp.bgOverlay.addClass(READY_CLASS); - } - - // Trap the focus in popup - _document.on('focusin' + EVENT_NS, mfp._onFocusIn); - - }, 16); - - mfp.isOpen = true; - mfp.updateSize(windowHeight); - _mfpTrigger(OPEN_EVENT); - - return data; - }, - - /** - * Closes the popup - */ - close: function() { - if(!mfp.isOpen) return; - _mfpTrigger(BEFORE_CLOSE_EVENT); - - mfp.isOpen = false; - // for CSS3 animation - if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { - mfp._addClassToMFP(REMOVING_CLASS); - setTimeout(function() { - mfp._close(); - }, mfp.st.removalDelay); - } else { - mfp._close(); - } - }, - - /** - * Helper for close() function - */ - _close: function() { - _mfpTrigger(CLOSE_EVENT); - - var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; - - mfp.bgOverlay.detach(); - mfp.wrap.detach(); - mfp.container.empty(); - - if(mfp.st.mainClass) { - classesToRemove += mfp.st.mainClass + ' '; - } - - mfp._removeClassFromMFP(classesToRemove); - - if(mfp.fixedContentPos) { - var windowStyles = {marginRight: ''}; - if(mfp.isIE7) { - $('body, html').css('overflow', ''); - } else { - windowStyles.overflow = ''; - } - $('html').css(windowStyles); - } - - _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); - mfp.ev.off(EVENT_NS); - - // clean up DOM elements that aren't removed - mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); - mfp.bgOverlay.attr('class', 'mfp-bg'); - mfp.container.attr('class', 'mfp-container'); - - // remove close button from target element - if(mfp.st.showCloseBtn && - (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { - if(mfp.currTemplate.closeBtn) - mfp.currTemplate.closeBtn.detach(); - } - - - if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { - $(mfp._lastFocusedEl).focus(); // put tab focus back - } - mfp.currItem = null; - mfp.content = null; - mfp.currTemplate = null; - mfp.prevHeight = 0; - - _mfpTrigger(AFTER_CLOSE_EVENT); - }, - - updateSize: function(winHeight) { - - if(mfp.isIOS) { - // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 - var zoomLevel = document.documentElement.clientWidth / window.innerWidth; - var height = window.innerHeight * zoomLevel; - mfp.wrap.css('height', height); - mfp.wH = height; - } else { - mfp.wH = winHeight || _window.height(); - } - // Fixes #84: popup incorrectly positioned with position:relative on body - if(!mfp.fixedContentPos) { - mfp.wrap.css('height', mfp.wH); - } - - _mfpTrigger('Resize'); - - }, - - /** - * Set content of popup based on current index - */ - updateItemHTML: function() { - var item = mfp.items[mfp.index]; - - // Detach and perform modifications - mfp.contentContainer.detach(); - - if(mfp.content) - mfp.content.detach(); - - if(!item.parsed) { - item = mfp.parseEl( mfp.index ); - } - - var type = item.type; - - _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); - // BeforeChange event works like so: - // _mfpOn('BeforeChange', function(e, prevType, newType) { }); - - mfp.currItem = item; - - if(!mfp.currTemplate[type]) { - var markup = mfp.st[type] ? mfp.st[type].markup : false; - - // allows to modify markup - _mfpTrigger('FirstMarkupParse', markup); - - if(markup) { - mfp.currTemplate[type] = $(markup); - } else { - // if there is no markup found we just define that template is parsed - mfp.currTemplate[type] = true; - } - } - - if(_prevContentType && _prevContentType !== item.type) { - mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); - } - - var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); - mfp.appendContent(newContent, type); - - item.preloaded = true; - - _mfpTrigger(CHANGE_EVENT, item); - _prevContentType = item.type; - - // Append container back after its content changed - mfp.container.prepend(mfp.contentContainer); - - _mfpTrigger('AfterChange'); - }, - - - /** - * Set HTML content of popup - */ - appendContent: function(newContent, type) { - mfp.content = newContent; - - if(newContent) { - if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && - mfp.currTemplate[type] === true) { - // if there is no markup, we just append close button element inside - if(!mfp.content.find('.mfp-close').length) { - mfp.content.append(_getCloseBtn()); - } - } else { - mfp.content = newContent; - } - } else { - mfp.content = ''; - } - - _mfpTrigger(BEFORE_APPEND_EVENT); - mfp.container.addClass('mfp-'+type+'-holder'); - - mfp.contentContainer.append(mfp.content); - }, - - - /** - * Creates Magnific Popup data object based on given data - * @param {int} index Index of item to parse - */ - parseEl: function(index) { - var item = mfp.items[index], - type; - - if(item.tagName) { - item = { el: $(item) }; - } else { - type = item.type; - item = { data: item, src: item.src }; - } - - if(item.el) { - var types = mfp.types; - - // check for 'mfp-TYPE' class - for(var i = 0; i < types.length; i++) { - if( item.el.hasClass('mfp-'+types[i]) ) { - type = types[i]; - break; - } - } - - item.src = item.el.attr('data-mfp-src'); - if(!item.src) { - item.src = item.el.attr('href'); - } - } - - item.type = type || mfp.st.type || 'inline'; - item.index = index; - item.parsed = true; - mfp.items[index] = item; - _mfpTrigger('ElementParse', item); - - return mfp.items[index]; - }, - - - /** - * Initializes single popup or a group of popups - */ - addGroup: function(el, options) { - var eHandler = function(e) { - e.mfpEl = this; - mfp._openClick(e, el, options); - }; - - if(!options) { - options = {}; - } - - var eName = 'click.magnificPopup'; - options.mainEl = el; - - if(options.items) { - options.isObj = true; - el.off(eName).on(eName, eHandler); - } else { - options.isObj = false; - if(options.delegate) { - el.off(eName).on(eName, options.delegate , eHandler); - } else { - options.items = el; - el.off(eName).on(eName, eHandler); - } - } - }, - _openClick: function(e, el, options) { - var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; - - - if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { - return; - } - - var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; - - if(disableOn) { - if($.isFunction(disableOn)) { - if( !disableOn.call(mfp) ) { - return true; - } - } else { // else it's number - if( _window.width() < disableOn ) { - return true; - } - } - } - - if(e.type) { - e.preventDefault(); - - // This will prevent popup from closing if element is inside and popup is already opened - if(mfp.isOpen) { - e.stopPropagation(); - } - } - - options.el = $(e.mfpEl); - if(options.delegate) { - options.items = el.find(options.delegate); - } - mfp.open(options); - }, - - - /** - * Updates text on preloader - */ - updateStatus: function(status, text) { - - if(mfp.preloader) { - if(_prevStatus !== status) { - mfp.container.removeClass('mfp-s-'+_prevStatus); - } - - if(!text && status === 'loading') { - text = mfp.st.tLoading; - } - - var data = { - status: status, - text: text - }; - // allows to modify status - _mfpTrigger('UpdateStatus', data); - - status = data.status; - text = data.text; - - mfp.preloader.html(text); - - mfp.preloader.find('a').on('click', function(e) { - e.stopImmediatePropagation(); - }); - - mfp.container.addClass('mfp-s-'+status); - _prevStatus = status; - } - }, - - - /* - "Private" helpers that aren't private at all - */ - // Check to close popup or not - // "target" is an element that was clicked - _checkIfClose: function(target) { - - if($(target).hasClass(PREVENT_CLOSE_CLASS)) { - return; - } - - var closeOnContent = mfp.st.closeOnContentClick; - var closeOnBg = mfp.st.closeOnBgClick; - - if(closeOnContent && closeOnBg) { - return true; - } else { - - // We close the popup if click is on close button or on preloader. Or if there is no content. - if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) { - return true; - } - - // if click is outside the content - if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { - if(closeOnBg) { - // last check, if the clicked element is in DOM, (in case it's removed onclick) - if( $.contains(document, target) ) { - return true; - } - } - } else if(closeOnContent) { - return true; - } - - } - return false; - }, - _addClassToMFP: function(cName) { - mfp.bgOverlay.addClass(cName); - mfp.wrap.addClass(cName); - }, - _removeClassFromMFP: function(cName) { - this.bgOverlay.removeClass(cName); - mfp.wrap.removeClass(cName); - }, - _hasScrollBar: function(winHeight) { - return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); - }, - _setFocus: function() { - (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); - }, - _onFocusIn: function(e) { - if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { - mfp._setFocus(); - return false; - } - }, - _parseMarkup: function(template, values, item) { - var arr; - if(item.data) { - values = $.extend(item.data, values); - } - _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); - - $.each(values, function(key, value) { - if(value === undefined || value === false) { - return true; - } - arr = key.split('_'); - if(arr.length > 1) { - var el = template.find(EVENT_NS + '-'+arr[0]); - - if(el.length > 0) { - var attr = arr[1]; - if(attr === 'replaceWith') { - if(el[0] !== value[0]) { - el.replaceWith(value); - } - } else if(attr === 'img') { - if(el.is('img')) { - el.attr('src', value); - } else { - el.replaceWith( $('').attr('src', value).attr('class', el.attr('class')) ); - } - } else { - el.attr(arr[1], value); - } - } - - } else { - template.find(EVENT_NS + '-'+key).html(value); - } - }); - }, - - _getScrollbarSize: function() { - // thx David - if(mfp.scrollbarSize === undefined) { - var scrollDiv = document.createElement("div"); - scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; - document.body.appendChild(scrollDiv); - mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - } - return mfp.scrollbarSize; - } - - }; /* MagnificPopup core prototype end */ - - - - - /** - * Public static functions - */ - $.magnificPopup = { - instance: null, - proto: MagnificPopup.prototype, - modules: [], - - open: function(options, index) { - _checkInstance(); - - if(!options) { - options = {}; - } else { - options = $.extend(true, {}, options); - } - - options.isObj = true; - options.index = index || 0; - return this.instance.open(options); - }, - - close: function() { - return $.magnificPopup.instance && $.magnificPopup.instance.close(); - }, - - registerModule: function(name, module) { - if(module.options) { - $.magnificPopup.defaults[name] = module.options; - } - $.extend(this.proto, module.proto); - this.modules.push(name); - }, - - defaults: { - - // Info about options is in docs: - // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options - - disableOn: 0, - - key: null, - - midClick: false, - - mainClass: '', - - preloader: true, - - focus: '', // CSS selector of input to focus after popup is opened - - closeOnContentClick: false, - - closeOnBgClick: true, - - closeBtnInside: true, - - showCloseBtn: true, - - enableEscapeKey: true, - - modal: false, - - alignTop: false, - - removalDelay: 0, - - prependTo: null, - - fixedContentPos: 'auto', - - fixedBgPos: 'auto', - - overflowY: 'auto', - - closeMarkup: '', - - tClose: 'Close (Esc)', - - tLoading: 'Loading...', - - autoFocusLast: true - - } - }; - - - - $.fn.magnificPopup = function(options) { - _checkInstance(); - - var jqEl = $(this); - - // We call some API method of first param is a string - if (typeof options === "string" ) { - - if(options === 'open') { - var items, - itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup, - index = parseInt(arguments[1], 10) || 0; - - if(itemOpts.items) { - items = itemOpts.items[index]; - } else { - items = jqEl; - if(itemOpts.delegate) { - items = items.find(itemOpts.delegate); - } - items = items.eq( index ); - } - mfp._openClick({mfpEl:items}, jqEl, itemOpts); - } else { - if(mfp.isOpen) - mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); - } - - } else { - // clone options obj - options = $.extend(true, {}, options); - - /* - * As Zepto doesn't support .data() method for objects - * and it works only in normal browsers - * we assign "options" object directly to the DOM element. FTW! - */ - if(_isJQ) { - jqEl.data('magnificPopup', options); - } else { - jqEl[0].magnificPopup = options; - } - - mfp.addGroup(jqEl, options); - - } - return jqEl; - }; - - /*>>core*/ - - /*>>inline*/ - - var INLINE_NS = 'inline', - _hiddenClass, - _inlinePlaceholder, - _lastInlineElement, - _putInlineElementsBack = function() { - if(_lastInlineElement) { - _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach(); - _lastInlineElement = null; - } - }; - - $.magnificPopup.registerModule(INLINE_NS, { - options: { - hiddenClass: 'hide', // will be appended with `mfp-` prefix - markup: '', - tNotFound: 'Content not found' - }, - proto: { - - initInline: function() { - mfp.types.push(INLINE_NS); - - _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() { - _putInlineElementsBack(); - }); - }, - - getInline: function(item, template) { - - _putInlineElementsBack(); - - if(item.src) { - var inlineSt = mfp.st.inline, - el = $(item.src); - - if(el.length) { - - // If target element has parent - we replace it with placeholder and put it back after popup is closed - var parent = el[0].parentNode; - if(parent && parent.tagName) { - if(!_inlinePlaceholder) { - _hiddenClass = inlineSt.hiddenClass; - _inlinePlaceholder = _getEl(_hiddenClass); - _hiddenClass = 'mfp-'+_hiddenClass; - } - // replace target inline element with placeholder - _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); - } - - mfp.updateStatus('ready'); - } else { - mfp.updateStatus('error', inlineSt.tNotFound); - el = $('
    '); - } - - item.inlineElement = el; - return el; - } - - mfp.updateStatus('ready'); - mfp._parseMarkup(template, {}, item); - return template; - } - } - }); - - /*>>inline*/ - - /*>>ajax*/ - var AJAX_NS = 'ajax', - _ajaxCur, - _removeAjaxCursor = function() { - if(_ajaxCur) { - $(document.body).removeClass(_ajaxCur); - } - }, - _destroyAjaxRequest = function() { - _removeAjaxCursor(); - if(mfp.req) { - mfp.req.abort(); - } - }; - - $.magnificPopup.registerModule(AJAX_NS, { - - options: { - settings: null, - cursor: 'mfp-ajax-cur', - tError: 'The content could not be loaded.' - }, - - proto: { - initAjax: function() { - mfp.types.push(AJAX_NS); - _ajaxCur = mfp.st.ajax.cursor; - - _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest); - _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest); - }, - getAjax: function(item) { - - if(_ajaxCur) { - $(document.body).addClass(_ajaxCur); - } - - mfp.updateStatus('loading'); - - var opts = $.extend({ - url: item.src, - success: function(data, textStatus, jqXHR) { - var temp = { - data:data, - xhr:jqXHR - }; - - _mfpTrigger('ParseAjax', temp); - - mfp.appendContent( $(temp.data), AJAX_NS ); - - item.finished = true; - - _removeAjaxCursor(); - - mfp._setFocus(); - - setTimeout(function() { - mfp.wrap.addClass(READY_CLASS); - }, 16); - - mfp.updateStatus('ready'); - - _mfpTrigger('AjaxContentAdded'); - }, - error: function() { - _removeAjaxCursor(); - item.finished = item.loadError = true; - mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src)); - } - }, mfp.st.ajax.settings); - - mfp.req = $.ajax(opts); - - return ''; - } - } - }); - - /*>>ajax*/ - - /*>>image*/ - var _imgInterval, - _getTitle = function(item) { - if(item.data && item.data.title !== undefined) - return item.data.title; - - var src = mfp.st.image.titleSrc; - - if(src) { - if($.isFunction(src)) { - return src.call(mfp, item); - } else if(item.el) { - return item.el.attr(src) || ''; - } - } - return ''; - }; - - $.magnificPopup.registerModule('image', { - - options: { - markup: '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    ', - cursor: 'mfp-zoom-out-cur', - titleSrc: 'title', - verticalFit: true, - tError: 'The image could not be loaded.' - }, - - proto: { - initImage: function() { - var imgSt = mfp.st.image, - ns = '.image'; - - mfp.types.push('image'); - - _mfpOn(OPEN_EVENT+ns, function() { - if(mfp.currItem.type === 'image' && imgSt.cursor) { - $(document.body).addClass(imgSt.cursor); - } - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(imgSt.cursor) { - $(document.body).removeClass(imgSt.cursor); - } - _window.off('resize' + EVENT_NS); - }); - - _mfpOn('Resize'+ns, mfp.resizeImage); - if(mfp.isLowIE) { - _mfpOn('AfterChange', mfp.resizeImage); - } - }, - resizeImage: function() { - var item = mfp.currItem; - if(!item || !item.img) return; - - if(mfp.st.image.verticalFit) { - var decr = 0; - // fix box-sizing in ie7/8 - if(mfp.isLowIE) { - decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10); - } - item.img.css('max-height', mfp.wH-decr); - } - }, - _onImageHasSize: function(item) { - if(item.img) { - - item.hasSize = true; - - if(_imgInterval) { - clearInterval(_imgInterval); - } - - item.isCheckingImgSize = false; - - _mfpTrigger('ImageHasSize', item); - - if(item.imgHidden) { - if(mfp.content) - mfp.content.removeClass('mfp-loading'); - - item.imgHidden = false; - } - - } - }, - - /** - * Function that loops until the image has size to display elements that rely on it asap - */ - findImageSize: function(item) { - - var counter = 0, - img = item.img[0], - mfpSetInterval = function(delay) { - - if(_imgInterval) { - clearInterval(_imgInterval); - } - // decelerating interval that checks for size of an image - _imgInterval = setInterval(function() { - if(img.naturalWidth > 0) { - mfp._onImageHasSize(item); - return; - } - - if(counter > 200) { - clearInterval(_imgInterval); - } - - counter++; - if(counter === 3) { - mfpSetInterval(10); - } else if(counter === 40) { - mfpSetInterval(50); - } else if(counter === 100) { - mfpSetInterval(500); - } - }, delay); - }; - - mfpSetInterval(1); - }, - - getImage: function(item, template) { - - var guard = 0, - - // image load complete handler - onLoadComplete = function() { - if(item) { - if (item.img[0].complete) { - item.img.off('.mfploader'); - - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - - mfp.updateStatus('ready'); - } - - item.hasSize = true; - item.loaded = true; - - _mfpTrigger('ImageLoadComplete'); - - } - else { - // if image complete check fails 200 times (20 sec), we assume that there was an error. - guard++; - if(guard < 200) { - setTimeout(onLoadComplete,100); - } else { - onLoadError(); - } - } - } - }, - - // image error handler - onLoadError = function() { - if(item) { - item.img.off('.mfploader'); - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } - - item.hasSize = true; - item.loaded = true; - item.loadError = true; - } - }, - imgSt = mfp.st.image; - - - var el = template.find('.mfp-img'); - if(el.length) { - var img = document.createElement('img'); - img.className = 'mfp-img'; - if(item.el && item.el.find('img').length) { - img.alt = item.el.find('img').attr('alt'); - } - item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError); - img.src = item.src; - - // without clone() "error" event is not firing when IMG is replaced by new IMG - // TODO: find a way to avoid such cloning - if(el.is('img')) { - item.img = item.img.clone(); - } - - img = item.img[0]; - if(img.naturalWidth > 0) { - item.hasSize = true; - } else if(!img.width) { - item.hasSize = false; - } - } - - mfp._parseMarkup(template, { - title: _getTitle(item), - img_replaceWith: item.img - }, item); - - mfp.resizeImage(); - - if(item.hasSize) { - if(_imgInterval) clearInterval(_imgInterval); - - if(item.loadError) { - template.addClass('mfp-loading'); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } else { - template.removeClass('mfp-loading'); - mfp.updateStatus('ready'); - } - return template; - } - - mfp.updateStatus('loading'); - item.loading = true; - - if(!item.hasSize) { - item.imgHidden = true; - template.addClass('mfp-loading'); - mfp.findImageSize(item); - } - - return template; - } - } - }); - - /*>>image*/ - - /*>>zoom*/ - var hasMozTransform, - getHasMozTransform = function() { - if(hasMozTransform === undefined) { - hasMozTransform = document.createElement('p').style.MozTransform !== undefined; - } - return hasMozTransform; - }; - - $.magnificPopup.registerModule('zoom', { - - options: { - enabled: false, - easing: 'ease-in-out', - duration: 300, - opener: function(element) { - return element.is('img') ? element : element.find('img'); - } - }, - - proto: { - - initZoom: function() { - var zoomSt = mfp.st.zoom, - ns = '.zoom', - image; - - if(!zoomSt.enabled || !mfp.supportsTransition) { - return; - } - - var duration = zoomSt.duration, - getElToAnimate = function(image) { - var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'), - transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing, - cssObj = { - position: 'fixed', - zIndex: 9999, - left: 0, - top: 0, - '-webkit-backface-visibility': 'hidden' - }, - t = 'transition'; - - cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition; - - newImg.css(cssObj); - return newImg; - }, - showMainContent = function() { - mfp.content.css('visibility', 'visible'); - }, - openTimeout, - animatedImg; - - _mfpOn('BuildControls'+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - mfp.content.css('visibility', 'hidden'); - - // Basically, all code below does is clones existing image, puts in on top of the current one and animated it - - image = mfp._getItemToZoom(); - - if(!image) { - showMainContent(); - return; - } - - animatedImg = getElToAnimate(image); - - animatedImg.css( mfp._getOffset() ); - - mfp.wrap.append(animatedImg); - - openTimeout = setTimeout(function() { - animatedImg.css( mfp._getOffset( true ) ); - openTimeout = setTimeout(function() { - - showMainContent(); - - setTimeout(function() { - animatedImg.remove(); - image = animatedImg = null; - _mfpTrigger('ZoomAnimationEnded'); - }, 16); // avoid blink when switching images - - }, duration); // this timeout equals animation duration - - }, 16); // by adding this timeout we avoid short glitch at the beginning of animation - - - // Lots of timeouts... - } - }); - _mfpOn(BEFORE_CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - - mfp.st.removalDelay = duration; - - if(!image) { - image = mfp._getItemToZoom(); - if(!image) { - return; - } - animatedImg = getElToAnimate(image); - } - - animatedImg.css( mfp._getOffset(true) ); - mfp.wrap.append(animatedImg); - mfp.content.css('visibility', 'hidden'); - - setTimeout(function() { - animatedImg.css( mfp._getOffset() ); - }, 16); - } - - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - showMainContent(); - if(animatedImg) { - animatedImg.remove(); - } - image = null; - } - }); - }, - - _allowZoom: function() { - return mfp.currItem.type === 'image'; - }, - - _getItemToZoom: function() { - if(mfp.currItem.hasSize) { - return mfp.currItem.img; - } else { - return false; - } - }, - - // Get element postion relative to viewport - _getOffset: function(isLarge) { - var el; - if(isLarge) { - el = mfp.currItem.img; - } else { - el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); - } - - var offset = el.offset(); - var paddingTop = parseInt(el.css('padding-top'),10); - var paddingBottom = parseInt(el.css('padding-bottom'),10); - offset.top -= ( $(window).scrollTop() - paddingTop ); - - - /* - - Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. - - */ - var obj = { - width: el.width(), - // fix Zepto height+padding issue - height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop - }; - - // I hate to do this, but there is no another option - if( getHasMozTransform() ) { - obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)'; - } else { - obj.left = offset.left; - obj.top = offset.top; - } - return obj; - } - - } - }); - - - - /*>>zoom*/ - - /*>>iframe*/ - - var IFRAME_NS = 'iframe', - _emptyPage = '//about:blank', - - _fixIframeBugs = function(isShowing) { - if(mfp.currTemplate[IFRAME_NS]) { - var el = mfp.currTemplate[IFRAME_NS].find('iframe'); - if(el.length) { - // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug - if(!isShowing) { - el[0].src = _emptyPage; - } - - // IE8 black screen bug fix - if(mfp.isIE8) { - el.css('display', isShowing ? 'block' : 'none'); - } - } - } - }; - - $.magnificPopup.registerModule(IFRAME_NS, { - - options: { - markup: '
    '+ - '
    '+ - ''+ - '
    ', - - srcAction: 'iframe_src', - - // we don't care and support only one default type of URL by default - 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() { - mfp.types.push(IFRAME_NS); - - _mfpOn('BeforeChange', function(e, prevType, newType) { - if(prevType !== newType) { - if(prevType === IFRAME_NS) { - _fixIframeBugs(); // iframe if removed - } else if(newType === IFRAME_NS) { - _fixIframeBugs(true); // iframe is showing - } - }// else { - // iframe source is switched, don't do anything - //} - }); - - _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() { - _fixIframeBugs(); - }); - }, - - getIframe: function(item, template) { - var embedSrc = item.src; - var iframeSt = mfp.st.iframe; - - $.each(iframeSt.patterns, function() { - if(embedSrc.indexOf( this.index ) > -1) { - if(this.id) { - if(typeof this.id === 'string') { - embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length); - } else { - embedSrc = this.id.call( this, embedSrc ); - } - } - embedSrc = this.src.replace('%id%', embedSrc ); - return false; // break; - } - }); - - var dataObj = {}; - if(iframeSt.srcAction) { - dataObj[iframeSt.srcAction] = embedSrc; - } - mfp._parseMarkup(template, dataObj, item); - - mfp.updateStatus('ready'); - - return template; - } - } - }); - - - - /*>>iframe*/ - - /*>>gallery*/ - /** - * Get looped index depending on number of slides - */ - var _getLoopedId = function(index) { - var numSlides = mfp.items.length; - if(index > numSlides - 1) { - return index - numSlides; - } else if(index < 0) { - return numSlides + index; - } - return index; - }, - _replaceCurrTotal = function(text, curr, total) { - return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); - }; - - $.magnificPopup.registerModule('gallery', { - - options: { - enabled: false, - arrowMarkup: '', - preload: [0,2], - navigateByImgClick: true, - arrows: true, - - tPrev: 'Previous (Left arrow key)', - tNext: 'Next (Right arrow key)', - tCounter: '%curr% of %total%' - }, - - proto: { - initGallery: function() { - - var gSt = mfp.st.gallery, - ns = '.mfp-gallery'; - - mfp.direction = true; // true - next, false - prev - - if(!gSt || !gSt.enabled ) return false; - - _wrapClasses += ' mfp-gallery'; - - _mfpOn(OPEN_EVENT+ns, function() { - - if(gSt.navigateByImgClick) { - mfp.wrap.on('click'+ns, '.mfp-img', function() { - if(mfp.items.length > 1) { - mfp.next(); - return false; - } - }); - } - - _document.on('keydown'+ns, function(e) { - if (e.keyCode === 37) { - mfp.prev(); - } else if (e.keyCode === 39) { - mfp.next(); - } - }); - }); - - _mfpOn('UpdateStatus'+ns, function(e, data) { - if(data.text) { - data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); - } - }); - - _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) { - var l = mfp.items.length; - values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ''; - }); - - _mfpOn('BuildControls' + ns, function() { - if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { - var markup = gSt.arrowMarkup, - arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), - arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS); - - arrowLeft.click(function() { - mfp.prev(); - }); - arrowRight.click(function() { - mfp.next(); - }); - - mfp.container.append(arrowLeft.add(arrowRight)); - } - }); - - _mfpOn(CHANGE_EVENT+ns, function() { - if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); - - mfp._preloadTimeout = setTimeout(function() { - mfp.preloadNearbyImages(); - mfp._preloadTimeout = null; - }, 16); - }); - - - _mfpOn(CLOSE_EVENT+ns, function() { - _document.off(ns); - mfp.wrap.off('click'+ns); - mfp.arrowRight = mfp.arrowLeft = null; - }); - - }, - next: function() { - mfp.direction = true; - mfp.index = _getLoopedId(mfp.index + 1); - mfp.updateItemHTML(); - }, - prev: function() { - mfp.direction = false; - mfp.index = _getLoopedId(mfp.index - 1); - mfp.updateItemHTML(); - }, - goTo: function(newIndex) { - mfp.direction = (newIndex >= mfp.index); - mfp.index = newIndex; - mfp.updateItemHTML(); - }, - preloadNearbyImages: function() { - var p = mfp.st.gallery.preload, - preloadBefore = Math.min(p[0], mfp.items.length), - preloadAfter = Math.min(p[1], mfp.items.length), - i; - - for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { - mfp._preloadItem(mfp.index+i); - } - for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { - mfp._preloadItem(mfp.index-i); - } - }, - _preloadItem: function(index) { - index = _getLoopedId(index); - - if(mfp.items[index].preloaded) { - return; - } - - var item = mfp.items[index]; - if(!item.parsed) { - item = mfp.parseEl( index ); - } - - _mfpTrigger('LazyLoad', item); - - if(item.type === 'image') { - item.img = $('').on('load.mfploader', function() { - item.hasSize = true; - }).on('error.mfploader', function() { - item.hasSize = true; - item.loadError = true; - _mfpTrigger('LazyLoadError', item); - }).attr('src', item.src); - } - - - item.preloaded = true; - } - } - }); - - /*>>gallery*/ - - /*>>retina*/ - - var RETINA_NS = 'retina'; - - $.magnificPopup.registerModule(RETINA_NS, { - options: { - replaceSrc: function(item) { - return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; }); - }, - ratio: 1 // Function or number. Set to 1 to disable. - }, - proto: { - initRetina: function() { - if(window.devicePixelRatio > 1) { - - var st = mfp.st.retina, - ratio = st.ratio; - - ratio = !isNaN(ratio) ? ratio : ratio(); - - if(ratio > 1) { - _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) { - item.img.css({ - 'max-width': item.img[0].naturalWidth / ratio, - 'width': '100%' - }); - }); - _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) { - item.src = st.replaceSrc(item, ratio); - }); - } - } - - } - } - }); - - /*>>retina*/ - _checkInstance(); })); \ No newline at end of file diff --git a/assets/js/plugins/smooth-scroll.js b/assets/js/plugins/smooth-scroll.js deleted file mode 100644 index c4179a731f67..000000000000 --- a/assets/js/plugins/smooth-scroll.js +++ /dev/null @@ -1,650 +0,0 @@ -/*! - * smooth-scroll v16.1.2 - * Animate scrolling to anchor links - * (c) 2020 Chris Ferdinandi - * MIT License - * http://github.com/cferdinandi/smooth-scroll - */ - -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define([], (function () { - return factory(root); - })); - } else if (typeof exports === 'object') { - module.exports = factory(root); - } else { - root.SmoothScroll = factory(root); - } -})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) { - - 'use strict'; - - // - // Default settings - // - - var defaults = { - - // Selectors - ignore: '[data-scroll-ignore]', - header: null, - topOnEmptyHash: true, - - // Speed & Duration - speed: 500, - speedAsDuration: false, - durationMax: null, - durationMin: null, - clip: true, - offset: 0, - - // Easing - easing: 'easeInOutCubic', - customEasing: null, - - // History - updateURL: true, - popstate: true, - - // Custom Events - emitEvents: true - - }; - - - // - // Utility Methods - // - - /** - * Check if browser supports required methods - * @return {Boolean} Returns true if all required methods are supported - */ - var supports = function () { - return ( - 'querySelector' in document && - 'addEventListener' in window && - 'requestAnimationFrame' in window && - 'closest' in window.Element.prototype - ); - }; - - /** - * Merge two or more objects together. - * @param {Object} objects The objects to merge together - * @returns {Object} Merged values of defaults and options - */ - var extend = function () { - var merged = {}; - Array.prototype.forEach.call(arguments, (function (obj) { - for (var key in obj) { - if (!obj.hasOwnProperty(key)) return; - merged[key] = obj[key]; - } - })); - return merged; - }; - - /** - * Check to see if user prefers reduced motion - * @param {Object} settings Script settings - */ - var reduceMotion = function () { - if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) { - return true; - } - return false; - }; - - /** - * Get the height of an element. - * @param {Node} elem The element to get the height of - * @return {Number} The element's height in pixels - */ - var getHeight = function (elem) { - return parseInt(window.getComputedStyle(elem).height, 10); - }; - - /** - * Escape special characters for use with querySelector - * @author Mathias Bynens - * @link https://github.com/mathiasbynens/CSS.escape - * @param {String} id The anchor ID to escape - */ - var escapeCharacters = function (id) { - - // Remove leading hash - if (id.charAt(0) === '#') { - id = id.substr(1); - } - - var string = String(id); - var length = string.length; - var index = -1; - var codeUnit; - var result = ''; - var firstCodeUnit = string.charCodeAt(0); - while (++index < length) { - codeUnit = string.charCodeAt(index); - // Note: there’s no need to special-case astral symbols, surrogate - // pairs, or lone surrogates. - - // If the character is NULL (U+0000), then throw an - // `InvalidCharacterError` exception and terminate these steps. - if (codeUnit === 0x0000) { - throw new InvalidCharacterError( - 'Invalid character: the input contains U+0000.' - ); - } - - if ( - // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is - // U+007F, […] - (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F || - // If the character is the first character and is in the range [0-9] - // (U+0030 to U+0039), […] - (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) || - // If the character is the second character and is in the range [0-9] - // (U+0030 to U+0039) and the first character is a `-` (U+002D), […] - ( - index === 1 && - codeUnit >= 0x0030 && codeUnit <= 0x0039 && - firstCodeUnit === 0x002D - ) - ) { - // http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point - result += '\\' + codeUnit.toString(16) + ' '; - continue; - } - - // If the character is not handled by one of the above rules and is - // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or - // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to - // U+005A), or [a-z] (U+0061 to U+007A), […] - if ( - codeUnit >= 0x0080 || - codeUnit === 0x002D || - codeUnit === 0x005F || - codeUnit >= 0x0030 && codeUnit <= 0x0039 || - codeUnit >= 0x0041 && codeUnit <= 0x005A || - codeUnit >= 0x0061 && codeUnit <= 0x007A - ) { - // the character itself - result += string.charAt(index); - continue; - } - - // Otherwise, the escaped character. - // http://dev.w3.org/csswg/cssom/#escape-a-character - result += '\\' + string.charAt(index); - - } - - // Return sanitized hash - return '#' + result; - - }; - - /** - * Calculate the easing pattern - * @link https://gist.github.com/gre/1650294 - * @param {String} type Easing pattern - * @param {Number} time Time animation should take to complete - * @returns {Number} - */ - var easingPattern = function (settings, time) { - var pattern; - - // Default Easing Patterns - if (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity - if (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration - if (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity - if (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration - if (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity - if (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration - if (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity - if (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration - - // Custom Easing Patterns - if (!!settings.customEasing) pattern = settings.customEasing(time); - - return pattern || time; // no easing, no acceleration - }; - - /** - * Determine the document's height - * @returns {Number} - */ - var getDocumentHeight = function () { - return Math.max( - document.body.scrollHeight, document.documentElement.scrollHeight, - document.body.offsetHeight, document.documentElement.offsetHeight, - document.body.clientHeight, document.documentElement.clientHeight - ); - }; - - /** - * Calculate how far to scroll - * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405 - * @param {Element} anchor The anchor element to scroll to - * @param {Number} headerHeight Height of a fixed header, if any - * @param {Number} offset Number of pixels by which to offset scroll - * @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page - * @returns {Number} - */ - var getEndLocation = function (anchor, headerHeight, offset, clip) { - var location = 0; - if (anchor.offsetParent) { - do { - location += anchor.offsetTop; - anchor = anchor.offsetParent; - } while (anchor); - } - location = Math.max(location - headerHeight - offset, 0); - if (clip) { - location = Math.min(location, getDocumentHeight() - window.innerHeight); - } - return location; - }; - - /** - * Get the height of the fixed header - * @param {Node} header The header - * @return {Number} The height of the header - */ - var getHeaderHeight = function (header) { - return !header ? 0 : (getHeight(header) + header.offsetTop); - }; - - /** - * Calculate the speed to use for the animation - * @param {Number} distance The distance to travel - * @param {Object} settings The plugin settings - * @return {Number} How fast to animate - */ - var getSpeed = function (distance, settings) { - var speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed); - if (settings.durationMax && speed > settings.durationMax) return settings.durationMax; - if (settings.durationMin && speed < settings.durationMin) return settings.durationMin; - return parseInt(speed, 10); - }; - - var setHistory = function (options) { - - // Make sure this should run - if (!history.replaceState || !options.updateURL || history.state) return; - - // Get the hash to use - var hash = window.location.hash; - hash = hash ? hash : ''; - - // Set a default history - history.replaceState( - { - smoothScroll: JSON.stringify(options), - anchor: hash ? hash : window.pageYOffset - }, - document.title, - hash ? hash : window.location.href - ); - - }; - - /** - * Update the URL - * @param {Node} anchor The anchor that was scrolled to - * @param {Boolean} isNum If true, anchor is a number - * @param {Object} options Settings for Smooth Scroll - */ - var updateURL = function (anchor, isNum, options) { - - // Bail if the anchor is a number - if (isNum) return; - - // Verify that pushState is supported and the updateURL option is enabled - if (!history.pushState || !options.updateURL) return; - - // Update URL - history.pushState( - { - smoothScroll: JSON.stringify(options), - anchor: anchor.id - }, - document.title, - anchor === document.documentElement ? '#top' : '#' + anchor.id - ); - - }; - - /** - * Bring the anchored element into focus - * @param {Node} anchor The anchor element - * @param {Number} endLocation The end location to scroll to - * @param {Boolean} isNum If true, scroll is to a position rather than an element - */ - var adjustFocus = function (anchor, endLocation, isNum) { - - // Is scrolling to top of page, blur - if (anchor === 0) { - document.body.focus(); - } - - // Don't run if scrolling to a number on the page - if (isNum) return; - - // Otherwise, bring anchor element into focus - anchor.focus(); - if (document.activeElement !== anchor) { - anchor.setAttribute('tabindex', '-1'); - anchor.focus(); - anchor.style.outline = 'none'; - } - window.scrollTo(0 , endLocation); - - }; - - /** - * Emit a custom event - * @param {String} type The event type - * @param {Object} options The settings object - * @param {Node} anchor The anchor element - * @param {Node} toggle The toggle element - */ - var emitEvent = function (type, options, anchor, toggle) { - if (!options.emitEvents || typeof window.CustomEvent !== 'function') return; - var event = new CustomEvent(type, { - bubbles: true, - detail: { - anchor: anchor, - toggle: toggle - } - }); - document.dispatchEvent(event); - }; - - - // - // SmoothScroll Constructor - // - - var SmoothScroll = function (selector, options) { - - // - // Variables - // - - var smoothScroll = {}; // Object for public APIs - var settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval; - - - // - // Methods - // - - /** - * Cancel a scroll-in-progress - */ - smoothScroll.cancelScroll = function (noEvent) { - cancelAnimationFrame(animationInterval); - animationInterval = null; - if (noEvent) return; - emitEvent('scrollCancel', settings); - }; - - /** - * Start/stop the scrolling animation - * @param {Node|Number} anchor The element or position to scroll to - * @param {Element} toggle The element that toggled the scroll event - * @param {Object} options - */ - smoothScroll.animateScroll = function (anchor, toggle, options) { - - // Cancel any in progress scrolls - smoothScroll.cancelScroll(); - - // Local settings - var _settings = extend(settings || defaults, options || {}); // Merge user options with defaults - - // Selectors and variables - var isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false; - var anchorElem = isNum || !anchor.tagName ? null : anchor; - if (!isNum && !anchorElem) return; - var startLocation = window.pageYOffset; // Current location on the page - if (_settings.header && !fixedHeader) { - // Get the fixed header if not already set - fixedHeader = document.querySelector(_settings.header); - } - var headerHeight = getHeaderHeight(fixedHeader); - var endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to - var distance = endLocation - startLocation; // distance to travel - var documentHeight = getDocumentHeight(); - var timeLapsed = 0; - var speed = getSpeed(distance, _settings); - var start, percentage, position; - - /** - * Stop the scroll animation when it reaches its target (or the bottom/top of page) - * @param {Number} position Current position on the page - * @param {Number} endLocation Scroll to location - * @param {Number} animationInterval How much to scroll on this loop - */ - var stopAnimateScroll = function (position, endLocation) { - - // Get the current location - var currentLocation = window.pageYOffset; - - // Check if the end location has been reached yet (or we've hit the end of the document) - if (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) { - - // Clear the animation timer - smoothScroll.cancelScroll(true); - - // Bring the anchored element into focus - adjustFocus(anchor, endLocation, isNum); - - // Emit a custom event - emitEvent('scrollStop', _settings, anchor, toggle); - - // Reset start - start = null; - animationInterval = null; - - return true; - - } - }; - - /** - * Loop scrolling animation - */ - var loopAnimateScroll = function (timestamp) { - if (!start) { start = timestamp; } - timeLapsed += timestamp - start; - percentage = speed === 0 ? 0 : (timeLapsed / speed); - percentage = (percentage > 1) ? 1 : percentage; - position = startLocation + (distance * easingPattern(_settings, percentage)); - window.scrollTo(0, Math.floor(position)); - if (!stopAnimateScroll(position, endLocation)) { - animationInterval = window.requestAnimationFrame(loopAnimateScroll); - start = timestamp; - } - }; - - /** - * Reset position to fix weird iOS bug - * @link https://github.com/cferdinandi/smooth-scroll/issues/45 - */ - if (window.pageYOffset === 0) { - window.scrollTo(0, 0); - } - - // 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); - - // Start scrolling animation - smoothScroll.cancelScroll(true); - window.requestAnimationFrame(loopAnimateScroll); - - }; - - /** - * If smooth scroll element clicked, animate scroll - */ - var clickHandler = function (event) { - - // 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 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; - - // Check if a smooth scroll link was clicked - toggle = event.target.closest(selector); - if (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return; - - // Only run if link is an anchor and points to the current page - if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return; - - // Get an escaped version of the hash - var hash; - try { - hash = escapeCharacters(decodeURIComponent(toggle.hash)); - } catch(e) { - hash = escapeCharacters(toggle.hash); - } - - // Get the anchored element - 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 - if (!anchor) return; - event.preventDefault(); - setHistory(settings); - smoothScroll.animateScroll(anchor, toggle); - - }; - - /** - * Animate scroll on popstate events - */ - var popstateHandler = function (event) { - - // Stop if history.state doesn't exist (ex. if clicking on a broken anchor link). - // fixes `Cannot read property 'smoothScroll' of null` error getting thrown. - if (history.state === null) return; - - // Only run if state is a popstate record for this instantiation - if (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return; - - // Only run if state includes an anchor - - // if (!history.state.anchor && history.state.anchor !== 0) return; - - // Get the anchor - var anchor = history.state.anchor; - if (typeof anchor === 'string' && anchor) { - anchor = document.querySelector(escapeCharacters(history.state.anchor)); - if (!anchor) return; - } - - // Animate scroll to anchor link - smoothScroll.animateScroll(anchor, null, {updateURL: false}); - - }; - - /** - * Destroy the current initialization. - */ - smoothScroll.destroy = function () { - - // If plugin isn't already initialized, stop - if (!settings) return; - - // Remove event listeners - document.removeEventListener('click', clickHandler, false); - window.removeEventListener('popstate', popstateHandler, false); - - // Cancel any scrolls-in-progress - smoothScroll.cancelScroll(); - - // Reset variables - settings = null; - anchor = null; - toggle = null; - fixedHeader = null; - eventTimeout = null; - animationInterval = null; - - }; - - /** - * Initialize Smooth Scroll - * @param {Object} options User settings - */ - var init = function () { - - // feature test - if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.'; - - // Destroy any existing initializations - smoothScroll.destroy(); - - // Selectors and variables - settings = extend(defaults, options || {}); // Merge user options with defaults - fixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header - - // When a toggle is clicked, run the click handler - document.addEventListener('click', clickHandler, false); - - // If updateURL and popState are enabled, listen for pop events - if (settings.updateURL && settings.popstate) { - window.addEventListener('popstate', popstateHandler, false); - } - - }; - - - // - // Initialize plugin - // - - init(); - - - // - // Public APIs - // - - return smoothScroll; - - }; - - return SmoothScroll; - -})); diff --git a/assets/js/vendor/jquery/jquery-3.6.0.js b/assets/js/vendor/jquery/jquery-3.6.0.js deleted file mode 100644 index fc6c299b73e7..000000000000 --- a/assets/js/vendor/jquery/jquery-3.6.0.js +++ /dev/null @@ -1,10881 +0,0 @@ -/*! - * jQuery JavaScript Library v3.6.0 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2021-03-02T17:08Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML 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 ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.6.0", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // 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 ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - 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 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // 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 ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// 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 isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * 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: 2021-02-16 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - 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 ) { - return i; - } - } - return -1; - }, - - 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]", - - // 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 + "*\\]", - - 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" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "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" ), - "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" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - 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 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( 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 ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - 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 ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // 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 ) || rcombinators.test( selector ) ) ) { - - // 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 ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -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; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - 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 ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - 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 - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // 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; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // 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 ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // 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 ) { - el.className = "i"; - 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: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // 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 ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - 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 ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - 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 ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - 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++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - 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, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // 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 ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - 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( "~=" ); - } - - // 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" ); - } - - // 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( ".#.+[+~]" ); - } - - // 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 = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - 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 ) { - 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 ) { - 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 ) { - 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( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // 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( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same 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 - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred 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 ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -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-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // 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 ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // 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; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( 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 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // 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 - // 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 ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - 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 ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - 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 ); - - 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) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - 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" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - 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 ) ) && - - // advance to the next closing parenthesis - ( 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 ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - 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" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - 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 ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = 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 ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // 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() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "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 - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - 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 ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - 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 ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "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 - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // 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 || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.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 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "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 ); - }, - - "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; - } - - return elem.selected === true; - }, - - // 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.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "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" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - 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 ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } 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 ] ); - } 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 ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - 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, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // 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 ( 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 ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - 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 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - 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) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( 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 ) ]; - } else { - 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 ] ) { - 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 === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - 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 ), - len = elems.length; - - if ( 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: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // 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 ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - 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 ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - 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 ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -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 ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - 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 ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - 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 is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -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 ) { - - // Should return 1, but returns 4 (following) - 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 ) { - el.innerHTML = ""; - 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 ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - 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; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - 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 ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - 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 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the primary Deferred - primary = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - primary.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( primary.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return primary.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); - } - - return primary.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( 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 = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - 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 - // this by omitting or other required elements. - thead: [ 1, "", "
    " ], - col: [ 2, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - - _default: [ 0, "", "" ] -}; - -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, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // 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 - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - - // 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 - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - which: true -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - // Suppress native focus or blur as it's already being fired - // in leverageNative. - _default: function() { - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // 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/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - 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" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - 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; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // 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"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // 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 ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -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" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return 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 ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // 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 ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, parserErrorElem; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) {} - - 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; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // 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() { - 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 ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - -originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - 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" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // 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, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - 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 ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -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, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - {% 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/11-posts.md b/docs/_docs/11-posts.md deleted file mode 100644 index 41b72aa191d9..000000000000 --- a/docs/_docs/11-posts.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Working with Posts" -permalink: /docs/posts/ -excerpt: "Suggestions and Front Matter defaults for working with posts." -last_modified_at: 2018-03-20T15:59:57-04:00 ---- - -Posts are stored in the `_posts` directory and named according to the `YEAR-MONTH-DAY-title.MARKUP` format as per [the usual](https://jekyllrb.com/docs/posts/). - -Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. For example, the following are examples of valid post filenames: - -``` -2016-07-20-writing-jekyll-posts.md -2015-01-03-static-site-generators.markdown -``` - -**Recommended Front Matter Defaults:** - -```yaml -defaults: - # _posts - - scope: - path: "" - type: posts - values: - layout: single - author_profile: true - read_time: true - comments: true - share: true - related: true -``` - -Adding the above to `_config.yml` will assign the `single` layout and enable: *author profile*, *reading time*, *comments*, [*social sharing links*]({{ "/docs/layouts/#social-sharing-links" | relative_url }}), and *related posts*, for all posts. - -**ProTip:** Remember to write unique `excerpt` descriptions for each post for improved SEO and archive listings. -{: .notice--info} \ No newline at end of file diff --git a/docs/_docs/12-pages.md b/docs/_docs/12-pages.md deleted file mode 100644 index 01aa62f41ffd..000000000000 --- a/docs/_docs/12-pages.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "Working with Pages" -permalink: /docs/pages/ -excerpt: "Suggestions and Front Matter defaults for working with pages." -last_modified_at: 2016-11-03T11:13:12-04:00 ---- - -To better organize all of your pages you can centralize them into a single location similar to posts and collections. - -**Step 1:** Start by placing pages (`.md` or `.html` files) into a `_pages` directory. Meaningfully naming files should be the goal. Avoid patterns like `/about/index.md` as it makes distinguishing between multiple `index.md` files harder. - -```bash -sample-project -└── _pages/ - ├── 404.md # custom 404 page - ├── about.md # about page - └── contact.md # contact page -``` - -**Step 2:** Include pages to be sure Jekyll "sees" and processes the files inside of `_pages`. Add `include: ["_pages"]` to `_config.yml`. - -**Step 3:** Assign permalink overrides in the YAML Front Matter of each. - -Examples: - -| filename | permalink | -| -------- | --------- | -| _pages/about.md | `permalink: /about/` | -| _pages/home.md | `permalink: /` | -| _pages/contact.md | `permalink: /contact/` | - -**Recommended Front Matter Defaults:** - -```yaml -defaults: - # _pages - - scope: - path: "" - type: pages - values: - layout: single - author_profile: true -``` \ No newline at end of file diff --git a/docs/_docs/13-collections.md b/docs/_docs/13-collections.md deleted file mode 100644 index 8a88b51a5e0a..000000000000 --- a/docs/_docs/13-collections.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Working with Collections" -permalink: /docs/collections/ -excerpt: "Suggestions and Front Matter defaults for working with collections." -last_modified_at: 2018-03-20T16:00:02-04:00 ---- - -Collections like posts and pages work as you'd expect. If you're new to them be sure to read [Jekyll's documentation](https://jekyllrb.com/docs/collections/). - -The theme has been built with collections in mind and you will find [several examples]({{ "/collection-archive/" | relative_url }}) on the demo site ([portfolio]({{ "/portfolio/" | relative_url }}), [recipes]({{ "/recipes/" | relative_url }}), [pets]({{ "/pets/" | relative_url }})). - -**Collections in the Wild:** This set of documentation is also [built as a collection](https://github.com/{{ site.repository }}/blob/master/docs/_docs/) if you're looking for a fully fleshed out example to inspect. -{: .notice--info} - ---- - -A popular use case for collections is to build a portfolio section as part of one's personal site. Let's quickly walk through the steps to do that. - -**Step 1:** Configure the portfolio collection by adding the following to `_config.yml`. - -```yaml -collections: - portfolio: - output: true - permalink: /:collection/:path/ -``` - -These settings essentially say output `index.html` files for each portfolio document in `_portfolio` at `_site/portfolio//`. - -Just like posts and pages you'll probably want to set some defaults for the Front Matter: - -```yaml -defaults: - # _portfolio - - scope: - path: "" - type: portfolio - values: - layout: single - author_profile: false - 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. - -![portfolio collection example]({{ "/assets/images/mm-portfolio-collection-example.jpg" | relative_url }}) diff --git a/docs/_docs/14-helpers.md b/docs/_docs/14-helpers.md deleted file mode 100644 index f76dff403ad1..000000000000 --- a/docs/_docs/14-helpers.md +++ /dev/null @@ -1,421 +0,0 @@ ---- -title: "Helpers" -permalink: /docs/helpers/ -excerpt: "Jekyll `_includes` and other helpers to use as shortcuts for creating archives, galleries, table of contents, and more." -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Image 1 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Image 2 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" - title: "Image 3 title caption" -feature_row: - - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Placeholder 1" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder 2" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--inverse" - - 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: 2020-05-01T10:22:56-04:00 -toc: true -toc_label: "Helpers" -toc_icon: "cogs" ---- - -You can think of these Jekyll helpers as little shortcuts. Since GitHub Pages doesn't allow most plugins --- [custom tags](https://jekyllrb.com/docs/plugins/#tags) are out. Instead the theme leverages [**includes**](https://jekyllrb.com/docs/templates/#includes) to do something similar. - -## Group by array - -[Jekyll Group-By-Array](https://github.com/mushishi78/jekyll-group-by-array) by Max White. - -A liquid include file for Jekyll that allows an object to be grouped by an array. - -## Figure - -Generate a `
    ` element with a single image and caption. - -| Include Parameter | Required | Description | -| ----------------- | ------------ | ---------------------------------------------------------------------------------------------------- | -| **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 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 popup=true image_path="/assets/images/unsplash-image-10.jpg" alt="this is a placeholder image" caption="This is a figure caption." %} - -```html -
    - - this is a placeholder image - -
    This is a figure caption.
    -
    -``` - -## Gallery - -Generate a `
    ` element with optional caption of arrays with two or more images. - -To place a gallery add the necessary YAML Front Matter. - -| Name | Required | Description | -| -------------- | ------------ | --------------------------------------------------------------------------------------------------------------------- | -| **url** | Optional | URL to link gallery image to (eg. a larger detail image). | -| **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. | -| **title** | Optional | Title text for image. Will display as a caption in a Magnific Popup overlay when linked to a larger image with `url`. | - -```yaml -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Image 1 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Image 2 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" - title: "Image 3 title caption" -``` - -And then drop-in the gallery include in the body where you'd like it to appear. - -| Include Parameter | Required | Description | Default | -| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| **id** | Optional | To add multiple galleries to a document uniquely name them in the YAML Front Matter and reference in `{% raw %}{% include gallery id="gallery_id" %}{% endraw %}` | `gallery` | -| **layout** | Optional | Layout type. 2 column: `half`, 3 column: `third`, single column: `''` (blank) | Determined by gallery size. Two items: `half`, three or more items: `third`. | -| **class** | Optional | Use to add a `class` attribute to the surrounding `
    ` element for additional styling needs. | | -| **caption** | Optional | Gallery caption description. Markdown is allowed. | | - -```liquid -{% raw %}{% include gallery caption="This is a sample gallery with **Markdown support**." %}{% endraw %} -``` - -**Gallery example with caption:** - -{% include gallery caption="This is a sample gallery with **Markdown support**." %} - -**More Gallery Goodness:** A few more examples and [source code](https://github.com/{{ site.repository }}/blob/master/docs/\_posts/2010-09-09-post-gallery.md) can be seen in [this sample gallery post]({{ "" | relative_url }}{% post_url 2010-09-09-post-gallery %}). -{: .notice--info} - -## Feature row - -Designed to compliment the [`splash`]({{ "/docs/layouts/#splash-page-layout" | relative_url }}) page layout as a way of arranging and aligning "feature blocks" containing text or image. - -To add a feature row containing three content blocks with text and image, add the following YAML Front Matter - -| 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)"` | -| **alt** | Optional | Alternate text for image. | | -| **title** | Optional | Content block title. | | -| **excerpt** | Optional | Content block excerpt text. Markdown is allowed. | | -| **url** | Optional | URL that the button should link to. | | -| **btn_label** | Optional | Button text label. | `more_label` in UI Text data file. | -| **btn_class** | Optional | Button style. See [utility classes]({{ "/docs/utility-classes/#buttons" | relative_url }}) for options. | `btn` | - -```yaml -feature_row: - - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Placeholder 1" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder 2" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--inverse" - - 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." -``` - -And then drop-in the feature row include in the body where you'd like it to appear. - -| Include Parameter | Required | Description | Default | -| ----------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -| **id** | Optional | To add multiple rows to a document uniquely name them in the YAML Front Matter and reference in `{% raw %}{% include feature_row id="row2" %}{% endraw %}` | `feature_row` | -| **type** | Optional | Alignment of the featured blocks in the row. Options include: `left`, `center`, or `right` aligned. | | - -```liquid -{% raw %}{% include feature_row %}{% endraw %} -``` - -{% include feature_row %} - -**More Feature Row Goodness:** A [few more examples]({{ "/splash-page/" | relative_url }}) and [source code](https://github.com/{{ site.repository }}/blob/master/docs/\_pages/splash-page.md) can be seen in the demo site. -{: .notice--info} - -## Responsive video embed - -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`, `google-drive`, or `bilibili` | -| `danmaku` | Optional | Bilibili only, [details below](#Bilibili) | - -### 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: - -```liquid -{% raw %}{% include video id="XsxDH4HcOWA" provider="youtube" %}{% endraw %} -``` - -{% include video id="XsxDH4HcOWA" provider="youtube" %} - -To embed it as a video header you'd use the following YAML Front Matter - -```yaml -header: - video: - id: XsxDH4HcOWA - provider: youtube -``` - -**Tip:** if you'd like to start the video at a particular timestamp, you can append `?start=110` (for instance) to the video `id` in order to have the video start at 1:50. -{: .notice--info } - -### Vimeo - -To embed the following Vimeo video at url `https://vimeo.com/212731897` into a post or page's main content you'd use: - -```liquid -{% raw %}{% include video id="212731897" provider="vimeo" %}{% endraw %} -``` - -{% include video id="212731897" provider="vimeo" %} - -To embed it as a video header you'd use the following YAML Front Matter - -```yaml -header: - video: - id: 212731897 - provider: vimeo -``` - -### Google Drive - -To embed the following Google Drive video at url `https://drive.google.com/file/d/1u41lIbMLbV53PvMbyYc9HzvBug5lNWaO/preview` into a post or page's main content you'd use: - -```liquid -{% raw %}{% include video id="1u41lIbMLbV53PvMbyYc9HzvBug5lNWaO" provider="google-drive" %}{% endraw %} -``` - -{% include video id="1u41lIbMLbV53PvMbyYc9HzvBug5lNWaO" provider="google-drive" %} - -To embed it as a video header you'd use the following YAML Front Matter - -```yaml -header: - video: - id: 212731897 - 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. - -![table of contents example]({{ "/assets/images/mm-toc-helper-example.jpg" | relative_url }}) - -### Enabled via YAML Front Matter - -Add `toc: true` to the YAML Front Matter of any post or page. - -| Parameter | Required | Description | Default | -| -------------- | -------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **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/v6/search?s=solid&m=free) **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** - -```yaml -toc: true -toc_label: "My Table of Contents" -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 %} - -
    - {{ notice-text | markdownify }} -
    - -### 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. - -```liquid -{% raw %}{% include toc %}{% endraw %} -``` - -**Note:** this method only works with Markdown files. -{: .notice--warning} - -**Deprecated:** `toc` helper will be removed in the next major version of the theme. It is encouraged that you migrate to the YAML Front Matter method above. -{: .notice--danger} - -| 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/v6/search?s=solid&m=free) **file-alt** icon. Other FA icons can be used instead. | - -**TOC example with custom title and icon** - -```liquid -{% raw %}{% include toc icon="cog" title="My Table of Contents" %}{% endraw %} -``` - -## Navigation list - -Include an unordered list of links to be used as sidebar navigation with the `nav_list` helper. - -**1.** Start by adding a set of titles and URLs to `_data/navigation.yml` in the same way the [`main` navigation]({{ "/docs/navigation/" | relative_url }}) is built. - -`foo` navigation example: - -```yaml -# _data/navigation.yml -foo: - - title: "Link 1 Title" - url: /link-1-page-url/ - - - title: "Link 2 Title" - url: http://external-link.com - - - title: "Link 3 Title" - url: /link-3-page-url/ - - - title: "Link 4 Title" - url: /link-4-page-url/ -``` - -For a navigation list that has child pages you'd structure the YAML like this: - -```yaml -# _data/navigation.yml -foo: - - title: "Parent Link 1" - url: /parent-1-page-url/ - children: - - title: "Child Link 1" - url: /child-1-page-url/ - - title: "Child Link 2" - url: /child-2-page-url/ - - - title: "Parent Link 2" - url: /parent-2-page-url/ - children: - - title: "Child Link 1" - url: /child-1-page-url/ - - title: "Child Link 2" - url: /child-2-page-url/ - - title: "Child Link 3" - url: /child-3-page-url/ -``` - -**2:** On the page(s) you'd like the `foo` sidebar nav add the following YAML Front Matter, referencing the same key name. - -```yaml -sidebar: - nav: "foo" -``` - -**ProTip:** If you're applying the same navigation list to several pages setting it as a [Front Matter default](https://jekyllrb.com/docs/configuration/#front-matter-defaults) is the better option. -{: .notice--info} - -The theme's documentation is built with the `nav_list` helper so if you'd like an example to dissect take a look at `navigation.yml`, `_config.yml` and `_doc` collection in the [`/docs/` folder](https://github.com/{{ site.repository }}/tree/master/docs/) of this repo. - -To add a navigation list to a post or page's main content instead of the sidebar use the include this way: - -```liquid -{% raw %}{% include nav_list nav="foo" %}{% endraw %} -``` - -{% include nav_list nav="foo" %} - -| Parameter | Required | Description | -| --------- | ------------ | -------------------------------------------------------- | -| items | **Required** | Name of the links array found in `_data/navigation.yml`. | diff --git a/docs/_docs/15-utility-classes.md b/docs/_docs/15-utility-classes.md deleted file mode 100644 index 3e20023f0e70..000000000000 --- a/docs/_docs/15-utility-classes.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: "Utility Classes" -permalink: /docs/utility-classes/ -excerpt: "CSS classes for aligning text/image, styling buttons and notices, and more." -last_modified_at: 2018-11-25T19:46:43-05:00 -toc: true -toc_label: "Utility Classes" -toc_icon: "cogs" ---- - -Using the Kramdown Markdown renderer with Jekyll allows you to add [block](http://kramdown.gettalong.org/quickref.html#block-attributes) and [inline attributes](http://kramdown.gettalong.org/quickref.html#inline-attributes). This is nice if you want to add custom styling to text and image, and still write in Markdown. - -**Jekyll 3:** Kramdown is the default for `jekyll new` sites and those hosted on GitHub Pages. Not using Kramdown? That's OK. The following classes are still available when used with standard HTML. -{: .notice--warning} - -## Text alignment - -Align text blocks with the following classes. - -Left aligned text `.text-left` -{: .text-left} - -```markdown -Left aligned text -{: .text-left} -``` - ---- - -Center aligned text. `.text-center` -{: .text-center} - -```markdown -Center aligned text. -{: .text-center} -``` - ---- - -Right aligned text. `.text-right` -{: .text-right} - -```markdown -Right aligned text. -{: .text-right} -``` - ---- - -**Justified text.** `.text-justify` Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vel eleifend odio, eu elementum purus. In hac habitasse platea dictumst. Fusce sed sapien eleifend, sollicitudin neque non, faucibus est. Proin tempus nisi eu arcu facilisis, eget venenatis eros consequat. -{: .text-justify} - -```markdown -Justified text. -{: .text-justify} -``` - ---- - -No wrap text. `.text-nowrap` -{: .text-nowrap} - -```markdown -No wrap text. -{: .text-nowrap} -``` - -## Image alignment - -Position images with the following classes. - -![image-center]({{ "/assets/images/image-alignment-580x300.jpg" | relative_url }}){: .align-center} - -The image above happens to be **centered**. - -```markdown -![image-center](/assets/images/filename.jpg){: .align-center} -``` - ---- - -![image-left]({{ "/assets/images/image-alignment-150x150.jpg" | relative_url }}){: .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**. There should be plenty of room above, below, and to the right of the image. Just look at him there --- Hey guy! Way to rock that left side. I don't care what the right aligned image says, you look great. Don't let anyone else tell you differently. - -```markdown -![image-left](/assets/images/filename.jpg){: .align-left} -``` - ---- - -![image-right]({{ "/assets/images/image-alignment-300x200.jpg" | relative_url }}){: .align-right} - -And now we're going to shift things to the **right align**. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there --- Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. - -```markdown -![image-right](/assets/images/filename.jpg){: .align-right} -``` - ---- - -![full]({{ "/assets/images/image-alignment-1200x4002.jpg" | relative_url }}) -{: .full} - -The image above should extend outside of the parent container on right. - -```markdown -![full](/assets/images/filename.jpg) -{: .full} -``` - -## Buttons - -Make any link standout more when applying the `.btn .btn--primary` classes. - -```html -Link Text -``` - -| Button Type | Example | Class | Kramdown | -| ------ | ------- | ----- | ------- | -| Default | [Text](#link){: .btn} | `.btn` | `[Text](#link){: .btn}` | -| Primary | [Text](#link){: .btn .btn--primary} | `.btn .btn--primary` | `[Text](#link){: .btn .btn--primary}` | -| Success | [Text](#link){: .btn .btn--success} | `.btn .btn--success` | `[Text](#link){: .btn .btn--success}` | -| Warning | [Text](#link){: .btn .btn--warning} | `.btn .btn--warning` | `[Text](#link){: .btn .btn--warning}` | -| Danger | [Text](#link){: .btn .btn--danger} | `.btn .btn--danger` | `[Text](#link){: .btn .btn--danger}` | -| Info | [Text](#link){: .btn .btn--info} | `.btn .btn--info` | `[Text](#link){: .btn .btn--info}` | -| Inverse | [Text](#link){: .btn .btn--inverse} | `.btn .btn--inverse` | `[Text](#link){: .btn .btn--inverse}` | -| Light Outline | [Text](#link){: .btn .btn--light-outline} | `.btn .btn--light-outline` | `[Text](#link){: .btn .btn--light-outline}` | - -| Button Size | Example | Class | Kramdown | -| ----------- | ------- | ----- | -------- | -| X-Large | [X-Large Button](#){: .btn .btn--primary .btn--x-large} | `.btn .btn--primary .btn--x-large` | `[Text](#link){: .btn .btn--primary .btn--x-large}` | -| Large | [Large Button](#){: .btn .btn--primary .btn--large} | `.btn .btn--primary .btn--large` | `[Text](#link){: .btn .btn--primary .btn--large}` | -| Default | [Default Button](#){: .btn .btn--primary} | `.btn .btn--primary` | `[Text](#link){: .btn .btn--primary }` | -| Small | [Small Button](#){: .btn .btn--primary .btn--small} | `.btn .btn--primary .btn--small` | `[Text](#link){: .btn .btn--primary .btn--small}` | - -## Notices - -Call attention to a block of text. - -| Notice Type | Class | -| ----------- | ----- | -| Default | `.notice` | -| Primary | `.notice--primary` | -| Info | `.notice--info` | -| Warning | `.notice--warning` | -| Success | `.notice--success` | -| Danger | `.notice--danger` | - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice}` class. -{: .notice} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--primary}` class. -{: .notice--primary} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--info}` class. -{: .notice--info} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--warning}` class. -{: .notice--warning} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--success}` class. -{: .notice--success} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--danger}` class. -{: .notice--danger} - -{% capture notice-text %} -You can also add the `.notice` class to a `
    ` element. - -* Bullet point 1 -* Bullet point 2 -{% endcapture %} - -
    -

    Notice Headline:

    - {{ notice-text | markdownify }} -
    diff --git a/docs/_docs/16-stylesheets.md b/docs/_docs/16-stylesheets.md deleted file mode 100644 index c8acf05146d5..000000000000 --- a/docs/_docs/16-stylesheets.md +++ /dev/null @@ -1,393 +0,0 @@ ---- -title: "Stylesheets" -permalink: /docs/stylesheets/ -excerpt: "Instructions for customizing and building the theme's stylesheets." -last_modified_at: 2018-11-25T19:47:43-05:00 -toc: true ---- - -The theme's `assets/css/main.css` file is built from several SCSS partials located in [`_sass/`](https://github.com/mmistakes/minimal-mistakes/tree/master/_sass) and is structured as follows: - -```bash -minimal-mistakes -├── _sass -| └── minimal-mistakes -| ├── vendor # vendor SCSS partials -| | ├── breakpoint # media query mixins -| | ├── magnific-popup # Magnific Popup lightbox -| | └── susy # Susy grid system -| ├── _animations.scss # animations -| ├── _archive.scss # archives (list, grid, feature views) -| ├── _base.scss # base HTML elements -| ├── _buttons.scss # buttons -| ├── _footer.scss # footer -| ├── _masthead.scss # masthead -| ├── _mixins.scss # mixins (em function, clearfix) -| ├── _navigation.scss # nav links (breadcrumb, priority+, toc, pagination, etc.) -| ├── _notices.scss # notices -| ├── _page.scss # pages -| ├── _print.scss # print styles -| ├── _reset.scss # reset -| ├── _sidebar.scss # sidebar -| ├── _syntax.scss # syntax highlighting -| ├── _tables.scss # tables -| ├── _utilities.scss # utility classes (text/image alignment) -| └── _variables.scss # theme defaults (fonts, colors, etc.) -├── assets -| ├── css -| | └── main.scss # main stylesheet, loads SCSS partials in _sass -``` - -## Customizing - -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 - `bundle show minimal-mistakes-jekyll` to get the path to it). - - Copy the contents of `/assets/css/main.scss` from there to - ``. - - Customize what you want inside `/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) - to ``. - - Customize what you want inside `` 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 `/assets/css/main.scss`. For instance, to change the -link color used throughout the theme add: - -```scss -$link-color: red; -``` - -Before any `@import` lines. - -### 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. - -
    - indented paragraph example -
    Example of indented paragraphs.
    -
    - -The size of the indent can also be customized by changing the value of `$indent-var`. - -### Font stacks - -By default the theme uses [system fonts](https://medium.com/designing-medium/system-shock-6b1dc6d6596f#.rb81vgn7i) for all of the font stacks (serif, sans-serif, and monospace). This is done in part to provide a clean base for you to build off of and to improve performance since we aren't loading any custom webfonts by default. - -```scss -/* system typefaces */ -$serif : Georgia, Times, serif; -$sans-serif : -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; -$monospace : Monaco, Consolas, "Lucida Console", monospace; -``` - -Sans-serif fonts have been used for most of the type, with serifs reserved for captions. If you wish to change this you'll need to poke around the various `SCSS` partials and modify `font-family` declarations. - -**ProTip:** To use webfonts from services like [Adobe TypeKit](https://typekit.com/) or [Google Fonts](https://www.google.com/fonts) simply update the font stacks and then add their scripts to `_includes/head/custom.html`. -{: .notice--info} - -#### Typography from older versions - -Not a fan of the refreshed typography of the theme and want to revert back an older version? Easy enough. - -**1.** Add this Google Fonts script to [`_includes/head/custom.html`](https://github.com/mmistakes/minimal-mistakes/blob/master/_includes/head/custom.html): - -```html - -``` - -**2.** Update the following SCSS variables: - -```scss -$serif : "PT Serif", Georgia, Times, serif; -$sans-serif-narrow : "PT Sans Narrow", -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; - -$global-font-family : $serif; -$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. - -Example: - -```scss -.page__lead { - font-family: $global-font-family; - font-size: $type-size-4; -} -``` - -Type sizes are set in ems to proportional scale as the screen size changes. Large headlines that look great on desktop monitors will shrink ever so slightly as to not be too big on mobile devices. To adjust this hierarchy simply edit the default values: - -```scss -/* type scale */ -$type-size-1 : 2.441em; // ~39.056px -$type-size-2 : 1.953em; // ~31.248px -$type-size-3 : 1.563em; // ~25.008px -$type-size-4 : 1.25em; // ~20px -$type-size-5 : 1em; // ~16px -$type-size-6 : 0.75em; // ~12px -$type-size-7 : 0.6875em; // ~11px -$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 effect when changed. - -#### Syntax highlighting - -To make customizing the colors used in code highlighted blocks, a base of sixteen colors ([Base16](http://chriskempson.com/projects/base16/)) have been used. - -Code block colors can easily be changed by overriding any of the following color variables: - -##### Default - -![default-code-block]({{ '/assets/images/default-code-block.jpg' | relative_url }}) - -```scss -/* default syntax highlighting (base16) */ -$base00: #263238; -$base01: #2e3c43; -$base02: #314549; -$base03: #546e7a; -$base04: #b2ccd6; -$base05: #eeffff; -$base06: #eeffff; -$base07: #ffffff; -$base08: #f07178; -$base09: #f78c6c; -$base0a: #ffcb6b; -$base0b: #c3e88d; -$base0c: #89ddff; -$base0d: #82aaff; -$base0e: #c792ea; -$base0f: #ff5370; -``` - -##### Solarized light - -![solarized-light-code-block]({{ '/assets/images/solarized-light-code-block.jpg' | relative_url }}) - -```scss -/* solarized light syntax highlighting (base16) */ -$base00: #fafafa !default; -$base01: #073642 !default; -$base02: #586e75 !default; -$base03: #657b83 !default; -$base04: #839496 !default; -$base05: #586e75 !default; -$base06: #eee8d5 !default; -$base07: #fdf6e3 !default; -$base08: #dc322f !default; -$base09: #cb4b16 !default; -$base0a: #b58900 !default; -$base0b: #859900 !default; -$base0c: #2aa198 !default; -$base0d: #268bd2 !default; -$base0e: #6c71c4 !default; -$base0f: #d33682 !default; -``` - -##### Contrast - -![contrast-code-block]({{ '/assets/images/contrast-code-block.jpg' | relative_url }}) - -```scss -/* contrast syntax highlighting (base16) */ -$base00: #000000; -$base01: #242422; -$base02: #484844; -$base03: #6c6c66; -$base04: #918f88; -$base05: #b5b3aa; -$base06: #d9d7cc; -$base07: #fdfbee; -$base08: #ff6c60; -$base09: #e9c062; -$base0a: #ffffb6; -$base0b: #a8ff60; -$base0c: #c6c5fe; -$base0d: #96cbfe; -$base0e: #ff73fd; -$base0f: #b18a3d; -``` - -##### Dark - -![dark-code-block]({{ '/assets/images/dark-code-block.jpg' | relative_url }}) - -```scss -/* dark syntax highlighting (base16) */ -$base00: #ffffff; -$base01: #e0e0e0; -$base02: #d0d0d0; -$base03: #b0b0b0; -$base04: #000000; -$base05: #101010; -$base06: #151515; -$base07: #202020; -$base08: #ff0086; -$base09: #fd8900; -$base0a: #aba800; -$base0b: #00c918; -$base0c: #1faaaa; -$base0d: #3777e6; -$base0e: #ad00a1; -$base0f: #cc6633; -``` - -##### Dirt - -![dirt-code-block]({{ '/assets/images/dirt-code-block.jpg' | relative_url }}) - -```scss -/* dirt syntax highlighting (base16) */ -$base00: #231e18; -$base01: #302b25; -$base02: #48413a; -$base03: #9d8b70; -$base04: #b4a490; -$base05: #cabcb1; -$base06: #d7c8bc; -$base07: #e4d4c8; -$base08: #d35c5c; -$base09: #ca7f32; -$base0a: #e0ac16; -$base0b: #b7ba53; -$base0c: #6eb958; -$base0d: #88a4d3; -$base0e: #bb90e2; -$base0f: #b49368; -``` - -##### Dracula - -![dracula-code-block]({{ '/assets/images/dracula-code-block.jpg' | relative_url }}) - -```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 - -![neon-code-block]({{ '/assets/images/neon-code-block.jpg' | relative_url }}) - -```scss -/* neon syntax highlighting (base16) */ -$base00: #ffffff; -$base01: #e0e0e0; -$base02: #d0d0d0; -$base03: #b0b0b0; -$base04: #000000; -$base05: #101010; -$base06: #151515; -$base07: #202020; -$base08: #ff0086; -$base09: #fd8900; -$base0a: #aba800; -$base0b: #00c918; -$base0c: #1faaaa; -$base0d: #3777e6; -$base0e: #ad00a1; -$base0f: #cc6633; -``` - -##### Plum - -![plum-code-block]({{ '/assets/images/plum-code-block.jpg' | relative_url }}) - -```scss -/* plum syntax highlighting (base16) */ -$base00: #ffffff; -$base01: #e0e0e0; -$base02: #d0d0d0; -$base03: #b0b0b0; -$base04: #000000; -$base05: #101010; -$base06: #151515; -$base07: #202020; -$base08: #ff0086; -$base09: #fd8900; -$base0a: #aba800; -$base0b: #00c918; -$base0c: #1faaaa; -$base0d: #3777e6; -$base0e: #ad00a1; -$base0f: #cc6633; -``` - -##### Sunrise - -![sunrise-code-block]({{ '/assets/images/sunrise-code-block.jpg' | relative_url }}) - -```scss -/* sunrise syntax highlighting (base16) */ -$base00: #1d1f21; -$base01: #282a2e; -$base02: #373b41; -$base03: #969896; -$base04: #b4b7b4; -$base05: #c5c8c6; -$base06: #e0e0e0; -$base07: #ffffff; -$base08: #cc6666; -$base09: #de935f; -$base0a: #f0c674; -$base0b: #b5bd68; -$base0c: #8abeb7; -$base0d: #81a2be; -$base0e: #b294bb; -$base0f: #a3685a; -``` - -### Breakpoints and grid stuff - -Probably won't need to touch these, but they're there if you need to. Width variables are used with the [`@include breakpoint()`](http://breakpoint-sass.com/) mixin to adapt the design of certain elements. - -And `$susy` is used for setting [the grid](http://susy.oddbird.net/) the theme uses. Uncommenting the lines under `debug` can be useful if you want to show the columns when adjusting the layout. - -
    - Susy grid overlay for debugging -
    Susy grid debug overlay enabled.
    -
    - -### Disabling animations - -You can disable either the fade-in intro animation, element transition animations, or both by overriding the corresponding variables. For example if you wanted to disable all animations you could include the following lines: - -```scss -$intro-transition : none; -$global-transition : none; -``` diff --git a/docs/_docs/17-javascript.md b/docs/_docs/17-javascript.md deleted file mode 100644 index 919315cb5d8c..000000000000 --- a/docs/_docs/17-javascript.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: "JavaScript" -permalink: /docs/javascript/ -excerpt: "Instructions for customizing and building the theme's scripts." -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). - -```bash -minimal mistakes -├── assets -| ├── js -| | ├── plugins -| | | ├── gumshoe.js # simple scrollspy -| | | ├── jquery.ba-throttle-debounce.js # rate-limit functions -| | | ├── jquery.fitvids.js # fluid width video embeds -| | | ├── jquery.greedy-navigation.js # priority plus navigation -| | | ├── jquery.magnific-popup.js # responsive lightbox -| | | └── smooth-scroll.js # make same-page links scroll smoothly -| | ├── vendor -| | | └── jquery -| | | └── jquery-3.5.1.js -| | ├── _main.js # jQuery plugin settings and other scripts -| | └── main.min.js # concatenated and minified theme script -``` - -## Customizing - -To modify or add your own scripts include them in [`assets/js/_main.js`](https://github.com/mmistakes/minimal-mistakes/blob/master/assets/js/_main.js) and then rebuild using `npm run build:js`. See below for more details. - -If you add additional scripts to `assets/js/plugins/` and would like them concatenated with the others, be sure to update the `uglify` script in [`package.json`](https://github.com/mmistakes/minimal-mistakes/blob/master/package.json). Same goes for scripts that you remove. - -You can also add scripts to the `` or closing `` elements by adding paths to following arrays in `_config.yml`. - -**Example:** - -```yaml -head_scripts: - - https://code.jquery.com/jquery-3.3.1.min.js - - /assets/js/your-custom-head-script.js -footer_scripts: - - /assets/js/your-custom-footer-script.js -after_footer_scripts: - - /assets/js/custom-script-loads-after-footer.js -``` - -**Note:** If you assign `footer_scripts` the theme's `/assets/js/main.min.js` file will be deactivated. This script includes jQuery and various other plugins that you'll need to find replacements for and include separately. -{: .notice--warning} - ---- - -## Build process - -In an effort to reduce dependencies a set of [**npm scripts**](https://css-tricks.com/why-npm-scripts/) are used to build `main.min.js` instead of task runners like [Gulp](http://gulpjs.com/) or [Grunt](http://gruntjs.com/). If those tools are more your style then by all means use them instead :wink:. - -To get started: - -1. Install [Node.js](http://nodejs.org/). -2. `cd` to the root of your project. -3. Install all of the dependencies by running `npm install`. - -**Note:** If you upgraded from a previous version of the theme be sure you copied over [`package.json`](https://github.com/{{ site.repository }}/blob/master/package.json) prior to running `npm install`. -{: .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 deleted file mode 100644 index e70fd79fe4dc..000000000000 --- a/docs/_docs/18-history.md +++ /dev/null @@ -1,1753 +0,0 @@ ---- -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: '2024-06-27T21:13:13+08:00' -toc: false ---- - - - -{% 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). - -### 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) - -### 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 `

    ` 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 `` 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 `` 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 `

    ` 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 - -- Update jQuery to v3.4.1. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137) -- Update Gumshoe to v5.1.1. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140) - -### Bug Fixes - -- Fix JavaScript error when resizing pages with table of contents. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140) - -## [4.16.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.2) - -### Bug Fixes - -- Revert jQuery back to version v3.3.1, v.3.4.0 causes issues with other plugins that haven't been updated. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137) - -## [4.16.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.1) - -### Enhancements - -- Update [`compress` layout](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#compress-layout) to v3.1.0. [#2128](https://github.com/mmistakes/minimal-mistakes/pull/2128) -- Update jQuery to v3.4.0. [#2129](https://github.com/mmistakes/minimal-mistakes/pull/2129) - -### Bug Fixes - -- Fix Gumshoe related JavaScript error on pages without a table of contents. [#2124](https://github.com/mmistakes/minimal-mistakes/pull/2124) - -## [4.16.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.0) - -### Enhancements - -- Improve search `input` semantics for Lunr and Google search providers. [#2123](https://github.com/mmistakes/minimal-mistakes/pull/2123) -- Allow adding JavaScript files after those bundled in the theme. [#2110](https://github.com/mmistakes/minimal-mistakes/issues/2110) [#2116](https://github.com/mmistakes/minimal-mistakes/pull/2116) -- Add `$max-width` Sass variable for adjusting page content's maximum width. [#2093](https://github.com/mmistakes/minimal-mistakes/pull/2093) -- Add Thai localized UI text strings. [#2111](https://github.com/mmistakes/minimal-mistakes/pull/2111) -- Update Font Awesome to [v5.8.1](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.8.1). [#2102](https://github.com/mmistakes/minimal-mistakes/pull/2102) -- Add missing Vietnamese localized UI text strings. [#2097](https://github.com/mmistakes/minimal-mistakes/pull/2097) -- Replace jQuery Smooth Scroll with Smooth Scroll + Gumshoe. [#2082](https://github.com/mmistakes/minimal-mistakes/pull/2082) -- Add styling for [GFM task lists](https://help.github.com/en/articles/about-task-lists#creating-task-lists). [#2092](https://github.com/mmistakes/minimal-mistakes/issues/2092) -- Update Google Universal Analytics to load async. [#2079](https://github.com/mmistakes/minimal-mistakes/pull/2079) -- Remove Google+ social sharing button, comment provider, and author link configs from theme. -- Add missing Chinese text strings. [#2072](https://github.com/mmistakes/minimal-mistakes/pull/2072) - -### Bug Fixes - -- Fix table of contents active link styling. -- Add missing Hindi localized UI text strings. [#2105](https://github.com/mmistakes/minimal-mistakes/pull/2105) [#2106](https://github.com/mmistakes/minimal-mistakes/pull/2106) -- Fix Brazilian Portuguese text strings. [#2098](https://github.com/mmistakes/minimal-mistakes/pull/2098) -- Fix typo in French `results_found` text string. [#2096](https://github.com/mmistakes/minimal-mistakes/pull/2096) -- Fix figures inside of list elements. [#2094](https://github.com/mmistakes/minimal-mistakes/pull/2094) -- Remove Font Awesome `data-search-pseudo-elements` attribute as it degrades smooth scroll performance. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075#issuecomment-472437014) -- Fix footnote links incompatibility with smooth scroll plugin. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075) -- Loosen Bundler dependency in ruby gem. - -## [4.15.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.2) - -### Enhancements - -- Close search overlay with Esc. [#2055](https://github.com/mmistakes/minimal-mistakes/pull/2055) -- Update Swedish localized UI text strings. [#2056](https://github.com/mmistakes/minimal-mistakes/pull/2056) -- Update Font Awesome to 5.7.1 and add `data-search-pseudo-elements` attribute. [#2053](https://github.com/mmistakes/minimal-mistakes/pull/2053) -- Add Malayalam localized UI text strings. [#2037](https://github.com/mmistakes/minimal-mistakes/pull/2037) - -### Bug Fixes - -- 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) - -## [4.15.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.1) - -### Bug Fixes - -- Fix empty `` when `site_logo` is not assigned. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-454809876) - -## [4.15.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.0) - -### Enhancements - -- Add logo and title customization to the masthead. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026) -- Add support to customize `issue-term` for utterances comment provider. [#2022](https://github.com/mmistakes/minimal-mistakes/pull/2022) -- Allow custom canonical url on a page-by-page basis. [#2021](https://github.com/mmistakes/minimal-mistakes/pull/2021) -- Update table of contents navigation based on scroll position to indicate which link is currently active in the viewport. [#2020](https://github.com/mmistakes/minimal-mistakes/pull/2020) -- Clicking table of contents links changes URL has fragment. [#2019](https://github.com/mmistakes/minimal-mistakes/pull/2019) [#2023](https://github.com/mmistakes/minimal-mistakes/pull/2023) - -## [4.14.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.2) - -### Enhancements - -- Improve accessibility by adding label text to search button toggle. [#2014](https://github.com/mmistakes/minimal-mistakes/pull/2014) -- Update Lunr to 2.3.5. [#2010](https://github.com/mmistakes/minimal-mistakes/pull/2010) -- Shorten Internet Explorer conditional statement in `_includes/head.html`. [#2006](https://github.com/mmistakes/minimal-mistakes/pull/2006) -- Add Persian localized UI text strings. [#2004](https://github.com/mmistakes/minimal-mistakes/pull/2004) -- Remove unused JavaScript variables from Staticman comment script. [#1996](https://github.com/mmistakes/minimal-mistakes/pull/1996) -- Update Font Awesome to 5.6.0. [#1995](https://github.com/mmistakes/minimal-mistakes/pull/1995) -- Change remaining schema.org markup to `https`. [#1978](https://github.com/mmistakes/minimal-mistakes/pull/1978) -- Update NPM dependencies. - -### Bug Fixes - -- Fix wide tables that overflow parent container. [#2008](https://github.com/mmistakes/minimal-mistakes/issues/2008) -- Fix Spanish `comments_label` and `comments_title` UI text strings. [#1997](https://github.com/mmistakes/minimal-mistakes/pull/1997) -- Allow sidebar navigation with custom sidebar content. [#1986](https://github.com/mmistakes/minimal-mistakes/issues/1986) -- Fix Google Custom Search JavaScript error when not using Instant Search. [#1983](https://github.com/mmistakes/minimal-mistakes/pull/1983) - -## [4.14.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.1) - -### Bug Fixes - -- Fix closed navicon on hover. - -## [4.14.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.14.0) - -### Enhancements - -- Change schema.org markup to `https`. [#1969](https://github.com/mmistakes/minimal-mistakes/pull/1969) -- Add Google Drive as video provider. [#1967](https://github.com/mmistakes/minimal-mistakes/pull/1967) -- Match `:focus` color to skin. -- Add support for [utterances](https://utteranc.es/) comments. [#1909](https://github.com/mmistakes/minimal-mistakes/issues/1909) -- Use privacy aware embed options for YouTube and Vimeo in [responsive video helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#responsive-video-embed). [#1964](https://github.com/mmistakes/minimal-mistakes/pull/1964) -- Add `rel="nofollow noopener noreferrer"` to author profile links. [#1924](https://github.com/mmistakes/minimal-mistakes/pull/1924) -- Improve color contrast of primary buttons and links. -- Add Punjabi localized UI text strings. [#1962](https://github.com/mmistakes/minimal-mistakes/pull/1962) -- Add Hindi localized UI text strings. [#1888](https://github.com/mmistakes/minimal-mistakes/pull/1888) -- Update Lunr to `2.3.3`. [#1885](https://github.com/mmistakes/minimal-mistakes/pull/1885) -- Cache "static" includes to improve build performance. **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. [#1874](https://github.com/mmistakes/minimal-mistakes/pull/1874) -- Make entire feature and archive items "clickable". [#1864](https://github.com/mmistakes/minimal-mistakes/pull/1864) -- Allow custom Staticman endpoints. [#1842](https://github.com/mmistakes/minimal-mistakes/issues/1842) -- Remove `type="text/css"` from Algolia script includes. [#1836](https://github.com/mmistakes/minimal-mistakes/pull/1836) -- Remove unneeded `HandheldFriendly` and `MobileOptimized` meta tags. [#1837](https://github.com/mmistakes/minimal-mistakes/pull/1837) -- Update Font Awesome to version `5.5.0` and add `integrity` hash. [#1922](https://github.com/mmistakes/minimal-mistakes/pull/1922) -- Always load Google 404 Linkhelp script over HTTPS. [#1829](https://github.com/mmistakes/minimal-mistakes/pull/1829) -- Remove deprecated `base_path` include helper. - -### Bug Fixes - -- Prevent current post from showing in the related posts section. [#1976](https://github.com/mmistakes/minimal-mistakes/pull/1976) -- Fix dark skins syntax highlighting colors. [#1973](https://github.com/mmistakes/minimal-mistakes/issues/1973) -- Remove unnecessary closing bracket in analytics documentation. [#1915](https://github.com/mmistakes/minimal-mistakes/pull/1915) -- Fix breadcrumb navigation alignment. [#1917](https://github.com/mmistakes/minimal-mistakes/issues/1917) -- Fix Algolia search link positioning. [#1904](https://github.com/mmistakes/minimal-mistakes/pull/1904) -- Fix Lunr search index merging words. [#1883](https://github.com/mmistakes/minimal-mistakes/issues/1883) -- Properly apply `relative_url` filter to internal links in header overlay `actions` array. -- Revert cached includes (`include_cached`) for comment and analytics providers. [#1905](https://github.com/mmistakes/minimal-mistakes/issues/1905) - -## [4.13.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.13.0) - -### Enhancements - -- Add Romanian localized UI text strings. [#1814](https://github.com/mmistakes/minimal-mistakes/pull/1814) -- Improve author link flexibility. [#1581](https://github.com/mmistakes/minimal-mistakes/issues/1581) -- Improve footer link flexibility. -- Deprecate `cta_label` and `cta_url` in header overlay in favor of new `actions` array that allows for multiple "call to action" button links. [#1461](https://github.com/mmistakes/minimal-mistakes/issues/1461) -- Add support to [gallery helper](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) for defining column layout (`half`, `third`, or single `''`). [#1821](https://github.com/mmistakes/minimal-mistakes/issues/1821) - -### Bug Fixes - -- Fix sidebar navigation list toggle. [#1819](https://github.com/mmistakes/minimal-mistakes/issues/1819) -- Fix hover animation for links with `:visited` state. [#1820](https://github.com/mmistakes/minimal-mistakes/issues/1820) - -## [4.12.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.2) - -### Enhancements - -- Add missing Italian localized UI text strings. [#1793](https://github.com/mmistakes/minimal-mistakes/pull/1793) -- Update [jekyll-toc](https://github.com/allejo/jekyll-toc) to `v1.0.5`. -- 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 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 `{{ 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) - -### Enhancements - -- Add missing French localized UI text strings. [#1769](https://github.com/mmistakes/minimal-mistakes/pull/1769) [#1741](https://github.com/mmistakes/minimal-mistakes/pull/1741) -- Update Font Awesome to version [`5.2.0`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). [#1754](https://github.com/mmistakes/minimal-mistakes/pull/1754) -- Add documentation note to update root `Gemfile` when forking theme. - -### Bug Fixes - -- Remove slash at the beginning of `path` in staticman.yml example. [#1772](https://github.com/mmistakes/minimal-mistakes/pull/1772) -- Fix `read_time` logic in header image overlay. [#1756](https://github.com/mmistakes/minimal-mistakes/pull/1756) - -## [4.12.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.12.0) - -### Enhancements - -- Add Hungarian localized UI text strings. [#1682](https://github.com/mmistakes/minimal-mistakes/pull/1682) -- DRY `tags_max` calculation in tags.html layout. [#1696](https://github.com/mmistakes/minimal-mistakes/pull/1696) -- DRY `categories_max` calculation in categories.html layout. -- 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) -- 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) - -### 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 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) -- Fix "Back to Top" links on pages that use [header overlays](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay). - -## [4.11.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.11.2) - -### Enhancements - -- 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. - -## [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. - -### 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. - -## [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) - -### Bug Fixes - -- 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -### 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 `
    ` 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. `
    my link`). -- Add `air`, `contrast`, `dark`, `dirt`, `mint`, and `sunrise` skin color options. [#1208](https://github.com/mmistakes/minimal-mistakes/issues/1208) -- Allow scripts in `` and before `` 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) - -### 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. - -## [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) - -### 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) - -### 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) - -## [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) - -### 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) - -### 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) - -## [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) - -### Bug Fixes - -- Toggle close button on `mouseleave`. [#975](https://github.com/mmistakes/minimal-mistakes/issues/975) -- Remove extraneous `` and `` 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`. - -## [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) - -### 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) - -## [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) - -### 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) - -## [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) - -## [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: - - ``` - --- - layout: - --- - ``` - - Any local customizations you make to `/assets/js/main.min.js` should now replace the theme gem's version. - -## [4.2.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.2.2) - -### 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) - -### 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) - -### 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) - -## [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/) - -### Maintenance - -- 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) - -### 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) - -### 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). - -## [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) - -### Bug Fixes - -- 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 - -### 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) - -## [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) - -### Maintenance - -- 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) - -## [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. - -### Maintenance - -- 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) - -### 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) - -### Maintenance - -- 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 `
    ` 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) - -### Maintenance - -- 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`). - -### Bug Fixes - -- 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. - -## [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 `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. - -### 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. - -## [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) - -### Bug Fixes - -- 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. - -## [3.4.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.7) - -### Enhancements - -- Add `layout` based and user-defined class names to `` 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) - -## [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) - -### Bug Fixes - -- 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) - -### Bug Fixes - -- 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 `{% 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) - -### Enhancements - -- Add French "comments" related localized UI text. [#472](https://github.com/mmistakes/minimal-mistakes/pull/472) - -### Bug Fixes - -- Exclude `vendor` in Jekyll config file. -- Fix Liquid syntax error for offending parenthesis. [#479](https://github.com/mmistakes/minimal-mistakes/issues/479) - -### Maintenance - -- Update gems: `colorator` (1.1.0), `forwardable-extended` (2.6.0), `github-pages` (93), `jekyll` (= 3.2.1), `minima` (= 1.0.1). - -## [3.4.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.3) - -### Enhancements - -- Make ["honeypot" `input`](https://github.com/mmistakes/minimal-mistakes/commit/06a8249a69a37dddda7e2a5bfbe32056c1a9a607) in Staticman comment form less obvious to spam bots -- Add padding to `.highlight` code blocks to better [align `overflow` scrollbar](https://github.com/mmistakes/minimal-mistakes/commit/e4abec0a6f7f8cff72505ca0754615df294fd5b3) to the bottom. -- Add additional image options for Twitter card social sharing meta tags. [#466](https://github.com/mmistakes/minimal-mistakes/pull/466) -- Add structured data markup for Staticman comments. [#458](https://github.com/mmistakes/minimal-mistakes/issues/458) - -### Bug Fixes - -- Format `og:locale` tag with `_` instead of `-`. [#462](https://github.com/mmistakes/minimal-mistakes/issues/462) - -### Maintenance - -- Add note to docs about using `url: http://localhost:4000` when working locally. - -## [3.4.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.2) - -### Enhancements - -- Improve UX of static comment forms. [#448](https://github.com/mmistakes/minimal-mistakes/issues/448) - -## [3.4.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.1) - -### Enhancements - -- Add `staticman.filename` configuration with UNIX timestamp for sorting data files. example ~> `comment-1470943149`. - -### Bug Fixes - -- Don't add `` to author name if URL is blank. - -## [3.4.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.0) - -### Enhancements - -- Support static-based commenting via [Staticman](https://staticman.net/) for sites hosted with GitHub Pages. [#424](https://github.com/mmistakes/minimal-mistakes/issues/424) - -## [3.3.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.7) - -### Bug Fixes - -- Re-enabled Jekyll plugins in `_config.yml` in case they aren't autoloaded in `Gemfile`. [#417](https://github.com/mmistakes/minimal-mistakes/issues/417) - -### Enhancements - -- Fallback to `site.github.url` for use in `{{ base_path }}` when `site.url` is `nil`. -- Replace Sass and Autoprefixer `npm` build scripts with [Jekyll's built-in asset support](https://jekyllrb.com/docs/assets/). [#333](https://github.com/mmistakes/minimal-mistakes/issues/333) - -### Maintenance - -- Document `site.repository` and its role with [`github-metadata`](https://github.com/jekyll/github-metadata) gem. -- Add sample [archive page with content](https://mmistakes.github.io/minimal-mistakes/archive-layout-with-content/) for testing styles on demo site. - -## [3.3.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.6) - -### Bug Fixes - -- 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 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) -- 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.` - -## [3.3.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.4) - -### Enhancements - -- Add support for configurable feed URL to use a service like FeedBurner instead of linking directly to `feed.xml` in `` and the site footer. [#378](https://github.com/mmistakes/minimal-mistakes/issues/378), [#379](https://github.com/mmistakes/minimal-mistakes/pull/379), [#406](https://github.com/mmistakes/minimal-mistakes/pull/406) -- Add Turkish localized UI text. [#403](https://github.com/mmistakes/minimal-mistakes/pull/403) - -### Maintenance - -- Update gems: `activesupport` (4.2.7), `ffi` (1.9.14), `github-pages` (88), `jekyll-redirect-from` (0.11.0), `jekyll-watch` (1.5.0). - -## [3.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.3) - -### 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 - -- Fix JavaScript that triggers "sticky" sidebar to avoid layout issues on screen sizes < `1024px`. [#396](https://github.com/mmistakes/minimal-mistakes/issues/396) - -## [3.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.1) - -### Enhancements - -- Enable image popup on < 500px wide screens. [#385](https://github.com/mmistakes/minimal-mistakes/issues/385) -- Indicate the relationship between component URLs in a paginated series by applying `rel="prev"` and `rel="next"` to pages that use `site.paginator`. [#253](https://github.com/mmistakes/minimal-mistakes/issues/253) -- Improve link posts in archive listings. [#276](https://github.com/mmistakes/minimal-mistakes/issues/276) - -### Maintenance - -- Update gems: `github-pages` (86), `ffi` 1.9.13, `jekyll-mentions` 1.1.3, and `rouge` 1.11.1 -- Fix note about custom sidebar content appearing below author profile. [#388](https://github.com/mmistakes/minimal-mistakes/issues/388) - -## [3.2.13](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.13) - -### 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`. - -## [3.2.12](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.12) - -### Enhancements - -- Remove window width "magic number" from sticky sidebar check in `main.js` for improved flexibility. [#375](https://github.com/mmistakes/minimal-mistakes/pull/375) - -### Bug Fixes - -- Fix author override conditional where a missing `authors.yml` would show broken sidebar content. Defaults to `site.author`. [#376](https://github.com/mmistakes/minimal-mistakes/pull/376) - -## [3.2.11](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.11) - -### Bug Fixes - -- Fix disappearing author sidebar links [#372](https://github.com/mmistakes/minimal-mistakes/issues/372) - -### Maintenance - -- Update gems: `github-pages` (84), `jekyll-github-metadata` 2.0.2, and `kramdown` 1.11.1 -- Update vendor JavaScript: jQuery 1.12.4, Stickyfill.js 1.1.4 -- Update Font Awesome 4.6.3 - -## [3.2.10](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.10) - -### Maintenance - -- Add `CONTRIBUTING.md` - -## [3.2.9](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.9) - -### Enhancements - -- Add support for [header overlay images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay) for Open Graph images. [#358](https://github.com/mmistakes/minimal-mistakes/pull/358) - -### Bug Fixes - -- Fix `Person` typo Schema.org type [#358](https://github.com/mmistakes/minimal-mistakes/pull/358) - -### Maintenance - -- Update `github-pages` gem and dependencies. -- Remove `minutes_read` to avoid awkward reading time wording [#356](https://github.com/mmistakes/minimal-mistakes/issues/356) - -## [3.2.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.8) - -### Bug Fixes - -- Remove `cursor: pointer` that appears on white-space surrounding author side list items and links. [#354](https://github.com/mmistakes/minimal-mistakes/pull/354) - -### Maintenance - -- Add contributing information to `README.md`. [#357](https://github.com/mmistakes/minimal-mistakes/issues/357) - -## [3.2.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.7) - -### Enhancements - -- Add French localized UI text. [#346](https://github.com/mmistakes/minimal-mistakes/pull/346) - -### Bug Fixes - -- Fix branch logic for Yandex and Alexa in `seo.html`. [#348](https://github.com/mmistakes/minimal-mistakes/pull/348) - -## [3.2.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.6) - -### Bug Fixes - -- Fix error `Liquid Exception: divided by 0 in _includes/archive-single.html, included in _layouts/single.html` caused by null `words_per_minute` in `_config.yml`. [#345](https://github.com/mmistakes/minimal-mistakes/pull/345) - -## [3.2.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.5) - -### Bug Fixes - -- Fix link color in hero overlay to be white. -- Remove underlines from archive item titles. - -## [3.2.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.4) - -### Enhancements - -- Improve text alignment of masthead, hero overlay, page footer to be flush left and remove awkward white-space gaps. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342) -- Add Spanish localized UI text. [#338](https://github.com/mmistakes/minimal-mistakes/pull/338) - -### Bug Fixes - -- Fix alignment of icons in author sidebar [#341](https://github.com/mmistakes/minimal-mistakes/issues/341) - -### Maintenance - -- Add background color to page footer to set it apart from main content. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342) -- Add terms and privacy policy to theme's demo site. [#343](https://github.com/mmistakes/minimal-mistakes/issues/343) -- Update screenshots found in theme documentation. - -## [3.2.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.3) - -### Enhancements - -- 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) - -### 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) - -## [3.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.1) - -### Bug Fixes - -- Remove need for "double tapping" masthead menu links on iOS devices. [#315](https://github.com/mmistakes/minimal-mistakes/issues/315) - -### Maintenance - -- Add `ISSUE_TEMPLATE.md` for improve issue submission process. - -## [3.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.0) - -### Bug Fixes - -- Fix missing category/tag links in post footer due to possible conflict with `site.tags` and `site.categories`. [#329](https://github.com/mmistakes/minimal-mistakes/issues/329#issuecomment-222375568) - -## [3.1.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.8) - -### Bug Fixes - -- Fix `Liquid Exception: undefined method 'gsub' for nil:NilClass in _layouts/single.html` error when `page.title` is null. `

    ` element is now conditional if `title:` is not set for a `page` or collection item. [#312](https://github.com/mmistakes/minimal-mistakes/issues/312) - -### Maintenance - -- Remove duplicate `fa-twitter` and `fa-twitter-square` classes from `_utilities.scss`. [#302](https://github.com/mmistakes/minimal-mistakes/issues/302) - -- Document installing additional Jekyll gem dependencies when using `gem "jekyll"` instead of `gem "github-pages"` to avoid any errors on run. [#305](https://github.com/mmistakes/minimal-mistakes/issues/305) - -## [3.1.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.7) - -### Enhancements - -- Add translation key for "Recent Posts" used in home page `index.html`. [#316](https://github.com/mmistakes/minimal-mistakes/pull/316) - -### Maintenance - -- Small fix to avoid underlying the whitespace between icons and related text when hovering. [#303](https://github.com/mmistakes/minimal-mistakes/pull/303) - -## [3.1.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.6) - -### Maintenance - -- Update gem dependencies. Run `bundle` to update `Gemfile.lock`. - -## [3.1.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.5) - -### Maintenance - -- Fix `www` and `https` links in author profile include [#293](https://github.com/mmistakes/minimal-mistakes/pull/293) - -## [3.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.4) - -### Enhancements - -- 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) - -### Enhancements - -- Improve `site.locale` documentation [#284](https://github.com/mmistakes/minimal-mistakes/issues/284) -- Remove ProTip note about protocol-less `site.url` as it is an anti-pattern [#288](https://github.com/mmistakes/minimal-mistakes/issues/288) - -### Bug Fixes - -- Fix `og_image` URL in seo.html [#277](https://github.com/mmistakes/minimal-mistakes/issues/277) -- Fix `author_profile` toggle when assigned in a `_layout` [#285](https://github.com/mmistakes/minimal-mistakes/issues/285) -- Fix typo in `build:all` npm script [#283](https://github.com/mmistakes/minimal-mistakes/pull/283) -- Fix URL typo documentation [#287](https://github.com/mmistakes/minimal-mistakes/issues/287) -- SEO author bug. If `twitter.username` is set and `author.twitter` is `nil` bad things happen. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289) - -## [3.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.2) - -### 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 - -- Fixed reading time bug when `words_per_minute` wasn't set in `_config.yml` [#271](https://github.com/mmistakes/minimal-mistakes/issues/271) - -## [3.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.0) - -### Enhancements - -- Updated [Font Awesome](https://fortawesome.github.io/Font-Awesome/whats-new/) to version 4.6.1 -- Added optional GitHub and Bitbucket links to footer if set on `site.author` in `_config.yml`. - -### Bug Fixes - -- Fixed Bitbucket URL typo in author sidebar. - -## [3.0.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.0.3) - -### Enhancements - -- Rebuilt the entire theme: layouts, includes, stylesheets, scripts, you name it. -- Refreshed the look and feel while staying true to the original design of the theme (author sidebar/main content). -- Replaced grid system with [Susy](http://susy.oddbird.net/). -- Replaced Grunt tasks with `npm` scripts. -- Removed Google Fonts and replaced with system fonts to improve performance (they can be [added back](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/) if desired) -- Greatly improved [theme documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/). -- Increased the amount of sample posts, sample pages, and sample collections to throughly test the theme and edge-cases. -- Moved all sample content and assets out of `master` to keep it as clean as possible for forking. -- Added new layouts for `splash` pages, archives for [`jekyll-archives`](https://github.com/jekyll/jekyll-archives) if enabled, and [`compress.html`](https://github.com/penibelst/jekyll-compress-html) to improve performance. -- Added taxonomy links to posts (tags and categories). -- Added optional "reading time" meta data. -- Improved Liquid used for Twitter Cards and Open Graph data in ``. -- Improved `gallery` include helper and added `feature_row` for use with splash page layout. -- Added Keybase.io, author web URI, and Bitbucket optional links to sidebar. -- Add `feed.xml` link to footer. -- Added a [UI text data file](https://mmistakes.github.io/minimal-mistakes/docs/ui-text/) to easily change all text found in the theme. -- Added LinkedIn to optional social share buttons. -- Added Facebook, Google+, and custom commenting options in addition to Disqus. -- Added optional breadcrumb links. - -## [2.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.1) - -## [2.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.0) - -### Enhancements - -- Add support for Jekyll 3.0 -- Minor updates to syntax highlighting CSS and theme documentation - -## [2.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.3) - -### Enhancements - -- Cleaner print styles that remove the top navigation, social sharing buttons, and other elements not needed when printed. - -## [2.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.2) - -### Enhancements - -- Add optional CodePen icon/url to author side bar [#156](https://github.com/mmistakes/minimal-mistakes/pull/156) -- Documented Stackoverflow username explanation in `_config.yml` [#157](https://github.com/mmistakes/minimal-mistakes/pull/157) -- Simplified Liquid in `post-index.html` to better handle year listings [#166](https://github.com/mmistakes/minimal-mistakes/pull/166) - -### Bug Fixes - -- Cleanup Facebook related Open Graph meta tags [#149](https://github.com/mmistakes/minimal-mistakes/issues/149) -- Corrected minor typos [#158](https://github.com/mmistakes/minimal-mistakes/pull/158) [#175](https://github.com/mmistakes/minimal-mistakes/issues/175) - -## [2.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.1) - -### Enhancements - -- Add optional XING profile link to author sidebar -- Include open graph meta tags for feature image (if assigned) [#149](https://github.com/mmistakes/minimal-mistakes/issues/149) -- Create an include for feed footer - -### Bug Fixes - -- Remove http protocol from Google search form on sample 404 page -- Only show related posts if there are one or more available -- Fix alignment of email address link in author sidebar - -## [2.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.0) - -### Enhancements - -- Add optional social sharing buttons ([#42](https://github.com/mmistakes/minimal-mistakes/issues/42)) - -![social sharing buttons](https://cloud.githubusercontent.com/assets/1376749/5860522/d9f28a96-a22f-11e4-9b83-940a3a9a766a.png) - -- Add Soundcloud, YouTube ([#95](https://github.com/mmistakes/minimal-mistakes/pull/95)), Flickr ([#119](https://github.com/mmistakes/minimal-mistakes/pull/119)), and Weibo ([#116](https://github.com/mmistakes/minimal-mistakes/pull/116)) icons for use in author sidebar. -- Fix typos in posts and documentation and remove references to Less -- Include note about Octopress gem being optional -- Post author override support extended to the Atom feed ([#71](https://github.com/mmistakes/minimal-mistakes/pull/71)) -- Only include email address in feed if specified in `_config.yml` or author `_data` -- Wrap all page content in `#main` to harmonize article and post index styles ([#86](https://github.com/mmistakes/minimal-mistakes/issues/86)) -- Include new sample feature images for posts and pages -- Table of contents improvements: fix collapse toggle, indent nested elements, show on small screens, and create an `_include` for reusing in posts and pages. -- Include note about running Jekyll with `bundle exec` when using Bundler -- Fix home page path in top navigation -- Remove Google Authorship ([#120](https://github.com/mmistakes/minimal-mistakes/issues/120)) -- Remove duplicate author content that displayed in `div.article-author-bottom` -- Removed unused `_sass/print.scss` styles -- Improve comments in `.scss` files - -## [2.0.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/v2.0) - -## [1.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.3) - -### Enhancements - -- Added new icons and profile links for Stackoverflow, Dribbble, Pinterest, Foursquare, and Steam to the author bio sidebar. -- Cleaned up the Kramdown auto table of contents styling to be more readable -- Removed page width specific .less stylesheets and created mixins for easier updating -- Removed Modernizr since it wasn't being used -- Added pages to sitemap.xml -- Added category: to rake new_post task -- Minor typographic changes - -### Bug Fixes - -- Corrected various broken links in README and Theme Setup. - -## [1.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.1) - -### Enhancements - -- Cleaned up table of contents styling -- Reworked top navigation to be a better experience on small screens. Nav items now display vertically when the menu button is tapped, revealing links with larger touch targets. - -![menu animation](https://camo.githubusercontent.com/3fbd8c1326485f4b1ab32c0005c0fca7660b5d31/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313337363734392f323136343037352f31653366303663322d393465372d313165332d383961612d6436623636376562306564662e676966) - -## [1.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.2.0) - -### Bug Fixes - -- Table weren't filling the entire width of the content container. They now scale at 100%. Thanks [@dhruvbhatia](https://github.com/dhruvbhatia) - -### Enhancements - -- Decreased spacing between Markdown footnotes -- Removed dark background on footer -- Removed UPPERCASE styling on post titles in the index listing - -## [1.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.4) - -### Bug Fixes - -- Fix top navigation bug issue ([#10](https://github.com/mmistakes/minimal-mistakes/issues/10)) for real this time. Remember to clear your floats kids. - -## [1.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.3) - -### Bug Fixes - -- Fix top navigation links that weren't click able on small viewports (Issue [#10](https://github.com/mmistakes/minimal-mistakes/issues/10)). -- Remove line wrap from top navigation links that may span multiple lines. - -## [1.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.2) - -### Enhancements - -- Added Grunt build script for compiling Less/JavaScript and optimizing image assets. -- Added support for large image summary Twitter card. -- Stylesheet adjustments - -## [1.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.1) - -### Bug Fixes - -- Removed [Typeplate](http://typeplate.com/) styles. Was [causing issues with newer versions of Less](https://github.com/typeplate/typeplate.github.io/issues/108) and is no longer maintained. - -### Enhancements - -- Added [image attribution](http://mmistakes.github.io/minimal-mistakes/theme-setup/#feature-images) for post and page feature images. -- Added [404 page](http://mmistakes.github.io/minimal-mistakes/404.html). -- Cleaned up various Less variables to better align with naming conventions used in other MM Jekyll themes. -- Removed Chrome Frame references. -- Added global CSS3 transitions to text and block elements. -- Improved typography in a few places. - -## [1.0.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.2) - -### Enhancements - -- 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/19-contributing.md b/docs/_docs/19-contributing.md deleted file mode 100644 index bd555ee2c46f..000000000000 --- a/docs/_docs/19-contributing.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Contributing" -permalink: /docs/contributing/ -excerpt: "How you can contribute to make this theme better." -last_modified_at: 2017-03-22T09:51:05-04:00 ---- - -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. - -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:. - -## Pull requests - -When submitting a pull request: - -1. Clone the repo. -2. Create a branch off of `master` and give it a meaningful name (e.g. `my-awesome-new-feature`) and describe the feature or fix. -3. Open a pull request on GitHub. - -Theme documentation and demo pages can be found in the [`/docs`](https://github.com/{{ site.repository }}/blob/master/docs) folder if you'd like to tackle any "low-hanging fruit" like fixing typos, bad grammar, etc. \ No newline at end of file diff --git a/docs/_docs/20-docs-2-2.md b/docs/_docs/20-docs-2-2.md deleted file mode 100644 index bcaa01cfa1b9..000000000000 --- a/docs/_docs/20-docs-2-2.md +++ /dev/null @@ -1,299 +0,0 @@ ---- -title: "2.2 Documentation" -permalink: /docs/docs-2-2/ -excerpt: "Setup and installation instructions for Minimal Mistakes 2.2 (deprecated)." -last_modified_at: 2018-03-20T16:00:34-04:00 -toc: true ---- - -## Installation - -Minimal Mistakes now requires [Jekyll](http://jekyllrb.com/) 3.0. Make sure to run `bundle update` if you aren't on the latest version to update all gem dependencies. - -If you are creating a new Jekyll site using Minimal Mistakes follow these steps: - -1. Fork the [Minimal Mistakes repo](http://github.com/mmistakes/minimal-mistakes/fork). -2. Clone the repo you just forked and rename it. -3. [Install Bundler](http://bundler.io) `gem install bundler` and Run `bundle install` to install all dependencies (Jekyll, [Jekyll-Sitemap](https://github.com/jekyll/jekyll-sitemap), [Octopress](https://github.com/octopress/octopress), etc) -4. Update `config.yml`, add navigation, and replace demo posts and pages with your own. Full details below. - -If you want to use Minimal Mistakes with an existing Jekyll site follow these steps: - -1. [Download Minimal Mistakes](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.1) and unzip. -2. Rename `minimal-mistakes-master` to something meaningful ie: `new-site` -3. Run `bundle install` to install all dependencies (Jekyll, [Jekyll-Sitemap](https://github.com/jekyll/jekyll-sitemap), [Octopress](https://github.com/octopress/octopress), etc) -4. Remove demo posts/pages and replace with your own posts, pages, and any other content you want to move over. -5. Update posts' and pages' YAML to match variables used by Minimal Mistakes. Full details below. -6. Update `_config.yml` and add navigation links. Full details below. - -**Pro-tip:** Delete the `gh-pages` branch after cloning and start fresh by branching off `master`. There is a bunch of garbage in `gh-pages` used for the theme's demo site that I'm guessing you won't want. -{: .notice} - -## Running Jekyll - -The preferred method for running Jekyll is with `bundle exec`, but if you're willing to deal gem conflicts feel free to go cowboy with a `jekyll serve` or `jekyll build`. - -> In some cases, running executables without bundle exec may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle. -> ->However, this is unreliable and is the source of considerable pain. Even if it looks like it works, it may not work in the future or on another machine. - -```bash -bundle exec jekyll serve -``` - -## Scaffolding - -How Minimal Mistakes is organized and what the various files are. All posts, layouts, includes, stylesheets, assets, and whatever else is grouped nicely under the root folder. The compiled Jekyll site outputs to `_site/`. - -```bash -minimal-mistakes/ -├── _includes/ -| ├── author-bio.html # bio stuff layout. pulls optional owner data from _config.yml -| ├── disqus-comments # Disqus comments script -| ├── footer # site footer -| ├── head # site head -| ├── navigation # site top navigation -| ├── open-graph.html # Twitter Cards and Open Graph meta data -| └── scripts # site scripts -├── _layouts/ -| ├── home.html # homepage layout -| ├── page.html # page layout -| ├── post-index.html # post index layout -| └── post.html # single post layout -├── _posts/ # MarkDown formatted posts -├── _sass/ # Sass stylesheets -├── _templates/ # used by Octopress to define YAML variables for new posts/pages -├── about/ # sample about page -├── assets/ -| ├── css/ # compiled stylesheets -| ├── fonts/ # webfonts -| ├── js/ -| | ├── _main.js # main JavaScript file, plugin settings, etc -| | ├── plugins/ # scripts and jQuery plugins to combine with _main.js -| | ├── scripts.min.js # concatenated and minified _main.js + plugin scripts -| | └── vendor/ # vendor scripts to leave alone and load as is -| └── less/ -├── images/ # images for posts and pages -├── 404.md # 404 page -├── feed.xml # Atom feed template -├── index.md # sample homepage. lists 5 latest posts -├── posts/ # sample post index page. lists all posts in reverse chronology -└── theme-setup/ # theme setup page. safe to remove -``` - -## Site Setup - -A quick checklist of the files you'll want to edit to get up and running. - -### Site Wide Configuration - -`_config.yml` is your friend. Open it up and personalize it. Most variables are self explanatory but here's an explanation of each if needed: - -#### title - -The title of your site... shocker! - -Example `title: My Awesome Site` - -#### url - -Used to generate absolute urls in `sitemap.xml`, `feed.xml`, and for generating canonical URLs in ``. When developing locally either comment this out or use something like `http://localhost:4000` so all assets load properly. *Don't include a trailing `/`*. - -Examples: - -```yaml -url: http://mmistakes.github.io/minimal-mistakes -url: http://localhost:4000 -url: //cooldude.github.io -url: -``` - -#### Google Analytics and Webmaster Tools - -Google Analytics UA and Webmaster Tool verification tags can be entered under `owner` in `_config.yml`. For more information on obtaining these meta tags check [Google Webmaster Tools](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35179) and [Bing Webmaster Tools](https://ssl.bing.com/webmaster/configure/verify/ownership) support. - -### Navigation Links - -To set what links appear in the top navigation edit `_data/navigation.yml`. Use the following format to set the URL and title for as many links as you'd like. *External links will open in a new window.* - -```yaml -- title: Portfolio - url: /portfolio/ - -- title: Made Mistakes - url: http://mademistakes.com -``` - -## Adding New Content with Octopress - -While completely optional, I've included Octopress and some starter templates to automate the creation of new posts and pages. To take advantage of it start by installing the [Octopress](https://github.com/octopress/octopress) gem if it isn't already. - -```bash -$ gem install octopress -``` - -### New Post - -Default command - -```bash -$ octopress new post "Post Title" -``` - -Default works great if you want all your posts in one directory, but if you're like me and want to group them into subfolders like `/posts`, `/portfolio`, etc. Then this is the command for you. By specifying the DIR it will create a new post in that folder and populate the `categories:` YAML with the same value. - -```bash -$ octopress new post "New Portfolio Post Title" --dir portfolio -``` - -### New Page - -To create a new page use the following command. - -```bash -$ octopress new page new-page/ -``` - -This will create a page at `/new-page/index.md` - -## Layouts and Content - -Explanations of the various `_layouts` included with the theme and when to use them. - -### Post and Page - -These two layouts are very similar. Both have an author sidebar, allow for large feature images at the top, and optional Disqus comments. The only real difference is the post layout includes related posts at the end of the page. - -### Post Index Page - -A [sample index page]({{ site.url }}/posts/) listing all posts grouped by the year they were published has been provided. The name can be customized to your liking by editing a few references. For example, to change **Posts** to **Writing** update the following: - -In `_config.yml` under `links:` rename the title and URL to the following: - -```yaml - links: - - title: Writing - url: /writing/ -``` - -* Rename `posts/index.md` to `writing/index.md` and update the YAML front matter accordingly. -* Update the **View all posts** link in the `post.html` layout found in `_layouts` to match title and URL set previously. - -### Feature Images - -A good rule of thumb is to keep feature images nice and wide so you don't push the body text too far down. An image cropped around around 1024 x 256 pixels will keep file size down with an acceptable resolution for most devices. If you want to serve these images responsively I'd suggest looking at the [Jekyll Picture Tag](https://github.com/robwierzbowski/jekyll-picture-tag) plugin[^plugins]. - -[^plugins]: If you're using GitHub Pages to host your site be aware that plugins are disabled. You'll need to build your site locally and then manually deploy if you want to use this sweet plugin. - -The post and page layouts make the assumption that the feature images live in the `images/` folder. To add a feature image to a post or page just include the filename in the front matter like so. It's probably best to host all your images from this folder, but you can hotlink from external sources if you desire. - -```yaml -image: - feature: feature-image-filename.jpg - thumb: thumbnail-image.jpg #keep it square 200x200 px is good -``` - -To add attribution to a feature image use the following YAML front matter on posts or pages. Image credits appear directly below the feature image with a link back to the original source if supplied. - -```yaml -image: - feature: feature-image-filename.jpg - credit: Michael Rose #name of the person or site you want to credit - creditlink: http://mademistakes.com #url to their site or licensing -``` - -### Thumbnails for OG and Twitter Cards - -Feature and thumbnail images are used by [Open Graph](https://developers.facebook.com/docs/opengraph/) and [Twitter Cards](https://dev.twitter.com/docs/cards) as well. If you don't assign a thumbnail the default graphic *(default-thumb.png)* is used. I'd suggest changing this to something more meaningful --- your logo or avatar are good options. - -**Pro-Tip**: You need to [apply for Twitter Cards](https://dev.twitter.com/docs/cards) before they will begin showing up when links to your site are shared. -{:.notice} - -### Author Override - -By making use of data files you can assign different authors for each post. - -Start by modifying `authors.yml` file in the `_data` folder and add your authors using the following format. - -```yaml -# Authors - -billy_rick: - name : "Billy Rick" - web : "http://thewhip.com" - email : "billy@rick.com" - bio : "What do you want, jewels? I am a very extravagant man." - avatar : "bio-photo-2.jpg" - twitter : "extravagantman" - google_plus : "BillyRick" - -cornelius_fiddlebone: - name : "Cornelius Fiddlebone" - email : "cornelius@thewhip.com" - bio : "I ordered what?" - avatar : "bio-photo.jpg" - twitter : "rhymeswithsackit" - google_plus : "CorneliusFiddlebone" -``` - -To assign Billy Rick as an author for our post. We'd add the following YAML front matter to a post: - -```yaml -author: billy_rick -``` - -### Kramdown Table of Contents - -To include an auto-generated **table of contents** for posts and pages, add the following `_include` before the actual content. [Kramdown will take care of the rest](http://kramdown.rubyforge.org/converter/html.html#toc) and convert all headlines into list of links. - -```html -{% raw %}{% include toc.html %}{% endraw %} -``` - -### Paragraph Indentation - -By default the margin below paragraphs has been removed and indent added to each. This is an intentional design decision to mimic the look of type set in a printed book or manuscript. - -
    - screen shot of paragraphs with default indent style set -
    Example of the default paragraph style (indented first line and bottom margin removed).
    -
    - -To disable the indents and add spacing between paragraphs change the following line in `_sass/variables.scss` from `true !default` to `false` like so. - -```scss -$paragraph-indent: false; -``` - -
    - screen shot of paragraphs with indent style disabled -
    Example of paragraphs with $paragraph-indent disabled.
    -
    - -### Videos - -Video embeds are responsive and scale with the width of the main content block with the help of [FitVids](http://fitvidsjs.com/). - -Not sure if this only effects Kramdown or if it's an issue with Markdown in general. But adding YouTube video embeds causes errors when building your Jekyll site. To fix add a space between the ` -``` - -### Social Sharing Links - -Social sharing links for Twitter, Facebook, and Google+ are included on posts/pages by default. To hide them on specific posts or pages add `share: false` to the YAML Front Matter. If you'd like to use different social networks modify `_includes/social-share` to your liking. Icons are set using [Font Awesome](http://fontawesome.io). - -## Further Customization - -Jekyll 2.x added support for Sass files making it much easier to modify a theme's fonts and colors. By editing values found in `_sass/variables.scss` you can fine tune the site's colors and typography. - -For example if you wanted a red background instead of white you'd change `$bodycolor: #fff;` to `$bodycolor: $cc0033;`. - -To modify the site's JavaScript files I setup a Grunt build script to lint/concatenate/minify all scripts into `scripts.min.js`. [Install Node.js](http://nodejs.org/), then [install Grunt](http://gruntjs.com/getting-started), and then finally install the dependencies for the theme contained in `package.json`: - -```bash -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. diff --git a/docs/_docs/21-license.md b/docs/_docs/21-license.md deleted file mode 100644 index 27701a900eb1..000000000000 --- a/docs/_docs/21-license.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "License" -permalink: /docs/license/ -excerpt: "License for Minimal Mistakes Jekyll Theme." -last_modified_at: 2018-01-10T11:22:01-05:00 ---- - -The MIT License (MIT) - -Copyright (c) 2013-{{ site.time | date: '%Y' }} 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 -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. - -Minimal Mistakes incorporates icons from [The Noun Project](https://thenounproject.com/) -creators Garrett Knoll, Arthur Shlain, and tracy tam. -Icons are distributed under Creative Commons Attribution 3.0 United States (CC BY 3.0 US). - -Minimal Mistakes incorporates [Font Awesome](http://fontawesome.io/), -Copyright (c) 2017 Dave Gandy. -Font Awesome is distributed under the terms of the [SIL OFL 1.1](http://scripts.sil.org/OFL) -and [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates photographs from [Unsplash](https://unsplash.com). - -Minimal Mistakes incorporates [Susy](http://susy.oddbird.net/), -Copyright (c) 2017, Miriam Eric Suzanne. -Susy is distributed under the terms of the [BSD 3-clause "New" or "Revised" License](https://opensource.org/licenses/BSD-3-Clause). - -Minimal Mistakes incorporates [Breakpoint](http://breakpoint-sass.com/). -Breakpoint is distributed under the terms of the [MIT/GPL Licenses](http://opensource.org/licenses/MIT). - -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/). - -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 [GreedyNav.js](https://github.com/lukejacksonn/GreedyNav), -Copyright (c) 2015 Luke Jackson. -GreedyNav.js is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates [Jekyll Group-By-Array](https://github.com/mushishi78/jekyll-group-by-array), -Copyright (c) 2015 Max White . -Jekyll Group-By-Array is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates [@allejo's Pure Liquid Jekyll Table of Contents](https://allejo.io/blog/a-jekyll-toc-in-liquid-only/), -Copyright (c) 2017 Vladimir Jimenez. -Pure Liquid Jekyll Table of Contents is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). - -Minimal Mistakes incorporates [Lunr](http://lunrjs.com), -Copyright (c) 2017 Oliver Nightingale. -Lunr is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). \ No newline at end of file diff --git a/docs/_docs/22-faq.md b/docs/_docs/22-faq.md deleted file mode 100644 index f41f7fc14d02..000000000000 --- a/docs/_docs/22-faq.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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/_drafts/post-draft.md b/docs/_drafts/post-draft.md deleted file mode 100644 index e0bb2bd4e1fe..000000000000 --- a/docs/_drafts/post-draft.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: single -title: "Draft Post" -header: - teaser: "unsplash-gallery-image-2-th.jpg" -categories: - - Jekyll -tags: - - edge case ---- -Monocle ipsum dolor sit amet handsome pariatur aliqua, hub remarkable irure commodo classic deserunt bespoke. Sunt commodo signature, Swiss minim flat white Tsutaya excepteur artisanal et Nordic laborum joy ANA. Beams mollit exquisite Ginza efficient dolore qui Comme des Garçons Winkreative Lufthansa bulletin global. Iconic sed liveable duis. Mollit dolore eu laboris Comme des Garçons hub pintxos sed eiusmod tote bag Shinkansen nisi consectetur pariatur. Nordic international quis finest Baggu dolore, bureaux hub hand-crafted ut joy sint Airbus A380. - -Conversation handsome hub cosy, enim emerging sed K-pop velit Gaggenau charming proident et boulevard ryokan. Remarkable airport deserunt international est, nulla minim magna emerging discerning in exclusive dolor. Commodo dolore deserunt cosy, global Nordic culpa uniforms signature charming. Smart ryokan commodo, eiusmod global occaecat incididunt aliqua Beams. Boulevard conversation excepteur finest Swiss non veniam Comme des Garçons essential artisanal. Destination Scandinavian international, anim Boeing 787 in duis Baggu irure essential. - -Fugiat exclusive laborum, Gaggenau ad Winkreative sharp elit labore. Remarkable officia ryokan Boeing 787, consectetur boutique Nordic Singapore espresso elit iconic perfect izakaya soft power excepteur. Ut veniam carefully curated K-pop dolore, uniforms in voluptate. Craftsmanship Ettinger Lufthansa sophisticated esse boutique veniam exquisite. Aute cillum bespoke, intricate consectetur in exquisite international lovely bulletin irure Washlet Gaggenau deserunt. Efficient eu quality of life wardrobe labore, dolor emerging airport concierge reprehenderit izakaya dolore liveable Baggu. - -Commodo elegant essential consectetur Gaggenau culpa consequat id sophisticated St Moritz sunt conversation duis non velit. Nulla business class non ut Marylebone ANA soft power fugiat carefully curated. Bureaux sed punctual handsome Washlet impeccable hand-crafted aute extraordinary tote bag enim boulevard soft power sleepy. Dolore conversation irure Zürich the best adipisicing, vibrant finest hub anim premium aliqua. Cupidatat smart international, bureaux Baggu id efficient punctual. Tempor nulla flat white enim, K-pop incididunt elit efficient Toto uniforms concierge discerning. Concierge sleepy extraordinary, deserunt Melbourne commodo Nordic Winkreative Washlet Ginza exercitation espresso. - -Tsutaya sed in business class sharp. Do Beams in adipisicing Lufthansa. Business class occaecat Melbourne, irure Singapore commodo espresso carefully curated quis quality of life adipisicing. Impeccable laborum efficient classic proident in. Beams Helsinki ullamco Marylebone dolore sophisticated concierge Muji anim duis joy ut. Comme des Garçons aute Muji in aliquip ryokan soft power Nordic essential ANA culpa elegant. \ No newline at end of file diff --git a/docs/_includes/after-content.html b/docs/_includes/after-content.html deleted file mode 100644 index 482c530b7931..000000000000 --- a/docs/_includes/after-content.html +++ /dev/null @@ -1,8 +0,0 @@ -
    - -
    diff --git a/docs/_includes/before-related.html b/docs/_includes/before-related.html deleted file mode 100644 index 69ea67c544a5..000000000000 --- a/docs/_includes/before-related.html +++ /dev/null @@ -1 +0,0 @@ -{% include after-content.html %} diff --git a/docs/_includes/comments-providers/scripts.html b/docs/_includes/comments-providers/scripts.html deleted file mode 100644 index 5617ab8922fa..000000000000 --- a/docs/_includes/comments-providers/scripts.html +++ /dev/null @@ -1,11 +0,0 @@ -{% comment %} - Repurposing this file as "after-scripts.html" snippet, - since the docs site isn't using comments anyway. -{% endcomment %} - - - diff --git a/docs/_pages/404.md b/docs/_pages/404.md deleted file mode 100644 index b3025a6053b5..000000000000 --- a/docs/_pages/404.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Page Not Found" -excerpt: "Page not found. Your pixels are in another canvas." -sitemap: false -permalink: /404.html ---- - -Sorry, but the page you were trying to view does not exist. diff --git a/docs/_pages/about.md b/docs/_pages/about.md deleted file mode 100644 index 435c4aea8b02..000000000000 --- a/docs/_pages/about.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -permalink: /about/ -title: "About" -excerpt: "Minimal Mistakes is a flexible two-column Jekyll theme." -layouts_gallery: - - url: /assets/images/mm-layout-splash.png - image_path: /assets/images/mm-layout-splash.png - alt: "splash layout example" - - url: /assets/images/mm-layout-single-meta.png - image_path: /assets/images/mm-layout-single-meta.png - alt: "single layout with comments and related posts" - - url: /assets/images/mm-layout-archive.png - image_path: /assets/images/mm-layout-archive.png - alt: "archive layout example" -last_modified_at: 2022-05-27T11:59:26-04:00 -toc: true ---- - -Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your personal site, blog, or portfolio on GitHub or self-hosting on your own server. As the name implies --- styling is purposely minimalistic to be enhanced and customized by you :smile:. - -{% include gallery id="layouts_gallery" caption="Examples of included layouts `splash`, `single`, and `archive`." %} - -[Install the Theme]({{ "/docs/quick-start-guide/" | relative_url }}){: .btn .btn--success .btn--large} - -## Notable Features - -- Bundled as a "theme gem" for easier install/upgrading. -- Compatible with GitHub Pages. -- Support for Jekyll's built-in Sass/SCSS preprocessor. -- Nine different skins (color variations). -- 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/), [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), Arabic (عربي), Brazilian Portuguese (Português brasileiro), 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 - -| Name | Description | -| ------------------------------------------- | ----------------------------------------------------- | -| [Post with Header Image][header-image-post] | A post with a large header image. | -| [HTML Tags and Formatting Post][html-tags-post] | A variety of common markup showing how the theme styles them. | -| [Syntax Highlighting Post][syntax-post] | Post displaying highlighted code. | -| [Post with a Gallery][gallery-post] | A post showing several images wrapped in `
    ` elements. | -| [Sample Collection Page][sample-collection] | Single page from a collection. | -| [Categories Archive][categories-archive] | Posts grouped by category. | -| [Tags Archive][tags-archive] | Posts grouped by tag. | - -For even more demo pages check the [posts archive][year-archive]. - -[header-image-post]: {{ "" | relative_url }}{% post_url 2012-03-15-layout-header-image-text-readability %} -[gallery-post]: {{ "" | relative_url }}{% post_url 2010-09-09-post-gallery %} -[html-tags-post]: {{ "" | relative_url }}{% post_url 2013-01-11-markup-html-tags-and-formatting %} -[syntax-post]: {{ "" | relative_url }}{% post_url 2013-08-16-markup-syntax-highlighting %} -[sample-collection]: {{ "/recipes/chocolate-chip-cookies/" | relative_url }} -[categories-archive]: {{ "/categories/" | relative_url }} -[tags-archive]: {{ "/tags/" | relative_url }} -[year-archive]: {{ "/year-archive/" | relative_url }} - ---- - -## Credits - -### Icons + Demo Images: - -- [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/) - -### Other: - -- [Jekyll](https://jekyllrb.com/) -- [jQuery](https://jquery.com/) -- [Susy](http://susy.oddbird.net/) -- [Breakpoint](http://breakpoint-sass.com/) -- [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/) -- [FitVids.JS](http://fitvidsjs.com/) -- Greedy Navigation - [lukejacksonn](https://codepen.io/lukejacksonn/pen/PwmwWV) -- [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll) -- [Lunr](http://lunrjs.com) - ---- - -Minimal Mistakes is designed, developed, and maintained by Michael Rose. Just another boring, tattooed, designer from Buffalo New York. diff --git a/docs/_pages/archive-layout-with-content.md b/docs/_pages/archive-layout-with-content.md deleted file mode 100644 index 6820122e2351..000000000000 --- a/docs/_pages/archive-layout-with-content.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: "Archive Layout with Content" -layout: archive -permalink: /archive-layout-with-content/ ---- - -A variety of common markup showing how the theme styles them. - -# Header one - -## Header two - -### Header three - -#### Header four - -##### Header five - -###### Header six - -## Blockquotes - -Single line blockquote: - -> Stay hungry. Stay foolish. - -Multi line blockquote with a cite reference: - -> People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things. - -Steve Jobs --- Apple Worldwide Developers' Conference, 1997 -{: .small} - -## Tables - -| Employee | Salary | | -| -------- | ------ | ------------------------------------------------------------ | -| [John Doe](#) | $1 | Because that's all Steve Jobs needed for a salary. | -| [Jane Doe](#) | $100K | For all the blogging she does. | -| [Fred Bloggs](#) | $100M | Pictures are worth a thousand words, right? So Jane × 1,000. | -| [Jane Bloggs](#) | $100B | With hair like that?! Enough said. | - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|-----------------------------| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|=============================| -| Foot1 | Foot2 | Foot3 | - -## Definition Lists - -Definition List Title -: Definition list division. - -Startup -: A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. - -#dowork -: Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. - -Do It Live -: I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. - -## Unordered Lists (Nested) - - * List item one - * List item one - * List item one - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - -## Ordered List (Nested) - - 1. List item one - 1. List item one - 1. List item one - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - -[Primary Button](#){: .btn} -[Success Button](#){: .btn .btn--success} -[Warning Button](#){: .btn .btn--warning} -[Danger Button](#){: .btn .btn--danger} -[Info Button](#){: .btn .btn--info} -[Inverse Button](#){: .btn .btn--inverse} -[Light Outline Button](#){: .btn .btn--light-outline} - -```markdown -[Primary Button Text](#link){: .btn} -[Success Button Text](#link){: .btn .btn--success} -[Warning Button Text](#link){: .btn .btn--warning} -[Danger Button Text](#link){: .btn .btn--danger} -[Info Button Text](#link){: .btn .btn--info} -[Inverse Button](#link){: .btn .btn--inverse} -[Light Outline Button](#link){: .btn .btn--light-outline} -``` - -[X-Large Button](#){: .btn .btn--x-large} -[Large Button](#){: .btn .btn--large} -[Default Button](#){: .btn} -[Small Button](#){: .btn .btn--small} - -```markdown -[X-Large Button](#link){: .btn .btn--x-large} -[Large Button](#link){: .btn .btn--large} -[Default Button](#link){: .btn} -[Small Button](#link){: .btn .btn--small} -``` - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} - -## HTML Tags - -### Address Tag - -
    - 1 Infinite Loop
    Cupertino, CA 95014
    United States -
    - -### Anchor Tag (aka. Link) - -This is an example of a [link](http://apple.com "Apple"). - -### Abbreviation Tag - -The abbreviation CSS stands for "Cascading Style Sheets". - -*[CSS]: Cascading Style Sheets - -### Cite Tag - -"Code is poetry." ---Automattic - -### Code Tag - -You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. - -### Strike Tag - -This tag will let you strikeout text. - -### Emphasize Tag - -The emphasize tag should _italicize_ text. - -### Insert Tag - -This tag should denote inserted text. - -### Keyboard Tag - -This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. - -### Preformatted Tag - -This tag styles large blocks of code. - -
    -.post-title {
    -  margin: 0 0 5px;
    -  font-weight: bold;
    -  font-size: 38px;
    -  line-height: 1.2;
    -  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
    -}
    -
    - -### Quote Tag - -Developers, developers, developers… –Steve Ballmer - -### Strong Tag - -This tag shows **bold text**. - -### Subscript Tag - -Getting our science styling on with H2O, which should push the "2" down. - -### Superscript Tag - -Still sticking with science and Albert Einstein's E = MC2, which should lift the 2 up. - -### Variable Tag - -This allows you to denote variables. - -{% for post in site.pages %} -{% include archive-single.html %} -{% endfor %} \ No newline at end of file diff --git a/docs/_pages/collection-archive.html b/docs/_pages/collection-archive.html deleted file mode 100644 index 80d281642917..000000000000 --- a/docs/_pages/collection-archive.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: archive -title: "Posts by Collection" -permalink: /collection-archive/ -author_profile: true ---- - -{% capture written_label %}'None'{% endcapture %} - -{% for collection in site.collections %} - {% unless collection.output == false or collection.label == "posts" %} - {% capture label %}{{ collection.label }}{% endcapture %} - {% if label != written_label %} -

    {{ label }}

    - {% capture written_label %}{{ label }}{% endcapture %} - {% endif %} - {% endunless %} - {% for post in collection.docs %} - {% unless collection.output == false or collection.label == "posts" %} - {% include archive-single.html %} - {% endunless %} - {% endfor %} -{% endfor %} \ No newline at end of file diff --git a/docs/_pages/edge-case.md b/docs/_pages/edge-case.md deleted file mode 100644 index 016138a4675a..000000000000 --- a/docs/_pages/edge-case.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Edge Case -layout: category -permalink: /categories/edge-case/ -taxonomy: Edge Case ---- - -Sample post listing for the category `Edge Case`. diff --git a/docs/_pages/home.md b/docs/_pages/home.md deleted file mode 100644 index d0758fb9258b..000000000000 --- a/docs/_pages/home.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: splash -permalink: / -hidden: true -header: - overlay_color: "#5e616c" - overlay_image: /assets/images/mm-home-page-feature.jpg - actions: - - label: " Install now" - url: "/docs/quick-start-guide/" -excerpt: > - A flexible two-column Jekyll theme. Perfect for building personal sites, blogs, and portfolios.
    - Latest release v4.26.2 -feature_row: - - image_path: /assets/images/mm-customizable-feature.png - alt: "customizable" - title: "Super customizable" - excerpt: "Everything from the menus, sidebars, comments, and more can be configured or set with YAML Front Matter." - url: "/docs/configuration/" - btn_class: "btn--primary" - btn_label: "Learn more" - - image_path: /assets/images/mm-responsive-feature.png - alt: "fully responsive" - title: "Responsive layouts" - excerpt: "Built with HTML5 + CSS3. All layouts are fully responsive with helpers to augment your content." - url: "/docs/layouts/" - btn_class: "btn--primary" - btn_label: "Learn more" - - image_path: /assets/images/mm-free-feature.png - alt: "100% free" - title: "100% free" - excerpt: "Free to use however you want under the MIT License. Clone it, fork it, customize it... whatever!" - url: "/docs/license/" - btn_class: "btn--primary" - btn_label: "Learn more" ---- - -{% include feature_row %} diff --git a/docs/_pages/lorem-ipsum.md b/docs/_pages/lorem-ipsum.md deleted file mode 100644 index 13be88aeb675..000000000000 --- a/docs/_pages/lorem-ipsum.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Lorem Ipsum" -permalink: /lorem-ipsum/ ---- - -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec mollis. Quisque convallis libero in sapien pharetra tincidunt. Aliquam elit ante, malesuada id, tempor eu, gravida id, odio. Maecenas suscipit, risus et eleifend imperdiet, nisi orci ullamcorper massa, et adipiscing orci velit quis magna. Praesent sit amet ligula id orci venenatis auctor. Phasellus porttitor, metus non tincidunt dapibus, orci pede pretium neque, sit amet adipiscing ipsum lectus et libero. Aenean bibendum. Curabitur mattis quam id urna. Vivamus dui. Donec nonummy lacinia lorem. Cras risus arcu, sodales ac, ultrices ac, mollis quis, justo. Sed a libero. Quisque risus erat, posuere at, tristique non, lacinia quis, eros. - -Cras volutpat, lacus quis semper pharetra, nisi enim dignissim est, et sollicitudin quam ipsum vel mi. Sed commodo urna ac urna. Nullam eu tortor. Curabitur sodales scelerisque magna. Donec ultricies tristique pede. Nullam libero. Nam sollicitudin felis vel metus. Nullam posuere molestie metus. Nullam molestie, nunc id suscipit rhoncus, felis mi vulputate lacus, a ultrices tortor dolor eget augue. Aenean ultricies felis ut turpis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse placerat tellus ac nulla. Proin adipiscing sem ac risus. Maecenas nisi. Cras semper. - -Praesent interdum mollis neque. In egestas nulla eget pede. Integer eu purus sed diam dictum scelerisque. Morbi cursus velit et felis. Maecenas faucibus aliquet erat. In aliquet rhoncus tellus. Integer auctor nibh a nunc fringilla tempus. Cras turpis urna, dignissim vel, suscipit pulvinar, rutrum quis, sem. Ut lobortis convallis dui. Sed nonummy orci a justo. Morbi nec diam eget eros eleifend tincidunt. - -Curabitur non elit. Pellentesque iaculis, nisl non aliquet adipiscing, purus urna aliquet orci, sed sodales pede neque at massa. Pellentesque laoreet, enim eget varius mollis, sapien erat suscipit metus, sit amet iaculis nulla sapien id felis. Aliquam erat volutpat. Nam congue nulla a ligula. Morbi tempor hendrerit erat. Curabitur augue. Vestibulum nulla est, commodo et, fringilla quis, bibendum eget, ipsum. Suspendisse pulvinar iaculis ante. Mauris dignissim ante quis nisi. Aliquam ante mi, aliquam et, pellentesque ac, dapibus et, enim. In vulputate justo vel magna. Phasellus imperdiet justo. Proin odio orci, dapibus id, porta a, pellentesque id, erat. Aliquam erat volutpat. Mauris nonummy varius libero. Sed dolor ipsum, tempor non, aliquet et, pulvinar quis, dui. Pellentesque mauris diam, lobortis id, varius varius, facilisis at, nulla. - -Cras pede. Nullam id velit sit amet turpis tincidunt sagittis. Nunc malesuada. Nunc consequat scelerisque odio. Donec eu leo. Nunc pellentesque felis sed odio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus lobortis metus in lectus. Cras mollis quam eget sapien. Pellentesque non lorem sit amet sem lacinia euismod. - -Nulla eget diam eget leo imperdiet consequat. Morbi nunc magna, pellentesque eu, porta at, ultricies ut, neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In tincidunt. Praesent ut orci id eros congue ultrices. Mauris non neque. Donec nulla ante, molestie sit amet, fermentum nec, blandit sit amet, purus. Fusce eget diam eu odio iaculis mollis. Phasellus consectetuer pede quis nisi. Proin non sem ut elit pulvinar faucibus. In a turpis nec augue fringilla elementum. - -Nullam felis. Donec in nulla. Suspendisse sodales, turpis in suscipit ullamcorper, enim nunc sagittis risus, eu auctor velit tortor ut turpis. Mauris id augue at neque aliquam eleifend. Sed eget augue. Nunc faucibus ligula sed massa. Etiam non nulla. Etiam accumsan ullamcorper nisl. In pharetra massa at nunc. Nunc elementum. Duis sodales enim nec libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent dapibus eros sodales urna. Duis magna nisi, lobortis quis, tincidunt rutrum, posuere non, ipsum. - -Aliquam convallis neque vitae diam. In diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis fermentum arcu in tortor. Sed nibh leo, rhoncus eu, fermentum et, scelerisque ac, massa. Cras id turpis. Etiam commodo sem luctus lorem. Morbi at mi. In rutrum. Aenean luctus pede euismod tortor. Phasellus dictum. Cras neque justo, venenatis sit amet, tristique et, vulputate in, dui. Etiam sed mi gravida sapien imperdiet dictum. Aliquam gravida orci a tortor. Donec tempor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus risus ante, pellentesque vitae, luctus eget, scelerisque sed, libero. Donec massa. - -Donec libero mauris, volutpat at, convallis vel, laoreet euismod, augue. In accumsan malesuada risus. Mauris metus magna, condimentum in, nonummy non, ornare eu, velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin posuere. Proin rhoncus rutrum lorem. Phasellus dignissim massa non libero volutpat tincidunt. In hac habitasse platea dictumst. Phasellus eget eros. Nulla in nulla. Vivamus quis mauris. Maecenas pharetra rhoncus tellus. Sed sit amet lacus. - -Quisque interdum felis a tellus. Aliquam sed diam ac velit aliquam rutrum. Morbi commodo, risus a pulvinar adipiscing, tortor pede posuere risus, ac ornare tellus massa nec lectus. Vivamus mollis metus ac sapien. Nam sed est a libero ullamcorper dapibus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean a erat ac nibh accumsan volutpat. Phasellus pulvinar consequat turpis. Curabitur ante metus, tempus ut, consequat eu, sollicitudin sit amet, justo. Duis ut libero. - -Հայերեն - -Lorem Ipsum-ը տպագրության և տպագրական արդյունաբերության համար նախատեսված մոդելային տեքստ է: Սկսած 1500-ականներից\` Lorem Ipsum-ը հանդիսացել է տպագրական արդյունաբերության ստանդարտ մոդելային տեքստ, ինչը մի անհայտ տպագրիչի կողմից տարբեր տառատեսակների օրինակների գիրք ստեղծելու ջանքերի արդյունք է: Այս տեքստը ոչ միայն կարողացել է գոյատևել հինգ դարաշրջան, այլև ներառվել է էլեկտրոնային տպագրության մեջ\` մնալով էապես անփոփոխ: Այն հայտնի է դարձել 1960-ականներին Lorem Ipsum բովանդակող Letraset էջերի թողարկման արդյունքում, իսկ ավելի ուշ համակարգչային տպագրության այնպիսի ծրագրերի թողարկման հետևանքով, ինչպիսին է Aldus PageMaker-ը, որը ներառում է Lorem Ipsum-ի տարատեսակներ: - -Български - -Lorem Ipsum е елементарен примерен текст, използван в печатарската и типографската индустрия. Lorem Ipsum е индустриален стандарт от около 1500 година, когато неизвестен печатар взема няколко печатарски букви и ги разбърква, за да напечата с тях книга с примерни шрифтове. Този начин не само е оцелял повече от 5 века, но е навлязъл и в публикуването на електронни издания като е запазен почти без промяна. Популяризиран е през 60те години на 20ти век със издаването на Letraset листи, съдържащи Lorem Ipsum пасажи, популярен е и в наши дни във софтуер за печатни издания като Aldus PageMaker, който включва различни версии на Lorem Ipsum. - -Català - -Lorem Ipsum és un text de farciment usat per la indústria de la tipografia i la impremta. Lorem Ipsum ha estat el text estàndard de la indústria des de l’any 1500, quan un impressor desconegut va fer servir una galerada de text i la va mesclar per crear un llibre de mostres tipogràfiques. No només ha sobreviscut cinc segles, sinó que ha fet el salt cap a la creació de tipus de lletra electrònics, romanent essencialment sense canvis. Es va popularitzar l’any 1960 amb el llançament de fulls Letraset que contenien passatges de Lorem Ipsum, i més recentment amb programari d’autoedició com Aldus Pagemaker que inclou versions de Lorem Ipsum. - -Hrvatski - -Lorem Ipsum je jednostavno probni tekst koji se koristi u tiskarskoj i slovoslagarskoj industriji. Lorem Ipsum postoji kao industrijski standard još od 16-og stoljeća, kada je nepoznati tiskar uzeo tiskarsku galiju slova i posložio ih da bi napravio knjigu s uzorkom tiska. Taj je tekst ne samo preživio pet stoljeća, već se i vinuo u svijet elektronskog slovoslagarstva, ostajući u suštini nepromijenjen. Postao je popularan tijekom 1960-ih s pojavom Letraset listova s odlomcima Lorem Ipsum-a, a u skorije vrijeme sa software-om za stolno izdavaštvo kao što je Aldus PageMaker koji također sadrži varijante Lorem Ipsum-a. - -Česky - -Lorem Ipsum je demonstrativní výplňový text používaný v tiskařském a knihařském průmyslu. Lorem Ipsum je považováno za standard v této oblasti už od začátku 16. století, kdy dnes neznámý tiskař vzal kusy textu a na jejich základě vytvořil speciální vzorovou knihu. Jeho odkaz nevydržel pouze pět století, on přežil i nástup elektronické sazby v podstatě beze změny. Nejvíce popularizováno bylo Lorem Ipsum v šedesátých letech 20. století, kdy byly vydávány speciální vzorníky s jeho pasážemi a později pak díky počítačovým DTP programům jako Aldus PageMaker. - -Româna - -Lorem Ipsum este pur şi simplu o machetă pentru text a industriei tipografice. Lorem Ipsum a fost macheta standard a industriei încă din secolul al XVI-lea, când un tipograf anonim a luat o planşetă de litere şi le-a amestecat pentru a crea o carte demonstrativă pentru literele respective. Nu doar că a supravieţuit timp de cinci secole, dar şi a facut saltul în tipografia electronică practic neschimbată. A fost popularizată în anii ’60 odată cu ieşirea colilor Letraset care conţineau pasaje Lorem Ipsum, iar mai recent, prin programele de publicare pentru calculator, ca Aldus PageMaker care includeau versiuni de Lorem Ipsum. - -Српски - -Lorem Ipsum је једноставно модел текста који се користи у штампарској и словослагачкој индустрији. Lorem ipsum је био стандард за модел текста још од 1500. године, када је непознати штампар узео кутију са словима и сложио их како би направио узорак књиге. Не само што је овај модел опстао пет векова, него је чак почео да се користи и у електронским медијима, непроменивши се. Популаризован је шездесетих година двадесетог века заједно са листовима летерсета који су садржали Lorem Ipsum пасусе, а данас са софтверским пакетом за прелом као што је Aldus PageMaker који је садржао Lorem Ipsum верзије. \ No newline at end of file diff --git a/docs/_pages/markup.md b/docs/_pages/markup.md deleted file mode 100644 index 147a719ae258..000000000000 --- a/docs/_pages/markup.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Markup -layout: tag -permalink: /tags/markup/ -taxonomy: markup ---- - -Sample post listing for the tag `markup`. diff --git a/docs/_pages/page-a.md b/docs/_pages/page-a.md deleted file mode 100644 index 3083db24ad10..000000000000 --- a/docs/_pages/page-a.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Page A" -permalink: /page-a/ -date: 2011-06-23T18:38:52+00:00 ---- - -Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. \ No newline at end of file diff --git a/docs/_pages/page-archive.html b/docs/_pages/page-archive.html deleted file mode 100644 index ada3f64fb9ce..000000000000 --- a/docs/_pages/page-archive.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: archive -title: "Page Archive" -permalink: /page-archive/ -author_profile: false ---- - -{% assign posts = site.pages | where_exp: "post", "post.hidden != true" %} -{% for post in posts %} - {% include archive-single.html %} -{% endfor %} diff --git a/docs/_pages/page-b.md b/docs/_pages/page-b.md deleted file mode 100644 index d15ce12289d9..000000000000 --- a/docs/_pages/page-b.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Page B" -permalink: /page-b/ -date: 2011-06-23T18:39:14+00:00 ---- - -(lorem ipsum) \ No newline at end of file diff --git a/docs/_pages/pets.md b/docs/_pages/pets.md deleted file mode 100644 index 1ecc1f3b565f..000000000000 --- a/docs/_pages/pets.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Pets -layout: collection -permalink: /pets/ -collection: pets -entries_layout: grid -classes: wide ---- - -Sample document listing for the collection `_pets`. diff --git a/docs/_pages/portfolio-archive.md b/docs/_pages/portfolio-archive.md deleted file mode 100644 index 019082f49185..000000000000 --- a/docs/_pages/portfolio-archive.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Portfolio -layout: collection -permalink: /portfolio/ -collection: portfolio -entries_layout: grid -classes: wide ---- - -Sample document listing for the collection `_portfolio`. diff --git a/docs/_pages/post-archive-feature-rows.html b/docs/_pages/post-archive-feature-rows.html deleted file mode 100644 index 47cab558d9fd..000000000000 --- a/docs/_pages/post-archive-feature-rows.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: archive -title: "Post Archive with Feature Rows" -permalink: /post-archive-feature-rows/ -author_profile: true -feature_row: - - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Placeholder 1" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder 2" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" - - 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." -feature_row2: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Left Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Left aligned with `type="left"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row3: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Right Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Right aligned with `type="right"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row4: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Center Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Centered with `type="center"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" ---- - -{% for post in site.posts limit: 5 %} - {% include archive-single.html %} -{% endfor %} - -{% include feature_row id="intro" type="center" %} - -{% include feature_row %} - -{% include feature_row id="feature_row2" type="left" %} - -{% include feature_row id="feature_row3" type="right" %} - -{% include feature_row id="feature_row4" type="center" %} \ No newline at end of file diff --git a/docs/_pages/recipes-archive.md b/docs/_pages/recipes-archive.md deleted file mode 100644 index 96a36cf7fc72..000000000000 --- a/docs/_pages/recipes-archive.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: collection -title: "Recipes" -collection: recipes -permalink: /recipes/ -author_profile: false ---- - -Sample document listing for the collection `_recipes`. \ No newline at end of file diff --git a/docs/_pages/sample-page.md b/docs/_pages/sample-page.md deleted file mode 100644 index 060e53b864c9..000000000000 --- a/docs/_pages/sample-page.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Sample Page" -permalink: /sample-page/ -date: 2016-02-24T03:02:20+00:00 ---- - -This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this: - -> Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like pi'a coladas. (And gettin' caught in the rain.) - -...or something like this: - -> The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community. - -You should probably delete this page and create new pages for your content. Have fun! \ No newline at end of file diff --git a/docs/_pages/sitemap.md b/docs/_pages/sitemap.md deleted file mode 100644 index bb6e1831a4c1..000000000000 --- a/docs/_pages/sitemap.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: archive -title: "Sitemap" -permalink: /sitemap/ -author_profile: false ---- - -A list of all the posts and pages found on the site. For you robots out there is an [XML version]({{ "sitemap.xml" | relative_url }}) available for digesting as well. - -

    Pages

    -{% for post in site.pages %} - {% include archive-single.html %} -{% endfor %} - -

    Posts

    -{% for post in site.posts %} - {% include archive-single.html %} -{% endfor %} - -{% capture written_label %}'None'{% endcapture %} - -{% for collection in site.collections %} -{% unless collection.output == false or collection.label == "posts" %} - {% capture label %}{{ collection.label }}{% endcapture %} - {% if label != written_label %} -

    {{ label }}

    - {% capture written_label %}{{ label }}{% endcapture %} - {% endif %} -{% endunless %} -{% for post in collection.docs %} - {% unless collection.output == false or collection.label == "posts" %} - {% include archive-single.html %} - {% endunless %} -{% endfor %} -{% endfor %} \ No newline at end of file diff --git a/docs/_pages/splash-page.md b/docs/_pages/splash-page.md deleted file mode 100644 index f11bc0b0737b..000000000000 --- a/docs/_pages/splash-page.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "Splash Page" -layout: splash -permalink: /splash-page/ -date: 2016-03-23T11:48:41-04:00 -header: - overlay_color: "#000" - overlay_filter: "0.5" - overlay_image: /assets/images/unsplash-image-1.jpg - actions: - - label: "Download" - url: "https://github.com/mmistakes/minimal-mistakes/" - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -excerpt: "Bacon ipsum dolor sit amet salami ham hock ham, hamburger corned beef short ribs kielbasa biltong t-bone drumstick tri-tip tail sirloin pork chop." -intro: - - excerpt: 'Nullam suscipit et nam, tellus velit pellentesque at malesuada, enim eaque. Quis nulla, netus tempor in diam gravida tincidunt, *proin faucibus* voluptate felis id sollicitudin. Centered with `type="center"`' -feature_row: - - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Placeholder 1" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - image_caption: "Image courtesy of [Unsplash](https://unsplash.com/)" - alt: "placeholder image 2" - title: "Placeholder 2" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" - - 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." -feature_row2: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Left Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Left aligned with `type="left"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row3: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Right Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Right aligned with `type="right"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row4: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Center Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Centered with `type="center"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" ---- - -{% include feature_row id="intro" type="center" %} - -{% include feature_row %} - -{% include feature_row id="feature_row2" type="left" %} - -{% include feature_row id="feature_row3" type="right" %} - -{% include feature_row id="feature_row4" type="center" %} \ No newline at end of file diff --git a/docs/_pages/terms.md b/docs/_pages/terms.md deleted file mode 100644 index eac4d5d4f8a8..000000000000 --- a/docs/_pages/terms.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -permalink: /terms/ -title: "Terms and Privacy Policy" -last_modified_at: 2017-10-20T12:42:38-04:00 -toc: true ---- - -## Privacy Policy - -The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. - -First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. - -### Log Files - -Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: - -* Internet Protocol addresses (IP) -* Types of browser -* Internet Service Provider (ISP) -* Date and time stamp -* Referring and exit pages -* Number of clicks - -All of this information is not linked to anything that is personally identifiable. - -### Cookies and Web Beacons - -When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. - -Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. - -If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. - -#### Google Analytics - -Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html). - -#### Google Adsense - -Google Adsense, a third party affiliate marketing network, uses cookies to help make sure I get a commission when you buy a product after clicking on a link or ad banner that takes you to the site of one of their merchants. You can read [Google Adsense Privacy Policy](http://support.google.com/adsense/bin/answer.py?hl=en&answer=48182). - -## Disclosure Policy - -I make money on this website through affiliate programs. If you click an affiliate link or ad banner and buy the product, you help support this website because I'll get a percentage of that sale. - -Currently I'm an affiliate for Amazon and Google Adsense. - -What this means for you: - -* I became an affiliate to earn revenue towards the costs of running and maintaining this website. Where I have direct control over which ads are served on this website I offer only products that are directly related to the topic of this website and products that a reader/subscriber would have a genuine interest in or need of. -* I do not and will not recommend a product just for the sake of making money. -* I do not let the compensation I receive influence the content, topics, posts, or opinions expressed on this website. -* I respect and value my readers too much to write anything other than my own genuine and objective opinions and advice. - -Just like this website, my Disclosure Policy is a work in progress. As the revenue streams evolve, so will this page. \ No newline at end of file diff --git a/docs/_pages/year-archive.md b/docs/_pages/year-archive.md deleted file mode 100644 index 1021452ad951..000000000000 --- a/docs/_pages/year-archive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Posts by Year" -permalink: /year-archive/ -layout: posts -author_profile: true ---- diff --git a/docs/_pets/lhasa-apso.md b/docs/_pets/lhasa-apso.md deleted file mode 100644 index 2673b6bab64f..000000000000 --- a/docs/_pets/lhasa-apso.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Lhasa Apso" -excerpt: "The Lhasa Apso is a non-sporting dog breed originating in Tibet." ---- - -> The Lhasa Apso (/ˈlɑːsə ˈæpsoʊ/ lah-sə ap-soh) is a non-sporting dog breed originating in Tibet. It was bred as an interior sentinel in the Buddhist monasteries, to alert the monks to any intruders who entered. Lhasa is the capital city of Tibet, and apso is a word in the Tibetan language meaning "bearded", so, Lhasa Apso simply means "long-haired Lhasa dog". There are, however, some who claim that the word "apso" is a form of the Tibetan word "rapso", meaning "goat-like", which would make the equivalent translation "wooly Lhasa dog". - -> From Wikipedia, the free encyclopedia \ No newline at end of file diff --git a/docs/_pets/tabby.md b/docs/_pets/tabby.md deleted file mode 100644 index b62b67454b1a..000000000000 --- a/docs/_pets/tabby.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Tabby" -excerpt: "A tabby is any domestic cat that has a coat featuring distinctive stripes, dots, lines or swirling patterns, usually with a mark resembling an 'M' on its forehead." ---- - -> A tabby is any domestic cat that has a coat featuring distinctive stripes, dots, lines or swirling patterns, usually together with a mark resembling an 'M' on its forehead. Tabbies are sometimes erroneously assumed to be a cat breed. In fact, the tabby pattern is found in many breeds, as well as among the general mixed-breed population. The tabby pattern is a naturally occurring feature that may be related to the coloration of the domestic cat's direct ancestor, the African wildcat, which (along with the European wildcat and Asiatic wildcat) has a similar coloration. - -> From Wikipedia, the free encyclopedia \ No newline at end of file diff --git a/docs/_portfolio/baz-boom-identity.md b/docs/_portfolio/baz-boom-identity.md deleted file mode 100644 index 98edd8f4dff6..000000000000 --- a/docs/_portfolio/baz-boom-identity.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Baz Boom Identity" -excerpt: "Baz Boom design system including logo mark, website design, and branding applications." -header: - image: /assets/images/unsplash-gallery-image-1.jpg - teaser: assets/images/unsplash-gallery-image-1-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/docs/_portfolio/fizz-bang-identity.md b/docs/_portfolio/fizz-bang-identity.md deleted file mode 100644 index b04881983531..000000000000 --- a/docs/_portfolio/fizz-bang-identity.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Fizz Bang Identity" -excerpt: "Fizz Bang design system including logo mark, website design, and branding applications." -header: - image: /assets/images/unsplash-gallery-image-2.jpg - teaser: assets/images/unsplash-gallery-image-2-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/docs/_portfolio/foo-bar-website.md b/docs/_portfolio/foo-bar-website.md deleted file mode 100644 index 2002bd5b0bc0..000000000000 --- a/docs/_portfolio/foo-bar-website.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Foo Bar Identity" -excerpt: "Foo Bar design system including logo mark, website design, and branding applications." -header: - image: /assets/images/foo-bar-identity.jpg - teaser: /assets/images/foo-bar-identity-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/docs/_portfolio/ginger-gulp-identity.md b/docs/_portfolio/ginger-gulp-identity.md deleted file mode 100644 index 4a9d75cdf2b3..000000000000 --- a/docs/_portfolio/ginger-gulp-identity.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Ginger Gulp Identity" -excerpt: "Ginger Gulp design system including logo mark, website design, and branding applications." -header: - image: /assets/images/unsplash-gallery-image-3.jpg - teaser: assets/images/unsplash-gallery-image-3-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/docs/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md b/docs/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md deleted file mode 100644 index a8dccf09c792..000000000000 --- a/docs/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Edge Case: Nested and Mixed Lists" -categories: - - Edge Case -tags: - - content - - css - - edge case - - lists - - markup ---- - -Nested and mixed lists are an interesting beast. It's a corner case to make sure that - -* Lists within lists do not break the ordered list numbering order -* Your list styles go deep enough. - -### Ordered -- Unordered -- Ordered - -1. ordered item -2. ordered item - * **unordered** - * **unordered** - 1. ordered item - 2. ordered item -3. ordered item -4. ordered item - -### Ordered -- Unordered -- Unordered - -1. ordered item -2. ordered item - * **unordered** - * **unordered** - * unordered item - * unordered item -3. ordered item -4. ordered item - -### Unordered -- Ordered -- Unordered - -* unordered item -* unordered item - 1. ordered - 2. ordered - * unordered item - * unordered item -* unordered item -* unordered item - -### Unordered -- Unordered -- Ordered - -* unordered item -* unordered item - * unordered - * unordered - 1. **ordered item** - 2. **ordered item** -* unordered item -* unordered item - -### Task Lists - -- [x] Finish my changes -- [ ] Push my commits to GitHub -- [ ] Open a pull request \ No newline at end of file diff --git a/docs/_posts/2009-06-01-edge-case-many-tags.md b/docs/_posts/2009-06-01-edge-case-many-tags.md deleted file mode 100644 index f43509f119cc..000000000000 --- a/docs/_posts/2009-06-01-edge-case-many-tags.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Edge Case: Many Tags" -categories: - - Edge Case -tags: - - 8BIT - - alignment - - Articles - - captions - - categories - - chat - - comments - - content - - css - - dowork - - edge case - - embeds - - excerpt - - Fail - - featured image - - FTW - - Fun - - gallery - - html - - image - - Jekyll - - layout - - link - - Love - - markup - - Mothership - - Must Read - - Nailed It - - Pictures - - Post Formats - - quote - - standard - - Success - - Swagger - - Tags - - template - - title - - twitter - - Unseen - - video - - YouTube ---- - -This post has many tags. \ No newline at end of file diff --git a/docs/_posts/2009-07-02-edge-case-many-categories.md b/docs/_posts/2009-07-02-edge-case-many-categories.md deleted file mode 100644 index 7ec93b8e8db9..000000000000 --- a/docs/_posts/2009-07-02-edge-case-many-categories.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Edge Case: Many Categories" -categories: - - aciform - - antiquarianism - - arrangement - - asmodeus - - broder - - buying - - championship - - chastening - - disinclination - - disinfection - - dispatch - - echappee - - enphagy -tags: - - categories - - edge case ---- - -This post has many categories. \ No newline at end of file diff --git a/docs/_posts/2009-08-06-edge-case-no-body-content.md b/docs/_posts/2009-08-06-edge-case-no-body-content.md deleted file mode 100644 index 7b2fa7d6d13f..000000000000 --- a/docs/_posts/2009-08-06-edge-case-no-body-content.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Edge Case: No Body Content" -categories: - - Edge Case -tags: - - content - - edge case - - layout ---- diff --git a/docs/_posts/2009-09-05-edge-case-no-yaml-title.md b/docs/_posts/2009-09-05-edge-case-no-yaml-title.md deleted file mode 100644 index 4e5323ff878b..000000000000 --- a/docs/_posts/2009-09-05-edge-case-no-yaml-title.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -categories: - - Edge Case -tags: - - edge case - - layout - - title ---- - -This post has no title specified in the YAML Front Matter. Jekyll should auto-generate a title from the filename. \ No newline at end of file diff --git a/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md b/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md deleted file mode 100644 index 6acc568a0655..000000000000 --- a/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -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-05-edge-case-title-should-not-overflow-the-content-area.md b/docs/_posts/2009-10-05-edge-case-title-should-not-overflow-the-content-area.md deleted file mode 100644 index 6fdc1b8a9416..000000000000 --- a/docs/_posts/2009-10-05-edge-case-title-should-not-overflow-the-content-area.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Antidisestablishmentarianism" -categories: - - Edge Case -tags: - - content - - css - - edge case - - html - - layout - - title ---- - -## Title should not overflow the content area - -A few things to check for: - - * Non-breaking text in the title, content, and comments should have no adverse effects on layout or functionality. - * Check the browser window / tab title. - * If you are a theme developer, check that this text does not break anything. - -The following CSS properties will help you support non-breaking text. - -```css --ms-word-wrap: break-word; -word-wrap: break-word; -``` \ No newline at end of file diff --git a/docs/_posts/2009-10-05-edge-case-very-long-title.md b/docs/_posts/2009-10-05-edge-case-very-long-title.md deleted file mode 100644 index 29fcb77c42dc..000000000000 --- a/docs/_posts/2009-10-05-edge-case-very-long-title.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Suspicio? Bene ... tunc ibimus? Quis uh ... CONEXUS locus his diebus? Quisque semper aliquid videtur, in volutpat mauris. Nolo enim dicere. Vobis neque ab aliis. Ego feci memetipsum explicans. Gus mortuus est. Lorem opus habeo. Jackson Isai? Tu quoque ... A te quidem a ante. Vos scitis quod blinking res Ive 'been vocans super vos? Et conteram illud, et conteram hoc. Maledicant druggie excors. Iam hoc tu facere conatus sum ad te in omni tempore? Ludum mutavit. Verbum est ex. Et ... sunt occid" -categories: - - Edge Case -tags: - - content - - css - - edge case - - html - - layout - - title ---- - -Check for long titles and how they might break a template. \ 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 deleted file mode 100644 index bdf5b0be2715..000000000000 --- a/docs/_posts/2009-10-06-edge-case-broken-highlighting.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -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-01-07-post-modified.md b/docs/_posts/2010-01-07-post-modified.md deleted file mode 100644 index 382b98049ae6..000000000000 --- a/docs/_posts/2010-01-07-post-modified.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Post: Modified Date" -last_modified_at: 2016-03-09T16:20:02-05:00 -categories: - - Post Formats -tags: - - Post Formats - - readability - - standard ---- - -This post has been updated and should show a modified date if used in a layout. - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. \ No newline at end of file diff --git a/docs/_posts/2010-01-07-post-standard.md b/docs/_posts/2010-01-07-post-standard.md deleted file mode 100644 index cd83ea034f8c..000000000000 --- a/docs/_posts/2010-01-07-post-standard.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Post: Standard" -excerpt_separator: "" -categories: - - Post Formats -tags: - - Post Formats - - readability - - standard ---- - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. - -Mrs. Darling first heard of Peter when she was tidying up her children's minds. It is the nightly custom of every good mother after her children are asleep to rummage in their minds and put things straight for next morning, repacking into their proper places the many articles that have wandered during the day. - - - -This post has a manual excerpt `` set after the second paragraph. The following YAML Front Matter has also be applied: - -```yaml -excerpt_separator: "" -``` - -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/2010-01-08-post-chat.md b/docs/_posts/2010-01-08-post-chat.md deleted file mode 100644 index e61b3f289e00..000000000000 --- a/docs/_posts/2010-01-08-post-chat.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Post: Chat" -categories: - - Post Formats -tags: - - chat - - Post Formats ---- - -Abbott: Strange as it may seem, they give ball players nowadays very peculiar names. - -Costello: Funny names? - -Abbott: Nicknames, nicknames. Now, on the St. Louis team we have Who's on first, What's on second, I Don't Know is on third-- - -Costello: That's what I want to find out. I want you to tell me the names of the fellows on the St. Louis team. - -Abbott: I'm telling you. Who's on first, What's on second, I Don't Know is on third-- - -Costello: You know the fellows' names? - -Abbott: Yes. - -Costello: Well, then who's playing first? - -Abbott: Yes. - -Costello: I mean the fellow's name on first base. - -Abbott: Who. - -Costello: The fellow playin' first base. - -Abbott: Who. - -Costello: The guy on first base. - -Abbott: Who is on first. - -Costello: Well, what are you askin' me for? - -Abbott: I'm not asking you--I'm telling you. Who is on first. - -Costello: I'm asking you--who's on first? - -Abbott: That's the man's name. - -Costello: That's who's name? - -Abbott: Yes. - -Costello: When you pay off the first baseman every month, who gets the money? - -Abbott: Every dollar of it. And why not, the man's entitled to it. - -Costello: Who is? - -Abbott: Yes. - -Costello: So who gets it? - -Abbott: Why shouldn't he? Sometimes his wife comes down and collects it. - -Costello: Who's wife? - -Abbott: Yes. After all, the man earns it. - -Costello: Who does? - -Abbott: Absolutely. - -Costello: Well, all I'm trying to find out is what's the guy's name on first base? - -Abbott: Oh, no, no. What is on second base. - -Costello: I'm not asking you who's on second. - -Abbott: Who's on first! - -Costello: St. Louis has a good outfield? - -Abbott: Oh, absolutely. - -Costello: The left fielder's name? - -Abbott: Why. - -Costello: I don't know, I just thought I'd ask. - -Abbott: Well, I just thought I'd tell you. - -Costello: Then tell me who's playing left field? - -Abbott: Who's playing first. - -Costello: Stay out of the infield! The left fielder's name? - -Abbott: Why. - -Costello: Because. - -Abbott: Oh, he's center field. - -Costello: Wait a minute. You got a pitcher on this team? - -Abbott: Wouldn't this be a fine team without a pitcher? - -Costello: Tell me the pitcher's name. - -Abbott: Tomorrow. - -Costello: Now, when the guy at bat bunts the ball--me being a good catcher--I want to throw the guy out at first base, so I pick up the ball and throw it to who? - -Abbott: Now, that's he first thing you've said right. - -Costello: I DON'T EVEN KNOW WHAT I'M TALKING ABOUT! - -Abbott: Don't get excited. Take it easy. - -Costello: I throw the ball to first base, whoever it is grabs the ball, so the guy runs to second. Who picks up the ball and throws it to what. What throws it to I don't know. I don't know throws it back to tomorrow--a triple play. - -Abbott: Yeah, it could be. - -Costello: Another guy gets up and it's a long ball to center. - -Abbott: Because. - -Costello: Why? I don't know. And I don't care. - -Abbott: What was that? - -Costello: I said, I DON'T CARE! - -Abbott: Oh, that's our shortstop! \ No newline at end of file diff --git a/docs/_posts/2010-02-05-post-notice.md b/docs/_posts/2010-02-05-post-notice.md deleted file mode 100644 index da63f9a32152..000000000000 --- a/docs/_posts/2010-02-05-post-notice.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: "Post: Notice" -categories: - - Post Formats -tags: - - Post Formats - - notice ---- - -A notice displays information that explains nearby content. Often used to call attention to a particular detail. - -When using Kramdown `{: .notice}` can be added after a sentence to assign the `.notice` to the `

    ` element. - -**Changes in Service:** We just updated our [privacy policy](#) here to better service our customers. We recommend reviewing the changes. -{: .notice} - -**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} - -
    -**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 - - Some body. - -``` -
    - -**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} - -**Warning 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--warning} - -**Danger 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--danger} - -**Success 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--success} - -Want to wrap several paragraphs or other elements in a notice? Using Liquid to capture the content and then filter it with `markdownify` is a good way to go. - -```html -{% raw %}{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %}{% endraw %} - -
    {% raw %}{{ notice-2 | markdownify }}{% endraw %}
    -``` - -{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %} - -
    - {{ notice-2 | markdownify }} -
    - -Or you could skip the capture and stick with straight HTML. - -```html -
    -

    Message

    -

    A basic message.

    -
    -``` - -
    -

    Message

    -

    A basic message.

    -
    \ No newline at end of file diff --git a/docs/_posts/2010-02-05-post-quote.md b/docs/_posts/2010-02-05-post-quote.md deleted file mode 100644 index 231f70bf1f73..000000000000 --- a/docs/_posts/2010-02-05-post-quote.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Post: Quote" -categories: - - Post Formats -tags: - - Post Formats - - quote ---- - -> Only one thing is impossible for God: To find any sense in any copyright law on the planet. - -> Mark Twain \ No newline at end of file diff --git a/docs/_posts/2010-03-07-post-link.md b/docs/_posts/2010-03-07-post-link.md deleted file mode 100644 index 6a8005ef119f..000000000000 --- a/docs/_posts/2010-03-07-post-link.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Post: Link" -categories: - - Post Formats -tags: - - link - - Post Formats -link: https://github.com ---- - -This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. - -> And this is how a quote looks. - -Some [link](#) can also be shown. \ No newline at end of file diff --git a/docs/_posts/2010-06-02-post-video-youtube.md b/docs/_posts/2010-06-02-post-video-youtube.md deleted file mode 100644 index 686f622b9e70..000000000000 --- a/docs/_posts/2010-06-02-post-video-youtube.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Post: Video (YouTube)" -categories: - - Post Formats -tags: - - Post Formats ---- - -YouTube video embed below. - - \ No newline at end of file diff --git a/docs/_posts/2010-08-05-post-header-image-og-override.md b/docs/_posts/2010-08-05-post-header-image-og-override.md deleted file mode 100644 index 7d772873bab0..000000000000 --- a/docs/_posts/2010-08-05-post-header-image-og-override.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Post: Header Image with OpenGraph Override" -header: - image: /assets/images/page-header-image.png - og_image: /assets/images/page-header-og-image.png -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2017-10-26T15:12:19-04:00 ---- - -This post has a header image with an OpenGraph override. - -```yaml -header: - image: /assets/images/page-header-image.png - og_image: /assets/images/page-header-og-image.png -``` \ No newline at end of file diff --git a/docs/_posts/2010-08-05-post-header-overlay-image-og-override.md b/docs/_posts/2010-08-05-post-header-overlay-image-og-override.md deleted file mode 100644 index e8501b7f53a7..000000000000 --- a/docs/_posts/2010-08-05-post-header-overlay-image-og-override.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Post: Overlay Image with OpenGraph Override" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - og_image: /assets/images/page-header-og-image.png - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "Learn more" - url: "https://unsplash.com" -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2017-10-26T15:12:19-04:00 ---- - -This post has a header image with an OpenGraph override. - -```yaml -header: - overlay_image: /assets/images/unsplash-image-1.jpg - og_image: /assets/images/page-header-og-image.png - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "Learn more" - url: "https://unsplash.com" -``` \ 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 deleted file mode 100644 index a59cd117126e..000000000000 --- a/docs/_posts/2010-08-05-post-image-linked.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Post: Image (with Link)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -[![foo](https://live.staticflickr.com/8361/8400335147_5fabaa504c_o.jpg)](https://flic.kr/p/dNiUYB) \ No newline at end of file diff --git a/docs/_posts/2010-08-05-post-image-standard.md b/docs/_posts/2010-08-05-post-image-standard.md deleted file mode 100644 index 097e235b6214..000000000000 --- a/docs/_posts/2010-08-05-post-image-standard.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Post: Image (Standard)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -The preferred way of using images is placing them in the `/assets/images/` directory and referencing them with an absolute path. Prepending the filename with `{% raw %}{{ site.url }}{{ site.baseurl }}/assets/images/{% endraw %}` will make sure your images display properly in feeds and such. - -Standard image with no width modifier classes applied. - -**HTML:** - -```html -{% raw %}{% endraw %} -``` - -**or Kramdown:** - -```markdown -{% raw %}![alt]({{ site.url }}{{ site.baseurl }}/assets/images/filename.jpg){% endraw %} -``` - -![Unsplash image 9]({{ site.url }}{{ site.baseurl }}/assets/images/unsplash-image-9.jpg) - -Image that fills page content container by adding the `.full` class with: - -**HTML:** - -```html -{% raw %}{% endraw %} -``` - -**or Kramdown:** - -```markdown -{% raw %}![alt]({{ site.url }}{{ site.baseurl }}/assets/images/filename.jpg) -{: .full}{% endraw %} -``` - -![Unsplash image 10]({{ site.url }}{{ site.baseurl }}/assets/images/unsplash-image-10.jpg) -{: .full} \ No newline at end of file diff --git a/docs/_posts/2010-08-05-post-teaser-image-og-override.md b/docs/_posts/2010-08-05-post-teaser-image-og-override.md deleted file mode 100644 index bd7ac0a219f8..000000000000 --- a/docs/_posts/2010-08-05-post-teaser-image-og-override.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Post: Teaser Image with OpenGraph Override" -header: - teaser: /assets/images/page-header-teaser.png - og_image: /assets/images/page-header-og-image.png -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2017-10-26T15:12:19-04:00 ---- - -This post has a teaser image with an OpenGraph override. - -```yaml -header: - teaser: /assets/images/page-header-teaser.png - og_image: /assets/images/page-header-og-image.png -``` \ No newline at end of file diff --git a/docs/_posts/2010-08-06-post-image-linked-caption.md b/docs/_posts/2010-08-06-post-image-linked-caption.md deleted file mode 100644 index 67be312084cd..000000000000 --- a/docs/_posts/2010-08-06-post-image-linked-caption.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Post: Image (Linked with Caption)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -{% capture fig_img %} -[![Foo](https://images.unsplash.com/photo-1541943869728-4bd4f450c8f5?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=800&fit=max&ixid=eyJhcHBfaWQiOjF9)](https://unsplash.com/) -{% endcapture %} - -{% capture fig_caption %} -Image with a caption. -{% endcapture %} - -
    - {{ fig_img | markdownify | remove: "

    " | remove: "

    " }} -
    {{ fig_caption | markdownify | remove: "

    " | remove: "

    " }}
    -
    diff --git a/docs/_posts/2010-08-07-post-image-caption.md b/docs/_posts/2010-08-07-post-image-caption.md deleted file mode 100644 index 7606e55e9bac..000000000000 --- a/docs/_posts/2010-08-07-post-image-caption.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Post: Image (Caption)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -{% capture fig_img %} -![Foo]({{ "/assets/images/unsplash-gallery-image-3.jpg" | relative_url }}) -{% endcapture %} - -
    - {{ fig_img | markdownify | remove: "

    " | remove: "

    " }} -
    Photo from Unsplash.
    -
    \ No newline at end of file diff --git a/docs/_posts/2010-09-09-post-gallery.md b/docs/_posts/2010-09-09-post-gallery.md deleted file mode 100644 index 3bdd4ff3f477..000000000000 --- a/docs/_posts/2010-09-09-post-gallery.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: "Post: Gallery" -categories: - - Post Formats -tags: - - gallery - - Post Formats - - tiled -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Image 1 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Image 2 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" - title: "Image 3 title caption" - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 4" - title: "Image 4 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 5" - title: "Image 5 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 6" - title: "Image 6 title caption" - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 7" - title: "Image 7 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 8" - title: "Image 8 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 9" - title: "Image 9 title caption" - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 10" - title: "Image 10 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 11" - title: "Image 11 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 12" - title: "Image 12 title caption" -gallery2: - - url: https://flic.kr/p/8a6Ven - image_path: https://farm2.staticflickr.com/1272/4697500467_8294dac099_q.jpg - alt: "Black and grays with a hint of green" - - url: https://flic.kr/p/8a738X - image_path: https://farm5.staticflickr.com/4029/4697523701_249e93ba23_q.jpg - alt: "Made for open text placement" - - url: https://flic.kr/p/8a6VXP - image_path: https://farm5.staticflickr.com/4046/4697502929_72c612c636_q.jpg - alt: "Fog in the trees" -gallery3: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - image_path: /assets/images/unsplash-gallery-image-4-th.jpg - alt: "placeholder image 4" ---- - -These are gallery tests for image wrapped in `
    ` elements. - -To place a gallery add the necessary YAML Front Matter: - -```yaml -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Image 1 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Image 2 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" - title: "Image 3 title caption" - - url: /assets/images/unsplash-gallery-image-4.jpg - image_path: /assets/images/unsplash-gallery-image-4-th.jpg - alt: "placeholder image 4" - title: "Image 4 title caption" -``` - -And then drop-in the gallery include --- gallery `caption` is optional. - -```liquid -{% raw %}{% include gallery caption="This is a sample gallery with **Markdown support**." %}{% endraw %} -``` - -{% include gallery caption="This is a sample gallery with **Markdown support**." %} - -This is some text after the gallery just to make sure that everything aligns properly. - -Here comes another gallery, this time set the `id` to match 2nd gallery hash in YAML Front Matter. - -```yaml -gallery2: - - url: https://flic.kr/p/8a6Ven - image_path: https://farm2.staticflickr.com/1272/4697500467_8294dac099_q.jpg - alt: "Black and grays with a hint of green" - - url: https://flic.kr/p/8a738X - image_path: https://farm5.staticflickr.com/4029/4697523701_249e93ba23_q.jpg - alt: "Made for open text placement" - - url: https://flic.kr/p/8a6VXP - image_path: https://farm5.staticflickr.com/4046/4697502929_72c612c636_q.jpg - alt: "Fog in the trees" -``` - -And place it like so: - -```liquid -{% raw %}{% include gallery id="gallery2" caption="This is a second gallery example with images hosted externally." %}{% endraw %} -``` - -{% include gallery id="gallery2" caption="This is a second gallery example with images hosted externally." %} - -And for giggles one more gallery just to make sure this works. To fill page content container add `class="full"`. - -{% include gallery id="gallery3" class="full" caption="This is a third gallery example with two images and fills the entire content container." %} - -Gallery column layout can be overrided by setting a `layout`. - -```liquid -{% raw %}{% include gallery id="gallery" layout="half" caption="This is a half gallery layout example." %}{% endraw %} -``` - -{% include gallery id="gallery" layout="half" caption="This is a half gallery layout example." %} \ No newline at end of file diff --git a/docs/_posts/2010-09-10-post-twitter-embeds.md b/docs/_posts/2010-09-10-post-twitter-embeds.md deleted file mode 100644 index 7c5c4187313c..000000000000 --- a/docs/_posts/2010-09-10-post-twitter-embeds.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Post: Twitter Embed" -categories: - - Media -tags: - - content - - embeds - - media - - twitter ---- - - - - -This post tests Twitter Embeds. \ No newline at end of file diff --git a/docs/_posts/2010-10-25-post-future-date.md b/docs/_posts/2010-10-25-post-future-date.md deleted file mode 100644 index 7d1b203a776d..000000000000 --- a/docs/_posts/2010-10-25-post-future-date.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Post: Future Date" -date: 9999-12-31 -categories: - - Post ---- - -This post lives in the future and is dated {{ page.date | date: "%c" }}. When building Jekyll with the `--future` flag it should appear. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-comments-disabled.md b/docs/_posts/2012-01-02-layout-comments-disabled.md deleted file mode 100644 index ab69a5275e71..000000000000 --- a/docs/_posts/2012-01-02-layout-comments-disabled.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Comments Disabled" -comments: false -categories: - - Layout - - Uncategorized -tags: - - comments - - layout ---- - -This post has its comments disabled. - -There should be no comment form. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-comments.md b/docs/_posts/2012-01-02-layout-comments.md deleted file mode 100644 index c138699cdabc..000000000000 --- a/docs/_posts/2012-01-02-layout-comments.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Layout: Comments Enabled" -comments: true -categories: - - Layout - - Uncategorized -tags: - - comments - - layout ---- - -This post should display comments if a `provider` is enabled. \ 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 deleted file mode 100644 index a10a3e4648eb..000000000000 --- a/docs/_posts/2012-01-02-layout-post-date-disabled.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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 deleted file mode 100644 index b31c9a275b5c..000000000000 --- a/docs/_posts/2012-01-02-layout-post-date.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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-01-02-layout-read-time-disabled.md b/docs/_posts/2012-01-02-layout-read-time-disabled.md deleted file mode 100644 index d88992241384..000000000000 --- a/docs/_posts/2012-01-02-layout-read-time-disabled.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Layout: Read Time Disabled" -read_time: false -tags: - - read time ---- - -This post has reading time disabled. The estimated time that it takes to read this post should not be showing if `read_time: 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-read-time.md b/docs/_posts/2012-01-02-layout-read-time.md deleted file mode 100644 index a636e0a48b06..000000000000 --- a/docs/_posts/2012-01-02-layout-read-time.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Layout: Read Time Enabled" -read_time: true -tags: - - read time ---- - -This post has reading time enabled. The estimated time that it takes to read this post should show if also enabled in `_config.yml` with `read_time: true`. - -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-related-posts-disabled.md b/docs/_posts/2012-01-02-layout-related-posts-disabled.md deleted file mode 100644 index 3831e74005e2..000000000000 --- a/docs/_posts/2012-01-02-layout-related-posts-disabled.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Related Posts Disabled" -related: false -categories: - - Layout - - Uncategorized -tags: - - related posts - - layout ---- - -This post has related posts disabled. - -Related post links should not appear. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-related-posts.md b/docs/_posts/2012-01-02-layout-related-posts.md deleted file mode 100644 index 0293bc6f0c58..000000000000 --- a/docs/_posts/2012-01-02-layout-related-posts.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Layout: Related Posts Enabled" -related: true -categories: - - Layout - - Uncategorized -tags: - - related posts - - layout ---- - -This post has related posts enabled. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-sharing-disabled.md b/docs/_posts/2012-01-02-layout-sharing-disabled.md deleted file mode 100644 index c69d8bbfbc2f..000000000000 --- a/docs/_posts/2012-01-02-layout-sharing-disabled.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Social Sharing Links Disabled" -share: false -categories: - - Layout - - Uncategorized -tags: - - social - - layout ---- - -This post has social sharing disabled. - -Social sharing links should not appear. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-sharing.md b/docs/_posts/2012-01-02-layout-sharing.md deleted file mode 100644 index 09808f146166..000000000000 --- a/docs/_posts/2012-01-02-layout-sharing.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Layout: Social Sharing Links Enabled" -share: true -categories: - - Layout - - Uncategorized -tags: - - social - - layout ---- - -This post should display social sharing links. \ No newline at end of file diff --git a/docs/_posts/2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md b/docs/_posts/2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md deleted file mode 100644 index dacb207a7793..000000000000 --- a/docs/_posts/2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Layout: Reading Time, Comments, Social Sharing Links, and Related Posts Disabled" -read_time: false -comments: false -share: false -related: false -categories: - - Layout - - Uncategorized -tags: - - related posts - - social - - comments - - layout ---- - -This post has reading time, comments, social sharing links, and related posts disabled. - -Reading time, comments, social sharing and related post links should not appear. \ No newline at end of file diff --git a/docs/_posts/2012-01-03-layout-table-of-contents-include-post.md b/docs/_posts/2012-01-03-layout-table-of-contents-include-post.md deleted file mode 100644 index 622b04da1d69..000000000000 --- a/docs/_posts/2012-01-03-layout-table-of-contents-include-post.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: "Layout: Post with Nested Table of Contents via Helper" -tags: - - table of contents ---- - -Tests table of contents with multiple levels to verify indentation is readible via helper include (deprecated). - -``` -{% raw %}{% include toc %}{% endraw %} -``` - -{% include toc %} - -# Enim laboris id ea elit elit deserunt - -Magna incididunt elit id enim nisi quis excepteur reprehenderit Lorem dolore dolore ad enim. Labore esse elit excepteur et elit dolor. Elit ut consectetur labore velit elit esse voluptate id commodo. Magna cillum officia consequat non occaecat mollit esse nisi quis. - -Nostrud veniam excepteur commodo enim pariatur velit est. Dolor consequat elit occaecat enim veniam ullamco qui est anim ex elit. Est minim aute magna laborum reprehenderit magna reprehenderit ullamco voluptate id sit aliqua. Id labore veniam ad duis aliquip commodo qui ex ut ipsum irure. In et sit ea cupidatat consectetur in nisi amet in cupidatat excepteur commodo amet. - -## 2 Sit adipisicing tempor duis velit cupidatat occaecat do amet - -Ad non dolore irure in. In do ut nostrud reprehenderit consequat aliqua sunt culpa voluptate amet minim ea. Eu dolore deserunt consectetur eu in minim sit nulla id id est amet consectetur. Tempor dolore ipsum magna amet velit aliquip ea anim non eu Lorem deserunt. Irure excepteur id adipisicing elit dolor ipsum eiusmod non nulla nisi sint qui et. Occaecat pariatur tempor ex nisi pariatur. - -Proident culpa nostrud id est qui fugiat duis aute. Cillum commodo pariatur nostrud culpa Lorem exercitation non. Consequat elit deserunt dolore voluptate sunt labore minim ut consequat minim. - -Sunt pariatur in ex non nulla proident ex ullamco Lorem do ipsum. Cillum est mollit reprehenderit excepteur labore labore elit dolore adipisicing ad quis quis aliqua sunt. Proident amet est reprehenderit deserunt amet cupidatat incididunt irure est elit. - -### 2.1 Ex et quis exercitation fugiat excepteur eiusmod mollit consequat id pariatur non adipisicing magna tempor - -Nostrud sunt nostrud incididunt adipisicing officia esse minim irure duis dolore adipisicing cupidatat. Eu non labore veniam ad sunt pariatur qui. Irure reprehenderit qui elit duis cillum sit officia consectetur sint deserunt do aute velit. Do id occaecat magna occaecat reprehenderit veniam pariatur Lorem. Officia sit cupidatat adipisicing laborum. - -#### 2.1.1 Ut nostrud reprehenderit proident culpa enim irure cupidatat sunt ex ea minim nostrud - -Laborum laboris et ut proident sit qui pariatur nisi commodo. Deserunt eiusmod eiusmod elit anim exercitation quis. Anim laboris irure minim elit fugiat velit esse officia amet reprehenderit id. Dolor eiusmod incididunt excepteur sint aute qui esse nostrud. Nisi qui adipisicing consectetur enim pariatur sint veniam esse. - -#### 2.1.2 Nisi non nisi ullamco ipsum cillum -Minim officia tempor eiusmod sint magna reprehenderit do amet ex velit. Irure nulla ut veniam eu veniam proident esse pariatur cillum. Esse anim et proident cillum esse magna sint. - -#### 2.1.3 Ut pariatur do do eiusmod consequat do pariatur nisi ex anim reprehenderit nostrud -Reprehenderit consectetur tempor labore dolore ad. Ullamco qui sunt quis deserunt id ipsum sit qui nisi esse deserunt ad exercitation. Dolore qui in mollit ex qui minim et ipsum reprehenderit. Tempor magna ipsum proident voluptate mollit quis consectetur veniam non aliquip cupidatat nisi culpa aute. - -##### 2.1.1.1 Ut aute quis ipsum fugiat dolor -Occaecat excepteur et ea et exercitation ad aute minim incididunt incididunt aute sint officia aliquip. Quis cupidatat nostrud dolor consequat laboris eu ullamco qui esse excepteur aute. Veniam ut ipsum aute Lorem proident minim ea fugiat Lorem cillum. Qui esse id minim consequat ullamco aliqua pariatur ea mollit. Minim ea ipsum laborum consequat esse mollit pariatur. Voluptate sit voluptate non ut consectetur irure laboris ex adipisicing dolore elit aliquip velit. In eu veniam voluptate incididunt aute eu reprehenderit ut id voluptate. - -##### 2.1.1.2 Consequat nostrud quis officia et aliquip quis magna mollit veniam -Magna duis exercitation dolor amet. Ea irure laborum sit officia reprehenderit enim aute magna duis. Elit fugiat ut proident sit. - -###### 2.1.1.1.1 Id cillum proident labore occaecat reprehenderit excepteur fugiat est - -Irure qui veniam incididunt irure consequat mollit consectetur est nostrud deserunt eiusmod nostrud quis. Eiusmod id proident eu aute exercitation irure consectetur sit dolor dolor in esse. Qui eu dolor ea est magna amet laborum qui irure. Reprehenderit excepteur voluptate fugiat exercitation voluptate laboris nostrud qui magna et officia. - -###### 2.1.1.1.2 In consectetur ea qui quis culpa nulla - -Ad quis duis dolore voluptate laborum eiusmod consequat sint. Cupidatat officia ex laborum ad non mollit excepteur ea. Nostrud elit in consequat sunt adipisicing reprehenderit ipsum proident irure. Sint velit laborum sint laboris ea. Veniam occaecat et in Lorem proident minim deserunt labore laborum reprehenderit. Consequat laborum deserunt culpa consectetur. Incididunt reprehenderit amet esse duis dolore pariatur adipisicing quis elit. - -###### 2.1.1.1.3 Culpa magna pariatur magna officia adipisicing ex minim ea do est - -Dolore reprehenderit aute ex id. Ipsum laboris sit quis enim labore ut sint cillum exercitation. Commodo aliqua exercitation enim sunt velit do laborum mollit irure dolor. - -###### 2.1.1.1.4 Veniam ipsum non reprehenderit pariatur - -Laboris amet quis sunt id dolor consectetur Lorem id aliquip laboris fugiat. Non ex magna deserunt veniam eiusmod. Irure culpa culpa dolore pariatur. Elit enim deserunt ut amet adipisicing elit laborum exercitation cupidatat et. Aliqua aliqua laborum exercitation commodo reprehenderit reprehenderit amet laboris ea ea ex amet in. Aute minim voluptate et ipsum culpa consequat. - -##### 2.1.1.3 Ut qui labore officia ad laboris eu amet minim tempor qui cupidatat duis aute - -In in dolore laboris irure est consequat magna ea non aute cupidatat tempor. Officia sit pariatur consequat laborum aliqua nulla anim nisi aliquip reprehenderit consequat. Ad duis labore minim consequat reprehenderit labore ex minim cillum magna incididunt adipisicing dolor. Non velit mollit minim consectetur minim. Cillum elit et amet est reprehenderit non. Elit adipisicing nostrud ea veniam occaecat commodo deserunt. - -##### 2.1.1.4 Magna ipsum nisi velit anim - -Eiusmod tempor dolor proident pariatur consequat sit non nostrud. Eiusmod duis elit esse Lorem dolore et minim elit consectetur eu ullamco. Adipisicing sunt excepteur eu mollit in nostrud. - -###### 2.1.1.4.1 Mollit nulla est tempor fugiat occaecat nostrud - -Exercitation eu labore Lorem culpa id enim ut officia aute proident in est irure. Nostrud adipisicing magna elit tempor ipsum culpa in incididunt consectetur incididunt veniam aute tempor sint. Officia est consectetur sint sint nostrud proident mollit. Dolore duis proident mollit consectetur tempor. - -###### 2.1.1.2.1 Culpa aliquip irure et nostrud esse consequat fugiat dolor - -Ad ut commodo elit amet officia ipsum labore do amet. Eiusmod sint irure magna proident nisi adipisicing mollit excepteur mollit proident culpa duis. Est reprehenderit consequat eiusmod deserunt duis ipsum esse amet incididunt. - -#### 2.1.4 Laboris exercitation nisi tempor dolore - -Elit culpa est eiusmod nostrud occaecat. Labore incididunt nostrud consectetur sint. Ut pariatur laborum incididunt culpa proident incididunt veniam veniam laboris adipisicing mollit. Ullamco magna tempor fugiat veniam in ipsum nisi mollit labore amet et sit quis. In consectetur fugiat Lorem culpa veniam minim. Irure aliqua est mollit consectetur id Lorem velit minim sit velit. Eiusmod magna do dolor est id reprehenderit minim fugiat minim incididunt incididunt laboris velit consequat. - -### 2.2 Officia irure duis et est sunt - -Consequat anim quis non nulla. Eiusmod pariatur sunt non culpa culpa ipsum nulla anim in. Non ad exercitation ut reprehenderit ut dolor laborum tempor ad qui magna fugiat irure. Sint commodo ea sint sunt. Irure qui pariatur tempor veniam reprehenderit amet est. Amet laboris proident Lorem deserunt proident duis esse do sit eu dolor qui duis eu. Mollit laboris nisi aute nulla consectetur exercitation nulla aliqua anim. - -## 3 Laborum eu magna proident proident tempor - -Occaecat aliqua id voluptate mollit aliquip. Elit excepteur magna esse commodo pariatur reprehenderit in in quis. Id dolore proident proident mollit tempor duis magna ullamco nulla velit consequat. In ut est aliquip in commodo ullamco sit sint. - -### 3.1 Amet enim do laboris ipsum aliqua eiusmod non eu - -Laborum magna deserunt do anim quis proident adipisicing. Dolore qui ex minim reprehenderit. Consectetur in cillum ad dolore ut id deserunt irure aute sint magna dolore adipisicing. - -### 3.2 Do exercitation ex elit incididunt sit cupidatat - -Excepteur aliqua nisi ullamco sunt fugiat laborum elit aliquip officia culpa. Est exercitation enim laborum amet exercitation. Eu quis qui eiusmod incididunt id do aliquip nostrud do esse enim excepteur enim pariatur. Aute adipisicing velit non culpa quis exercitation. Quis cupidatat anim occaecat Lorem ad mollit aute eiusmod quis dolor duis. Proident anim et nostrud ut aliquip irure adipisicing reprehenderit proident dolore magna. Consequat eu fugiat esse proident duis eu proident fugiat laboris ea veniam nisi reprehenderit. - -### 3.3 Officia aliquip fugiat ex pariatur nisi et nostrud adipisicing eu minim laboris eiusmod ea sunt - -Consectetur irure elit nulla elit non officia. Culpa Lorem minim dolor laboris enim labore do minim laborum. Fugiat deserunt nisi ut do incididunt incididunt ea anim exercitation sit duis. Irure esse pariatur labore enim labore qui anim culpa laborum velit consequat. Culpa in adipisicing excepteur est ipsum. In reprehenderit eiusmod ad ad non. - -### 3.4 Ipsum velit laborum est nostrud qui enim ullamco velit dolor Lorem magna - -Nulla magna dolor minim commodo. Sunt nulla cupidatat consequat eiusmod elit irure eiusmod excepteur. Sit incididunt irure minim magna. Tempor ipsum exercitation minim sunt labore dolor ullamco veniam enim nisi veniam adipisicing occaecat proident. - -### 3.5 Officia fugiat fugiat voluptate ullamco eiusmod duis minim aliqua consequat consectetur qui do sunt fugiat - -Non aute culpa irure qui aute adipisicing aute id commodo id. Laborum ullamco laboris velit in quis duis ut consequat do minim. In minim amet ut reprehenderit et voluptate. In quis Lorem occaecat nostrud excepteur nostrud dolore in nulla ad Lorem nisi. Dolor exercitation Lorem qui sint aute ipsum officia eiusmod aliquip Lorem sit. Reprehenderit ex veniam excepteur laboris magna dolore fugiat sit exercitation esse et consequat in sit. Incididunt pariatur ad esse anim aute do id eu. - -#### 3.5.1 Mollit laborum ea aliquip mollit quis commodo fugiat tempor deserunt exercitation sint culpa ipsum tempor - -Est cillum laborum cupidatat ullamco cupidatat magna laborum enim duis consequat est eu. Magna cillum Lorem proident non ut officia. Esse irure et laboris eu occaecat aute. - -##### 3.5.1.1 Nisi anim commodo consequat quis amet - -Sunt eu dolor enim enim consectetur et anim irure dolor velit cillum. Esse reprehenderit cillum incididunt adipisicing amet nostrud adipisicing. Minim mollit nostrud ipsum ea ut sit ex elit. Do esse ad et ipsum nisi sint anim culpa excepteur ipsum. Commodo nisi irure qui reprehenderit incididunt. - -###### 3.5.1.1.1 Culpa nulla Lorem adipisicing ut sit cupidatat laborum laborum cupidatat proident - -Dolore dolor sit sunt anim eu amet consectetur quis ea proident ex aliqua. Sunt laborum consectetur consectetur enim velit eiusmod labore commodo commodo laboris deserunt. Eiusmod enim do amet laborum commodo qui. - -### 3.6 Reprehenderit culpa consectetur veniam minim cillum in nostrud - -Lorem dolore sit aliqua tempor do voluptate ut esse. Minim velit ad velit commodo minim laborum. Qui qui reprehenderit non proident ullamco veniam aliquip. - -## 4 Laboris aute consequat id eu et Lorem amet - -Ad qui voluptate dolor veniam. Veniam mollit aute eiusmod eu labore incididunt sint proident. Non minim consequat anim sint. Aliquip non nisi nostrud proident. Eiusmod ut duis commodo sunt laboris irure eu. Laboris quis amet ad qui officia. - -## 5 Esse eu consequat consequat aliqua fugiat nulla ad labore consectetur eu pariatur nisi aute - -Duis proident ullamco fugiat aliqua sunt anim ea do irure est amet quis nulla cillum. Commodo voluptate dolor culpa sint aliquip voluptate exercitation anim cillum ad eu in amet. Sint fugiat qui commodo quis ex eu commodo officia aliquip irure. Non dolore elit excepteur id laboris irure consequat magna consectetur. Qui proident deserunt culpa tempor sit aute velit proident cillum ea. - -## 6 Aliquip sunt laborum excepteur cupidatat officia ad tempor veniam esse amet ea commodo sunt - -Ex minim pariatur est nisi exercitation exercitation reprehenderit id aliqua deserunt est. Laborum ullamco do ipsum minim ipsum aliquip voluptate voluptate aliqua. Magna proident velit veniam et minim commodo officia officia mollit nisi. Excepteur occaecat deserunt irure adipisicing minim adipisicing cupidatat non anim exercitation ex. Amet quis sunt sint veniam non id nisi ipsum mollit voluptate quis tempor tempor. diff --git a/docs/_posts/2012-01-03-layout-table-of-contents-indent-post.md b/docs/_posts/2012-01-03-layout-table-of-contents-indent-post.md deleted file mode 100644 index e36f8104ccd4..000000000000 --- a/docs/_posts/2012-01-03-layout-table-of-contents-indent-post.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Layout: Post with Nested Table of Contents" -tags: - - table of contents -toc: true ---- - -Tests table of contents with multiple levels to verify indentation is readible. - -# Enim laboris id ea elit elit deserunt - -Magna incididunt elit id enim nisi quis excepteur reprehenderit Lorem dolore dolore ad enim. Labore esse elit excepteur et elit dolor. Elit ut consectetur labore velit elit esse voluptate id commodo. Magna cillum officia consequat non occaecat mollit esse nisi quis. - -Nostrud veniam excepteur commodo enim pariatur velit est. Dolor consequat elit occaecat enim veniam ullamco qui est anim ex elit. Est minim aute magna laborum reprehenderit magna reprehenderit ullamco voluptate id sit aliqua. Id labore veniam ad duis aliquip commodo qui ex ut ipsum irure. In et sit ea cupidatat consectetur in nisi amet in cupidatat excepteur commodo amet. - -## 2 Sit adipisicing tempor duis velit cupidatat occaecat do amet - -Ad non dolore irure in. In do ut nostrud reprehenderit consequat aliqua sunt culpa voluptate amet minim ea. Eu dolore deserunt consectetur eu in minim sit nulla id id est amet consectetur. Tempor dolore ipsum magna amet velit aliquip ea anim non eu Lorem deserunt. Irure excepteur id adipisicing elit dolor ipsum eiusmod non nulla nisi sint qui et. Occaecat pariatur tempor ex nisi pariatur. - -Proident culpa nostrud id est qui fugiat duis aute. Cillum commodo pariatur nostrud culpa Lorem exercitation non. Consequat elit deserunt dolore voluptate sunt labore minim ut consequat minim. - -Sunt pariatur in ex non nulla proident ex ullamco Lorem do ipsum. Cillum est mollit reprehenderit excepteur labore labore elit dolore adipisicing ad quis quis aliqua sunt. Proident amet est reprehenderit deserunt amet cupidatat incididunt irure est elit. - -### 2.1 Ex et quis exercitation fugiat excepteur eiusmod mollit consequat id pariatur non adipisicing magna tempor - -Nostrud sunt nostrud incididunt adipisicing officia esse minim irure duis dolore adipisicing cupidatat. Eu non labore veniam ad sunt pariatur qui. Irure reprehenderit qui elit duis cillum sit officia consectetur sint deserunt do aute velit. Do id occaecat magna occaecat reprehenderit veniam pariatur Lorem. Officia sit cupidatat adipisicing laborum. - -#### 2.1.1 Ut nostrud reprehenderit proident culpa enim irure cupidatat sunt ex ea minim nostrud - -Laborum laboris et ut proident sit qui pariatur nisi commodo. Deserunt eiusmod eiusmod elit anim exercitation quis. Anim laboris irure minim elit fugiat velit esse officia amet reprehenderit id. Dolor eiusmod incididunt excepteur sint aute qui esse nostrud. Nisi qui adipisicing consectetur enim pariatur sint veniam esse. - -#### 2.1.2 Nisi non nisi ullamco ipsum cillum -Minim officia tempor eiusmod sint magna reprehenderit do amet ex velit. Irure nulla ut veniam eu veniam proident esse pariatur cillum. Esse anim et proident cillum esse magna sint. - -#### 2.1.3 Ut pariatur do do eiusmod consequat do pariatur nisi ex anim reprehenderit nostrud -Reprehenderit consectetur tempor labore dolore ad. Ullamco qui sunt quis deserunt id ipsum sit qui nisi esse deserunt ad exercitation. Dolore qui in mollit ex qui minim et ipsum reprehenderit. Tempor magna ipsum proident voluptate mollit quis consectetur veniam non aliquip cupidatat nisi culpa aute. - -##### 2.1.1.1 Ut aute quis ipsum fugiat dolor -Occaecat excepteur et ea et exercitation ad aute minim incididunt incididunt aute sint officia aliquip. Quis cupidatat nostrud dolor consequat laboris eu ullamco qui esse excepteur aute. Veniam ut ipsum aute Lorem proident minim ea fugiat Lorem cillum. Qui esse id minim consequat ullamco aliqua pariatur ea mollit. Minim ea ipsum laborum consequat esse mollit pariatur. Voluptate sit voluptate non ut consectetur irure laboris ex adipisicing dolore elit aliquip velit. In eu veniam voluptate incididunt aute eu reprehenderit ut id voluptate. - -##### 2.1.1.2 Consequat nostrud quis officia et aliquip quis magna mollit veniam -Magna duis exercitation dolor amet. Ea irure laborum sit officia reprehenderit enim aute magna duis. Elit fugiat ut proident sit. - -###### 2.1.1.1.1 Id cillum proident labore occaecat reprehenderit excepteur fugiat est - -Irure qui veniam incididunt irure consequat mollit consectetur est nostrud deserunt eiusmod nostrud quis. Eiusmod id proident eu aute exercitation irure consectetur sit dolor dolor in esse. Qui eu dolor ea est magna amet laborum qui irure. Reprehenderit excepteur voluptate fugiat exercitation voluptate laboris nostrud qui magna et officia. - -###### 2.1.1.1.2 In consectetur ea qui quis culpa nulla - -Ad quis duis dolore voluptate laborum eiusmod consequat sint. Cupidatat officia ex laborum ad non mollit excepteur ea. Nostrud elit in consequat sunt adipisicing reprehenderit ipsum proident irure. Sint velit laborum sint laboris ea. Veniam occaecat et in Lorem proident minim deserunt labore laborum reprehenderit. Consequat laborum deserunt culpa consectetur. Incididunt reprehenderit amet esse duis dolore pariatur adipisicing quis elit. - -###### 2.1.1.1.3 Culpa magna pariatur magna officia adipisicing ex minim ea do est - -Dolore reprehenderit aute ex id. Ipsum laboris sit quis enim labore ut sint cillum exercitation. Commodo aliqua exercitation enim sunt velit do laborum mollit irure dolor. - -###### 2.1.1.1.4 Veniam ipsum non reprehenderit pariatur - -Laboris amet quis sunt id dolor consectetur Lorem id aliquip laboris fugiat. Non ex magna deserunt veniam eiusmod. Irure culpa culpa dolore pariatur. Elit enim deserunt ut amet adipisicing elit laborum exercitation cupidatat et. Aliqua aliqua laborum exercitation commodo reprehenderit reprehenderit amet laboris ea ea ex amet in. Aute minim voluptate et ipsum culpa consequat. - -##### 2.1.1.3 Ut qui labore officia ad laboris eu amet minim tempor qui cupidatat duis aute - -In in dolore laboris irure est consequat magna ea non aute cupidatat tempor. Officia sit pariatur consequat laborum aliqua nulla anim nisi aliquip reprehenderit consequat. Ad duis labore minim consequat reprehenderit labore ex minim cillum magna incididunt adipisicing dolor. Non velit mollit minim consectetur minim. Cillum elit et amet est reprehenderit non. Elit adipisicing nostrud ea veniam occaecat commodo deserunt. - -##### 2.1.1.4 Magna ipsum nisi velit anim - -Eiusmod tempor dolor proident pariatur consequat sit non nostrud. Eiusmod duis elit esse Lorem dolore et minim elit consectetur eu ullamco. Adipisicing sunt excepteur eu mollit in nostrud. - -###### 2.1.1.4.1 Mollit nulla est tempor fugiat occaecat nostrud - -Exercitation eu labore Lorem culpa id enim ut officia aute proident in est irure. Nostrud adipisicing magna elit tempor ipsum culpa in incididunt consectetur incididunt veniam aute tempor sint. Officia est consectetur sint sint nostrud proident mollit. Dolore duis proident mollit consectetur tempor. - -###### 2.1.1.2.1 Culpa aliquip irure et nostrud esse consequat fugiat dolor - -Ad ut commodo elit amet officia ipsum labore do amet. Eiusmod sint irure magna proident nisi adipisicing mollit excepteur mollit proident culpa duis. Est reprehenderit consequat eiusmod deserunt duis ipsum esse amet incididunt. - -#### 2.1.4 Laboris exercitation nisi tempor dolore - -Elit culpa est eiusmod nostrud occaecat. Labore incididunt nostrud consectetur sint. Ut pariatur laborum incididunt culpa proident incididunt veniam veniam laboris adipisicing mollit. Ullamco magna tempor fugiat veniam in ipsum nisi mollit labore amet et sit quis. In consectetur fugiat Lorem culpa veniam minim. Irure aliqua est mollit consectetur id Lorem velit minim sit velit. Eiusmod magna do dolor est id reprehenderit minim fugiat minim incididunt incididunt laboris velit consequat. - -### 2.2 Officia irure duis et est sunt - -Consequat anim quis non nulla. Eiusmod pariatur sunt non culpa culpa ipsum nulla anim in. Non ad exercitation ut reprehenderit ut dolor laborum tempor ad qui magna fugiat irure. Sint commodo ea sint sunt. Irure qui pariatur tempor veniam reprehenderit amet est. Amet laboris proident Lorem deserunt proident duis esse do sit eu dolor qui duis eu. Mollit laboris nisi aute nulla consectetur exercitation nulla aliqua anim. - -## 3 Laborum eu magna proident proident tempor - -Occaecat aliqua id voluptate mollit aliquip. Elit excepteur magna esse commodo pariatur reprehenderit in in quis. Id dolore proident proident mollit tempor duis magna ullamco nulla velit consequat. In ut est aliquip in commodo ullamco sit sint. - -### 3.1 Amet enim do laboris ipsum aliqua eiusmod non eu - -Laborum magna deserunt do anim quis proident adipisicing. Dolore qui ex minim reprehenderit. Consectetur in cillum ad dolore ut id deserunt irure aute sint magna dolore adipisicing. - -### 3.2 Do exercitation ex elit incididunt sit cupidatat - -Excepteur aliqua nisi ullamco sunt fugiat laborum elit aliquip officia culpa. Est exercitation enim laborum amet exercitation. Eu quis qui eiusmod incididunt id do aliquip nostrud do esse enim excepteur enim pariatur. Aute adipisicing velit non culpa quis exercitation. Quis cupidatat anim occaecat Lorem ad mollit aute eiusmod quis dolor duis. Proident anim et nostrud ut aliquip irure adipisicing reprehenderit proident dolore magna. Consequat eu fugiat esse proident duis eu proident fugiat laboris ea veniam nisi reprehenderit. - -### 3.3 Officia aliquip fugiat ex pariatur nisi et nostrud adipisicing eu minim laboris eiusmod ea sunt - -Consectetur irure elit nulla elit non officia. Culpa Lorem minim dolor laboris enim labore do minim laborum. Fugiat deserunt nisi ut do incididunt incididunt ea anim exercitation sit duis. Irure esse pariatur labore enim labore qui anim culpa laborum velit consequat. Culpa in adipisicing excepteur est ipsum. In reprehenderit eiusmod ad ad non. - -### 3.4 Ipsum velit laborum est nostrud qui enim ullamco velit dolor Lorem magna - -Nulla magna dolor minim commodo. Sunt nulla cupidatat consequat eiusmod elit irure eiusmod excepteur. Sit incididunt irure minim magna. Tempor ipsum exercitation minim sunt labore dolor ullamco veniam enim nisi veniam adipisicing occaecat proident. - -### 3.5 Officia fugiat fugiat voluptate ullamco eiusmod duis minim aliqua consequat consectetur qui do sunt fugiat - -Non aute culpa irure qui aute adipisicing aute id commodo id. Laborum ullamco laboris velit in quis duis ut consequat do minim. In minim amet ut reprehenderit et voluptate. In quis Lorem occaecat nostrud excepteur nostrud dolore in nulla ad Lorem nisi. Dolor exercitation Lorem qui sint aute ipsum officia eiusmod aliquip Lorem sit. Reprehenderit ex veniam excepteur laboris magna dolore fugiat sit exercitation esse et consequat in sit. Incididunt pariatur ad esse anim aute do id eu. - -#### 3.5.1 Mollit laborum ea aliquip mollit quis commodo fugiat tempor deserunt exercitation sint culpa ipsum tempor - -Est cillum laborum cupidatat ullamco cupidatat magna laborum enim duis consequat est eu. Magna cillum Lorem proident non ut officia. Esse irure et laboris eu occaecat aute. - -##### 3.5.1.1 Nisi anim commodo consequat quis amet - -Sunt eu dolor enim enim consectetur et anim irure dolor velit cillum. Esse reprehenderit cillum incididunt adipisicing amet nostrud adipisicing. Minim mollit nostrud ipsum ea ut sit ex elit. Do esse ad et ipsum nisi sint anim culpa excepteur ipsum. Commodo nisi irure qui reprehenderit incididunt. - -###### 3.5.1.1.1 Culpa nulla Lorem adipisicing ut sit cupidatat laborum laborum cupidatat proident - -Dolore dolor sit sunt anim eu amet consectetur quis ea proident ex aliqua. Sunt laborum consectetur consectetur enim velit eiusmod labore commodo commodo laboris deserunt. Eiusmod enim do amet laborum commodo qui. - -### 3.6 Reprehenderit culpa consectetur veniam minim cillum in nostrud - -Lorem dolore sit aliqua tempor do voluptate ut esse. Minim velit ad velit commodo minim laborum. Qui qui reprehenderit non proident ullamco veniam aliquip. - -## 4 Laboris aute consequat id eu et Lorem amet - -Ad qui voluptate dolor veniam. Veniam mollit aute eiusmod eu labore incididunt sint proident. Non minim consequat anim sint. Aliquip non nisi nostrud proident. Eiusmod ut duis commodo sunt laboris irure eu. Laboris quis amet ad qui officia. - -## 5 Esse eu consequat consequat aliqua fugiat nulla ad labore consectetur eu pariatur nisi aute - -Duis proident ullamco fugiat aliqua sunt anim ea do irure est amet quis nulla cillum. Commodo voluptate dolor culpa sint aliquip voluptate exercitation anim cillum ad eu in amet. Sint fugiat qui commodo quis ex eu commodo officia aliquip irure. Non dolore elit excepteur id laboris irure consequat magna consectetur. Qui proident deserunt culpa tempor sit aute velit proident cillum ea. - -## 6 Aliquip sunt laborum excepteur cupidatat officia ad tempor veniam esse amet ea commodo sunt - -Ex minim pariatur est nisi exercitation exercitation reprehenderit id aliqua deserunt est. Laborum ullamco do ipsum minim ipsum aliquip voluptate voluptate aliqua. Magna proident velit veniam et minim commodo officia officia mollit nisi. Excepteur occaecat deserunt irure adipisicing minim adipisicing cupidatat non anim exercitation ex. Amet quis sunt sint veniam non id nisi ipsum mollit voluptate quis tempor tempor. diff --git a/docs/_posts/2012-01-03-layout-table-of-contents-post.md b/docs/_posts/2012-01-03-layout-table-of-contents-post.md deleted file mode 100644 index 01c14a2cf451..000000000000 --- a/docs/_posts/2012-01-03-layout-table-of-contents-post.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: "Layout: Post with Table of Contents" -header: - image: assets/images/unsplash-image-9.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -tags: - - table of contents -toc: true -toc_label: "Unique Title" -toc_icon: "heart" ---- - -Enable table of contents on post or page by adding `toc: true` to its YAML Front Matter. The title and icon can also be changed with: - -```yaml ---- -toc: true -toc_label: "Unique Title" -toc_icon: "heart" # corresponding Font Awesome icon name (without fa prefix) ---- -``` - -## HTML Elements - -Below is just about everything you'll need to style in the theme. Check the source code to see the many embedded elements within paragraphs. - -## Body text - -Lorem ipsum dolor sit amet, test link adipiscing elit. **This is strong**. Nullam dignissim convallis est. Quisque aliquam. - -![Smithsonian Image]({{ site.url }}{{ site.baseurl }}/assets/images/3953273590_704e3899d5_m.jpg) -{: .image-right} - -*This is emphasized*. Donec faucibus. Nunc iaculis suscipit dui. 53 = 125. Water is H2O. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. The New York Times (That’s a citation). Underline.Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. - -HTML and CSS are our tools. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. - -### Blockquotes - -> Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. - -## List Types - -### Ordered Lists - -1. Item one - 1. sub item one - 2. sub item two - 3. sub item three -2. Item two - -### Unordered Lists - -* Item one -* Item two -* Item three - -## Tables - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|---- -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|===== -| Foot1 | Foot2 | Foot3 -{: rules="groups"} - -## Code Snippets - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - - - - - - - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} \ No newline at end of file diff --git a/docs/_posts/2012-01-03-layout-table-of-contents-sticky.md b/docs/_posts/2012-01-03-layout-table-of-contents-sticky.md deleted file mode 100644 index a8eae408204d..000000000000 --- a/docs/_posts/2012-01-03-layout-table-of-contents-sticky.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "Layout: Post with Sticky Table of Contents" -tags: - - table of contents -toc: true -toc_sticky: true ---- - -"Stick" table of contents to the top of a page by adding `toc_sticky: true` to its YAML Front Matter. - -```yaml ---- -toc: true -toc_sticky: true ---- -``` - -## HTML Elements - -Below is just about everything you'll need to style in the theme. Check the source code to see the many embedded elements within paragraphs. - -## Body text - -Lorem ipsum dolor sit amet, test link adipiscing elit. **This is strong**. Nullam dignissim convallis est. Quisque aliquam. - -![Smithsonian Image]({{ site.url }}{{ site.baseurl }}/assets/images/3953273590_704e3899d5_m.jpg) -{: .image-right} - -*This is emphasized*. Donec faucibus. Nunc iaculis suscipit dui. 53 = 125. Water is H2O. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. The New York Times (That’s a citation). Underline.Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. - -HTML and CSS are our tools. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. - -### Blockquotes - -> Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. - -## List Types - -### Ordered Lists - -1. Item one - 1. sub item one - 2. sub item two - 3. sub item three -2. Item two - -### Unordered Lists - -* Item one -* Item two -* Item three - -## Tables - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|---- -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|===== -| Foot1 | Foot2 | Foot3 -{: rules="groups"} - -## Code Snippets - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - - - - - - - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} \ No newline at end of file diff --git a/docs/_posts/2012-03-14-layout-code-excerpt-generated.md b/docs/_posts/2012-03-14-layout-code-excerpt-generated.md deleted file mode 100644 index 0bdc595e2283..000000000000 --- a/docs/_posts/2012-03-14-layout-code-excerpt-generated.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Code Excerpt (Generated)" -categories: - - Layout - - Uncategorized -tags: - - content - - excerpt - - layout ---- - -This is the post content with inline code, (e.g. `red`. It should be displayed in place of the auto-generated excerpt in single-page views. Archive-index pages should display an auto-generated excerpt of this content. - -Be sure to test the formatting of the auto-generated excerpt, to ensure that it doesn't create any layout problems. \ No newline at end of file diff --git a/docs/_posts/2012-03-14-layout-excerpt-defined.md b/docs/_posts/2012-03-14-layout-excerpt-defined.md deleted file mode 100644 index 7091cf8f7907..000000000000 --- a/docs/_posts/2012-03-14-layout-excerpt-defined.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Layout: Excerpt (Defined)" -excerpt: "This is a user-defined post excerpt. It should be displayed in place of the post content in archive-index pages." -categories: - - Layout - - Uncategorized -tags: - - content - - excerpt - - layout ---- - -This is the post content. It should be displayed in place of the user-defined excerpt in archive-index pages. - -This paragraph should be absent from an archive-index page where `post.excerpt` is shown. \ No newline at end of file diff --git a/docs/_posts/2012-03-14-layout-excerpt-generated.md b/docs/_posts/2012-03-14-layout-excerpt-generated.md deleted file mode 100644 index 5f26140e78d0..000000000000 --- a/docs/_posts/2012-03-14-layout-excerpt-generated.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Layout: Excerpt (Generated)" -excerpt_separator: "" -categories: - - Layout - - Uncategorized -tags: - - content - - excerpt - - layout ---- - -This is the post content. Archive-index pages should display an auto-generated excerpt of this content. - - - -Be sure to test the formatting of the auto-generated excerpt, to ensure that it doesn't create any layout problems. \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-author-override.md b/docs/_posts/2012-03-15-layout-author-override.md deleted file mode 100644 index 333fc161970d..000000000000 --- a/docs/_posts/2012-03-15-layout-author-override.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "Layout: Author Override" -author: Billy Rick -excerpt: "A post to test author overrides using a data file." -last_modified_at: 2018-09-10T12:32:27-04:00 ---- - -Sites that may have content authored from various individuals can be accommodated by using [data files](https://jekyllrb.com/docs/datafiles/). - -To attribute an author to a post or page that is different from the site author specified in `_config.yml`: - -**Step 1.** Create `_data/authors.yml` and add authors using the following format. Anything variables found under `author` in `_config.yml` can be used (e.g. `name`, `bio`, `avatar`, author `links`, etc.). - -```yaml -# /_data/authors.yml - -Billy Rick: - name : "Billy Rick" - bio : "What do you want, jewels? I am a very extravagant man." - avatar : "/assets/images/bio-photo-2.jpg" - links: - - label: "Email" - icon: "fas fa-fw fa-envelope-square" - url: "mailto:billyrick@rick.com" - - label: "Website" - icon: "fas fa-fw fa-link" - url: "https://thewhip.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/extravagantman" - -Cornelius Fiddlebone: - name : "Cornelius Fiddlebone" - bio : "I ordered what?" - avatar : "/assets/images/bio-photo.jpg" - links: - - label: "Email" - icon: "fas fa-fw fa-envelope-square" - url: "mailto:cornelius@thewhip.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/rhymeswithsackit" -``` - -**Step 2.** Assign one of the authors in `authors.yml` to a post or page you wish to override the `site.author` with. - -Example: To assign `Billy Rick` as an author for a post the following YAML Front Matter would be applied: - -```yaml -author: Billy Rick -``` \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-author-sidebar-disabled.md b/docs/_posts/2012-03-15-layout-author-sidebar-disabled.md deleted file mode 100644 index a4d0dc19083f..000000000000 --- a/docs/_posts/2012-03-15-layout-author-sidebar-disabled.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Layout: Author Sidebar Disabled" -excerpt: "A post to test disabling author sidebar." -author_profile: false ---- - -This post has the author sidebar disabled. - -To disable add `author_profile: false` to YAML Front Matter. \ 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 deleted file mode 100644 index 1795bdcd13fa..000000000000 --- a/docs/_posts/2012-03-15-layout-header-image-external.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Layout: Header Image (External URL)" -header: - image: https://live.staticflickr.com/8084/8396909762_813a2b1829_h.jpg -categories: - - Layout - - Uncategorized -tags: - - edge case - - featured image - - image - - layout ---- - -This post should display a **header image**, if the theme supports it. - -Featured image is an external asset and should load. \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-header-image-horizontal.md b/docs/_posts/2012-03-15-layout-header-image-horizontal.md deleted file mode 100644 index 5a177aa7711d..000000000000 --- a/docs/_posts/2012-03-15-layout-header-image-horizontal.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Layout: Header Image (Horizontal)" -header: - image: /assets/images/unsplash-image-1.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -categories: - - Layout - - Uncategorized -tags: - - edge case - - featured image - - image - - layout ---- - -This post should display a **header image**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests a horizontal header image. \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-header-image-text-readability.md b/docs/_posts/2012-03-15-layout-header-image-text-readability.md deleted file mode 100644 index 56df3473b561..000000000000 --- a/docs/_posts/2012-03-15-layout-header-image-text-readability.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Layout: Header Image and Text Readability" -header: - image: /assets/images/unsplash-image-4.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -tags: - - sample post - - readability - - test ---- - -This is a sample post with a large feature image[^1] up top and tons of text. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. *Ea fashion axe [Marfa cillum aliquip](#). Retro Bushwick keytar cliche.* Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. **[Terry Richardson](#) shabby chic +1**, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - - * Sartorial hoodie - * Labore viral forage - * Tote bag selvage - * DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. - -[^1]: Texture image courtesty of [Lovetextures](http://www.lovetextures.com/) diff --git a/docs/_posts/2012-03-15-layout-header-image-vertical.md b/docs/_posts/2012-03-15-layout-header-image-vertical.md deleted file mode 100644 index 97154fe0a0b2..000000000000 --- a/docs/_posts/2012-03-15-layout-header-image-vertical.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Layout: Header Image (Vertical)" -header: - image: /assets/images/unsplash-image-6.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -categories: - - Layout - - Uncategorized -tags: - - edge case - - featured image - - image - - layout ---- - -This post should display a **header image**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests a vertical header image. \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-header-overlay-color.md b/docs/_posts/2012-03-15-layout-header-overlay-color.md deleted file mode 100644 index 69a85219c8cb..000000000000 --- a/docs/_posts/2012-03-15-layout-header-overlay-color.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Layout: Header Overlay with Background Fill" -header: - overlay_color: "#333" -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout ---- - -This post should display a **header with a solid background color**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests overlay headers. \ No newline at end of file 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 deleted file mode 100644 index 32588bde9b53..000000000000 --- a/docs/_posts/2012-03-15-layout-header-overlay-image-tagline.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -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-header-overlay-image.md b/docs/_posts/2012-03-15-layout-header-overlay-image.md deleted file mode 100644 index e2b1a1965e1e..000000000000 --- a/docs/_posts/2012-03-15-layout-header-overlay-image.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Layout: Header Image Overlay" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "Learn more" - url: "https://unsplash.com" -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2018-03-20T16:00:52-04:00 ---- - -This post should display a **header with an overlay image**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests overlay header images. - -## Overlay filter - -You can use it by specifying the opacity (between 0 and 1) of a black overlay like so: - -![transparent black overlay]({{ "/assets/images/mm-header-overlay-black-filter.jpg" | relative_url }}) - -```yaml -excerpt: "This post should [...]" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - overlay_filter: 0.5 # same as adding an opacity of 0.5 to a black background - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "More Info" - url: "https://unsplash.com" -``` - -Or if you want to do more fancy things, go full rgba: - -![transparent red overlay]({{ "/assets/images/mm-header-overlay-red-filter.jpg" | relative_url }}) - -```yaml -excerpt: "This post should [...]" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - overlay_filter: rgba(255, 0, 0, 0.5) - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "More Info" - url: "https://unsplash.com" -``` \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-more-tag.md b/docs/_posts/2012-03-15-layout-more-tag.md deleted file mode 100644 index c6cdc44fb7c1..000000000000 --- a/docs/_posts/2012-03-15-layout-more-tag.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Layout: More Tag" -excerpt_separator: -categories: - - Layout - - Uncategorized -tags: - - content - - read more - - layout ---- - -This content is before the [excerpt separator tag](http://jekyllrb.com/docs/posts/#post-excerpts). - -Additional content before the more tag. - - - -And this content is after the more tag. \ 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 deleted file mode 100644 index 3b3739bc8ce6..000000000000 --- a/docs/_posts/2012-03-15-layout-sidebar-custom.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -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: "/assets/images/350x250.png" - image_alt: "image" - text: "Some text here." - - title: "Another Title" - text: "More text here." - nav: sidebar-sample ---- - -This post has a custom sidebar set in the post's YAML Front Matter. - -An example of how that YAML could look is: - -```yaml -sidebar: - - title: "Title" - image: "/assets/images/your-image.jpg" - image_alt: "image" - text: "Some text here." - - title: "Another Title" - text: "More text here." - nav: sidebar-sample -``` \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-sidebar-nav-list.md b/docs/_posts/2012-03-15-layout-sidebar-nav-list.md deleted file mode 100644 index 984ff7961156..000000000000 --- a/docs/_posts/2012-03-15-layout-sidebar-nav-list.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Layout: Sidebar with Navigation List" -excerpt: "A post with a sidebar navigation list." -author_profile: false -sidebar: - title: "Sample Title" - nav: sidebar-sample ---- - -This post has a custom navigation list set in the post's YAML Front Matter. - -```yaml -sidebar: - title: "Sample Title" - nav: sidebar-sample -``` - -Along with navigation elements set in `_data/navigation.yml`. - -```yaml -sidebar-sample: - - title: "Parent Page A" - children: - - title: "Child Page A1" - url: / - - title: "Child Page A2" - url: / - - title: "Child Page A3" - url: / - - title: "Child Page A4" - url: / - - title: "Parent Page B" - children: - - title: "Child Page B1" - url: / - - title: "Child Page B2" - url: / - - title: "Child Page B3" - url: / - - title: "Child Page B4" - url: / - - title: "Child Page B5" - url: / - - title: "Parent Page C" - children: - - title: "Child Page C1" - url: / - - title: "Child Page C2" - url: / - - title: "Child Page C3" - url: / - - title: "Child Page C4" - url: / - - title: "Child Page C5" - url: / - - title: "Parent Page D" - children: - - title: "Child Page D1" - url: / - - title: "Child Page D2" - url: / -``` \ No newline at end of file diff --git a/docs/_posts/2012-05-22-markup-text-readability-wide-page.md b/docs/_posts/2012-05-22-markup-text-readability-wide-page.md deleted file mode 100644 index 83ccfede68db..000000000000 --- a/docs/_posts/2012-05-22-markup-text-readability-wide-page.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Wide Single Layout Page" -classes: wide -excerpt: "A page with `classes: wide` set to expand the main content's width." -tags: - - sample post - - readability - - test ---- - -When using `layout: single` add the following front matter to a page or post to widen the main content: - -```yaml -classes: wide -``` - -Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest literally occupy Schlitz forage. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - - * Sartorial hoodie - * Labore viral forage - * Tote bag selvage - * DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. diff --git a/docs/_posts/2012-05-22-markup-text-readability.md b/docs/_posts/2012-05-22-markup-text-readability.md deleted file mode 100644 index e0dde8ee59d2..000000000000 --- a/docs/_posts/2012-05-22-markup-text-readability.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Markup: Text Readability Test" -excerpt: "A bunch of text to test readability." -tags: - - sample post - - readability - - test ---- - -Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest literally occupy Schlitz forage. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - - * Sartorial hoodie - * Labore viral forage - * Tote bag selvage - * DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. diff --git a/docs/_posts/2013-01-05-markup-title-with-markup.md b/docs/_posts/2013-01-05-markup-title-with-markup.md deleted file mode 100644 index 2ead3fc99f04..000000000000 --- a/docs/_posts/2013-01-05-markup-title-with-markup.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Markup: Title *with* **Markdown**" -categories: - - Markdown -tags: - - css - - html - - title ---- - -Verify that: - -* The post title renders the word "with" in *italics* and the word "Markdown" in **bold**. -* The post title markup should be removed from the browser window / tab. \ No newline at end of file diff --git a/docs/_posts/2013-01-05-markup-title-with-special-characters.md b/docs/_posts/2013-01-05-markup-title-with-special-characters.md deleted file mode 100644 index 075828af177b..000000000000 --- a/docs/_posts/2013-01-05-markup-title-with-special-characters.md +++ /dev/null @@ -1,432 +0,0 @@ ---- -title: "Markup: Title with Special --- Characters" -categories: - - Markup -tags: - - html - - markup - - post - - title ---- - -Putting special characters in the title should have no adverse effect on the layout or functionality. - -Special characters in the post title have been known to cause issues with JavaScript and XML when not properly encoded and escaped. - -## Latin Character Tests - -This is a test to see if the fonts used in this theme support basic Latin characters. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - ! - - “ - - # - - $ - - % - - & - - ‘ - - ( - - ) - - * -
    - + - - , - - – - - . - - / - - - 1 - - 2 - - 3 - - 4 -
    - 5 - - 6 - - 7 - - 8 - - 9 - - : - - ; - - > - - = - - < -
    - ? - - @ - - A - - B - - C - - D - - E - - F - - G - - H -
    - I - - J - - K - - L - - M - - N - - O - - P - - Q - - R -
    - S - - T - - U - - V - - W - - X - - Y - - Z - - [ - -
    - ] - - ^ - - _ - - ` - - a - - b - - c - - d - - e - - f -
    - g - - h - - i - - j - - k - - l - - m - - n - - o - - p -
    - q - - r - - s - - t - - u - - v - - w - - x - - y - - z -
    - { - - | - - } - - ~ - - - - - - -
    \ No newline at end of file diff --git a/docs/_posts/2013-01-09-markup-text-alignment.md b/docs/_posts/2013-01-09-markup-text-alignment.md deleted file mode 100644 index e6fd09b3071a..000000000000 --- a/docs/_posts/2013-01-09-markup-text-alignment.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Markup: Text Alignment" -categories: - - Markup -tags: - - alignment - - content - - css - - markup ---- - -### Default - -This is a paragraph. It should not have any alignment of any kind. It should just flow like you would normally expect. Nothing fancy. Just straight up text, free flowing, with love. Completely neutral and not picking a side or sitting on the fence. It just is. It just freaking is. It likes where it is. It does not feel compelled to pick a side. Leave him be. It will just be better that way. Trust me. - -### Left Align - -This is a paragraph. It is left aligned. Because of this, it is a bit more liberal in it's views. It's favorite color is green. Left align tends to be more eco-friendly, but it provides no concrete evidence that it really is. Even though it likes share the wealth evenly, it leaves the equal distribution up to justified alignment. -{: style="text-align: left;"} - -### Center Align - -This is a paragraph. It is center aligned. Center is, but nature, a fence sitter. A flip flopper. It has a difficult time making up its mind. It wants to pick a side. Really, it does. It has the best intentions, but it tends to complicate matters more than help. The best you can do is try to win it over and hope for the best. I hear center align does take bribes. -{: style="text-align: center;"} - -### Right Align - -This is a paragraph. It is right aligned. It is a bit more conservative in it's views. It's prefers to not be told what to do or how to do it. Right align totally owns a slew of guns and loves to head to the range for some practice. Which is cool and all. I mean, it's a pretty good shot from at least four or five football fields away. Dead on. So boss. -{: style="text-align: right;"} - -### Justify Align - -This is a paragraph. It is justify aligned. It gets really mad when people associate it with Justin Timberlake. Typically, justified is pretty straight laced. It likes everything to be in it's place and not all cattywampus like the rest of the aligns. I am not saying that makes it better than the rest of the aligns, but it does tend to put off more of an elitist attitude. -{: style="text-align: justify;"} \ No newline at end of file diff --git a/docs/_posts/2013-01-10-markup-image-alignment.md b/docs/_posts/2013-01-10-markup-image-alignment.md deleted file mode 100644 index 8c4a40e0a09b..000000000000 --- a/docs/_posts/2013-01-10-markup-image-alignment.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "Markup: Image Alignment" -categories: - - Markup -tags: - - alignment - - captions - - content - - css - - image - - markup ---- - -Welcome to image alignment! The best way to demonstrate the ebb and flow of the various image positioning options is to nestle them snuggly among an ocean of words. Grab a paddle and let's get started. - -![image-center]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-580x300.jpg){: .align-center} - -The image above happens to be **centered**. - -![image-left]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-150x150.jpg){: .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 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**. - -![no-alignment]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-1200x4002.jpg) - -The image above, though 1200px wide, should not overflow the content area. It should remain contained with no visible disruption to the flow of content. - -![image-right]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-300x200.jpg){: .align-right} - -And now we're going to shift things to the **right align**. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there --- Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. - -In just a bit here, you should see the text start to wrap below the right aligned image and settle in nicely. There should still be plenty of room and everything should be sitting pretty. Yeah --- Just like that. It never felt so good to be right. - -And just when you thought we were done, we're going to do them all over again with captions! - -
    - -
    Look at 580 x 300 getting some love.
    -
    - -The figure above happens to be **centered**. The caption also has a link in it, just to see if it does anything funky. - -
    - -
    Itty-bitty caption.
    -
    - -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 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**. - -
    - -
    Massive image comment for your eyeballs.
    -
    - -The figure element above has an inline style of `width: 1200px` set which should break it outside of the normal content flow. - -
    - -
    Feels good to be right all the time.
    -
    - -And now we're going to shift things to the **right align**. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there --- Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. - -In just a bit here, you should see the text start to wrap below the right aligned image and settle in nicely. There should still be plenty of room and everything should be sitting pretty. Yeah --- Just like that. It never felt so good to be right. - -And that's a wrap, yo! You survived the tumultuous waters of alignment. Image alignment achievement unlocked! diff --git a/docs/_posts/2013-01-11-markup-html-tags-and-formatting.md b/docs/_posts/2013-01-11-markup-html-tags-and-formatting.md deleted file mode 100644 index f7d9437a1f5d..000000000000 --- a/docs/_posts/2013-01-11-markup-html-tags-and-formatting.md +++ /dev/null @@ -1,249 +0,0 @@ ---- -title: "Markup: HTML Tags and Formatting" -header: - teaser: "assets/images/markup-syntax-highlighting-teaser.jpg" -categories: - - Markup -tags: - - content - - css - - formatting - - html - - markup -toc: true ---- - -A variety of common markup showing how the theme styles them. - -## Header two - -### Header three - -#### Header four - -##### Header five - -###### Header six - -## Blockquotes - -Single line blockquote: - -> Stay hungry. Stay foolish. - -Multi line blockquote with a cite reference: - -> People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things. - -Steve Jobs --- Apple Worldwide Developers' Conference, 1997 -{: .small} - -## Tables - -| Employee | Salary | | -| -------- | ------ | ------------------------------------------------------------ | -| [John Doe](#) | $1 | Because that's all Steve Jobs needed for a salary. | -| [Jane Doe](#) | $100K | For all the blogging she does. | -| [Fred Bloggs](#) | $100M | Pictures are worth a thousand words, right? So Jane × 1,000. | -| [Jane Bloggs](#) | $100B | With hair like that?! Enough said. | - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|-----------------------------| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|=============================| -| Foot1 | Foot2 | Foot3 | - -## Definition Lists - -Definition List Title -: Definition list division. - -Startup -: A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. - -#dowork -: Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. - -Do It Live -: I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. - -## Unordered Lists (Nested) - - * List item one - * List item one - * List item one - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - -## Ordered List (Nested) - - 1. List item one - 1. List item one - 1. List item one - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - -## Forms - -
    -
    - Personalia: - Name:
    - Email:
    - Date of birth: -
    -
    - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - -[Default Button](#){: .btn} -[Primary Button](#){: .btn .btn--primary} -[Success Button](#){: .btn .btn--success} -[Warning Button](#){: .btn .btn--warning} -[Danger Button](#){: .btn .btn--danger} -[Info Button](#){: .btn .btn--info} -[Inverse Button](#){: .btn .btn--inverse} -[Light Outline Button](#){: .btn .btn--light-outline} - -```markdown -[Default Button Text](#link){: .btn} -[Primary Button Text](#link){: .btn .btn--primary} -[Success Button Text](#link){: .btn .btn--success} -[Warning Button Text](#link){: .btn .btn--warning} -[Danger Button Text](#link){: .btn .btn--danger} -[Info Button Text](#link){: .btn .btn--info} -[Inverse Button](#link){: .btn .btn--inverse} -[Light Outline Button](#link){: .btn .btn--light-outline} -``` - -[X-Large Button](#){: .btn .btn--primary .btn--x-large} -[Large Button](#){: .btn .btn--primary .btn--large} -[Default Button](#){: .btn .btn--primary } -[Small Button](#){: .btn .btn--primary .btn--small} - -```markdown -[X-Large Button](#link){: .btn .btn--primary .btn--x-large} -[Large Button](#link){: .btn .btn--primary .btn--large} -[Default Button](#link){: .btn .btn--primary } -[Small Button](#link){: .btn .btn--primary .btn--small} -``` - -## Notices - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice}` class. -{: .notice} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--primary}` class. -{: .notice--primary} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--info}` class. -{: .notice--info} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--warning}` class. -{: .notice--warning} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--success}` class. -{: .notice--success} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--danger}` class. -{: .notice--danger} - -## HTML Tags - -### Address Tag - -
    - 1 Infinite Loop
    Cupertino, CA 95014
    United States -
    - -### Anchor Tag (aka. Link) - -This is an example of a [link](http://apple.com "Apple"). - -### Abbreviation Tag - -The abbreviation CSS stands for "Cascading Style Sheets". - -*[CSS]: Cascading Style Sheets - -### Cite Tag - -"Code is poetry." ---Automattic - -### Code Tag - -You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. - -### Strike Tag - -This tag will let you strikeout text. - -### Emphasize Tag - -The emphasize tag should _italicize_ text. - -### Insert Tag - -This tag should denote inserted text. - -### Keyboard Tag - -This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. - -### Preformatted Tag - -This tag styles large blocks of code. - -
    -.post-title {
    -	margin: 0 0 5px;
    -	font-weight: bold;
    -	font-size: 38px;
    -	line-height: 1.2;
    -	and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
    -}
    -
    - -### Quote Tag - -Developers, developers, developers… –Steve Ballmer - -### Strong Tag - -This tag shows **bold text**. - -### Subscript Tag - -Getting our science styling on with H2O, which should push the "2" down. - -### Superscript Tag - -Still sticking with science and Albert Einstein's E = MC2, which should lift the 2 up. - -### Variable Tag - -This allows you to denote variables. \ No newline at end of file diff --git a/docs/_posts/2013-05-22-markup-more-images.md b/docs/_posts/2013-05-22-markup-more-images.md deleted file mode 100644 index c6a855548609..000000000000 --- a/docs/_posts/2013-05-22-markup-more-images.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Markup: Another Post with Images" -excerpt: "Examples and code for displaying images in posts." -header: - teaser: "http://farm9.staticflickr.com/8426/7758832526_cc8f681e48_c.jpg" -tags: - - sample post - - images - - test ---- - -Here are some examples of what a post with images might look like. If you want to display two or three images next to each other responsively use `figure` with the appropriate `class`. Each instance of `figure` is auto-numbered and displayed in the caption. - -### Figures (for images or video) - -#### One Up - -
    - -
    Morning Fog Emerging From Trees by A Guy Taking Pictures, on Flickr.
    -
    - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -#### Two Up - -Apply the `half` class like so to display two images side by side that share the same caption. - -```html -
    - - -
    Caption describing these two images.
    -
    -``` - -And you'll get something that looks like this: - -
    - - -
    Two images.
    -
    - -#### Three Up - -Apply the `third` class like so to display three images side by side that share the same caption. - -```html -
    - - - -
    Caption describing these three images.
    -
    -``` - -And you'll get something that looks like this: - -
    - - - -
    Three images.
    -
    diff --git a/docs/_posts/2013-08-16-markup-syntax-highlighting.md b/docs/_posts/2013-08-16-markup-syntax-highlighting.md deleted file mode 100644 index d18e7e1fd937..000000000000 --- a/docs/_posts/2013-08-16-markup-syntax-highlighting.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: "Markup: Syntax Highlighting" -excerpt: "Post displaying the various ways of highlighting code in Markdown." -last_modified_at: 2018-01-03T09:45:06-05:00 -header: - teaser: "assets/images/markup-syntax-highlighting-teaser.jpg" -tags: - - code - - syntax highlighting -toc: true ---- - -Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.[^1] - -[^1]: - -### GFM Code Blocks - -GitHub Flavored Markdown [fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) are supported. To modify styling and highlight colors edit `/_sass/syntax.scss`. - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -{% highlight scss %} -.highlight { - margin: 0; - padding: 1em; - font-family: $monospace; - font-size: $type-size-7; - line-height: 1.8; -} -{% endhighlight %} - -```html -{% raw %}{% endraw %} -``` - -```ruby -module Jekyll - class TagIndex < Page - def initialize(site, base, dir, tag) - @site = site - @base = base - @dir = dir - @name = 'index.html' - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'tag_index.html') - self.data['tag'] = tag - tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: ' - tag_title_suffix = site.config['tag_title_suffix'] || '–' - self.data['title'] = "#{tag_title_prefix}#{tag}" - self.data['description'] = "An archive of posts tagged #{tag}." - end - end -end -``` - -### Code Blocks in Lists - -Indentation matters. Be sure the indent of the code block aligns with the first non-space character after the list item marker (e.g., `1.`). Usually this will mean indenting 3 spaces instead of 4. - -1. Do step 1. -2. Now do this: - - ```ruby - def print_hi(name) - puts "Hi, #{name}" - end - print_hi('Tom') - #=> prints 'Hi, Tom' to STDOUT. - ``` - -3. Now you can do this. - -### Jekyll Highlight Tag - -An example of a code blocking using Jekyll's [`{% raw %}{% highlight %}{% endraw %}` tag](https://jekyllrb.com/docs/templates/#code-snippet-highlighting). - -{% highlight javascript linenos %} -// 'gulp html' -- does nothing -// 'gulp html --prod' -- minifies and gzips HTML files for production -gulp.task('html', () => { - return gulp.src(paths.siteFolderName + paths.htmlPattern) - .pipe(when(argv.prod, htmlmin({ - removeComments: true, - collapseWhitespace: true, - collapseBooleanAttributes: false, - removeAttributeQuotes: false, - removeRedundantAttributes: false, - minifyJS: true, - minifyCSS: true - }))) - .pipe(when(argv.prod, size({title: 'optimized HTML'}))) - .pipe(when(argv.prod, gulp.dest(paths.siteFolderName))) - .pipe(when(argv.prod, gzip({append: true}))) - .pipe(when(argv.prod, size({ - title: 'gzipped HTML', - gzip: true - }))) - .pipe(when(argv.prod, gulp.dest(paths.siteFolderName))) -}); -{% endhighlight %} - -{% highlight wl linenos %} -Module[{}, - Sqrt[2] - 4 -] -{% endhighlight %} - -### GitHub Gist Embed - -An example of a Gist embed below. - - \ No newline at end of file diff --git a/docs/_posts/2016-02-24-welcome-to-jekyll.md b/docs/_posts/2016-02-24-welcome-to-jekyll.md deleted file mode 100644 index 024fc97dc96f..000000000000 --- a/docs/_posts/2016-02-24-welcome-to-jekyll.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Welcome to Jekyll!" -header: - teaser: "/assets/images/500x300.png" -categories: - - Jekyll -tags: - - update ---- - -You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -Jekyll also offers powerful support for code snippets: - -```ruby -def print_hi(name) - puts "Hi, #{name}" -end -print_hi('Tom') -#=> prints 'Hi, Tom' to STDOUT. -``` - -Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. - -[jekyll-docs]: http://jekyllrb.com/docs/home -[jekyll-gh]: https://github.com/jekyll/jekyll -[jekyll-talk]: https://talk.jekyllrb.com/ \ No newline at end of file diff --git a/docs/_posts/2016-09-21-gemified-theme-alpha.md b/docs/_posts/2016-09-21-gemified-theme-alpha.md deleted file mode 100644 index db2467980fac..000000000000 --- a/docs/_posts/2016-09-21-gemified-theme-alpha.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "Gemified Theme -- Alpha Release" -last_modified_at: 2018-03-20T16:00:58-04:00 -categories: - - Jekyll -tags: - - update -toc: true -toc_label: "Getting Started" ---- - -Jekyll [themes distributed as Ruby gems](http://jekyllrb.com/docs/themes/) are finally here to make installing and upgrading much easier. Gone are the days of forking a repo just to "install it". Or dealing with merge conflicts when pulling in upstream commits to "upgrade it". - -If you're interested in testing out Minimal Mistakes as a gemified theme read on. There are a few caveats though: - -1. Support for a theme `assets` folder was recently [added to Jekyll core](https://github.com/jekyll/jekyll/pull/5364), but has yet to be released or rolled into the `github-pages` gem. Meaning you can't use Minimal Mistakes as a Ruby gem there just yet... locally served or self-hosted installs should be fine if you don't mind using a pre-release version of Jekyll. -2. Windows users can't currently use themes packaged as gems due to a [bug with file paths](https://github.com/jekyll/jekyll/issues/5192) in Jekyll core. This is being worked on so hopefully a [fix is on the way](https://github.com/jekyll/jekyll/pull/5256) soon. - -Fine with all that? Great. Let's continue. - -If you're migrating a site already using Minimal Mistakes and haven't customized any of the `_includes`, `_layouts`, `_sass` partials, or `assets` this should be quick and painless. - -## Step 1: Remove Theme Files - -Remove `_includes`, `_layouts`, `_sass`, `assets` folders and files within. You won't need these anymore as they're bundled in the theme. - -If you customized any of these then leave them alone and only remove the untouched ones. If setup correctly your modified versions should act as [overrides](http://jekyllrb.com/docs/themes/#overriding-theme-defaults) to the versions bundled with the theme. - -## Step 2: Update `Gemfile` - -In order to test you'll need to install pre-release gems of Jekyll and Minimal Mistakes. - -Start by replacing `gem "github-pages"` or `gem "jekyll"` with the following: - -```ruby -gem "jekyll", :git => "https://github.com/jekyll/jekyll.git" -``` - -Then add the pre-release Minimal Mistakes theme gem: - -```ruby -gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :branch => "feature/theme-gem"` -``` - -When finished your `Gemfile` should look something like this: - -```ruby -source "https://rubygems.org" - -gem "jekyll", :git => "https://github.com/jekyll/jekyll.git" -gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :branch => "feature/theme-gem" - -group :jekyll_plugins do - # gem "jekyll-archives" - gem "jekyll-paginate" - gem "jekyll-sitemap" - gem "jekyll-gist" - gem "jekyll-feed" -end -``` - -## Step 3: Run Bundler - -Run `bundle install` (or `bundle update` if you're updating an existing repo) to install the pre-release gems. - -## Step 4: Install the Theme - -Add `theme: "minimal-mistakes-jekyll"` to your `_config.yml` file. - -If you're migrating from an existing Minimal Mistakes site you shouldn't have to change anything else after this. If it's a new site consult then docs to [properly config]({{ "/docs/configuration/" | relative_url }}). - -**Please Note:** Paths for image headers, overlays, teasers, [galleries]({{ "/docs/helpers/#gallery" | relative_url }}), and [feature rows]({{ "/docs/helpers/#feature-row" | relative_url }}) have changed and now require a full path. Instead of just `image: filename.jpg` you'll need to use the full path eg: `image: assets/images/filename.jpg`. The preferred location is now `assets/images` but can be placed elsewhere or external hosted. This applies for image references in `_config.yml` and `author.yml`. -{: .notice--danger} - -## Step 5: `jekyll new` Tweaks - -If this is a new site be sure to add the following files to `_data/` and customize as you see fit. There is currently no way of bundling them in with the theme, so be sure to consult the docs on how to properly use both. - -- [`_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 }}) - -You'll also need to: - -- Replace `/index.html` with a modified [Minimal Mistakes `index.html`](https://github.com/mmistakes/minimal-mistakes/blob/master/index.html). -- Change `layout: post` in `_posts/0000-00-00-welcome-to-jekyll.markdown` to `layout: single`. -- Remove `about.md`, or at the very least change `layout: page` to `layout: single` and remove references to `icon-github.html` (or [copy to your `_includes`](https://github.com/jekyll/minima/tree/master/_includes) if using). - ---- - -That's it! If all goes well running `bundle exec jekyll serve` should spin-up your site. If you encounter any bumps please file an issue on GitHub and make sure to indicate you're testing the pre-release Ruby gem version. - -[File an issue](https://github.com/mmistakes/minimal-mistakes/issues/new){: .btn .btn--info .btn--large} - -Thanks! diff --git a/docs/_posts/2016-10-06-gemified-theme-beta.md b/docs/_posts/2016-10-06-gemified-theme-beta.md deleted file mode 100644 index 5889f3c629f5..000000000000 --- a/docs/_posts/2016-10-06-gemified-theme-beta.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: "Gemified Theme -- Beta Release" -last_modified_at: 2018-03-20T16:01:04-04:00 -categories: - - Jekyll -tags: - - update -toc: true -toc_label: "Getting Started" ---- - -Hot on the heels of Jekyll v3.3.0 is a beta release of Minimal Mistakes... as a gemified theme. - -[`minimal-mistakes-jekyll`](https://rubygems.org/gems/minimal-mistakes-jekyll) can only be used with Jekyll proper. If you're hosting on GitHub Pages or using that gem the theme won't work. 3rd party themes haven't been white-listed so it's a no go for now. - -Fine with all that? Great. Let's continue. - -If you're migrating a site already using Minimal Mistakes and haven't customized any of the `_includes`, `_layouts`, `_sass` partials, or `assets` this should be quick and painless. - -## Step 1: Remove Theme Files - -Remove `_includes`, `_layouts`, `_sass`, `assets` folders and files within. You won't need these anymore as they're bundled in the theme. - -If you customized any of these then leave them alone and only remove the untouched ones. If setup correctly your modified versions should act as [overrides](http://jekyllrb.com/docs/themes/#overriding-theme-defaults) to the versions bundled with the theme. - -## Step 2: Update `Gemfile` - -Replace `gem "github-pages` or `gem "jekyll"` with `gem "jekyll", "~> 3.3.0"`. You'll need the latest version of Jekyll[^update-jekyll] for Minimal Mistakes to work and load all of the /assets/ properly. - -[^update-jekyll]: You could also run `bundle update jekyll` to update Jekyll. - -Add the Minimal Mistakes theme gem: - -```ruby -gem "minimal-mistakes-jekyll" -``` - -When finished your `Gemfile` should look something like this: - -```ruby -source "https://rubygems.org" - -gem "jekyll", "~> 3.3.0" -gem "minimal-mistakes-jekyll" -``` - -## Step 3: Run Bundler - -Run `bundle install` (or `bundle update` if you're updating an existing repo) to install/update Jekyll and the theme. - -## Step 4: Install the Theme - -Add `theme: "minimal-mistakes-jekyll"` to your `_config.yml` file. - -If you're migrating from an existing Minimal Mistakes site you shouldn't have to change anything else after this. If it's a new site consult then docs to [properly config]({{ "/docs/configuration/" | relative_url }}). - -**Please Note:** Paths for image headers, overlays, teasers, [galleries]({{ "/docs/helpers/#gallery" | relative_url }}), and [feature rows]({{ "/docs/helpers/#feature-row" | relative_url }}) have changed and now require a full path. Instead of just `image: filename.jpg` you'll need to use the full path eg: `image: assets/images/filename.jpg`. The preferred location is now `assets/images` but can be placed elsewhere or external hosted. This all applies for image references in `_config.yml` and `author.yml` as well. -{: .notice--danger} - -## Step 5: `jekyll new` Tweaks - -If this is a new site be sure to add the following files to `_data/` and customize as you see fit. There is currently no way of bundling them in with the theme, so be sure to consult the docs on how to properly use both. - -- [`_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 }}) - -You'll also need to: - -- Replace `/index.html` with a modified [Minimal Mistakes `index.html`](https://github.com/mmistakes/minimal-mistakes/blob/master/index.html). -- Change `layout: post` in `_posts/0000-00-00-welcome-to-jekyll.markdown` to `layout: single`. -- Remove `about.md`, or at the very least change `layout: page` to `layout: single` and remove references to `icon-github.html` (or [copy to your `_includes`](https://github.com/jekyll/minima/tree/master/_includes) if using). - ---- - -That's it! If all goes well running `bundle exec jekyll serve` should spin-up your site. If you encounter any bumps please file an issue on GitHub and make sure to indicate you're testing the pre-release Ruby gem version. - -[File an issue](https://github.com/mmistakes/minimal-mistakes/issues/new){: .btn .btn--info .btn--large} - -Thanks! diff --git a/docs/_posts/2017-01-23-layout-header-video.md b/docs/_posts/2017-01-23-layout-header-video.md deleted file mode 100644 index f1aab7490ca8..000000000000 --- a/docs/_posts/2017-01-23-layout-header-video.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "Layout: Header Video" -header: - video: - id: -PVofD2A9t8 - provider: youtube -categories: - - Layout - - Uncategorized -tags: - - video - - layout ---- - -This post should display a **header with a responsive video**, if the theme supports it. - -## Settings - -| Parameter | Required | Description | -|---------- |--------- | ----------- | -| `id` | **Required** | ID of the video | -| `provider` | **Required** | Hosting provider of the video, either `youtube` or `vimeo` | - -### YouTube - -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="-PVofD2A9t8" provider="youtube" %}{% endraw %} -``` - -{% 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: -PVofD2A9t8 - provider: youtube -``` - -### Vimeo - -To embed the following Vimeo video at url `https://vimeo.com/212731897` into a post or page's main content you'd use: - -```liquid -{% raw %}{% include video id="212731897" provider="vimeo" %}{% endraw %} -``` - -{% include video id="212731897" provider="vimeo" %} - -To embed it as a video header you'd use the following YAML Front Matter - -```yaml -header: - video: - id: 212731897 - provider: vimeo -``` \ No newline at end of file diff --git a/docs/_posts/2017-11-28-post-exclude-search.md b/docs/_posts/2017-11-28-post-exclude-search.md deleted file mode 100644 index 821e4edd1900..000000000000 --- a/docs/_posts/2017-11-28-post-exclude-search.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Exclude Post from Search Index" -search: false -categories: - - Jekyll -last_modified_at: 2018-02-19T08:06:00-05:00 ---- - -This post should not appear in the search index because it has the following YAML Front Matter: - -```yaml -search: false -``` - -**Note:** `search: false` only works to exclude posts when using Lunr as a search provider. -{: .notice--info} - -To exclude files when using Algolia as a search provider add an array to `algolia.files_to_exclude` in your `_config.yml`. For more configuration options be sure to check their [full documentation](https://community.algolia.com/jekyll-algolia/options.html). - -```yaml -algolia: - # Exclude more files from indexing - files_to_exclude: - - index.html - - index.md - - excluded-file.html - - _posts/2017-11-28-post-exclude-search.md - - subdirectory/*.html -``` \ No newline at end of file diff --git a/docs/_recipes/chocolate-chip-cookies.md b/docs/_recipes/chocolate-chip-cookies.md deleted file mode 100644 index ddd52d783c7c..000000000000 --- a/docs/_recipes/chocolate-chip-cookies.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Chocolate Chip Cookies" ---- - -A chocolate chip cookie is a drop cookie that originated in the United States and features chocolate chips as its distinguishing ingredient. - -The traditional recipe combines a dough composed of butter and both brown and white sugar with semi-sweet chocolate chips. Variations include recipes with other types of chocolate as well as additional ingredients such as nuts or oatmeal. - -This recipe makes 4 dozen cookies. - -## Ingredients - -* 2 1/4 cups all-purpose flour -* 1 teaspoon baking soda -* 1/2 teaspoon salt -* 1 cup butter, softened and cut to pieces -* 1 cup sugar -* 1 cup light brown sugar, packed -* 2 teaspoons vanilla extract -* 2 large eggs -* 2 cups semi-sweet chocolate chips -* 1/2 teaspoon nutmeg (optional) -* 1 cup chopped pecans or walnuts (optional) - -## Directions - -1. Preheat the oven to 350 F. -2. In a medium bowl, whisk flour with baking soda, nutmeg and salt. -3. In a large bowl, beat butter with sugar and brown sugar until creamy and light. Add vanilla and eggs, one at a time, and mix until incorporated. -4. Gradually add dry mixture into the butter-sugar wet blend, mixing with a spatula until combined. Add chocolate chips and nuts until just mixed. -5. Drop tablespoon-sized clumps onto un-greased cookie sheets. Bake for 8-12 minutes, or until pale brown. Allow to cool on the pan for a minute or three, then transfer cookies to a wire rack to finish cooling. \ No newline at end of file diff --git a/docs/_recipes/oatmeal-cookies.md b/docs/_recipes/oatmeal-cookies.md deleted file mode 100644 index 978ad4febd74..000000000000 --- a/docs/_recipes/oatmeal-cookies.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Oatmeal Cookies" ---- - -Oatmeal cookies are a proverbial favorite with both kids and adults. This crisp and chewy cookie is loaded with oats, dried fruit, and chopped nuts. - -## Ingredients - -* 1 cup butter, softened 1 cup white sugar -* 1 cup packed brown sugar -* 2 eggs -* 1 teaspoon vanilla extract -* 2 cups all-purpose flour -* 1 teaspoon baking soda -* 1 teaspoon salt -* 1 1/2 teaspoons ground cinnamon -* 3 cups quick cooking oats - -## Directions - -1. In a medium bowl, cream together butter, white sugar, and brown sugar. Beat in eggs one at a time, then stir in vanilla. Combine flour, baking soda, salt, and cinnamon; stir into the creamed mixture. Mix in oats. Cover, and chill dough for at least one hour. -2. Preheat the oven to 375 degrees F (190 degrees C). Grease cookie sheets. Roll the dough into walnut sized balls, and place 2 inches apart on cookie sheets. Flatten each cookie with a large fork dipped in sugar. -3. Bake for 8 to 10 minutes in preheated oven. Allow cookies to cool on baking sheet for 5 minutes before transferring to a wire rack to cool completely. \ No newline at end of file diff --git a/docs/_recipes/peanut-butter-cookies.md b/docs/_recipes/peanut-butter-cookies.md deleted file mode 100644 index b5eaae81b81f..000000000000 --- a/docs/_recipes/peanut-butter-cookies.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Peanut Butter Cookies" ---- - -A peanut butter cookie is a type of cookie that is distinguished for having peanut butter as a principal ingredient. The cookie generally originated in the United States, its development dating back to the 1910s. - -## Ingredients - -* 1 cup unsalted butter -* 1 cup crunchy peanut butter -* 1 cup white sugar -* 1 cup packed brown sugar -* 2 eggs 2 -* 1/2 cups all-purpose flour -* 1 teaspoon baking powder -* 1/2 teaspoon salt -* 1 1/2 teaspoons baking soda - -## Directions - -1. Cream butter, peanut butter, and sugars together in a bowl; beat in eggs. -2. In a separate bowl, sift flour, baking powder, baking soda, and salt; stir into butter mixture. Put dough in refrigerator for 1 hour. -3. Roll dough into 1 inch balls and put on baking sheets. Flatten each ball with a fork, making a crisscross pattern. Bake in a preheated 375 degrees F oven for about 10 minutes or until cookies begin to brown. \ No newline at end of file diff --git a/docs/assets/images/350x250.png b/docs/assets/images/350x250.png deleted file mode 100644 index cb4d5edbe8e7..000000000000 Binary files a/docs/assets/images/350x250.png and /dev/null differ diff --git a/docs/assets/images/3953273590_704e3899d5_m.jpg b/docs/assets/images/3953273590_704e3899d5_m.jpg deleted file mode 100644 index 50d2155aa8cf..000000000000 Binary files a/docs/assets/images/3953273590_704e3899d5_m.jpg and /dev/null differ diff --git a/docs/assets/images/500x300.png b/docs/assets/images/500x300.png deleted file mode 100644 index f9fba928db78..000000000000 Binary files a/docs/assets/images/500x300.png and /dev/null differ diff --git a/docs/assets/images/air-skin-archive-large.png b/docs/assets/images/air-skin-archive-large.png deleted file mode 100644 index ffb8e8824e31..000000000000 Binary files a/docs/assets/images/air-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/air-skin-archive.png b/docs/assets/images/air-skin-archive.png deleted file mode 100644 index 4caedd6fb47f..000000000000 Binary files a/docs/assets/images/air-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/air-skin-post-large.png b/docs/assets/images/air-skin-post-large.png deleted file mode 100644 index 3ea5968138ab..000000000000 Binary files a/docs/assets/images/air-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/air-skin-post.png b/docs/assets/images/air-skin-post.png deleted file mode 100644 index 65270523e5dc..000000000000 Binary files a/docs/assets/images/air-skin-post.png and /dev/null differ diff --git a/docs/assets/images/android-chrome-144x144.png b/docs/assets/images/android-chrome-144x144.png deleted file mode 100644 index 1f191ec7a88b..000000000000 Binary files a/docs/assets/images/android-chrome-144x144.png and /dev/null differ diff --git a/docs/assets/images/android-chrome-192x192.png b/docs/assets/images/android-chrome-192x192.png deleted file mode 100644 index 1f8d5a706383..000000000000 Binary files a/docs/assets/images/android-chrome-192x192.png and /dev/null differ diff --git a/docs/assets/images/android-chrome-36x36.png b/docs/assets/images/android-chrome-36x36.png deleted file mode 100644 index 2eb8625f93d3..000000000000 Binary files a/docs/assets/images/android-chrome-36x36.png and /dev/null differ diff --git a/docs/assets/images/android-chrome-48x48.png b/docs/assets/images/android-chrome-48x48.png deleted file mode 100644 index 5f2d6912a251..000000000000 Binary files a/docs/assets/images/android-chrome-48x48.png and /dev/null differ diff --git a/docs/assets/images/android-chrome-72x72.png b/docs/assets/images/android-chrome-72x72.png deleted file mode 100644 index 681dbe7dfc96..000000000000 Binary files a/docs/assets/images/android-chrome-72x72.png and /dev/null differ diff --git a/docs/assets/images/android-chrome-96x96.png b/docs/assets/images/android-chrome-96x96.png deleted file mode 100644 index 1a40b1d252c1..000000000000 Binary files a/docs/assets/images/android-chrome-96x96.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-114x114.png b/docs/assets/images/apple-touch-icon-114x114.png deleted file mode 100644 index 7b80b39eaf9b..000000000000 Binary files a/docs/assets/images/apple-touch-icon-114x114.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-120x120.png b/docs/assets/images/apple-touch-icon-120x120.png deleted file mode 100644 index d9db29722626..000000000000 Binary files a/docs/assets/images/apple-touch-icon-120x120.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-144x144.png b/docs/assets/images/apple-touch-icon-144x144.png deleted file mode 100644 index c3d8317699f1..000000000000 Binary files a/docs/assets/images/apple-touch-icon-144x144.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-152x152.png b/docs/assets/images/apple-touch-icon-152x152.png deleted file mode 100644 index a768b28f3ff2..000000000000 Binary files a/docs/assets/images/apple-touch-icon-152x152.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-180x180.png b/docs/assets/images/apple-touch-icon-180x180.png deleted file mode 100644 index 51f879190642..000000000000 Binary files a/docs/assets/images/apple-touch-icon-180x180.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-57x57.png b/docs/assets/images/apple-touch-icon-57x57.png deleted file mode 100644 index c726de4cae2f..000000000000 Binary files a/docs/assets/images/apple-touch-icon-57x57.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-60x60.png b/docs/assets/images/apple-touch-icon-60x60.png deleted file mode 100644 index 7a90069b7a91..000000000000 Binary files a/docs/assets/images/apple-touch-icon-60x60.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-72x72.png b/docs/assets/images/apple-touch-icon-72x72.png deleted file mode 100644 index cdff60752759..000000000000 Binary files a/docs/assets/images/apple-touch-icon-72x72.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-76x76.png b/docs/assets/images/apple-touch-icon-76x76.png deleted file mode 100644 index db89393252e5..000000000000 Binary files a/docs/assets/images/apple-touch-icon-76x76.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon-precomposed.png b/docs/assets/images/apple-touch-icon-precomposed.png deleted file mode 100644 index c0c379014fe7..000000000000 Binary files a/docs/assets/images/apple-touch-icon-precomposed.png and /dev/null differ diff --git a/docs/assets/images/apple-touch-icon.png b/docs/assets/images/apple-touch-icon.png deleted file mode 100644 index 51f879190642..000000000000 Binary files a/docs/assets/images/apple-touch-icon.png and /dev/null differ diff --git a/docs/assets/images/aqua-skin-archive-large.png b/docs/assets/images/aqua-skin-archive-large.png deleted file mode 100644 index 1656f8bea47f..000000000000 Binary files a/docs/assets/images/aqua-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/aqua-skin-archive.png b/docs/assets/images/aqua-skin-archive.png deleted file mode 100644 index 5f928d0f2e89..000000000000 Binary files a/docs/assets/images/aqua-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/aqua-skin-post-large.png b/docs/assets/images/aqua-skin-post-large.png deleted file mode 100644 index 00175ce4fd55..000000000000 Binary files a/docs/assets/images/aqua-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/aqua-skin-post.png b/docs/assets/images/aqua-skin-post.png deleted file mode 100644 index d93249b54d12..000000000000 Binary files a/docs/assets/images/aqua-skin-post.png and /dev/null differ diff --git a/docs/assets/images/bio-photo-2.jpg b/docs/assets/images/bio-photo-2.jpg deleted file mode 100644 index a6f20359381f..000000000000 Binary files a/docs/assets/images/bio-photo-2.jpg and /dev/null differ diff --git a/docs/assets/images/bio-photo.jpg b/docs/assets/images/bio-photo.jpg deleted file mode 100644 index 000845179832..000000000000 Binary files a/docs/assets/images/bio-photo.jpg and /dev/null differ diff --git a/docs/assets/images/browserconfig.xml b/docs/assets/images/browserconfig.xml deleted file mode 100644 index ff77e2349f9b..000000000000 --- a/docs/assets/images/browserconfig.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - #000000 - - - diff --git a/docs/assets/images/contrast-code-block.jpg b/docs/assets/images/contrast-code-block.jpg deleted file mode 100644 index 9e7b425837e4..000000000000 Binary files a/docs/assets/images/contrast-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/contrast-skin-archive-large.png b/docs/assets/images/contrast-skin-archive-large.png deleted file mode 100644 index 7a1f3e6c37f5..000000000000 Binary files a/docs/assets/images/contrast-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/contrast-skin-archive.png b/docs/assets/images/contrast-skin-archive.png deleted file mode 100644 index 5e189c18875d..000000000000 Binary files a/docs/assets/images/contrast-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/contrast-skin-post-large.png b/docs/assets/images/contrast-skin-post-large.png deleted file mode 100644 index 01377040c1be..000000000000 Binary files a/docs/assets/images/contrast-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/contrast-skin-post.png b/docs/assets/images/contrast-skin-post.png deleted file mode 100644 index 4923e3ab536e..000000000000 Binary files a/docs/assets/images/contrast-skin-post.png and /dev/null differ diff --git a/docs/assets/images/dark-code-block.jpg b/docs/assets/images/dark-code-block.jpg deleted file mode 100644 index 210bb35aaa3e..000000000000 Binary files a/docs/assets/images/dark-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/dark-skin-archive-large.png b/docs/assets/images/dark-skin-archive-large.png deleted file mode 100644 index 4bd931bb0768..000000000000 Binary files a/docs/assets/images/dark-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/dark-skin-archive.png b/docs/assets/images/dark-skin-archive.png deleted file mode 100644 index 109f0b702d81..000000000000 Binary files a/docs/assets/images/dark-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/dark-skin-post-large.png b/docs/assets/images/dark-skin-post-large.png deleted file mode 100644 index c18a7b5bd9e4..000000000000 Binary files a/docs/assets/images/dark-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/dark-skin-post.png b/docs/assets/images/dark-skin-post.png deleted file mode 100644 index a87f90337ce3..000000000000 Binary files a/docs/assets/images/dark-skin-post.png and /dev/null differ diff --git a/docs/assets/images/default-code-block.jpg b/docs/assets/images/default-code-block.jpg deleted file mode 100644 index 7996f9929034..000000000000 Binary files a/docs/assets/images/default-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/dirt-code-block.jpg b/docs/assets/images/dirt-code-block.jpg deleted file mode 100644 index e27e205952de..000000000000 Binary files a/docs/assets/images/dirt-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/dirt-skin-archive-large.png b/docs/assets/images/dirt-skin-archive-large.png deleted file mode 100644 index f31ef20f01b4..000000000000 Binary files a/docs/assets/images/dirt-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/dirt-skin-archive.png b/docs/assets/images/dirt-skin-archive.png deleted file mode 100644 index 0ad8ea459420..000000000000 Binary files a/docs/assets/images/dirt-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/dirt-skin-post-large.png b/docs/assets/images/dirt-skin-post-large.png deleted file mode 100644 index 62a62b04d4ce..000000000000 Binary files a/docs/assets/images/dirt-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/dirt-skin-post.png b/docs/assets/images/dirt-skin-post.png deleted file mode 100644 index 68332de035de..000000000000 Binary files a/docs/assets/images/dirt-skin-post.png and /dev/null differ diff --git a/docs/assets/images/dracula-code-block.jpg b/docs/assets/images/dracula-code-block.jpg deleted file mode 100644 index 4d9e202ec9b7..000000000000 Binary files a/docs/assets/images/dracula-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/facebook-share-example.jpg b/docs/assets/images/facebook-share-example.jpg deleted file mode 100644 index dddff9e509b7..000000000000 Binary files a/docs/assets/images/facebook-share-example.jpg and /dev/null differ diff --git a/docs/assets/images/favicon-16x16.png b/docs/assets/images/favicon-16x16.png deleted file mode 100644 index 65909d64448f..000000000000 Binary files a/docs/assets/images/favicon-16x16.png and /dev/null differ diff --git a/docs/assets/images/favicon-32x32.png b/docs/assets/images/favicon-32x32.png deleted file mode 100644 index 013c338f9cfd..000000000000 Binary files a/docs/assets/images/favicon-32x32.png and /dev/null differ diff --git a/docs/assets/images/favicon-96x96.png b/docs/assets/images/favicon-96x96.png deleted file mode 100644 index b498be9dce9a..000000000000 Binary files a/docs/assets/images/favicon-96x96.png and /dev/null differ diff --git a/docs/assets/images/favicon.ico b/docs/assets/images/favicon.ico deleted file mode 100644 index 2d14e29b3f3c..000000000000 Binary files a/docs/assets/images/favicon.ico and /dev/null differ diff --git a/docs/assets/images/foo-bar-identity-th.jpg b/docs/assets/images/foo-bar-identity-th.jpg deleted file mode 100644 index 49906ac64f28..000000000000 Binary files a/docs/assets/images/foo-bar-identity-th.jpg and /dev/null differ diff --git a/docs/assets/images/foo-bar-identity.jpg b/docs/assets/images/foo-bar-identity.jpg deleted file mode 100644 index d946815a263e..000000000000 Binary files a/docs/assets/images/foo-bar-identity.jpg and /dev/null differ diff --git a/docs/assets/images/google-custom-search-engine-layout.png b/docs/assets/images/google-custom-search-engine-layout.png deleted file mode 100644 index 362cd8e72d3f..000000000000 Binary files a/docs/assets/images/google-custom-search-engine-layout.png and /dev/null differ diff --git a/docs/assets/images/image-alignment-1200x4002.jpg b/docs/assets/images/image-alignment-1200x4002.jpg deleted file mode 100644 index 8e3137cbeb1d..000000000000 Binary files a/docs/assets/images/image-alignment-1200x4002.jpg and /dev/null differ diff --git a/docs/assets/images/image-alignment-150x150.jpg b/docs/assets/images/image-alignment-150x150.jpg deleted file mode 100644 index d3b0e483797d..000000000000 Binary files a/docs/assets/images/image-alignment-150x150.jpg and /dev/null differ diff --git a/docs/assets/images/image-alignment-300x200.jpg b/docs/assets/images/image-alignment-300x200.jpg deleted file mode 100644 index 3921878b2e09..000000000000 Binary files a/docs/assets/images/image-alignment-300x200.jpg and /dev/null differ diff --git a/docs/assets/images/image-alignment-580x300.jpg b/docs/assets/images/image-alignment-580x300.jpg deleted file mode 100644 index 75bf08e90a97..000000000000 Binary files a/docs/assets/images/image-alignment-580x300.jpg and /dev/null differ diff --git a/docs/assets/images/manifest.json b/docs/assets/images/manifest.json deleted file mode 100644 index d641c302ae78..000000000000 --- a/docs/assets/images/manifest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "Minimal Mistakes", - "icons": [ - { - "src": "\/images\/android-chrome-36x36.png?v=M44lzPylqQ", - "sizes": "36x36", - "type": "image\/png", - "density": 0.75 - }, - { - "src": "\/images\/android-chrome-48x48.png?v=M44lzPylqQ", - "sizes": "48x48", - "type": "image\/png", - "density": 1 - }, - { - "src": "\/images\/android-chrome-72x72.png?v=M44lzPylqQ", - "sizes": "72x72", - "type": "image\/png", - "density": 1.5 - }, - { - "src": "\/images\/android-chrome-96x96.png?v=M44lzPylqQ", - "sizes": "96x96", - "type": "image\/png", - "density": 2 - }, - { - "src": "\/images\/android-chrome-144x144.png?v=M44lzPylqQ", - "sizes": "144x144", - "type": "image\/png", - "density": 3 - }, - { - "src": "\/images\/android-chrome-192x192.png?v=M44lzPylqQ", - "sizes": "192x192", - "type": "image\/png", - "density": 4 - } - ] -} diff --git a/docs/assets/images/markup-syntax-highlighting-teaser.jpg b/docs/assets/images/markup-syntax-highlighting-teaser.jpg deleted file mode 100644 index 36cb1f9db594..000000000000 Binary files a/docs/assets/images/markup-syntax-highlighting-teaser.jpg and /dev/null differ diff --git a/docs/assets/images/masthead-search.gif b/docs/assets/images/masthead-search.gif deleted file mode 100644 index 2c06a25afd79..000000000000 Binary files a/docs/assets/images/masthead-search.gif and /dev/null differ diff --git a/docs/assets/images/michael-rose.jpg b/docs/assets/images/michael-rose.jpg deleted file mode 100644 index 03710828b06e..000000000000 Binary files a/docs/assets/images/michael-rose.jpg and /dev/null differ diff --git a/docs/assets/images/mint-skin-archive-large.png b/docs/assets/images/mint-skin-archive-large.png deleted file mode 100644 index 06e3b090cc04..000000000000 Binary files a/docs/assets/images/mint-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/mint-skin-archive.png b/docs/assets/images/mint-skin-archive.png deleted file mode 100644 index 65bc78f003bb..000000000000 Binary files a/docs/assets/images/mint-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/mint-skin-post-large.png b/docs/assets/images/mint-skin-post-large.png deleted file mode 100644 index 82896bc3f66e..000000000000 Binary files a/docs/assets/images/mint-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/mint-skin-post.png b/docs/assets/images/mint-skin-post.png deleted file mode 100644 index 66b1cd11d338..000000000000 Binary files a/docs/assets/images/mint-skin-post.png and /dev/null differ diff --git a/docs/assets/images/mm-archive-grid-view-example.jpg b/docs/assets/images/mm-archive-grid-view-example.jpg deleted file mode 100644 index 8dfc6d444e53..000000000000 Binary files a/docs/assets/images/mm-archive-grid-view-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-author-profile-reddit-color.png b/docs/assets/images/mm-author-profile-reddit-color.png deleted file mode 100644 index aeaa4e6c990d..000000000000 Binary files a/docs/assets/images/mm-author-profile-reddit-color.png and /dev/null differ diff --git a/docs/assets/images/mm-author-profile-reddit-gs.png b/docs/assets/images/mm-author-profile-reddit-gs.png deleted file mode 100644 index 9d66d7b22c96..000000000000 Binary files a/docs/assets/images/mm-author-profile-reddit-gs.png and /dev/null differ diff --git a/docs/assets/images/mm-author-sidebar-example.jpg b/docs/assets/images/mm-author-sidebar-example.jpg deleted file mode 100644 index ea0f8df072d2..000000000000 Binary files a/docs/assets/images/mm-author-sidebar-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-breadcrumbs-example.jpg b/docs/assets/images/mm-breadcrumbs-example.jpg deleted file mode 100644 index e865a482538f..000000000000 Binary files a/docs/assets/images/mm-breadcrumbs-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-browser-mockups.png b/docs/assets/images/mm-browser-mockups.png deleted file mode 100644 index 56a0a708e710..000000000000 Binary files a/docs/assets/images/mm-browser-mockups.png and /dev/null differ diff --git a/docs/assets/images/mm-bundle-install.gif b/docs/assets/images/mm-bundle-install.gif deleted file mode 100644 index a6bcbc4282ed..000000000000 Binary files a/docs/assets/images/mm-bundle-install.gif and /dev/null differ diff --git a/docs/assets/images/mm-custom-sidebar-example.jpg b/docs/assets/images/mm-custom-sidebar-example.jpg deleted file mode 100644 index 38e09e91ab58..000000000000 Binary files a/docs/assets/images/mm-custom-sidebar-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-custom-sidebar-nav.jpg b/docs/assets/images/mm-custom-sidebar-nav.jpg deleted file mode 100644 index 6d3b3e60f0f3..000000000000 Binary files a/docs/assets/images/mm-custom-sidebar-nav.jpg and /dev/null differ diff --git a/docs/assets/images/mm-customizable-feature.png b/docs/assets/images/mm-customizable-feature.png deleted file mode 100644 index a28ab0d15c27..000000000000 Binary files a/docs/assets/images/mm-customizable-feature.png and /dev/null differ diff --git a/docs/assets/images/mm-free-feature.png b/docs/assets/images/mm-free-feature.png deleted file mode 100644 index 630fef62c268..000000000000 Binary files a/docs/assets/images/mm-free-feature.png and /dev/null differ diff --git a/docs/assets/images/mm-gh-pages.gif b/docs/assets/images/mm-gh-pages.gif deleted file mode 100644 index ae30c86c5b89..000000000000 Binary files a/docs/assets/images/mm-gh-pages.gif and /dev/null differ diff --git a/docs/assets/images/mm-github-copy-repo-url.jpg b/docs/assets/images/mm-github-copy-repo-url.jpg deleted file mode 100644 index 0a62b5557f40..000000000000 Binary files a/docs/assets/images/mm-github-copy-repo-url.jpg and /dev/null differ diff --git a/docs/assets/images/mm-github-edit-config.gif b/docs/assets/images/mm-github-edit-config.gif deleted file mode 100644 index a1768603aa75..000000000000 Binary files a/docs/assets/images/mm-github-edit-config.gif and /dev/null differ diff --git a/docs/assets/images/mm-header-overlay-black-filter.jpg b/docs/assets/images/mm-header-overlay-black-filter.jpg deleted file mode 100644 index 9b96314e00cc..000000000000 Binary files a/docs/assets/images/mm-header-overlay-black-filter.jpg and /dev/null differ diff --git a/docs/assets/images/mm-header-overlay-custom-filter.jpg b/docs/assets/images/mm-header-overlay-custom-filter.jpg deleted file mode 100644 index 7f0cff974496..000000000000 Binary files a/docs/assets/images/mm-header-overlay-custom-filter.jpg and /dev/null differ diff --git a/docs/assets/images/mm-header-overlay-red-filter.jpg b/docs/assets/images/mm-header-overlay-red-filter.jpg deleted file mode 100644 index 82065d7e3cb2..000000000000 Binary files a/docs/assets/images/mm-header-overlay-red-filter.jpg and /dev/null differ diff --git a/docs/assets/images/mm-home-page-feature.jpg b/docs/assets/images/mm-home-page-feature.jpg deleted file mode 100644 index 76c9d1d84b49..000000000000 Binary files a/docs/assets/images/mm-home-page-feature.jpg and /dev/null differ diff --git a/docs/assets/images/mm-home-post-pagination-example.jpg b/docs/assets/images/mm-home-post-pagination-example.jpg deleted file mode 100644 index 9ed638672145..000000000000 Binary files a/docs/assets/images/mm-home-post-pagination-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-layout-archive-taxonomy.png b/docs/assets/images/mm-layout-archive-taxonomy.png deleted file mode 100644 index 99eae1cba6a1..000000000000 Binary files a/docs/assets/images/mm-layout-archive-taxonomy.png and /dev/null differ diff --git a/docs/assets/images/mm-layout-archive.png b/docs/assets/images/mm-layout-archive.png deleted file mode 100644 index 7f20667998c3..000000000000 Binary files a/docs/assets/images/mm-layout-archive.png and /dev/null differ diff --git a/docs/assets/images/mm-layout-examples.png b/docs/assets/images/mm-layout-examples.png deleted file mode 100644 index 88ef60fd6a56..000000000000 Binary files a/docs/assets/images/mm-layout-examples.png and /dev/null differ diff --git a/docs/assets/images/mm-layout-single-header.png b/docs/assets/images/mm-layout-single-header.png deleted file mode 100644 index be9bdedc7eee..000000000000 Binary files a/docs/assets/images/mm-layout-single-header.png and /dev/null differ diff --git a/docs/assets/images/mm-layout-single-meta.png b/docs/assets/images/mm-layout-single-meta.png deleted file mode 100644 index ef626e3d3ecf..000000000000 Binary files a/docs/assets/images/mm-layout-single-meta.png and /dev/null differ diff --git a/docs/assets/images/mm-layout-single.png b/docs/assets/images/mm-layout-single.png deleted file mode 100644 index 2dacb9b60ed2..000000000000 Binary files a/docs/assets/images/mm-layout-single.png and /dev/null differ diff --git a/docs/assets/images/mm-layout-splash.png b/docs/assets/images/mm-layout-splash.png deleted file mode 100644 index 49d51a1a646a..000000000000 Binary files a/docs/assets/images/mm-layout-splash.png and /dev/null differ diff --git a/docs/assets/images/mm-masthead-logo.png b/docs/assets/images/mm-masthead-logo.png deleted file mode 100644 index 65daae9fdb94..000000000000 Binary files a/docs/assets/images/mm-masthead-logo.png and /dev/null differ diff --git a/docs/assets/images/mm-paragraph-indent-example.jpg b/docs/assets/images/mm-paragraph-indent-example.jpg deleted file mode 100644 index a3a0e6a9aced..000000000000 Binary files a/docs/assets/images/mm-paragraph-indent-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-portfolio-collection-example.jpg b/docs/assets/images/mm-portfolio-collection-example.jpg deleted file mode 100644 index 4656d8ffc158..000000000000 Binary files a/docs/assets/images/mm-portfolio-collection-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-post-date-example.png b/docs/assets/images/mm-post-date-example.png deleted file mode 100644 index a209b97dc1c0..000000000000 Binary files a/docs/assets/images/mm-post-date-example.png and /dev/null differ diff --git a/docs/assets/images/mm-priority-plus-masthead.gif b/docs/assets/images/mm-priority-plus-masthead.gif deleted file mode 100644 index 85c73c47e6ab..000000000000 Binary files a/docs/assets/images/mm-priority-plus-masthead.gif and /dev/null differ diff --git a/docs/assets/images/mm-read-time-example.jpg b/docs/assets/images/mm-read-time-example.jpg deleted file mode 100644 index ef4d5e12b09a..000000000000 Binary files a/docs/assets/images/mm-read-time-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-responsive-feature.png b/docs/assets/images/mm-responsive-feature.png deleted file mode 100644 index a0f8b40146f0..000000000000 Binary files a/docs/assets/images/mm-responsive-feature.png and /dev/null differ diff --git a/docs/assets/images/mm-single-header-example.jpg b/docs/assets/images/mm-single-header-example.jpg deleted file mode 100644 index e2aa470ec8f4..000000000000 Binary files a/docs/assets/images/mm-single-header-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-single-header-overlay-example.jpg b/docs/assets/images/mm-single-header-overlay-example.jpg deleted file mode 100644 index cd253551fb9a..000000000000 Binary files a/docs/assets/images/mm-single-header-overlay-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-single-header-overlay-fill-example.jpg b/docs/assets/images/mm-single-header-overlay-fill-example.jpg deleted file mode 100644 index 009e2cdd68c5..000000000000 Binary files a/docs/assets/images/mm-single-header-overlay-fill-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-social-share-links-default.png b/docs/assets/images/mm-social-share-links-default.png deleted file mode 100644 index 75885e3514cb..000000000000 Binary files a/docs/assets/images/mm-social-share-links-default.png and /dev/null differ diff --git a/docs/assets/images/mm-social-share-links-reddit-color.png b/docs/assets/images/mm-social-share-links-reddit-color.png deleted file mode 100644 index 2b6a420cfb79..000000000000 Binary files a/docs/assets/images/mm-social-share-links-reddit-color.png and /dev/null differ diff --git a/docs/assets/images/mm-social-share-links-reddit-gs.png b/docs/assets/images/mm-social-share-links-reddit-gs.png deleted file mode 100644 index 5b6e883bbb90..000000000000 Binary files a/docs/assets/images/mm-social-share-links-reddit-gs.png and /dev/null differ diff --git a/docs/assets/images/mm-staticman-pr-webhook.jpg b/docs/assets/images/mm-staticman-pr-webhook.jpg deleted file mode 100644 index 408d3a7d7556..000000000000 Binary files a/docs/assets/images/mm-staticman-pr-webhook.jpg and /dev/null differ diff --git a/docs/assets/images/mm-susy-grid-overlay.jpg b/docs/assets/images/mm-susy-grid-overlay.jpg deleted file mode 100644 index 2c631a3ece41..000000000000 Binary files a/docs/assets/images/mm-susy-grid-overlay.jpg and /dev/null differ diff --git a/docs/assets/images/mm-teaser-images-example.jpg b/docs/assets/images/mm-teaser-images-example.jpg deleted file mode 100644 index 25c08f4d07e6..000000000000 Binary files a/docs/assets/images/mm-teaser-images-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-theme-fork-repo.png b/docs/assets/images/mm-theme-fork-repo.png deleted file mode 100644 index c18dfb553a88..000000000000 Binary files a/docs/assets/images/mm-theme-fork-repo.png and /dev/null differ diff --git a/docs/assets/images/mm-theme-post-600.jpg b/docs/assets/images/mm-theme-post-600.jpg deleted file mode 100644 index ffbc2b111c15..000000000000 Binary files a/docs/assets/images/mm-theme-post-600.jpg and /dev/null differ diff --git a/docs/assets/images/mm-theme-post-750.jpg b/docs/assets/images/mm-theme-post-750.jpg deleted file mode 100644 index 4ab6157164de..000000000000 Binary files a/docs/assets/images/mm-theme-post-750.jpg and /dev/null differ diff --git a/docs/assets/images/mm-toc-helper-example.jpg b/docs/assets/images/mm-toc-helper-example.jpg deleted file mode 100644 index d6e43e12b4af..000000000000 Binary files a/docs/assets/images/mm-toc-helper-example.jpg and /dev/null differ diff --git a/docs/assets/images/mm-twitter-card-summary-image.jpg b/docs/assets/images/mm-twitter-card-summary-image.jpg deleted file mode 100644 index f59252a6fa0f..000000000000 Binary files a/docs/assets/images/mm-twitter-card-summary-image.jpg and /dev/null differ diff --git a/docs/assets/images/mm-twitter-card-summary-large.jpg b/docs/assets/images/mm-twitter-card-summary-large.jpg deleted file mode 100644 index 9a2292b5ae26..000000000000 Binary files a/docs/assets/images/mm-twitter-card-summary-large.jpg and /dev/null differ diff --git a/docs/assets/images/mm-ui-text-labels.jpg b/docs/assets/images/mm-ui-text-labels.jpg deleted file mode 100644 index 5b51ceb302d4..000000000000 Binary files a/docs/assets/images/mm-ui-text-labels.jpg and /dev/null differ diff --git a/docs/assets/images/mstile-144x144.png b/docs/assets/images/mstile-144x144.png deleted file mode 100644 index c3d8317699f1..000000000000 Binary files a/docs/assets/images/mstile-144x144.png and /dev/null differ diff --git a/docs/assets/images/mstile-150x150.png b/docs/assets/images/mstile-150x150.png deleted file mode 100644 index c7a3c08d0675..000000000000 Binary files a/docs/assets/images/mstile-150x150.png and /dev/null differ diff --git a/docs/assets/images/mstile-310x150.png b/docs/assets/images/mstile-310x150.png deleted file mode 100644 index 25fd7bad2765..000000000000 Binary files a/docs/assets/images/mstile-310x150.png and /dev/null differ diff --git a/docs/assets/images/mstile-310x310.png b/docs/assets/images/mstile-310x310.png deleted file mode 100644 index 1a75b7f297dd..000000000000 Binary files a/docs/assets/images/mstile-310x310.png and /dev/null differ diff --git a/docs/assets/images/mstile-70x70.png b/docs/assets/images/mstile-70x70.png deleted file mode 100644 index 88b5c256b2be..000000000000 Binary files a/docs/assets/images/mstile-70x70.png and /dev/null differ diff --git a/docs/assets/images/neon-code-block.jpg b/docs/assets/images/neon-code-block.jpg deleted file mode 100644 index e7d0bb7083f8..000000000000 Binary files a/docs/assets/images/neon-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/neon-skin-archive-large.png b/docs/assets/images/neon-skin-archive-large.png deleted file mode 100644 index fd475f8fad83..000000000000 Binary files a/docs/assets/images/neon-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/neon-skin-archive.png b/docs/assets/images/neon-skin-archive.png deleted file mode 100644 index b6a7cba02e2c..000000000000 Binary files a/docs/assets/images/neon-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/neon-skin-post-large.png b/docs/assets/images/neon-skin-post-large.png deleted file mode 100644 index f12ad1ac284f..000000000000 Binary files a/docs/assets/images/neon-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/neon-skin-post.png b/docs/assets/images/neon-skin-post.png deleted file mode 100644 index ac81cdceb56f..000000000000 Binary files a/docs/assets/images/neon-skin-post.png and /dev/null differ diff --git a/docs/assets/images/page-header-image.png b/docs/assets/images/page-header-image.png deleted file mode 100644 index e8c0c29525cb..000000000000 Binary files a/docs/assets/images/page-header-image.png and /dev/null differ diff --git a/docs/assets/images/page-header-og-image.png b/docs/assets/images/page-header-og-image.png deleted file mode 100644 index 457e0000c8f4..000000000000 Binary files a/docs/assets/images/page-header-og-image.png and /dev/null differ diff --git a/docs/assets/images/page-header-overlay-image.png b/docs/assets/images/page-header-overlay-image.png deleted file mode 100644 index a5d975344d34..000000000000 Binary files a/docs/assets/images/page-header-overlay-image.png and /dev/null differ diff --git a/docs/assets/images/page-header-teaser.png b/docs/assets/images/page-header-teaser.png deleted file mode 100644 index 20988b5cd754..000000000000 Binary files a/docs/assets/images/page-header-teaser.png and /dev/null differ diff --git a/docs/assets/images/paragraph-indent.png b/docs/assets/images/paragraph-indent.png deleted file mode 100644 index b4a2c4810c51..000000000000 Binary files a/docs/assets/images/paragraph-indent.png and /dev/null differ diff --git a/docs/assets/images/paragraph-no-indent.png b/docs/assets/images/paragraph-no-indent.png deleted file mode 100644 index 3e0f9d26c41f..000000000000 Binary files a/docs/assets/images/paragraph-no-indent.png and /dev/null differ diff --git a/docs/assets/images/plum-code-block.jpg b/docs/assets/images/plum-code-block.jpg deleted file mode 100644 index d33bf85d5ee0..000000000000 Binary files a/docs/assets/images/plum-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/plum-skin-archive-large.png b/docs/assets/images/plum-skin-archive-large.png deleted file mode 100644 index a076090b6743..000000000000 Binary files a/docs/assets/images/plum-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/plum-skin-archive.png b/docs/assets/images/plum-skin-archive.png deleted file mode 100644 index 16cbdcfca80f..000000000000 Binary files a/docs/assets/images/plum-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/plum-skin-post-large.png b/docs/assets/images/plum-skin-post-large.png deleted file mode 100644 index 03e300e8db5b..000000000000 Binary files a/docs/assets/images/plum-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/plum-skin-post.png b/docs/assets/images/plum-skin-post.png deleted file mode 100644 index 633f50ec96a4..000000000000 Binary files a/docs/assets/images/plum-skin-post.png and /dev/null differ diff --git a/docs/assets/images/safari-pinned-tab.svg b/docs/assets/images/safari-pinned-tab.svg deleted file mode 100644 index d517ee13d9c0..000000000000 --- a/docs/assets/images/safari-pinned-tab.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - - - diff --git a/docs/assets/images/search-layout-example.png b/docs/assets/images/search-layout-example.png deleted file mode 100644 index 0c4c7c744b6e..000000000000 Binary files a/docs/assets/images/search-layout-example.png and /dev/null differ diff --git a/docs/assets/images/site-logo.png b/docs/assets/images/site-logo.png deleted file mode 100644 index 251dd22ae96b..000000000000 Binary files a/docs/assets/images/site-logo.png and /dev/null differ diff --git a/docs/assets/images/solarized-light-code-block.jpg b/docs/assets/images/solarized-light-code-block.jpg deleted file mode 100644 index be562f434d0d..000000000000 Binary files a/docs/assets/images/solarized-light-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/sunrise-code-block.jpg b/docs/assets/images/sunrise-code-block.jpg deleted file mode 100644 index 5f862cde2a4b..000000000000 Binary files a/docs/assets/images/sunrise-code-block.jpg and /dev/null differ diff --git a/docs/assets/images/sunrise-skin-archive-large.png b/docs/assets/images/sunrise-skin-archive-large.png deleted file mode 100644 index 1c0da1f95b73..000000000000 Binary files a/docs/assets/images/sunrise-skin-archive-large.png and /dev/null differ diff --git a/docs/assets/images/sunrise-skin-archive.png b/docs/assets/images/sunrise-skin-archive.png deleted file mode 100644 index 9fee4e99e92c..000000000000 Binary files a/docs/assets/images/sunrise-skin-archive.png and /dev/null differ diff --git a/docs/assets/images/sunrise-skin-post-large.png b/docs/assets/images/sunrise-skin-post-large.png deleted file mode 100644 index dedbf5887c9b..000000000000 Binary files a/docs/assets/images/sunrise-skin-post-large.png and /dev/null differ diff --git a/docs/assets/images/sunrise-skin-post.png b/docs/assets/images/sunrise-skin-post.png deleted file mode 100644 index a672619fc4f7..000000000000 Binary files a/docs/assets/images/sunrise-skin-post.png and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-1-th.jpg b/docs/assets/images/unsplash-gallery-image-1-th.jpg deleted file mode 100644 index 2ec826c8c20e..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-1-th.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-1.jpg b/docs/assets/images/unsplash-gallery-image-1.jpg deleted file mode 100644 index 86a9f3d6f31b..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-1.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-2-th.jpg b/docs/assets/images/unsplash-gallery-image-2-th.jpg deleted file mode 100644 index 995e788c6d18..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-2-th.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-2.jpg b/docs/assets/images/unsplash-gallery-image-2.jpg deleted file mode 100644 index 394b5bfa2888..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-2.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-3-th.jpg b/docs/assets/images/unsplash-gallery-image-3-th.jpg deleted file mode 100644 index d8ab595acaa1..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-3-th.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-3.jpg b/docs/assets/images/unsplash-gallery-image-3.jpg deleted file mode 100644 index 3b7e99f8489e..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-3.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-4-th.jpg b/docs/assets/images/unsplash-gallery-image-4-th.jpg deleted file mode 100644 index 8d4e05d7276f..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-4-th.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-gallery-image-4.jpg b/docs/assets/images/unsplash-gallery-image-4.jpg deleted file mode 100644 index 872c08c412a9..000000000000 Binary files a/docs/assets/images/unsplash-gallery-image-4.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-1.jpg b/docs/assets/images/unsplash-image-1.jpg deleted file mode 100644 index 24be340b84ab..000000000000 Binary files a/docs/assets/images/unsplash-image-1.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-10.jpg b/docs/assets/images/unsplash-image-10.jpg deleted file mode 100644 index 92b4595a60b9..000000000000 Binary files a/docs/assets/images/unsplash-image-10.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-11.jpg b/docs/assets/images/unsplash-image-11.jpg deleted file mode 100644 index 4cfb7796b2e9..000000000000 Binary files a/docs/assets/images/unsplash-image-11.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-2.jpg b/docs/assets/images/unsplash-image-2.jpg deleted file mode 100644 index 9097a2103885..000000000000 Binary files a/docs/assets/images/unsplash-image-2.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-3.jpg b/docs/assets/images/unsplash-image-3.jpg deleted file mode 100644 index 750e9ab2fe58..000000000000 Binary files a/docs/assets/images/unsplash-image-3.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-4.jpg b/docs/assets/images/unsplash-image-4.jpg deleted file mode 100644 index e8eb28ba92ef..000000000000 Binary files a/docs/assets/images/unsplash-image-4.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-5.jpg b/docs/assets/images/unsplash-image-5.jpg deleted file mode 100644 index 5fa64fc230c2..000000000000 Binary files a/docs/assets/images/unsplash-image-5.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-6.jpg b/docs/assets/images/unsplash-image-6.jpg deleted file mode 100644 index 808412eb5bd0..000000000000 Binary files a/docs/assets/images/unsplash-image-6.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-7.jpg b/docs/assets/images/unsplash-image-7.jpg deleted file mode 100644 index beb5272516b0..000000000000 Binary files a/docs/assets/images/unsplash-image-7.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-8.jpg b/docs/assets/images/unsplash-image-8.jpg deleted file mode 100644 index 66d254c57667..000000000000 Binary files a/docs/assets/images/unsplash-image-8.jpg and /dev/null differ diff --git a/docs/assets/images/unsplash-image-9.jpg b/docs/assets/images/unsplash-image-9.jpg deleted file mode 100644 index cc826a0546fc..000000000000 Binary files a/docs/assets/images/unsplash-image-9.jpg and /dev/null differ diff --git a/docs/screenshot-layouts.png b/docs/screenshot-layouts.png deleted file mode 100644 index 88ef60fd6a56..000000000000 Binary files a/docs/screenshot-layouts.png and /dev/null differ diff --git a/docs/screenshot.png b/docs/screenshot.png deleted file mode 100644 index 56a0a708e710..000000000000 Binary files a/docs/screenshot.png and /dev/null differ diff --git a/getting_started.md b/getting_started.md new file mode 100644 index 000000000000..8ef8040eace0 --- /dev/null +++ b/getting_started.md @@ -0,0 +1,8 @@ +# First, load appropriate packages +* Ruby if not installed (_command to follow_) +* gem install jekyll bundler +* bundle install +* jekyll # check that jekyll works +* jekyll build +* jekyll s --port _yourport_ + diff --git a/index.html b/index.html index b95bb1f56f4c..8d7fb5fd6c73 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,9 @@ --- layout: home author_profile: true +excerpt: Just another Jekyll-based programming blog +header: + overlay_image: /assets/images/sunset-1645103_1920.jpg + source: https://pixabay.com/en/sunset-sky-clouds-abendstimmung-1645103/ + overlay_filter: 0.1 --- diff --git a/minimal-mistakes-jekyll.gemspec b/minimal-mistakes-jekyll.gemspec deleted file mode 100644 index e6f14e845094..000000000000 --- a/minimal-mistakes-jekyll.gemspec +++ /dev/null @@ -1,29 +0,0 @@ -require "json" - -package_json = JSON.parse(File.read("package.json")) - -Gem::Specification.new do |spec| - spec.name = "minimal-mistakes-jekyll" - 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" - spec.license = "MIT" - - spec.metadata["plugin_type"] = "theme" - - spec.files = `git ls-files -z`.split("\x0").select do |f| - f.match(%r{^(assets|_(data|includes|layouts|sass)/|(LICENSE|README|CHANGELOG)((\.(txt|md|markdown)|$)))}i) - end - - spec.add_runtime_dependency "jekyll", ">= 3.7", "< 5.0" - spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" - spec.add_runtime_dependency "jekyll-sitemap", "~> 1.3" - spec.add_runtime_dependency "jekyll-gist", "~> 1.5" - 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", ">= 12.3.3" -end diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 10afd583925e..000000000000 --- a/package-lock.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "minimal-mistakes", - "version": "4.26.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "minimal-mistakes", - "version": "4.26.1", - "license": "MIT", - "devDependencies": { - "uglify-js": "^3.17.4" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "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, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index a1557ee0ef7a..000000000000 --- a/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "minimal-mistakes", - "private": true, - "version": "4.26.2", - "description": "Minimal Mistakes 2 column Jekyll theme.", - "repository": { - "type": "git", - "url": "https://github.com/mmistakes/minimal-mistakes.git" - }, - "keywords": [ - "jekyll", - "theme", - "minimal" - ], - "author": "Michael Rose", - "license": "MIT", - "bugs": { - "url": "https://github.com/mmistakes/minimal-mistakes/issues" - }, - "homepage": "https://mmistakes.github.io/minimal-mistakes/", - "engines": { - "node": ">= 0.10.0" - }, - "devDependencies": { - "uglify-js": "^3.17.4" - } -} diff --git a/screenshot-layouts.png b/screenshot-layouts.png deleted file mode 100644 index 88ef60fd6a56..000000000000 Binary files a/screenshot-layouts.png and /dev/null differ diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 56a0a708e710..000000000000 Binary files a/screenshot.png and /dev/null differ diff --git a/staticman.yml b/staticman.yml deleted file mode 100644 index 61b95925167f..000000000000 --- a/staticman.yml +++ /dev/null @@ -1,104 +0,0 @@ -# Name of the property. You can have multiple properties with completely -# different config blocks for different sections of your site. -# 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://{your Staticman API URL}/v[2|3]/encrypt/{TEXT TO BE ENCRYPTED} - -comments: - # (*) REQUIRED - # - # Names of the fields the form is allowed to submit. If a field that is - # not here is part of the request, an error will be thrown. - allowedFields: ["name", "email", "url", "message"] - - # (*) REQUIRED WHEN USING NOTIFICATIONS - # - # When allowedOrigins is defined, only requests sent from one of the domains - # listed will be accepted. The origin is sent as part as the `options` object - # (e.g. 1.0' -end - -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 deleted file mode 100644 index 9656a3764878..000000000000 --- a/test/_config.yml +++ /dev/null @@ -1,308 +0,0 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your entire site, values -# which you are expected to set up once and rarely need to edit after that. -# For technical reasons, this file is *NOT* reloaded automatically when you use -# `jekyll serve`. If you change this file, please restart the server process. - -theme : "minimal-mistakes-jekyll" -minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" - -# Site Settings -locale : "en-US" -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" -baseurl : "/test" -repository : # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes" -teaser : # path of fallback teaser image, e.g. "/assets/images/500x300.png" -logo : "/assets/images/apple-touch-icon.png" # path of logo image to display in the masthead, e.g. "/assets/images/88x88.png" -masthead_title : "Custom Title" # overrides the website title displayed in the masthead, use " " for no title -# breadcrumbs : false # true, false (default) -words_per_minute : 200 -comments: - 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: - server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org - facebook: - # https://developers.facebook.com/docs/plugins/comments - appid : - num_posts : # 5 (default) - colorscheme : # "light" (default), "dark" - utterances: - theme : # "github-light" (default), "github-dark" - issue_term : # "pathname" (default) - 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 : "lunr" -lunr: - search_within_pages : true -algolia: - application_id : "QB6HVGBSBA" - index_name : "dev_minimal-mistakes" - search_only_api_key : "9d5014e5bbc77372547bce778dfa5663" - powered_by : true - -# SEO Related -google_site_verification : -bing_site_verification : -yandex_site_verification : - -# Social Sharing -twitter: - username : "mmistakes" -facebook: - username : - app_id : - publisher : -og_image : "/assets/images/bio-photo.jpg" -# For specifying social profiles -# - https://developers.google.com/structured-data/customize/social-profiles -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", "google-gtag", "custom" - google: - tracking_id : - - -# Site Author -author: - name : "Your Name" - avatar : "/assets/images/bio-photo.jpg" - bio : "I am an **amazing** person." - location : "Somewhere" - links: - - label: "Your Website" - icon: "fas fa-fw fa-link" - url: "https://your-site.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/" - - label: "GitHub" - icon: "fab fa-fw fa-github" - url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - url: "https://instagram.com/" - - -# Site Footer -footer: - links: - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/" - - label: "GitHub" - icon: "fab fa-fw fa-github" - url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - url: "https://instagram.com/" - - -# Reading Files -include: - - .htaccess - - _pages -exclude: - - "*.sublime-project" - - "*.sublime-workspace" - - vendor - - .asset-cache - - .bundle - - .jekyll-assets-cache - - .sass-cache - - assets/js/plugins - - assets/js/_main.js - - assets/js/vendor - - Capfile - - CHANGELOG - - config - - Gemfile - - Gruntfile.js - - gulpfile.js - - LICENSE - - log - - node_modules - - package.json - - Rakefile - - README - - tmp -keep_files: - - .git - - .svn -encoding: "utf-8" -markdown_ext: "markdown,mkdown,mkdn,mkd,md" - -# Liquid -strict_front_matter: true -liquid: - error_mode: strict - -# Conversion -markdown: kramdown -highlighter: rouge -lsi: false -excerpt_separator: "\n\n" -incremental: false - - -# Markdown Processing -kramdown: - input: GFM - hard_wrap: false - auto_ids: true - footnote_nr: 1 - entity_output: as_char - toc_levels: 1..6 - smart_quotes: lsquo,rsquo,ldquo,rdquo - enable_coderay: false - - -# Sass/SCSS -sass: - sass_dir: _sass - style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style - - -# Outputting -permalink: /:categories/:title/ -paginate: 5 # amount of posts to show -paginate_path: /page:num/ -timezone: # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones - - -# Plugins (previously gems:) -plugins: - - jekyll-paginate - - jekyll-sitemap - - jekyll-gist - - jekyll-feed - - jekyll-include-cache - -# mimic GitHub Pages with --safe -whitelist: - - jekyll-paginate - - jekyll-sitemap - - jekyll-gist - - jekyll-feed - - jekyll-include-cache - - -# Archives -# Type -# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default) -# - Jekyll Archives plugin archive pages ~> type: jekyll-archives -# Path (examples) -# - Archive page should exist at path when using Liquid method or you can -# expect broken links (especially with breadcrumbs enabled) -# - /tags/my-awesome-tag/index.html ~> path: /tags/ -# - /categories/my-awesome-category/index.html ~> path: /categories/ -# - /my-awesome-category/index.html ~> path: / -category_archive: - type: liquid - path: /categories/ -tag_archive: - type: liquid - path: /tags/ -# https://github.com/jekyll/jekyll-archives -# jekyll-archives: -# enabled: -# - categories -# - tags -# layouts: -# category: archive-taxonomy -# tag: archive-taxonomy -# permalinks: -# category: /categories/:name/ -# tag: /tags/:name/ - - -# HTML Compression -# - http://jch.penibelst.de/ -compress_html: - clippings: all - ignore: - envs: development - - -# Collections -collections: - recipes: - output: true - permalink: /:collection/:path/ - pets: - output: true - permalink: /:collection/:path/ - portfolio: - output: true - permalink: /:collection/:path/ - - -# Defaults -defaults: - # _posts - - scope: - path: "" - type: posts - values: - layout: single - author_profile: true - read_time: true - share: true - related: true - # _pages - - scope: - path: "_pages" - type: pages - values: - layout: single - author_profile: true - # _recipes - - scope: - path: "" - type: recipes - values: - layout: single - author_profile: true - share: true - # _pets - - scope: - path: "" - type: pets - values: - layout: single - author_profile: true - share: true - # _portfolio - - scope: - path: "" - type: portfolio - values: - layout: single - author_profile: false - share: true diff --git a/test/_data/authors.yml b/test/_data/authors.yml deleted file mode 100644 index 256ee1fe1812..000000000000 --- a/test/_data/authors.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Authors - -Billy Rick: - name : "Billy Rick" - bio : "What do you want, jewels? I am a very extravagant man." - avatar : "/assets/images/bio-photo-2.jpg" - links: - - label: "Email" - icon: "fas fa-fw fa-envelope-square" - url: "mailto:billyrick@rick.com" - - label: "Website" - icon: "fas fa-fw fa-link" - url: "https://thewhip.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/extravagantman" - -Cornelius Fiddlebone: - name : "Cornelius Fiddlebone" - bio : "I ordered what?" - avatar : "/assets/images/bio-photo.jpg" - links: - - label: "Email" - icon: "fas fa-fw fa-envelope-square" - url: "mailto:cornelius@thewhip.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/rhymeswithsackit" \ No newline at end of file diff --git a/test/_data/navigation.yml b/test/_data/navigation.yml deleted file mode 100644 index 8adf5972eefb..000000000000 --- a/test/_data/navigation.yml +++ /dev/null @@ -1,61 +0,0 @@ -# main links links -main: - - title: "About" - url: https://mmistakes.github.io/minimal-mistakes/about/ - - title: "Posts" - url: /year-archive/ - - title: "Collections" - url: /collection-archive/ - - title: "Sitemap" - url: /sitemap/ - - title: "Extra Menu Item 1" - url: / - - title: "Extra Menu Item 2" - url: / - - title: "Extra Menu Item Long Title" - url: / - -# sidebar navigation list sample -sidebar-sample: - - title: "Parent Page A" - children: - - title: "Child Page A1" - url: /child-page-a1/ - - title: "Child Page A2" - url: /child-page-a2/ - - title: "Child Page A3" - url: /child-page-a3/ - - title: "Child Page A4" - url: /child-page-a4/ - - title: "Parent Page B" - children: - - title: "Child Page B1" - url: /child-page-b1/ - - title: "Child Page B2" - url: /child-page-b2/ - - title: "Child Page B3" - url: /child-page-b3/ - - title: "Child Page B4" - url: /child-page-b4/ - - title: "Child Page B5" - url: /child-page-b5/ - - title: "Parent Page C" - children: - - title: "Child Page C1" - url: /child-page-c1/ - - title: "Child Page C2" - url: /child-page-c2/ - - title: "Child Page C3" - url: /child-page-c3/ - - title: "Child Page C4" - url: /child-page-c4/ - - title: "Child Page C5" - url: /child-page-c5/ - - title: "Parent Page D" - children: - - title: "Child Page D1" - url: /child-page-d1/ - - title: "Child Page D2" - url: /child-page-d2/ - - title: "Child Page D3 (External)" - url: https://your-domain.com \ No newline at end of file diff --git a/test/_pages/404.md b/test/_pages/404.md deleted file mode 100644 index b3025a6053b5..000000000000 --- a/test/_pages/404.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Page Not Found" -excerpt: "Page not found. Your pixels are in another canvas." -sitemap: false -permalink: /404.html ---- - -Sorry, but the page you were trying to view does not exist. diff --git a/test/_pages/archive-layout-with-content.md b/test/_pages/archive-layout-with-content.md deleted file mode 100644 index 1616b07b04e2..000000000000 --- a/test/_pages/archive-layout-with-content.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: "Archive Layout with Content" -layout: archive -permalink: /archive-layout-with-content/ ---- - -A variety of common markup showing how the theme styles them. - -# Header one - -## Header two - -### Header three - -#### Header four - -##### Header five - -###### Header six - -## Blockquotes - -Single line blockquote: - -> Stay hungry. Stay foolish. - -Multi line blockquote with a cite reference: - -> People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things. - -Steve Jobs --- Apple Worldwide Developers' Conference, 1997 -{: .small} - -## Tables - -| Employee | Salary | | -| -------- | ------ | ------------------------------------------------------------ | -| [John Doe](#) | $1 | Because that's all Steve Jobs needed for a salary. | -| [Jane Doe](#) | $100K | For all the blogging she does. | -| [Fred Bloggs](#) | $100M | Pictures are worth a thousand words, right? So Jane × 1,000. | -| [Jane Bloggs](#) | $100B | With hair like that?! Enough said. | - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|-----------------------------| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|=============================| -| Foot1 | Foot2 | Foot3 | - -## Definition Lists - -Definition List Title -: Definition list division. - -Startup -: A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. - -#dowork -: Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. - -Do It Live -: I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. - -## Unordered Lists (Nested) - - * List item one - * List item one - * List item one - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - -## Ordered List (Nested) - - 1. List item one - 1. List item one - 1. List item one - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - -[Primary Button](#){: .btn} -[Success Button](#){: .btn .btn--success} -[Warning Button](#){: .btn .btn--warning} -[Danger Button](#){: .btn .btn--danger} -[Info Button](#){: .btn .btn--info} -[Inverse Button](#){: .btn .btn--inverse} -[Light Outline Button](#){: .btn .btn--light-outline} - -```markdown -[Primary Button Text](#link){: .btn} -[Success Button Text](#link){: .btn .btn--success} -[Warning Button Text](#link){: .btn .btn--warning} -[Danger Button Text](#link){: .btn .btn--danger} -[Info Button Text](#link){: .btn .btn--info} -[Inverse Button](#link){: .btn .btn--inverse} -[Light Outline Button](#link){: .btn .btn--light-outline} -``` - -[X-Large Button](#){: .btn .btn--x-large} -[Large Button](#){: .btn .btn--large} -[Default Button](#){: .btn} -[Small Button](#){: .btn .btn--small} - -```markdown -[X-Large Button](#link){: .btn .btn--x-large} -[Large Button](#link){: .btn .btn--large} -[Default Button](#link){: .btn} -[Small Button](#link){: .btn .btn--small} -``` - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} - -## HTML Tags - -### Address Tag - -
    - 1 Infinite Loop
    Cupertino, CA 95014
    United States -
    - -### Anchor Tag (aka. Link) - -This is an example of a [link](http://apple.com "Apple"). - -### Abbreviation Tag - -The abbreviation CSS stands for "Cascading Style Sheets". - -*[CSS]: Cascading Style Sheets - -### Cite Tag - -"Code is poetry." ---Automattic - -### Code Tag - -You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. - -### Strike Tag - -This tag will let you strikeout text. - -### Emphasize Tag - -The emphasize tag should _italicize_ text. - -### Insert Tag - -This tag should denote inserted text. - -### Keyboard Tag - -This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. - -### Preformatted Tag - -This tag styles large blocks of code. - -
    -.post-title {
    -  margin: 0 0 5px;
    -  font-weight: bold;
    -  font-size: 38px;
    -  line-height: 1.2;
    -  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
    -}
    -
    - -### Quote Tag - -Developers, developers, developers… –Steve Ballmer - -### Strong Tag - -This tag shows **bold text**. - -### Subscript Tag - -Getting our science styling on with H2O, which should push the "2" down. - -### Superscript Tag - -Still sticking with science and Albert Einstein's E = MC2, which should lift the 2 up. - -### Variable Tag - -This allows you to denote variables. \ No newline at end of file diff --git a/test/_pages/category-archive-grid.md b/test/_pages/category-archive-grid.md deleted file mode 100644 index 3558be0a0db9..000000000000 --- a/test/_pages/category-archive-grid.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -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 deleted file mode 100644 index 4cb3860e91be..000000000000 --- a/test/_pages/category-archive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Posts by Category" -layout: categories -permalink: /categories/ -author_profile: true ---- diff --git a/test/_pages/collection-archive-grid.html b/test/_pages/collection-archive-grid.html deleted file mode 100644 index 3280bf7bdf79..000000000000 --- a/test/_pages/collection-archive-grid.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -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" %} -
    - {% capture label %}{{ collection.label }}{% endcapture %} - {% if label != written_label %} -

    {{ label }}

    - {% capture written_label %}{{ label }}{% endcapture %} - {% endif %} -
    - {% for post in collection.docs %} - {% include archive-single.html type=entries_layout %} - {% endfor %} -
    - {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ -
    - {% endunless %} -{% endfor %} diff --git a/test/_pages/collection-archive.html b/test/_pages/collection-archive.html deleted file mode 100644 index 219592b6d8e9..000000000000 --- a/test/_pages/collection-archive.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: archive -title: "Posts by Collection" -permalink: /collection-archive/ -author_profile: true ---- - -{% capture written_label %}'None'{% endcapture %} - -{% for collection in site.collections %} - {% unless collection.output == false or collection.label == "posts" %} - {% capture label %}{{ collection.label }}{% endcapture %} - {% if label != written_label %} -

    {{ label }}

    - {% capture written_label %}{{ label }}{% endcapture %} - {% endif %} - {% endunless %} - {% for post in collection.docs %} - {% unless collection.output == false or collection.label == "posts" %} - {% include archive-single.html type=page.entries_layout %} - {% endunless %} - {% endfor %} -{% endfor %} diff --git a/test/_pages/edge-case-grid.md b/test/_pages/edge-case-grid.md deleted file mode 100644 index c2f73e5a2a93..000000000000 --- a/test/_pages/edge-case-grid.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -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/edge-case.md b/test/_pages/edge-case.md deleted file mode 100644 index 016138a4675a..000000000000 --- a/test/_pages/edge-case.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Edge Case -layout: category -permalink: /categories/edge-case/ -taxonomy: Edge Case ---- - -Sample post listing for the category `Edge Case`. diff --git a/test/_pages/lorem-ipsum.md b/test/_pages/lorem-ipsum.md deleted file mode 100644 index 13be88aeb675..000000000000 --- a/test/_pages/lorem-ipsum.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Lorem Ipsum" -permalink: /lorem-ipsum/ ---- - -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec mollis. Quisque convallis libero in sapien pharetra tincidunt. Aliquam elit ante, malesuada id, tempor eu, gravida id, odio. Maecenas suscipit, risus et eleifend imperdiet, nisi orci ullamcorper massa, et adipiscing orci velit quis magna. Praesent sit amet ligula id orci venenatis auctor. Phasellus porttitor, metus non tincidunt dapibus, orci pede pretium neque, sit amet adipiscing ipsum lectus et libero. Aenean bibendum. Curabitur mattis quam id urna. Vivamus dui. Donec nonummy lacinia lorem. Cras risus arcu, sodales ac, ultrices ac, mollis quis, justo. Sed a libero. Quisque risus erat, posuere at, tristique non, lacinia quis, eros. - -Cras volutpat, lacus quis semper pharetra, nisi enim dignissim est, et sollicitudin quam ipsum vel mi. Sed commodo urna ac urna. Nullam eu tortor. Curabitur sodales scelerisque magna. Donec ultricies tristique pede. Nullam libero. Nam sollicitudin felis vel metus. Nullam posuere molestie metus. Nullam molestie, nunc id suscipit rhoncus, felis mi vulputate lacus, a ultrices tortor dolor eget augue. Aenean ultricies felis ut turpis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse placerat tellus ac nulla. Proin adipiscing sem ac risus. Maecenas nisi. Cras semper. - -Praesent interdum mollis neque. In egestas nulla eget pede. Integer eu purus sed diam dictum scelerisque. Morbi cursus velit et felis. Maecenas faucibus aliquet erat. In aliquet rhoncus tellus. Integer auctor nibh a nunc fringilla tempus. Cras turpis urna, dignissim vel, suscipit pulvinar, rutrum quis, sem. Ut lobortis convallis dui. Sed nonummy orci a justo. Morbi nec diam eget eros eleifend tincidunt. - -Curabitur non elit. Pellentesque iaculis, nisl non aliquet adipiscing, purus urna aliquet orci, sed sodales pede neque at massa. Pellentesque laoreet, enim eget varius mollis, sapien erat suscipit metus, sit amet iaculis nulla sapien id felis. Aliquam erat volutpat. Nam congue nulla a ligula. Morbi tempor hendrerit erat. Curabitur augue. Vestibulum nulla est, commodo et, fringilla quis, bibendum eget, ipsum. Suspendisse pulvinar iaculis ante. Mauris dignissim ante quis nisi. Aliquam ante mi, aliquam et, pellentesque ac, dapibus et, enim. In vulputate justo vel magna. Phasellus imperdiet justo. Proin odio orci, dapibus id, porta a, pellentesque id, erat. Aliquam erat volutpat. Mauris nonummy varius libero. Sed dolor ipsum, tempor non, aliquet et, pulvinar quis, dui. Pellentesque mauris diam, lobortis id, varius varius, facilisis at, nulla. - -Cras pede. Nullam id velit sit amet turpis tincidunt sagittis. Nunc malesuada. Nunc consequat scelerisque odio. Donec eu leo. Nunc pellentesque felis sed odio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus lobortis metus in lectus. Cras mollis quam eget sapien. Pellentesque non lorem sit amet sem lacinia euismod. - -Nulla eget diam eget leo imperdiet consequat. Morbi nunc magna, pellentesque eu, porta at, ultricies ut, neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In tincidunt. Praesent ut orci id eros congue ultrices. Mauris non neque. Donec nulla ante, molestie sit amet, fermentum nec, blandit sit amet, purus. Fusce eget diam eu odio iaculis mollis. Phasellus consectetuer pede quis nisi. Proin non sem ut elit pulvinar faucibus. In a turpis nec augue fringilla elementum. - -Nullam felis. Donec in nulla. Suspendisse sodales, turpis in suscipit ullamcorper, enim nunc sagittis risus, eu auctor velit tortor ut turpis. Mauris id augue at neque aliquam eleifend. Sed eget augue. Nunc faucibus ligula sed massa. Etiam non nulla. Etiam accumsan ullamcorper nisl. In pharetra massa at nunc. Nunc elementum. Duis sodales enim nec libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent dapibus eros sodales urna. Duis magna nisi, lobortis quis, tincidunt rutrum, posuere non, ipsum. - -Aliquam convallis neque vitae diam. In diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis fermentum arcu in tortor. Sed nibh leo, rhoncus eu, fermentum et, scelerisque ac, massa. Cras id turpis. Etiam commodo sem luctus lorem. Morbi at mi. In rutrum. Aenean luctus pede euismod tortor. Phasellus dictum. Cras neque justo, venenatis sit amet, tristique et, vulputate in, dui. Etiam sed mi gravida sapien imperdiet dictum. Aliquam gravida orci a tortor. Donec tempor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus risus ante, pellentesque vitae, luctus eget, scelerisque sed, libero. Donec massa. - -Donec libero mauris, volutpat at, convallis vel, laoreet euismod, augue. In accumsan malesuada risus. Mauris metus magna, condimentum in, nonummy non, ornare eu, velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin posuere. Proin rhoncus rutrum lorem. Phasellus dignissim massa non libero volutpat tincidunt. In hac habitasse platea dictumst. Phasellus eget eros. Nulla in nulla. Vivamus quis mauris. Maecenas pharetra rhoncus tellus. Sed sit amet lacus. - -Quisque interdum felis a tellus. Aliquam sed diam ac velit aliquam rutrum. Morbi commodo, risus a pulvinar adipiscing, tortor pede posuere risus, ac ornare tellus massa nec lectus. Vivamus mollis metus ac sapien. Nam sed est a libero ullamcorper dapibus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean a erat ac nibh accumsan volutpat. Phasellus pulvinar consequat turpis. Curabitur ante metus, tempus ut, consequat eu, sollicitudin sit amet, justo. Duis ut libero. - -Հայերեն - -Lorem Ipsum-ը տպագրության և տպագրական արդյունաբերության համար նախատեսված մոդելային տեքստ է: Սկսած 1500-ականներից\` Lorem Ipsum-ը հանդիսացել է տպագրական արդյունաբերության ստանդարտ մոդելային տեքստ, ինչը մի անհայտ տպագրիչի կողմից տարբեր տառատեսակների օրինակների գիրք ստեղծելու ջանքերի արդյունք է: Այս տեքստը ոչ միայն կարողացել է գոյատևել հինգ դարաշրջան, այլև ներառվել է էլեկտրոնային տպագրության մեջ\` մնալով էապես անփոփոխ: Այն հայտնի է դարձել 1960-ականներին Lorem Ipsum բովանդակող Letraset էջերի թողարկման արդյունքում, իսկ ավելի ուշ համակարգչային տպագրության այնպիսի ծրագրերի թողարկման հետևանքով, ինչպիսին է Aldus PageMaker-ը, որը ներառում է Lorem Ipsum-ի տարատեսակներ: - -Български - -Lorem Ipsum е елементарен примерен текст, използван в печатарската и типографската индустрия. Lorem Ipsum е индустриален стандарт от около 1500 година, когато неизвестен печатар взема няколко печатарски букви и ги разбърква, за да напечата с тях книга с примерни шрифтове. Този начин не само е оцелял повече от 5 века, но е навлязъл и в публикуването на електронни издания като е запазен почти без промяна. Популяризиран е през 60те години на 20ти век със издаването на Letraset листи, съдържащи Lorem Ipsum пасажи, популярен е и в наши дни във софтуер за печатни издания като Aldus PageMaker, който включва различни версии на Lorem Ipsum. - -Català - -Lorem Ipsum és un text de farciment usat per la indústria de la tipografia i la impremta. Lorem Ipsum ha estat el text estàndard de la indústria des de l’any 1500, quan un impressor desconegut va fer servir una galerada de text i la va mesclar per crear un llibre de mostres tipogràfiques. No només ha sobreviscut cinc segles, sinó que ha fet el salt cap a la creació de tipus de lletra electrònics, romanent essencialment sense canvis. Es va popularitzar l’any 1960 amb el llançament de fulls Letraset que contenien passatges de Lorem Ipsum, i més recentment amb programari d’autoedició com Aldus Pagemaker que inclou versions de Lorem Ipsum. - -Hrvatski - -Lorem Ipsum je jednostavno probni tekst koji se koristi u tiskarskoj i slovoslagarskoj industriji. Lorem Ipsum postoji kao industrijski standard još od 16-og stoljeća, kada je nepoznati tiskar uzeo tiskarsku galiju slova i posložio ih da bi napravio knjigu s uzorkom tiska. Taj je tekst ne samo preživio pet stoljeća, već se i vinuo u svijet elektronskog slovoslagarstva, ostajući u suštini nepromijenjen. Postao je popularan tijekom 1960-ih s pojavom Letraset listova s odlomcima Lorem Ipsum-a, a u skorije vrijeme sa software-om za stolno izdavaštvo kao što je Aldus PageMaker koji također sadrži varijante Lorem Ipsum-a. - -Česky - -Lorem Ipsum je demonstrativní výplňový text používaný v tiskařském a knihařském průmyslu. Lorem Ipsum je považováno za standard v této oblasti už od začátku 16. století, kdy dnes neznámý tiskař vzal kusy textu a na jejich základě vytvořil speciální vzorovou knihu. Jeho odkaz nevydržel pouze pět století, on přežil i nástup elektronické sazby v podstatě beze změny. Nejvíce popularizováno bylo Lorem Ipsum v šedesátých letech 20. století, kdy byly vydávány speciální vzorníky s jeho pasážemi a později pak díky počítačovým DTP programům jako Aldus PageMaker. - -Româna - -Lorem Ipsum este pur şi simplu o machetă pentru text a industriei tipografice. Lorem Ipsum a fost macheta standard a industriei încă din secolul al XVI-lea, când un tipograf anonim a luat o planşetă de litere şi le-a amestecat pentru a crea o carte demonstrativă pentru literele respective. Nu doar că a supravieţuit timp de cinci secole, dar şi a facut saltul în tipografia electronică practic neschimbată. A fost popularizată în anii ’60 odată cu ieşirea colilor Letraset care conţineau pasaje Lorem Ipsum, iar mai recent, prin programele de publicare pentru calculator, ca Aldus PageMaker care includeau versiuni de Lorem Ipsum. - -Српски - -Lorem Ipsum је једноставно модел текста који се користи у штампарској и словослагачкој индустрији. Lorem ipsum је био стандард за модел текста још од 1500. године, када је непознати штампар узео кутију са словима и сложио их како би направио узорак књиге. Не само што је овај модел опстао пет векова, него је чак почео да се користи и у електронским медијима, непроменивши се. Популаризован је шездесетих година двадесетог века заједно са листовима летерсета који су садржали Lorem Ipsum пасусе, а данас са софтверским пакетом за прелом као што је Aldus PageMaker који је садржао Lorem Ipsum верзије. \ No newline at end of file diff --git a/test/_pages/markup-grid.md b/test/_pages/markup-grid.md deleted file mode 100644 index 7ebf0badbdd7..000000000000 --- a/test/_pages/markup-grid.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -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/markup.md b/test/_pages/markup.md deleted file mode 100644 index 147a719ae258..000000000000 --- a/test/_pages/markup.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Markup -layout: tag -permalink: /tags/markup/ -taxonomy: markup ---- - -Sample post listing for the tag `markup`. diff --git a/test/_pages/page-a.md b/test/_pages/page-a.md deleted file mode 100644 index 3083db24ad10..000000000000 --- a/test/_pages/page-a.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Page A" -permalink: /page-a/ -date: 2011-06-23T18:38:52+00:00 ---- - -Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. \ No newline at end of file diff --git a/test/_pages/page-archive-grid.html b/test/_pages/page-archive-grid.html deleted file mode 100644 index 269dc2a16403..000000000000 --- a/test/_pages/page-archive-grid.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: archive -title: "Page Archive" -permalink: /page-archive-grid/ -entries_layout: grid -author_profile: false ---- - -{% assign entries_layout = page.entries_layout | default: 'list' %} -
    -
    - {% for post in site.pages %} - {% include archive-single.html type=entries_layout %} - {% endfor %} -
    -
    diff --git a/test/_pages/page-archive.html b/test/_pages/page-archive.html deleted file mode 100644 index ce11172ed489..000000000000 --- a/test/_pages/page-archive.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: archive -title: "Page Archive" -permalink: /page-archive/ -author_profile: false ---- - -{% for post in site.pages %} - {% include archive-single.html %} -{% endfor %} diff --git a/test/_pages/page-b.md b/test/_pages/page-b.md deleted file mode 100644 index d15ce12289d9..000000000000 --- a/test/_pages/page-b.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Page B" -permalink: /page-b/ -date: 2011-06-23T18:39:14+00:00 ---- - -(lorem ipsum) \ No newline at end of file diff --git a/test/_pages/portfolio-archive.md b/test/_pages/portfolio-archive.md deleted file mode 100644 index 019082f49185..000000000000 --- a/test/_pages/portfolio-archive.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Portfolio -layout: collection -permalink: /portfolio/ -collection: portfolio -entries_layout: grid -classes: wide ---- - -Sample document listing for the collection `_portfolio`. diff --git a/test/_pages/post-archive-feature-rows.html b/test/_pages/post-archive-feature-rows.html deleted file mode 100644 index 47cab558d9fd..000000000000 --- a/test/_pages/post-archive-feature-rows.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: archive -title: "Post Archive with Feature Rows" -permalink: /post-archive-feature-rows/ -author_profile: true -feature_row: - - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Placeholder 1" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder 2" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" - - 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." -feature_row2: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Left Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Left aligned with `type="left"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row3: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Right Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Right aligned with `type="right"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row4: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Center Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Centered with `type="center"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" ---- - -{% for post in site.posts limit: 5 %} - {% include archive-single.html %} -{% endfor %} - -{% include feature_row id="intro" type="center" %} - -{% include feature_row %} - -{% include feature_row id="feature_row2" type="left" %} - -{% include feature_row id="feature_row3" type="right" %} - -{% include feature_row id="feature_row4" type="center" %} \ No newline at end of file diff --git a/test/_pages/recipes-archive.md b/test/_pages/recipes-archive.md deleted file mode 100644 index cdde1e4e6594..000000000000 --- a/test/_pages/recipes-archive.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: collection -title: "Recipes" -collection: recipes -permalink: /recipes-archive/ -author_profile: false ---- - -Sample document listing for the collection `_recipes`. \ No newline at end of file diff --git a/test/_pages/sample-page.md b/test/_pages/sample-page.md deleted file mode 100644 index 060e53b864c9..000000000000 --- a/test/_pages/sample-page.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Sample Page" -permalink: /sample-page/ -date: 2016-02-24T03:02:20+00:00 ---- - -This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this: - -> Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like pi'a coladas. (And gettin' caught in the rain.) - -...or something like this: - -> The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community. - -You should probably delete this page and create new pages for your content. Have fun! \ No newline at end of file diff --git a/test/_pages/search.md b/test/_pages/search.md deleted file mode 100644 index 9a05649273fd..000000000000 --- a/test/_pages/search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Search -layout: search -permalink: /search/ ---- \ No newline at end of file diff --git a/test/_pages/sitemap.md b/test/_pages/sitemap.md deleted file mode 100644 index 24d4009dc9ff..000000000000 --- a/test/_pages/sitemap.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: archive -title: "Sitemap" -permalink: /sitemap/ -author_profile: false ---- - -A list of all the posts and pages found on the site. For you robots out there is an [XML version]({{ '/sitemap.xml' | relative_url }}) available for digesting as well. - -

    Pages

    -{% for post in site.pages %} - {% include archive-single.html %} -{% endfor %} - -

    Posts

    -{% for post in site.posts %} - {% include archive-single.html %} -{% endfor %} - -{% capture written_label %}'None'{% endcapture %} - -{% for collection in site.collections %} -{% unless collection.output == false or collection.label == "posts" %} - {% capture label %}{{ collection.label }}{% endcapture %} - {% if label != written_label %} -

    {{ label }}

    - {% capture written_label %}{{ label }}{% endcapture %} - {% endif %} -{% endunless %} -{% for post in collection.docs %} - {% unless collection.output == false or collection.label == "posts" %} - {% include archive-single.html %} - {% endunless %} -{% endfor %} -{% endfor %} \ No newline at end of file diff --git a/test/_pages/splash-page.md b/test/_pages/splash-page.md deleted file mode 100644 index 81d56258cbfe..000000000000 --- a/test/_pages/splash-page.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "Splash Page" -layout: splash -permalink: /splash-page/ -date: 2016-03-23T11:48:41-04:00 -header: - overlay_color: "#000" - overlay_filter: "0.5" - overlay_image: /assets/images/unsplash-image-1.jpg - actions: - - label: "Learn More" - url: "/terms/" - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -excerpt: "Bacon ipsum dolor sit amet salami ham hock ham, hamburger corned beef short ribs kielbasa biltong t-bone drumstick tri-tip tail sirloin pork chop." -intro: - - excerpt: 'Nullam suscipit et nam, tellus velit pellentesque at malesuada, enim eaque. Quis nulla, netus tempor in diam gravida tincidunt, *proin faucibus* voluptate felis id sollicitudin. Centered with `type="center"`' -feature_row: - - image_path: assets/images/unsplash-gallery-image-1-th.jpg - image_caption: "Image courtesy of [Unsplash](https://unsplash.com/)" - alt: "placeholder image 1" - title: "Placeholder 1" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder 2" - excerpt: "This is some sample content that goes here with **Markdown** formatting." - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" - - 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." -feature_row2: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Left Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Left aligned with `type="left"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row3: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Right Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Right aligned with `type="right"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" -feature_row4: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Placeholder Image Center Aligned" - excerpt: 'This is some sample content that goes here with **Markdown** formatting. Centered with `type="center"`' - url: "#test-link" - btn_label: "Read More" - btn_class: "btn--primary" ---- - -{% include feature_row id="intro" type="center" %} - -{% include feature_row %} - -{% include feature_row id="feature_row2" type="left" %} - -{% include feature_row id="feature_row3" type="right" %} - -{% include feature_row id="feature_row4" type="center" %} \ No newline at end of file diff --git a/test/_pages/tag-archive-grid.md b/test/_pages/tag-archive-grid.md deleted file mode 100644 index fa4df8137729..000000000000 --- a/test/_pages/tag-archive-grid.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -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 deleted file mode 100644 index 3f4e3f0df86c..000000000000 --- a/test/_pages/tag-archive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Posts by Tag" -permalink: /tags/ -layout: tags -author_profile: true ---- diff --git a/test/_pages/terms.md b/test/_pages/terms.md deleted file mode 100644 index f07f96fe10db..000000000000 --- a/test/_pages/terms.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -permalink: /terms/ -title: "Terms and Privacy Policy" -last_modified_at: 2016-06-06 -toc: true ---- - -## Privacy Policy - -The privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used. - -First and foremost, I will never share your email address or any other personal information to anyone without your direct consent. - -### Log Files - -Like many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include: - -* Internet Protocol addresses (IP) -* Types of browser -* Internet Service Provider (ISP) -* Date and time stamp -* Referring and exit pages -* Number of clicks - -All of this information is not linked to anything that is personally identifiable. - -### Cookies and Web Beacons - -When you visit this site "convenience" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](http://disqus.com) the next time you leave a comment. - -Third-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out. - -If you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites. - -#### Google Analytics - -Google Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](http://www.google.com/analytics/learn/privacy.html). - -#### Google Adsense - -Google Adsense, a third party affiliate marketing network, uses cookies to help make sure I get a commission when you buy a product after clicking on a link or ad banner that takes you to the site of one of their merchants. You can read [Google Adsense Privacy Policy](http://support.google.com/adsense/bin/answer.py?hl=en&answer=48182). - -## Disclosure Policy - -I make money on this website through affiliate programs. If you click an affiliate link or ad banner and buy the product, you help support this website because I'll get a percentage of that sale. - -Currently I'm an affiliate for Amazon and Google Adsense. - -What this means for you: - -* I became an affiliate to earn revenue towards the costs of running and maintaining this website. Where I have direct control over which ads are served on this website I offer only products that are directly related to the topic of this website and products that a reader/subscriber would have a genuine interest in or need of. -* I do not and will not recommend a product just for the sake of making money. -* I do not let the compensation I receive influence the content, topics, posts, or opinions expressed on this website. -* I respect and value my readers too much to write anything other than my own genuine and objective opinions and advice. - -Just like this website, my Disclosure Policy is a work in progress. As the revenue streams evolve, so will this page. \ No newline at end of file diff --git a/test/_pages/year-archive-grid.md b/test/_pages/year-archive-grid.md deleted file mode 100644 index 5029212cd32d..000000000000 --- a/test/_pages/year-archive-grid.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Posts by Year (grid view)" -permalink: /year-archive-grid/ -layout: posts -entries_layout: grid -author_profile: true ---- diff --git a/test/_pages/year-archive.md b/test/_pages/year-archive.md deleted file mode 100644 index 1021452ad951..000000000000 --- a/test/_pages/year-archive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: "Posts by Year" -permalink: /year-archive/ -layout: posts -author_profile: true ---- diff --git a/test/_pets/lhasa-apso.md b/test/_pets/lhasa-apso.md deleted file mode 100644 index 2673b6bab64f..000000000000 --- a/test/_pets/lhasa-apso.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Lhasa Apso" -excerpt: "The Lhasa Apso is a non-sporting dog breed originating in Tibet." ---- - -> The Lhasa Apso (/ˈlɑːsə ˈæpsoʊ/ lah-sə ap-soh) is a non-sporting dog breed originating in Tibet. It was bred as an interior sentinel in the Buddhist monasteries, to alert the monks to any intruders who entered. Lhasa is the capital city of Tibet, and apso is a word in the Tibetan language meaning "bearded", so, Lhasa Apso simply means "long-haired Lhasa dog". There are, however, some who claim that the word "apso" is a form of the Tibetan word "rapso", meaning "goat-like", which would make the equivalent translation "wooly Lhasa dog". - -> From Wikipedia, the free encyclopedia \ No newline at end of file diff --git a/test/_pets/tabby.md b/test/_pets/tabby.md deleted file mode 100644 index b62b67454b1a..000000000000 --- a/test/_pets/tabby.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Tabby" -excerpt: "A tabby is any domestic cat that has a coat featuring distinctive stripes, dots, lines or swirling patterns, usually with a mark resembling an 'M' on its forehead." ---- - -> A tabby is any domestic cat that has a coat featuring distinctive stripes, dots, lines or swirling patterns, usually together with a mark resembling an 'M' on its forehead. Tabbies are sometimes erroneously assumed to be a cat breed. In fact, the tabby pattern is found in many breeds, as well as among the general mixed-breed population. The tabby pattern is a naturally occurring feature that may be related to the coloration of the domestic cat's direct ancestor, the African wildcat, which (along with the European wildcat and Asiatic wildcat) has a similar coloration. - -> From Wikipedia, the free encyclopedia \ No newline at end of file diff --git a/test/_portfolio/baz-boom-identity.md b/test/_portfolio/baz-boom-identity.md deleted file mode 100644 index 98edd8f4dff6..000000000000 --- a/test/_portfolio/baz-boom-identity.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Baz Boom Identity" -excerpt: "Baz Boom design system including logo mark, website design, and branding applications." -header: - image: /assets/images/unsplash-gallery-image-1.jpg - teaser: assets/images/unsplash-gallery-image-1-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/test/_portfolio/fizz-bang-identity.md b/test/_portfolio/fizz-bang-identity.md deleted file mode 100644 index b04881983531..000000000000 --- a/test/_portfolio/fizz-bang-identity.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Fizz Bang Identity" -excerpt: "Fizz Bang design system including logo mark, website design, and branding applications." -header: - image: /assets/images/unsplash-gallery-image-2.jpg - teaser: assets/images/unsplash-gallery-image-2-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/test/_portfolio/foo-bar-website.md b/test/_portfolio/foo-bar-website.md deleted file mode 100644 index 2002bd5b0bc0..000000000000 --- a/test/_portfolio/foo-bar-website.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Foo Bar Identity" -excerpt: "Foo Bar design system including logo mark, website design, and branding applications." -header: - image: /assets/images/foo-bar-identity.jpg - teaser: /assets/images/foo-bar-identity-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file diff --git a/test/_portfolio/ginger-gulp-identity.md b/test/_portfolio/ginger-gulp-identity.md deleted file mode 100644 index 4a9d75cdf2b3..000000000000 --- a/test/_portfolio/ginger-gulp-identity.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Ginger Gulp Identity" -excerpt: "Ginger Gulp design system including logo mark, website design, and branding applications." -header: - image: /assets/images/unsplash-gallery-image-3.jpg - teaser: assets/images/unsplash-gallery-image-3-th.jpg -sidebar: - - title: "Role" - image: http://placehold.it/350x250 - image_alt: "logo" - text: "Designer, Front-End Developer" - - title: "Responsibilities" - text: "Reuters try PR stupid commenters should isn't a business model" -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" ---- - -Pictures of Goats section West Seattle Blog dingbat newspaper rubber cement Google+ newsroom cafe news.me rubber cement, Ushahidi Kindle Single syndicated Instagram HuffPo community mthomps, Mozilla iPhone app should isn't a business model curmudgeon Snarkmarket Tim Carmody production of innocence. Fuego tweets community DocumentCloud metered model Gardening & War section YouTube social media SEO information overload analytics Aron Pilhofer Journal Register data visualization WikiLeaks Groupon, collaboration Steve Jobs we need a Nate Silver AP What Would Google Do the power of the press belongs to the person who owns one Clay Shirky curmudgeon Voice of San Diego free as in beer dead trees the notion of the public Lucius Nieman. - -{% include gallery caption="This is a sample gallery to go along with this case study." %} - -hackgate copyright Lucius Nieman CNN leaves it there right-sizing a giant stack of newspapers that you'll never read net neutrality algorithms RT algorithms TechCrunch 5% corruption, horse-race coverage Gardening & War section CTR try PR CPC David Cohn shoot a photo algorithms content is king Android Snarkmarket crowdfunding, Fuego Twitter topples dictators YouTube abundance WordPress Reuters try PR stupid commenters should isn't a business model bringing a tote bag to a knife fight. \ No newline at end of file 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 deleted file mode 100644 index 5e3ecedcaffd..000000000000 --- a/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: "Edge Case: Nested and Mixed Lists" -categories: - - Edge Case -tags: - - content - - css - - edge case - - lists - - markup ---- - -Nested and mixed lists are an interesting beast. It's a corner case to make sure that - -* Lists within lists do not break the ordered list numbering order -* Your list styles go deep enough. - -### Ordered -- Unordered -- Ordered - -1. ordered item -2. ordered item - * **unordered** - * **unordered** - 1. ordered item - 2. ordered item -3. ordered item -4. ordered item - -### Ordered -- Unordered -- Unordered - -1. ordered item -2. ordered item - * **unordered** - * **unordered** - * unordered item - * unordered item -3. ordered item -4. ordered item - -### Unordered -- Ordered -- Unordered - -* unordered item -* unordered item - 1. ordered - 2. ordered - * unordered item - * unordered item -* unordered item -* unordered item - -### Unordered -- Unordered -- Ordered - -* unordered item -* unordered item - * unordered - * unordered - 1. **ordered item** - 2. **ordered item** -* unordered item -* unordered item - -### Task Lists - -- [x] Finish my changes -- [ ] Push my commits to GitHub -- [ ] 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 deleted file mode 100644 index af9209596ea6..000000000000 --- a/test/_posts/2009-06-01-edge-case-many-tags.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "Edge Case: Many Tags" -categories: - - Edge Case -tags: - - 8BIT - - alignment - - Articles - - captions - - categories - - chat - - comments - - content - - css - - dowork - - edge case - - embeds - - excerpt - - Fail - - featured image - - FTW - - Fun - - gallery - - html - - image - - Jekyll - - layout - - link - - Love - - markup - - Mothership - - Must Read - - Nailed It - - Pictures - - Post Formats - - quote - - standard - - Success - - Swagger - - Tags - - template - - title - - twitter - - Unseen - - video - - YouTube - - U:R:COOL - - C# ---- - -This post has many tags. \ No newline at end of file diff --git a/test/_posts/2009-07-02-edge-case-many-categories.md b/test/_posts/2009-07-02-edge-case-many-categories.md deleted file mode 100644 index 7ec93b8e8db9..000000000000 --- a/test/_posts/2009-07-02-edge-case-many-categories.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Edge Case: Many Categories" -categories: - - aciform - - antiquarianism - - arrangement - - asmodeus - - broder - - buying - - championship - - chastening - - disinclination - - disinfection - - dispatch - - echappee - - enphagy -tags: - - categories - - edge case ---- - -This post has many categories. \ No newline at end of file diff --git a/test/_posts/2009-08-06-edge-case-no-body-content.md b/test/_posts/2009-08-06-edge-case-no-body-content.md deleted file mode 100644 index 7b2fa7d6d13f..000000000000 --- a/test/_posts/2009-08-06-edge-case-no-body-content.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Edge Case: No Body Content" -categories: - - Edge Case -tags: - - content - - edge case - - layout ---- diff --git a/test/_posts/2009-09-05-edge-case-no-yaml-title.md b/test/_posts/2009-09-05-edge-case-no-yaml-title.md deleted file mode 100644 index 4e5323ff878b..000000000000 --- a/test/_posts/2009-09-05-edge-case-no-yaml-title.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -categories: - - Edge Case -tags: - - edge case - - layout - - title ---- - -This post has no title specified in the YAML Front Matter. Jekyll should auto-generate a title from the filename. \ 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 deleted file mode 100644 index 6acc568a0655..000000000000 --- a/test/_posts/2009-10-05-edge-case-multiline-excerpt.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -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/2009-10-05-edge-case-title-should-not-overflow-the-content-area.md b/test/_posts/2009-10-05-edge-case-title-should-not-overflow-the-content-area.md deleted file mode 100644 index 6fdc1b8a9416..000000000000 --- a/test/_posts/2009-10-05-edge-case-title-should-not-overflow-the-content-area.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Antidisestablishmentarianism" -categories: - - Edge Case -tags: - - content - - css - - edge case - - html - - layout - - title ---- - -## Title should not overflow the content area - -A few things to check for: - - * Non-breaking text in the title, content, and comments should have no adverse effects on layout or functionality. - * Check the browser window / tab title. - * If you are a theme developer, check that this text does not break anything. - -The following CSS properties will help you support non-breaking text. - -```css --ms-word-wrap: break-word; -word-wrap: break-word; -``` \ No newline at end of file diff --git a/test/_posts/2009-10-05-edge-case-very-long-title.md b/test/_posts/2009-10-05-edge-case-very-long-title.md deleted file mode 100644 index 29fcb77c42dc..000000000000 --- a/test/_posts/2009-10-05-edge-case-very-long-title.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Suspicio? Bene ... tunc ibimus? Quis uh ... CONEXUS locus his diebus? Quisque semper aliquid videtur, in volutpat mauris. Nolo enim dicere. Vobis neque ab aliis. Ego feci memetipsum explicans. Gus mortuus est. Lorem opus habeo. Jackson Isai? Tu quoque ... A te quidem a ante. Vos scitis quod blinking res Ive 'been vocans super vos? Et conteram illud, et conteram hoc. Maledicant druggie excors. Iam hoc tu facere conatus sum ad te in omni tempore? Ludum mutavit. Verbum est ex. Et ... sunt occid" -categories: - - Edge Case -tags: - - content - - css - - edge case - - html - - layout - - title ---- - -Check for long titles and how they might break a template. \ No newline at end of file diff --git a/test/_posts/2010-01-07-post-modified.md b/test/_posts/2010-01-07-post-modified.md deleted file mode 100644 index 382b98049ae6..000000000000 --- a/test/_posts/2010-01-07-post-modified.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Post: Modified Date" -last_modified_at: 2016-03-09T16:20:02-05:00 -categories: - - Post Formats -tags: - - Post Formats - - readability - - standard ---- - -This post has been updated and should show a modified date if used in a layout. - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. \ No newline at end of file diff --git a/test/_posts/2010-01-07-post-standard.md b/test/_posts/2010-01-07-post-standard.md deleted file mode 100644 index cd83ea034f8c..000000000000 --- a/test/_posts/2010-01-07-post-standard.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Post: Standard" -excerpt_separator: "" -categories: - - Post Formats -tags: - - Post Formats - - readability - - standard ---- - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. - -Mrs. Darling first heard of Peter when she was tidying up her children's minds. It is the nightly custom of every good mother after her children are asleep to rummage in their minds and put things straight for next morning, repacking into their proper places the many articles that have wandered during the day. - - - -This post has a manual excerpt `` set after the second paragraph. The following YAML Front Matter has also be applied: - -```yaml -excerpt_separator: "" -``` - -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/2010-01-08-post-chat.md b/test/_posts/2010-01-08-post-chat.md deleted file mode 100644 index e61b3f289e00..000000000000 --- a/test/_posts/2010-01-08-post-chat.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Post: Chat" -categories: - - Post Formats -tags: - - chat - - Post Formats ---- - -Abbott: Strange as it may seem, they give ball players nowadays very peculiar names. - -Costello: Funny names? - -Abbott: Nicknames, nicknames. Now, on the St. Louis team we have Who's on first, What's on second, I Don't Know is on third-- - -Costello: That's what I want to find out. I want you to tell me the names of the fellows on the St. Louis team. - -Abbott: I'm telling you. Who's on first, What's on second, I Don't Know is on third-- - -Costello: You know the fellows' names? - -Abbott: Yes. - -Costello: Well, then who's playing first? - -Abbott: Yes. - -Costello: I mean the fellow's name on first base. - -Abbott: Who. - -Costello: The fellow playin' first base. - -Abbott: Who. - -Costello: The guy on first base. - -Abbott: Who is on first. - -Costello: Well, what are you askin' me for? - -Abbott: I'm not asking you--I'm telling you. Who is on first. - -Costello: I'm asking you--who's on first? - -Abbott: That's the man's name. - -Costello: That's who's name? - -Abbott: Yes. - -Costello: When you pay off the first baseman every month, who gets the money? - -Abbott: Every dollar of it. And why not, the man's entitled to it. - -Costello: Who is? - -Abbott: Yes. - -Costello: So who gets it? - -Abbott: Why shouldn't he? Sometimes his wife comes down and collects it. - -Costello: Who's wife? - -Abbott: Yes. After all, the man earns it. - -Costello: Who does? - -Abbott: Absolutely. - -Costello: Well, all I'm trying to find out is what's the guy's name on first base? - -Abbott: Oh, no, no. What is on second base. - -Costello: I'm not asking you who's on second. - -Abbott: Who's on first! - -Costello: St. Louis has a good outfield? - -Abbott: Oh, absolutely. - -Costello: The left fielder's name? - -Abbott: Why. - -Costello: I don't know, I just thought I'd ask. - -Abbott: Well, I just thought I'd tell you. - -Costello: Then tell me who's playing left field? - -Abbott: Who's playing first. - -Costello: Stay out of the infield! The left fielder's name? - -Abbott: Why. - -Costello: Because. - -Abbott: Oh, he's center field. - -Costello: Wait a minute. You got a pitcher on this team? - -Abbott: Wouldn't this be a fine team without a pitcher? - -Costello: Tell me the pitcher's name. - -Abbott: Tomorrow. - -Costello: Now, when the guy at bat bunts the ball--me being a good catcher--I want to throw the guy out at first base, so I pick up the ball and throw it to who? - -Abbott: Now, that's he first thing you've said right. - -Costello: I DON'T EVEN KNOW WHAT I'M TALKING ABOUT! - -Abbott: Don't get excited. Take it easy. - -Costello: I throw the ball to first base, whoever it is grabs the ball, so the guy runs to second. Who picks up the ball and throws it to what. What throws it to I don't know. I don't know throws it back to tomorrow--a triple play. - -Abbott: Yeah, it could be. - -Costello: Another guy gets up and it's a long ball to center. - -Abbott: Because. - -Costello: Why? I don't know. And I don't care. - -Abbott: What was that? - -Costello: I said, I DON'T CARE! - -Abbott: Oh, that's our shortstop! \ 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 deleted file mode 100644 index da63f9a32152..000000000000 --- a/test/_posts/2010-02-05-post-notice.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: "Post: Notice" -categories: - - Post Formats -tags: - - Post Formats - - notice ---- - -A notice displays information that explains nearby content. Often used to call attention to a particular detail. - -When using Kramdown `{: .notice}` can be added after a sentence to assign the `.notice` to the `

    ` element. - -**Changes in Service:** We just updated our [privacy policy](#) here to better service our customers. We recommend reviewing the changes. -{: .notice} - -**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} - -
    -**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 - - Some body. - -``` -
    - -**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} - -**Warning 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--warning} - -**Danger 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--danger} - -**Success 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--success} - -Want to wrap several paragraphs or other elements in a notice? Using Liquid to capture the content and then filter it with `markdownify` is a good way to go. - -```html -{% raw %}{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %}{% endraw %} - -
    {% raw %}{{ notice-2 | markdownify }}{% endraw %}
    -``` - -{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %} - -
    - {{ notice-2 | markdownify }} -
    - -Or you could skip the capture and stick with straight HTML. - -```html -
    -

    Message

    -

    A basic message.

    -
    -``` - -
    -

    Message

    -

    A basic message.

    -
    \ No newline at end of file diff --git a/test/_posts/2010-02-05-post-quote.md b/test/_posts/2010-02-05-post-quote.md deleted file mode 100644 index 231f70bf1f73..000000000000 --- a/test/_posts/2010-02-05-post-quote.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Post: Quote" -categories: - - Post Formats -tags: - - Post Formats - - quote ---- - -> Only one thing is impossible for God: To find any sense in any copyright law on the planet. - -> Mark Twain \ No newline at end of file diff --git a/test/_posts/2010-03-07-post-link.md b/test/_posts/2010-03-07-post-link.md deleted file mode 100644 index 6a8005ef119f..000000000000 --- a/test/_posts/2010-03-07-post-link.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Post: Link" -categories: - - Post Formats -tags: - - link - - Post Formats -link: https://github.com ---- - -This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. - -> And this is how a quote looks. - -Some [link](#) can also be shown. \ No newline at end of file diff --git a/test/_posts/2010-06-02-post-video-youtube.md b/test/_posts/2010-06-02-post-video-youtube.md deleted file mode 100644 index 686f622b9e70..000000000000 --- a/test/_posts/2010-06-02-post-video-youtube.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Post: Video (YouTube)" -categories: - - Post Formats -tags: - - Post Formats ---- - -YouTube video embed below. - - \ No newline at end of file diff --git a/test/_posts/2010-08-05-post-header-image-og-override.md b/test/_posts/2010-08-05-post-header-image-og-override.md deleted file mode 100644 index 7d772873bab0..000000000000 --- a/test/_posts/2010-08-05-post-header-image-og-override.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Post: Header Image with OpenGraph Override" -header: - image: /assets/images/page-header-image.png - og_image: /assets/images/page-header-og-image.png -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2017-10-26T15:12:19-04:00 ---- - -This post has a header image with an OpenGraph override. - -```yaml -header: - image: /assets/images/page-header-image.png - og_image: /assets/images/page-header-og-image.png -``` \ No newline at end of file diff --git a/test/_posts/2010-08-05-post-header-overlay-image-og-override.md b/test/_posts/2010-08-05-post-header-overlay-image-og-override.md deleted file mode 100644 index 01630ace8dcb..000000000000 --- a/test/_posts/2010-08-05-post-header-overlay-image-og-override.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: "Post: Overlay Image with OpenGraph Override" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - og_image: /assets/images/page-header-og-image.png - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "Learn More" - url: "https://unsplash.com" -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2017-10-26T15:12:19-04:00 ---- - -This post has a header image with an OpenGraph override. - -```yaml -header: - overlay_image: /assets/images/unsplash-image-1.jpg - og_image: /assets/images/page-header-og-image.png - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "Learn More" - url: "https://unsplash.com" -``` \ 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 deleted file mode 100644 index a59cd117126e..000000000000 --- a/test/_posts/2010-08-05-post-image-linked.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Post: Image (with Link)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -[![foo](https://live.staticflickr.com/8361/8400335147_5fabaa504c_o.jpg)](https://flic.kr/p/dNiUYB) \ No newline at end of file diff --git a/test/_posts/2010-08-05-post-image-standard.md b/test/_posts/2010-08-05-post-image-standard.md deleted file mode 100644 index 097e235b6214..000000000000 --- a/test/_posts/2010-08-05-post-image-standard.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Post: Image (Standard)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -The preferred way of using images is placing them in the `/assets/images/` directory and referencing them with an absolute path. Prepending the filename with `{% raw %}{{ site.url }}{{ site.baseurl }}/assets/images/{% endraw %}` will make sure your images display properly in feeds and such. - -Standard image with no width modifier classes applied. - -**HTML:** - -```html -{% raw %}{% endraw %} -``` - -**or Kramdown:** - -```markdown -{% raw %}![alt]({{ site.url }}{{ site.baseurl }}/assets/images/filename.jpg){% endraw %} -``` - -![Unsplash image 9]({{ site.url }}{{ site.baseurl }}/assets/images/unsplash-image-9.jpg) - -Image that fills page content container by adding the `.full` class with: - -**HTML:** - -```html -{% raw %}{% endraw %} -``` - -**or Kramdown:** - -```markdown -{% raw %}![alt]({{ site.url }}{{ site.baseurl }}/assets/images/filename.jpg) -{: .full}{% endraw %} -``` - -![Unsplash image 10]({{ site.url }}{{ site.baseurl }}/assets/images/unsplash-image-10.jpg) -{: .full} \ No newline at end of file diff --git a/test/_posts/2010-08-05-post-teaser-image-og-override.md b/test/_posts/2010-08-05-post-teaser-image-og-override.md deleted file mode 100644 index bd7ac0a219f8..000000000000 --- a/test/_posts/2010-08-05-post-teaser-image-og-override.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Post: Teaser Image with OpenGraph Override" -header: - teaser: /assets/images/page-header-teaser.png - og_image: /assets/images/page-header-og-image.png -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2017-10-26T15:12:19-04:00 ---- - -This post has a teaser image with an OpenGraph override. - -```yaml -header: - teaser: /assets/images/page-header-teaser.png - og_image: /assets/images/page-header-og-image.png -``` \ No newline at end of file diff --git a/test/_posts/2010-08-06-post-image-linked-caption.md b/test/_posts/2010-08-06-post-image-linked-caption.md deleted file mode 100644 index f9b09ba135db..000000000000 --- a/test/_posts/2010-08-06-post-image-linked-caption.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Post: Image (Linked with Caption)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -{% capture fig_img %} -[![Foo](https://images.unsplash.com/photo-1541943869728-4bd4f450c8f5?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=800&fit=max&ixid=eyJhcHBfaWQiOjF9)](https://unsplash.com/) -{% endcapture %} - -{% capture fig_caption %} -Stairs? Were we're going we don't need no stairs. -{% endcapture %} - -
    - {{ fig_img | markdownify | remove: "

    " | remove: "

    " }} -
    {{ fig_caption | markdownify | remove: "

    " | remove: "

    " }}
    -
    diff --git a/test/_posts/2010-08-07-post-image-caption.md b/test/_posts/2010-08-07-post-image-caption.md deleted file mode 100644 index d50d4635df9e..000000000000 --- a/test/_posts/2010-08-07-post-image-caption.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Post: Image (Caption)" -categories: - - Post Formats -tags: - - image - - Post Formats ---- - -{% capture fig_img %} -![Foo]({{ '/assets/images/unsplash-gallery-image-3.jpg' | relative_url }}) -{% endcapture %} - -
    - {{ fig_img | markdownify | remove: "

    " | remove: "

    " }} -
    Photo from Unsplash.
    -
    \ No newline at end of file diff --git a/test/_posts/2010-09-09-post-gallery.md b/test/_posts/2010-09-09-post-gallery.md deleted file mode 100644 index 3bdd4ff3f477..000000000000 --- a/test/_posts/2010-09-09-post-gallery.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: "Post: Gallery" -categories: - - Post Formats -tags: - - gallery - - Post Formats - - tiled -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Image 1 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Image 2 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" - title: "Image 3 title caption" - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 4" - title: "Image 4 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 5" - title: "Image 5 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 6" - title: "Image 6 title caption" - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 7" - title: "Image 7 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 8" - title: "Image 8 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 9" - title: "Image 9 title caption" - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 10" - title: "Image 10 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 11" - title: "Image 11 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 12" - title: "Image 12 title caption" -gallery2: - - url: https://flic.kr/p/8a6Ven - image_path: https://farm2.staticflickr.com/1272/4697500467_8294dac099_q.jpg - alt: "Black and grays with a hint of green" - - url: https://flic.kr/p/8a738X - image_path: https://farm5.staticflickr.com/4029/4697523701_249e93ba23_q.jpg - alt: "Made for open text placement" - - url: https://flic.kr/p/8a6VXP - image_path: https://farm5.staticflickr.com/4046/4697502929_72c612c636_q.jpg - alt: "Fog in the trees" -gallery3: - - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - - image_path: /assets/images/unsplash-gallery-image-4-th.jpg - alt: "placeholder image 4" ---- - -These are gallery tests for image wrapped in `
    ` elements. - -To place a gallery add the necessary YAML Front Matter: - -```yaml -gallery: - - url: /assets/images/unsplash-gallery-image-1.jpg - image_path: /assets/images/unsplash-gallery-image-1-th.jpg - alt: "placeholder image 1" - title: "Image 1 title caption" - - url: /assets/images/unsplash-gallery-image-2.jpg - image_path: /assets/images/unsplash-gallery-image-2-th.jpg - alt: "placeholder image 2" - title: "Image 2 title caption" - - url: /assets/images/unsplash-gallery-image-3.jpg - image_path: /assets/images/unsplash-gallery-image-3-th.jpg - alt: "placeholder image 3" - title: "Image 3 title caption" - - url: /assets/images/unsplash-gallery-image-4.jpg - image_path: /assets/images/unsplash-gallery-image-4-th.jpg - alt: "placeholder image 4" - title: "Image 4 title caption" -``` - -And then drop-in the gallery include --- gallery `caption` is optional. - -```liquid -{% raw %}{% include gallery caption="This is a sample gallery with **Markdown support**." %}{% endraw %} -``` - -{% include gallery caption="This is a sample gallery with **Markdown support**." %} - -This is some text after the gallery just to make sure that everything aligns properly. - -Here comes another gallery, this time set the `id` to match 2nd gallery hash in YAML Front Matter. - -```yaml -gallery2: - - url: https://flic.kr/p/8a6Ven - image_path: https://farm2.staticflickr.com/1272/4697500467_8294dac099_q.jpg - alt: "Black and grays with a hint of green" - - url: https://flic.kr/p/8a738X - image_path: https://farm5.staticflickr.com/4029/4697523701_249e93ba23_q.jpg - alt: "Made for open text placement" - - url: https://flic.kr/p/8a6VXP - image_path: https://farm5.staticflickr.com/4046/4697502929_72c612c636_q.jpg - alt: "Fog in the trees" -``` - -And place it like so: - -```liquid -{% raw %}{% include gallery id="gallery2" caption="This is a second gallery example with images hosted externally." %}{% endraw %} -``` - -{% include gallery id="gallery2" caption="This is a second gallery example with images hosted externally." %} - -And for giggles one more gallery just to make sure this works. To fill page content container add `class="full"`. - -{% include gallery id="gallery3" class="full" caption="This is a third gallery example with two images and fills the entire content container." %} - -Gallery column layout can be overrided by setting a `layout`. - -```liquid -{% raw %}{% include gallery id="gallery" layout="half" caption="This is a half gallery layout example." %}{% endraw %} -``` - -{% include gallery id="gallery" layout="half" caption="This is a half gallery layout example." %} \ No newline at end of file diff --git a/test/_posts/2010-09-10-post-twitter-embeds.md b/test/_posts/2010-09-10-post-twitter-embeds.md deleted file mode 100644 index 7c5c4187313c..000000000000 --- a/test/_posts/2010-09-10-post-twitter-embeds.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Post: Twitter Embed" -categories: - - Media -tags: - - content - - embeds - - media - - twitter ---- - - - - -This post tests Twitter Embeds. \ No newline at end of file diff --git a/test/_posts/2010-10-25-post-future-date.md b/test/_posts/2010-10-25-post-future-date.md deleted file mode 100644 index 7d1b203a776d..000000000000 --- a/test/_posts/2010-10-25-post-future-date.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Post: Future Date" -date: 9999-12-31 -categories: - - Post ---- - -This post lives in the future and is dated {{ page.date | date: "%c" }}. When building Jekyll with the `--future` flag it should appear. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-comments-disabled.md b/test/_posts/2012-01-02-layout-comments-disabled.md deleted file mode 100644 index ab69a5275e71..000000000000 --- a/test/_posts/2012-01-02-layout-comments-disabled.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Comments Disabled" -comments: false -categories: - - Layout - - Uncategorized -tags: - - comments - - layout ---- - -This post has its comments disabled. - -There should be no comment form. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-comments.md b/test/_posts/2012-01-02-layout-comments.md deleted file mode 100644 index cf697b80a601..000000000000 --- a/test/_posts/2012-01-02-layout-comments.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Layout: Comments Enabled" -comments: true -categories: - - Layout - - Uncategorized -tags: - - comments - - layout ---- - -This post should display comments. \ 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 deleted file mode 100644 index a10a3e4648eb..000000000000 --- a/test/_posts/2012-01-02-layout-post-date-disabled.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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 deleted file mode 100644 index b31c9a275b5c..000000000000 --- a/test/_posts/2012-01-02-layout-post-date.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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-01-02-layout-read-time-disabled.md b/test/_posts/2012-01-02-layout-read-time-disabled.md deleted file mode 100644 index d88992241384..000000000000 --- a/test/_posts/2012-01-02-layout-read-time-disabled.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Layout: Read Time Disabled" -read_time: false -tags: - - read time ---- - -This post has reading time disabled. The estimated time that it takes to read this post should not be showing if `read_time: 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-read-time.md b/test/_posts/2012-01-02-layout-read-time.md deleted file mode 100644 index a636e0a48b06..000000000000 --- a/test/_posts/2012-01-02-layout-read-time.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Layout: Read Time Enabled" -read_time: true -tags: - - read time ---- - -This post has reading time enabled. The estimated time that it takes to read this post should show if also enabled in `_config.yml` with `read_time: true`. - -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-related-posts-disabled.md b/test/_posts/2012-01-02-layout-related-posts-disabled.md deleted file mode 100644 index 3831e74005e2..000000000000 --- a/test/_posts/2012-01-02-layout-related-posts-disabled.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Related Posts Disabled" -related: false -categories: - - Layout - - Uncategorized -tags: - - related posts - - layout ---- - -This post has related posts disabled. - -Related post links should not appear. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-related-posts.md b/test/_posts/2012-01-02-layout-related-posts.md deleted file mode 100644 index 0293bc6f0c58..000000000000 --- a/test/_posts/2012-01-02-layout-related-posts.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Layout: Related Posts Enabled" -related: true -categories: - - Layout - - Uncategorized -tags: - - related posts - - layout ---- - -This post has related posts enabled. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-sharing-disabled.md b/test/_posts/2012-01-02-layout-sharing-disabled.md deleted file mode 100644 index c69d8bbfbc2f..000000000000 --- a/test/_posts/2012-01-02-layout-sharing-disabled.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Social Sharing Links Disabled" -share: false -categories: - - Layout - - Uncategorized -tags: - - social - - layout ---- - -This post has social sharing disabled. - -Social sharing links should not appear. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-sharing.md b/test/_posts/2012-01-02-layout-sharing.md deleted file mode 100644 index 09808f146166..000000000000 --- a/test/_posts/2012-01-02-layout-sharing.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Layout: Social Sharing Links Enabled" -share: true -categories: - - Layout - - Uncategorized -tags: - - social - - layout ---- - -This post should display social sharing links. \ No newline at end of file diff --git a/test/_posts/2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md b/test/_posts/2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md deleted file mode 100644 index dacb207a7793..000000000000 --- a/test/_posts/2012-01-03-layout-read-time-comments-sharing-related-posts-disabled.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Layout: Reading Time, Comments, Social Sharing Links, and Related Posts Disabled" -read_time: false -comments: false -share: false -related: false -categories: - - Layout - - Uncategorized -tags: - - related posts - - social - - comments - - layout ---- - -This post has reading time, comments, social sharing links, and related posts disabled. - -Reading time, comments, social sharing and related post links should not appear. \ No newline at end of file diff --git a/test/_posts/2012-01-03-layout-table-of-contents-include-post.md b/test/_posts/2012-01-03-layout-table-of-contents-include-post.md deleted file mode 100644 index 622b04da1d69..000000000000 --- a/test/_posts/2012-01-03-layout-table-of-contents-include-post.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: "Layout: Post with Nested Table of Contents via Helper" -tags: - - table of contents ---- - -Tests table of contents with multiple levels to verify indentation is readible via helper include (deprecated). - -``` -{% raw %}{% include toc %}{% endraw %} -``` - -{% include toc %} - -# Enim laboris id ea elit elit deserunt - -Magna incididunt elit id enim nisi quis excepteur reprehenderit Lorem dolore dolore ad enim. Labore esse elit excepteur et elit dolor. Elit ut consectetur labore velit elit esse voluptate id commodo. Magna cillum officia consequat non occaecat mollit esse nisi quis. - -Nostrud veniam excepteur commodo enim pariatur velit est. Dolor consequat elit occaecat enim veniam ullamco qui est anim ex elit. Est minim aute magna laborum reprehenderit magna reprehenderit ullamco voluptate id sit aliqua. Id labore veniam ad duis aliquip commodo qui ex ut ipsum irure. In et sit ea cupidatat consectetur in nisi amet in cupidatat excepteur commodo amet. - -## 2 Sit adipisicing tempor duis velit cupidatat occaecat do amet - -Ad non dolore irure in. In do ut nostrud reprehenderit consequat aliqua sunt culpa voluptate amet minim ea. Eu dolore deserunt consectetur eu in minim sit nulla id id est amet consectetur. Tempor dolore ipsum magna amet velit aliquip ea anim non eu Lorem deserunt. Irure excepteur id adipisicing elit dolor ipsum eiusmod non nulla nisi sint qui et. Occaecat pariatur tempor ex nisi pariatur. - -Proident culpa nostrud id est qui fugiat duis aute. Cillum commodo pariatur nostrud culpa Lorem exercitation non. Consequat elit deserunt dolore voluptate sunt labore minim ut consequat minim. - -Sunt pariatur in ex non nulla proident ex ullamco Lorem do ipsum. Cillum est mollit reprehenderit excepteur labore labore elit dolore adipisicing ad quis quis aliqua sunt. Proident amet est reprehenderit deserunt amet cupidatat incididunt irure est elit. - -### 2.1 Ex et quis exercitation fugiat excepteur eiusmod mollit consequat id pariatur non adipisicing magna tempor - -Nostrud sunt nostrud incididunt adipisicing officia esse minim irure duis dolore adipisicing cupidatat. Eu non labore veniam ad sunt pariatur qui. Irure reprehenderit qui elit duis cillum sit officia consectetur sint deserunt do aute velit. Do id occaecat magna occaecat reprehenderit veniam pariatur Lorem. Officia sit cupidatat adipisicing laborum. - -#### 2.1.1 Ut nostrud reprehenderit proident culpa enim irure cupidatat sunt ex ea minim nostrud - -Laborum laboris et ut proident sit qui pariatur nisi commodo. Deserunt eiusmod eiusmod elit anim exercitation quis. Anim laboris irure minim elit fugiat velit esse officia amet reprehenderit id. Dolor eiusmod incididunt excepteur sint aute qui esse nostrud. Nisi qui adipisicing consectetur enim pariatur sint veniam esse. - -#### 2.1.2 Nisi non nisi ullamco ipsum cillum -Minim officia tempor eiusmod sint magna reprehenderit do amet ex velit. Irure nulla ut veniam eu veniam proident esse pariatur cillum. Esse anim et proident cillum esse magna sint. - -#### 2.1.3 Ut pariatur do do eiusmod consequat do pariatur nisi ex anim reprehenderit nostrud -Reprehenderit consectetur tempor labore dolore ad. Ullamco qui sunt quis deserunt id ipsum sit qui nisi esse deserunt ad exercitation. Dolore qui in mollit ex qui minim et ipsum reprehenderit. Tempor magna ipsum proident voluptate mollit quis consectetur veniam non aliquip cupidatat nisi culpa aute. - -##### 2.1.1.1 Ut aute quis ipsum fugiat dolor -Occaecat excepteur et ea et exercitation ad aute minim incididunt incididunt aute sint officia aliquip. Quis cupidatat nostrud dolor consequat laboris eu ullamco qui esse excepteur aute. Veniam ut ipsum aute Lorem proident minim ea fugiat Lorem cillum. Qui esse id minim consequat ullamco aliqua pariatur ea mollit. Minim ea ipsum laborum consequat esse mollit pariatur. Voluptate sit voluptate non ut consectetur irure laboris ex adipisicing dolore elit aliquip velit. In eu veniam voluptate incididunt aute eu reprehenderit ut id voluptate. - -##### 2.1.1.2 Consequat nostrud quis officia et aliquip quis magna mollit veniam -Magna duis exercitation dolor amet. Ea irure laborum sit officia reprehenderit enim aute magna duis. Elit fugiat ut proident sit. - -###### 2.1.1.1.1 Id cillum proident labore occaecat reprehenderit excepteur fugiat est - -Irure qui veniam incididunt irure consequat mollit consectetur est nostrud deserunt eiusmod nostrud quis. Eiusmod id proident eu aute exercitation irure consectetur sit dolor dolor in esse. Qui eu dolor ea est magna amet laborum qui irure. Reprehenderit excepteur voluptate fugiat exercitation voluptate laboris nostrud qui magna et officia. - -###### 2.1.1.1.2 In consectetur ea qui quis culpa nulla - -Ad quis duis dolore voluptate laborum eiusmod consequat sint. Cupidatat officia ex laborum ad non mollit excepteur ea. Nostrud elit in consequat sunt adipisicing reprehenderit ipsum proident irure. Sint velit laborum sint laboris ea. Veniam occaecat et in Lorem proident minim deserunt labore laborum reprehenderit. Consequat laborum deserunt culpa consectetur. Incididunt reprehenderit amet esse duis dolore pariatur adipisicing quis elit. - -###### 2.1.1.1.3 Culpa magna pariatur magna officia adipisicing ex minim ea do est - -Dolore reprehenderit aute ex id. Ipsum laboris sit quis enim labore ut sint cillum exercitation. Commodo aliqua exercitation enim sunt velit do laborum mollit irure dolor. - -###### 2.1.1.1.4 Veniam ipsum non reprehenderit pariatur - -Laboris amet quis sunt id dolor consectetur Lorem id aliquip laboris fugiat. Non ex magna deserunt veniam eiusmod. Irure culpa culpa dolore pariatur. Elit enim deserunt ut amet adipisicing elit laborum exercitation cupidatat et. Aliqua aliqua laborum exercitation commodo reprehenderit reprehenderit amet laboris ea ea ex amet in. Aute minim voluptate et ipsum culpa consequat. - -##### 2.1.1.3 Ut qui labore officia ad laboris eu amet minim tempor qui cupidatat duis aute - -In in dolore laboris irure est consequat magna ea non aute cupidatat tempor. Officia sit pariatur consequat laborum aliqua nulla anim nisi aliquip reprehenderit consequat. Ad duis labore minim consequat reprehenderit labore ex minim cillum magna incididunt adipisicing dolor. Non velit mollit minim consectetur minim. Cillum elit et amet est reprehenderit non. Elit adipisicing nostrud ea veniam occaecat commodo deserunt. - -##### 2.1.1.4 Magna ipsum nisi velit anim - -Eiusmod tempor dolor proident pariatur consequat sit non nostrud. Eiusmod duis elit esse Lorem dolore et minim elit consectetur eu ullamco. Adipisicing sunt excepteur eu mollit in nostrud. - -###### 2.1.1.4.1 Mollit nulla est tempor fugiat occaecat nostrud - -Exercitation eu labore Lorem culpa id enim ut officia aute proident in est irure. Nostrud adipisicing magna elit tempor ipsum culpa in incididunt consectetur incididunt veniam aute tempor sint. Officia est consectetur sint sint nostrud proident mollit. Dolore duis proident mollit consectetur tempor. - -###### 2.1.1.2.1 Culpa aliquip irure et nostrud esse consequat fugiat dolor - -Ad ut commodo elit amet officia ipsum labore do amet. Eiusmod sint irure magna proident nisi adipisicing mollit excepteur mollit proident culpa duis. Est reprehenderit consequat eiusmod deserunt duis ipsum esse amet incididunt. - -#### 2.1.4 Laboris exercitation nisi tempor dolore - -Elit culpa est eiusmod nostrud occaecat. Labore incididunt nostrud consectetur sint. Ut pariatur laborum incididunt culpa proident incididunt veniam veniam laboris adipisicing mollit. Ullamco magna tempor fugiat veniam in ipsum nisi mollit labore amet et sit quis. In consectetur fugiat Lorem culpa veniam minim. Irure aliqua est mollit consectetur id Lorem velit minim sit velit. Eiusmod magna do dolor est id reprehenderit minim fugiat minim incididunt incididunt laboris velit consequat. - -### 2.2 Officia irure duis et est sunt - -Consequat anim quis non nulla. Eiusmod pariatur sunt non culpa culpa ipsum nulla anim in. Non ad exercitation ut reprehenderit ut dolor laborum tempor ad qui magna fugiat irure. Sint commodo ea sint sunt. Irure qui pariatur tempor veniam reprehenderit amet est. Amet laboris proident Lorem deserunt proident duis esse do sit eu dolor qui duis eu. Mollit laboris nisi aute nulla consectetur exercitation nulla aliqua anim. - -## 3 Laborum eu magna proident proident tempor - -Occaecat aliqua id voluptate mollit aliquip. Elit excepteur magna esse commodo pariatur reprehenderit in in quis. Id dolore proident proident mollit tempor duis magna ullamco nulla velit consequat. In ut est aliquip in commodo ullamco sit sint. - -### 3.1 Amet enim do laboris ipsum aliqua eiusmod non eu - -Laborum magna deserunt do anim quis proident adipisicing. Dolore qui ex minim reprehenderit. Consectetur in cillum ad dolore ut id deserunt irure aute sint magna dolore adipisicing. - -### 3.2 Do exercitation ex elit incididunt sit cupidatat - -Excepteur aliqua nisi ullamco sunt fugiat laborum elit aliquip officia culpa. Est exercitation enim laborum amet exercitation. Eu quis qui eiusmod incididunt id do aliquip nostrud do esse enim excepteur enim pariatur. Aute adipisicing velit non culpa quis exercitation. Quis cupidatat anim occaecat Lorem ad mollit aute eiusmod quis dolor duis. Proident anim et nostrud ut aliquip irure adipisicing reprehenderit proident dolore magna. Consequat eu fugiat esse proident duis eu proident fugiat laboris ea veniam nisi reprehenderit. - -### 3.3 Officia aliquip fugiat ex pariatur nisi et nostrud adipisicing eu minim laboris eiusmod ea sunt - -Consectetur irure elit nulla elit non officia. Culpa Lorem minim dolor laboris enim labore do minim laborum. Fugiat deserunt nisi ut do incididunt incididunt ea anim exercitation sit duis. Irure esse pariatur labore enim labore qui anim culpa laborum velit consequat. Culpa in adipisicing excepteur est ipsum. In reprehenderit eiusmod ad ad non. - -### 3.4 Ipsum velit laborum est nostrud qui enim ullamco velit dolor Lorem magna - -Nulla magna dolor minim commodo. Sunt nulla cupidatat consequat eiusmod elit irure eiusmod excepteur. Sit incididunt irure minim magna. Tempor ipsum exercitation minim sunt labore dolor ullamco veniam enim nisi veniam adipisicing occaecat proident. - -### 3.5 Officia fugiat fugiat voluptate ullamco eiusmod duis minim aliqua consequat consectetur qui do sunt fugiat - -Non aute culpa irure qui aute adipisicing aute id commodo id. Laborum ullamco laboris velit in quis duis ut consequat do minim. In minim amet ut reprehenderit et voluptate. In quis Lorem occaecat nostrud excepteur nostrud dolore in nulla ad Lorem nisi. Dolor exercitation Lorem qui sint aute ipsum officia eiusmod aliquip Lorem sit. Reprehenderit ex veniam excepteur laboris magna dolore fugiat sit exercitation esse et consequat in sit. Incididunt pariatur ad esse anim aute do id eu. - -#### 3.5.1 Mollit laborum ea aliquip mollit quis commodo fugiat tempor deserunt exercitation sint culpa ipsum tempor - -Est cillum laborum cupidatat ullamco cupidatat magna laborum enim duis consequat est eu. Magna cillum Lorem proident non ut officia. Esse irure et laboris eu occaecat aute. - -##### 3.5.1.1 Nisi anim commodo consequat quis amet - -Sunt eu dolor enim enim consectetur et anim irure dolor velit cillum. Esse reprehenderit cillum incididunt adipisicing amet nostrud adipisicing. Minim mollit nostrud ipsum ea ut sit ex elit. Do esse ad et ipsum nisi sint anim culpa excepteur ipsum. Commodo nisi irure qui reprehenderit incididunt. - -###### 3.5.1.1.1 Culpa nulla Lorem adipisicing ut sit cupidatat laborum laborum cupidatat proident - -Dolore dolor sit sunt anim eu amet consectetur quis ea proident ex aliqua. Sunt laborum consectetur consectetur enim velit eiusmod labore commodo commodo laboris deserunt. Eiusmod enim do amet laborum commodo qui. - -### 3.6 Reprehenderit culpa consectetur veniam minim cillum in nostrud - -Lorem dolore sit aliqua tempor do voluptate ut esse. Minim velit ad velit commodo minim laborum. Qui qui reprehenderit non proident ullamco veniam aliquip. - -## 4 Laboris aute consequat id eu et Lorem amet - -Ad qui voluptate dolor veniam. Veniam mollit aute eiusmod eu labore incididunt sint proident. Non minim consequat anim sint. Aliquip non nisi nostrud proident. Eiusmod ut duis commodo sunt laboris irure eu. Laboris quis amet ad qui officia. - -## 5 Esse eu consequat consequat aliqua fugiat nulla ad labore consectetur eu pariatur nisi aute - -Duis proident ullamco fugiat aliqua sunt anim ea do irure est amet quis nulla cillum. Commodo voluptate dolor culpa sint aliquip voluptate exercitation anim cillum ad eu in amet. Sint fugiat qui commodo quis ex eu commodo officia aliquip irure. Non dolore elit excepteur id laboris irure consequat magna consectetur. Qui proident deserunt culpa tempor sit aute velit proident cillum ea. - -## 6 Aliquip sunt laborum excepteur cupidatat officia ad tempor veniam esse amet ea commodo sunt - -Ex minim pariatur est nisi exercitation exercitation reprehenderit id aliqua deserunt est. Laborum ullamco do ipsum minim ipsum aliquip voluptate voluptate aliqua. Magna proident velit veniam et minim commodo officia officia mollit nisi. Excepteur occaecat deserunt irure adipisicing minim adipisicing cupidatat non anim exercitation ex. Amet quis sunt sint veniam non id nisi ipsum mollit voluptate quis tempor tempor. diff --git a/test/_posts/2012-01-03-layout-table-of-contents-indent-post.md b/test/_posts/2012-01-03-layout-table-of-contents-indent-post.md deleted file mode 100644 index e36f8104ccd4..000000000000 --- a/test/_posts/2012-01-03-layout-table-of-contents-indent-post.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Layout: Post with Nested Table of Contents" -tags: - - table of contents -toc: true ---- - -Tests table of contents with multiple levels to verify indentation is readible. - -# Enim laboris id ea elit elit deserunt - -Magna incididunt elit id enim nisi quis excepteur reprehenderit Lorem dolore dolore ad enim. Labore esse elit excepteur et elit dolor. Elit ut consectetur labore velit elit esse voluptate id commodo. Magna cillum officia consequat non occaecat mollit esse nisi quis. - -Nostrud veniam excepteur commodo enim pariatur velit est. Dolor consequat elit occaecat enim veniam ullamco qui est anim ex elit. Est minim aute magna laborum reprehenderit magna reprehenderit ullamco voluptate id sit aliqua. Id labore veniam ad duis aliquip commodo qui ex ut ipsum irure. In et sit ea cupidatat consectetur in nisi amet in cupidatat excepteur commodo amet. - -## 2 Sit adipisicing tempor duis velit cupidatat occaecat do amet - -Ad non dolore irure in. In do ut nostrud reprehenderit consequat aliqua sunt culpa voluptate amet minim ea. Eu dolore deserunt consectetur eu in minim sit nulla id id est amet consectetur. Tempor dolore ipsum magna amet velit aliquip ea anim non eu Lorem deserunt. Irure excepteur id adipisicing elit dolor ipsum eiusmod non nulla nisi sint qui et. Occaecat pariatur tempor ex nisi pariatur. - -Proident culpa nostrud id est qui fugiat duis aute. Cillum commodo pariatur nostrud culpa Lorem exercitation non. Consequat elit deserunt dolore voluptate sunt labore minim ut consequat minim. - -Sunt pariatur in ex non nulla proident ex ullamco Lorem do ipsum. Cillum est mollit reprehenderit excepteur labore labore elit dolore adipisicing ad quis quis aliqua sunt. Proident amet est reprehenderit deserunt amet cupidatat incididunt irure est elit. - -### 2.1 Ex et quis exercitation fugiat excepteur eiusmod mollit consequat id pariatur non adipisicing magna tempor - -Nostrud sunt nostrud incididunt adipisicing officia esse minim irure duis dolore adipisicing cupidatat. Eu non labore veniam ad sunt pariatur qui. Irure reprehenderit qui elit duis cillum sit officia consectetur sint deserunt do aute velit. Do id occaecat magna occaecat reprehenderit veniam pariatur Lorem. Officia sit cupidatat adipisicing laborum. - -#### 2.1.1 Ut nostrud reprehenderit proident culpa enim irure cupidatat sunt ex ea minim nostrud - -Laborum laboris et ut proident sit qui pariatur nisi commodo. Deserunt eiusmod eiusmod elit anim exercitation quis. Anim laboris irure minim elit fugiat velit esse officia amet reprehenderit id. Dolor eiusmod incididunt excepteur sint aute qui esse nostrud. Nisi qui adipisicing consectetur enim pariatur sint veniam esse. - -#### 2.1.2 Nisi non nisi ullamco ipsum cillum -Minim officia tempor eiusmod sint magna reprehenderit do amet ex velit. Irure nulla ut veniam eu veniam proident esse pariatur cillum. Esse anim et proident cillum esse magna sint. - -#### 2.1.3 Ut pariatur do do eiusmod consequat do pariatur nisi ex anim reprehenderit nostrud -Reprehenderit consectetur tempor labore dolore ad. Ullamco qui sunt quis deserunt id ipsum sit qui nisi esse deserunt ad exercitation. Dolore qui in mollit ex qui minim et ipsum reprehenderit. Tempor magna ipsum proident voluptate mollit quis consectetur veniam non aliquip cupidatat nisi culpa aute. - -##### 2.1.1.1 Ut aute quis ipsum fugiat dolor -Occaecat excepteur et ea et exercitation ad aute minim incididunt incididunt aute sint officia aliquip. Quis cupidatat nostrud dolor consequat laboris eu ullamco qui esse excepteur aute. Veniam ut ipsum aute Lorem proident minim ea fugiat Lorem cillum. Qui esse id minim consequat ullamco aliqua pariatur ea mollit. Minim ea ipsum laborum consequat esse mollit pariatur. Voluptate sit voluptate non ut consectetur irure laboris ex adipisicing dolore elit aliquip velit. In eu veniam voluptate incididunt aute eu reprehenderit ut id voluptate. - -##### 2.1.1.2 Consequat nostrud quis officia et aliquip quis magna mollit veniam -Magna duis exercitation dolor amet. Ea irure laborum sit officia reprehenderit enim aute magna duis. Elit fugiat ut proident sit. - -###### 2.1.1.1.1 Id cillum proident labore occaecat reprehenderit excepteur fugiat est - -Irure qui veniam incididunt irure consequat mollit consectetur est nostrud deserunt eiusmod nostrud quis. Eiusmod id proident eu aute exercitation irure consectetur sit dolor dolor in esse. Qui eu dolor ea est magna amet laborum qui irure. Reprehenderit excepteur voluptate fugiat exercitation voluptate laboris nostrud qui magna et officia. - -###### 2.1.1.1.2 In consectetur ea qui quis culpa nulla - -Ad quis duis dolore voluptate laborum eiusmod consequat sint. Cupidatat officia ex laborum ad non mollit excepteur ea. Nostrud elit in consequat sunt adipisicing reprehenderit ipsum proident irure. Sint velit laborum sint laboris ea. Veniam occaecat et in Lorem proident minim deserunt labore laborum reprehenderit. Consequat laborum deserunt culpa consectetur. Incididunt reprehenderit amet esse duis dolore pariatur adipisicing quis elit. - -###### 2.1.1.1.3 Culpa magna pariatur magna officia adipisicing ex minim ea do est - -Dolore reprehenderit aute ex id. Ipsum laboris sit quis enim labore ut sint cillum exercitation. Commodo aliqua exercitation enim sunt velit do laborum mollit irure dolor. - -###### 2.1.1.1.4 Veniam ipsum non reprehenderit pariatur - -Laboris amet quis sunt id dolor consectetur Lorem id aliquip laboris fugiat. Non ex magna deserunt veniam eiusmod. Irure culpa culpa dolore pariatur. Elit enim deserunt ut amet adipisicing elit laborum exercitation cupidatat et. Aliqua aliqua laborum exercitation commodo reprehenderit reprehenderit amet laboris ea ea ex amet in. Aute minim voluptate et ipsum culpa consequat. - -##### 2.1.1.3 Ut qui labore officia ad laboris eu amet minim tempor qui cupidatat duis aute - -In in dolore laboris irure est consequat magna ea non aute cupidatat tempor. Officia sit pariatur consequat laborum aliqua nulla anim nisi aliquip reprehenderit consequat. Ad duis labore minim consequat reprehenderit labore ex minim cillum magna incididunt adipisicing dolor. Non velit mollit minim consectetur minim. Cillum elit et amet est reprehenderit non. Elit adipisicing nostrud ea veniam occaecat commodo deserunt. - -##### 2.1.1.4 Magna ipsum nisi velit anim - -Eiusmod tempor dolor proident pariatur consequat sit non nostrud. Eiusmod duis elit esse Lorem dolore et minim elit consectetur eu ullamco. Adipisicing sunt excepteur eu mollit in nostrud. - -###### 2.1.1.4.1 Mollit nulla est tempor fugiat occaecat nostrud - -Exercitation eu labore Lorem culpa id enim ut officia aute proident in est irure. Nostrud adipisicing magna elit tempor ipsum culpa in incididunt consectetur incididunt veniam aute tempor sint. Officia est consectetur sint sint nostrud proident mollit. Dolore duis proident mollit consectetur tempor. - -###### 2.1.1.2.1 Culpa aliquip irure et nostrud esse consequat fugiat dolor - -Ad ut commodo elit amet officia ipsum labore do amet. Eiusmod sint irure magna proident nisi adipisicing mollit excepteur mollit proident culpa duis. Est reprehenderit consequat eiusmod deserunt duis ipsum esse amet incididunt. - -#### 2.1.4 Laboris exercitation nisi tempor dolore - -Elit culpa est eiusmod nostrud occaecat. Labore incididunt nostrud consectetur sint. Ut pariatur laborum incididunt culpa proident incididunt veniam veniam laboris adipisicing mollit. Ullamco magna tempor fugiat veniam in ipsum nisi mollit labore amet et sit quis. In consectetur fugiat Lorem culpa veniam minim. Irure aliqua est mollit consectetur id Lorem velit minim sit velit. Eiusmod magna do dolor est id reprehenderit minim fugiat minim incididunt incididunt laboris velit consequat. - -### 2.2 Officia irure duis et est sunt - -Consequat anim quis non nulla. Eiusmod pariatur sunt non culpa culpa ipsum nulla anim in. Non ad exercitation ut reprehenderit ut dolor laborum tempor ad qui magna fugiat irure. Sint commodo ea sint sunt. Irure qui pariatur tempor veniam reprehenderit amet est. Amet laboris proident Lorem deserunt proident duis esse do sit eu dolor qui duis eu. Mollit laboris nisi aute nulla consectetur exercitation nulla aliqua anim. - -## 3 Laborum eu magna proident proident tempor - -Occaecat aliqua id voluptate mollit aliquip. Elit excepteur magna esse commodo pariatur reprehenderit in in quis. Id dolore proident proident mollit tempor duis magna ullamco nulla velit consequat. In ut est aliquip in commodo ullamco sit sint. - -### 3.1 Amet enim do laboris ipsum aliqua eiusmod non eu - -Laborum magna deserunt do anim quis proident adipisicing. Dolore qui ex minim reprehenderit. Consectetur in cillum ad dolore ut id deserunt irure aute sint magna dolore adipisicing. - -### 3.2 Do exercitation ex elit incididunt sit cupidatat - -Excepteur aliqua nisi ullamco sunt fugiat laborum elit aliquip officia culpa. Est exercitation enim laborum amet exercitation. Eu quis qui eiusmod incididunt id do aliquip nostrud do esse enim excepteur enim pariatur. Aute adipisicing velit non culpa quis exercitation. Quis cupidatat anim occaecat Lorem ad mollit aute eiusmod quis dolor duis. Proident anim et nostrud ut aliquip irure adipisicing reprehenderit proident dolore magna. Consequat eu fugiat esse proident duis eu proident fugiat laboris ea veniam nisi reprehenderit. - -### 3.3 Officia aliquip fugiat ex pariatur nisi et nostrud adipisicing eu minim laboris eiusmod ea sunt - -Consectetur irure elit nulla elit non officia. Culpa Lorem minim dolor laboris enim labore do minim laborum. Fugiat deserunt nisi ut do incididunt incididunt ea anim exercitation sit duis. Irure esse pariatur labore enim labore qui anim culpa laborum velit consequat. Culpa in adipisicing excepteur est ipsum. In reprehenderit eiusmod ad ad non. - -### 3.4 Ipsum velit laborum est nostrud qui enim ullamco velit dolor Lorem magna - -Nulla magna dolor minim commodo. Sunt nulla cupidatat consequat eiusmod elit irure eiusmod excepteur. Sit incididunt irure minim magna. Tempor ipsum exercitation minim sunt labore dolor ullamco veniam enim nisi veniam adipisicing occaecat proident. - -### 3.5 Officia fugiat fugiat voluptate ullamco eiusmod duis minim aliqua consequat consectetur qui do sunt fugiat - -Non aute culpa irure qui aute adipisicing aute id commodo id. Laborum ullamco laboris velit in quis duis ut consequat do minim. In minim amet ut reprehenderit et voluptate. In quis Lorem occaecat nostrud excepteur nostrud dolore in nulla ad Lorem nisi. Dolor exercitation Lorem qui sint aute ipsum officia eiusmod aliquip Lorem sit. Reprehenderit ex veniam excepteur laboris magna dolore fugiat sit exercitation esse et consequat in sit. Incididunt pariatur ad esse anim aute do id eu. - -#### 3.5.1 Mollit laborum ea aliquip mollit quis commodo fugiat tempor deserunt exercitation sint culpa ipsum tempor - -Est cillum laborum cupidatat ullamco cupidatat magna laborum enim duis consequat est eu. Magna cillum Lorem proident non ut officia. Esse irure et laboris eu occaecat aute. - -##### 3.5.1.1 Nisi anim commodo consequat quis amet - -Sunt eu dolor enim enim consectetur et anim irure dolor velit cillum. Esse reprehenderit cillum incididunt adipisicing amet nostrud adipisicing. Minim mollit nostrud ipsum ea ut sit ex elit. Do esse ad et ipsum nisi sint anim culpa excepteur ipsum. Commodo nisi irure qui reprehenderit incididunt. - -###### 3.5.1.1.1 Culpa nulla Lorem adipisicing ut sit cupidatat laborum laborum cupidatat proident - -Dolore dolor sit sunt anim eu amet consectetur quis ea proident ex aliqua. Sunt laborum consectetur consectetur enim velit eiusmod labore commodo commodo laboris deserunt. Eiusmod enim do amet laborum commodo qui. - -### 3.6 Reprehenderit culpa consectetur veniam minim cillum in nostrud - -Lorem dolore sit aliqua tempor do voluptate ut esse. Minim velit ad velit commodo minim laborum. Qui qui reprehenderit non proident ullamco veniam aliquip. - -## 4 Laboris aute consequat id eu et Lorem amet - -Ad qui voluptate dolor veniam. Veniam mollit aute eiusmod eu labore incididunt sint proident. Non minim consequat anim sint. Aliquip non nisi nostrud proident. Eiusmod ut duis commodo sunt laboris irure eu. Laboris quis amet ad qui officia. - -## 5 Esse eu consequat consequat aliqua fugiat nulla ad labore consectetur eu pariatur nisi aute - -Duis proident ullamco fugiat aliqua sunt anim ea do irure est amet quis nulla cillum. Commodo voluptate dolor culpa sint aliquip voluptate exercitation anim cillum ad eu in amet. Sint fugiat qui commodo quis ex eu commodo officia aliquip irure. Non dolore elit excepteur id laboris irure consequat magna consectetur. Qui proident deserunt culpa tempor sit aute velit proident cillum ea. - -## 6 Aliquip sunt laborum excepteur cupidatat officia ad tempor veniam esse amet ea commodo sunt - -Ex minim pariatur est nisi exercitation exercitation reprehenderit id aliqua deserunt est. Laborum ullamco do ipsum minim ipsum aliquip voluptate voluptate aliqua. Magna proident velit veniam et minim commodo officia officia mollit nisi. Excepteur occaecat deserunt irure adipisicing minim adipisicing cupidatat non anim exercitation ex. Amet quis sunt sint veniam non id nisi ipsum mollit voluptate quis tempor tempor. diff --git a/test/_posts/2012-01-03-layout-table-of-contents-post.md b/test/_posts/2012-01-03-layout-table-of-contents-post.md deleted file mode 100644 index 01c14a2cf451..000000000000 --- a/test/_posts/2012-01-03-layout-table-of-contents-post.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: "Layout: Post with Table of Contents" -header: - image: assets/images/unsplash-image-9.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -tags: - - table of contents -toc: true -toc_label: "Unique Title" -toc_icon: "heart" ---- - -Enable table of contents on post or page by adding `toc: true` to its YAML Front Matter. The title and icon can also be changed with: - -```yaml ---- -toc: true -toc_label: "Unique Title" -toc_icon: "heart" # corresponding Font Awesome icon name (without fa prefix) ---- -``` - -## HTML Elements - -Below is just about everything you'll need to style in the theme. Check the source code to see the many embedded elements within paragraphs. - -## Body text - -Lorem ipsum dolor sit amet, test link adipiscing elit. **This is strong**. Nullam dignissim convallis est. Quisque aliquam. - -![Smithsonian Image]({{ site.url }}{{ site.baseurl }}/assets/images/3953273590_704e3899d5_m.jpg) -{: .image-right} - -*This is emphasized*. Donec faucibus. Nunc iaculis suscipit dui. 53 = 125. Water is H2O. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. The New York Times (That’s a citation). Underline.Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. - -HTML and CSS are our tools. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. - -### Blockquotes - -> Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. - -## List Types - -### Ordered Lists - -1. Item one - 1. sub item one - 2. sub item two - 3. sub item three -2. Item two - -### Unordered Lists - -* Item one -* Item two -* Item three - -## Tables - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|---- -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|===== -| Foot1 | Foot2 | Foot3 -{: rules="groups"} - -## Code Snippets - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - - - - - - - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} \ No newline at end of file diff --git a/test/_posts/2012-01-03-layout-table-of-contents-sticky.md b/test/_posts/2012-01-03-layout-table-of-contents-sticky.md deleted file mode 100644 index a8eae408204d..000000000000 --- a/test/_posts/2012-01-03-layout-table-of-contents-sticky.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "Layout: Post with Sticky Table of Contents" -tags: - - table of contents -toc: true -toc_sticky: true ---- - -"Stick" table of contents to the top of a page by adding `toc_sticky: true` to its YAML Front Matter. - -```yaml ---- -toc: true -toc_sticky: true ---- -``` - -## HTML Elements - -Below is just about everything you'll need to style in the theme. Check the source code to see the many embedded elements within paragraphs. - -## Body text - -Lorem ipsum dolor sit amet, test link adipiscing elit. **This is strong**. Nullam dignissim convallis est. Quisque aliquam. - -![Smithsonian Image]({{ site.url }}{{ site.baseurl }}/assets/images/3953273590_704e3899d5_m.jpg) -{: .image-right} - -*This is emphasized*. Donec faucibus. Nunc iaculis suscipit dui. 53 = 125. Water is H2O. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. The New York Times (That’s a citation). Underline.Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. - -HTML and CSS are our tools. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. - -### Blockquotes - -> Lorem ipsum dolor sit amet, test link adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. - -## List Types - -### Ordered Lists - -1. Item one - 1. sub item one - 2. sub item two - 3. sub item three -2. Item two - -### Unordered Lists - -* Item one -* Item two -* Item three - -## Tables - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|---- -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|===== -| Foot1 | Foot2 | Foot3 -{: rules="groups"} - -## Code Snippets - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - - - - - - - -## Notices - -**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph. -{: .notice} \ No newline at end of file diff --git a/test/_posts/2012-03-14-layout-code-excerpt-generated.md b/test/_posts/2012-03-14-layout-code-excerpt-generated.md deleted file mode 100644 index 0bdc595e2283..000000000000 --- a/test/_posts/2012-03-14-layout-code-excerpt-generated.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Layout: Code Excerpt (Generated)" -categories: - - Layout - - Uncategorized -tags: - - content - - excerpt - - layout ---- - -This is the post content with inline code, (e.g. `red`. It should be displayed in place of the auto-generated excerpt in single-page views. Archive-index pages should display an auto-generated excerpt of this content. - -Be sure to test the formatting of the auto-generated excerpt, to ensure that it doesn't create any layout problems. \ No newline at end of file diff --git a/test/_posts/2012-03-14-layout-excerpt-defined.md b/test/_posts/2012-03-14-layout-excerpt-defined.md deleted file mode 100644 index 7091cf8f7907..000000000000 --- a/test/_posts/2012-03-14-layout-excerpt-defined.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Layout: Excerpt (Defined)" -excerpt: "This is a user-defined post excerpt. It should be displayed in place of the post content in archive-index pages." -categories: - - Layout - - Uncategorized -tags: - - content - - excerpt - - layout ---- - -This is the post content. It should be displayed in place of the user-defined excerpt in archive-index pages. - -This paragraph should be absent from an archive-index page where `post.excerpt` is shown. \ No newline at end of file diff --git a/test/_posts/2012-03-14-layout-excerpt-generated.md b/test/_posts/2012-03-14-layout-excerpt-generated.md deleted file mode 100644 index 5f26140e78d0..000000000000 --- a/test/_posts/2012-03-14-layout-excerpt-generated.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Layout: Excerpt (Generated)" -excerpt_separator: "" -categories: - - Layout - - Uncategorized -tags: - - content - - excerpt - - layout ---- - -This is the post content. Archive-index pages should display an auto-generated excerpt of this content. - - - -Be sure to test the formatting of the auto-generated excerpt, to ensure that it doesn't create any layout problems. \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-author-override.md b/test/_posts/2012-03-15-layout-author-override.md deleted file mode 100644 index 280a7bdfb47b..000000000000 --- a/test/_posts/2012-03-15-layout-author-override.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Layout: Author Override" -author: Billy Rick -excerpt: "A post to test author overrides using a data file." ---- - -Sites that may have content authored from various individuals can be accommodated by using [data files](https://jekyllrb.com/docs/datafiles/). - -To attribute an author to a post or page that is different from the site author specified in `_config.yml`: - -**Step 1.** Create `_data/authors.yml` and add authors using the following format. Anything variables found under `author` in `_config.yml` can be used (e.g. `name`, `bio`, `avatar`, author `links`, etc.). - -```yaml -# /_data/authors.yml - -Billy Rick: - name : "Billy Rick" - bio : "What do you want, jewels? I am a very extravagant man." - avatar : "/assets/images/bio-photo-2.jpg" - links: - - label: "Email" - icon: "fas fa-fw fa-envelope-square" - url: "mailto:billyrick@rick.com" - - label: "Website" - icon: "fas fa-fw fa-link" - url: "https://thewhip.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/extravagantman" - -Cornelius Fiddlebone: - name : "Cornelius Fiddlebone" - bio : "I ordered what?" - avatar : "/assets/images/bio-photo.jpg" - links: - - label: "Email" - icon: "fas fa-fw fa-envelope-square" - url: "mailto:cornelius@thewhip.com" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/rhymeswithsackit" -``` - -**Step 2.** Assign one of the authors in `authors.yml` to a post or page you wish to override the `site.author` with. - -Example: To assign `Billy Rick` as an author for a post the following YAML Front Matter would be applied: - -```yaml -author: Billy Rick -``` \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-author-sidebar-disabled.md b/test/_posts/2012-03-15-layout-author-sidebar-disabled.md deleted file mode 100644 index a4d0dc19083f..000000000000 --- a/test/_posts/2012-03-15-layout-author-sidebar-disabled.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Layout: Author Sidebar Disabled" -excerpt: "A post to test disabling author sidebar." -author_profile: false ---- - -This post has the author sidebar disabled. - -To disable add `author_profile: false` to YAML Front Matter. \ 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 deleted file mode 100644 index 1795bdcd13fa..000000000000 --- a/test/_posts/2012-03-15-layout-header-image-external.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Layout: Header Image (External URL)" -header: - image: https://live.staticflickr.com/8084/8396909762_813a2b1829_h.jpg -categories: - - Layout - - Uncategorized -tags: - - edge case - - featured image - - image - - layout ---- - -This post should display a **header image**, if the theme supports it. - -Featured image is an external asset and should load. \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-header-image-horizontal.md b/test/_posts/2012-03-15-layout-header-image-horizontal.md deleted file mode 100644 index 5a177aa7711d..000000000000 --- a/test/_posts/2012-03-15-layout-header-image-horizontal.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Layout: Header Image (Horizontal)" -header: - image: /assets/images/unsplash-image-1.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -categories: - - Layout - - Uncategorized -tags: - - edge case - - featured image - - image - - layout ---- - -This post should display a **header image**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests a horizontal header image. \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-header-image-text-readability.md b/test/_posts/2012-03-15-layout-header-image-text-readability.md deleted file mode 100644 index 56df3473b561..000000000000 --- a/test/_posts/2012-03-15-layout-header-image-text-readability.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Layout: Header Image and Text Readability" -header: - image: /assets/images/unsplash-image-4.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -tags: - - sample post - - readability - - test ---- - -This is a sample post with a large feature image[^1] up top and tons of text. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. *Ea fashion axe [Marfa cillum aliquip](#). Retro Bushwick keytar cliche.* Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. **[Terry Richardson](#) shabby chic +1**, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - - * Sartorial hoodie - * Labore viral forage - * Tote bag selvage - * DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. - -[^1]: Texture image courtesty of [Lovetextures](http://www.lovetextures.com/) diff --git a/test/_posts/2012-03-15-layout-header-image-vertical.md b/test/_posts/2012-03-15-layout-header-image-vertical.md deleted file mode 100644 index 97154fe0a0b2..000000000000 --- a/test/_posts/2012-03-15-layout-header-image-vertical.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Layout: Header Image (Vertical)" -header: - image: /assets/images/unsplash-image-6.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" -categories: - - Layout - - Uncategorized -tags: - - edge case - - featured image - - image - - layout ---- - -This post should display a **header image**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests a vertical header image. \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-header-overlay-color.md b/test/_posts/2012-03-15-layout-header-overlay-color.md deleted file mode 100644 index 69a85219c8cb..000000000000 --- a/test/_posts/2012-03-15-layout-header-overlay-color.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Layout: Header Overlay with Background Fill" -header: - overlay_color: "#333" -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout ---- - -This post should display a **header with a solid background color**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests overlay headers. \ No newline at end of file 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 deleted file mode 100644 index 32588bde9b53..000000000000 --- a/test/_posts/2012-03-15-layout-header-overlay-image-tagline.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -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/2012-03-15-layout-header-overlay-image.md b/test/_posts/2012-03-15-layout-header-overlay-image.md deleted file mode 100644 index 4973a041ba92..000000000000 --- a/test/_posts/2012-03-15-layout-header-overlay-image.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Layout: Header Image Overlay" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "Call to action 1" - url: "https://github.com" - - label: "Call to action 2" - url: "https://mademistakes.com" -categories: - - Layout - - Uncategorized -tags: - - edge case - - image - - layout -last_modified_at: 2016-05-02T11:39:01-04:00 ---- - -This post should display a **header with an overlay image**, if the theme supports it. - -Non-square images can provide some unique styling issues. - -This post tests overlay header images. - -## Overlay filter - -You can use it by specifying the opacity (between 0 and 1) of a black overlay like so: - -![transparent black overlay]({{ '/assets/images/mm-header-overlay-black-filter.jpg' | relative_url }}) - -```yaml -excerpt: "This post should [...]" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - overlay_filter: 0.5 # same as adding an opacity of 0.5 to a black background - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "More Info" - url: "https://unsplash.com" -``` - -Or if you want to do more fancy things, go full rgba: - -![transparent red overlay]({{ '/assets/images/mm-header-overlay-red-filter.jpg' | relative_url }}) - -```yaml -excerpt: "This post should [...]" -header: - overlay_image: /assets/images/unsplash-image-1.jpg - overlay_filter: rgba(255, 0, 0, 0.5) - caption: "Photo credit: [**Unsplash**](https://unsplash.com)" - actions: - - label: "More Info" - url: "https://unsplash.com" -``` \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-more-tag.md b/test/_posts/2012-03-15-layout-more-tag.md deleted file mode 100644 index c6cdc44fb7c1..000000000000 --- a/test/_posts/2012-03-15-layout-more-tag.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: "Layout: More Tag" -excerpt_separator: -categories: - - Layout - - Uncategorized -tags: - - content - - read more - - layout ---- - -This content is before the [excerpt separator tag](http://jekyllrb.com/docs/posts/#post-excerpts). - -Additional content before the more tag. - - - -And this content is after the more tag. \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-sidebar-custom.md b/test/_posts/2012-03-15-layout-sidebar-custom.md deleted file mode 100644 index c594ae4807af..000000000000 --- a/test/_posts/2012-03-15-layout-sidebar-custom.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Layout: Sidebar Custom" -excerpt: "A post with custom sidebar content." -author_profile: false -sidebar: - - title: "Title" - image: http://placehold.it/350x250 - image_alt: "image" - text: "Some text here." - nav: sidebar-sample - - title: Another sidebar nav - nav: sidebar-sample ---- - -This post has a custom sidebar set in the post's YAML Front Matter. - -An example of how that YAML could look is: - -```yaml -sidebar: - - title: "Title" - image: http://placehold.it/350x250 - image_alt: "image" - text: "Some text here." - - title: "Another Title" - text: "More text here." -``` \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-sidebar-nav-list.md b/test/_posts/2012-03-15-layout-sidebar-nav-list.md deleted file mode 100644 index 984ff7961156..000000000000 --- a/test/_posts/2012-03-15-layout-sidebar-nav-list.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Layout: Sidebar with Navigation List" -excerpt: "A post with a sidebar navigation list." -author_profile: false -sidebar: - title: "Sample Title" - nav: sidebar-sample ---- - -This post has a custom navigation list set in the post's YAML Front Matter. - -```yaml -sidebar: - title: "Sample Title" - nav: sidebar-sample -``` - -Along with navigation elements set in `_data/navigation.yml`. - -```yaml -sidebar-sample: - - title: "Parent Page A" - children: - - title: "Child Page A1" - url: / - - title: "Child Page A2" - url: / - - title: "Child Page A3" - url: / - - title: "Child Page A4" - url: / - - title: "Parent Page B" - children: - - title: "Child Page B1" - url: / - - title: "Child Page B2" - url: / - - title: "Child Page B3" - url: / - - title: "Child Page B4" - url: / - - title: "Child Page B5" - url: / - - title: "Parent Page C" - children: - - title: "Child Page C1" - url: / - - title: "Child Page C2" - url: / - - title: "Child Page C3" - url: / - - title: "Child Page C4" - url: / - - title: "Child Page C5" - url: / - - title: "Parent Page D" - children: - - title: "Child Page D1" - url: / - - title: "Child Page D2" - url: / -``` \ No newline at end of file diff --git a/test/_posts/2012-05-22-markup-text-readability-wide-page.md b/test/_posts/2012-05-22-markup-text-readability-wide-page.md deleted file mode 100644 index 83ccfede68db..000000000000 --- a/test/_posts/2012-05-22-markup-text-readability-wide-page.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "Wide Single Layout Page" -classes: wide -excerpt: "A page with `classes: wide` set to expand the main content's width." -tags: - - sample post - - readability - - test ---- - -When using `layout: single` add the following front matter to a page or post to widen the main content: - -```yaml -classes: wide -``` - -Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest literally occupy Schlitz forage. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - - * Sartorial hoodie - * Labore viral forage - * Tote bag selvage - * DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. diff --git a/test/_posts/2012-05-22-markup-text-readability.md b/test/_posts/2012-05-22-markup-text-readability.md deleted file mode 100644 index e0dde8ee59d2..000000000000 --- a/test/_posts/2012-05-22-markup-text-readability.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Markup: Text Readability Test" -excerpt: "A bunch of text to test readability." -tags: - - sample post - - readability - - test ---- - -Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest literally occupy Schlitz forage. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - - * Sartorial hoodie - * Labore viral forage - * Tote bag selvage - * DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. diff --git a/test/_posts/2013-01-05-markup-title-with-markup.md b/test/_posts/2013-01-05-markup-title-with-markup.md deleted file mode 100644 index 2ead3fc99f04..000000000000 --- a/test/_posts/2013-01-05-markup-title-with-markup.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Markup: Title *with* **Markdown**" -categories: - - Markdown -tags: - - css - - html - - title ---- - -Verify that: - -* The post title renders the word "with" in *italics* and the word "Markdown" in **bold**. -* The post title markup should be removed from the browser window / tab. \ No newline at end of file diff --git a/test/_posts/2013-01-05-markup-title-with-special-characters.md b/test/_posts/2013-01-05-markup-title-with-special-characters.md deleted file mode 100644 index 075828af177b..000000000000 --- a/test/_posts/2013-01-05-markup-title-with-special-characters.md +++ /dev/null @@ -1,432 +0,0 @@ ---- -title: "Markup: Title with Special --- Characters" -categories: - - Markup -tags: - - html - - markup - - post - - title ---- - -Putting special characters in the title should have no adverse effect on the layout or functionality. - -Special characters in the post title have been known to cause issues with JavaScript and XML when not properly encoded and escaped. - -## Latin Character Tests - -This is a test to see if the fonts used in this theme support basic Latin characters. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - ! - - “ - - # - - $ - - % - - & - - ‘ - - ( - - ) - - * -
    - + - - , - - – - - . - - / - - - 1 - - 2 - - 3 - - 4 -
    - 5 - - 6 - - 7 - - 8 - - 9 - - : - - ; - - > - - = - - < -
    - ? - - @ - - A - - B - - C - - D - - E - - F - - G - - H -
    - I - - J - - K - - L - - M - - N - - O - - P - - Q - - R -
    - S - - T - - U - - V - - W - - X - - Y - - Z - - [ - -
    - ] - - ^ - - _ - - ` - - a - - b - - c - - d - - e - - f -
    - g - - h - - i - - j - - k - - l - - m - - n - - o - - p -
    - q - - r - - s - - t - - u - - v - - w - - x - - y - - z -
    - { - - | - - } - - ~ - - - - - - -
    \ No newline at end of file diff --git a/test/_posts/2013-01-09-markup-text-alignment.md b/test/_posts/2013-01-09-markup-text-alignment.md deleted file mode 100644 index e6fd09b3071a..000000000000 --- a/test/_posts/2013-01-09-markup-text-alignment.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "Markup: Text Alignment" -categories: - - Markup -tags: - - alignment - - content - - css - - markup ---- - -### Default - -This is a paragraph. It should not have any alignment of any kind. It should just flow like you would normally expect. Nothing fancy. Just straight up text, free flowing, with love. Completely neutral and not picking a side or sitting on the fence. It just is. It just freaking is. It likes where it is. It does not feel compelled to pick a side. Leave him be. It will just be better that way. Trust me. - -### Left Align - -This is a paragraph. It is left aligned. Because of this, it is a bit more liberal in it's views. It's favorite color is green. Left align tends to be more eco-friendly, but it provides no concrete evidence that it really is. Even though it likes share the wealth evenly, it leaves the equal distribution up to justified alignment. -{: style="text-align: left;"} - -### Center Align - -This is a paragraph. It is center aligned. Center is, but nature, a fence sitter. A flip flopper. It has a difficult time making up its mind. It wants to pick a side. Really, it does. It has the best intentions, but it tends to complicate matters more than help. The best you can do is try to win it over and hope for the best. I hear center align does take bribes. -{: style="text-align: center;"} - -### Right Align - -This is a paragraph. It is right aligned. It is a bit more conservative in it's views. It's prefers to not be told what to do or how to do it. Right align totally owns a slew of guns and loves to head to the range for some practice. Which is cool and all. I mean, it's a pretty good shot from at least four or five football fields away. Dead on. So boss. -{: style="text-align: right;"} - -### Justify Align - -This is a paragraph. It is justify aligned. It gets really mad when people associate it with Justin Timberlake. Typically, justified is pretty straight laced. It likes everything to be in it's place and not all cattywampus like the rest of the aligns. I am not saying that makes it better than the rest of the aligns, but it does tend to put off more of an elitist attitude. -{: style="text-align: justify;"} \ No newline at end of file diff --git a/test/_posts/2013-01-10-markup-image-alignment.md b/test/_posts/2013-01-10-markup-image-alignment.md deleted file mode 100644 index b92dab67b340..000000000000 --- a/test/_posts/2013-01-10-markup-image-alignment.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "Markup: Image Alignment" -categories: - - Markup -tags: - - alignment - - captions - - content - - css - - image - - markup ---- - -Welcome to image alignment! The best way to demonstrate the ebb and flow of the various image positioning options is to nestle them snuggly among an ocean of words. Grab a paddle and let's get started. - -![image-center]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-580x300.jpg){: .align-center} - -The image above happens to be **centered**. - -![image-left]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-150x150.jpg){: .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! - -And now for a **massively large image**. It also has **no alignment**. - -![no-alignment]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-1200x4002.jpg) - -The image above, though 1200px wide, should not overflow the content area. It should remain contained with no visible disruption to the flow of content. - -![image-right]({{ site.url }}{{ site.baseurl }}/assets/images/image-alignment-300x200.jpg){: .align-right} - -And now we're going to shift things to the **right align**. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there --- Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. - -In just a bit here, you should see the text start to wrap below the right aligned image and settle in nicely. There should still be plenty of room and everything should be sitting pretty. Yeah --- Just like that. It never felt so good to be right. - -And just when you thought we were done, we're going to do them all over again with captions! - -
    - -
    Look at 580 x 300 getting some love.
    -
    - -The figure above happens to be **centered**. The caption also has a link in it, just to see if it does anything funky. - -
    - -
    Itty-bitty caption.
    -
    - -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! - -And now for a **massively large image**. It also has **no alignment**. - -
    - -
    Massive image comment for your eyeballs.
    -
    - -The figure element above has an inline style of `width: 1200px` set which should break it outside of the normal content flow. - -
    - -
    Feels good to be right all the time.
    -
    - -And now we're going to shift things to the **right align**. Again, there should be plenty of room above, below, and to the left of the image. Just look at him there --- Hey guy! Way to rock that right side. I don't care what the left aligned image says, you look great. Don't let anyone else tell you differently. - -In just a bit here, you should see the text start to wrap below the right aligned image and settle in nicely. There should still be plenty of room and everything should be sitting pretty. Yeah --- Just like that. It never felt so good to be right. - -And that's a wrap, yo! You survived the tumultuous waters of alignment. Image alignment achievement unlocked! 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 deleted file mode 100644 index 1fdc6dbdcd75..000000000000 --- a/test/_posts/2013-01-11-markup-html-tags-and-formatting.md +++ /dev/null @@ -1,250 +0,0 @@ ---- -title: "Markup: HTML Tags and Formatting" -header: - teaser: "assets/images/markup-syntax-highlighting-teaser.jpg" -categories: - - Markup -tags: - - content - - css - - formatting - - html - - markup -toc: true -toc_sticky: true ---- - -A variety of common markup showing how the theme styles them. - -## Header two - -### Header three - -#### Header four - -##### Header five - -###### Header six - -## Blockquotes - -Single line blockquote: - -> Stay hungry. Stay foolish. - -Multi line blockquote with a cite reference: - -> People think focus means saying yes to the thing you've got to focus on. But that's not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. I'm actually as proud of the things we haven't done as the things I have done. Innovation is saying no to 1,000 things. - -Steve Jobs --- Apple Worldwide Developers' Conference, 1997 -{: .small} - -## Tables - -| Employee | Salary | | -| -------- | ------ | ------------------------------------------------------------ | -| [John Doe](#) | $1 | Because that's all Steve Jobs needed for a salary. | -| [Jane Doe](#) | $100K | For all the blogging she does. | -| [Fred Bloggs](#) | $100M | Pictures are worth a thousand words, right? So Jane × 1,000. | -| [Jane Bloggs](#) | $100B | With hair like that?! Enough said. | - -| Header1 | Header2 | Header3 | -|:--------|:-------:|--------:| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|-----------------------------| -| cell1 | cell2 | cell3 | -| cell4 | cell5 | cell6 | -|=============================| -| Foot1 | Foot2 | Foot3 | - -## Definition Lists - -Definition List Title -: Definition list division. - -Startup -: A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model. - -#dowork -: Coined by Rob Dyrdek and his personal body guard Christopher "Big Black" Boykins, "Do Work" works as a self motivator, to motivating your friends. - -Do It Live -: I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c "We'll Do It Live") this one. - -## Unordered Lists (Nested) - - * List item one - * List item one - * List item one - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - * List item two - * List item three - * List item four - -## Ordered List (Nested) - - 1. List item one - 1. List item one - 1. List item one - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - 2. List item two - 3. List item three - 4. List item four - -## Forms - -
    -
    - Personalia: - Name:
    - Email:
    - Date of birth: -
    -
    - -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - -[Default Button](#){: .btn} -[Primary Button](#){: .btn .btn--primary} -[Success Button](#){: .btn .btn--success} -[Warning Button](#){: .btn .btn--warning} -[Danger Button](#){: .btn .btn--danger} -[Info Button](#){: .btn .btn--info} -[Inverse Button](#){: .btn .btn--inverse} -[Light Outline Button](#){: .btn .btn--light-outline} - -```markdown -[Default Button Text](#link){: .btn} -[Primary Button Text](#link){: .btn .btn--primary} -[Success Button Text](#link){: .btn .btn--success} -[Warning Button Text](#link){: .btn .btn--warning} -[Danger Button Text](#link){: .btn .btn--danger} -[Info Button Text](#link){: .btn .btn--info} -[Inverse Button](#link){: .btn .btn--inverse} -[Light Outline Button](#link){: .btn .btn--light-outline} -``` - -[X-Large Button](#){: .btn .btn--primary .btn--x-large} -[Large Button](#){: .btn .btn--primary .btn--large} -[Default Button](#){: .btn .btn--primary } -[Small Button](#){: .btn .btn--primary .btn--small} - -```markdown -[X-Large Button](#link){: .btn .btn--primary .btn--x-large} -[Large Button](#link){: .btn .btn--primary .btn--large} -[Default Button](#link){: .btn .btn--primary } -[Small Button](#link){: .btn .btn--primary .btn--small} -``` - -## Notices - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice}` class. -{: .notice} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--primary}` class. -{: .notice--primary} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--info}` class. -{: .notice--info} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--warning}` class. -{: .notice--warning} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--success}` class. -{: .notice--success} - -**Watch out!** This paragraph of text has been [emphasized](#) with the `{: .notice--danger}` class. -{: .notice--danger} - -## HTML Tags - -### Address Tag - -
    - 1 Infinite Loop
    Cupertino, CA 95014
    United States -
    - -### Anchor Tag (aka. Link) - -This is an example of a [link](http://apple.com "Apple"). - -### Abbreviation Tag - -The abbreviation CSS stands for "Cascading Style Sheets". - -*[CSS]: Cascading Style Sheets - -### Cite Tag - -"Code is poetry." ---Automattic - -### Code Tag - -You will learn later on in these tests that `word-wrap: break-word;` will be your best friend. - -### Strike Tag - -This tag will let you strikeout text. - -### Emphasize Tag - -The emphasize tag should _italicize_ text. - -### Insert Tag - -This tag should denote inserted text. - -### Keyboard Tag - -This scarcely known tag emulates keyboard text, which is usually styled like the `` tag. - -### Preformatted Tag - -This tag styles large blocks of code. - -
    -.post-title {
    -	margin: 0 0 5px;
    -	font-weight: bold;
    -	font-size: 38px;
    -	line-height: 1.2;
    -	and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;
    -}
    -
    - -### Quote Tag - -Developers, developers, developers… –Steve Ballmer - -### Strong Tag - -This tag shows **bold text**. - -### Subscript Tag - -Getting our science styling on with H2O, which should push the "2" down. - -### Superscript Tag - -Still sticking with science and Albert Einstein's E = MC2, which should lift the 2 up. - -### Variable Tag - -This allows you to denote variables. \ No newline at end of file diff --git a/test/_posts/2013-05-22-markup-more-images.md b/test/_posts/2013-05-22-markup-more-images.md deleted file mode 100644 index c6a855548609..000000000000 --- a/test/_posts/2013-05-22-markup-more-images.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Markup: Another Post with Images" -excerpt: "Examples and code for displaying images in posts." -header: - teaser: "http://farm9.staticflickr.com/8426/7758832526_cc8f681e48_c.jpg" -tags: - - sample post - - images - - test ---- - -Here are some examples of what a post with images might look like. If you want to display two or three images next to each other responsively use `figure` with the appropriate `class`. Each instance of `figure` is auto-numbered and displayed in the caption. - -### Figures (for images or video) - -#### One Up - -
    - -
    Morning Fog Emerging From Trees by A Guy Taking Pictures, on Flickr.
    -
    - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -#### Two Up - -Apply the `half` class like so to display two images side by side that share the same caption. - -```html -
    - - -
    Caption describing these two images.
    -
    -``` - -And you'll get something that looks like this: - -
    - - -
    Two images.
    -
    - -#### Three Up - -Apply the `third` class like so to display three images side by side that share the same caption. - -```html -
    - - - -
    Caption describing these three images.
    -
    -``` - -And you'll get something that looks like this: - -
    - - - -
    Three images.
    -
    diff --git a/test/_posts/2013-08-16-markup-syntax-highlighting.md b/test/_posts/2013-08-16-markup-syntax-highlighting.md deleted file mode 100644 index d18e7e1fd937..000000000000 --- a/test/_posts/2013-08-16-markup-syntax-highlighting.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: "Markup: Syntax Highlighting" -excerpt: "Post displaying the various ways of highlighting code in Markdown." -last_modified_at: 2018-01-03T09:45:06-05:00 -header: - teaser: "assets/images/markup-syntax-highlighting-teaser.jpg" -tags: - - code - - syntax highlighting -toc: true ---- - -Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.[^1] - -[^1]: - -### GFM Code Blocks - -GitHub Flavored Markdown [fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) are supported. To modify styling and highlight colors edit `/_sass/syntax.scss`. - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -{% highlight scss %} -.highlight { - margin: 0; - padding: 1em; - font-family: $monospace; - font-size: $type-size-7; - line-height: 1.8; -} -{% endhighlight %} - -```html -{% raw %}{% endraw %} -``` - -```ruby -module Jekyll - class TagIndex < Page - def initialize(site, base, dir, tag) - @site = site - @base = base - @dir = dir - @name = 'index.html' - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'tag_index.html') - self.data['tag'] = tag - tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: ' - tag_title_suffix = site.config['tag_title_suffix'] || '–' - self.data['title'] = "#{tag_title_prefix}#{tag}" - self.data['description'] = "An archive of posts tagged #{tag}." - end - end -end -``` - -### Code Blocks in Lists - -Indentation matters. Be sure the indent of the code block aligns with the first non-space character after the list item marker (e.g., `1.`). Usually this will mean indenting 3 spaces instead of 4. - -1. Do step 1. -2. Now do this: - - ```ruby - def print_hi(name) - puts "Hi, #{name}" - end - print_hi('Tom') - #=> prints 'Hi, Tom' to STDOUT. - ``` - -3. Now you can do this. - -### Jekyll Highlight Tag - -An example of a code blocking using Jekyll's [`{% raw %}{% highlight %}{% endraw %}` tag](https://jekyllrb.com/docs/templates/#code-snippet-highlighting). - -{% highlight javascript linenos %} -// 'gulp html' -- does nothing -// 'gulp html --prod' -- minifies and gzips HTML files for production -gulp.task('html', () => { - return gulp.src(paths.siteFolderName + paths.htmlPattern) - .pipe(when(argv.prod, htmlmin({ - removeComments: true, - collapseWhitespace: true, - collapseBooleanAttributes: false, - removeAttributeQuotes: false, - removeRedundantAttributes: false, - minifyJS: true, - minifyCSS: true - }))) - .pipe(when(argv.prod, size({title: 'optimized HTML'}))) - .pipe(when(argv.prod, gulp.dest(paths.siteFolderName))) - .pipe(when(argv.prod, gzip({append: true}))) - .pipe(when(argv.prod, size({ - title: 'gzipped HTML', - gzip: true - }))) - .pipe(when(argv.prod, gulp.dest(paths.siteFolderName))) -}); -{% endhighlight %} - -{% highlight wl linenos %} -Module[{}, - Sqrt[2] - 4 -] -{% endhighlight %} - -### GitHub Gist Embed - -An example of a Gist embed below. - - \ No newline at end of file diff --git a/test/_posts/2016-02-24-welcome-to-jekyll.md b/test/_posts/2016-02-24-welcome-to-jekyll.md deleted file mode 100644 index bbfca0b9c9a6..000000000000 --- a/test/_posts/2016-02-24-welcome-to-jekyll.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Welcome to Jekyll!" -header: - teaser: "https://farm5.staticflickr.com/4076/4940499208_b79b77fb0a_z.jpg" -categories: - - Jekyll -tags: - - update ---- - -You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in [many different ways](https://jekyllrb.com/docs/usage/), but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -To add new posts, simply add a file in the `_posts`[^posts] directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -[^posts]: Footnote test. - -Jekyll also offers powerful support for code snippets: - -```ruby -def print_hi(name) - puts "Hi, #{name}" -end -print_hi('Tom') -#=> prints 'Hi, Tom' to STDOUT. -``` - -Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll's GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. - -[jekyll-docs]: http://jekyllrb.com/docs/home -[jekyll-gh]: https://github.com/jekyll/jekyll -[jekyll-talk]: https://talk.jekyllrb.com/ \ No newline at end of file diff --git a/test/_posts/2017-01-23-layout-header-video.md b/test/_posts/2017-01-23-layout-header-video.md deleted file mode 100644 index f1aab7490ca8..000000000000 --- a/test/_posts/2017-01-23-layout-header-video.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "Layout: Header Video" -header: - video: - id: -PVofD2A9t8 - provider: youtube -categories: - - Layout - - Uncategorized -tags: - - video - - layout ---- - -This post should display a **header with a responsive video**, if the theme supports it. - -## Settings - -| Parameter | Required | Description | -|---------- |--------- | ----------- | -| `id` | **Required** | ID of the video | -| `provider` | **Required** | Hosting provider of the video, either `youtube` or `vimeo` | - -### YouTube - -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="-PVofD2A9t8" provider="youtube" %}{% endraw %} -``` - -{% 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: -PVofD2A9t8 - provider: youtube -``` - -### Vimeo - -To embed the following Vimeo video at url `https://vimeo.com/212731897` into a post or page's main content you'd use: - -```liquid -{% raw %}{% include video id="212731897" provider="vimeo" %}{% endraw %} -``` - -{% include video id="212731897" provider="vimeo" %} - -To embed it as a video header you'd use the following YAML Front Matter - -```yaml -header: - video: - id: 212731897 - provider: vimeo -``` \ No newline at end of file diff --git a/test/_posts/2017-11-28-post-exclude-search.md b/test/_posts/2017-11-28-post-exclude-search.md deleted file mode 100644 index cb5b55d83735..000000000000 --- a/test/_posts/2017-11-28-post-exclude-search.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Exclude Post from Search Index" -search: false -categories: - - Jekyll -last_modified_at: 2018-02-19T08:05:34-05:00 ---- - -This post should not appear in the search index because it has the following YAML Front Matter: - -```yaml -search: false -``` - -**Note:** `search: false` only works to exclude posts when using **Lunr** as a search provider. -{: .notice--info} - -To exclude files when using **Algolia** as a search provider add an array to `algolia.files_to_exclude` in your `_config.yml`. For more configuration options be sure to check their [full documentation](https://community.algolia.com/jekyll-algolia/options.html). - -```yaml -algolia: - # Exclude more files from indexing - files_to_exclude: - - index.html - - index.md - - excluded-file.html - - _posts/2017-11-28-post-exclude-search.md - - subdirectory/*.html -``` \ No newline at end of file diff --git a/test/_recipes/chocolate-chip-cookies.md b/test/_recipes/chocolate-chip-cookies.md deleted file mode 100644 index ddd52d783c7c..000000000000 --- a/test/_recipes/chocolate-chip-cookies.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Chocolate Chip Cookies" ---- - -A chocolate chip cookie is a drop cookie that originated in the United States and features chocolate chips as its distinguishing ingredient. - -The traditional recipe combines a dough composed of butter and both brown and white sugar with semi-sweet chocolate chips. Variations include recipes with other types of chocolate as well as additional ingredients such as nuts or oatmeal. - -This recipe makes 4 dozen cookies. - -## Ingredients - -* 2 1/4 cups all-purpose flour -* 1 teaspoon baking soda -* 1/2 teaspoon salt -* 1 cup butter, softened and cut to pieces -* 1 cup sugar -* 1 cup light brown sugar, packed -* 2 teaspoons vanilla extract -* 2 large eggs -* 2 cups semi-sweet chocolate chips -* 1/2 teaspoon nutmeg (optional) -* 1 cup chopped pecans or walnuts (optional) - -## Directions - -1. Preheat the oven to 350 F. -2. In a medium bowl, whisk flour with baking soda, nutmeg and salt. -3. In a large bowl, beat butter with sugar and brown sugar until creamy and light. Add vanilla and eggs, one at a time, and mix until incorporated. -4. Gradually add dry mixture into the butter-sugar wet blend, mixing with a spatula until combined. Add chocolate chips and nuts until just mixed. -5. Drop tablespoon-sized clumps onto un-greased cookie sheets. Bake for 8-12 minutes, or until pale brown. Allow to cool on the pan for a minute or three, then transfer cookies to a wire rack to finish cooling. \ No newline at end of file diff --git a/test/_recipes/oatmeal-cookies.md b/test/_recipes/oatmeal-cookies.md deleted file mode 100644 index 978ad4febd74..000000000000 --- a/test/_recipes/oatmeal-cookies.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Oatmeal Cookies" ---- - -Oatmeal cookies are a proverbial favorite with both kids and adults. This crisp and chewy cookie is loaded with oats, dried fruit, and chopped nuts. - -## Ingredients - -* 1 cup butter, softened 1 cup white sugar -* 1 cup packed brown sugar -* 2 eggs -* 1 teaspoon vanilla extract -* 2 cups all-purpose flour -* 1 teaspoon baking soda -* 1 teaspoon salt -* 1 1/2 teaspoons ground cinnamon -* 3 cups quick cooking oats - -## Directions - -1. In a medium bowl, cream together butter, white sugar, and brown sugar. Beat in eggs one at a time, then stir in vanilla. Combine flour, baking soda, salt, and cinnamon; stir into the creamed mixture. Mix in oats. Cover, and chill dough for at least one hour. -2. Preheat the oven to 375 degrees F (190 degrees C). Grease cookie sheets. Roll the dough into walnut sized balls, and place 2 inches apart on cookie sheets. Flatten each cookie with a large fork dipped in sugar. -3. Bake for 8 to 10 minutes in preheated oven. Allow cookies to cool on baking sheet for 5 minutes before transferring to a wire rack to cool completely. \ No newline at end of file diff --git a/test/_recipes/peanut-butter-cookies.md b/test/_recipes/peanut-butter-cookies.md deleted file mode 100644 index b5eaae81b81f..000000000000 --- a/test/_recipes/peanut-butter-cookies.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Peanut Butter Cookies" ---- - -A peanut butter cookie is a type of cookie that is distinguished for having peanut butter as a principal ingredient. The cookie generally originated in the United States, its development dating back to the 1910s. - -## Ingredients - -* 1 cup unsalted butter -* 1 cup crunchy peanut butter -* 1 cup white sugar -* 1 cup packed brown sugar -* 2 eggs 2 -* 1/2 cups all-purpose flour -* 1 teaspoon baking powder -* 1/2 teaspoon salt -* 1 1/2 teaspoons baking soda - -## Directions - -1. Cream butter, peanut butter, and sugars together in a bowl; beat in eggs. -2. In a separate bowl, sift flour, baking powder, baking soda, and salt; stir into butter mixture. Put dough in refrigerator for 1 hour. -3. Roll dough into 1 inch balls and put on baking sheets. Flatten each ball with a fork, making a crisscross pattern. Bake in a preheated 375 degrees F oven for about 10 minutes or until cookies begin to brown. \ No newline at end of file diff --git a/test/assets/images/3953273590_704e3899d5_m.jpg b/test/assets/images/3953273590_704e3899d5_m.jpg deleted file mode 100644 index 50d2155aa8cf..000000000000 Binary files a/test/assets/images/3953273590_704e3899d5_m.jpg and /dev/null differ diff --git a/test/assets/images/500x300.png b/test/assets/images/500x300.png deleted file mode 100644 index f9fba928db78..000000000000 Binary files a/test/assets/images/500x300.png and /dev/null differ diff --git a/test/assets/images/apple-touch-icon.png b/test/assets/images/apple-touch-icon.png deleted file mode 100644 index 51f879190642..000000000000 Binary files a/test/assets/images/apple-touch-icon.png and /dev/null differ diff --git a/test/assets/images/bio-photo-2.jpg b/test/assets/images/bio-photo-2.jpg deleted file mode 100644 index a6f20359381f..000000000000 Binary files a/test/assets/images/bio-photo-2.jpg and /dev/null differ diff --git a/test/assets/images/bio-photo.jpg b/test/assets/images/bio-photo.jpg deleted file mode 100644 index 000845179832..000000000000 Binary files a/test/assets/images/bio-photo.jpg and /dev/null differ diff --git a/test/assets/images/facebook-share-example.jpg b/test/assets/images/facebook-share-example.jpg deleted file mode 100644 index dddff9e509b7..000000000000 Binary files a/test/assets/images/facebook-share-example.jpg and /dev/null differ diff --git a/test/assets/images/foo-bar-identity-th.jpg b/test/assets/images/foo-bar-identity-th.jpg deleted file mode 100644 index 49906ac64f28..000000000000 Binary files a/test/assets/images/foo-bar-identity-th.jpg and /dev/null differ diff --git a/test/assets/images/foo-bar-identity.jpg b/test/assets/images/foo-bar-identity.jpg deleted file mode 100644 index d946815a263e..000000000000 Binary files a/test/assets/images/foo-bar-identity.jpg and /dev/null differ diff --git a/test/assets/images/image-alignment-1200x4002.jpg b/test/assets/images/image-alignment-1200x4002.jpg deleted file mode 100644 index 8e3137cbeb1d..000000000000 Binary files a/test/assets/images/image-alignment-1200x4002.jpg and /dev/null differ diff --git a/test/assets/images/image-alignment-150x150.jpg b/test/assets/images/image-alignment-150x150.jpg deleted file mode 100644 index d3b0e483797d..000000000000 Binary files a/test/assets/images/image-alignment-150x150.jpg and /dev/null differ diff --git a/test/assets/images/image-alignment-300x200.jpg b/test/assets/images/image-alignment-300x200.jpg deleted file mode 100644 index 3921878b2e09..000000000000 Binary files a/test/assets/images/image-alignment-300x200.jpg and /dev/null differ diff --git a/test/assets/images/image-alignment-580x300.jpg b/test/assets/images/image-alignment-580x300.jpg deleted file mode 100644 index 75bf08e90a97..000000000000 Binary files a/test/assets/images/image-alignment-580x300.jpg and /dev/null differ diff --git a/test/assets/images/markup-syntax-highlighting-teaser.jpg b/test/assets/images/markup-syntax-highlighting-teaser.jpg deleted file mode 100644 index 36cb1f9db594..000000000000 Binary files a/test/assets/images/markup-syntax-highlighting-teaser.jpg and /dev/null differ diff --git a/test/assets/images/mm-archive-grid-view-example.jpg b/test/assets/images/mm-archive-grid-view-example.jpg deleted file mode 100644 index 8dfc6d444e53..000000000000 Binary files a/test/assets/images/mm-archive-grid-view-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-author-profile-reddit-color.png b/test/assets/images/mm-author-profile-reddit-color.png deleted file mode 100644 index aeaa4e6c990d..000000000000 Binary files a/test/assets/images/mm-author-profile-reddit-color.png and /dev/null differ diff --git a/test/assets/images/mm-author-profile-reddit-gs.png b/test/assets/images/mm-author-profile-reddit-gs.png deleted file mode 100644 index 9d66d7b22c96..000000000000 Binary files a/test/assets/images/mm-author-profile-reddit-gs.png and /dev/null differ diff --git a/test/assets/images/mm-author-sidebar-example.jpg b/test/assets/images/mm-author-sidebar-example.jpg deleted file mode 100644 index ea0f8df072d2..000000000000 Binary files a/test/assets/images/mm-author-sidebar-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-breadcrumbs-example.jpg b/test/assets/images/mm-breadcrumbs-example.jpg deleted file mode 100644 index e865a482538f..000000000000 Binary files a/test/assets/images/mm-breadcrumbs-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-browser-mockups.png b/test/assets/images/mm-browser-mockups.png deleted file mode 100644 index 56a0a708e710..000000000000 Binary files a/test/assets/images/mm-browser-mockups.png and /dev/null differ diff --git a/test/assets/images/mm-bundle-install.gif b/test/assets/images/mm-bundle-install.gif deleted file mode 100644 index a6bcbc4282ed..000000000000 Binary files a/test/assets/images/mm-bundle-install.gif and /dev/null differ diff --git a/test/assets/images/mm-custom-sidebar-example.jpg b/test/assets/images/mm-custom-sidebar-example.jpg deleted file mode 100644 index 38e09e91ab58..000000000000 Binary files a/test/assets/images/mm-custom-sidebar-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-custom-sidebar-nav.jpg b/test/assets/images/mm-custom-sidebar-nav.jpg deleted file mode 100644 index 6d3b3e60f0f3..000000000000 Binary files a/test/assets/images/mm-custom-sidebar-nav.jpg and /dev/null differ diff --git a/test/assets/images/mm-customizable-feature.png b/test/assets/images/mm-customizable-feature.png deleted file mode 100644 index a28ab0d15c27..000000000000 Binary files a/test/assets/images/mm-customizable-feature.png and /dev/null differ diff --git a/test/assets/images/mm-free-feature.png b/test/assets/images/mm-free-feature.png deleted file mode 100644 index 630fef62c268..000000000000 Binary files a/test/assets/images/mm-free-feature.png and /dev/null differ diff --git a/test/assets/images/mm-gh-pages.gif b/test/assets/images/mm-gh-pages.gif deleted file mode 100644 index ae30c86c5b89..000000000000 Binary files a/test/assets/images/mm-gh-pages.gif and /dev/null differ diff --git a/test/assets/images/mm-github-copy-repo-url.jpg b/test/assets/images/mm-github-copy-repo-url.jpg deleted file mode 100644 index 0a62b5557f40..000000000000 Binary files a/test/assets/images/mm-github-copy-repo-url.jpg and /dev/null differ diff --git a/test/assets/images/mm-github-edit-config.gif b/test/assets/images/mm-github-edit-config.gif deleted file mode 100644 index a1768603aa75..000000000000 Binary files a/test/assets/images/mm-github-edit-config.gif and /dev/null differ diff --git a/test/assets/images/mm-header-overlay-black-filter.jpg b/test/assets/images/mm-header-overlay-black-filter.jpg deleted file mode 100644 index 9b96314e00cc..000000000000 Binary files a/test/assets/images/mm-header-overlay-black-filter.jpg and /dev/null differ diff --git a/test/assets/images/mm-header-overlay-red-filter.jpg b/test/assets/images/mm-header-overlay-red-filter.jpg deleted file mode 100644 index 82065d7e3cb2..000000000000 Binary files a/test/assets/images/mm-header-overlay-red-filter.jpg and /dev/null differ diff --git a/test/assets/images/mm-home-page-feature.jpg b/test/assets/images/mm-home-page-feature.jpg deleted file mode 100644 index 76c9d1d84b49..000000000000 Binary files a/test/assets/images/mm-home-page-feature.jpg and /dev/null differ diff --git a/test/assets/images/mm-home-post-pagination-example.jpg b/test/assets/images/mm-home-post-pagination-example.jpg deleted file mode 100644 index 9ed638672145..000000000000 Binary files a/test/assets/images/mm-home-post-pagination-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-layout-archive-taxonomy.png b/test/assets/images/mm-layout-archive-taxonomy.png deleted file mode 100644 index 99eae1cba6a1..000000000000 Binary files a/test/assets/images/mm-layout-archive-taxonomy.png and /dev/null differ diff --git a/test/assets/images/mm-layout-archive.png b/test/assets/images/mm-layout-archive.png deleted file mode 100644 index 7f20667998c3..000000000000 Binary files a/test/assets/images/mm-layout-archive.png and /dev/null differ diff --git a/test/assets/images/mm-layout-examples.png b/test/assets/images/mm-layout-examples.png deleted file mode 100644 index 88ef60fd6a56..000000000000 Binary files a/test/assets/images/mm-layout-examples.png and /dev/null differ diff --git a/test/assets/images/mm-layout-single-header.png b/test/assets/images/mm-layout-single-header.png deleted file mode 100644 index be9bdedc7eee..000000000000 Binary files a/test/assets/images/mm-layout-single-header.png and /dev/null differ diff --git a/test/assets/images/mm-layout-single-meta.png b/test/assets/images/mm-layout-single-meta.png deleted file mode 100644 index ef626e3d3ecf..000000000000 Binary files a/test/assets/images/mm-layout-single-meta.png and /dev/null differ diff --git a/test/assets/images/mm-layout-single.png b/test/assets/images/mm-layout-single.png deleted file mode 100644 index 2dacb9b60ed2..000000000000 Binary files a/test/assets/images/mm-layout-single.png and /dev/null differ diff --git a/test/assets/images/mm-layout-splash.png b/test/assets/images/mm-layout-splash.png deleted file mode 100644 index 49d51a1a646a..000000000000 Binary files a/test/assets/images/mm-layout-splash.png and /dev/null differ diff --git a/test/assets/images/mm-paragraph-indent-example.jpg b/test/assets/images/mm-paragraph-indent-example.jpg deleted file mode 100644 index a3a0e6a9aced..000000000000 Binary files a/test/assets/images/mm-paragraph-indent-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-portfolio-collection-example.jpg b/test/assets/images/mm-portfolio-collection-example.jpg deleted file mode 100644 index 4656d8ffc158..000000000000 Binary files a/test/assets/images/mm-portfolio-collection-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-priority-plus-masthead.gif b/test/assets/images/mm-priority-plus-masthead.gif deleted file mode 100644 index 85c73c47e6ab..000000000000 Binary files a/test/assets/images/mm-priority-plus-masthead.gif and /dev/null differ diff --git a/test/assets/images/mm-read-time-example.jpg b/test/assets/images/mm-read-time-example.jpg deleted file mode 100644 index ef4d5e12b09a..000000000000 Binary files a/test/assets/images/mm-read-time-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-responsive-feature.png b/test/assets/images/mm-responsive-feature.png deleted file mode 100644 index a0f8b40146f0..000000000000 Binary files a/test/assets/images/mm-responsive-feature.png and /dev/null differ diff --git a/test/assets/images/mm-single-header-example.jpg b/test/assets/images/mm-single-header-example.jpg deleted file mode 100644 index e2aa470ec8f4..000000000000 Binary files a/test/assets/images/mm-single-header-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-single-header-overlay-example.jpg b/test/assets/images/mm-single-header-overlay-example.jpg deleted file mode 100644 index cd253551fb9a..000000000000 Binary files a/test/assets/images/mm-single-header-overlay-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-single-header-overlay-fill-example.jpg b/test/assets/images/mm-single-header-overlay-fill-example.jpg deleted file mode 100644 index 009e2cdd68c5..000000000000 Binary files a/test/assets/images/mm-single-header-overlay-fill-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-social-share-links-default.png b/test/assets/images/mm-social-share-links-default.png deleted file mode 100644 index 75885e3514cb..000000000000 Binary files a/test/assets/images/mm-social-share-links-default.png and /dev/null differ diff --git a/test/assets/images/mm-social-share-links-reddit-color.png b/test/assets/images/mm-social-share-links-reddit-color.png deleted file mode 100644 index 2b6a420cfb79..000000000000 Binary files a/test/assets/images/mm-social-share-links-reddit-color.png and /dev/null differ diff --git a/test/assets/images/mm-social-share-links-reddit-gs.png b/test/assets/images/mm-social-share-links-reddit-gs.png deleted file mode 100644 index 5b6e883bbb90..000000000000 Binary files a/test/assets/images/mm-social-share-links-reddit-gs.png and /dev/null differ diff --git a/test/assets/images/mm-staticman-pr-webhook.jpg b/test/assets/images/mm-staticman-pr-webhook.jpg deleted file mode 100644 index 408d3a7d7556..000000000000 Binary files a/test/assets/images/mm-staticman-pr-webhook.jpg and /dev/null differ diff --git a/test/assets/images/mm-susy-grid-overlay.jpg b/test/assets/images/mm-susy-grid-overlay.jpg deleted file mode 100644 index 2c631a3ece41..000000000000 Binary files a/test/assets/images/mm-susy-grid-overlay.jpg and /dev/null differ diff --git a/test/assets/images/mm-teaser-images-example.jpg b/test/assets/images/mm-teaser-images-example.jpg deleted file mode 100644 index 25c08f4d07e6..000000000000 Binary files a/test/assets/images/mm-teaser-images-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-theme-fork-repo.png b/test/assets/images/mm-theme-fork-repo.png deleted file mode 100644 index c18dfb553a88..000000000000 Binary files a/test/assets/images/mm-theme-fork-repo.png and /dev/null differ diff --git a/test/assets/images/mm-theme-post-600.jpg b/test/assets/images/mm-theme-post-600.jpg deleted file mode 100644 index ffbc2b111c15..000000000000 Binary files a/test/assets/images/mm-theme-post-600.jpg and /dev/null differ diff --git a/test/assets/images/mm-theme-post-750.jpg b/test/assets/images/mm-theme-post-750.jpg deleted file mode 100644 index 4ab6157164de..000000000000 Binary files a/test/assets/images/mm-theme-post-750.jpg and /dev/null differ diff --git a/test/assets/images/mm-toc-helper-example.jpg b/test/assets/images/mm-toc-helper-example.jpg deleted file mode 100644 index d6e43e12b4af..000000000000 Binary files a/test/assets/images/mm-toc-helper-example.jpg and /dev/null differ diff --git a/test/assets/images/mm-twitter-card-summary-image.jpg b/test/assets/images/mm-twitter-card-summary-image.jpg deleted file mode 100644 index f59252a6fa0f..000000000000 Binary files a/test/assets/images/mm-twitter-card-summary-image.jpg and /dev/null differ diff --git a/test/assets/images/mm-twitter-card-summary-large.jpg b/test/assets/images/mm-twitter-card-summary-large.jpg deleted file mode 100644 index 9a2292b5ae26..000000000000 Binary files a/test/assets/images/mm-twitter-card-summary-large.jpg and /dev/null differ diff --git a/test/assets/images/mm-ui-text-labels.jpg b/test/assets/images/mm-ui-text-labels.jpg deleted file mode 100644 index 5b51ceb302d4..000000000000 Binary files a/test/assets/images/mm-ui-text-labels.jpg and /dev/null differ diff --git a/test/assets/images/page-header-image.png b/test/assets/images/page-header-image.png deleted file mode 100644 index e8c0c29525cb..000000000000 Binary files a/test/assets/images/page-header-image.png and /dev/null differ diff --git a/test/assets/images/page-header-og-image.png b/test/assets/images/page-header-og-image.png deleted file mode 100644 index 457e0000c8f4..000000000000 Binary files a/test/assets/images/page-header-og-image.png and /dev/null differ diff --git a/test/assets/images/page-header-overlay-image.png b/test/assets/images/page-header-overlay-image.png deleted file mode 100644 index a5d975344d34..000000000000 Binary files a/test/assets/images/page-header-overlay-image.png and /dev/null differ diff --git a/test/assets/images/page-header-teaser.png b/test/assets/images/page-header-teaser.png deleted file mode 100644 index 20988b5cd754..000000000000 Binary files a/test/assets/images/page-header-teaser.png and /dev/null differ diff --git a/test/assets/images/paragraph-indent.png b/test/assets/images/paragraph-indent.png deleted file mode 100644 index b4a2c4810c51..000000000000 Binary files a/test/assets/images/paragraph-indent.png and /dev/null differ diff --git a/test/assets/images/paragraph-no-indent.png b/test/assets/images/paragraph-no-indent.png deleted file mode 100644 index 3e0f9d26c41f..000000000000 Binary files a/test/assets/images/paragraph-no-indent.png and /dev/null differ diff --git a/test/assets/images/safari-pinned-tab.svg b/test/assets/images/safari-pinned-tab.svg deleted file mode 100644 index d517ee13d9c0..000000000000 --- a/test/assets/images/safari-pinned-tab.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - - - diff --git a/test/assets/images/unsplash-gallery-image-1-th.jpg b/test/assets/images/unsplash-gallery-image-1-th.jpg deleted file mode 100644 index 2ec826c8c20e..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-1-th.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-1.jpg b/test/assets/images/unsplash-gallery-image-1.jpg deleted file mode 100644 index 86a9f3d6f31b..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-1.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-2-th.jpg b/test/assets/images/unsplash-gallery-image-2-th.jpg deleted file mode 100644 index 995e788c6d18..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-2-th.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-2.jpg b/test/assets/images/unsplash-gallery-image-2.jpg deleted file mode 100644 index 394b5bfa2888..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-2.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-3-th.jpg b/test/assets/images/unsplash-gallery-image-3-th.jpg deleted file mode 100644 index d8ab595acaa1..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-3-th.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-3.jpg b/test/assets/images/unsplash-gallery-image-3.jpg deleted file mode 100644 index 3b7e99f8489e..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-3.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-4-th.jpg b/test/assets/images/unsplash-gallery-image-4-th.jpg deleted file mode 100644 index 8d4e05d7276f..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-4-th.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-gallery-image-4.jpg b/test/assets/images/unsplash-gallery-image-4.jpg deleted file mode 100644 index 872c08c412a9..000000000000 Binary files a/test/assets/images/unsplash-gallery-image-4.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-1.jpg b/test/assets/images/unsplash-image-1.jpg deleted file mode 100644 index 24be340b84ab..000000000000 Binary files a/test/assets/images/unsplash-image-1.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-10.jpg b/test/assets/images/unsplash-image-10.jpg deleted file mode 100644 index 92b4595a60b9..000000000000 Binary files a/test/assets/images/unsplash-image-10.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-11.jpg b/test/assets/images/unsplash-image-11.jpg deleted file mode 100644 index 4cfb7796b2e9..000000000000 Binary files a/test/assets/images/unsplash-image-11.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-2.jpg b/test/assets/images/unsplash-image-2.jpg deleted file mode 100644 index 9097a2103885..000000000000 Binary files a/test/assets/images/unsplash-image-2.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-3.jpg b/test/assets/images/unsplash-image-3.jpg deleted file mode 100644 index 750e9ab2fe58..000000000000 Binary files a/test/assets/images/unsplash-image-3.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-4.jpg b/test/assets/images/unsplash-image-4.jpg deleted file mode 100644 index e8eb28ba92ef..000000000000 Binary files a/test/assets/images/unsplash-image-4.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-5.jpg b/test/assets/images/unsplash-image-5.jpg deleted file mode 100644 index 5fa64fc230c2..000000000000 Binary files a/test/assets/images/unsplash-image-5.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-6.jpg b/test/assets/images/unsplash-image-6.jpg deleted file mode 100644 index 808412eb5bd0..000000000000 Binary files a/test/assets/images/unsplash-image-6.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-7.jpg b/test/assets/images/unsplash-image-7.jpg deleted file mode 100644 index beb5272516b0..000000000000 Binary files a/test/assets/images/unsplash-image-7.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-8.jpg b/test/assets/images/unsplash-image-8.jpg deleted file mode 100644 index 66d254c57667..000000000000 Binary files a/test/assets/images/unsplash-image-8.jpg and /dev/null differ diff --git a/test/assets/images/unsplash-image-9.jpg b/test/assets/images/unsplash-image-9.jpg deleted file mode 100644 index cc826a0546fc..000000000000 Binary files a/test/assets/images/unsplash-image-9.jpg and /dev/null differ diff --git a/test/index.html b/test/index.html deleted file mode 100644 index 98d8242ce999..000000000000 --- a/test/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: home -author_profile: true ---- - -

    This text should appear above the recent posts.

    diff --git a/wp-content/uploads/.htaccess b/wp-content/uploads/.htaccess new file mode 100644 index 000000000000..16fb2ba9edfc --- /dev/null +++ b/wp-content/uploads/.htaccess @@ -0,0 +1,4 @@ +### Generated by Dreamhost. DO NOT modify!!! ### +SetHandler no-handler +################################################ + diff --git a/wp-content/uploads/2014/06/embrarer-rj145-150x150.jpg b/wp-content/uploads/2014/06/embrarer-rj145-150x150.jpg new file mode 100644 index 000000000000..b69d33543e0b Binary files /dev/null and b/wp-content/uploads/2014/06/embrarer-rj145-150x150.jpg differ diff --git a/wp-content/uploads/2014/06/embrarer-rj145-300x168.jpg b/wp-content/uploads/2014/06/embrarer-rj145-300x168.jpg new file mode 100644 index 000000000000..688e2bb08b50 Binary files /dev/null and b/wp-content/uploads/2014/06/embrarer-rj145-300x168.jpg differ diff --git a/wp-content/uploads/2014/06/embrarer-rj145-500x270.jpg b/wp-content/uploads/2014/06/embrarer-rj145-500x270.jpg new file mode 100644 index 000000000000..ff4945a7e708 Binary files /dev/null and b/wp-content/uploads/2014/06/embrarer-rj145-500x270.jpg differ diff --git a/wp-content/uploads/2014/06/embrarer-rj145.jpg b/wp-content/uploads/2014/06/embrarer-rj145.jpg new file mode 100644 index 000000000000..6397feae6dc7 Binary files /dev/null and b/wp-content/uploads/2014/06/embrarer-rj145.jpg differ diff --git a/wp-content/uploads/2014/07/gitlogo-150x150.jpg b/wp-content/uploads/2014/07/gitlogo-150x150.jpg new file mode 100644 index 000000000000..d7b0c53ac625 Binary files /dev/null and b/wp-content/uploads/2014/07/gitlogo-150x150.jpg differ diff --git a/wp-content/uploads/2014/07/gitlogo.jpg b/wp-content/uploads/2014/07/gitlogo.jpg new file mode 100644 index 000000000000..93db060a9031 Binary files /dev/null and b/wp-content/uploads/2014/07/gitlogo.jpg differ diff --git a/wp-content/uploads/2015/01/ctrl_drag_model-150x150.gif b/wp-content/uploads/2015/01/ctrl_drag_model-150x150.gif new file mode 100644 index 000000000000..04f5f0535117 Binary files /dev/null and b/wp-content/uploads/2015/01/ctrl_drag_model-150x150.gif differ diff --git a/wp-content/uploads/2015/01/ctrl_drag_model-300x254.gif b/wp-content/uploads/2015/01/ctrl_drag_model-300x254.gif new file mode 100644 index 000000000000..9d0bc771f6bf Binary files /dev/null and b/wp-content/uploads/2015/01/ctrl_drag_model-300x254.gif differ diff --git a/wp-content/uploads/2015/01/ctrl_drag_model-604x270.gif b/wp-content/uploads/2015/01/ctrl_drag_model-604x270.gif new file mode 100644 index 000000000000..dd1aa4d634f4 Binary files /dev/null and b/wp-content/uploads/2015/01/ctrl_drag_model-604x270.gif differ diff --git a/wp-content/uploads/2015/01/ctrl_drag_model.gif b/wp-content/uploads/2015/01/ctrl_drag_model.gif new file mode 100644 index 000000000000..9b21e3b7ed93 Binary files /dev/null and b/wp-content/uploads/2015/01/ctrl_drag_model.gif differ diff --git a/wp-content/uploads/2015/02/oracle-1.8-error-150x150.png b/wp-content/uploads/2015/02/oracle-1.8-error-150x150.png new file mode 100644 index 000000000000..910804e961df Binary files /dev/null and b/wp-content/uploads/2015/02/oracle-1.8-error-150x150.png differ diff --git a/wp-content/uploads/2015/02/oracle-1.8-error-300x135.png b/wp-content/uploads/2015/02/oracle-1.8-error-300x135.png new file mode 100644 index 000000000000..9066d8e0b1ad Binary files /dev/null and b/wp-content/uploads/2015/02/oracle-1.8-error-300x135.png differ diff --git a/wp-content/uploads/2015/02/oracle-1.8-error.png b/wp-content/uploads/2015/02/oracle-1.8-error.png new file mode 100644 index 000000000000..efe4f641a804 Binary files /dev/null and b/wp-content/uploads/2015/02/oracle-1.8-error.png differ diff --git a/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-150x150.jpg b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-150x150.jpg new file mode 100644 index 000000000000..a3650964adb1 Binary files /dev/null and b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-150x150.jpg differ diff --git a/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-300x200.jpg b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-300x200.jpg new file mode 100644 index 000000000000..e9594a6274e2 Binary files /dev/null and b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-300x200.jpg differ diff --git a/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-604x270.jpg b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-604x270.jpg new file mode 100644 index 000000000000..0c71adda21ca Binary files /dev/null and b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_-604x270.jpg differ diff --git a/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_.jpg b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_.jpg new file mode 100644 index 000000000000..202ea8a7c94c Binary files /dev/null and b/wp-content/uploads/2015/04/security-phishing-100314300-primary.idge_.jpg differ diff --git a/wp-content/uploads/2015/04/treadmill-cartoon-150x150.jpg b/wp-content/uploads/2015/04/treadmill-cartoon-150x150.jpg new file mode 100644 index 000000000000..b2c634bb4f0a Binary files /dev/null and b/wp-content/uploads/2015/04/treadmill-cartoon-150x150.jpg differ diff --git a/wp-content/uploads/2015/04/treadmill-cartoon-300x151.jpg b/wp-content/uploads/2015/04/treadmill-cartoon-300x151.jpg new file mode 100644 index 000000000000..6fcd3cf700b8 Binary files /dev/null and b/wp-content/uploads/2015/04/treadmill-cartoon-300x151.jpg differ diff --git a/wp-content/uploads/2015/04/treadmill-cartoon.jpg b/wp-content/uploads/2015/04/treadmill-cartoon.jpg new file mode 100644 index 000000000000..ccedcf66cc9c Binary files /dev/null and b/wp-content/uploads/2015/04/treadmill-cartoon.jpg differ diff --git a/wp-content/uploads/2016/01/Netflix-Results-1024x600.png b/wp-content/uploads/2016/01/Netflix-Results-1024x600.png new file mode 100644 index 000000000000..997a23d21604 Binary files /dev/null and b/wp-content/uploads/2016/01/Netflix-Results-1024x600.png differ diff --git a/wp-content/uploads/2016/01/Netflix-Results-150x150.png b/wp-content/uploads/2016/01/Netflix-Results-150x150.png new file mode 100644 index 000000000000..0a4f0085bacd Binary files /dev/null and b/wp-content/uploads/2016/01/Netflix-Results-150x150.png differ diff --git a/wp-content/uploads/2016/01/Netflix-Results-300x176.png b/wp-content/uploads/2016/01/Netflix-Results-300x176.png new file mode 100644 index 000000000000..6cf801b59a0d Binary files /dev/null and b/wp-content/uploads/2016/01/Netflix-Results-300x176.png differ diff --git a/wp-content/uploads/2016/01/Netflix-Results-604x270.png b/wp-content/uploads/2016/01/Netflix-Results-604x270.png new file mode 100644 index 000000000000..263f715a95ea Binary files /dev/null and b/wp-content/uploads/2016/01/Netflix-Results-604x270.png differ diff --git a/wp-content/uploads/2016/01/Netflix-Results-768x450.png b/wp-content/uploads/2016/01/Netflix-Results-768x450.png new file mode 100644 index 000000000000..18f4e6cd5ee8 Binary files /dev/null and b/wp-content/uploads/2016/01/Netflix-Results-768x450.png differ diff --git a/wp-content/uploads/2016/01/Netflix-Results.png b/wp-content/uploads/2016/01/Netflix-Results.png new file mode 100644 index 000000000000..851aed95893a Binary files /dev/null and b/wp-content/uploads/2016/01/Netflix-Results.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-150x150.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-150x150.png new file mode 100644 index 000000000000..c83b0ead2615 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-150x150.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-300x70.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-300x70.png new file mode 100644 index 000000000000..e6543fe13e32 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-300x70.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-768x180.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-768x180.png new file mode 100644 index 000000000000..ff55daa1365a Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-768x180.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-880x220.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-880x220.png new file mode 100644 index 000000000000..a519a71cfe8c Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1-880x220.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1.png new file mode 100644 index 000000000000..dfe15dec57ba Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-100x100.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-100x100.png new file mode 100644 index 000000000000..65b9898e4c89 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-100x100.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1024x615.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1024x615.png new file mode 100644 index 000000000000..2b2b5c8623a3 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-1024x615.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-150x150.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-150x150.png new file mode 100644 index 000000000000..30ebef74de92 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-150x150.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-2000x1200.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-2000x1200.png new file mode 100644 index 000000000000..7d249c8502fd Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-2000x1200.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-300x180.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-300x180.png new file mode 100644 index 000000000000..0fc3c0773ecc Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-300x180.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-768x461.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-768x461.png new file mode 100644 index 000000000000..6a9740a07e22 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star-768x461.png differ diff --git a/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star.png b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star.png new file mode 100644 index 000000000000..6574155ea02b Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-cropped-twentythirteen_theme_star.png differ diff --git a/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-1024x147.png b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-1024x147.png new file mode 100644 index 000000000000..3f74b57d92d1 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-1024x147.png differ diff --git a/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-150x150.png b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-150x150.png new file mode 100644 index 000000000000..616a0ef7c82a Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-150x150.png differ diff --git a/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-300x43.png b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-300x43.png new file mode 100644 index 000000000000..8ddc472a259f Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-300x43.png differ diff --git a/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-604x230.png b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-604x230.png new file mode 100644 index 000000000000..d74d0fc31275 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-604x230.png differ diff --git a/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-768x110.png b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-768x110.png new file mode 100644 index 000000000000..f56fa1963a1a Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star-768x110.png differ diff --git a/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star.png b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star.png new file mode 100644 index 000000000000..31d6c1b03bd7 Binary files /dev/null and b/wp-content/uploads/2016/01/cropped-twentythirteen_theme_star.png differ diff --git a/wp-content/uploads/2016/01/twentythirteen_theme_star-1024x147.png b/wp-content/uploads/2016/01/twentythirteen_theme_star-1024x147.png new file mode 100644 index 000000000000..80dfc86ce341 Binary files /dev/null and b/wp-content/uploads/2016/01/twentythirteen_theme_star-1024x147.png differ diff --git a/wp-content/uploads/2016/01/twentythirteen_theme_star-150x150.png b/wp-content/uploads/2016/01/twentythirteen_theme_star-150x150.png new file mode 100644 index 000000000000..4b8403fbd397 Binary files /dev/null and b/wp-content/uploads/2016/01/twentythirteen_theme_star-150x150.png differ diff --git a/wp-content/uploads/2016/01/twentythirteen_theme_star-300x43.png b/wp-content/uploads/2016/01/twentythirteen_theme_star-300x43.png new file mode 100644 index 000000000000..2556643b705d Binary files /dev/null and b/wp-content/uploads/2016/01/twentythirteen_theme_star-300x43.png differ diff --git a/wp-content/uploads/2016/01/twentythirteen_theme_star-604x270.png b/wp-content/uploads/2016/01/twentythirteen_theme_star-604x270.png new file mode 100644 index 000000000000..295d270e5135 Binary files /dev/null and b/wp-content/uploads/2016/01/twentythirteen_theme_star-604x270.png differ diff --git a/wp-content/uploads/2016/01/twentythirteen_theme_star-768x110.png b/wp-content/uploads/2016/01/twentythirteen_theme_star-768x110.png new file mode 100644 index 000000000000..fd8af9c10429 Binary files /dev/null and b/wp-content/uploads/2016/01/twentythirteen_theme_star-768x110.png differ diff --git a/wp-content/uploads/2016/01/twentythirteen_theme_star.png b/wp-content/uploads/2016/01/twentythirteen_theme_star.png new file mode 100644 index 000000000000..24ca62686d5e Binary files /dev/null and b/wp-content/uploads/2016/01/twentythirteen_theme_star.png differ diff --git a/wp-content/uploads/2016/06/big-numbers-1024x853.png b/wp-content/uploads/2016/06/big-numbers-1024x853.png new file mode 100644 index 000000000000..71aa74c170bb Binary files /dev/null and b/wp-content/uploads/2016/06/big-numbers-1024x853.png differ diff --git a/wp-content/uploads/2016/06/big-numbers-150x150.png b/wp-content/uploads/2016/06/big-numbers-150x150.png new file mode 100644 index 000000000000..8487c89f3774 Binary files /dev/null and b/wp-content/uploads/2016/06/big-numbers-150x150.png differ diff --git a/wp-content/uploads/2016/06/big-numbers-300x250.png b/wp-content/uploads/2016/06/big-numbers-300x250.png new file mode 100644 index 000000000000..7b83f00371c5 Binary files /dev/null and b/wp-content/uploads/2016/06/big-numbers-300x250.png differ diff --git a/wp-content/uploads/2016/06/big-numbers-604x270.png b/wp-content/uploads/2016/06/big-numbers-604x270.png new file mode 100644 index 000000000000..99dfac375919 Binary files /dev/null and b/wp-content/uploads/2016/06/big-numbers-604x270.png differ diff --git a/wp-content/uploads/2016/06/big-numbers-768x640.png b/wp-content/uploads/2016/06/big-numbers-768x640.png new file mode 100644 index 000000000000..e1f4b94683ac Binary files /dev/null and b/wp-content/uploads/2016/06/big-numbers-768x640.png differ diff --git a/wp-content/uploads/2016/06/big-numbers.png b/wp-content/uploads/2016/06/big-numbers.png new file mode 100644 index 000000000000..a2138a50c5e8 Binary files /dev/null and b/wp-content/uploads/2016/06/big-numbers.png differ diff --git a/wp-content/uploads/2016/09/Special-Snowflake-150x150.png b/wp-content/uploads/2016/09/Special-Snowflake-150x150.png new file mode 100644 index 000000000000..d37384cae670 Binary files /dev/null and b/wp-content/uploads/2016/09/Special-Snowflake-150x150.png differ diff --git a/wp-content/uploads/2016/09/Special-Snowflake-300x300.png b/wp-content/uploads/2016/09/Special-Snowflake-300x300.png new file mode 100644 index 000000000000..0ae5c95afb54 Binary files /dev/null and b/wp-content/uploads/2016/09/Special-Snowflake-300x300.png differ diff --git a/wp-content/uploads/2016/09/Special-Snowflake-500x270.png b/wp-content/uploads/2016/09/Special-Snowflake-500x270.png new file mode 100644 index 000000000000..bb6133a285f1 Binary files /dev/null and b/wp-content/uploads/2016/09/Special-Snowflake-500x270.png differ diff --git a/wp-content/uploads/2016/09/Special-Snowflake.png b/wp-content/uploads/2016/09/Special-Snowflake.png new file mode 100644 index 000000000000..2ea93d4b78ae Binary files /dev/null and b/wp-content/uploads/2016/09/Special-Snowflake.png differ diff --git a/wp-content/uploads/2016/10/IE6-150x150.png b/wp-content/uploads/2016/10/IE6-150x150.png new file mode 100644 index 000000000000..1bfe7878d4cc Binary files /dev/null and b/wp-content/uploads/2016/10/IE6-150x150.png differ diff --git a/wp-content/uploads/2016/10/IE6.png b/wp-content/uploads/2016/10/IE6.png new file mode 100644 index 000000000000..29bbd060a31d Binary files /dev/null and b/wp-content/uploads/2016/10/IE6.png differ diff --git a/wp-content/uploads/2017/01/open-plan-150x150.jpg b/wp-content/uploads/2017/01/open-plan-150x150.jpg new file mode 100644 index 000000000000..4474ab9f6cb1 Binary files /dev/null and b/wp-content/uploads/2017/01/open-plan-150x150.jpg differ diff --git a/wp-content/uploads/2017/01/open-plan-300x180.jpg b/wp-content/uploads/2017/01/open-plan-300x180.jpg new file mode 100644 index 000000000000..ed67c8341206 Binary files /dev/null and b/wp-content/uploads/2017/01/open-plan-300x180.jpg differ diff --git a/wp-content/uploads/2017/01/open-plan-460x270.jpg b/wp-content/uploads/2017/01/open-plan-460x270.jpg new file mode 100644 index 000000000000..81ec15ad6628 Binary files /dev/null and b/wp-content/uploads/2017/01/open-plan-460x270.jpg differ diff --git a/wp-content/uploads/2017/01/open-plan.jpg b/wp-content/uploads/2017/01/open-plan.jpg new file mode 100644 index 000000000000..52d584c4761e Binary files /dev/null and b/wp-content/uploads/2017/01/open-plan.jpg differ diff --git a/wp-content/uploads/2017/jekyll.png b/wp-content/uploads/2017/jekyll.png new file mode 100755 index 000000000000..5b2de24cec51 Binary files /dev/null and b/wp-content/uploads/2017/jekyll.png differ