diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 6341d98273aa..5b9b83063bee 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,15 +1,26 @@ # Contributing -Having trouble working with the theme? Found a typo in the documentation? Interested in adding a feature or [fixing a bug](https://github.com/mmistakes/minimal-mistakes/issues)? Then by all means [submit an issue](https://github.com/mmistakes/minimal-mistakes/issues/new) or [pull request](https://help.github.com/articles/using-pull-requests/). If this is your first pull request, it may be helpful to read up on the [GitHub Flow](https://guides.github.com/introduction/flow/) first. +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. +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:. +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. \ No newline at end of file +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/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000000..2a66d84376eb --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +custom: https://www.paypal.me/mmistakes diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/bug_report.md similarity index 81% rename from .github/ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE/bug_report.md index 57b0d6cafe51..63a44d864661 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,3 +1,8 @@ +--- +name: "Bug Report" +about: "Is something not working as expected?" +--- + -## Description - - - ## Environment ## Steps to reproduce the behavior @@ -61,3 +59,10 @@ Screenshots can also be included if they help illustrate a behavior. --> + +## Other + + diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 000000000000..25f111fd7a23 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,16 @@ +--- +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/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000000..8477f6364487 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,32 @@ +--- +name: "Enhancement / Feature Request" +about: "What would make this theme better?" +--- + + + +## Summary + + + +## Motivation + + + +## Drawbacks + + \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/support.md b/.github/ISSUE_TEMPLATE/support.md new file mode 100644 index 000000000000..c8f0d21a4676 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/support.md @@ -0,0 +1,22 @@ +--- +name: "Question" +about: "Having trouble working with the theme?" +--- + + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000000..df3d98d9c034 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ + + + + + + + + +## Summary + + + +## Context + + \ No newline at end of file diff --git a/.github/stale.yml b/.github/stale.yml index 2d8120fa3799..3aa2e79c6e77 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -6,7 +6,6 @@ daysUntilClose: 7 exemptLabels: - "Status: Accepted" - "Status: Under Consideration" - - "Status: Review Needed" # Label to use when marking an issue as stale staleLabel: "Status: Stale" # Comment to post when marking an issue as stale. Set to `false` to disable diff --git a/.gitignore b/.gitignore index 5c4866d719f9..5c5a91f8f726 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,29 @@ -*.gem +# Vim +*~ +*.sw[p_] + +# Sublime Text *.sublime-project *.sublime-workspace + +# Ruby Gem +*.gem .bundle +Gemfile.lock +**/vendor/bundle + +# Node.js and NPM +node_modules +npm-debug.log* +package-lock.json +codekit-config.json + +# macOS .DS_Store + +# Jekyll generated files +.jekyll-cache .jekyll-metadata .sass-cache _asset_bundler_cache _site -codekit-config.json -example/_site -Gemfile.lock -node_modules -npm-debug.log* \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0188806ff7df..05f941d14ffa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,457 @@ ## Unreleased +### Bug Fixes + +- 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) + +## [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 `entries_layout: grid` in `home.html` layout. [#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.9`. [#1605](https://github.com/mmistakes/minimal-mistakes/pull/1605) +* Update Font Awesome to version [`5.0.12`](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md). * Add Slovak localized UI text strings. [#1613](https://github.com/mmistakes/minimal-mistakes/pull/1613) +* Add option to anonymize IP addresses of hits sent to Google Analytics. [#1636](https://github.com/mmistakes/minimal-mistakes/pull/1636) ### Bug Fixes @@ -540,380 +988,380 @@ ### 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) +- 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) +- 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) +- 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). +- 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) +- 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) +- 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. +- 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) +- 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`. +- 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. +- 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) +- 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) +- 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) +- 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. +- 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) +- 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) +- 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.` +- 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) +- 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). +- 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. +- Make footer stick to the bottom of the page. ### Bug Fixes -* Fix `gallery` size bug [#402](https://github.com/mmistakes/minimal-mistakes/issues/402) +- Fix `gallery` size bug [#402](https://github.com/mmistakes/minimal-mistakes/issues/402) ### Maintenance -* Set default `lang` to `en`. +- 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) +- 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) +- 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) +- 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`. +- 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) +- 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) +- 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) +- 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 +- 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` +- 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) +- 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) +- 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) +- 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) +- 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) +- 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) +- 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) +- 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) +- 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. +- 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) +- 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) +- 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. +- 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) +- 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) +- 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) +- 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. +- 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) +- 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) +- 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) +- 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) +- 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) +- 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) +- 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`. +- 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) +- 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) +- 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) +- 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) +- 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. +- 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). +- 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) +- 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`. +- 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. +- 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. +- 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) @@ -921,64 +1369,64 @@ ### Enhancements -* Add support for Jekyll 3.0 -* Minor updates to syntax highlighting CSS and theme documentation +- 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. +- 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) +- 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) +- 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 +- 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 +- 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)) +- 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 +- 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) @@ -986,24 +1434,24 @@ ### 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 +- 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. +- 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. +- 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) @@ -1011,54 +1459,54 @@ ### Bug Fixes -* Table weren't filling the entire width of the content container. They now scale at 100%. Thanks [@dhruvbhatia](https://github.com/dhruvbhatia) +- 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 +- 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. +- 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. +- 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 +- 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. +- 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. +- 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. +- 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/LICENSE b/LICENSE new file mode 100644 index 000000000000..3e733ff32a69 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-2020 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/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index afcb825ce2e9..000000000000 --- a/LICENSE.txt +++ /dev/null @@ -1,63 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2018 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 [Lunr](http://lunrjs.com), -Copyright (c) 2017 Oliver Nightingale. -Lunr is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). diff --git a/README.md b/README.md index 4214577238e5..d7a12b51054b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,20 @@ -# [Minimal Mistakes Jekyll Theme](https://mmistakes.github.io/minimal-mistakes/) +# [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.txt) -[![Jekyll](https://img.shields.io/badge/jekyll-%3E%3D%203.6-blue.svg)](https://jekyllrb.com/) +[![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/) [![Ruby gem](https://img.shields.io/gem/v/minimal-mistakes-jekyll.svg)](https://rubygems.org/gems/minimal-mistakes-jekyll) [![Tip Me via PayPal](https://img.shields.io/badge/PayPal-tip%20me-green.svg?logo=paypal)](https://www.paypal.me/mmistakes) -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:. +Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building personal sites, blogs, and portfolios. As the name implies, styling is purposely minimalistic to be enhanced and customized by you :smile:. :sparkles: See what's new in the [CHANGELOG](CHANGELOG.md). +**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) to continue developing and maintaining it.** + +[![Support via PayPal](https://cdn.jsdelivr.net/gh/twolfson/paypal-github-button@1.0.0/dist/button.svg)](https://www.paypal.me/mmistakes) + +**Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll encounter `Unknown tag 'include_cached'` errors at build. + [![Minimal Mistakes live preview][2]][1] [1]: https://mmistakes.github.io/minimal-mistakes/ @@ -16,36 +22,36 @@ Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your ![layout examples](screenshot-layouts.png) -## Notable Features +## Notable features -- Bundled as a "theme gem" for easier install/upgrading. +- 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 +- 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 v1 and v2](https://staticman.net/), and custom). +- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), and [utterances](https://utteranc.es/)). - [Google Analytics](https://www.google.com/analytics/) support. -- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Indonesian, Italian (Italiano), Japanese, Korean, Nepali (Nepalese), Polish, Russian, Slovak, Spanish (Español), Swedish, Turkish (Türkçe), and Vietnamese. +- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Catalan, Chinese, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese. -## Skins (Color Variations) +## Skins (color variations) -This theme comes in nine different skins (including the default one). +This theme comes in nine different skins (in addition to the default one). | `air` | `contrast` | `dark` | | --- | --- | --- | -| ![air skin](https://mmistakes.github.io/minimal-mistakes/assets/images/air-skin-archive.png) | ![contrast skin](https://mmistakes.github.io/minimal-mistakes/assets/images/contrast-skin-archive.png) | ![dark skin](https://mmistakes.github.io/minimal-mistakes/assets/images/dark-skin-archive.png) | +| [![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) | ![mint skin](https://mmistakes.github.io/minimal-mistakes/assets/images/mint-skin-archive.png) | ![sunrise skin](https://mmistakes.github.io/minimal-mistakes/assets/images/sunrise-skin-archive.png) | +| [![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) | ![neon skin](https://mmistakes.github.io/minimal-mistakes/assets/images/neon-skin-archive.png) | ![plum skin](https://mmistakes.github.io/minimal-mistakes/assets/images/plum-skin-archive.png) | +| [![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 +## Demo pages | Name | Description | | ------------------------------------------- | ----------------------------------------------------- | @@ -70,11 +76,15 @@ Additional sample posts are available under [posts archive][year-archive] on the ## Installation -There are three ways to install the theme: as a Ruby gem (for self-hosted sites), as a Ruby gem + jekyll-remote-theme plugin (GitHub Pages hosted sites), or forking/directly copying all of the theme files into your project. +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. -### Ruby Gem Method +### Gem-based method -1. Install the theme as a Ruby Gem by adding it to your `Gemfile` like so: +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" @@ -94,7 +104,11 @@ There are three ways to install the theme: as a Ruby gem (for self-hosted sites) To update the theme run `bundle update`. -### GitHub Pages Method +### 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: @@ -104,13 +118,17 @@ To update the theme run `bundle update`. gem "github-pages", group: :jekyll_plugins ``` -2. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: +2. Add `jekyll-include-cache` to the `plugins` array of your `_config.yml`. + +3. Fetch and update bundled gems by running the following [Bundler](http://bundler.io/) command: ```bash bundle ``` -3. Add `remote_theme: "mmistakes/minimal-mistakes"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry. +4. Add `remote_theme: "mmistakes/minimal-mistakes@4.20.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 @@ -169,7 +187,9 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http - [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/) - [FitVids.JS](http://fitvidsjs.com/) - [GreedyNav.js](https://github.com/lukejacksonn/GreedyNav) -- [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll) +- [Smooth Scroll](https://github.com/cferdinandi/smooth-scroll) +- [Gumshoe](https://github.com/cferdinandi/gumshoe) +- [jQuery throttle / debounce](http://benalman.com/projects/jquery-throttle-debounce-plugin/) - [Lunr](http://lunrjs.com) --- @@ -178,7 +198,7 @@ To test the theme, run `bundle exec rake preview` and open your browser at `http The MIT License (MIT) -Copyright (c) 2013-2018 Michael Rose and contributors +Copyright (c) 2013-2020 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 @@ -218,15 +238,23 @@ Breakpoint is distributed under the terms of the [MIT/GPL Licenses](http://opens Minimal Mistakes incorporates [FitVids.js](https://github.com/davatron5000/FitVids.js/), Copyright (c) 2013 Dave Rubert and Chris Coyier. -FitVids is distributed under the terms of the [WTFPL License](http://sam.zoy.org/wtfpl/). +FitVids is distributed under the terms of the [WTFPL License](http://www.wtfpl.net/). Minimal Mistakes incorporates [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/), Copyright (c) 2014-2016 Dmitry Semenov, http://dimsemenov.com. Magnific Popup is distributed under the terms of the MIT License. -Minimal Mistakes incorporates [jQuery Smooth Scroll](https://github.com/kswedberg/jquery-smooth-scroll), -Copyright (c) 2017 Karl Swedberg. -jQuery Smooth Scroll is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). +Minimal Mistakes incorporates [Smooth Scroll](http://github.com/cferdinandi/smooth-scroll), +Copyright (c) 2019 Chris Ferdinandi. +Smooth Scroll is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). + +Minimal Mistakes incorporates [Gumshoejs](http://github.com/cferdinandi/gumshoe), +Copyright (c) 2019 Chris Ferdinandi. +Smooth Scroll 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. @@ -241,5 +269,5 @@ 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. +Copyright (c) 2018 Oliver Nightingale. Lunr is distributed under the terms of the [MIT License](http://opensource.org/licenses/MIT). diff --git a/_config.yml b/_config.yml index 00d9b2e8e35f..3688687301e0 100644 --- a/_config.yml +++ b/_config.yml @@ -18,16 +18,19 @@ minimal_mistakes_skin : "default" # "air", "aqua", "contrast", "dark", "dirt" locale : "en-US" 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 : false # true, false (default) words_per_minute : 200 comments: - provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "staticman_v2" "custom" + provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom" disqus: shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- discourse: @@ -37,22 +40,12 @@ comments: appid : num_posts : # 5 (default) colorscheme : # "light" (default), "dark" -staticman: - allowedFields : # ['name', 'email', 'url', 'message'] - branch : # "master" - commitMessage : # "New comment." - filename : # comment-{@timestamp} - format : # "yml" - moderation : # true - path : # "/_data/comments/{options.slug}" (default) - requiredFields : # ['name', 'email', 'message'] - transforms: - email : # "md5" - generatedFields: - date: - type : # "date" - options: - format : # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds" + utterances: + theme : # "github-light" (default), "github-dark" + issue_term : # "pathname" (default) + staticman: + branch : # "master" + endpoint : # "https://{your Staticman v3 API}/v3/entry/github/" reCaptcha: siteKey : secret : @@ -60,13 +53,15 @@ atom_feed: path : # blank (default) uses feed.xml search : # true, false (default) search_full_content : # true, false (default) -search_provider : # lunr (default), algolia +search_provider : # lunr (default), algolia, google 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 : @@ -90,43 +85,60 @@ social: # Analytics analytics: - provider : false # false (default), "google", "google-universal", "custom" + provider : false # 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." + bio : "I am an **amazing** person." location : "Somewhere" email : - uri : - home : # null (default), "absolute or relative url to link to author home" - bitbucket : - codepen : - dribbble : - flickr : - facebook : - foursquare : - github : - gitlab : - google_plus : - keybase : - instagram : - lastfm : - linkedin : # "john-doe-12345678" (the last part of your profile url, e.g. https://www.linkedin.com/in/john-doe-12345678) - pinterest : - soundcloud : - stackoverflow : # "123456/username" (the last part of your profile url, e.g. https://stackoverflow.com/users/123456/username) - steam : # "steamId" (the last part of your profile url, e.g. https://steamcommunity.com/id/steamId/) - tumblr : - twitter : - vine : - weibo : - xing : - youtube : # "https://youtube.com/c/MichaelRoseDesign" + 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 @@ -154,6 +166,7 @@ exclude: - log - node_modules - package.json + - package-lock.json - Rakefile - README - tmp @@ -189,7 +202,7 @@ kramdown: # Sass/SCSS sass: sass_dir: _sass - style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style + style: compressed # https://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style # Outputting @@ -205,7 +218,7 @@ plugins: - jekyll-sitemap - jekyll-gist - jekyll-feed - - jemoji + - jekyll-include-cache # mimic GitHub Pages with --safe whitelist: @@ -213,7 +226,7 @@ whitelist: - jekyll-sitemap - jekyll-gist - jekyll-feed - - jemoji + - jekyll-include-cache include: ["_pages"] @@ -225,8 +238,8 @@ include: ["_pages"] # - 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/ -# - path: /categories/ -# - path: / +# - /categories/my-awesome-category/index.html ~> path: /categories/ +# - /my-awesome-category/index.html ~> path: / category_archive: type: liquid path: /categories/ @@ -247,7 +260,7 @@ tag_archive: # HTML Compression -# - http://jch.penibelst.de/ +# - https://jch.penibelst.de/ compress_html: clippings: all ignore: diff --git a/_data/ui-text.yml b/_data/ui-text.yml index 51692d82e006..f9853e27427b 100644 --- a/_data/ui-text.yml +++ b/_data/ui-text.yml @@ -3,14 +3,19 @@ # 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" - toc_label : "On This Page" - ext_link_label : "Direct Link" + 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" @@ -18,16 +23,16 @@ en: &DEFAULT_EN tags_label : "Tags:" categories_label : "Categories:" date_label : "Updated:" - comments_label : "Leave a Comment" + comments_label : "Leave a comment" comments_title : "Comments" - more_label : "Learn More" - related_label : "You May Also Enjoy" + 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" + 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" @@ -35,12 +40,14 @@ en: &DEFAULT_EN comment_form_name_label : "Name" comment_form_email_label : "Email address" comment_form_website_label : "Website (optional)" - comment_btn_submit : "Submit Comment" + 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: @@ -55,43 +62,53 @@ en-AU: # Spanish # ------- es: &DEFAULT_ES + skip_links : "Saltar enlaces" + skip_primary_nav : "Saltar a navegación principal" + skip_content : "Saltar a contenido" + skip_footer : "Saltar a pie" page : "Página" pagination_previous : "Anterior" pagination_next : "Siguiente" breadcrumb_home_label : "Inicio" breadcrumb_separator : "/" - menu_label : - toc_label : "Contenidos" - ext_link_label : "Enlace" + menu_label : "Alternar menú" + search_label : "Alternar búsqueda" + toc_label : "En esta página" + ext_link_label : "Enlace directo" less_than : "menos de" - minute_read : "minuto de lectura" - share_on_label : "Compartir" + minute_read : "minuto(s) de lectura" + share_on_label : "Compartir en" meta_label : tags_label : "Etiquetas:" categories_label : "Categorías:" date_label : "Actualizado:" - comments_label : "Comentar" - comments_title : + comments_label : "Deja un comentario" + comments_title : "Comentarios" more_label : "Ver más" - related_label : "Podrías ver también" + related_label : "Puede que también te interese" follow_label : "Seguir:" feed_label : "Feed" - powered_by : "Powered by" + powered_by : "Funciona con" website_label : "Sitio web" - email_label : "Email" + email_label : "Correo electrónico" recent_posts : "Entradas recientes" - undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml" - comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos" + undefined_wpm : "El parámetro words_per_minute (palabras por minuto) no está definido en _config.yml" + comment_form_info : "Tu dirección de correo electrónico no se publicará. Los campos obligatorios están marcados" comment_form_comment_label : "Comentario" - comment_form_md_info : "Markdown está soportado." + comment_form_md_info : "Puedes utilizar Markdown" comment_form_name_label : "Nombre" - comment_form_email_label : "Dirección de E-mail" + comment_form_email_label : "Dirección de correo electrónico" comment_form_website_label : "Sitio web (opcional)" - comment_btn_submit : "Enviar Commentario" + comment_btn_submit : "Enviar comentario" comment_btn_submitted : "Enviado" - comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado" - comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo" + comment_success_msg : "¡Gracias por tu comentario! Se publicará una vez sea aprobado." + comment_error_msg : "Ha ocurrido un error al enviar el comentario. Asegúrate de completar todos los campos obligatorios e inténtalo de nuevo." loading_label : "Cargando..." + search_label_text : "Términos de búsqueda..." + search_placeholder_text : "Términos de búsqueda..." + search_algolia_no_results : + results_found : "resultado(s) encontrado(s)" + back_to_top : "Volver arriba" es-ES: <<: *DEFAULT_ES es-CO: @@ -100,23 +117,28 @@ es-CO: # French # ------ fr: &DEFAULT_FR + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Page" pagination_previous : "Précédent" pagination_next : "Suivant" breadcrumb_home_label : "Accueil" breadcrumb_separator : "/" - menu_label : + menu_label : "Menu" + search_label : toc_label : "Sur cette page" ext_link_label : "Lien direct" less_than : "moins de" - minute_read : "minute de lecture" + 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 : + comments_title : "Commentaires" more_label : "Lire plus" related_label : "Vous pourriez aimer aussi" follow_label : "Contact" @@ -126,7 +148,6 @@ fr: &DEFAULT_FR email_label : "Email" recent_posts : "Posts récents" undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml" - comments_title : "Commentaires" 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é." @@ -138,6 +159,11 @@ fr: &DEFAULT_FR comment_success_msg : "Merci pour votre commentaire, il sera visible sur le site une fois approuvé." comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez." loading_label : "Chargement..." + search_label_text : + search_placeholder_text : "Entrez votre recherche..." + search_algolia_no_results : + results_found : "Résultat(s) trouvé(s)" + back_to_top : "Retour en haut" fr-FR: <<: *DEFAULT_FR fr-BE: @@ -148,12 +174,17 @@ fr-CH: # 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: " @@ -185,18 +216,25 @@ tr: &DEFAULT_TR comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir." comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin." loading_label : "Yükleniyor..." + search_label_text : + search_algolia_no_results : tr-TR: <<: *DEFAULT_TR # Portuguese # ---------- pt: &DEFAULT_PT + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Página" pagination_previous : "Anterior" pagination_next : "Seguinte" 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" @@ -228,57 +266,74 @@ pt: &DEFAULT_PT comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado." comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente." loading_label : "A carregar..." + search_label_text : + search_algolia_no_results : pt-PT: <<: *DEFAULT_PT # Brazilian Portuguese pt-BR: + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Página" pagination_previous : "Anterior" pagination_next : "Próxima" breadcrumb_home_label : "Home" breadcrumb_separator : "/" menu_label : + search_label : "Buscar" toc_label : "Nesta página" ext_link_label : "Link direto" less_than : "menos que" minute_read : "minuto(s) de leitura" - share_on_label : "Compartilhe em" + share_on_label : "Compartilhe" meta_label : tags_label : "Tags:" categories_label : "Categorias:" date_label : "Atualizado em:" comments_label : "Deixe um comentário" - comments_title : - more_label : "Aprenda mais" - related_label : "Talvez você goste também" - follow_label : "Acompanhe em" + comments_title : "Comentários" + more_label : "Saiba mais" + related_label : "Talvez você também goste" + follow_label : "Acompanhe no" feed_label : "Feed" - powered_by : "Feito com" + powered_by : "Desenvolvido com" website_label : "Site" - email_label : "Email" - recent_posts : "Postagens recentes" - undefined_wpm : "Parâmetro indefinido em words_per_minute no _config.yml" - comment_form_info : "Seu email não será publicado. Os campos obrigatórios estão marcados" + email_label : "E-mail" + recent_posts : "Publicações recentes" + undefined_wpm : "Parâmetro words_per_minute indefinido no _config.yml" + comment_form_info : "Seu e-mail não será publicado. Os campos obrigatórios estão marcados" comment_form_comment_label : "Comentário" - comment_form_md_info : "Markdown é suportado." + comment_form_md_info : "Você pode usar Markdown." comment_form_name_label : "Nome" - comment_form_email_label : "Email" + comment_form_email_label : "E-mail" comment_form_website_label : "Site (opcional)" - comment_btn_submit : "Enviar Comentário" + comment_btn_submit : "Enviar comentário" comment_btn_submitted : "Enviado" comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado." - comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente." + comment_error_msg : "Desculpe, ocorreu um erro no envio. Verifique se todos os campos obrigatórios foram preenchidos e tente novamente." loading_label : "Carregando..." + search_label_text : + search_placeholder_text : "Pesquisar..." + search_algolia_no_results : + 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" @@ -310,22 +365,32 @@ it: &DEFAULT_IT comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato." comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova." loading_label : "Caricamento..." + search_label_text : + search_placeholder_text : "Inserisci termini di ricerca..." + search_algolia_no_results : + results_found : "Risultati" + back_to_top : "Vai su" it-IT: <<: *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 : "向后" + pagination_previous : "上一页" + pagination_next : "下一页" breadcrumb_home_label : "首页" breadcrumb_separator : "/" menu_label : "切换菜单" - toc_label : "在本页上" + search_label : "切换搜索" + toc_label : "目录" ext_link_label : "直接链接" less_than : "少于" - minute_read : "分钟读完" + minute_read : "分钟阅读" share_on_label : "分享" meta_label : tags_label : "标签:" @@ -341,10 +406,10 @@ zh: &DEFAULT_ZH_HANS website_label : "网站" email_label : "电子邮箱" recent_posts : "最新文章" - undefined_wpm : "_config.yml配置中words_per_minute字段未定义" + undefined_wpm : "_config.yml 配置中 words_per_minute 字段未定义" comment_form_info : "您的电子邮箱地址并不会被展示。请填写标记为必须的字段。" comment_form_comment_label : "评论" - comment_form_md_info : "Markdown语法已支持。" + comment_form_md_info : "支持 Markdown 语法。" comment_form_name_label : "姓名" comment_form_email_label : "电子邮箱" comment_form_website_label : "网站(可选)" @@ -353,18 +418,28 @@ zh: &DEFAULT_ZH_HANS comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。" comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。" loading_label : "正在加载..." + search_label_text : "输入您要搜索的关键词..." + search_placeholder_text : "输入您要搜索的关键词..." + search_algolia_no_results : "无结果" + results_found : "条记录匹配" + back_to_top : "返回顶部" zh-CN: <<: *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 : "較新" + pagination_previous : "前一頁" + pagination_next : "後一頁" breadcrumb_home_label : "首頁" breadcrumb_separator : "/" menu_label : "切換選單" + search_label : "切換搜索" toc_label : "本頁" ext_link_label : "外部連結" less_than : "少於" @@ -387,7 +462,7 @@ zh-TW: &DEFAULT_ZH_HANT undefined_wpm : "_config.yml 中未定義 words_per_minute" comment_form_info : "您的電子信箱不會被公開. 必填部份已標記" comment_form_comment_label : "留言內容" - comment_form_md_info : "支援Markdown語法。" + comment_form_md_info : "支援 Markdown 語法。" comment_form_name_label : "名字" comment_form_email_label : "電子信箱帳號" comment_form_website_label : "網頁 (可選填)" @@ -396,18 +471,28 @@ zh-TW: &DEFAULT_ZH_HANT comment_success_msg : "感謝您的留言! 審核後將會顯示在站上。" comment_error_msg : "抱歉,部份資料輸入有問題。請確認資料填寫正確後再試一次。" loading_label : "載入中..." + search_label_text : "輸入您要搜索的關鍵詞..." + search_placeholder_text : "輸入您要搜索的關鍵詞..." + search_algolia_no_results : "沒有結果" + results_found : "條匹配的記錄" + back_to_top : "回到頂部" zh-HK: <<: *DEFAULT_ZH_HANT # German / Deutsch # ---------------- de: &DEFAULT_DE + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Seite" pagination_previous : "Vorherige" pagination_next : "Nächste" 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" @@ -439,7 +524,9 @@ de: &DEFAULT_DE comment_success_msg : "Danke für Ihren Kommentar! Er wird auf der Seite angezeigt, nachdem er geprüft wurde." comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte füllen Sie alle benötigten Felder aus und versuchen Sie es erneut." loading_label : "Lade..." + search_label_text : search_placeholder_text : "Suchbegriff eingeben..." + search_algolia_no_results : results_found : "Ergebnis(se) gefunden" de-DE: <<: *DEFAULT_DE @@ -457,12 +544,17 @@ de-LU: # 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 : "कम्तिमा" @@ -494,18 +586,25 @@ ne: &DEFAULT_NE comment_success_msg : "तपाईंको टिप्पणीको लागि धन्यवाद! एक पटक यो अनुमोदन गरेपछी यो साइटमा देखाउनेछ।" comment_error_msg : "माफ गर्नुहोस्, तपाईंको टिप्पणी त्रुटि थियो।सबै आवश्यक जानकारीहरु पूरा गरिएको छ भने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।" loading_label : "लोड हुँदैछ ..." + search_label_text : + search_algolia_no_results : ne-NP: <<: *DEFAULT_NE # Korean # ------ ko: &DEFAULT_KO + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "페이지" pagination_previous : "이전" pagination_next : "다음" breadcrumb_home_label : "Home" breadcrumb_separator : "/" menu_label : "토글 메뉴" + search_label : toc_label : "On This Page" ext_link_label : "직접 링크" less_than : "최대" @@ -537,18 +636,28 @@ ko: &DEFAULT_KO comment_success_msg : "감사합니다! 댓글이 머지된 후 확인하실 수 있습니다." comment_error_msg : "댓글 등록에 문제가 있습니다. 필요 필드를 작성했는지 확인하고 다시 시도하세요." loading_label : "로딩중..." + search_label_text : + search_placeholder_text : "검색어를 입력하세요..." + search_algolia_no_results : + results_found : "개 결과 발견" + back_to_top : "맨 위로 이동" ko-KR: <<: *DEFAULT_KO # Russian / Русский # ----------------- ru: &DEFAULT_RU + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Страница" pagination_previous : "Предыдущая" pagination_next : "Следующая" breadcrumb_home_label : "Главная" breadcrumb_separator : "/" menu_label : "Выпадающее меню" + search_label : toc_label : "Содержание" ext_link_label : "Прямая ссылка" less_than : "менее" @@ -580,7 +689,9 @@ ru: &DEFAULT_RU comment_success_msg : "Спасибо за Ваш комментарий! Он будет опубликован на сайте после проверки." comment_error_msg : "К сожалению, произошла ошибка с отправкой комментария. Пожалуйста, убедитесь, что все обязательные поля заполнены и попытайтесь снова." loading_label : "Отправка..." + search_label_text : search_placeholder_text : "Введите поисковый запрос..." + search_algolia_no_results : results_found : "Найдено" ru-RU: <<: *DEFAULT_RU @@ -588,12 +699,17 @@ ru-RU: # Lithuanian / Lietuviškai # ------------------------ lt: &DEFAULT_LT + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Puslapis" pagination_previous : "Ankstesnis" pagination_next : "Sekantis" 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" @@ -614,7 +730,7 @@ lt: &DEFAULT_LT email_label : "El. paštas" recent_posts : "Naujausi įrašai" undefined_wpm : "Nedeklaruotas parametras words_per_minute faile _config.yml" - comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti." + comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti" comment_form_comment_label : "Komentaras" comment_form_md_info : "Markdown palaikomas." comment_form_name_label : "Vardas" @@ -625,18 +741,25 @@ lt: &DEFAULT_LT comment_success_msg : "Ačiū už komentarą! Jis bus parodytas kai bus patvirtintas." comment_error_msg : "Atleiskite, įvyko netikėta klaida įrašant komentarą. Pasitikrinkite ar užpildėte visus būtinus laukus ir pamėginkite dar kartą." loading_label : "Kraunama..." + search_label_text : + search_algolia_no_results : lt-LT: <<: *DEFAULT_LT # Greek # ----- gr: &DEFAULT_GR + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Σελίδα" pagination_previous : "Προηγούμενo" pagination_next : "Επόμενo" breadcrumb_home_label : "Αρχική" breadcrumb_separator : "/" menu_label : "Μενού" + search_label : toc_label : "Περιεχόμενα" ext_link_label : "Εξωτερικός Σύνδεσμος" less_than : "Λιγότερο από" @@ -668,7 +791,9 @@ gr: &DEFAULT_GR comment_success_msg : "Ευχαριστούμε για το σχόλιό σας! Θα εμφανιστεί στην ιστοσελίδα αφού εγκριθεί." comment_error_msg : "Λυπούμαστε, παρουσιάστηκε σφάλμα με την υποβολή σας. Παρακαλούμε βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα πεδία συμπληρωμένα και δοκιμάστε ξανά." loading_label : "Φόρτωση..." + search_label_text : search_placeholder_text : "Εισάγετε όρο αναζήτησης..." + search_algolia_no_results : results_found : "Αποτελέσματα" gr-GR: <<: *DEFAULT_GR @@ -676,12 +801,17 @@ gr-GR: # Swedish # ------- sv: &DEFAULT_SV + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Sidan" pagination_previous : "Föregående" pagination_next : "Nästa" breadcrumb_home_label : "Hem" breadcrumb_separator : "/" - menu_label : "Meny ridå" + 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" @@ -702,17 +832,22 @@ sv: &DEFAULT_SV email_label : "E-post" recent_posts : "Senaste inlägg" undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml" - comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade." + comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade" comment_form_comment_label : "Kommentar" - comment_form_md_info : "Använd Markdown för text-formateringen." + 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 en av fälten, se till att du fyller i alla rutor och försök igen." + 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: @@ -721,12 +856,17 @@ sv-FI: # 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" @@ -758,6 +898,11 @@ nl: &DEFAULT_NL comment_success_msg : "Bedankt voor uw reactie! Het zal op de site worden weergegeven zodra het is goedgekeurd." comment_error_msg : "Sorry, er is een fout opgetreden bij uw inzending. Zorg ervoor dat alle vereiste velden zijn voltooid en probeer het opnieuw." loading_label : "Laden..." + search_label_text : "Geef uw zoekterm in..." + search_placeholder_text : "Geef uw zoekterm in..." + search_algolia_no_results : + results_found : "Resultaat gevonden" + back_to_top : "Terug naar boven" nl-BE: <<: *DEFAULT_NL nl-NL: @@ -766,12 +911,17 @@ nl-NL: # Indonesian # ---------- id: &DEFAULT_ID + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Halaman" pagination_previous : "Kembali" pagination_next : "Maju" breadcrumb_home_label : "Home" breadcrumb_separator : "/" menu_label : "Menu Toggle" + search_label : toc_label : "Pada Halaman Ini" ext_link_label : "Link langsung" less_than : "Kurang dari" @@ -803,39 +953,46 @@ id: &DEFAULT_ID comment_success_msg : "Terimakasih atas komentar Anda! Komentar ini akan tampil setelah disetujui." comment_error_msg : "Maaf, ada kesalahan pada submisi Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali." loading_label : "Sedang meload..." + search_label_text : + search_algolia_no_results : id-ID: <<: *DEFAULT_ID # Vietnamese # ---------- vi: &DEFAULT_VI + skip_links : "Đường dẫn tắt" + skip_primary_nav : "Nhảy tới thanh điều hướng" + skip_content : "Nhảy tới nội dung" + skip_footer : "Nhảy tới chân trang" page : "Trang" pagination_previous : "Trước" - pagination_next : "Sau" + pagination_next : "Kế tiếp" breadcrumb_home_label : "Trang chủ" breadcrumb_separator : "/" menu_label : "Menu" + search_label : "Tìm kiếm" toc_label : "Tại trang này" ext_link_label : "Đường dẫn trực tiếp" - less_than : "nhỏ hơn" - minute_read : "phút đọc" + less_than : "chỉ cần" + minute_read : "phút để đọc" share_on_label : "Chia sẻ tại" meta_label : - tags_label : "Nhãn:" - categories_label : "Chủ đề:" - date_label : "Cập nhật:" + tags_label : "Thẻ:" + categories_label : "Danh mục:" + date_label : "Ngày cập nhật:" comments_label : "Để lại bình luận" comments_title : "Bình luận" more_label : "Mở rộng" related_label : "Có thể bạn cũng thích" follow_label : "Theo dõi:" feed_label : "Feed" - powered_by : "Được hỗ trợ bởi" + powered_by : "Xây dựng trên nền tảng" website_label : "Website" email_label : "Email" recent_posts : "Bài viết mới" undefined_wpm : "Chưa định nghĩa thông số words_per_minute tại _config.yml" - comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu." + comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu" comment_form_comment_label : "Bình luận" comment_form_md_info : "Hỗ trợ Markdown." comment_form_name_label : "Tên" @@ -846,18 +1003,28 @@ vi: &DEFAULT_VI comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt." comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại." loading_label : "Đang tải..." + search_label_text : "Nhập từ khóa cần tìm..." + search_placeholder_text : "Nhập từ khóa cần tìm..." + search_algolia_no_results : + 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 : + skip_content : + skip_footer : page : "Side" pagination_previous : "Forrige" pagination_next : "Næste" breadcrumb_home_label : "Home" breadcrumb_separator : "/" menu_label : "Vis/skjul menu" + search_label : toc_label : "På denne side" ext_link_label : "Direkte link" less_than : "mindre end" @@ -889,7 +1056,9 @@ da: &DEFAULT_DA comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt." comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt." loading_label : "Indlæser..." + search_label_text : search_placeholder_text : "Hvad leder du efter..." + search_algolia_no_results : results_found : "Resultat(er) fundet" back_to_top : "Tilbage til toppen" da-DK: @@ -898,12 +1067,17 @@ da-DK: # Polish # ------ pl: &DEFAULT_PL + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Strona" pagination_previous : "Poprzednia" pagination_next : "Następna" breadcrumb_home_label : "Strona główna" breadcrumb_separator : "/" menu_label : "Przełącz menu" + search_label : toc_label : "Spis treści" ext_link_label : "Link bezpośredni" less_than : "mniej niż" @@ -924,7 +1098,7 @@ pl: &DEFAULT_PL 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_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ę" @@ -935,18 +1109,25 @@ pl: &DEFAULT_PL comment_success_msg : "Dziękuję za Twój komentarz! Zostanie dodany po akceptacji." comment_error_msg : "Niestety wystąpił błąd. Proszę upewnij się, że wszystkie wymagane pola zostały wypełnione i spróbuj ponownie." loading_label : "Trwa ładowanie strony..." + search_label_text : + search_algolia_no_results : "Brak wyników" 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 : @@ -978,7 +1159,9 @@ ja: &DEFAULT_JA comment_success_msg : "コメントありがとうございます! コメントは承認されるとページに表示されます。" comment_error_msg : "送信エラーです。必須項目がすべて入力されていることを確認して再送信してください。" loading_label : "読み込み中..." + search_label_text : search_placeholder_text : "検索キーワードを入力してください..." + search_algolia_no_results : results_found : "件" ja-JP: <<: *DEFAULT_JA @@ -986,12 +1169,17 @@ ja-JP: # Slovak # ----------------- sk: &DEFAULT_SK + skip_links : + skip_primary_nav : + skip_content : + skip_footer : page : "Stránka" pagination_previous : "Predošlá" pagination_next : "Ďalšia" breadcrumb_home_label : "Domov" breadcrumb_separator : "/" menu_label : "Menu" + search_label : toc_label : "Obsah" ext_link_label : "Priamy odkaz" less_than : "menej ako" @@ -1023,12 +1211,589 @@ sk: &DEFAULT_SK comment_success_msg : "Ďakujem za tvoj komentár! Po schválení bude zobrazený na stránke." comment_error_msg : "Prepáč, pri ukladaní nastala chyba. Ubezpeč sa prosím, že si vyplnil všetky požadované polia a skús znova." loading_label : "Načítava sa..." + search_label_text : search_placeholder_text : "Zadaj hľadaný výraz..." + search_algolia_no_results : results_found : "Nájdených výsledkov" back_to_top : "Na začiatok stránky" sk-SK: <<: *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 : "Hyppää pää navigaatioon" + skip_content : "Hyppää sisältöön" + skip_footer : "Hyppää 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 : "lukuaika" + share_on_label : "Jaa" + meta_label : + tags_label : "Tagit:" + categories_label : "Kategoriat:" + date_label : "Päivitetty:" + comments_label : "Jätä kommentti" + comments_title : "Kommentit" + more_label : "Lisää" + related_label : "Voit olla kiinnostunut myös" + follow_label : "Seuraa:" + feed_label : "Syöte" + powered_by : "Voimanlähteenä" + website_label : "Websivu" + email_label : "Email" + recent_posts : "Viimeisimmät postaukset" + undefined_wpm : "words_per_minute asetusta ei ole määritelty _config.yml tiedostossa" + comment_form_info : "Your email address will not be published. Required fields are marked" + comment_form_comment_label : "Kommentti" + comment_form_md_info : "Tukee markdown muotoilua." + comment_form_name_label : "Nimi" + comment_form_email_label : "Email osoite" + comment_form_website_label : "Webbisivu (vapaaehtoinen)" + comment_btn_submit : "Lähetä" + comment_btn_submitted : "Lähetetty" + comment_success_msg : "Kiitos kommentista, se julkaistaan tällä sivulla moderoinnin jälkeen." + comment_error_msg : "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 : + results_found : "Tulosta" + back_to_top : "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 + # Another locale # -------------- # diff --git a/_includes/analytics-providers/google-gtag.html b/_includes/analytics-providers/google-gtag.html index 31f2a6960f93..16d0cf176bac 100644 --- a/_includes/analytics-providers/google-gtag.html +++ b/_includes/analytics-providers/google-gtag.html @@ -5,5 +5,5 @@ function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); - gtag('config', '{{ site.analytics.google.tracking_id }}'); + gtag('config', '{{ site.analytics.google.tracking_id }}', { 'anonymize_ip': {{ site.analytics.google.anonymize_ip | default: false }}}); diff --git a/_includes/analytics-providers/google-universal.html b/_includes/analytics-providers/google-universal.html index 10d65b2ee488..68c2674ba930 100644 --- a/_includes/analytics-providers/google-universal.html +++ b/_includes/analytics-providers/google-universal.html @@ -1,9 +1,7 @@ + diff --git a/_includes/analytics-providers/google.html b/_includes/analytics-providers/google.html index b591b995435a..c5742b9817d6 100644 --- a/_includes/analytics-providers/google.html +++ b/_includes/analytics-providers/google.html @@ -1,6 +1,9 @@ - \ No newline at end of file + diff --git a/_includes/archive-single.html b/_includes/archive-single.html index fa5502522761..68174807ef50 100644 --- a/_includes/archive-single.html +++ b/_includes/archive-single.html @@ -10,29 +10,21 @@ {% assign title = post.title %} {% endif %} -
-
diff --git a/_includes/author-profile-custom-links.html b/_includes/author-profile-custom-links.html index cf86521afb4e..b89ffcb7df6c 100644 --- a/_includes/author-profile-custom-links.html +++ b/_includes/author-profile-custom-links.html @@ -1,6 +1,6 @@ {% endcomment %} - {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} + {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}|{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} {% assign category_hashes = page_categories | split: ',' | sort %}

{{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} {% for hash in category_hashes %} - {% assign keyValue = hash | split: '#' %} + {% assign keyValue = hash | split: '|' %} {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} {% unless forloop.last %}, {% endunless %} {% endfor %} diff --git a/_includes/comment.html b/_includes/comment.html index 7b33f46d52c0..2e3013ee2a76 100644 --- a/_includes/comment.html +++ b/_includes/comment.html @@ -1,9 +1,9 @@ -

+
{{ include.name }}
-

{{ comments_label }}

{% when "facebook" %}

{{ comments_label }}

- {% when "google-plus" %} -

{{ comments_label }}

-
Loading Google+ Comments ...
- - - - + + diff --git a/_includes/search/google-search-scripts.html b/_includes/search/google-search-scripts.html new file mode 100644 index 000000000000..4af7423bb3ca --- /dev/null +++ b/_includes/search/google-search-scripts.html @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/_includes/search/search_form.html b/_includes/search/search_form.html index 3058f6b14c7e..c3463798437d 100644 --- a/_includes/search/search_form.html +++ b/_includes/search/search_form.html @@ -1,11 +1,26 @@
-{%- assign search_provider = site.search_provider | default: "lunr" -%} -{%- case search_provider -%} + {%- assign search_provider = site.search_provider | default: "lunr" -%} + {%- case search_provider -%} {%- when "lunr" -%} - -
+
+ + +
+
+ {%- when "google" -%} +
+ + +
+
+ +
{%- when "algolia" -%} - -
-{%- endcase -%} -
\ No newline at end of file + +
+ {%- endcase -%} +
diff --git a/_includes/seo.html b/_includes/seo.html index 2ac0b649a808..7df1253b7f85 100644 --- a/_includes/seo.html +++ b/_includes/seo.html @@ -4,9 +4,7 @@ {%- endif -%} {%- assign seo_url = seo_url | default: site.github.url -%} -{% if site.title_separator %} - {% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %} -{% endif %} +{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %} {%- if page.title -%} {%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%} @@ -16,36 +14,31 @@ {%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%} {%- endif -%} -{%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %} +{% if page.canonical_url %} + {%- assign canonical_url = page.canonical_url %} +{% else %} + {%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %} +{% endif %} {%- assign seo_description = page.description | default: page.excerpt | default: site.description -%} {%- if seo_description -%} - {%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%} + {%- assign seo_description = seo_description | markdownify | strip_html | newline_to_br | strip_newlines | replace: '
', ' ' | escape_once | strip -%} {%- endif -%} -{%- assign author = page.author | default: page.authors[0] | default: site:author -%} +{%- assign author = page.author | default: page.authors[0] | default: site.author -%} {%- assign author = site.data.authors[author] | default: author -%} {%- if author.twitter -%} {%- assign author_twitter = author.twitter | replace: "@", "" -%} {%- endif -%} -{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%} -{%- unless page_large_image contains '://' -%} - {%- assign page_large_image = page_large_image | absolute_url -%} -{%- endunless -%} +{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image | absolute_url -%} {%- assign page_large_image = page_large_image | escape -%} -{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%} -{%- unless page_teaser_image contains '://' -%} - {%- assign page_teaser_image = page_teaser_image | absolute_url -%} -{%- endunless -%} +{%- assign page_teaser_image = page.header.teaser | default: site.og_image | absolute_url -%} {%- assign page_teaser_image = page_teaser_image | escape -%} -{%- assign site_og_image = site.og_image -%} -{%- unless site_og_image contains '://' -%} - {%- assign site_og_image = site_og_image | absolute_url -%} -{%- endunless -%} +{%- assign site_og_image = site.og_image | absolute_url -%} {%- assign site_og_image = site_og_image | escape -%} {%- if page.date -%} @@ -59,6 +52,9 @@ {% if author.name %} + {% if og_type == "article" %} + + {% endif %} {% endif %} @@ -67,7 +63,7 @@ -{% if page.excerpt %} +{% if seo_description %} {% endif %} @@ -125,28 +121,21 @@ {% endif %} -{% if site.og_image %} - -{% endif %} - -{% if site.social %} - -{% endif %} + "url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %}, + "sameAs": {{ site.social.links | jsonify }}{% endif %} + {% endif %} + } + {% if site.google_site_verification %} @@ -160,7 +149,7 @@ {% if site.yandex_site_verification %} {% endif %} -{% if site.naver-site-verification %} - +{% if site.naver_site_verification %} + {% endif %} diff --git a/_includes/sidebar.html b/_includes/sidebar.html index 9dc6a3c36994..a4ca1ca78151 100644 --- a/_includes/sidebar.html +++ b/_includes/sidebar.html @@ -4,20 +4,16 @@ {% if page.sidebar %} {% for s in page.sidebar %} {% if s.image %} - {% if s.image_alt %}{{ s.image_alt }}{% endif %} + {% if s.image_alt %}{{ s.image_alt }}{% endif %} {% endif %} {% if s.title %}

{{ s.title }}

{% endif %} {% if s.text %}{{ s.text | markdownify }}{% endif %} + {% if s.nav %}{% include nav_list nav=s.nav %}{% endif %} {% endfor %} {% if page.sidebar.nav %} {% include nav_list nav=page.sidebar.nav %} {% endif %} {% endif %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/_includes/skip-links.html b/_includes/skip-links.html new file mode 100644 index 000000000000..2cd9f17d814a --- /dev/null +++ b/_includes/skip-links.html @@ -0,0 +1,8 @@ + diff --git a/_includes/social-share.html b/_includes/social-share.html index 10161aa01fec..0b377982b268 100644 --- a/_includes/social-share.html +++ b/_includes/social-share.html @@ -7,7 +7,5 @@ ", " " | replace:"

", " " | @@ -28,7 +29,8 @@ var store = [ replace:"", " "| strip_html | strip_newlines | jsonify }}, {%- else -%} - {{ doc.content | + {{ doc.content | newline_to_br | + replace:"
", " " | replace:"

", " " | replace:"", " " | replace:"", " " | @@ -41,12 +43,7 @@ var store = [ "categories": {{ doc.categories | jsonify }}, "tags": {{ doc.tags | jsonify }}, "url": {{ doc.url | absolute_url | jsonify }}, - "teaser": - {%- if teaser contains "://" -%} - {{ teaser | jsonify }} - {%- else -%} - {{ teaser | absolute_url | jsonify }} - {%- endif -%} + "teaser": {{ teaser | absolute_url | jsonify }} }{%- unless forloop.last and l -%},{%- endunless -%} {%- endfor -%} {%- endfor -%}] diff --git a/assets/js/lunr/lunr.js b/assets/js/lunr/lunr.js index f208eba5a7a5..b37984ab68f3 100644 --- a/assets/js/lunr/lunr.js +++ b/assets/js/lunr/lunr.js @@ -1,6 +1,6 @@ /** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.1.5 - * Copyright (C) 2017 Oliver Nightingale + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.5 + * Copyright (C) 2018 Oliver Nightingale * @license MIT */ @@ -54,14 +54,15 @@ var lunr = function (config) { return builder.build() } -lunr.version = "2.1.5" +lunr.version = "2.3.5" /*! * lunr.utils - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils */ lunr.utils = {} @@ -69,7 +70,8 @@ lunr.utils = {} * Print a warning message to the console. * * @param {String} message The message to be printed. - * @memberOf Utils + * @memberOf lunr.utils + * @function */ lunr.utils.warn = (function (global) { /* eslint-disable no-console */ @@ -90,7 +92,7 @@ lunr.utils.warn = (function (global) { * * @param {Any} obj The object to convert to a string. * @return {String} string representation of the passed object. - * @memberOf Utils + * @memberOf lunr.utils */ lunr.utils.asString = function (obj) { if (obj === void 0 || obj === null) { @@ -99,6 +101,52 @@ lunr.utils.asString = function (obj) { return obj.toString() } } + +/** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ +lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone +} lunr.FieldRef = function (docRef, fieldName, stringValue) { this.docRef = docRef this.fieldName = fieldName @@ -127,6 +175,139 @@ lunr.FieldRef.prototype.toString = function () { return this._stringValue } +/*! + * lunr.Set + * Copyright (C) 2018 Oliver Nightingale + */ + +/** + * A lunr set. + * + * @constructor + */ +lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } +} + +/** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function (other) { + return other + }, + + contains: function () { + return true + } +} + +/** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } +} + +/** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ +lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] +} + +/** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + +lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) +} + +/** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + +lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) +} /** * A function to calculate the inverse document frequency for * a posting. This is shared between the builder and the index @@ -208,7 +389,7 @@ lunr.Token.prototype.clone = function (fn) { } /*! * lunr.tokenizer - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -220,18 +401,26 @@ lunr.Token.prototype.clone = function (fn) { * then will split this string on the character in `lunr.tokenizer.separator`. * Arrays will have their elements converted to strings and wrapped in a lunr.Token. * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * * @static * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} */ -lunr.tokenizer = function (obj) { +lunr.tokenizer = function (obj, metadata) { if (obj == null || obj == undefined) { return [] } if (Array.isArray(obj)) { return obj.map(function (t) { - return new lunr.Token(lunr.utils.asString(t).toLowerCase()) + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) }) } @@ -246,11 +435,15 @@ lunr.tokenizer = function (obj) { if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + tokens.push( - new lunr.Token (str.slice(sliceStart, sliceEnd), { - position: [sliceStart, sliceLength], - index: tokens.length - }) + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) ) } @@ -272,7 +465,7 @@ lunr.tokenizer = function (obj) { lunr.tokenizer.separator = /[\s\-]+/ /*! * lunr.Pipeline - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -475,14 +668,23 @@ lunr.Pipeline.prototype.run = function (tokens) { for (var i = 0; i < stackLength; i++) { var fn = this._stack[i] + var memo = [] - tokens = tokens.reduce(function (memo, token, j) { - var result = fn(token, j, tokens) + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) - if (result === void 0 || result === '') return memo + if (result === void 0 || result === '') continue - return memo.concat(result) - }, []) + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo } return tokens @@ -494,10 +696,12 @@ lunr.Pipeline.prototype.run = function (tokens) { * token and mapping the resulting tokens back to strings. * * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. * @returns {string[]} */ -lunr.Pipeline.prototype.runString = function (str) { - var token = new lunr.Token (str) +lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) return this.run([token]).map(function (t) { return t.toString() @@ -528,7 +732,7 @@ lunr.Pipeline.prototype.toJSON = function () { } /*! * lunr.Vector - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -689,15 +893,14 @@ lunr.Vector.prototype.dot = function (otherVector) { } /** - * Calculates the cosine similarity between this vector and another - * vector. + * Calculates the similarity between this vector and another vector. * * @param {lunr.Vector} otherVector - The other vector to calculate the * similarity with. * @returns {Number} */ lunr.Vector.prototype.similarity = function (otherVector) { - return this.dot(otherVector) / (this.magnitude() * otherVector.magnitude()) + return this.dot(otherVector) / this.magnitude() || 0 } /** @@ -726,7 +929,7 @@ lunr.Vector.prototype.toJSON = function () { /* eslint-disable */ /*! * lunr.stemmer - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt */ @@ -739,6 +942,7 @@ lunr.Vector.prototype.toJSON = function () { * @param {lunr.Token} token - The string to stem * @returns {lunr.Token} * @see {@link lunr.Pipeline} + * @function */ lunr.stemmer = (function(){ var step2list = { @@ -947,7 +1151,7 @@ lunr.stemmer = (function(){ lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') /*! * lunr.stopWordFilter - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -957,6 +1161,7 @@ lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') * The built in lunr.stopWordFilter is built using this generator and can be used * to generate custom stopWordFilters for applications or non English languages. * + * @function * @param {Array} token The token to pass through the filter * @returns {lunr.PipelineFunction} * @see lunr.Pipeline @@ -980,6 +1185,7 @@ lunr.generateStopWordFilter = function (stopWords) { * This is intended to be used in the Pipeline. If the token does not pass the * filter then undefined will be returned. * + * @function * @implements {lunr.PipelineFunction} * @params {lunr.Token} token - A token to check for being a stop word. * @returns {lunr.Token} @@ -1110,7 +1316,7 @@ lunr.stopWordFilter = lunr.generateStopWordFilter([ lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') /*! * lunr.trimmer - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -1137,7 +1343,7 @@ lunr.trimmer = function (token) { lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') /*! * lunr.TokenSet - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -1254,13 +1460,13 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) { if (frame.str.length == 1) { noEditNode.final = true - } else { - stack.push({ - node: noEditNode, - editsRemaining: frame.editsRemaining, - str: frame.str.slice(1) - }) } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) } // deletion @@ -1379,14 +1585,13 @@ lunr.TokenSet.fromFuzzyString = function (str, editDistance) { */ lunr.TokenSet.fromString = function (str) { var node = new lunr.TokenSet, - root = node, - wildcardFound = false + root = node /* * Iterates through all characters within the passed string * appending a node for each character. * - * As soon as a wildcard character is found then a self + * When a wildcard character is found then a self * referencing edge is introduced to continually match * any number of any characters. */ @@ -1395,7 +1600,6 @@ lunr.TokenSet.fromString = function (str) { final = (i == len - 1) if (char == "*") { - wildcardFound = true node.edges[char] = node node.final = final @@ -1405,11 +1609,6 @@ lunr.TokenSet.fromString = function (str) { node.edges[char] = next node = next - - // TODO: is this needed anymore? - if (wildcardFound) { - node.edges["*"] = root - } } } @@ -1436,6 +1635,11 @@ lunr.TokenSet.prototype.toArray = function () { len = edges.length if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) words.push(frame.prefix) } @@ -1632,7 +1836,7 @@ lunr.TokenSet.Builder.prototype.minimize = function (downTo) { } /*! * lunr.Index - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -1646,7 +1850,7 @@ lunr.TokenSet.Builder.prototype.minimize = function (downTo) { * @constructor * @param {Object} attrs - The attributes of the built search index. * @param {Object} attrs.invertedIndex - An index of term/field to document reference. - * @param {Object} attrs.documentVectors - Document vectors keyed by document reference. + * @param {Object} attrs.fieldVectors - Field vectors * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. * @param {string[]} attrs.fields - The names of indexed document fields. * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. @@ -1692,6 +1896,12 @@ lunr.Index = function (attrs) { * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. * Avoid large values for edit distance to improve query performance. * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * * To escape special characters the backslash character '\' can be used, this allows searches to include * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead * of attempting to apply a boost of 2 to the search term "foo". @@ -1707,13 +1917,16 @@ lunr.Index = function (attrs) { * hello^10 * @example term with an edit distance of 2 * hello~2 + * @example terms with presence modifiers + * -foo +bar baz */ /** * Performs a search against the index using lunr query syntax. * * Results will be returned sorted by their score, the most relevant results - * will be returned first. + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. * * For more programmatic querying use lunr.Index#query. * @@ -1764,7 +1977,18 @@ lunr.Index.prototype.query = function (fn) { var query = new lunr.Query(this.fields), matchingFields = Object.create(null), queryVectors = Object.create(null), - termFieldCache = Object.create(null) + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } fn.call(query, query) @@ -1778,10 +2002,13 @@ lunr.Index.prototype.query = function (fn) { * for a single query term. */ var clause = query.clauses[i], - terms = null + terms = null, + clauseMatches = lunr.Set.complete if (clause.usePipeline) { - terms = this.pipeline.runString(clause.term) + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) } else { terms = [clause.term] } @@ -1805,6 +2032,21 @@ lunr.Index.prototype.query = function (fn) { var termTokenSet = lunr.TokenSet.fromClause(clause), expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + for (var j = 0; j < expandedTerms.length; j++) { /* * For each term get the posting and termIndex, this is required for @@ -1826,26 +2068,50 @@ lunr.Index.prototype.query = function (fn) { var field = clause.fields[k], fieldPosting = posting[field], matchingDocumentRefs = Object.keys(fieldPosting), - termField = expandedTerm + "/" + field + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) /* - * To support field level boosts a query vector is created per - * field. This vector is populated using the termIndex found for - * the term and a unit value with the appropriate boost applied. + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. * - * If the query vector for this field does not exist yet it needs - * to be created. */ - if (queryVectors[field] === undefined) { - queryVectors[field] = new lunr.Vector + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue } /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. * Using upsert because there could already be an entry in the vector * for the term we are working with. In that case we just add the scores * together. */ - queryVectors[field].upsert(termIndex, 1 * clause.boost, function (a, b) { return a + b }) + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) /** * If we've already seen this term, field combo then we've already collected @@ -1879,12 +2145,65 @@ lunr.Index.prototype.query = function (fn) { } } } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } } var matchingFieldRefs = Object.keys(matchingFields), results = [], matches = Object.create(null) + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + for (var i = 0; i < matchingFieldRefs.length; i++) { /* * Currently we have document fields that match the query, but we @@ -1895,8 +2214,17 @@ lunr.Index.prototype.query = function (fn) { * above, and combined into a final document score using addition. */ var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), - docRef = fieldRef.docRef, - fieldVector = this.fieldVectors[fieldRef], + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], score = queryVectors[fieldRef.fieldName].similarity(fieldVector), docMatch @@ -1961,7 +2289,7 @@ lunr.Index.load = function (serializedIndex) { var attrs = {}, fieldVectors = {}, serializedVectors = serializedIndex.fieldVectors, - invertedIndex = {}, + invertedIndex = Object.create(null), serializedInvertedIndex = serializedIndex.invertedIndex, tokenSetBuilder = new lunr.TokenSet.Builder, pipeline = lunr.Pipeline.load(serializedIndex.pipeline) @@ -2000,7 +2328,7 @@ lunr.Index.load = function (serializedIndex) { } /*! * lunr.Builder - * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2018 Oliver Nightingale */ /** @@ -2029,7 +2357,8 @@ lunr.Index.load = function (serializedIndex) { */ lunr.Builder = function () { this._ref = "id" - this._fields = [] + this._fields = Object.create(null) + this._documents = Object.create(null) this.invertedIndex = Object.create(null) this.fieldTermFrequencies = {} this.fieldLengths = {} @@ -2059,6 +2388,20 @@ lunr.Builder.prototype.ref = function (ref) { this._ref = ref } +/** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + /** * Adds a field to the list of document fields that will be indexed. Every document being * indexed should have this field. Null values for this field in indexed documents will @@ -2067,10 +2410,22 @@ lunr.Builder.prototype.ref = function (ref) { * All fields should be added before adding documents to the index. Adding fields after * a document has been indexed will have no effect on already indexed documents. * - * @param {string} field - The name of a field to index in all documents. + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' */ -lunr.Builder.prototype.field = function (field) { - this._fields.push(field) +lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} } /** @@ -2112,17 +2467,27 @@ lunr.Builder.prototype.k1 = function (number) { * it should have all fields defined for indexing, though null or undefined values will not * cause errors. * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. */ -lunr.Builder.prototype.add = function (doc) { - var docRef = doc[this._ref] +lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + this._documents[docRef] = attributes || {} this.documentCount += 1 - for (var i = 0; i < this._fields.length; i++) { - var fieldName = this._fields[i], - field = doc[fieldName], - tokens = this.tokenizer(field), + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), terms = this.pipeline.run(tokens), fieldRef = new lunr.FieldRef (docRef, fieldName), fieldTerms = Object.create(null) @@ -2150,8 +2515,8 @@ lunr.Builder.prototype.add = function (doc) { posting["_index"] = this.termIndex this.termIndex += 1 - for (var k = 0; k < this._fields.length; k++) { - posting[this._fields[k]] = Object.create(null) + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) } this.invertedIndex[term] = posting @@ -2202,9 +2567,11 @@ lunr.Builder.prototype.calculateAverageFieldLengths = function () { accumulator[field] += this.fieldLengths[fieldRef] } - for (var i = 0; i < this._fields.length; i++) { - var field = this._fields[i] - accumulator[field] = accumulator[field] / documentsWithField[field] + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] } this.averageFieldLength = accumulator @@ -2223,13 +2590,17 @@ lunr.Builder.prototype.createFieldVectors = function () { for (var i = 0; i < fieldRefsLength; i++) { var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - field = fieldRef.fieldName, + fieldName = fieldRef.fieldName, fieldLength = this.fieldLengths[fieldRef], fieldVector = new lunr.Vector, termFrequencies = this.fieldTermFrequencies[fieldRef], terms = Object.keys(termFrequencies), termsLength = terms.length + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + for (var j = 0; j < termsLength; j++) { var term = terms[j], tf = termFrequencies[term], @@ -2243,7 +2614,9 @@ lunr.Builder.prototype.createFieldVectors = function () { idf = termIdfCache[term] } - score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[field])) + tf) + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost scoreWithPrecision = Math.round(score * 1000) / 1000 // Converts 1.23456789 to 1.234. // Reducing the precision so that the vectors take up less @@ -2289,7 +2662,7 @@ lunr.Builder.prototype.build = function () { invertedIndex: this.invertedIndex, fieldVectors: this.fieldVectors, tokenSet: this.tokenSet, - fields: this._fields, + fields: Object.keys(this._fields), pipeline: this.searchPipeline }) } @@ -2327,7 +2700,7 @@ lunr.Builder.prototype.use = function (fn) { */ lunr.MatchData = function (term, field, metadata) { var clonedMetadata = Object.create(null), - metadataKeys = Object.keys(metadata) + metadataKeys = Object.keys(metadata || {}) // Cloning the metadata to prevent the original // being mutated during match data combination. @@ -2340,8 +2713,11 @@ lunr.MatchData = function (term, field, metadata) { } this.metadata = Object.create(null) - this.metadata[term] = Object.create(null) - this.metadata[term][field] = clonedMetadata + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } } /** @@ -2456,11 +2832,42 @@ lunr.Query = function (allFields) { * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING * }) */ + lunr.Query.wildcard = new String ("*") lunr.Query.wildcard.NONE = 0 lunr.Query.wildcard.LEADING = 1 lunr.Query.wildcard.TRAILING = 2 +/** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ +lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 +} + /** * A single clause in a {@link lunr.Query} contains a term and details on how to * match that term against a {@link lunr.Index}. @@ -2470,7 +2877,8 @@ lunr.Query.wildcard.TRAILING = 2 * @property {number} [boost=1] - Any boost that should be applied when matching this clause. * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. - * @property {number} [wildcard=0] - Whether the term should have wildcards appended or prepended. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. */ /** @@ -2508,17 +2916,44 @@ lunr.Query.prototype.clause = function (clause) { clause.term = "" + clause.term + "*" } + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + this.clauses.push(clause) return this } +/** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ +lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true +} + /** * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} * to the list of clauses that make up this query. * - * @param {string} term - The term to add to the query. - * @param {Object} [options] - Any additional properties to add to the query clause. + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. * @returns {lunr.Query} * @see lunr.Query#clause * @see lunr.Query~Clause @@ -2530,10 +2965,17 @@ lunr.Query.prototype.clause = function (clause) { * boost: 10, * wildcard: lunr.Query.wildcard.TRAILING * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) */ lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + var clause = options || {} - clause.term = term + clause.term = term.toString() this.clause(clause) @@ -2645,6 +3087,7 @@ lunr.QueryLexer.FIELD = 'FIELD' lunr.QueryLexer.TERM = 'TERM' lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' lunr.QueryLexer.BOOST = 'BOOST' +lunr.QueryLexer.PRESENCE = 'PRESENCE' lunr.QueryLexer.lexField = function (lexer) { lexer.backup() @@ -2733,6 +3176,22 @@ lunr.QueryLexer.lexText = function (lexer) { return lunr.QueryLexer.lexBoost } + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + if (char.match(lunr.QueryLexer.termSeparator)) { return lunr.QueryLexer.lexTerm } @@ -2750,7 +3209,7 @@ lunr.QueryParser.prototype.parse = function () { this.lexer.run() this.lexemes = this.lexer.lexemes - var state = lunr.QueryParser.parseFieldOrTerm + var state = lunr.QueryParser.parseClause while (state) { state = state(this) @@ -2775,7 +3234,7 @@ lunr.QueryParser.prototype.nextClause = function () { this.currentClause = {} } -lunr.QueryParser.parseFieldOrTerm = function (parser) { +lunr.QueryParser.parseClause = function (parser) { var lexeme = parser.peekLexeme() if (lexeme == undefined) { @@ -2783,6 +3242,8 @@ lunr.QueryParser.parseFieldOrTerm = function (parser) { } switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence case lunr.QueryLexer.FIELD: return lunr.QueryParser.parseField case lunr.QueryLexer.TERM: @@ -2798,6 +3259,43 @@ lunr.QueryParser.parseFieldOrTerm = function (parser) { } } +lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + lunr.QueryParser.parseField = function (parser) { var lexeme = parser.consumeLexeme() @@ -2861,6 +3359,9 @@ lunr.QueryParser.parseTerm = function (parser) { return lunr.QueryParser.parseEditDistance case lunr.QueryLexer.BOOST: return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence default: var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) @@ -2901,6 +3402,9 @@ lunr.QueryParser.parseEditDistance = function (parser) { return lunr.QueryParser.parseEditDistance case lunr.QueryLexer.BOOST: return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence default: var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) @@ -2941,6 +3445,9 @@ lunr.QueryParser.parseBoost = function (parser) { return lunr.QueryParser.parseEditDistance case lunr.QueryLexer.BOOST: return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence default: var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) diff --git a/assets/js/lunr/lunr.min.js b/assets/js/lunr/lunr.min.js index 75f6a2b749be..f45a81eb800c 100644 --- a/assets/js/lunr/lunr.min.js +++ b/assets/js/lunr/lunr.min.js @@ -1,6 +1 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.1.5 - * Copyright (C) 2017 Oliver Nightingale - * @license MIT - */ -!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.1.5",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},e.FieldRef.joiner="/",e.FieldRef.fromString=function(t){var r=t.indexOf(e.FieldRef.joiner);if(-1===r)throw"malformed field ref string";var i=t.slice(0,r),n=t.slice(r+1);return new e.FieldRef(n,i,t)},e.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+e.FieldRef.joiner+this.docRef),this._stringValue},e.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},e.Token=function(e,t){this.str=e||"",this.metadata=t||{}},e.Token.prototype.toString=function(){return this.str},e.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},e.Token.prototype.clone=function(t){return t=t||function(e){return e},new e.Token(t(this.str,this.metadata),this.metadata)},e.tokenizer=function(t){if(null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return new e.Token(e.utils.asString(t).toLowerCase())});for(var r=t.toString().trim().toLowerCase(),i=r.length,n=[],s=0,o=0;i>=s;s++){var a=r.charAt(s),u=s-o;(a.match(e.tokenizer.separator)||s==i)&&(u>0&&n.push(new e.Token(r.slice(o,s),{position:[o,u],index:n.length})),o=s+1)}return n},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;t>r;r++){var i=this._stack[r];e=e.reduce(function(t,r,n){var s=i(r,n,e);return void 0===s||""===s?t:t.concat(s)},[])}return e},e.Pipeline.prototype.runString=function(t){var r=new e.Token(t);return this.run([r]).map(function(e){return e.toString()})},e.Pipeline.prototype.reset=function(){this._stack=[]},e.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Vector=function(e){this._magnitude=0,this.elements=e||[]},e.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(e>s&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:e>s?2*(n+1):void 0},e.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},e.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},e.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;t>r;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},e.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;n>u&&s>l;)o=r[u],a=i[l],a>o?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/(this.magnitude()*e.magnitude())},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;ti;i++)r.insert(t[i]);return r.finish(),r.root},e.TokenSet.fromClause=function(t){return"editDistance"in t?e.TokenSet.fromFuzzyString(t.term,t.editDistance):e.TokenSet.fromString(t.term)},e.TokenSet.fromFuzzyString=function(t,r){for(var i=new e.TokenSet,n=[{node:i,editsRemaining:r,str:t}];n.length;){var s=n.pop();if(s.str.length>0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length?o["final"]=!0:n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining>0&&s.str.length>1){var u,a=s.str.charAt(1);a in s.node.edges?u=s.node.edges[a]:(u=new e.TokenSet,s.node.edges[a]=u),s.str.length<=2?u["final"]=!0:n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(2)})}if(s.editsRemaining>0&&1==s.str.length&&(s.node["final"]=!0),s.editsRemaining>0&&s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length?l["final"]=!0:n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.editsRemaining>0){if("*"in s.node.edges)var d=s.node.edges["*"];else{var d=new e.TokenSet;s.node.edges["*"]=d}0==s.str.length?d["final"]=!0:n.push({node:d,editsRemaining:s.editsRemaining-1,str:s.str})}if(s.editsRemaining>0&&s.str.length>1){var h,c=s.str.charAt(0),f=s.str.charAt(1);f in s.node.edges?h=s.node.edges[f]:(h=new e.TokenSet,s.node.edges[f]=h),1==s.str.length?h["final"]=!0:n.push({node:h,editsRemaining:s.editsRemaining-1,str:c+s.str.slice(2)})}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=!1,s=0,o=t.length;o>s;s++){var a=t[s],u=s==o-1;if("*"==a)n=!0,r.edges[a]=r,r["final"]=u;else{var l=new e.TokenSet;l["final"]=u,r.edges[a]=l,r=l,n&&(r.edges["*"]=i)}}return i},e.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node["final"]&&e.push(r.prefix);for(var s=0;n>s;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},e.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this["final"]?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;r>i;i++){var n=t[i],s=this.edges[n];e=e+n+s.id}return e},e.TokenSet.prototype.intersect=function(t){for(var r=new e.TokenSet,i=void 0,n=[{qNode:t,output:r,node:this}];n.length;){i=n.pop();for(var s=Object.keys(i.qNode.edges),o=s.length,a=Object.keys(i.node.edges),u=a.length,l=0;o>l;l++)for(var d=s[l],h=0;u>h;h++){var c=a[h];if(c==d||"*"==d){var f=i.node.edges[c],p=i.qNode.edges[d],y=f["final"]&&p["final"],m=void 0;c in i.output.edges?(m=i.output.edges[c],m["final"]=m["final"]||y):(m=new e.TokenSet,m["final"]=y,i.output.edges[c]=m),n.push({qNode:p,output:m,node:f})}}}return r},e.TokenSet.Builder=function(){this.previousWord="",this.root=new e.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},e.TokenSet.Builder.prototype.insert=function(t){var r,i=0;if(t=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null);t.call(r,r);for(var o=0;oe?this._b=0:e>1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t){var r=t[this._ref];this.documentCount+=1;for(var i=0;is;s++){var o=e.FieldRef.fromString(t[s]),a=o.fieldName;n[a]||(n[a]=0),n[a]+=1,i[a]||(i[a]=0),i[a]+=this.fieldLengths[o]}for(var s=0;ss;s++){for(var o=e.FieldRef.fromString(r[s]),a=o.fieldName,u=this.fieldLengths[o],l=new e.Vector,d=this.fieldTermFrequencies[o],h=Object.keys(d),c=h.length,f=0;c>f;f++){var p,y,m,v=h[f],g=d[v],x=this.invertedIndex[v]._index;void 0===n[v]?(p=e.idf(this.invertedIndex[v],this.documentCount),n[v]=p):p=n[v],y=p*((this._k1+1)*g)/(this._k1*(1-this._b+this._b*(u/this.averageFieldLength[a]))+g),m=Math.round(1e3*y)/1e3,l.insert(x,m)}t[o]=l}this.fieldVectors=t},e.Builder.prototype.createTokenSet=function(){this.tokenSet=e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},e.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new e.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:this._fields,pipeline:this.searchPipeline})},e.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r),s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&58>r);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more()?e.QueryLexer.lexText:void 0},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseFieldOrTerm;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseFieldOrTerm=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(-1==t.query.allFields.indexOf(r.str)){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),-1!=r.str.indexOf("*")&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); \ No newline at end of file +!function(){var t,l,c,e,r,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,b,P,T,O,I,i,n,s,z=function(e){var t=new z.Builder;return t.pipeline.add(z.trimmer,z.stopWordFilter,z.stemmer),t.searchPipeline.add(z.stemmer),e.call(t,t),t.build()};z.version="2.3.5",z.utils={},z.utils.warn=(t=this,function(e){t.console&&console.warn&&console.warn(e)}),z.utils.asString=function(e){return null==e?"":e.toString()},z.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i=this.length)return z.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},z.QueryLexer.prototype.width=function(){return this.pos-this.start},z.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},z.QueryLexer.prototype.backup=function(){this.pos-=1},z.QueryLexer.prototype.acceptDigitRun=function(){for(var e,t;47<(t=(e=this.next()).charCodeAt(0))&&t<58;);e!=z.QueryLexer.EOS&&this.backup()},z.QueryLexer.prototype.more=function(){return this.pos0&&t-1 in e)}function o(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function a(e,t,n){return ye(t)?we.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?we.grep(e,function(e){return e===t!==n}):"string"!=typeof t?we.grep(e,function(e){return fe.call(t,e)>-1!==n}):we.filter(t,e,n)}function s(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function l(e){var t={};return we.each(e.match(Le)||[],function(e,n){t[n]=!0}),t}function u(e){return e}function c(e){throw e}function f(e,t,n,r){var i;try{e&&ye(i=e.promise)?i.call(e).done(t).fail(n):e&&ye(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function d(){ae.removeEventListener("DOMContentLoaded",d),e.removeEventListener("load",d),we.ready()}function p(e,t){return t.toUpperCase()}function h(e){return e.replace(He,"ms-").replace(Me,p)}function m(){this.expando=we.expando+m.uid++}function g(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Fe.test(e)?JSON.parse(e):e)}function v(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ze,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=g(n)}catch(e){}$e.set(e,t,n)}else n=void 0;return n}function y(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return we.css(e,t,"")},l=s(),u=n&&n[3]||(we.cssNumber[t]?"":"px"),c=(we.cssNumber[t]||"px"!==u&&+l)&&We.exec(we.css(e,t));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;a--;)we.style(e,t,c+u),(1-o)*(1-(o=s()/l||.5))<=0&&(a=0),c/=o;c*=2,we.style(e,t,c+u),n=n||[]}return n&&(c=+c||+l||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=u,r.start=c,r.end=i)),i}function x(e){var t,n=e.ownerDocument,r=e.nodeName,i=Ye[r];return i||(t=n.body.appendChild(n.createElement(r)),i=we.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),Ye[r]=i,i)}function b(e,t){for(var n,r,i=[],o=0,a=e.length;a>o;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=Be.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&Xe(r)&&(i[o]=x(r))):"none"!==n&&(i[o]="none",Be.set(r,"display",n)));for(o=0;a>o;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}function w(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&o(e,t)?we.merge([e],n):n}function C(e,t){for(var n=0,r=e.length;r>n;n++)Be.set(e[n],"globalEval",!t||Be.get(t[n],"globalEval"))}function T(e,t,n,i,o){for(var a,s,l,u,c,f,d=t.createDocumentFragment(),p=[],h=0,m=e.length;m>h;h++)if((a=e[h])||0===a)if("object"===r(a))we.merge(p,a.nodeType?[a]:a);else if(Je.test(a)){for(s=s||d.appendChild(t.createElement("div")),l=(Ze.exec(a)||["",""])[1].toLowerCase(),u=Qe[l]||Qe._default,s.innerHTML=u[1]+we.htmlPrefilter(a)+u[2],f=u[0];f--;)s=s.lastChild;we.merge(p,s.childNodes),(s=d.firstChild).textContent=""}else p.push(t.createTextNode(a));for(d.textContent="",h=0;a=p[h++];)if(i&&we.inArray(a,i)>-1)o&&o.push(a);else if(c=we.contains(a.ownerDocument,a),s=w(d.appendChild(a),"script"),c&&C(s),n)for(f=0;a=s[f++];)Ke.test(a.type||"")&&n.push(a);return d}function k(){return!0}function S(){return!1}function E(){try{return ae.activeElement}catch(e){}}function j(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)j(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=S;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return we().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=we.guid++)),e.each(function(){we.event.add(this,t,i,r,n)})}function N(e,t){return o(e,"table")&&o(11!==t.nodeType?t:t.firstChild,"tr")?we(e).children("tbody")[0]||e:e}function A(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function D(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function I(e,t){var n,r,i,o,a,s,l,u;if(1===t.nodeType){if(Be.hasData(e)&&(o=Be.access(e),a=Be.set(t,o),u=o.events)){delete a.handle,a.events={};for(i in u)for(n=0,r=u[i].length;r>n;n++)we.event.add(t,i,u[i][n])}$e.hasData(e)&&(s=$e.access(e),l=we.extend({},s),$e.set(t,l))}}function L(e,t){var n=t.nodeName.toLowerCase();"input"===n&&Ge.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function O(e,t,r,i){t=ue.apply([],t);var o,a,s,l,u,c,f=0,d=e.length,p=d-1,h=t[0],m=ye(h);if(m||d>1&&"string"==typeof h&&!ve.checkClone&&at.test(h))return e.each(function(n){var o=e.eq(n);m&&(t[0]=h.call(this,n,o.html())),O(o,t,r,i)});if(d&&(o=T(t,e[0].ownerDocument,!1,e,i),a=o.firstChild,1===o.childNodes.length&&(o=a),a||i)){for(l=(s=we.map(w(o,"script"),A)).length;d>f;f++)u=o,f!==p&&(u=we.clone(u,!0,!0),l&&we.merge(s,w(u,"script"))),r.call(e[f],u,f);if(l)for(c=s[s.length-1].ownerDocument,we.map(s,D),f=0;l>f;f++)u=s[f],Ke.test(u.type||"")&&!Be.access(u,"globalEval")&&we.contains(c,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?we._evalUrl&&we._evalUrl(u.src):n(u.textContent.replace(st,""),c,u))}return e}function P(e,t,n){for(var r,i=t?we.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||we.cleanData(w(r)),r.parentNode&&(n&&we.contains(r.ownerDocument,r)&&C(w(r,"script")),r.parentNode.removeChild(r));return e}function q(e,t,n){var r,i,o,a,s=e.style;return(n=n||ut(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||we.contains(e.ownerDocument,e)||(a=we.style(e,t)),!ve.pixelBoxStyles()&<.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function H(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function M(e){if(e in gt)return e;for(var t=e[0].toUpperCase()+e.slice(1),n=mt.length;n--;)if((e=mt[n]+t)in gt)return e}function _(e){var t=we.cssProps[e];return t||(t=we.cssProps[e]=M(e)||e),t}function B(e,t,n){var r=We.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function $(e,t,n,r,i,o){var a="width"===t?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;4>a;a+=2)"margin"===n&&(l+=we.css(e,n+Ue[a],!0,i)),r?("content"===n&&(l-=we.css(e,"padding"+Ue[a],!0,i)),"margin"!==n&&(l-=we.css(e,"border"+Ue[a]+"Width",!0,i))):(l+=we.css(e,"padding"+Ue[a],!0,i),"padding"!==n?l+=we.css(e,"border"+Ue[a]+"Width",!0,i):s+=we.css(e,"border"+Ue[a]+"Width",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))),l}function F(e,t,n){var r=ut(e),i=q(e,t,r),o="border-box"===we.css(e,"boxSizing",!1,r),a=o;if(lt.test(i)){if(!n)return i;i="auto"}return a=a&&(ve.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===we.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+$(e,t,n||(o?"border":"content"),a,r,i)+"px"}function z(e,t,n,r,i){return new z.prototype.init(e,t,n,r,i)}function R(){yt&&(!1===ae.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(R):e.setTimeout(R,we.fx.interval),we.fx.tick())}function W(){return e.setTimeout(function(){vt=void 0}),vt=Date.now()}function U(e,t){var n,r=0,i={height:e};for(t=t?1:0;4>r;r+=2-t)i["margin"+(n=Ue[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function X(e,t,n){for(var r,i=(G.tweeners[t]||[]).concat(G.tweeners["*"]),o=0,a=i.length;a>o;o++)if(r=i[o].call(n,t,e))return r}function V(e,t,n){var r,i,o,a,s,l,u,c,f="width"in t||"height"in t,d=this,p={},h=e.style,m=e.nodeType&&Xe(e),g=Be.get(e,"fxshow");n.queue||(null==(a=we._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,we.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],xt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(m?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;m=!0}p[r]=g&&g[r]||we.style(e,r)}if((l=!we.isEmptyObject(t))||!we.isEmptyObject(p)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(u=g&&g.display)&&(u=Be.get(e,"display")),"none"===(c=we.css(e,"display"))&&(u?c=u:(b([e],!0),u=e.style.display||u,c=we.css(e,"display"),b([e]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===we.css(e,"float")&&(l||(d.done(function(){h.display=u}),null==u&&(c=h.display,u="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",d.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),l=!1;for(r in p)l||(g?"hidden"in g&&(m=g.hidden):g=Be.access(e,"fxshow",{display:u}),o&&(g.hidden=!m),m&&b([e],!0),d.done(function(){m||b([e]),Be.remove(e,"fxshow");for(r in p)we.style(e,r,p[r])})),l=X(m?g[r]:0,r,d),r in g||(g[r]=l.start,m&&(l.end=l.start,l.start=0))}}function Y(e,t){var n,r,i,o,a;for(n in e)if(r=h(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=we.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function G(e,t,n){var r,i,o=0,a=G.prefilters.length,s=we.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;for(var t=vt||W(),n=Math.max(0,u.startTime+u.duration-t),r=1-(n/u.duration||0),o=0,a=u.tweens.length;a>o;o++)u.tweens[o].run(r);return s.notifyWith(e,[u,r,n]),1>r&&a?n:(a||s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:we.extend({},t),opts:we.extend(!0,{specialEasing:{},easing:we.easing._default},n),originalProperties:t,originalOptions:n,startTime:vt||W(),duration:n.duration,tweens:[],createTween:function(t,n){var r=we.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?(s.notifyWith(e,[u,1,0]),s.resolveWith(e,[u,t])):s.rejectWith(e,[u,t]),this}}),c=u.props;for(Y(c,u.opts.specialEasing);a>o;o++)if(r=G.prefilters[o].call(u,e,c,u.opts))return ye(r.stop)&&(we._queueHooks(u.elem,u.opts.queue).stop=r.stop.bind(r)),r;return we.map(c,X,u),ye(u.opts.start)&&u.opts.start.call(e,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),we.fx.timer(we.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u}function Z(e){return(e.match(Le)||[]).join(" ")}function K(e){return e.getAttribute&&e.getAttribute("class")||""}function Q(e){return Array.isArray(e)?e:"string"==typeof e?e.match(Le)||[]:[]}function J(e,t,n,i){var o;if(Array.isArray(t))we.each(t,function(t,r){n||It.test(e)?i(e,r):J(e+"["+("object"==typeof r&&null!=r?t:"")+"]",r,n,i)});else if(n||"object"!==r(t))i(e,t);else for(o in t)J(e+"["+o+"]",t[o],n,i)}function ee(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(Le)||[];if(ye(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function te(e,t,n,r){function i(s){var l;return o[s]=!0,we.each(e[s]||[],function(e,s){var u=s(t,n,r);return"string"!=typeof u||a||o[u]?a?!(l=u):void 0:(t.dataTypes.unshift(u),i(u),!1)}),l}var o={},a=e===Rt;return i(t.dataTypes[0])||!o["*"]&&i("*")}function ne(e,t){var n,r,i=we.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&we.extend(!0,e,r),e}function re(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}return o?(o!==l[0]&&l.unshift(o),n[o]):void 0}function ie(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=u[l+" "+o]||u["* "+o]))for(i in u)if((s=i.split(" "))[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}var oe=[],ae=e.document,se=Object.getPrototypeOf,le=oe.slice,ue=oe.concat,ce=oe.push,fe=oe.indexOf,de={},pe=de.toString,he=de.hasOwnProperty,me=he.toString,ge=me.call(Object),ve={},ye=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},xe=function(e){return null!=e&&e===e.window},be={type:!0,src:!0,noModule:!0},we=function(e,t){return new we.fn.init(e,t)},Ce=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;we.fn=we.prototype={jquery:"3.3.1",constructor:we,length:0,toArray:function(){return le.call(this)},get:function(e){return null==e?le.call(this):0>e?this[e+this.length]:this[e]},pushStack:function(e){var t=we.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return we.each(this,e)},map:function(e){return this.pushStack(we.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(le.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ce,sort:oe.sort,splice:oe.splice},we.extend=we.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof a&&(u=a,a=arguments[s]||{},s++),"object"==typeof a||ye(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(u&&r&&(we.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&we.isPlainObject(n)?n:{},a[t]=we.extend(u,o,r)):void 0!==r&&(a[t]=r));return a},we.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==pe.call(e)||(t=se(e))&&("function"!=typeof(n=he.call(t,"constructor")&&t.constructor)||me.call(n)!==ge))},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){n(e)},each:function(e,t){var n,r=0;if(i(e))for(n=e.length;n>r&&!1!==t.call(e[r],r,e[r]);r++);else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(Ce,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(i(Object(e))?we.merge(n,"string"==typeof e?[e]:e):ce.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:fe.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;n>r;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;a>o;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,o,a=0,s=[];if(i(e))for(r=e.length;r>a;a++)null!=(o=t(e[a],a,n))&&s.push(o);else for(a in e)null!=(o=t(e[a],a,n))&&s.push(o);return ue.apply([],s)},guid:1,support:ve}),"function"==typeof Symbol&&(we.fn[Symbol.iterator]=oe[Symbol.iterator]),we.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){de["[object "+t+"]"]=t.toLowerCase()});var Te=function(e){function t(e,t,n,r){var i,o,a,s,l,u,c,d=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==h&&9!==h&&11!==h)return n;if(!r&&((t?t.ownerDocument||t:F)!==O&&L(t),t=t||O,q)){if(11!==h&&(l=ve.exec(e)))if(i=l[1]){if(9===h){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&B(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&C.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(C.qsa&&!X[e+" "]&&(!H||!H.test(e))){if(1!==h)d=t,c=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(we,Ce):t.setAttribute("id",s=$),o=(u=E(e)).length;o--;)u[o]="#"+s+" "+p(u[o]);c=u.join(","),d=ye.test(e)&&f(t.parentNode)||t}if(c)try{return Q.apply(n,d.querySelectorAll(c)),n}catch(e){}finally{s===$&&t.removeAttribute("id")}}}return N(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function i(e){var t=O.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function u(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ke(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function d(){}function p(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=R++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,l){var u,c,f,d=[z,s];if(l){for(;t=t[r];)if((1===t.nodeType||a)&&e(t,n,l))return!0}else for(;t=t[r];)if(1===t.nodeType||a)if(f=t[$]||(t[$]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((u=c[o])&&u[0]===z&&u[1]===s)return d[2]=u[2];if(c[o]=d,d[2]=e(t,n,l))return!0}return!1}}function m(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;o>i;i++)t(e,n[i],r);return r}function v(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,u=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),u&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[$]&&(i=y(i)),o&&!o[$]&&(o=y(o,a)),r(function(r,a,s,l){var u,c,f,d=[],p=[],h=a.length,m=r||g(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?m:v(m,d,e,s,l),x=n?o||(r?e:h||i)?[]:a:y;if(n&&n(y,x,s,l),i)for(u=v(x,p),i(u,[],s,l),c=u.length;c--;)(f=u[c])&&(x[p[c]]=!(y[p[c]]=f));if(r){if(o||e){if(o){for(u=[],c=x.length;c--;)(f=x[c])&&u.push(y[c]=f);o(null,x=[],u,l)}for(c=x.length;c--;)(f=x[c])&&(u=o?ee(r,f):d[c])>-1&&(r[u]=!(a[u]=f))}}else x=v(x===a?x.splice(h,x.length):x),o?o(null,a,x,l):Q.apply(a,x)})}function x(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),u=h(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?l(e,n,r):u(e,n,r));return t=null,i}];i>s;s++)if(n=T.relative[e[s].type])c=[h(m(c),n)];else{if((n=T.filter[e[s].type].apply(null,e[s].matches))[$]){for(r=++s;i>r&&!T.relative[e[r].type];r++);return y(s>1&&m(c),s>1&&p(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&x(e.slice(s,r)),i>r&&x(e=e.slice(r)),i>r&&p(e))}c.push(n)}return m(c)}function b(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,l,u){var c,f,d,p=0,h="0",m=r&&[],g=[],y=A,x=r||o&&T.find.TAG("*",u),b=z+=null==y?1:Math.random()||.1,w=x.length;for(u&&(A=a===O||a||u);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===O||(L(c),s=!q);d=e[f++];)if(d(c,a||O,s)){l.push(c);break}u&&(z=b)}i&&((c=!d&&c)&&p--,r&&m.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(m,g,a,s);if(r){if(p>0)for(;h--;)m[h]||g[h]||(g[h]=Z.call(l));g=v(g)}Q.apply(l,g),u&&!r&&g.length>0&&p+n.length>1&&t.uniqueSort(l)}return u&&(z=b,A=y),m};return i?r(a):a}var w,C,T,k,S,E,j,N,A,D,I,L,O,P,q,H,M,_,B,$="sizzle"+1*new Date,F=e.document,z=0,R=0,W=n(),U=n(),X=n(),V=function(e,t){return e===t&&(I=!0),0},Y={}.hasOwnProperty,G=[],Z=G.pop,K=G.push,Q=G.push,J=G.slice,ee=function(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",ie="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",oe=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),le=new RegExp("^"+ne+"*,"+ne+"*"),ue=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Ce=function(e,t){return t?"\x00"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Te=function(){L()},ke=h(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Q.apply(G=J.call(F.childNodes),F.childNodes),G[F.childNodes.length].nodeType}catch(e){Q={apply:G.length?function(e,t){K.apply(e,J.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=t.support={},S=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:F;return r!==O&&9===r.nodeType&&r.documentElement?(O=r,P=O.documentElement,q=!S(O),F!==O&&(n=O.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),C.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=i(function(e){return e.appendChild(O.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=ge.test(O.getElementsByClassName),C.getById=i(function(e){return P.appendChild(e).id=$,!O.getElementsByName||!O.getElementsByName($).length}),C.getById?(T.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&q){var n=t.getElementById(e);return n?[n]:[]}}):(T.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&q){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),T.find.TAG=C.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):C.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=C.getElementsByClassName&&function(e,t){return"undefined"!=typeof t.getElementsByClassName&&q?t.getElementsByClassName(e):void 0},M=[],H=[],(C.qsa=ge.test(O.querySelectorAll))&&(i(function(e){P.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||H.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||H.push("~="),e.querySelectorAll(":checked").length||H.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||H.push(".#.+[+~]")}),i(function(e){e.innerHTML="";var t=O.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&H.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&H.push(":enabled",":disabled"),P.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&H.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),H.push(",.*:")})),(C.matchesSelector=ge.test(_=P.matches||P.webkitMatchesSelector||P.mozMatchesSelector||P.oMatchesSelector||P.msMatchesSelector))&&i(function(e){C.disconnectedMatch=_.call(e,"*"),_.call(e,"[s!='']:x"),M.push("!=",oe)}),H=H.length&&new RegExp(H.join("|")),M=M.length&&new RegExp(M.join("|")),t=ge.test(P.compareDocumentPosition),B=t||ge.test(P.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return I=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!C.sortDetached&&t.compareDocumentPosition(e)===n?e===O||e.ownerDocument===F&&B(F,e)?-1:t===O||t.ownerDocument===F&&B(F,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return I=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!i||!o)return e===O?-1:t===O?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[r]===l[r];)r++;return r?a(s[r],l[r]):s[r]===F?-1:l[r]===F?1:0},O):O},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==O&&L(e),n=n.replace(ce,"='$1']"),C.matchesSelector&&q&&!X[n+" "]&&(!M||!M.test(n))&&(!H||!H.test(n)))try{var r=_.call(e,n);if(r||C.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,O,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==O&&L(e),B(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==O&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!q):void 0;return void 0!==r?r:C.attributes||!q?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Ce)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(I=!C.detectDuplicates,D=!C.sortStable&&e.slice(0),e.sort(V),I){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},k=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=k(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=k(t);return n},(T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,f,d,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,x=!1;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(x=(p=(u=(c=(f=(d=g)[$]||(d[$]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===z&&u[1])&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[z,p,x];break}}else if(y&&(x=p=(u=(c=(f=(d=t)[$]||(d[$]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===z&&u[1]),!1===x)for(;(d=++p&&d&&d[m]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&((c=(f=d[$]||(d[$]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[z,x]),d!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[$]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)e[r=ee(e,i[a])]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=j(e.replace(se,"$1"));return i[$]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=q?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===P},focus:function(e){return e===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(e.type||e.href||~e.tabIndex); -},enabled:u(!1),disabled:u(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r2&&"ID"===(a=o[0]).type&&9===t.nodeType&&q&&T.relative[o[1].type]){if(!(t=(T.find.ID(a.matches[0].replace(xe,be),t)||[])[0]))return n;u&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((l=T.find[s])&&(r=l(a.matches[0].replace(xe,be),ye.test(o[0].type)&&f(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&p(o)))return Q.apply(n,r),n;break}}return(u||j(e,c))(r,t,!q,n,!t||ye.test(e)&&f(t.parentNode)||t),n},C.sortStable=$.split("").sort(V).join("")===$,C.detectDuplicates=!!I,L(),C.sortDetached=i(function(e){return 1&e.compareDocumentPosition(O.createElement("fieldset"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;return n?void 0:!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);we.find=Te,we.expr=Te.selectors,we.expr[":"]=we.expr.pseudos,we.uniqueSort=we.unique=Te.uniqueSort,we.text=Te.getText,we.isXMLDoc=Te.isXML,we.contains=Te.contains,we.escapeSelector=Te.escape;var ke=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&we(e).is(n))break;r.push(e)}return r},Se=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ee=we.expr.match.needsContext,je=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;we.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?we.find.matchesSelector(r,e)?[r]:[]:we.find.matches(e,we.grep(t,function(e){return 1===e.nodeType}))},we.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(we(e).filter(function(){for(t=0;r>t;t++)if(we.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;r>t;t++)we.find(e,i[t],n);return r>1?we.uniqueSort(n):n},filter:function(e){return this.pushStack(a(this,e||[],!1))},not:function(e){return this.pushStack(a(this,e||[],!0))},is:function(e){return!!a(this,"string"==typeof e&&Ee.test(e)?we(e):e||[],!1).length}});var Ne,Ae=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(we.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ne,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ae.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof we?t[0]:t,we.merge(this,we.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:ae,!0)),je.test(r[1])&&we.isPlainObject(t))for(r in t)ye(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=ae.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):ye(e)?void 0!==n.ready?n.ready(e):e(we):we.makeArray(e,this)}).prototype=we.fn,Ne=we(ae);var De=/^(?:parents|prev(?:Until|All))/,Ie={children:!0,contents:!0,next:!0,prev:!0};we.fn.extend({has:function(e){var t=we(e,this),n=t.length;return this.filter(function(){for(var e=0;n>e;e++)if(we.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&we(e);if(!Ee.test(e))for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&we.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?we.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?fe.call(we(e),this[0]):fe.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(we.uniqueSort(we.merge(this.get(),we(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),we.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return ke(e,"parentNode")},parentsUntil:function(e,t,n){return ke(e,"parentNode",n)},next:function(e){return s(e,"nextSibling")},prev:function(e){return s(e,"previousSibling")},nextAll:function(e){return ke(e,"nextSibling")},prevAll:function(e){return ke(e,"previousSibling")},nextUntil:function(e,t,n){return ke(e,"nextSibling",n)},prevUntil:function(e,t,n){return ke(e,"previousSibling",n)},siblings:function(e){return Se((e.parentNode||{}).firstChild,e)},children:function(e){return Se(e.firstChild)},contents:function(e){return o(e,"iframe")?e.contentDocument:(o(e,"template")&&(e=e.content||e),we.merge([],e.childNodes))}},function(e,t){we.fn[e]=function(n,r){var i=we.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=we.filter(r,i)),this.length>1&&(Ie[e]||we.uniqueSort(i),De.test(e)&&i.reverse()),this.pushStack(i)}});var Le=/[^\x20\t\r\n\f]+/g;we.Callbacks=function(e){e="string"==typeof e?l(e):we.extend({},e);var t,n,i,o,a=[],s=[],u=-1,c=function(){for(o=o||e.once,i=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),u>=n&&u--}),this},has:function(e){return e?we.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return o=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return o=s=[],n||t||(a=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=[e,(n=n||[]).slice?n.slice():n],s.push(n),t||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!i}};return f},we.extend({Deferred:function(t){var n=[["notify","progress",we.Callbacks("memory"),we.Callbacks("memory"),2],["resolve","done",we.Callbacks("once memory"),we.Callbacks("once memory"),0,"resolved"],["reject","fail",we.Callbacks("once memory"),we.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return we.Deferred(function(t){we.each(n,function(n,r){var i=ye(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&ye(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){function o(t,n,r,i){return function(){var s=this,l=arguments,f=function(){var e,f;if(!(a>t)){if((e=r.apply(s,l))===n.promise())throw new TypeError("Thenable self-resolution");f=e&&("object"==typeof e||"function"==typeof e)&&e.then,ye(f)?i?f.call(e,o(a,n,u,i),o(a,n,c,i)):(a++,f.call(e,o(a,n,u,i),o(a,n,c,i),o(a,n,u,n.notifyWith))):(r!==u&&(s=void 0,l=[e]),(i||n.resolveWith)(s,l))}},d=i?f:function(){try{f()}catch(e){we.Deferred.exceptionHook&&we.Deferred.exceptionHook(e,d.stackTrace),t+1>=a&&(r!==c&&(s=void 0,l=[e]),n.rejectWith(s,l))}};t?d():(we.Deferred.getStackHook&&(d.stackTrace=we.Deferred.getStackHook()),e.setTimeout(d))}}var a=0;return we.Deferred(function(e){n[0][3].add(o(0,e,ye(i)?i:u,e.notifyWith)),n[1][3].add(o(0,e,ye(t)?t:u)),n[2][3].add(o(0,e,ye(r)?r:c))}).promise()},promise:function(e){return null!=e?we.extend(e,i):i}},o={};return we.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=le.call(arguments),o=we.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?le.call(arguments):n,--t||o.resolveWith(r,i)}};if(1>=t&&(f(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||ye(i[n]&&i[n].then)))return o.then();for(;n--;)f(i[n],a(n),o.reject);return o.promise()}});var Oe=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;we.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Oe.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},we.readyException=function(t){e.setTimeout(function(){throw t})};var Pe=we.Deferred();we.fn.ready=function(e){return Pe.then(e)["catch"](function(e){we.readyException(e)}),this},we.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--we.readyWait:we.isReady)||(we.isReady=!0,!0!==e&&--we.readyWait>0||Pe.resolveWith(ae,[we]))}}),we.ready.then=Pe.then,"complete"===ae.readyState||"loading"!==ae.readyState&&!ae.documentElement.doScroll?e.setTimeout(we.ready):(ae.addEventListener("DOMContentLoaded",d),e.addEventListener("load",d));var qe=function(e,t,n,i,o,a,s){var l=0,u=e.length,c=null==n;if("object"===r(n)){o=!0;for(l in n)qe(e,t,l,n[l],!0,a,s)}else if(void 0!==i&&(o=!0,ye(i)||(s=!0),c&&(s?(t.call(e,i),t=null):(c=t,t=function(e,t,n){return c.call(we(e),n)})),t))for(;u>l;l++)t(e[l],n,s?i:i.call(e[l],l,t(e[l],n)));return o?e:c?t.call(e):u?t(e[0],n):a},He=/^-ms-/,Me=/-([a-z])/g,_e=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};m.uid=1,m.prototype={cache:function(e){var t=e[this.expando];return t||(t={},_e(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[h(t)]=n;else for(r in t)i[h(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][h(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(h):(t=h(t))in r?[t]:t.match(Le)||[]).length;for(;n--;)delete r[t[n]]}(void 0===t||we.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!we.isEmptyObject(t)}};var Be=new m,$e=new m,Fe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ze=/[A-Z]/g;we.extend({hasData:function(e){return $e.hasData(e)||Be.hasData(e)},data:function(e,t,n){return $e.access(e,t,n)},removeData:function(e,t){$e.remove(e,t)},_data:function(e,t,n){return Be.access(e,t,n)},_removeData:function(e,t){Be.remove(e,t)}}),we.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=$e.get(o),1===o.nodeType&&!Be.get(o,"hasDataAttrs"))){for(n=a.length;n--;)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=h(r.slice(5)),v(o,r,i[r]));Be.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){$e.set(this,e)}):qe(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=$e.get(o,e)))return n;if(void 0!==(n=v(o,e)))return n}else this.each(function(){$e.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){$e.remove(this,e)})}}),we.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=Be.get(e,t),n&&(!r||Array.isArray(n)?r=Be.access(e,t,we.makeArray(n)):r.push(n)),r||[]):void 0},dequeue:function(e,t){t=t||"fx";var n=we.queue(e,t),r=n.length,i=n.shift(),o=we._queueHooks(e,t),a=function(){we.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Be.get(e,n)||Be.access(e,n,{empty:we.Callbacks("once memory").add(function(){Be.remove(e,[t+"queue",n])})})}}),we.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ke=/^$|^module$|\/(?:java|ecma)script/i,Qe={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Qe.optgroup=Qe.option,Qe.tbody=Qe.tfoot=Qe.colgroup=Qe.caption=Qe.thead,Qe.th=Qe.td;var Je=/<|&#?\w+;/;!function(){var e=ae.createDocumentFragment().appendChild(ae.createElement("div")),t=ae.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),ve.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",ve.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var et=ae.documentElement,tt=/^key/,nt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rt=/^([^.]*)(?:\.(.+)|)/;we.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Be.get(e);if(g)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&we.find.matchesSelector(et,i),n.guid||(n.guid=we.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return"undefined"!=typeof we&&we.event.triggered!==t.type?we.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(Le)||[""]).length;u--;)p=m=(s=rt.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=we.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=we.event.special[p]||{},c=we.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&we.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=l[p])||((d=l[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),we.event.global[p]=!0)},remove:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Be.hasData(e)&&Be.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(Le)||[""]).length;u--;)if(s=rt.exec(t[u])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p){for(f=we.event.special[p]||{},d=l[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)c=d[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,g.handle)||we.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)we.event.remove(e,p+t[u],n,r,!0);we.isEmptyObject(l)&&Be.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=we.event.fix(e),l=new Array(arguments.length),u=(Be.get(this,"events")||{})[s.type]||[],c=we.event.special[s.type]||{};for(l[0]=s,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],a={},n=0;l>n;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?we(i,this).index(u)>-1:we.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,ot=/\s*$/g;we.extend({htmlPrefilter:function(e){return e.replace(it,"<$1>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),l=we.contains(e.ownerDocument,e);if(!(ve.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||we.isXMLDoc(e)))for(a=w(s),r=0,i=(o=w(e)).length;i>r;r++)L(o[r],a[r]);if(t)if(n)for(o=o||w(e),a=a||w(s),r=0,i=o.length;i>r;r++)I(o[r],a[r]);else I(e,s);return(a=w(s,"script")).length>0&&C(a,!l&&w(e,"script")),s},cleanData:function(e){for(var t,n,r,i=we.event.special,o=0;void 0!==(n=e[o]);o++)if(_e(n)){if(t=n[Be.expando]){if(t.events)for(r in t.events)i[r]?we.event.remove(n,r):we.removeEvent(n,r,t.handle);n[Be.expando]=void 0}n[$e.expando]&&(n[$e.expando]=void 0)}}}),we.fn.extend({detach:function(e){return P(this,e,!0)},remove:function(e){return P(this,e)},text:function(e){return qe(this,function(e){return void 0===e?we.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return O(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||N(this,e).appendChild(e)})},prepend:function(){return O(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=N(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return O(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return O(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(we.cleanData(w(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return we.clone(this,e,t)})},html:function(e){return qe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ot.test(e)&&!Qe[(Ze.exec(e)||["",""])[1].toLowerCase()]){e=we.htmlPrefilter(e);try{for(;r>n;n++)1===(t=this[n]||{}).nodeType&&(we.cleanData(w(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return O(this,arguments,function(t){var n=this.parentNode;we.inArray(this,e)<0&&(we.cleanData(w(this)),n&&n.replaceChild(t,this))},e)}}),we.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){we.fn[e]=function(e){for(var n,r=[],i=we(e),o=i.length-1,a=0;o>=a;a++)n=a===o?this:this.clone(!0),we(i[a])[t](n),ce.apply(r,n.get());return this.pushStack(r)}});var lt=new RegExp("^("+Re+")(?!px)[a-z%]+$","i"),ut=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},ct=new RegExp(Ue.join("|"),"i");!function(){function t(){if(u){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",et.appendChild(l).appendChild(u);var t=e.getComputedStyle(u);r="1%"!==t.top,s=12===n(t.marginLeft),u.style.right="60%",a=36===n(t.right),i=36===n(t.width),u.style.position="absolute",o=36===u.offsetWidth||"absolute",et.removeChild(l),u=null}}function n(e){return Math.round(parseFloat(e))}var r,i,o,a,s,l=ae.createElement("div"),u=ae.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",ve.clearCloneStyle="content-box"===u.style.backgroundClip,we.extend(ve,{boxSizingReliable:function(){return t(),i},pixelBoxStyles:function(){return t(),a},pixelPosition:function(){return t(),r},reliableMarginLeft:function(){return t(),s},scrollboxSize:function(){return t(),o}}))}();var ft=/^(none|table(?!-c[ea]).+)/,dt=/^--/,pt={position:"absolute",visibility:"hidden",display:"block"},ht={letterSpacing:"0",fontWeight:"400"},mt=["Webkit","Moz","ms"],gt=ae.createElement("div").style;we.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=q(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=h(t),l=dt.test(t),u=e.style;if(l||(t=_(s)),a=we.cssHooks[t]||we.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];"string"==(o=typeof n)&&(i=We.exec(n))&&i[1]&&(n=y(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(we.cssNumber[s]?"":"px")),ve.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,r){var i,o,a,s=h(t);return dt.test(t)||(t=_(s)),(a=we.cssHooks[t]||we.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=q(e,t,r)),"normal"===i&&t in ht&&(i=ht[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),we.each(["height","width"],function(e,t){we.cssHooks[t]={get:function(e,n,r){return n?!ft.test(we.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?F(e,t,r):Ve(e,pt,function(){return F(e,t,r)}):void 0},set:function(e,n,r){var i,o=ut(e),a="border-box"===we.css(e,"boxSizing",!1,o),s=r&&$(e,t,r,a,o);return a&&ve.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-$(e,t,"border",!1,o)-.5)),s&&(i=We.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=we.css(e,t)),B(e,n,s)}}}),we.cssHooks.marginLeft=H(ve.reliableMarginLeft,function(e,t){return t?(parseFloat(q(e,"marginLeft"))||e.getBoundingClientRect().left-Ve(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px":void 0}),we.each({margin:"",padding:"",border:"Width"},function(e,t){we.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];4>r;r++)i[e+Ue[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(we.cssHooks[e+t].set=B)}),we.fn.extend({css:function(e,t){return qe(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=ut(e),i=t.length;i>a;a++)o[t[a]]=we.css(e,t[a],!1,r);return o}return void 0!==n?we.style(e,t,n):we.css(e,t)},e,t,arguments.length>1)}}),we.Tween=z,z.prototype={constructor:z,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||we.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(we.cssNumber[n]?"":"px")},cur:function(){var e=z.propHooks[this.prop];return e&&e.get?e.get(this):z.propHooks._default.get(this)},run:function(e){var t,n=z.propHooks[this.prop];return this.options.duration?this.pos=t=we.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):z.propHooks._default.set(this),this}},z.prototype.init.prototype=z.prototype,z.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=we.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){we.fx.step[e.prop]?we.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[we.cssProps[e.prop]]&&!we.cssHooks[e.prop]?e.elem[e.prop]=e.now:we.style(e.elem,e.prop,e.now+e.unit)}}},z.propHooks.scrollTop=z.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},we.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},we.fx=z.prototype.init,we.fx.step={};var vt,yt,xt=/^(?:toggle|show|hide)$/,bt=/queueHooks$/;we.Animation=we.extend(G,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return y(n.elem,e,We.exec(t),n),n}]},tweener:function(e,t){ye(e)?(t=e,e=["*"]):e=e.match(Le);for(var n,r=0,i=e.length;i>r;r++)n=e[r],G.tweeners[n]=G.tweeners[n]||[],G.tweeners[n].unshift(t)},prefilters:[V],prefilter:function(e,t){t?G.prefilters.unshift(e):G.prefilters.push(e)}}),we.speed=function(e,t,n){var r=e&&"object"==typeof e?we.extend({},e):{complete:n||!n&&t||ye(e)&&e,duration:e,easing:n&&t||t&&!ye(t)&&t};return we.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in we.fx.speeds?r.duration=we.fx.speeds[r.duration]:r.duration=we.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){ye(r.old)&&r.old.call(this),r.queue&&we.dequeue(this,r.queue)},r},we.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Xe).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=we.isEmptyObject(e),o=we.speed(t,n,r),a=function(){var t=G(this,we.extend({},e),o);(i||Be.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=we.timers,a=Be.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&bt.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||we.dequeue(this,e); -})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=Be.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=we.timers,a=r?r.length:0;for(n.finish=!0,we.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),we.each(["toggle","show","hide"],function(e,t){var n=we.fn[t];we.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(U(t,!0),e,r,i)}}),we.each({slideDown:U("show"),slideUp:U("hide"),slideToggle:U("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){we.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),we.timers=[],we.fx.tick=function(){var e,t=0,n=we.timers;for(vt=Date.now();t1)},removeAttr:function(e){return this.each(function(){we.removeAttr(this,e)})}}),we.extend({attr:function(e,t,n){var r,i,o=e.nodeType;return 3!==o&&8!==o&&2!==o?"undefined"==typeof e.getAttribute?we.prop(e,t,n):(1===o&&we.isXMLDoc(e)||(i=we.attrHooks[t.toLowerCase()]||(we.expr.match.bool.test(t)?wt:void 0)),void 0!==n?null===n?void we.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=we.find.attr(e,t))?void 0:r):void 0},attrHooks:{type:{set:function(e,t){if(!ve.radioValue&&"radio"===t&&o(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(Le);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),wt={set:function(e,t,n){return!1===t?we.removeAttr(e,n):e.setAttribute(n,n),n}},we.each(we.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Ct[t]||we.find.attr;Ct[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=Ct[a],Ct[a]=i,i=null!=n(e,t,r)?a:null,Ct[a]=o),i}});var Tt=/^(?:input|select|textarea|button)$/i,kt=/^(?:a|area)$/i;we.fn.extend({prop:function(e,t){return qe(this,we.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[we.propFix[e]||e]})}}),we.extend({prop:function(e,t,n){var r,i,o=e.nodeType;return 3!==o&&8!==o&&2!==o?(1===o&&we.isXMLDoc(e)||(t=we.propFix[t]||t,i=we.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]):void 0},propHooks:{tabIndex:{get:function(e){var t=we.find.attr(e,"tabindex");return t?parseInt(t,10):Tt.test(e.nodeName)||kt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),ve.optSelected||(we.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),we.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){we.propFix[this.toLowerCase()]=this}),we.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(ye(e))return this.each(function(t){we(this).addClass(e.call(this,t,K(this)))});if((t=Q(e)).length)for(;n=this[l++];)if(i=K(n),r=1===n.nodeType&&" "+Z(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=Z(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(ye(e))return this.each(function(t){we(this).removeClass(e.call(this,t,K(this)))});if(!arguments.length)return this.attr("class","");if((t=Q(e)).length)for(;n=this[l++];)if(i=K(n),r=1===n.nodeType&&" "+Z(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=Z(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):ye(e)?this.each(function(n){we(this).toggleClass(e.call(this,n,K(this),t),t)}):this.each(function(){var t,i,o,a;if(r)for(i=0,o=we(this),a=Q(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=K(this))&&Be.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Be.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+Z(K(n))+" ").indexOf(t)>-1)return!0;return!1}});var St=/\r/g;we.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=ye(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,we(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=we.map(i,function(e){return null==e?"":e+""})),(t=we.valHooks[this.type]||we.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=we.valHooks[i.type]||we.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(St,""):null==n?"":n:void 0}}),we.extend({valHooks:{option:{get:function(e){var t=we.find.attr(e,"value");return null!=t?t:Z(we.text(e))}},select:{get:function(e){var t,n,r,i=e.options,a=e.selectedIndex,s="select-one"===e.type,l=s?null:[],u=s?a+1:i.length;for(r=0>a?u:s?a:0;u>r;r++)if(((n=i[r]).selected||r===a)&&!n.disabled&&(!n.parentNode.disabled||!o(n.parentNode,"optgroup"))){if(t=we(n).val(),s)return t;l.push(t)}return l},set:function(e,t){for(var n,r,i=e.options,o=we.makeArray(t),a=i.length;a--;)((r=i[a]).selected=we.inArray(we.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),we.each(["radio","checkbox"],function(){we.valHooks[this]={set:function(e,t){return Array.isArray(t)?e.checked=we.inArray(we(e).val(),t)>-1:void 0}},ve.checkOn||(we.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),ve.focusin="onfocusin"in e;var Et=/^(?:focusinfocus|focusoutblur)$/,jt=function(e){e.stopPropagation()};we.extend(we.event,{trigger:function(t,n,r,i){var o,a,s,l,u,c,f,d,p=[r||ae],h=he.call(t,"type")?t.type:t,m=he.call(t,"namespace")?t.namespace.split("."):[];if(a=d=s=r=r||ae,3!==r.nodeType&&8!==r.nodeType&&!Et.test(h+we.event.triggered)&&(h.indexOf(".")>-1&&(h=(m=h.split(".")).shift(),m.sort()),u=h.indexOf(":")<0&&"on"+h,t=t[we.expando]?t:new we.Event(h,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:we.makeArray(n,[t]),f=we.event.special[h]||{},i||!f.trigger||!1!==f.trigger.apply(r,n))){if(!i&&!f.noBubble&&!xe(r)){for(l=f.delegateType||h,Et.test(l+h)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(r.ownerDocument||ae)&&p.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=p[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?l:f.bindType||h,(c=(Be.get(a,"events")||{})[t.type]&&Be.get(a,"handle"))&&c.apply(a,n),(c=u&&a[u])&&c.apply&&_e(a)&&(t.result=c.apply(a,n),!1===t.result&&t.preventDefault());return t.type=h,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(p.pop(),n)||!_e(r)||u&&ye(r[h])&&!xe(r)&&((s=r[u])&&(r[u]=null),we.event.triggered=h,t.isPropagationStopped()&&d.addEventListener(h,jt),r[h](),t.isPropagationStopped()&&d.removeEventListener(h,jt),we.event.triggered=void 0,s&&(r[u]=s)),t.result}},simulate:function(e,t,n){var r=we.extend(new we.Event,n,{type:e,isSimulated:!0});we.event.trigger(r,null,t)}}),we.fn.extend({trigger:function(e,t){return this.each(function(){we.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?we.event.trigger(e,t,n,!0):void 0}}),ve.focusin||we.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){we.event.simulate(t,e.target,we.event.fix(e))};we.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Be.access(r,t);i||r.addEventListener(e,n,!0),Be.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Be.access(r,t)-1;i?Be.access(r,t,i):(r.removeEventListener(e,n,!0),Be.remove(r,t))}}});var Nt=e.location,At=Date.now(),Dt=/\?/;we.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(n){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||we.error("Invalid XML: "+e),t};var It=/\[\]$/,Lt=/\r?\n/g,Ot=/^(?:submit|button|image|reset|file)$/i,Pt=/^(?:input|select|textarea|keygen)/i;we.param=function(e,t){var n,r=[],i=function(e,t){var n=ye(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!we.isPlainObject(e))we.each(e,function(){i(this.name,this.value)});else for(n in e)J(n,e[n],t,i);return r.join("&")},we.fn.extend({serialize:function(){return we.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=we.prop(this,"elements");return e?we.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!we(this).is(":disabled")&&Pt.test(this.nodeName)&&!Ot.test(e)&&(this.checked||!Ge.test(e))}).map(function(e,t){var n=we(this).val();return null==n?null:Array.isArray(n)?we.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var qt=/%20/g,Ht=/#.*$/,Mt=/([?&])_=[^&]*/,_t=/^(.*?):[ \t]*([^\r\n]*)$/gm,Bt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,$t=/^(?:GET|HEAD)$/,Ft=/^\/\//,zt={},Rt={},Wt="*/".concat("*"),Ut=ae.createElement("a");Ut.href=Nt.href,we.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Nt.href,type:"GET",isLocal:Bt.test(Nt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Wt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":we.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?ne(ne(e,we.ajaxSettings),t):ne(we.ajaxSettings,e)},ajaxPrefilter:ee(zt),ajaxTransport:ee(Rt),ajax:function(e,t){function n(e,t,n,a){var l,f,d,x,b,w=t;u||(u=!0,s&&T.clearTimeout(s),r=void 0,o=a||"",C.readyState=e>0?4:0,l=e>=200&&300>e||304===e,n&&(x=re(p,C,n)),x=ie(p,x,C,l),l?(p.ifModified&&((b=C.getResponseHeader("Last-Modified"))&&(we.lastModified[i]=b),(b=C.getResponseHeader("etag"))&&(we.etag[i]=b)),204===e||"HEAD"===p.type?w="nocontent":304===e?w="notmodified":(w=x.state,f=x.data,l=!(d=x.error))):(d=w,!e&&w||(w="error",0>e&&(e=0))),C.status=e,C.statusText=(t||w)+"",l?g.resolveWith(h,[f,w,C]):g.rejectWith(h,[C,w,d]),C.statusCode(y),y=void 0,c&&m.trigger(l?"ajaxSuccess":"ajaxError",[C,p,l?f:d]),v.fireWith(h,[C,w]),c&&(m.trigger("ajaxComplete",[C,p]),--we.active||we.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,i,o,a,s,l,u,c,f,d,p=we.ajaxSetup({},t),h=p.context||p,m=p.context&&(h.nodeType||h.jquery)?we(h):we.event,g=we.Deferred(),v=we.Callbacks("once memory"),y=p.statusCode||{},x={},b={},w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(u){if(!a)for(a={};t=_t.exec(o);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=b[e.toLowerCase()]=b[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==u&&(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)C.always(e[C.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||w;return r&&r.abort(t),n(0,t),this}};if(g.promise(C),p.url=((e||p.url||Nt.href)+"").replace(Ft,Nt.protocol+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(Le)||[""],null==p.crossDomain){l=ae.createElement("a");try{l.href=p.url,l.href=l.href,p.crossDomain=Ut.protocol+"//"+Ut.host!=l.protocol+"//"+l.host}catch(T){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=we.param(p.data,p.traditional)),te(zt,p,t,C),u)return C;(c=we.event&&p.global)&&0==we.active++&&we.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!$t.test(p.type),i=p.url.replace(Ht,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(qt,"+")):(d=p.url.slice(i.length),p.data&&(p.processData||"string"==typeof p.data)&&(i+=(Dt.test(i)?"&":"?")+p.data,delete p.data),!1===p.cache&&(i=i.replace(Mt,"$1"),d=(Dt.test(i)?"&":"?")+"_="+At++ +d),p.url=i+d),p.ifModified&&(we.lastModified[i]&&C.setRequestHeader("If-Modified-Since",we.lastModified[i]),we.etag[i]&&C.setRequestHeader("If-None-Match",we.etag[i])),(p.data&&p.hasContent&&!1!==p.contentType||t.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Wt+"; q=0.01":""):p.accepts["*"]);for(f in p.headers)C.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(!1===p.beforeSend.call(h,C,p)||u))return C.abort();if(w="abort",v.add(p.complete),C.done(p.success),C.fail(p.error),r=te(Rt,p,t,C)){if(C.readyState=1,c&&m.trigger("ajaxSend",[C,p]),u)return C;p.async&&p.timeout>0&&(s=T.setTimeout(function(){C.abort("timeout")},p.timeout));try{u=!1,r.send(x,n)}catch(T){if(u)throw T;n(-1,T)}}else n(-1,"No Transport");return C},getJSON:function(e,t,n){return we.get(e,t,n,"json")},getScript:function(e,t){return we.get(e,void 0,t,"script")}}),we.each(["get","post"],function(e,t){we[t]=function(e,n,r,i){return ye(n)&&(i=i||r,r=n,n=void 0),we.ajax(we.extend({url:e,type:t,dataType:i,data:n,success:r},we.isPlainObject(e)&&e))}}),we._evalUrl=function(e){return we.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},we.fn.extend({wrapAll:function(e){var t;return this[0]&&(ye(e)&&(e=e.call(this[0])),t=we(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return ye(e)?this.each(function(t){we(this).wrapInner(e.call(this,t))}):this.each(function(){var t=we(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=ye(e);return this.each(function(n){we(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){we(this).replaceWith(this.childNodes)}),this}}),we.expr.pseudos.hidden=function(e){return!we.expr.pseudos.visible(e)},we.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},we.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Xt={0:200,1223:204},Vt=we.ajaxSettings.xhr();ve.cors=!!Vt&&"withCredentials"in Vt,ve.ajax=Vt=!!Vt,we.ajaxTransport(function(e){var t,n;return ve.cors||Vt&&!e.crossDomain?{send:function(r,i){var o,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(o in e.xhrFields)a[o]=e.xhrFields[o];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)a.setRequestHeader(o,r[o]);t=function(e){return function(){t&&(t=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Xt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=t(),n=a.onerror=a.ontimeout=t("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&s.setTimeout(function(){t&&n()})},t=t("abort");try{a.send(e.hasContent&&e.data||null)}catch(s){if(t)throw s}},abort:function(){t&&t()}}:void 0}),we.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),we.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return we.globalEval(e),e}}}),we.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),we.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=we(" +
+ +
+ + + + {% if site.search == true %} +
+ {% include search/search_form.html %} +
+ {% endif %} + + + + {% include scripts.html %} + + + \ No newline at end of file diff --git a/docs/_pages/404.md b/docs/_pages/404.md new file mode 100644 index 000000000000..4adbecc66617 --- /dev/null +++ b/docs/_pages/404.md @@ -0,0 +1,15 @@ +--- +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 --- perhaps you can try searching for it below. + + + diff --git a/docs/_pages/about.md b/docs/_pages/about.md new file mode 100644 index 000000000000..25bde3d2131f --- /dev/null +++ b/docs/_pages/about.md @@ -0,0 +1,85 @@ +--- +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: 2020-05-01T10:15:22-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/), static-based via [Staticman v1 and v2](https://staticman.net/), and custom). +- [Google Analytics](https://www.google.com/analytics/) support. +- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Catalan, Chinese, Danish, Dutch, Finnish, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Irish (Gaeilge), Italian (Italiano), Japanese, Korean, Malayalam, Myanmar (Burmese), Nepali (Nepalese), 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/home.md b/docs/_pages/home.md new file mode 100644 index 000000000000..bdac1ccbf643 --- /dev/null +++ b/docs/_pages/home.md @@ -0,0 +1,38 @@ +--- +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.20.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/page-archive.html b/docs/_pages/page-archive.html new file mode 100644 index 000000000000..e2b3fdcba16f --- /dev/null +++ b/docs/_pages/page-archive.html @@ -0,0 +1,12 @@ +--- +layout: archive +title: "Page Archive" +permalink: /page-archive/ +author_profile: false +--- + +{% for post in site.pages %} + {% unless post.hidden %} + {% include archive-single.html %} + {% endunless %} +{% endfor %} diff --git a/docs/_pages/pets.md b/docs/_pages/pets.md new file mode 100644 index 000000000000..1ecc1f3b565f --- /dev/null +++ b/docs/_pages/pets.md @@ -0,0 +1,10 @@ +--- +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/recipes-archive.md b/docs/_pages/recipes-archive.md new file mode 100644 index 000000000000..96a36cf7fc72 --- /dev/null +++ b/docs/_pages/recipes-archive.md @@ -0,0 +1,9 @@ +--- +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/splash-page.md b/docs/_pages/splash-page.md new file mode 100644 index 000000000000..f11bc0b0737b --- /dev/null +++ b/docs/_pages/splash-page.md @@ -0,0 +1,67 @@ +--- +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/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md b/docs/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md new file mode 100644 index 000000000000..a8dccf09c792 --- /dev/null +++ b/docs/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md @@ -0,0 +1,66 @@ +--- +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-10-05-edge-case-multiline-excerpt.md b/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md new file mode 100644 index 000000000000..6acc568a0655 --- /dev/null +++ b/docs/_posts/2009-10-05-edge-case-multiline-excerpt.md @@ -0,0 +1,6 @@ +--- +title: "Edge Case: Post with multiline excerpt" +--- + +Et ex ullamco duis don't +combine these words quis laborum sunt sint. Nisi et Lorem reprehenderit cupidatat. Aliqua fugiat aliquip officia culpa elit. Adipisicing do eu duis aute et aute amet anim ut cillum aliqua. Aliqua adipisicing occaecat et ullamco fugiat. \ No newline at end of file diff --git a/docs/_posts/2010-02-05-post-notice.md b/docs/_posts/2010-02-05-post-notice.md new file mode 100644 index 000000000000..da63f9a32152 --- /dev/null +++ b/docs/_posts/2010-02-05-post-notice.md @@ -0,0 +1,78 @@ +--- +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-08-05-post-header-overlay-image-og-override.md b/docs/_posts/2010-08-05-post-header-overlay-image-og-override.md new file mode 100644 index 000000000000..e8501b7f53a7 --- /dev/null +++ b/docs/_posts/2010-08-05-post-header-overlay-image-og-override.md @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 000000000000..a59cd117126e --- /dev/null +++ b/docs/_posts/2010-08-05-post-image-linked.md @@ -0,0 +1,10 @@ +--- +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-06-post-image-linked-caption.md b/docs/_posts/2010-08-06-post-image-linked-caption.md new file mode 100644 index 000000000000..67be312084cd --- /dev/null +++ b/docs/_posts/2010-08-06-post-image-linked-caption.md @@ -0,0 +1,21 @@ +--- +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-09-09-post-gallery.md b/docs/_posts/2010-09-09-post-gallery.md new file mode 100644 index 000000000000..3bdd4ff3f477 --- /dev/null +++ b/docs/_posts/2010-09-09-post-gallery.md @@ -0,0 +1,142 @@ +--- +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/2012-01-02-layout-comments.md b/docs/_posts/2012-01-02-layout-comments.md new file mode 100644 index 000000000000..c138699cdabc --- /dev/null +++ b/docs/_posts/2012-01-02-layout-comments.md @@ -0,0 +1,12 @@ +--- +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 new file mode 100644 index 000000000000..a10a3e4648eb --- /dev/null +++ b/docs/_posts/2012-01-02-layout-post-date-disabled.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Disabled" +show_date: false +tags: + - post date +--- + +This post has the date disabled. The date this post was published should not be showing if `show_date: false` is set in `_config.yml` or in this post's YAML Front Matter. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/docs/_posts/2012-01-02-layout-post-date.md b/docs/_posts/2012-01-02-layout-post-date.md new file mode 100644 index 000000000000..b31c9a275b5c --- /dev/null +++ b/docs/_posts/2012-01-02-layout-post-date.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Enabled" +show_date: true +tags: + - post date +--- + +This post has post date enabled. The date the post was published should show if `show_date: true` is added to it's YAML Front Matter or as a default in `_config.yml`. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/docs/_posts/2012-01-03-layout-table-of-contents-include-post.md b/docs/_posts/2012-01-03-layout-table-of-contents-include-post.md new file mode 100644 index 000000000000..622b04da1d69 --- /dev/null +++ b/docs/_posts/2012-01-03-layout-table-of-contents-include-post.md @@ -0,0 +1,139 @@ +--- +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 new file mode 100644 index 000000000000..e36f8104ccd4 --- /dev/null +++ b/docs/_posts/2012-01-03-layout-table-of-contents-indent-post.md @@ -0,0 +1,134 @@ +--- +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 new file mode 100644 index 000000000000..01c14a2cf451 --- /dev/null +++ b/docs/_posts/2012-01-03-layout-table-of-contents-post.md @@ -0,0 +1,98 @@ +--- +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 new file mode 100644 index 000000000000..a8eae408204d --- /dev/null +++ b/docs/_posts/2012-01-03-layout-table-of-contents-sticky.md @@ -0,0 +1,93 @@ +--- +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-15-layout-author-override.md b/docs/_posts/2012-03-15-layout-author-override.md new file mode 100644 index 000000000000..333fc161970d --- /dev/null +++ b/docs/_posts/2012-03-15-layout-author-override.md @@ -0,0 +1,51 @@ +--- +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-header-image-external.md b/docs/_posts/2012-03-15-layout-header-image-external.md new file mode 100644 index 000000000000..1795bdcd13fa --- /dev/null +++ b/docs/_posts/2012-03-15-layout-header-image-external.md @@ -0,0 +1,17 @@ +--- +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-overlay-image-tagline.md b/docs/_posts/2012-03-15-layout-header-overlay-image-tagline.md new file mode 100644 index 000000000000..32588bde9b53 --- /dev/null +++ b/docs/_posts/2012-03-15-layout-header-overlay-image-tagline.md @@ -0,0 +1,28 @@ +--- +title: "Layout: Header Image Overlay with Custom Tagline" +tagline: "This is a custom tagline content which overrides the *default* page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +categories: + - Layout + - Uncategorized +tags: + - edge case + - image + - layout +last_modified_at: 2020-01-07T13:05:25-05:00 +--- + +This post should display a **header with an overlay image** and **custom tagline**, if the theme supports it. + +Non-square images can provide some unique styling issues. + +This post tests overlay header images with custom `page.tagline`. + +```yaml +tagline: "This is a custom tagline content which overrides the default page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +``` \ No newline at end of file diff --git a/docs/_posts/2012-03-15-layout-header-overlay-image.md b/docs/_posts/2012-03-15-layout-header-overlay-image.md new file mode 100644 index 000000000000..e2b1a1965e1e --- /dev/null +++ b/docs/_posts/2012-03-15-layout-header-overlay-image.md @@ -0,0 +1,55 @@ +--- +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 new file mode 100644 index 000000000000..c6cdc44fb7c1 --- /dev/null +++ b/docs/_posts/2012-03-15-layout-more-tag.md @@ -0,0 +1,19 @@ +--- +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 new file mode 100644 index 000000000000..bd1c6105c654 --- /dev/null +++ b/docs/_posts/2012-03-15-layout-sidebar-custom.md @@ -0,0 +1,28 @@ +--- +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." + - 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: http://placehold.it/350x250 + 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/2013-01-10-markup-image-alignment.md b/docs/_posts/2013-01-10-markup-image-alignment.md new file mode 100644 index 000000000000..8c4a40e0a09b --- /dev/null +++ b/docs/_posts/2013-01-10-markup-image-alignment.md @@ -0,0 +1,72 @@ +--- +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/2016-02-24-welcome-to-jekyll.md b/docs/_posts/2016-02-24-welcome-to-jekyll.md new file mode 100644 index 000000000000..024fc97dc96f --- /dev/null +++ b/docs/_posts/2016-02-24-welcome-to-jekyll.md @@ -0,0 +1,29 @@ +--- +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 new file mode 100644 index 000000000000..db2467980fac --- /dev/null +++ b/docs/_posts/2016-09-21-gemified-theme-alpha.md @@ -0,0 +1,94 @@ +--- +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/assets/images/dracula-code-block.jpg b/docs/assets/images/dracula-code-block.jpg new file mode 100644 index 000000000000..4d9e202ec9b7 Binary files /dev/null and b/docs/assets/images/dracula-code-block.jpg differ diff --git a/docs/assets/images/google-custom-search-engine-layout.png b/docs/assets/images/google-custom-search-engine-layout.png new file mode 100644 index 000000000000..362cd8e72d3f Binary files /dev/null and b/docs/assets/images/google-custom-search-engine-layout.png differ diff --git a/docs/assets/images/mm-masthead-logo.png b/docs/assets/images/mm-masthead-logo.png new file mode 100644 index 000000000000..65daae9fdb94 Binary files /dev/null and b/docs/assets/images/mm-masthead-logo.png differ diff --git a/docs/assets/images/mm-post-date-example.png b/docs/assets/images/mm-post-date-example.png new file mode 100644 index 000000000000..a209b97dc1c0 Binary files /dev/null and b/docs/assets/images/mm-post-date-example.png differ diff --git a/minimal-mistakes-jekyll.gemspec b/minimal-mistakes-jekyll.gemspec index 540b56b53078..b1f1780f5340 100644 --- a/minimal-mistakes-jekyll.gemspec +++ b/minimal-mistakes-jekyll.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |spec| spec.name = "minimal-mistakes-jekyll" - spec.version = "4.11.1" + spec.version = "4.20.2" spec.authors = ["Michael Rose"] spec.summary = %q{A flexible two-column Jekyll theme.} @@ -15,14 +15,13 @@ Gem::Specification.new do |spec| f.match(%r{^(assets|_(data|includes|layouts|sass)/|(LICENSE|README|CHANGELOG)((\.(txt|md|markdown)|$)))}i) end - spec.add_runtime_dependency "jekyll", "~> 3.6" + spec.add_runtime_dependency "jekyll", ">= 3.7", "< 5.0" spec.add_runtime_dependency "jekyll-paginate", "~> 1.1" - spec.add_runtime_dependency "jekyll-sitemap", "~> 1.1" - spec.add_runtime_dependency "jekyll-gist", "~> 1.4" - spec.add_runtime_dependency "jekyll-feed", "~> 0.9.2" - spec.add_runtime_dependency "jekyll-data", "~> 1.0" - spec.add_runtime_dependency "jemoji", "~> 0.8" + 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", "~> 1.12" - spec.add_development_dependency "rake", "~> 10.0" + spec.add_development_dependency "bundler" + spec.add_development_dependency "rake", ">= 12.3.3" end diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000000..372809183b57 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,660 @@ +{ + "name": "minimal-mistakes", + "version": "4.20.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@blakeembrey/deque": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@blakeembrey/deque/-/deque-1.0.5.tgz", + "integrity": "sha512-6xnwtvp9DY1EINIKdTfvfeAtCYw4OqBZJhtiqkT3ivjnEfa25VQ3TsKvaFfKm8MyGIEfE95qLe+bNEt3nB0Ylg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "dev": true + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "onchange": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/onchange/-/onchange-6.1.0.tgz", + "integrity": "sha512-T0wvi3yzNd+Lut2ymJp2e6fTiob0TLrXnjqGaiK9MAFB8MYo/k/ZClx6ps7YhTtQ88dDm+hDHmtJXP1nJT5WNA==", + "dev": true, + "requires": { + "@blakeembrey/deque": "^1.0.3", + "arrify": "^2.0.0", + "chokidar": "^3.0.0", + "cross-spawn": "^6.0.0", + "ignore": "^5.1.4", + "minimist": "^1.2.0", + "supports-color": "^7.0.0", + "tree-kill": "^1.2.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + }, + "pidtree": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", + "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.1.tgz", + "integrity": "sha512-2kUqeAGnMAu6YrTPX4E3LfxacH9gKljzVjlkUeSqY0soGwK4KLl7TURXCem712tkhBCeeaFP9QK4dKn88s3Icg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "uglify-js": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz", + "integrity": "sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==", + "dev": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } +} diff --git a/package.json b/package.json index 810983fbd0ab..f1a7df7baeb4 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,16 @@ { "name": "minimal-mistakes", - "version": "4.11.1", - "description": "Minimal Mistakes Jekyll theme npm build scripts", + "version": "4.20.2", + "description": "Minimal Mistakes 2 column Jekyll theme.", "repository": { "type": "git", "url": "git://github.com/jamesstout/minimal-mistakes.git" }, - "keywords": ["jekyll", "theme", "minimal"], + "keywords": [ + "jekyll", + "theme", + "minimal" + ], "author": "Michael Rose", "license": "MIT", "bugs": { @@ -17,16 +21,14 @@ "node": ">= 0.10.0" }, "devDependencies": { - "npm-run-all": "^1.7.0", - "onchange": "^2.2.0", - "uglify-js": "^2.6.1" + "npm-run-all": "^4.1.5", + "onchange": "^6.1.0", + "uglify-js": "^3.8.0" }, "scripts": { - "uglify": - "uglifyjs assets/js/vendor/jquery/jquery-3.3.1.min.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.smooth-scroll.min.js assets/js/_main.js -c -m -o assets/js/main.min.js", + "uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.4.1.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/plugins/smooth-scroll.js assets/js/plugins/gumshoe.js assets/js/_main.js -c -m -o assets/js/main.min.js", "add-banner": "node banner.js", - "watch:js": - "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js", + "watch:js": "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js", "build:js": "npm run uglify && npm run add-banner" } } diff --git a/staticman.yml b/staticman.yml index c8e0ec5c2583..a4f161b7609b 100644 --- a/staticman.yml +++ b/staticman.yml @@ -25,7 +25,7 @@ comments: # request. branch: "master" - commitMessage: "New comment" + commitMessage: "New comment by {fields.name}" # (*) REQUIRED # @@ -83,7 +83,7 @@ comments: # (*) REQUIRED # # Destination path (directory) for the data files. Accepts placeholders. - path: "docs/_data/comments/{options.slug}" # "/_data/comments/{options.slug}" (default) + path: "docs/_data/comments/{options.slug}" # "_data/comments/{options.slug}" (default) # Names of required files. If any of these isn't in the request or is empty, # an error will be thrown. diff --git a/test/Gemfile b/test/Gemfile new file mode 100644 index 000000000000..eb18fabd7192 --- /dev/null +++ b/test/Gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +# use local theme gem for testing +gem "minimal-mistakes-jekyll", path: "../" +group :jekyll_plugins do + gem 'jekyll-algolia', '~> 1.0' +end + +gem "wdm", "~> 0.1.0" if Gem.win_platform? \ No newline at end of file diff --git a/test/_config.yml b/test/_config.yml new file mode 100644 index 000000000000..a97378940dfc --- /dev/null +++ b/test/_config.yml @@ -0,0 +1,299 @@ +# 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", "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) + 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" +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 new file mode 100644 index 000000000000..256ee1fe1812 --- /dev/null +++ b/test/_data/authors.yml @@ -0,0 +1,28 @@ +# 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 new file mode 100644 index 000000000000..8adf5972eefb --- /dev/null +++ b/test/_data/navigation.yml @@ -0,0 +1,61 @@ +# 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/archive-layout-with-content.md b/test/_pages/archive-layout-with-content.md new file mode 100644 index 000000000000..1616b07b04e2 --- /dev/null +++ b/test/_pages/archive-layout-with-content.md @@ -0,0 +1,214 @@ +--- +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 new file mode 100644 index 000000000000..3558be0a0db9 --- /dev/null +++ b/test/_pages/category-archive-grid.md @@ -0,0 +1,7 @@ +--- +title: "Posts by Category (grid view)" +layout: categories +permalink: /categories-grid/ +entries_layout: grid +author_profile: true +--- diff --git a/test/_pages/category-archive.md b/test/_pages/category-archive.md new file mode 100644 index 000000000000..4cb3860e91be --- /dev/null +++ b/test/_pages/category-archive.md @@ -0,0 +1,6 @@ +--- +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 new file mode 100644 index 000000000000..3280bf7bdf79 --- /dev/null +++ b/test/_pages/collection-archive-grid.html @@ -0,0 +1,28 @@ +--- +layout: archive +title: "Posts by Collection (grid view)" +permalink: /collection-archive-grid/ +entries_layout: grid +author_profile: true +--- + +{% assign entries_layout = page.entries_layout | default: 'list' %} +{% capture written_label %}'None'{% endcapture %} + +{% for collection in site.collections %} + {% unless collection.output == false or collection.label == "posts" %} +
+ {% 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 new file mode 100644 index 000000000000..219592b6d8e9 --- /dev/null +++ b/test/_pages/collection-archive.html @@ -0,0 +1,23 @@ +--- +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 new file mode 100644 index 000000000000..c2f73e5a2a93 --- /dev/null +++ b/test/_pages/edge-case-grid.md @@ -0,0 +1,9 @@ +--- +title: Edge Case (grid view) +layout: category +permalink: /categories/edge-case-grid/ +taxonomy: Edge Case +entries_layout: grid +--- + +Sample post listing for the category `Edge Case`. diff --git a/test/_pages/markup-grid.md b/test/_pages/markup-grid.md new file mode 100644 index 000000000000..7ebf0badbdd7 --- /dev/null +++ b/test/_pages/markup-grid.md @@ -0,0 +1,9 @@ +--- +title: Markup (grid view) +layout: tag +permalink: /tags/markup-grid/ +taxonomy: markup +entries_layout: grid +--- + +Sample post listing for the tag `markup`. diff --git a/test/_pages/page-archive-grid.html b/test/_pages/page-archive-grid.html new file mode 100644 index 000000000000..269dc2a16403 --- /dev/null +++ b/test/_pages/page-archive-grid.html @@ -0,0 +1,16 @@ +--- +layout: archive +title: "Page Archive" +permalink: /page-archive-grid/ +entries_layout: grid +author_profile: false +--- + +{% assign entries_layout = page.entries_layout | default: 'list' %} +
+
+ {% 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 new file mode 100644 index 000000000000..ce11172ed489 --- /dev/null +++ b/test/_pages/page-archive.html @@ -0,0 +1,10 @@ +--- +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/sitemap.md b/test/_pages/sitemap.md new file mode 100644 index 000000000000..24d4009dc9ff --- /dev/null +++ b/test/_pages/sitemap.md @@ -0,0 +1,35 @@ +--- +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 new file mode 100644 index 000000000000..81d56258cbfe --- /dev/null +++ b/test/_pages/splash-page.md @@ -0,0 +1,67 @@ +--- +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 new file mode 100644 index 000000000000..fa4df8137729 --- /dev/null +++ b/test/_pages/tag-archive-grid.md @@ -0,0 +1,7 @@ +--- +title: "Posts by Tag (grid view)" +permalink: /tags-grid/ +layout: tags +entries_layout: grid +author_profile: true +--- diff --git a/test/_pages/tag-archive.md b/test/_pages/tag-archive.md new file mode 100644 index 000000000000..3f4e3f0df86c --- /dev/null +++ b/test/_pages/tag-archive.md @@ -0,0 +1,6 @@ +--- +title: "Posts by Tag" +permalink: /tags/ +layout: tags +author_profile: true +--- diff --git a/test/_pages/year-archive-grid.md b/test/_pages/year-archive-grid.md new file mode 100644 index 000000000000..5029212cd32d --- /dev/null +++ b/test/_pages/year-archive-grid.md @@ -0,0 +1,7 @@ +--- +title: "Posts by Year (grid view)" +permalink: /year-archive-grid/ +layout: posts +entries_layout: grid +author_profile: true +--- diff --git a/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md b/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md new file mode 100644 index 000000000000..5e3ecedcaffd --- /dev/null +++ b/test/_posts/2009-05-15-edge-case-nested-and-mixed-lists.md @@ -0,0 +1,68 @@ +--- +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 new file mode 100644 index 000000000000..af9209596ea6 --- /dev/null +++ b/test/_posts/2009-06-01-edge-case-many-tags.md @@ -0,0 +1,51 @@ +--- +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-10-05-edge-case-multiline-excerpt.md b/test/_posts/2009-10-05-edge-case-multiline-excerpt.md new file mode 100644 index 000000000000..6acc568a0655 --- /dev/null +++ b/test/_posts/2009-10-05-edge-case-multiline-excerpt.md @@ -0,0 +1,6 @@ +--- +title: "Edge Case: Post with multiline excerpt" +--- + +Et ex ullamco duis don't +combine these words quis laborum sunt sint. Nisi et Lorem reprehenderit cupidatat. Aliqua fugiat aliquip officia culpa elit. Adipisicing do eu duis aute et aute amet anim ut cillum aliqua. Aliqua adipisicing occaecat et ullamco fugiat. \ No newline at end of file diff --git a/test/_posts/2010-02-05-post-notice.md b/test/_posts/2010-02-05-post-notice.md new file mode 100644 index 000000000000..da63f9a32152 --- /dev/null +++ b/test/_posts/2010-02-05-post-notice.md @@ -0,0 +1,78 @@ +--- +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-08-05-post-header-overlay-image-og-override.md b/test/_posts/2010-08-05-post-header-overlay-image-og-override.md new file mode 100644 index 000000000000..01630ace8dcb --- /dev/null +++ b/test/_posts/2010-08-05-post-header-overlay-image-og-override.md @@ -0,0 +1,30 @@ +--- +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 new file mode 100644 index 000000000000..a59cd117126e --- /dev/null +++ b/test/_posts/2010-08-05-post-image-linked.md @@ -0,0 +1,10 @@ +--- +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-06-post-image-linked-caption.md b/test/_posts/2010-08-06-post-image-linked-caption.md new file mode 100644 index 000000000000..f9b09ba135db --- /dev/null +++ b/test/_posts/2010-08-06-post-image-linked-caption.md @@ -0,0 +1,21 @@ +--- +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 new file mode 100644 index 000000000000..d50d4635df9e --- /dev/null +++ b/test/_posts/2010-08-07-post-image-caption.md @@ -0,0 +1,17 @@ +--- +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 new file mode 100644 index 000000000000..3bdd4ff3f477 --- /dev/null +++ b/test/_posts/2010-09-09-post-gallery.md @@ -0,0 +1,142 @@ +--- +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/2012-01-02-layout-post-date-disabled.md b/test/_posts/2012-01-02-layout-post-date-disabled.md new file mode 100644 index 000000000000..a10a3e4648eb --- /dev/null +++ b/test/_posts/2012-01-02-layout-post-date-disabled.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Disabled" +show_date: false +tags: + - post date +--- + +This post has the date disabled. The date this post was published should not be showing if `show_date: false` is set in `_config.yml` or in this post's YAML Front Matter. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/test/_posts/2012-01-02-layout-post-date.md b/test/_posts/2012-01-02-layout-post-date.md new file mode 100644 index 000000000000..b31c9a275b5c --- /dev/null +++ b/test/_posts/2012-01-02-layout-post-date.md @@ -0,0 +1,18 @@ +--- +title: "Layout: Post Date Enabled" +show_date: true +tags: + - post date +--- + +This post has post date enabled. The date the post was published should show if `show_date: true` is added to it's YAML Front Matter or as a default in `_config.yml`. + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/test/_posts/2012-01-03-layout-table-of-contents-include-post.md b/test/_posts/2012-01-03-layout-table-of-contents-include-post.md new file mode 100644 index 000000000000..622b04da1d69 --- /dev/null +++ b/test/_posts/2012-01-03-layout-table-of-contents-include-post.md @@ -0,0 +1,139 @@ +--- +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 new file mode 100644 index 000000000000..e36f8104ccd4 --- /dev/null +++ b/test/_posts/2012-01-03-layout-table-of-contents-indent-post.md @@ -0,0 +1,134 @@ +--- +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 new file mode 100644 index 000000000000..01c14a2cf451 --- /dev/null +++ b/test/_posts/2012-01-03-layout-table-of-contents-post.md @@ -0,0 +1,98 @@ +--- +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 new file mode 100644 index 000000000000..a8eae408204d --- /dev/null +++ b/test/_posts/2012-01-03-layout-table-of-contents-sticky.md @@ -0,0 +1,93 @@ +--- +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-15-layout-author-override.md b/test/_posts/2012-03-15-layout-author-override.md new file mode 100644 index 000000000000..280a7bdfb47b --- /dev/null +++ b/test/_posts/2012-03-15-layout-author-override.md @@ -0,0 +1,50 @@ +--- +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-header-image-external.md b/test/_posts/2012-03-15-layout-header-image-external.md new file mode 100644 index 000000000000..1795bdcd13fa --- /dev/null +++ b/test/_posts/2012-03-15-layout-header-image-external.md @@ -0,0 +1,17 @@ +--- +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-overlay-image-tagline.md b/test/_posts/2012-03-15-layout-header-overlay-image-tagline.md new file mode 100644 index 000000000000..32588bde9b53 --- /dev/null +++ b/test/_posts/2012-03-15-layout-header-overlay-image-tagline.md @@ -0,0 +1,28 @@ +--- +title: "Layout: Header Image Overlay with Custom Tagline" +tagline: "This is a custom tagline content which overrides the *default* page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +categories: + - Layout + - Uncategorized +tags: + - edge case + - image + - layout +last_modified_at: 2020-01-07T13:05:25-05:00 +--- + +This post should display a **header with an overlay image** and **custom tagline**, if the theme supports it. + +Non-square images can provide some unique styling issues. + +This post tests overlay header images with custom `page.tagline`. + +```yaml +tagline: "This is a custom tagline content which overrides the default page excerpt." +header: + overlay_image: /assets/images/unsplash-image-1.jpg + caption: "Photo credit: [**Unsplash**](https://unsplash.com)" +``` \ No newline at end of file diff --git a/test/_posts/2012-03-15-layout-header-overlay-image.md b/test/_posts/2012-03-15-layout-header-overlay-image.md new file mode 100644 index 000000000000..4973a041ba92 --- /dev/null +++ b/test/_posts/2012-03-15-layout-header-overlay-image.md @@ -0,0 +1,57 @@ +--- +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 new file mode 100644 index 000000000000..c6cdc44fb7c1 --- /dev/null +++ b/test/_posts/2012-03-15-layout-more-tag.md @@ -0,0 +1,19 @@ +--- +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 new file mode 100644 index 000000000000..c594ae4807af --- /dev/null +++ b/test/_posts/2012-03-15-layout-sidebar-custom.md @@ -0,0 +1,27 @@ +--- +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/2016-02-24-welcome-to-jekyll.md b/test/_posts/2016-02-24-welcome-to-jekyll.md new file mode 100644 index 000000000000..bbfca0b9c9a6 --- /dev/null +++ b/test/_posts/2016-02-24-welcome-to-jekyll.md @@ -0,0 +1,31 @@ +--- +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/assets/images/apple-touch-icon.png b/test/assets/images/apple-touch-icon.png new file mode 100644 index 000000000000..51f879190642 Binary files /dev/null and b/test/assets/images/apple-touch-icon.png differ diff --git a/test/index.html b/test/index.html new file mode 100644 index 000000000000..98d8242ce999 --- /dev/null +++ b/test/index.html @@ -0,0 +1,6 @@ +--- +layout: home +author_profile: true +--- + +

This text should appear above the recent posts.