diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 5cf9e25ae8..0000000000 --- a/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -assets/fonts/* linguist-vendored -assets/js/plugins/* linguist-vendored -assets/js/vendor/* linguist-vendored -assets/js/scripts.min.js linguist-vendored -_sass/vendor/* linguist-vendored diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5c4866d719..0000000000 --- a/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -*.gem -*.sublime-project -*.sublime-workspace -.bundle -.DS_Store -.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/.jshintrc b/.jshintrc deleted file mode 100644 index c7fe066605..0000000000 --- a/.jshintrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "bitwise": true, - "browser": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "es5": false, - "esnext": true, - "immed": true, - "jquery": true, - "latedef": true, - "newcap": true, - "noarg": true, - "node": true, - "strict": false, - "trailing": false, - "undef": true, - "multistr": true, - "expr": true -} \ No newline at end of file diff --git a/2017/11/12/chrome-extension-solves-gitlab-online-edit-bug/index.html b/2017/11/12/chrome-extension-solves-gitlab-online-edit-bug/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2017/12/20/loading-effect-more-linear/index.html b/2017/12/20/loading-effect-more-linear/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2017/12/24/small-program-bugs/index.html b/2017/12/24/small-program-bugs/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2017/12/26/laraval-nova/index.html b/2017/12/26/laraval-nova/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2017/12/29/front-end-open-source-project-directory-structure/index.html b/2017/12/29/front-end-open-source-project-directory-structure/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/01/02/webp-image-degradation-plan/index.html b/2018/01/02/webp-image-degradation-plan/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/01/15/common-toolset-memo/index.html b/2018/01/15/common-toolset-memo/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/01/20/python-getting-started/index.html b/2018/01/20/python-getting-started/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/01/25/unfamiliar-html-tags/index.html b/2018/01/25/unfamiliar-html-tags/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/02/05/frontend-bugs/index.html b/2018/02/05/frontend-bugs/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/02/15/vue-bugs/index.html b/2018/02/15/vue-bugs/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2018/06/29/translate-animating-svg-with-css/index.html b/2018/06/29/translate-animating-svg-with-css/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2019/07/19/5G-impact-on-the-front-end/index.html b/2019/07/19/5G-impact-on-the-front-end/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2019/08/28/ams/index.html b/2019/08/28/ams/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2019/09/08/export-default-imported-as-xxx-was-not-found/index.html b/2019/09/08/export-default-imported-as-xxx-was-not-found/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2019/12/01/flutter/index.html b/2019/12/01/flutter/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/2024/10/08/kuakes/index.html b/2024/10/08/kuakes/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/404.md b/404.md deleted file mode 100644 index 0587e87af8..0000000000 --- a/404.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Page Not Found" -description: "Page not found. Your pixels are in another canvas." -comments: false -share: false -permalink: /404.html ---- - -Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below. - - - \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000000..68a814216e --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.w3cmark.com \ No newline at end of file diff --git a/Gemfile b/Gemfile deleted file mode 100644 index c23e243c80..0000000000 --- a/Gemfile +++ /dev/null @@ -1,8 +0,0 @@ -source "https://rubygems.org" - -gem "tzinfo-data" -gem "jekyll", "~> 3.7" -gem "jekyll-sitemap" -gem "jekyll-feed" -gem "jekyll-paginate" -gem "jekyll-gist" diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index ad93726fec..0000000000 --- a/Gruntfile.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; -module.exports = function(grunt) { - - grunt.initConfig({ - jshint: { - options: { - jshintrc: '.jshintrc' - }, - all: [ - 'Gruntfile.js', - '!assets/js/*.js', - '!assets/js/plugins/*.js', - '!assets/js/scripts.min.js' - ] - }, - uglify: { - dist: { - files: { - 'assets/js/scripts.min.js': [ - 'assets/js/plugins/*.js', - 'assets/js/_*.js' - ] - } - } - }, - imagemin: { - dist: { - options: { - optimizationLevel: 7, - progressive: true - }, - files: [{ - expand: true, - cwd: 'images/', - src: '{,*/}*.{png,jpg,jpeg}', - dest: 'images/' - }] - } - }, - svgmin: { - dist: { - files: [{ - expand: true, - cwd: 'images/', - src: '{,*/}*.svg', - dest: 'images/' - }] - } - }, - watch: { - js: { - files: [ - '<%= jshint.all %>' - ], - tasks: ['jshint','uglify'] - } - }, - clean: { - dist: [ - 'assets/js/scripts.min.js' - ] - } - }); - - // Load tasks - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-watch'); - grunt.loadNpmTasks('grunt-contrib-imagemin'); - grunt.loadNpmTasks('grunt-svgmin'); - - // Register tasks - grunt.registerTask('default', [ - 'clean', - 'uglify', - 'imagemin', - 'svgmin' - ]); - grunt.registerTask('dev', [ - 'watch' - ]); - -}; \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4fe1728521..0000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Michael Rose - -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. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index df2291c16c..0000000000 --- a/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# HPSTR Jekyll Theme - -* Modern and minimal design. -* Responsive templates for post, page, and post index `_layouts`. Looks great on mobile, tablet, and desktop devices. -* Gracefully degrades in older browsers. Compatible with Internet Explorer 8+ and all modern browsers. -* Sweet animated menu with support for drop-downs. -* Optional [Disqus](http://disqus.com) comments and social sharing links. -* [Open Graph](https://developers.facebook.com/docs/opengraph/) and [Twitter Cards](https://dev.twitter.com/docs/cards) support for a better social sharing experience. -* Simple [custom 404 page](http://mmistakes.github.io/jekyll-theme-hpstr/404.html) to get you started. -* [Syntax highlighting](http://mmistakes.github.io/jekyll-theme-hpstr/code-highlighting-post/) stylesheet to make your code examples look snazzy -* [Available in Spanish](https://github.com/cruznick/hpstr-jekyll-theme/tree/es). Thanks [@cruznick](https://github.com/cruznick)! - -![HPSTR Theme Preview screenshot](http://mmistakes.github.io/jekyll-theme-hpstr/images/jekyll-theme-hpstr-preview.jpg) - ---- - -## Getting Started - -HPSTR takes advantage of SCSS and data files to make customizing easier. This theme requires Jekyll 3.x and will not work with older versions properly. - -To learn how to install and use this theme check out the [Setup Guide](https://mmistakes.github.io/jekyll-theme-hpstr/theme-setup/) for more information. - ---- - -## More Jekyll Themes - -Check out my more popular Jekyll themes, available as Ruby gems and 100% GitHub Pages compatible. - -* [Minimal Mistakes](https://github.com/mmistakes/minimal-mistakes) -* [So Simple](https://github.com/mmistakes/so-simple-theme) -* [Basically Basic](https://github.com/mmistakes/jekyll-theme-basically-basic) diff --git a/_config.yml b/_config.yml deleted file mode 100644 index e7fb564fbd..0000000000 --- a/_config.yml +++ /dev/null @@ -1,89 +0,0 @@ -title: Site Title -description: Describe your website here. -disqus_shortname: -reading_time: true -words_per_minute: 200 -# Your site's domain goes here (eg: https://mmistakes.github.io, http://yourdomain.com, etc) -# When testing locally leave blank or use http://localhost:4000 -url: - -# Owner/author information -owner: - name: Your Name - avatar: avatar.jpg - bio: "Your bio goes here. It shouldn't be super long but a good sentence or two should suffice." - email: you@email.com - # Social networking links used in footer. Update and remove as you like. - twitter: - facebook: - github: - stackexchange: - linkedin: - instagram: - flickr: - tumblr: - # google plus id, include the '+', eg +mmistakes - google_plus: - -# Background image to be tiled on all pages -background: - -# Analytics and webmaster tools stuff goes here -google_analytics: -google_verify: -# https://ssl.bing.com/webmaster/configure/verify/ownership Option 2 content= goes here -bing_verify: - -# http://en.wikipedia.org/wiki/List_of_tz_database_time_zones -timezone: America/New_York -future: false # publish future dated posts -- true, false (default) -highlighter: rouge -markdown: kramdown -plugins: - - jekyll-sitemap - - jekyll-paginate - - jekyll-gist - - jekyll-feed -sass: - sass_dir: _sass - style: compressed - -# https://github.com/mojombo/jekyll/wiki/Permalinks -permalink: /:categories/:title/ - -# Amount of post to show on home page -paginate: 5 - -kramdown: - input: GFM - auto_ids: true - footnote_nr: 1 - entity_output: as_char - toc_levels: 1..6 - enable_coderay: false - -include: - - .htaccess -exclude: - - "*.less" - - "*.sublime-project" - - "*.sublime-workspace" - - .asset-cache - - .bundle - - .jekyll-assets-cache - - .sass-cache - - CHANGELOG - - Capfile - - Gemfile - - Gruntfile.js - - LICENSE - - README - - Rakefile - - config - - gulpfile.js - - lib - - log - - node_modules - - package.json - - spec - - tmp diff --git a/_data/navigation.yml b/_data/navigation.yml deleted file mode 100644 index 9d48c2b129..0000000000 --- a/_data/navigation.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Menu navigation links - -- title: Theme Setup - url: /theme-setup/ - -- title: External Link - url: http://mademistakes.com \ No newline at end of file diff --git a/_includes/browser-upgrade.html b/_includes/browser-upgrade.html deleted file mode 100644 index 6b6746bda3..0000000000 --- a/_includes/browser-upgrade.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/_includes/disqus_comments.html b/_includes/disqus_comments.html deleted file mode 100644 index 3b05844d39..0000000000 --- a/_includes/disqus_comments.html +++ /dev/null @@ -1,23 +0,0 @@ -{% if site.disqus_shortname %} - - - comments powered by Disqus -{% endif %} \ No newline at end of file diff --git a/_includes/feed-footer.html b/_includes/feed-footer.html deleted file mode 100644 index 02a94f6a88..0000000000 --- a/_includes/feed-footer.html +++ /dev/null @@ -1 +0,0 @@ -<p><a href="{{ site.url }}{{ post.url }}">{{ post.title | xml_escape }}</a> was originally published by {{ site.owner.name }} at <a href="{{ site.url }}">{{ site.title }}</a> on {{ post.date | date: "%B %d, %Y" }}.</p> \ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index de5271ee55..0000000000 --- a/_includes/footer.html +++ /dev/null @@ -1 +0,0 @@ -© {{ site.time | date: '%Y' }} {{ site.owner.name }}. Powered by Jekyll using the HPSTR Theme. \ No newline at end of file diff --git a/_includes/gallery b/_includes/gallery deleted file mode 100644 index 4091c84db5..0000000000 --- a/_includes/gallery +++ /dev/null @@ -1,21 +0,0 @@ -{% assign images = include.images | split:" " %} -{% assign caption = include.caption %} -{% assign cols = include.cols %} - -{% case cols %} - {% when 1 %} - {% assign class = "" %} - {% when 2 %} - {% assign class = "half" %} - {% when 3 %} - {% assign class = "third" %} - {% else %} - {% assign class = "" %} -{% endcase %} - -
- {% for image in images %} - - {% endfor %} -
{{ caption }}
-
diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index f51aa0e4f6..0000000000 --- a/_includes/head.html +++ /dev/null @@ -1,63 +0,0 @@ - -{% if page.title %}{{ page.title }} – {% endif %}{{ site.title }} - -{% if page.tags %}{% endif %} - -{% if site.owner.twitter %} -{% if page.image.feature %} - -{% else %} -{% endif %} - - -{% endif %} - - - - - - - - - -{% if site.google_verify %}{% endif %} -{% if site.bing_verify %}{% endif %} - -{% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% if page.image.background or site.background %} -{% capture background %}{% if page.image.background %}{{ page.image.background }}{% else %}{{ site.background }}{% endif %}{% endcapture %} -{% unless background contains 'http://' or background contains 'https://' %}{% capture background %}{{ site.url }}/images/{{ background }}{% endcapture %}{% endunless %} - -{% endif %} diff --git a/_includes/navigation.html b/_includes/navigation.html deleted file mode 100644 index 1b5456f159..0000000000 --- a/_includes/navigation.html +++ /dev/null @@ -1,62 +0,0 @@ - diff --git a/_includes/pagination.html b/_includes/pagination.html deleted file mode 100644 index 871b5c1a33..0000000000 --- a/_includes/pagination.html +++ /dev/null @@ -1,66 +0,0 @@ -{% if paginator.total_pages > 1 %} - -{% endif %} \ No newline at end of file diff --git a/_includes/read-more.html b/_includes/read-more.html deleted file mode 100644 index 97afc0fef9..0000000000 --- a/_includes/read-more.html +++ /dev/null @@ -1,19 +0,0 @@ -
- {% for post in site.related_posts limit:1 %} -
- Read More -
-
-

{{ post.title }}

-

{% if post.description %}{{ post.description }}{% else %}{{ post.content | strip_html | strip_newlines | truncate: 140 }}…{% endif %} Continue reading

-
- {% endfor %} -
- {% for post in site.related_posts limit:2 offset:1 %} -
-

{{ post.title }}

- Published on {{ post.date | date: "%B %d, %Y" }} -
- {% endfor %} -
-
\ No newline at end of file diff --git a/_includes/read-time-index.html b/_includes/read-time-index.html deleted file mode 100644 index cae3406ce4..0000000000 --- a/_includes/read-time-index.html +++ /dev/null @@ -1,2 +0,0 @@ -{% assign readtime = post.content | strip_html | number_of_words | divided_by:site.words_per_minute %} -Reading time ~{% if readtime <= 1 %}1 minute{% else %}{{ readtime }} minutes{% endif %} \ No newline at end of file diff --git a/_includes/read-time.html b/_includes/read-time.html deleted file mode 100644 index 336a8a06ae..0000000000 --- a/_includes/read-time.html +++ /dev/null @@ -1,2 +0,0 @@ -{% assign readtime = content | strip_html | number_of_words | divided_by:site.words_per_minute %} -Reading time ~{% if readtime <= 1 %}1 minute{% else %}{{ readtime }} minutes{% endif %} \ No newline at end of file diff --git a/_includes/scripts.html b/_includes/scripts.html deleted file mode 100644 index ff3454ac3b..0000000000 --- a/_includes/scripts.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - -{% if site.google_analytics %} - - -{% endif %} - -{% if page.comments != false %}{% include disqus_comments.html %}{% endif %} \ No newline at end of file diff --git a/_includes/social-share.html b/_includes/social-share.html deleted file mode 100644 index 6ad27de330..0000000000 --- a/_includes/social-share.html +++ /dev/null @@ -1,7 +0,0 @@ -
- -
\ No newline at end of file diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100644 index f54c5dbe23..0000000000 --- a/_layouts/page.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - -{% include head.html %} - - - - -{% include browser-upgrade.html %} -{% include navigation.html %} - -{% if page.image.feature %} -
- {% if page.image.credit %}
Image source: {{ page.image.credit }}
{% endif %} -
- {{ page.title }} -
-
-{% endif %} - -
-
-
-
-

{{ page.title }}

- {% if site.reading_time %} -

- - {% include read-time.html %} -

- {% endif %} -
-
-
- {{ content }} -
- {% if page.modified %}Updated on - {{ site.owner.name }}{% endif %} - {% if page.share != false %}{% include social-share.html %}{% endif %} -
-
- {% if page.comments != false and site.disqus_shortname %}
{% endif %} -
-
- - - -{% include scripts.html %} - - - diff --git a/_layouts/post-index.html b/_layouts/post-index.html deleted file mode 100644 index c6ee35aa6a..0000000000 --- a/_layouts/post-index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - -{% include head.html %} - - - - -{% include browser-upgrade.html %} -{% include navigation.html %} - -
- {% if page.image.credit %}
Image source: {{ page.image.credit }}
{% endif %} - {% if page.image.feature %} -
- {{ page.title }} -
- {% endif %} -
-
-

{{ site.title }}

-

{{ page.title }}

-
-
-
- -
- {{ content }} -
- - - -{% include scripts.html %} - - - \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index e57778fe7b..0000000000 --- a/_layouts/post.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - -{% include head.html %} - - - - -{% include browser-upgrade.html %} -{% include navigation.html %} - -{% if page.image.feature %} -
- {% if page.image.credit %}
Image source: {% if page.image.creditlink %}{% endif %}{{ page.image.credit }}{% if page.image.creditlink %}{% endif %}
{% endif %} -
- {{ page.title }} -
-
-{% endif %} - -
-
-
-
- {% if page.link %} -

{{ page.title }}

- {% else %} -

{{ page.title }}

- {% endif %} -

- {% if site.reading_time %} -

- - {% include read-time.html %} -

- {% endif %} -
-
-
- {{ content }} -
- - {% if page.modified %}Updated on - {{ site.owner.name }}{% endif %} - {% if page.share != false %}{% include social-share.html %}{% endif %} -
-
- {% if page.comments != false and site.disqus_shortname %}
{% endif %} - {% if site.related_posts.size > 0 %}{% include read-more.html %}{% endif %} -
-
- - - -{% include scripts.html %} - - - diff --git a/_posts/2011-03-10-sample-post.md b/_posts/2011-03-10-sample-post.md deleted file mode 100644 index 8a4aeffc2c..0000000000 --- a/_posts/2011-03-10-sample-post.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: post -title: Sample Post -description: "Just about everything you'll need to style in the theme: headings, paragraphs, blockquotes, tables, code blocks, and more." -modified: 2014-12-24 -tags: [sample post] -image: - path: /images/abstract-3.jpg - feature: abstract-3.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ ---- - -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. - -# Heading 1 - -## Heading 2 - -### Heading 3 - -#### Heading 4 - -##### Heading 5 - -###### Heading 6 - -### Body text - -Lorem ipsum dolor sit amet, test link adipiscing elit. **This is strong**. Nullam dignissim convallis est. Quisque aliquam. - -![Smithsonian Image]({{ site.url }}/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 - -Syntax highlighting via Rouge - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -Non Pygments code example - -
-

This is great isn't it?

-
- -## Buttons - -Make any link standout more when applying the `.btn` class. - -```html -Success Button -``` - -
Primary Button
-
Success Button
-
Warning Button
-
Danger Button
-
Info Button
diff --git a/_posts/2012-05-22-readability-post.md b/_posts/2012-05-22-readability-post.md deleted file mode 100644 index 4c59f70ac4..0000000000 --- a/_posts/2012-05-22-readability-post.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: post -title: "Testing Readability with a Bunch of Text" -description: "A ton of text to test readability." -tags: [sample post, readability, test, intro] -image: - path: /images/abstract-6.jpg - feature: abstract-6.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ ---- - -Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest literally occupy Schlitz forage. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - -* Sartorial hoodie -* Labore viral forage -* Tote bag selvage -* DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. \ No newline at end of file diff --git a/_posts/2013-05-22-sample-post-images.md b/_posts/2013-05-22-sample-post-images.md deleted file mode 100644 index 7c411202b0..0000000000 --- a/_posts/2013-05-22-sample-post-images.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: post -title: "A Post with Images" -description: "Examples and code for displaying images in posts." -tags: [sample post, images, test] ---- - -Here are some examples of what a post with images might look like. If you want to display two or three images next to each other responsively use `figure` with the appropriate `class`. Each instance of `figure` is auto-numbered and displayed in the caption. - -## Figures (for images or video) - -### One Up - -
- -
Morning Fog Emerging From Trees by A Guy Taking Pictures, on Flickr.
-
- -### Two Up - -Apply the `half` class like so to display two images side by side that share the same caption. - -```html -
- - -
Caption describing these two images.
-
-``` - -And you'll get something that looks like this: - -
- - - - -
Two images.
-
- -### Three Up - -Apply the `third` class like so to display three images side by side that share the same caption. - -```html -
- - - -
Caption describing these three images.
-
-``` - -And you'll get something that looks like this: - -
- - - - - - -
Three images.
-
- -### Alternative way - -Another way to achieve the same result is to include `gallery` Liquid template. In this case you -don't have to write any HTML tags – just copy a small block of code, adjust the parameters (see below) -and fill the block with any number of links to images. You can mix relative and external links. - -Here is the block you might want to use: - -```liquid -{% raw %}{% capture images %} - /images/abstract-10.jpg - /images/abstract-11.jpg - http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png -{% endcapture %} -{% include gallery images=images caption="Test images" cols=3 %}{% endraw %} -``` - -Parameters: - -- `caption`: Sets the caption under the gallery (see `figcaption` HTML tag above); -- `cols`: Sets the number of columns of the gallery. -Available values: [1..3]. - -It will look something like this: - -{% capture images %} - /images/abstract-10.jpg - /images/abstract-11.jpg - http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png -{% endcapture %} -{% include gallery images=images caption="Test images" cols=3 %} diff --git a/_posts/2013-05-23-readability-feature-post.md b/_posts/2013-05-23-readability-feature-post.md deleted file mode 100644 index 48ee07b88b..0000000000 --- a/_posts/2013-05-23-readability-feature-post.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: post -title: "Post with Large Feature Image and Text" -description: "Custom written post descriptions are the way to go... if you're not lazy." -tags: [sample post, readability] -modified: 2013-06-30 -image: - path: /images/abstract-7.jpg - feature: abstract-7.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ ---- - -This is a sample post with a large feature image up top and tons of text. Odio ad blue bottle vinyl, 90's narwhal commodo bitters pour-over nostrud. Ugh est hashtag in, fingerstache adipisicing laboris esse Pinterest shabby chic Portland. Shoreditch bicycle rights anim, flexitarian laboris put a bird on it vinyl cupidatat narwhal. Hashtag artisan skateboard, flannel Bushwick nesciunt salvia aute fixie do plaid post-ironic dolor McSweeney's. Cliche pour-over chambray nulla four loko skateboard sapiente hashtag. - -Vero laborum commodo occupy. Semiotics voluptate mumblecore pug. Cosby sweater ullamco quinoa ennui assumenda, sapiente occupy delectus lo-fi. Ea fashion axe Marfa cillum aliquip. Retro Bushwick keytar cliche. Before they sold out sustainable gastropub Marfa readymade, ethical Williamsburg skateboard brunch qui consectetur gentrify semiotics. Mustache cillum irony, fingerstache magna pour-over keffiyeh tousled selfies. - -## Cupidatat 90's lo-fi authentic try-hard - -In pug Portland incididunt mlkshk put a bird on it vinyl quinoa. Terry Richardson shabby chic +1, scenester Tonx excepteur tempor fugiat voluptate fingerstache aliquip nisi next level. Farm-to-table hashtag Truffaut, Odd Future ex meggings gentrify single-origin coffee try-hard 90's. - -* Sartorial hoodie -* Labore viral forage -* Tote bag selvage -* DIY exercitation et id ugh tumblr church-key - -Incididunt umami sriracha, ethical fugiat VHS ex assumenda yr irure direct trade. Marfa Truffaut bicycle rights, kitsch placeat Etsy kogi asymmetrical. Beard locavore flexitarian, kitsch photo booth hoodie plaid ethical readymade leggings yr. - -Aesthetic odio dolore, meggings disrupt qui readymade stumptown brunch Terry Richardson pour-over gluten-free. Banksy american apparel in selfies, biodiesel flexitarian organic meh wolf quinoa gentrify banjo kogi. Readymade tofu ex, scenester dolor umami fingerstache occaecat fashion axe Carles jean shorts minim. Keffiyeh fashion axe nisi Godard mlkshk dolore. Lomo you probably haven't heard of them eu non, Odd Future Truffaut pug keytar meggings McSweeney's Pinterest cred. Etsy literally aute esse, eu bicycle rights qui meggings fanny pack. Gentrify leggings pug flannel duis. - -## Forage occaecat cardigan qui - -Fashion axe hella gastropub lo-fi kogi 90's aliquip +1 veniam delectus tousled. Cred sriracha locavore gastropub kale chips, iPhone mollit sartorial. Anim dolore 8-bit, pork belly dolor photo booth aute flannel small batch. Dolor disrupt ennui, tattooed whatever salvia Banksy sartorial roof party selfies raw denim sint meh pour-over. Ennui eu cardigan sint, gentrify iPhone cornhole. - -> Whatever velit occaecat quis deserunt gastropub, leggings elit tousled roof party 3 wolf moon kogi pug blue bottle ea. Fashion axe shabby chic Austin quinoa pickled laborum bitters next level, disrupt deep v accusamus non fingerstache. - -Tote bag asymmetrical elit sunt. Occaecat authentic Marfa, hella McSweeney's next level irure veniam master cleanse. Sed hoodie letterpress artisan wolf leggings, 3 wolf moon commodo ullamco. Anim occupy ea labore Terry Richardson. Tofu ex master cleanse in whatever pitchfork banh mi, occupy fugiat fanny pack Austin authentic. Magna fugiat 3 wolf moon, labore McSweeney's sustainable vero consectetur. Gluten-free disrupt enim, aesthetic fugiat jean shorts trust fund keffiyeh magna try-hard. - -## Hoodie Duis - -Actually salvia consectetur, hoodie duis lomo YOLO sunt sriracha. Aute pop-up brunch farm-to-table odio, salvia irure occaecat. Sriracha small batch literally skateboard. Echo Park nihil hoodie, aliquip forage artisan laboris. Trust fund reprehenderit nulla locavore. Stumptown raw denim kitsch, keffiyeh nulla twee dreamcatcher fanny pack ullamco 90's pop-up est culpa farm-to-table. Selfies 8-bit do pug odio. - -### Thundercats Ho! - -Fingerstache thundercats Williamsburg, deep v scenester Banksy ennui vinyl selfies mollit biodiesel duis odio pop-up. Banksy 3 wolf moon try-hard, sapiente enim stumptown deep v ad letterpress. Squid beard brunch, exercitation raw denim yr sint direct trade. Raw denim narwhal id, flannel DIY McSweeney's seitan. Letterpress artisan bespoke accusamus, meggings laboris consequat Truffaut qui in seitan. Sustainable cornhole Schlitz, twee Cosby sweater banh mi deep v forage letterpress flannel whatever keffiyeh. Sartorial cred irure, semiotics ethical sed blue bottle nihil letterpress. - -Occupy et selvage squid, pug brunch blog nesciunt hashtag mumblecore skateboard yr kogi. Ugh small batch swag four loko. Fap post-ironic qui tote bag farm-to-table american apparel scenester keffiyeh vero, swag non pour-over gentrify authentic pitchfork. Schlitz scenester lo-fi voluptate, tote bag irony bicycle rights pariatur vero Vice freegan wayfarers exercitation nisi shoreditch. Chambray tofu vero sed. Street art swag literally leggings, Cosby sweater mixtape PBR lomo Banksy non in pitchfork ennui McSweeney's selfies. Odd Future Banksy non authentic. - -Aliquip enim artisan dolor post-ironic. Pug tote bag Marfa, deserunt pour-over Portland wolf eu odio intelligentsia american apparel ugh ea. Sunt viral et, 3 wolf moon gastropub pug id. Id fashion axe est typewriter, mlkshk Portland art party aute brunch. Sint pork belly Cosby sweater, deep v mumblecore kitsch american apparel. Try-hard direct trade tumblr sint skateboard. Adipisicing bitters excepteur biodiesel, pickled gastropub aute veniam. \ No newline at end of file diff --git a/_posts/2013-06-25-video-post.md b/_posts/2013-06-25-video-post.md deleted file mode 100644 index 9a0d217373..0000000000 --- a/_posts/2013-06-25-video-post.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: "A Post with a Video" -description: "Custom written post descriptions are the way to go... if you're not lazy." -tags: [sample post, video] ---- - - - -Video embeds are responsive and scale with the width of the main content block with the help of [FitVids](http://fitvidsjs.com/). - -```html - -``` \ No newline at end of file diff --git a/_posts/2013-08-12-sample-link-post.md b/_posts/2013-08-12-sample-link-post.md deleted file mode 100644 index c54ffd13bc..0000000000 --- a/_posts/2013-08-12-sample-link-post.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: post -title: "Sample Link Post" -description: "Example and code for using link posts." -tags: [sample post, link post] -comments: true -link: http://mademistakes.com ---- - -This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. \ No newline at end of file diff --git a/_posts/2013-08-16-code-highlighting-post.md b/_posts/2013-08-16-code-highlighting-post.md deleted file mode 100644 index f901ec995e..0000000000 --- a/_posts/2013-08-16-code-highlighting-post.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: post -title: Syntax Highlighting Post -description: "Demo post displaying the various ways of highlighting code in Markdown." -modified: 2016-06-01T15:27:45-04:00 -tags: [sample post, code, highlighting] -image: - path: /images/abstract-10.jpg - feature: abstract-10.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ ---- - -Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.[^1] - -[^1]: - -### GFM Code Blocks - -GitHub Flavored Markdown [fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) are supported. To modify styling and highlight colors edit `/_sass/syntax.scss`. - -```css -#container { - float: left; - margin: 0 -240px 0 0; - width: 100%; -} -``` - -{% highlight scss %} -.highlight { - margin: 0; - padding: 1em; - font-family: $monospace; - font-size: $type-size-7; - line-height: 1.8; -} -{% endhighlight %} - -```html -{% raw %}{% endraw %} -``` - -{% highlight html linenos %} -{% raw %}{% endraw %} -{% endhighlight %} - -```ruby -module Jekyll - class TagIndex < Page - def initialize(site, base, dir, tag) - @site = site - @base = base - @dir = dir - @name = 'index.html' - self.process(@name) - self.read_yaml(File.join(base, '_layouts'), 'tag_index.html') - self.data['tag'] = tag - tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: ' - tag_title_suffix = site.config['tag_title_suffix'] || '–' - self.data['title'] = "#{tag_title_prefix}#{tag}" - self.data['description'] = "An archive of posts tagged #{tag}." - end - end -end -``` - -### Code Blocks in Lists - -Indentation matters. Be sure the indent of the code block aligns with the first non-space character after the list item marker (e.g., `1.`). Usually this will mean indenting 3 spaces instead of 4. - -1. Do step 1. -2. Now do this: - - ```ruby - def print_hi(name) - puts "Hi, #{name}" - end - print_hi('Tom') - #=> prints 'Hi, Tom' to STDOUT. - ``` - -3. Now you can do this. - -### GitHub Gist Embed - -An example of a Gist embed below. - -{% gist mmistakes/6589546 %} \ No newline at end of file diff --git a/_posts/2013-10-26-background-image.md b/_posts/2013-10-26-background-image.md deleted file mode 100644 index 95d3c17d57..0000000000 --- a/_posts/2013-10-26-background-image.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: post -title: Post with a Background Image -description: "Sample post with a background image CSS override." -tags: [sample post] -image: - background: triangular.png ---- - -Here be a sample post with a custom background image. To utilize this "feature" just add the following YAML to a post's front matter. - -```yaml -image: - background: filename.png -``` - -This little bit of YAML makes the assumption that your background image asset is in the `/images` folder. If you place it somewhere else or are hotlinking from the web, just include the full http(s):// URL. Either way you should have a background image that is tiled. - -If you want to set a background image for the entire site just add `background: filename.png` to your `_config.yml` and BOOM --- background images on every page! - -
Background images from Subtle Patterns (Subtle Patterns) / CC BY-SA 3.0
\ No newline at end of file diff --git a/_sass/_animations.scss b/_sass/_animations.scss deleted file mode 100644 index 27e5061cb1..0000000000 --- a/_sass/_animations.scss +++ /dev/null @@ -1,452 +0,0 @@ -/* ========================================================================== - Animations - ========================================================================== */ - -.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:1s;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;}.animated.hinge{-webkit-animation-duration:2s;-moz-animation-duration:2s;-ms-animation-duration:2s;-o-animation-duration:2s;animation-duration:2s;} - -/* - Fade in - ========================================================================== */ - -@-webkit-keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} -} -@-moz-keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} -} -@-o-keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} -} -@keyframes fadeIn { - 0% {opacity: 0;} - 100% {opacity: 1;} -} - -.fadeIn { - -webkit-animation-name: fadeIn; - -moz-animation-name: fadeIn; - -o-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes fadeInDown { - 0% { - opacity: 0; - -moz-transform: translateY(-20px); - } - 100% { - opacity: 1; - -moz-transform: translateY(0); - } -} -@-o-keyframes fadeInDown { - 0% { - opacity: 0; - -o-transform: translateY(-20px); - } - 100% { - opacity: 1; - -o-transform: translateY(0); - } -} -@keyframes fadeInDown { - 0% { - opacity: 0; - transform: translateY(-20px); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - -moz-animation-name: fadeInDown; - -o-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - } - 100% { - opacity: 1; - -webkit-transform: translateY(0); - } -} -@-moz-keyframes fadeInDownBig { - 0% { - opacity: 0; - -moz-transform: translateY(-2000px); - } - 100% { - opacity: 1; - -moz-transform: translateY(0); - } -} -@-o-keyframes fadeInDownBig { - 0% { - opacity: 0; - -o-transform: translateY(-2000px); - } - 100% { - opacity: 1; - -o-transform: translateY(0); - } -} -@keyframes fadeInDownBig { - 0% { - opacity: 0; - transform: translateY(-2000px); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - -moz-animation-name: fadeInDownBig; - -o-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -/* - Bounce - ========================================================================== */ - -@-webkit-keyframes bounceIn { - 0% { - opacity: 0; - -webkit-transform: scale(.3); - } - 50% { - opacity: 1; - -webkit-transform: scale(1.05); - } - 70% { - -webkit-transform: scale(.9); - } - 100% { - -webkit-transform: scale(1); - } -} -@-moz-keyframes bounceIn { - 0% { - opacity: 0; - -moz-transform: scale(.3); - } - 50% { - opacity: 1; - -moz-transform: scale(1.05); - } - 70% { - -moz-transform: scale(.9); - } - 100% { - -moz-transform: scale(1); - } -} -@-o-keyframes bounceIn { - 0% { - opacity: 0; - -o-transform: scale(.3); - } - 50% { - opacity: 1; - -o-transform: scale(1.05); - } - 70% { - -o-transform: scale(.9); - } - 100% { - -o-transform: scale(1); - } -} -@keyframes bounceIn { - 0% { - opacity: 0; - transform: scale(.3); - } - 50% { - opacity: 1; - transform: scale(1.05); - } - 70% { - transform: scale(.9); - } - 100% { - transform: scale(1); - } -} - -.bounceIn { - -webkit-animation-name: bounceIn; - -moz-animation-name: bounceIn; - -o-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(30px); - } - - 80% { - -webkit-transform: translateY(-10px); - } - - 100% { - -webkit-transform: translateY(0); - } -} - -@-moz-keyframes bounceInDown { - 0% { - opacity: 0; - -moz-transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -moz-transform: translateY(30px); - } - - 80% { - -moz-transform: translateY(-10px); - } - - 100% { - -moz-transform: translateY(0); - } -} - -@-o-keyframes bounceInDown { - 0% { - opacity: 0; - -o-transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -o-transform: translateY(30px); - } - - 80% { - -o-transform: translateY(-10px); - } - - 100% { - -o-transform: translateY(0); - } -} - -@keyframes bounceInDown { - 0% { - opacity: 0; - transform: translateY(-2000px); - } - - 60% { - opacity: 1; - transform: translateY(30px); - } - - 80% { - transform: translateY(-10px); - } - - 100% { - transform: translateY(0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - -moz-animation-name: bounceInDown; - -o-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -/* - Drop - ========================================================================== */ - -@-webkit-keyframes drop { - 0% { - -webkit-transform: translateY(-500px); - } - 100% { - -webkit-transform: translateY(0); - } -} -@-moz-keyframes drop { - 0% { - -moz-transform: translateY(-500px); - } - 100% { - -moz-transform: translateY(0); - } -} -@-o-keyframes drop { - 0% { - -o-transform: translateY(-500px); - } - 100% { - -o-transform: translateY(0); - } -} -@keyframes drop { - 0% { - transform: translateY(-500px); - } - 100% { - transform: translateY(0); - } -} - -.drop { - -webkit-animation-name: drop; - -moz-animation-name: drop; - -o-animation-name: drop; - animation-name: drop; -} - -/* - DL Menu In/Out - ========================================================================== */ - -@-webkit-keyframes MenuAnimOut { - 100% { - -webkit-transform: translateZ(300px); - opacity: 0; - } -} -@-moz-keyframes MenuAnimOut { - 100% { - -moz-transform: translateZ(300px); - opacity: 0; - } -} -@keyframes MenuAnimOut { - 100% { - transform: translateZ(300px); - opacity: 0; - } -} - -@-webkit-keyframes MenuAnimIn { - 0% { - -webkit-transform: translateZ(300px); - opacity: 0; - } - 100% { - -webkit-transform: translateZ(0px); - opacity: 1; - } -} -@-moz-keyframes MenuAnimIn { - 0% { - -moz-transform: translateZ(300px); - opacity: 0; - } - 100% { - -moz-transform: translateZ(0px); - opacity: 1; - } -} -@keyframes MenuAnimIn { - 0% { - transform: translateZ(300px); - opacity: 0; - } - 100% { - transform: translateZ(0px); - opacity: 1; - } -} - -@-webkit-keyframes SubMenuAnimIn { - 0% { - -webkit-transform: translateZ(-300px); - opacity: 0; - } - 100% { - -webkit-transform: translateZ(0px); - opacity: 1; - } -} -@-moz-keyframes SubMenuAnimIn { - 0% { - -moz-transform: translateZ(-300px); - opacity: 0; - } - 100% { - -moz-transform: translateZ(0px); - opacity: 1; - } -} -@keyframes SubMenuAnimIn { - 0% { - transform: translateZ(-300px); - opacity: 0; - } - 100% { - transform: translateZ(0px); - opacity: 1; - } -} - -@-webkit-keyframes SubMenuAnimOut { - 0% { - -webkit-transform: translateZ(0px); - opacity: 1; - } - 100% { - -webkit-transform: translateZ(-300px); - opacity: 0; - } -} -@-moz-keyframes SubMenuAnimOut { - 0% { - -moz-transform: translateZ(0px); - opacity: 1; - } - 100% { - -moz-transform: translateZ(-300px); - opacity: 0; - } -} -@keyframes SubMenuAnimOut { - 0% { - transform: translateZ(0px); - opacity: 1; - } - 100% { - transform: translateZ(-300px); - opacity: 0; - } -} \ No newline at end of file diff --git a/_sass/_coderay.scss b/_sass/_coderay.scss deleted file mode 100644 index 1547094c09..0000000000 --- a/_sass/_coderay.scss +++ /dev/null @@ -1,70 +0,0 @@ -/* ========================================================================== - CodeRay Syntax Highlighting - ========================================================================== */ - -.CodeRay { - font-family: $code-font; - @include font(12); - color: #d0d0d0; - margin-bottom: 1.5em; - border-radius: 3px; -} - -.CodeRay .code pre { - margin: 0; - padding: 1em; - background-color: #272822; - border: 1px solid darken($body-color, 5); -} - -div.CodeRay { } -span.CodeRay { white-space: pre; border: 0px; padding: 2px } - -table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px } -table.CodeRay td { - padding: 1em 0.5em; - vertical-align: top; -} - -.CodeRay .line-numbers, .CodeRay .no { - color: #8f908a; - text-align: right; -} - -.CodeRay .line-numbers a { - color: #8f908a; -} - -.CodeRay .line-numbers tt { font-weight: bold } -.CodeRay .line-numbers .highlighted { color: red } -.CodeRay .line { display: block; float: left; width: 100%; } -.CodeRay span.line-numbers { padding: 0 24px 0 4px; } -.CodeRay .code { width: 100% } - -ol.CodeRay { font-size: 10pt } -ol.CodeRay li { white-space: pre } - -.CodeRay .code pre { overflow: auto } -.CodeRay .debug { color:white ! important; background:blue ! important; } - -.CodeRay .doctype, -.CodeRay .key, -.CodeRay .instance-variable { color: #f8f8f2; } -.CodeRay .attribute-name { color: #a6e22e;} -.CodeRay .symbol, -.CodeRay .integer, -.CodeRay .float { color: #ff658b; } -.CodeRay .string { color: #2dc900; } -.CodeRay .keyword { color: #66d9ef; } -.CodeRay .function, -.CodeRay .class { color: #a6e22e; } -.CodeRay .regexp, -.CodeRay .constant, -.CodeRay .tag { color: #f92672; } -.CodeRay .modifier, -.CodeRay .predefined-constant { color: #ff84e4; } -.CodeRay .comment { color: #75715e; } -.CodeRay .error { color: #ecc; } -.CodeRay .content { color: #e6db74; } -.CodeRay .delimiter { color: #e6db74; } -.CodeRay .inline { color: #e6db74; } \ No newline at end of file diff --git a/_sass/_dl-menu.scss b/_sass/_dl-menu.scss deleted file mode 100644 index 04de01ac76..0000000000 --- a/_sass/_dl-menu.scss +++ /dev/null @@ -1,311 +0,0 @@ -/* ========================================================================== - DL Menu - ========================================================================== */ - -.dl-menuwrapper { - position: absolute; - top: 0; - left: 0; - z-index: 1000; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; - perspective: 1000px; - -webkit-perspective-origin: 50% 200%; - -moz-perspective-origin: 50% 200%; - perspective-origin: 50% 200%; - - @media #{$medium} { - position: fixed; - max-width: 175px; - top: 25px; - left: 25px; - } - - &.dl-menuopen { - width: 100%; - height: 100%; - } - - button { - top: 0; - left: 0; - background: $comp-color; - border: none; - width: 48px; - height: 45px; - text-indent: -900em; - overflow: hidden; - position: relative; - cursor: pointer; - outline: none; - border-radius: 0 0 3px 0; - opacity: 0.6; - box-shadow: 0 12px 24px rgba(#000,0.4); - transition: 0.4s ease-in-out; - - &:hover { - opacity: 1; - } - - @media #{$medium} { - border-radius: 3px; - } - } - - button:hover, - button.dl-active, - ul { - background: #aaa; - } - - button:after { - content: ''; - position: absolute; - width: 68%; - height: 5px; - background: #fff; - top: 10px; - left: 16%; - box-shadow: - 0 10px 0 #fff, - 0 20px 0 #fff; - } - - ul { - padding: 0; - list-style: none; - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - transform-style: preserve-3d; - } - - li { - position: relative; - - h4 { - margin:0; - padding: 15px 20px 0; - color: rgba(#fff,0.9); - } - - p { - margin: 0; - padding: 15px 20px; - @include font-rem(14); - color: rgba(#fff,0.8); - font-weight: 300; - - a { - display: inline; - padding: 0; - @include font-rem(14); - } - } - - a { - display: block; - position: relative; - padding: 15px 20px; - @include font-rem(14); - line-height: 20px; - font-weight: 400; - color: #fff; - outline: none; - } - - &.dl-back > a { - padding-left: 30px; - background: rgba(0,0,0,0.2); - } - - &.dl-back:after, - > a:not(:only-child):after { - position: absolute; - top: 0; - line-height: 50px; - font-family: "fontawesome"; - color: #fff; - speak: none; - -webkit-font-smoothing: antialiased; - content: "\f105"; - } - - &.dl-back:after { - left: 10px; - color: rgba(212,204,198,0.5); - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - transform: rotate(180deg); - } - - > a:after { - right: 10px; - color: rgba(0,0,0,0.15); - } - } - - .dl-menu { - margin: 5px 0 0 0; - position: relative; - width: 100%; - max-height: 90%; - overflow-y: auto; - overflow-x: hidden; - opacity: 0; - pointer-events: none; - box-shadow: 0 12px 24px rgba(#000,0.4); - -webkit-transform: translateY(10px); - -moz-transform: translateY(10px); - transform: translateY(10px); - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - z-index: inherit; - - @media #{$medium} { - border-radius: 3px; - } - } - - .dl-menu.dl-menu-toggle { - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - transition: all 0.3s ease; - } - - .dl-menu.dl-menuopen { - opacity: 1; - pointer-events: auto; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - transform: translateY(0px); - } - - .dl-submenu { - border-radius: 3px; - box-shadow: 0 12px 24px rgba(#000,0.4); - - .btn { - margin-bottom: 0; - } - } - - /* Hide the inner submenus */ - li .dl-submenu { - display: none; - } -} - -/* -When a submenu is opened, we will hide all li siblings. -For that we give a class to the parent menu called "dl-subview". -We also hide the submenu link. -The opened submenu will get the class "dl-subviewopen". -All this is done for any sub-level being entered. -*/ -.dl-menu.dl-subview li, -.dl-menu.dl-subview li.dl-subviewopen > a, -.dl-menu.dl-subview li.dl-subview > a { - display: none; -} - -.dl-menu.dl-subview li.dl-subview, -.dl-menu.dl-subview li.dl-subview .dl-submenu, -.dl-menu.dl-subview li.dl-subviewopen, -.dl-menu.dl-subview li.dl-subviewopen > .dl-submenu, -.dl-menu.dl-subview li.dl-subviewopen > .dl-submenu > li { - display: block; -} - -/* Animation classes for moving out and in */ -.dl-menu.dl-animate-out { - -webkit-animation: MenuAnimOut 0.4s ease; - -moz-animation: MenuAnimOut 0.4s ease; - animation: MenuAnimOut 0.4s ease; -} - -.dl-menu.dl-animate-in { - -webkit-animation: MenuAnimIn 0.4s ease; - -moz-animation: MenuAnimIn 0.4s ease; - animation: MenuAnimIn 0.4s ease; -} - -.dl-menuwrapper > .dl-submenu.dl-animate-in { - -webkit-animation: SubMenuAnimIn 0.4s ease; - -moz-animation: SubMenuAnimIn 0.4s ease; - animation: SubMenuAnimIn 0.4s ease; -} - -.dl-menuwrapper > .dl-submenu.dl-animate-out { - -webkit-animation: SubMenuAnimOut 0.4s ease; - -moz-animation: SubMenuAnimOut 0.4s ease; - animation: SubMenuAnimOut 0.4s ease; -} - -/* No Touch Fallback */ -.no-touch .dl-menuwrapper li a:hover { - background: rgba(255,248,213,0.1); -} - -/* No JS Fallback */ -.no-js { - .dl-trigger { - display: none; - } - .dl-menuwrapper { - position: initial; - - @media #{$medium} { - position: absolute; - } - } - - .dl-menuwrapper .dl-menu { - position: relative; - opacity: 1; - pointer-events: auto; - -webkit-transform: none; - -moz-transform: none; - transform: none; - } - - .dl-menuwrapper li .dl-submenu { - display: block; - } - - .dl-menuwrapper li.dl-back { - display: none; - } - - .dl-menuwrapper li > a:not(:only-child) { - background: rgba(0,0,0,0.1); - } - - .dl-menuwrapper li > a:not(:only-child):after { - content: ''; - } - - .dl-menu { - max-height: 100%; - } - - .dl-menu li { - display: block; - } -} - -// Menu Color -.dl-menuwrapper button:hover, -.dl-menuwrapper button.dl-active, -.dl-menuwrapper ul { - background: $comp-color; -} - -// Fix for IE -.dl-menu li { - display: none -} - -.dl-menuopen li { - display: block -} diff --git a/_sass/_elements.scss b/_sass/_elements.scss deleted file mode 100644 index 370a8d6ca6..0000000000 --- a/_sass/_elements.scss +++ /dev/null @@ -1,188 +0,0 @@ -/* ========================================================================== - Base Elements and Components - ========================================================================== */ - -hr { - display: block; - margin: 1em 0; - padding: 0; - height: 1px; - border: 0; - border-top: 1px solid #ccc; - border-bottom: 1px solid #fff; -} - -/* - Figures and images - ========================================================================== */ - -figure { - margin: 0; - padding-top: 10px; - padding-bottom: 10px; - @include clearfix(); - - img { - margin-bottom: 10px; - } - - a { - - img { - transform: translate(0, 0); - transition-duration: 0.25s; - - &:hover { - transform: translate(0, -5px); - box-shadow: 0 0 10px rgba($base-color, 0.2); - } - } - } - - /* 2 columns */ - &.half { - @media #{$large} { - - img { - width: 310px; - float: left; - margin-right: 10px; - } - - figcaption { - clear: left; - } - } - } - - /* 3 columns */ - &.third { - @media #{$large} { - - img { - width: 200px; - float: left; - margin-right: 10px; - } - - figcaption { - clear: left; - } - } - } -} - -svg:not(:root) { - overflow: hidden; -} - -/* - Buttons - ========================================================================== */ - -.btn { - display: inline-block; - margin-bottom: 20px; - padding: 8px 20px; - @include font-rem(14); - background-color: $primary; - color: #fff; - border-width: 2px !important; - border-style: solid !important; - border-color: $primary; - border-radius: 3px; - - &:visited { - color: #fff; - } - - &:hover { - background-color: #fff; - color: $primary; - } -} - -.btn-inverse { - background-color: #fff; - color: $primary; - border-color: #fff; - - &:visited { - color: $primary; - } - - &:hover { - background-color: $primary; - color: #fff; - } -} - -.btn-success { - background-color: $success; - color: #fff; - border-color: $success; - - &:visited { - color: #fff; - } - - &:hover { - background-color: #fff; - color: $success; - } -} - -.btn-warning { - background-color: $warning; - color: #fff; - border-color: $warning; - - &:visited { - color: #fff; - } - - &:hover { - background-color: #fff; - color: $warning; - } -} - -.btn-danger { - background-color: $danger; - color: #fff; - border-color: $danger; - - &:visited { - color: #fff; - } - - &:hover { - background-color: #fff; - color: $danger; - } -} - -.btn-info { - background-color: $info; - color: #fff; - border-color: $info; - - &:visited { - color: #fff; - } - - &:hover { - background-color: #fff; - color: $info; - } -} - -/* - Wells - ========================================================================== */ - -.well { - padding: 20px; - border: 1px solid $comp-color; - border-radius: 4px; -} \ No newline at end of file diff --git a/_sass/_grid.scss b/_sass/_grid.scss deleted file mode 100644 index 1ae5df3b7d..0000000000 --- a/_sass/_grid.scss +++ /dev/null @@ -1,54 +0,0 @@ -/* ========================================================================== - Grid - ========================================================================== */ - -// Defining number of columns in the grid. -// Common Values would be 12, 16 or 24 -$width: 100%; -$def_grid: 12; -$margin: 0; - -@mixin container(){ - margin:0 auto; - width:$width; -} - -// Works out the width of elements based -// on total number of columns and width -// number of columns being displayed. -// Removes 20px for margins -@mixin grid($grid:$def_grid,$cols:'',$float:left,$display:inline){ - display:$display; - float:$float; - width:(100%/$grid * $cols) - ($margin * 2); -} - -// Allows for padding before element -@mixin prefix($grid:$def_grid,$cols:''){ - margin-left:(100%/$grid * $cols); -} - -// Allows for padding after element -@mixin suffix($grid:$def_grid,$cols:''){ - margin-right:(100%/$grid * $cols); -} - -// Removes left margin -@mixin first(){ - margin-left:0; -} - -// Removes right margin -@mixin last(){ - margin-right:0; -} - -@mixin push($grid:$def_grid,$move:'') { - position:relative; - left:(100%/$grid * $move); -} - -@mixin pull($grid:$def_grid,$move:''){ - position:relative; - left:(100%/$grid * $move) * -1; -} \ No newline at end of file diff --git a/_sass/_mixins.scss b/_sass/_mixins.scss deleted file mode 100644 index 01a8d16dbf..0000000000 --- a/_sass/_mixins.scss +++ /dev/null @@ -1,124 +0,0 @@ -/* ========================================================================== - Mixins - ========================================================================== */ - -/* - Utility mixins - ========================================================================== */ - -/* clearfix */ -@mixin clearfix { - *zoom: 1; - - &:before, - &:after { - display: table; - content: ""; - // Fixes Opera/contenteditable bug: - // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 - line-height: 0; - } - - &:after { - clear: both; - } -} - -/* Webkit-style focus */ -@mixin tab-focus() { - // Default - outline: thin dotted #333; - // Webkit - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -/* Center-align a block level element */ - -@mixin center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} - -/* - Typography mixins - ========================================================================== */ - -/* Full-fat vertical rhythm */ -@mixin font-size($size) { - font-size: 0px + $size; - font-size: 0rem + $size / $doc-font-size; - line-height: 0 + round($doc-line-height / $size*10000) / 10000; - margin-bottom: 0px + $doc-line-height; - margin-bottom: 0rem + ($doc-line-height / $doc-font-size); -} - -/* Just the REMs */ -@mixin font-rem($size) { - font-size: 0px + $size; - font-size: 0rem + $size / $doc-font-size; -} - -/* Just font-size and line-height */ -@mixin font($size) { - font-size: 0px + $size; - font-size: 0rem + $size / $doc-font-size; - line-height: 0 + round($doc-line-height / $size*10000) / 10000; -} - -/* Ellipsis */ -@mixin text-overflow() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -/* - Visibility - ========================================================================== */ - -/* For image replacement */ -@mixin hide-text() { - text-indent : 100%; - white-space : nowrap; - overflow : hidden; -} - -/* Hide from visual and speaking browsers */ -@mixin hidden() { - display : none !important; - visibility : hidden; -} -.hidden { - display: none; - visibility: hidden; -} - -/* Hide but maintain layout */ -@mixin invisible() { - visibility : hidden; -} - -/* Hidden but available to speaking browsers */ -@mixin visuallyhidden() { - overflow : hidden; - position : absolute; - clip : rect(0 0 0 0); - height : 1px; - width : 1px; - margin : -1px; - padding : 0; - border : 0; -} - -/* Make visuallyhidden focusable with a keyboard */ -.visuallyhidden.focusable:active, -.visuallyhidden.focusable:focus { - position : static; - clip : auto; - height : auto; - width : auto; - margin : 0; - overflow: visible; -} \ No newline at end of file diff --git a/_sass/_page.scss b/_sass/_page.scss deleted file mode 100644 index c6885a6035..0000000000 --- a/_sass/_page.scss +++ /dev/null @@ -1,592 +0,0 @@ -/* ========================================================================== - Page layout - ========================================================================== */ - -body { - margin: 0; - padding: 0; - width: 100%; - background-color: $body-color; -} - -/* - Main content - ========================================================================== */ - -.entry, -.hentry { - @include clearfix; - - h1, h2, h3, h4, h5, h6, p, li { - word-wrap: break-word; - } -} - -.entry-content { - @include font-size(16); - - // Dotted line underlines for links - p > a, - li > a { - border-bottom: 1px dotted lighten($link-color, 50); - - &:hover { - border-bottom-style: solid; - } - } - - li { - margin-bottom: 7px; - } - - .footnotes { - ol, li, p { - @include font-size(14); - } - } -} - -/* - Entry header - ========================================================================== */ - -.entry-header { - width: 100%; - overflow: hidden; - position: relative; -} - -.header-title { - text-align: center; - margin: 30px 0 0; - - h1 { - margin: 10px 20px; - font-weight: 700; - @include font-rem(32); - color: lighten($base-color,20); - - @media #{$medium} { - @include font-rem(48); - } - - @media #{$large} { - @include font-rem(60); - } - } - - h2 { - margin: 0; - @include font-rem(18); - text-transform: uppercase; - color: lighten($base-color,40); - - @media #{$medium} { - @include font-rem(24); - } - } - - p { - color: lighten($base-color,20); - } -} - -.feature .header-title { - position: absolute; - top: 0; - display: table; - margin-top: 0; - width: 100%; - height: $feature-image-height; - overflow: hidden; - - .header-title-wrap { - display: table-cell; - vertical-align: middle; - margin: 0 auto; - text-align: center; - } - - h1 { - margin: 10px; - font-weight: 700; - margin: 10px 60px; - color: #fff; - text-shadow: 1px 1px 4px rgba($base-color,0.6); - - a { - color: #fff; - } - } - - h2 { - margin: 0; - color: #fff; - text-transform: uppercase; - - @media #{$medium} { - a { - color: #fff; - } - } - } - - p { - color: #fff; - } -} - -.entry-image { - position: relative; - top: -50%; - left: -50%; - width: 200%; - height: 200%; - min-height: $feature-image-height; - overflow: hidden; - - &:after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba($base-color,0.3); - } - - img { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: auto; - min-width: 50%; - min-height: $feature-image-height; // match .entry-image min-height - } -} - -// Feature Image height on Front Page -#post-index { - - &.feature .header-title { - height: $front-page-feature-image-height; - } - - .entry-image { - min-height: $front-page-feature-image-height; - - img { - min-height: $front-page-feature-image-height; - } - } -} - -// Feature Image Caption -.image-credit { - position: absolute; - bottom: 0; - right: 0; - margin: 0 auto; - max-width: 440px; - padding: 10px 15px; - background-color: rgba($base-color,0.5); - color: #fff; - @include font-rem(12); - text-align: right; - border-radius: 3px 0 0 0; - z-index: 10; - - @media #{$medium} { - max-width: 760px; - } - - @media #{$large} { - max-width: 960px; - } - - a { - color: #fff; - text-decoration: none; - } -} - -/* - Single post and page - ========================================================================== */ - -.entry-meta { - @include font-rem(12); - text-transform: uppercase; - color: lighten($base-color,60); - - a { - color: lighten($base-color,60); - } - - .vcard { - - &:before { - content: " by "; - } - } - - .tag { - display: inline-block; - margin: 4px; - color: #fff; - border-radius: 3px; - background-color: lighten($base-color,50); - - span { - float: left; - padding: 2px 6px; - } - - .count { - background-color: lighten($base-color,40); - border-radius: 0 3px 3px 0; - } - - &:hover { - background-color: lighten($base-color,40); - } - } - - .entry-reading-time { - float: right; - } -} - -header .entry-meta { - display: none; // hide header meta on small screens - - @media #{$medium} { - display: block; - } -} - -#post, -#page { - - .entry-content { - margin: 40px 2px 20px 2px; - padding: 10px 15px; - background-color: #fff; - box-shadow: 0 0 0 0, 0 6px 12px rgba(#000,0.1); - border-radius: 3px; - - @media #{$medium} { - margin-left: 10px; - margin-right: 10px; - padding: 20px 30px; - } - - @media #{$large} { - max-width: 800px; - margin: 50px auto 30px auto; - padding: 50px 80px; - - > p:first-child { - @include font-size(20); - } - } - } - - #disqus_thread { - margin: 40px 2px 20px 2px; - padding: 10px 15px; - background-color: #fff; - box-shadow: 0 0 0 1px rgba($border-color,0.1), 0 6px 12px rgba(#000,0.1); - border-radius: 3px; - - @media #{$medium} { - margin-left: 10px; - margin-right: 10px; - padding: 20px 30px; - } - - @media #{$large} { - max-width: 800px; - padding: 50px 80px; - margin: 0 auto 30px auto; - } - } - - .entry-meta { - margin: 50px 30px 30px; - text-align: center; - } -} - -.entry-tags { - display: block; - margin-bottom: 6px; -} - -.tag-heading, -.year-heading { - margin-top: 0; -} - -// Permalink icon for link post -.permalink { - margin-right: 7px; -} - -// Post Pagination Module -.pagination { - margin: 20px 10px; - text-align: center; - - ul { - display: inline; - margin-left: 10px; - margin-right: 10px; - } - - li { - padding-left: 4px; - padding-right: 4px; - } - - .current-page { - font-weight: 700; - } -} - -// Read More Module -.read-more { - position: relative; - margin: 40px 2px 20px 2px; - padding: 40px 15px 25px; - background-color: #fff; - box-shadow: 0 0 0 1px rgba($border-color,0.1), 0 6px 12px rgba(#000,0.1); - border-radius: 3px; - - @media #{$medium} { - margin: 50px 10px 20px 10px; - padding: 50px 40px 25px; - } - - @media #{$large} { - max-width: 800px; - padding: 50px 80px; - margin: 60px auto; - } - - text-align: center; - @include clearfix; -} - -.read-more-header { - position: absolute; - top: -20px; - left: 0; - right: 0; - height: 35px; - - a { - @extend .btn; - } -} - -.read-more-content { - @include font-size(16); - - // Dotted line underlines for links - p > a, - li > a { - border-bottom: 1px dotted lighten($link-color, 50); - - &:hover { - border-bottom-style: solid; - } - } - - h3 { - margin: 0; - @include font-rem(28); - - a { - color: $text-color; - } - - @media #{$medium} { - @include font-rem(36); - } - } -} - -.read-more-list { - border-top: solid 2px lighten($base-color,80); -} - -.list-item { - width: 100%; - text-align: left; - - h4 { - @include font-rem(18); - margin-bottom: 0; - } - - span { - display: block; - @include font-rem(14); - color: lighten($base-color,50); - } - - @media #{$medium} { - width: 49%; - float: left; - - &:nth-child(2) { - text-align: right; - } - } -} - -/* - Post index - ========================================================================== */ - -#post-index { - #main { - margin: 40px 2px 20px 2px; - - @media #{$medium} { - margin-left: 20px; - margin-right: 20px; - } - - @media #{$large} { - max-width: 800px; - margin-top: 50px; - margin-left: auto; - margin-right: auto; - } - } - - article { - background-color: #fff; - box-shadow: 0 0 0 0, 0 6px 12px rgba($base-color,0.1); - border-radius: 3px; - margin-bottom: 20px; - padding: 25px 15px; - - @media #{$medium} { - padding: 30px; - } - - @media #{$large} { - margin-bottom: 30px; - padding: 50px 80px; - } - } -} - -.entry-image-index { - margin-top: -25px; - margin-left: -15px; - margin-right: -15px; - margin-bottom: 10px; - - @media #{$medium} { - margin-top: -30px; - margin-left: -30px; - margin-right: -30px; - margin-bottom: 15px; - } - - @media #{$large} { - margin-top: -50px; - margin-left: -80px; - margin-right: -80px; - margin-bottom: 20px; - } - - img { - border-radius: 3px 3px 0 0; // round image corners - } -} - -/* - Footer - ========================================================================== */ - -.footer-wrapper { - @include clearfix; - margin: 2em auto; - text-align: center; - color: lighten($text-color,20); - - a { - color: lighten($text-color,20); - } -} - -/* - Social share - ========================================================================== */ - -.socialcount { - @include font-rem(16); - - li { - padding-left: 10px; - padding-right: 10px; - } - - p > a, - li > a { - border-bottom-width: 0; - } -} - - -/* - Browser upgrade - ========================================================================== */ - -.upgrade { - padding: 10px; - text-align: center; -} - -/* - Google Search - ========================================================================== */ - -#goog-fixurl { - - ul { - list-style: none; - margin-left: 0; - padding-left: 0; - - li { - list-style-type: none; - } - } -} - -#goog-wm-qt { - width: auto; - margin-right: 10px; - margin-bottom: 20px; - padding: 8px 20px; - display: inline-block; - @include font-rem(14); - background-color: #fff; - color: $text-color; - border-width: 2px !important; - border-style: solid !important; - border-color: lighten($primary,50); - border-radius: 3px; -} - -#goog-wm-sb { - @extend .btn; -} \ No newline at end of file diff --git a/_sass/_reset.scss b/_sass/_reset.scss deleted file mode 100644 index 3dff727ec0..0000000000 --- a/_sass/_reset.scss +++ /dev/null @@ -1,156 +0,0 @@ -/* ========================================================================== - Reset CSS - Adapted from http://github.com/necolas/normalize.css - ========================================================================== */ - -*, *:after, *:before { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -// Display in IE6-9 and FF3 -// ------------------------- -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} - -// Display block in IE6-9 and FF3 -// ------------------------- -audio, -canvas, -video { - display: inline-block; - *display: inline; - *zoom: 1; -} - -// Prevents modern browsers from displaying 'audio' without controls -// ------------------------- -audio:not([controls]) { - display: none; -} - -// Base settings -// ------------------------- -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -// Focus states -a:focus { - @include tab-focus(); -} -// Hover & Active -a:hover, -a:active { - outline: 0; -} - -// Prevents sub and sup affecting line-height in all browsers -// ------------------------- -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} - -// Blockquote -// ------------------------- -blockquote { - margin: 0; -} - -// Img border in a's and image quality -// ------------------------- -img { - /* Responsive images (ensure images don't scale beyond their parents) */ - max-width: 100%; /* Part 1: Set a maxium relative to the parent */ - width: auto\9; /* IE7-8 need help adjusting responsive images */ - height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */ - - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; -} - -// Full width tables -// ------------------------- -table { - width: 100%; -} - -// Prevent max-width from affecting Google Maps -#map_canvas img, -.google-maps img { - max-width: none; -} - -// Forms -// ------------------------- -// Font size in all browsers, margin changes, misc consistency -button, -input, -select, -textarea { - margin: 0; - font-size: 100%; - vertical-align: middle; -} -button, -input { - *overflow: visible; // Inner spacing ie IE6/7 - line-height: normal; // FF3/4 have !important on line-height in UA stylesheet -} -button::-moz-focus-inner, -input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 - padding: 0; - border: 0; -} -button, -html input[type="button"], // Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; // Corrects inability to style clickable `input` types in iOS. - cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others. -} -label, -select, -button, -input[type="button"], -input[type="reset"], -input[type="submit"], -input[type="radio"], -input[type="checkbox"] { - cursor: pointer; // Improves usability and consistency of cursor style between image-type `input` and others. -} -input[type="search"] { // Appearance in Safari/Chrome - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button { - -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 -} -textarea { - overflow: auto; // Remove vertical scrollbar in IE6-9 - vertical-align: top; // Readability and alignment cross-browser -} \ No newline at end of file diff --git a/_sass/_site.scss b/_sass/_site.scss deleted file mode 100644 index a2f9069bec..0000000000 --- a/_sass/_site.scss +++ /dev/null @@ -1,80 +0,0 @@ -/* ========================================================================== - Site utilities - ========================================================================== */ - -/* - Selection - ========================================================================== */ - -::-moz-selection { - background-color: lighten($base-color, 65%); - color: $base-color; - text-shadow: none; -} - -::selection { - background-color: lighten($base-color, 65%); - color: $base-color; - text-shadow: none; -} - -/* - Global classes - ========================================================================== */ - -/* wrapper */ -.wrap { - margin: 0 auto; -} - -/* capitalize */ -.all-caps { - text-transform: uppercase; -} - -/* float image to the left */ -.image-left { - float: none; - @media #{$medium} { - float: left; - } -} - -/* float image to the right */ -.image-right { - float: none; - @media #{$medium} { - float: right; - } -} - -/* remove styling from a list element */ -.unstyled-list { - list-style: none; - margin-left: 0; - padding-left: 0; - - li { - list-style-type: none; - } -} - -/* inline a list */ -.inline-list { - list-style: none; - margin-left: 0; - padding-left: 0; - - li { - list-style-type: none; - display: inline; - } -} - -/* - Global transition - ========================================================================== */ - -b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a { - transition: all 0.2s ease; -} \ No newline at end of file diff --git a/_sass/_syntax.scss b/_sass/_syntax.scss deleted file mode 100644 index d63a41ca8d..0000000000 --- a/_sass/_syntax.scss +++ /dev/null @@ -1,111 +0,0 @@ -/* ========================================================================== - Syntax Highlighting - ========================================================================== */ - -div.highlighter-rouge, -figure.highlight { - position: relative; - margin-bottom: 1.5em; - color: #d0d0d0; - @include font-rem(12); - line-height: 1.5; - border: 1px solid darken($body-color, 5); - border-radius: 3px; - background-color: #272822; - - .highlight { - margin: 0; - padding: 1em; - } -} - -figure.highlight { - padding-left: 1em; - padding-right: 1em; -} - -.highlight table { - font-size: 1em; - border: 0; - - td { - padding: 5px; - border: 0; - - // line numbers - &.gutter { - padding-right: 1em; - color: #ccc; - } - } - - pre { - margin: 0; - } -} - -.highlight pre { width: 100%; } - -.highlight { - - .lineno { padding-right: 24px; color: #8f908a;} - .hll { background-color: #49483e } - .c { color: #75715e } /* Comment */ - .err { color: #960050; background-color: #1e0010 } /* Error */ - .k { color: #66d9ef } /* Keyword */ - .l { color: #ae81ff } /* Literal */ - .n { color: #f8f8f2 } /* Name */ - .o { color: #f92672 } /* Operator */ - .p { color: #f8f8f2 } /* Punctuation */ - .cm { color: #75715e } /* Comment.Multiline */ - .cp { color: #75715e } /* Comment.Preproc */ - .c1 { color: #75715e } /* Comment.Single */ - .cs { color: #75715e } /* Comment.Special */ - .ge { font-style: italic } /* Generic.Emph */ - .gs { font-weight: bold } /* Generic.Strong */ - .kc { color: #66d9ef } /* Keyword.Constant */ - .kd { color: #66d9ef } /* Keyword.Declaration */ - .kn { color: #f92672 } /* Keyword.Namespace */ - .kp { color: #66d9ef } /* Keyword.Pseudo */ - .kr { color: #66d9ef } /* Keyword.Reserved */ - .kt { color: #66d9ef } /* Keyword.Type */ - .ld { color: #e6db74 } /* Literal.Date */ - .m { color: #ae81ff } /* Literal.Number */ - .s { color: #e6db74 } /* Literal.String */ - .na { color: #a6e22e } /* Name.Attribute */ - .nb { color: #f8f8f2 } /* Name.Builtin */ - .nc { color: #a6e22e } /* Name.Class */ - .no { color: #66d9ef } /* Name.Constant */ - .nd { color: #a6e22e } /* Name.Decorator */ - .ni { color: #f8f8f2 } /* Name.Entity */ - .ne { color: #a6e22e } /* Name.Exception */ - .nf { color: #a6e22e } /* Name.Function */ - .nl { color: #f8f8f2 } /* Name.Label */ - .nn { color: #f8f8f2 } /* Name.Namespace */ - .nx { color: #a6e22e } /* Name.Other */ - .py { color: #f8f8f2 } /* Name.Property */ - .nt { color: #f92672 } /* Name.Tag */ - .nv { color: #f8f8f2 } /* Name.Variable */ - .ow { color: #f92672 } /* Operator.Word */ - .w { color: #f8f8f2 } /* Text.Whitespace */ - .mf { color: #ae81ff } /* Literal.Number.Float */ - .mh { color: #ae81ff } /* Literal.Number.Hex */ - .mi { color: #ae81ff } /* Literal.Number.Integer */ - .mo { color: #ae81ff } /* Literal.Number.Oct */ - .sb { color: #e6db74 } /* Literal.String.Backtick */ - .sc { color: #e6db74 } /* Literal.String.Char */ - .sd { color: #e6db74 } /* Literal.String.Doc */ - .s2 { color: #e6db74 } /* Literal.String.Double */ - .se { color: #ae81ff } /* Literal.String.Escape */ - .sh { color: #e6db74 } /* Literal.String.Heredoc */ - .si { color: #e6db74 } /* Literal.String.Interpol */ - .sx { color: #e6db74 } /* Literal.String.Other */ - .sr { color: #e6db74 } /* Literal.String.Regex */ - .s1 { color: #e6db74 } /* Literal.String.Single */ - .ss { color: #e6db74 } /* Literal.String.Symbol */ - .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ - .vc { color: #f8f8f2 } /* Name.Variable.Class */ - .vg { color: #f8f8f2 } /* Name.Variable.Global */ - .vi { color: #f8f8f2 } /* Name.Variable.Instance */ - .il { color: #ae81ff } /* Literal.Number.Integer.Long */ -} \ No newline at end of file diff --git a/_sass/_typography.scss b/_sass/_typography.scss deleted file mode 100644 index e1b91e7aec..0000000000 --- a/_sass/_typography.scss +++ /dev/null @@ -1,141 +0,0 @@ -/* ========================================================================== - Typography - ========================================================================== */ - -/* - Body - ========================================================================== */ - -body { - font-family: $base-font; - color: $text-color; -} - -/* - Headings - ========================================================================== */ - -h1, h2, h3, h4, h5, h6 { - font-family: $heading-font; -} - -h1 { - @include font-rem(28); - - @media #{$medium} { - @include font-rem(32); - } -} - -/* - Links - ========================================================================== */ - -a { - text-decoration: none; - color: $link-color; - - &:visited { - color: lighten($link-color, 20); - } - - &:hover { - color: darken($link-color, 20); - } - - &:focus { - outline: thin dotted; - color: darken($link-color, 20); - } - - &:hover, - &:active { - outline: 0; - } -} - -.link-arrow { - font-weight: 100; - text-decoration: underline; - font-style: normal; -} - -/* - Captions - ========================================================================== */ - -figcaption { - padding-top: 10px; - @include font(14); - line-height: 1.3; - color: lighten($text-color, 10); -} - -/* - Notices - ========================================================================== */ - -.notice { - margin-top: 1.5em; - padding: .5em 1em; - text-indent: 0; - @include font-rem(14); - background-color: $body-color; - border: 1px solid darken($body-color,20); - border-radius: 3px; -} - -/* - Blockquotes - ========================================================================== */ - -blockquote { - font-family: $alt-font; - font-style: italic; - border-left: 8px solid $border-color; - padding-left: 20px; - - @media #{$medium} { - margin-left: -28px; - } -} - -/* - Code - ========================================================================== */ - -tt, code, kbd, samp, pre { - font-family: $code-font; -} - -p > code, -a > code, -li > code, -figcaption > code, -td > code { - margin: 0 2px; - padding: 0 5px; - @include font-rem(12); - line-height: 1.5; - border: 1px solid lighten(#000, 90); - background-color: lighten(#000, 95); - border-radius: 3px; -} - -pre { - - @include font-rem(12); - line-height: 1.5; - overflow-x: auto; - - &::-webkit-scrollbar { - height: 12px; - background-color: #34362e; - border-radius: 0 0 4px 4px; - } - - &::-webkit-scrollbar-thumb:horizontal { - background-color: #6a6d5d; - border-radius: 4px; - } -} \ No newline at end of file diff --git a/_sass/_variables.scss b/_sass/_variables.scss deleted file mode 100644 index e0a47e72d2..0000000000 --- a/_sass/_variables.scss +++ /dev/null @@ -1,56 +0,0 @@ -/* ========================================================================== - SCSS Variables - ========================================================================== */ - -/* - Page - ========================================================================== */ - -$feature-image-height : 400px; // min 150px recommended -$front-page-feature-image-height : 400px; // min 150px recommended - -/* - Typography - ========================================================================== */ - -$base-font : 'Lato', Calibri, Arial, sans-serif; -$heading-font : $base-font; -$caption-font : $base-font; -$code-font : monospace; -$alt-font : serif; - -$doc-font-size : 16; -$doc-line-height : 26; - - -// set-up the body font-size / line-height -body { - margin-top: 0px + $doc-line-height; - font-size: 0px + $doc-font-size; -} - -/* - Colors - ========================================================================== */ - -$base-color : rgba(#222,0.8); -$body-color : #e8e8e8; -$text-color : rgba(#222,0.8); -$comp-color : complement(#222); -$border-color : lighten($base-color,60); -$link-color : rgba(#222,0.8); - -$primary : #222; -$success : #5cb85c; -$warning : #dd8338; -$danger : #C64537; -$info : #308cbc; - - -/* - Screen sizes - ========================================================================== */ - -$small : "only screen and (min-width: 30em)"; -$medium : "only screen and (min-width: 48em)"; -$large : "only screen and (min-width: 62.5em)"; \ No newline at end of file diff --git a/_sass/vendor/font-awesome/_animated.scss b/_sass/vendor/font-awesome/_animated.scss deleted file mode 100644 index 8a020dbfff..0000000000 --- a/_sass/vendor/font-awesome/_animated.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/_sass/vendor/font-awesome/_bordered-pulled.scss b/_sass/vendor/font-awesome/_bordered-pulled.scss deleted file mode 100644 index d4b85a02f2..0000000000 --- a/_sass/vendor/font-awesome/_bordered-pulled.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.#{$fa-css-prefix}-pull-left { float: left; } -.#{$fa-css-prefix}-pull-right { float: right; } - -.#{$fa-css-prefix} { - &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } - &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/_sass/vendor/font-awesome/_core.scss b/_sass/vendor/font-awesome/_core.scss deleted file mode 100644 index 7425ef85fc..0000000000 --- a/_sass/vendor/font-awesome/_core.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/_sass/vendor/font-awesome/_fixed-width.scss b/_sass/vendor/font-awesome/_fixed-width.scss deleted file mode 100644 index b221c98133..0000000000 --- a/_sass/vendor/font-awesome/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/_sass/vendor/font-awesome/_icons.scss b/_sass/vendor/font-awesome/_icons.scss deleted file mode 100644 index 6f9375989a..0000000000 --- a/_sass/vendor/font-awesome/_icons.scss +++ /dev/null @@ -1,697 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-feed:before, -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-y-combinator-square:before, -.#{$fa-css-prefix}-yc-square:before, -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-intersex:before, -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } -.#{$fa-css-prefix}-yc:before, -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } -.#{$fa-css-prefix}-battery-4:before, -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } -.#{$fa-css-prefix}-battery-3:before, -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } -.#{$fa-css-prefix}-battery-2:before, -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } -.#{$fa-css-prefix}-battery-1:before, -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } -.#{$fa-css-prefix}-battery-0:before, -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } -.#{$fa-css-prefix}-hourglass-1:before, -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } -.#{$fa-css-prefix}-hourglass-2:before, -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } -.#{$fa-css-prefix}-hourglass-3:before, -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } -.#{$fa-css-prefix}-hand-grab-o:before, -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } -.#{$fa-css-prefix}-hand-stop-o:before, -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } -.#{$fa-css-prefix}-tv:before, -.#{$fa-css-prefix}-television:before { content: $fa-var-television; } -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } -.#{$fa-css-prefix}-map:before { content: $fa-var-map; } -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } -.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } -.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } -.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } -.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } -.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } -.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } -.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } -.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } -.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } -.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } -.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } -.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } -.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } -.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } -.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } -.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } -.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } -.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } -.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } -.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } diff --git a/_sass/vendor/font-awesome/_larger.scss b/_sass/vendor/font-awesome/_larger.scss deleted file mode 100644 index 41e9a8184a..0000000000 --- a/_sass/vendor/font-awesome/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/_sass/vendor/font-awesome/_list.scss b/_sass/vendor/font-awesome/_list.scss deleted file mode 100644 index 7d1e4d54d6..0000000000 --- a/_sass/vendor/font-awesome/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/_sass/vendor/font-awesome/_mixins.scss b/_sass/vendor/font-awesome/_mixins.scss deleted file mode 100644 index f96719b6a0..0000000000 --- a/_sass/vendor/font-awesome/_mixins.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} diff --git a/_sass/vendor/font-awesome/_path.scss b/_sass/vendor/font-awesome/_path.scss deleted file mode 100644 index bb457c23a8..0000000000 --- a/_sass/vendor/font-awesome/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/_sass/vendor/font-awesome/_rotated-flipped.scss b/_sass/vendor/font-awesome/_rotated-flipped.scss deleted file mode 100644 index a3558fd09c..0000000000 --- a/_sass/vendor/font-awesome/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/_sass/vendor/font-awesome/_stacked.scss b/_sass/vendor/font-awesome/_stacked.scss deleted file mode 100644 index aef7403660..0000000000 --- a/_sass/vendor/font-awesome/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/_sass/vendor/font-awesome/_variables.scss b/_sass/vendor/font-awesome/_variables.scss deleted file mode 100644 index 0a471102c4..0000000000 --- a/_sass/vendor/font-awesome/_variables.scss +++ /dev/null @@ -1,708 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -$fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.5.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-500px: "\f26e"; -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-amazon: "\f270"; -$fa-var-ambulance: "\f0f9"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-balance-scale: "\f24e"; -$fa-var-ban: "\f05e"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-battery-0: "\f244"; -$fa-var-battery-1: "\f243"; -$fa-var-battery-2: "\f242"; -$fa-var-battery-3: "\f241"; -$fa-var-battery-4: "\f240"; -$fa-var-battery-empty: "\f244"; -$fa-var-battery-full: "\f240"; -$fa-var-battery-half: "\f242"; -$fa-var-battery-quarter: "\f243"; -$fa-var-battery-three-quarters: "\f241"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-black-tie: "\f27e"; -$fa-var-bluetooth: "\f293"; -$fa-var-bluetooth-b: "\f294"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-check-o: "\f274"; -$fa-var-calendar-minus-o: "\f272"; -$fa-var-calendar-o: "\f133"; -$fa-var-calendar-plus-o: "\f271"; -$fa-var-calendar-times-o: "\f273"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-diners-club: "\f24c"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-jcb: "\f24b"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-chrome: "\f268"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-clone: "\f24d"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-codiepie: "\f284"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-commenting: "\f27a"; -$fa-var-commenting-o: "\f27b"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-contao: "\f26d"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-creative-commons: "\f25e"; -$fa-var-credit-card: "\f09d"; -$fa-var-credit-card-alt: "\f283"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edge: "\f282"; -$fa-var-edit: "\f044"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-square: "\f199"; -$fa-var-eraser: "\f12d"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-expeditedssl: "\f23e"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-feed: "\f09e"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-firefox: "\f269"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-fonticons: "\f280"; -$fa-var-fort-awesome: "\f286"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f22d"; -$fa-var-get-pocket: "\f265"; -$fa-var-gg: "\f260"; -$fa-var-gg-circle: "\f261"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-grab-o: "\f255"; -$fa-var-hand-lizard-o: "\f258"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hand-paper-o: "\f256"; -$fa-var-hand-peace-o: "\f25b"; -$fa-var-hand-pointer-o: "\f25a"; -$fa-var-hand-rock-o: "\f255"; -$fa-var-hand-scissors-o: "\f257"; -$fa-var-hand-spock-o: "\f259"; -$fa-var-hand-stop-o: "\f256"; -$fa-var-hashtag: "\f292"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-hourglass: "\f254"; -$fa-var-hourglass-1: "\f251"; -$fa-var-hourglass-2: "\f252"; -$fa-var-hourglass-3: "\f253"; -$fa-var-hourglass-end: "\f253"; -$fa-var-hourglass-half: "\f252"; -$fa-var-hourglass-o: "\f250"; -$fa-var-hourglass-start: "\f251"; -$fa-var-houzz: "\f27c"; -$fa-var-html5: "\f13b"; -$fa-var-i-cursor: "\f246"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-industry: "\f275"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-internet-explorer: "\f26b"; -$fa-var-intersex: "\f224"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map: "\f279"; -$fa-var-map-marker: "\f041"; -$fa-var-map-o: "\f278"; -$fa-var-map-pin: "\f276"; -$fa-var-map-signs: "\f277"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mixcloud: "\f289"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-modx: "\f285"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-mouse-pointer: "\f245"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-object-group: "\f247"; -$fa-var-object-ungroup: "\f248"; -$fa-var-odnoklassniki: "\f263"; -$fa-var-odnoklassniki-square: "\f264"; -$fa-var-opencart: "\f23d"; -$fa-var-openid: "\f19b"; -$fa-var-opera: "\f26a"; -$fa-var-optin-monster: "\f23c"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-pause-circle: "\f28b"; -$fa-var-pause-circle-o: "\f28c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-percent: "\f295"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f1a7"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-product-hunt: "\f288"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-alien: "\f281"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-registered: "\f25d"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-safari: "\f267"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-scribd: "\f28a"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-bag: "\f290"; -$fa-var-shopping-basket: "\f291"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-sticky-note: "\f249"; -$fa-var-sticky-note-o: "\f24a"; -$fa-var-stop: "\f04d"; -$fa-var-stop-circle: "\f28d"; -$fa-var-stop-circle-o: "\f28e"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-television: "\f26c"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trademark: "\f25c"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-tripadvisor: "\f262"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-tv: "\f26c"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usb: "\f287"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo: "\f27d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wifi: "\f1eb"; -$fa-var-wikipedia-w: "\f266"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-y-combinator: "\f23b"; -$fa-var-y-combinator-square: "\f1d4"; -$fa-var-yahoo: "\f19e"; -$fa-var-yc: "\f23b"; -$fa-var-yc-square: "\f1d4"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/_sass/vendor/font-awesome/font-awesome.scss b/_sass/vendor/font-awesome/font-awesome.scss deleted file mode 100644 index f4668a53c7..0000000000 --- a/_sass/vendor/font-awesome/font-awesome.scss +++ /dev/null @@ -1,17 +0,0 @@ -/*! - * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; diff --git a/_sass/vendor/magnific-popup/_settings.scss b/_sass/vendor/magnific-popup/_settings.scss deleted file mode 100644 index c0235078a7..0000000000 --- a/_sass/vendor/magnific-popup/_settings.scss +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////// -// Settings // -//////////////////////// - -// overlay -$mfp-overlay-color: #000; // Color of overlay screen -$mfp-overlay-opacity: 0.8; // Opacity of overlay screen -$mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6); // Shadow on image or iframe - -// spacing -$mfp-popup-padding-left: 8px; // Padding from left and from right side -$mfp-popup-padding-left-mobile: 6px; // Same as above, but is applied when width of window is less than 800px - -$mfp-z-index-base: 1040; // Base z-index of popup - -// controls -$mfp-include-arrows: true; // Include styles for nav arrows -$mfp-controls-opacity: 1; // Opacity of controls -$mfp-controls-color: #fff; // Color of controls -$mfp-controls-border-color: #fff; // Border color of controls -$mfp-inner-close-icon-color: #fff; // Color of close button when inside -$mfp-controls-text-color: #CCC; // Color of preloader and "1 of X" indicator -$mfp-controls-text-color-hover: #fff; // Hover color of preloader and "1 of X" indicator -$mfp-IE7support: true; // Very basic IE7 support - -// Iframe-type options -$mfp-include-iframe-type: true; // Enable Iframe-type popups -$mfp-iframe-padding-top: 40px; // Iframe padding top -$mfp-iframe-background: #000; // Background color of iframes -$mfp-iframe-max-width: 900px; // Maximum width of iframes -$mfp-iframe-ratio: 9/16; // Ratio of iframe (9/16 = widescreen, 3/4 = standard, etc.) - -// Image-type options -$mfp-include-image-type: true; // Enable Image-type popups -$mfp-image-background: #444 !default; -$mfp-image-padding-top: 40px; // Image padding top -$mfp-image-padding-bottom: 40px; // Image padding bottom -$mfp-include-mobile-layout-for-image: true; // Removes paddings from top and bottom - -// Image caption options -$mfp-caption-title-color: #F3F3F3; // Caption title color -$mfp-caption-subtitle-color: #BDBDBD; // Caption subtitle color -.mfp-counter { font-family: $alt-font; } // Caption font family - -// A11y -$mfp-use-visuallyhidden: false; \ No newline at end of file diff --git a/_sass/vendor/magnific-popup/magnific-popup.scss b/_sass/vendor/magnific-popup/magnific-popup.scss deleted file mode 100644 index e956385bfe..0000000000 --- a/_sass/vendor/magnific-popup/magnific-popup.scss +++ /dev/null @@ -1,645 +0,0 @@ -/* Magnific Popup CSS */ - -@import "settings"; - -//////////////////////// -// -// Contents: -// -// 1. Default Settings -// 2. General styles -// - Transluscent overlay -// - Containers, wrappers -// - Cursors -// - Helper classes -// 3. Appearance -// - Preloader & text that displays error messages -// - CSS reset for buttons -// - Close icon -// - "1 of X" counter -// - Navigation (left/right) arrows -// - Iframe content type styles -// - Image content type styles -// - Media query where size of arrows is reduced -// - IE7 support -// -//////////////////////// - - - -//////////////////////// -// 1. Default Settings -//////////////////////// - -$mfp-overlay-color: #0b0b0b !default; -$mfp-overlay-opacity: 0.8 !default; -$mfp-shadow: 0 0 8px rgba(0, 0, 0, 0.6) !default; // shadow on image or iframe -$mfp-popup-padding-left: 8px !default; // Padding from left and from right side -$mfp-popup-padding-left-mobile: 6px !default; // Same as above, but is applied when width of window is less than 800px - -$mfp-z-index-base: 1040 !default; // Base z-index of popup -$mfp-include-arrows: true !default; // include styles for nav arrows -$mfp-controls-opacity: 0.65 !default; -$mfp-controls-color: #FFF !default; -$mfp-controls-border-color: #3F3F3F !default; -$mfp-inner-close-icon-color: #333 !default; -$mfp-controls-text-color: #CCC !default; // Color of preloader and "1 of X" indicator -$mfp-controls-text-color-hover: #FFF !default; -$mfp-IE7support: true !default; // Very basic IE7 support - -// Iframe-type options -$mfp-include-iframe-type: true !default; -$mfp-iframe-padding-top: 40px !default; -$mfp-iframe-background: #000 !default; -$mfp-iframe-max-width: 900px !default; -$mfp-iframe-ratio: 9/16 !default; - -// Image-type options -$mfp-include-image-type: true !default; -$mfp-image-background: #444 !default; -$mfp-image-padding-top: 40px !default; -$mfp-image-padding-bottom: 40px !default; -$mfp-include-mobile-layout-for-image: true !default; // Removes paddings from top and bottom - -// Image caption options -$mfp-caption-title-color: #F3F3F3 !default; -$mfp-caption-subtitle-color: #BDBDBD !default; - -// A11y -$mfp-use-visuallyhidden: false !default; // Hide content from browsers, but make it available for screen readers - - - -//////////////////////// -// 2. General styles -//////////////////////// - -// Transluscent overlay -.mfp-bg { - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: $mfp-z-index-base + 2; - overflow: hidden; - position: fixed; - - background: $mfp-overlay-color; - opacity: $mfp-overlay-opacity; - @if $mfp-IE7support { - filter: unquote("alpha(opacity=#{$mfp-overlay-opacity*100})"); - } -} - -// Wrapper for popup -.mfp-wrap { - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: $mfp-z-index-base + 3; - position: fixed; - outline: none !important; - -webkit-backface-visibility: hidden; // fixes webkit bug that can cause "false" scrollbar -} - -// Root container -.mfp-container { - text-align: center; - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - padding: 0 $mfp-popup-padding-left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -// Vertical centerer helper -.mfp-container { - &:before { - content: ''; - display: inline-block; - height: 100%; - vertical-align: middle; - } -} - -// Remove vertical centering when popup has class `mfp-align-top` -.mfp-align-top { - .mfp-container { - &:before { - display: none; - } - } -} - -// Popup content holder -.mfp-content { - position: relative; - display: inline-block; - vertical-align: middle; - margin: 0 auto; - text-align: left; - z-index: $mfp-z-index-base + 5; -} -.mfp-inline-holder, -.mfp-ajax-holder { - .mfp-content { - width: 100%; - cursor: auto; - } -} - -// Cursors -.mfp-ajax-cur { - cursor: progress; -} -.mfp-zoom-out-cur { - &, .mfp-image-holder .mfp-close { - cursor: -moz-zoom-out; - cursor: -webkit-zoom-out; - cursor: zoom-out; - } -} -.mfp-zoom { - cursor: pointer; - cursor: -webkit-zoom-in; - cursor: -moz-zoom-in; - cursor: zoom-in; -} -.mfp-auto-cursor { - .mfp-content { - cursor: auto; - } -} - -.mfp-close, -.mfp-arrow, -.mfp-preloader, -.mfp-counter { - -webkit-user-select:none; - -moz-user-select: none; - user-select: none; -} - -// Hide the image during the loading -.mfp-loading { - &.mfp-figure { - display: none; - } -} - -// Helper class that hides stuff -@if $mfp-use-visuallyhidden { - // From HTML5 Boilerplate https://github.com/h5bp/html5-boilerplate/blob/v4.2.0/doc/css.md#visuallyhidden - .mfp-hide { - border: 0 !important; - clip: rect(0 0 0 0) !important; - height: 1px !important; - margin: -1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; - } -} @else { - .mfp-hide { - display: none !important; - } -} - - -//////////////////////// -// 3. Appearance -//////////////////////// - -// Preloader and text that displays error messages -.mfp-preloader { - color: $mfp-controls-text-color; - position: absolute; - top: 50%; - width: auto; - text-align: center; - margin-top: -0.8em; - left: 8px; - right: 8px; - z-index: $mfp-z-index-base + 4; - a { - color: $mfp-controls-text-color; - &:hover { - color: $mfp-controls-text-color-hover; - } - } -} - -// Hide preloader when content successfully loaded -.mfp-s-ready { - .mfp-preloader { - display: none; - } -} - -// Hide content when it was not loaded -.mfp-s-error { - .mfp-content { - display: none; - } -} - -// CSS-reset for buttons -button { - &.mfp-close, - &.mfp-arrow { - overflow: visible; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; - display: block; - outline: none; - padding: 0; - z-index: $mfp-z-index-base + 6; - -webkit-box-shadow: none; - box-shadow: none; - } - &::-moz-focus-inner { - padding: 0; - border: 0 - } -} - - -// Close icon -.mfp-close { - width: 44px; - height: 44px; - line-height: 44px; - - position: absolute; - right: 0; - top: 0; - text-decoration: none; - text-align: center; - opacity: $mfp-controls-opacity; - @if $mfp-IE7support { - filter: unquote("alpha(opacity=#{$mfp-controls-opacity*100})"); - } - padding: 0 0 18px 10px; - color: $mfp-controls-color; - - font-style: normal; - font-size: 28px; - font-family: Arial, Baskerville, monospace; - - &:hover, - &:focus { - opacity: 1; - @if $mfp-IE7support { - filter: unquote("alpha(opacity=#{1*100})"); - } - } - - &:active { - top: 1px; - } -} -.mfp-close-btn-in { - .mfp-close { - color: $mfp-inner-close-icon-color; - } -} -.mfp-image-holder, -.mfp-iframe-holder { - .mfp-close { - color: $mfp-controls-color; - right: -6px; - text-align: right; - padding-right: 6px; - width: 100%; - } -} - -// "1 of X" counter -.mfp-counter { - position: absolute; - top: 0; - right: 0; - color: $mfp-controls-text-color; - font-size: 12px; - line-height: 18px; -} - -// Navigation arrows -@if $mfp-include-arrows { - .mfp-arrow { - position: absolute; - opacity: $mfp-controls-opacity; - @if $mfp-IE7support { - filter: unquote("alpha(opacity=#{$mfp-controls-opacity*100})"); - } - margin: 0; - top: 50%; - margin-top: -55px; - padding: 0; - width: 90px; - height: 110px; - -webkit-tap-highlight-color: rgba(0,0,0,0); - &:active { - margin-top: -54px; - } - &:hover, - &:focus { - opacity: 1; - @if $mfp-IE7support { - filter: unquote("alpha(opacity=#{1*100})"); - } - } - &:before, - &:after, - .mfp-b, - .mfp-a { - content: ''; - display: block; - width: 0; - height: 0; - position: absolute; - left: 0; - top: 0; - margin-top: 35px; - margin-left: 35px; - border: medium inset transparent; - } - - &:after, - .mfp-a { - - border-top-width: 13px; - border-bottom-width: 13px; - top:8px; - } - - &:before, - .mfp-b { - border-top-width: 21px; - border-bottom-width: 21px; - opacity: 0.7; - } - - } - - .mfp-arrow-left { - left: 0; - - &:after, - .mfp-a { - border-right: 17px solid $mfp-controls-color; - margin-left: 31px; - } - &:before, - .mfp-b { - margin-left: 25px; - border-right: 27px solid $mfp-controls-border-color; - } - } - - .mfp-arrow-right { - right: 0; - &:after, - .mfp-a { - border-left: 17px solid $mfp-controls-color; - margin-left: 39px - } - &:before, - .mfp-b { - border-left: 27px solid $mfp-controls-border-color; - } - } -} - - - -// Iframe content type -@if $mfp-include-iframe-type { - .mfp-iframe-holder { - padding-top: $mfp-iframe-padding-top; - padding-bottom: $mfp-iframe-padding-top; - .mfp-content { - line-height: 0; - width: 100%; - max-width: $mfp-iframe-max-width; - } - .mfp-close { - top: -40px; - } - } - .mfp-iframe-scaler { - width: 100%; - height: 0; - overflow: hidden; - padding-top: $mfp-iframe-ratio * 100%; - iframe { - position: absolute; - display: block; - top: 0; - left: 0; - width: 100%; - height: 100%; - box-shadow: $mfp-shadow; - background: $mfp-iframe-background; - } - } -} - - - -// Image content type -@if $mfp-include-image-type { - - /* Main image in popup */ - img { - &.mfp-img { - width: auto; - max-width: 100%; - height: auto; - display: block; - line-height: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: $mfp-image-padding-top 0 $mfp-image-padding-bottom; - margin: 0 auto; - } - } - - /* The shadow behind the image */ - .mfp-figure { - line-height: 0; - &:after { - content: ''; - position: absolute; - left: 0; - top: $mfp-image-padding-top; - bottom: $mfp-image-padding-bottom; - display: block; - right: 0; - width: auto; - height: auto; - z-index: -1; - box-shadow: $mfp-shadow; - background: $mfp-image-background; - } - small { - color: $mfp-caption-subtitle-color; - display: block; - font-size: 12px; - line-height: 14px; - } - figure { - margin: 0; - } - } - .mfp-bottom-bar { - margin-top: -$mfp-image-padding-bottom + 4; - position: absolute; - top: 100%; - left: 0; - width: 100%; - cursor: auto; - } - .mfp-title { - text-align: left; - line-height: 18px; - color: $mfp-caption-title-color; - word-wrap: break-word; - padding-right: 36px; // leave some space for counter at right side - } - - .mfp-image-holder { - .mfp-content { - max-width: 100%; - } - } - - .mfp-gallery { - .mfp-image-holder { - .mfp-figure { - cursor: pointer; - } - } - } - - - @if $mfp-include-mobile-layout-for-image { - @media screen and (max-width: 800px) and (orientation:landscape), screen and (max-height: 300px) { - /** - * Remove all paddings around the image on small screen - */ - .mfp-img-mobile { - .mfp-image-holder { - padding-left: 0; - padding-right: 0; - } - img { - &.mfp-img { - padding: 0; - } - } - .mfp-figure { - // The shadow behind the image - &:after { - top: 0; - bottom: 0; - } - small { - display: inline; - margin-left: 5px; - } - } - .mfp-bottom-bar { - background: rgba(0,0,0,0.6); - bottom: 0; - margin: 0; - top: auto; - padding: 3px 5px; - position: fixed; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - &:empty { - padding: 0; - } - } - .mfp-counter { - right: 5px; - top: 3px; - } - .mfp-close { - top: 0; - right: 0; - width: 35px; - height: 35px; - line-height: 35px; - background: rgba(0, 0, 0, 0.6); - position: fixed; - text-align: center; - padding: 0; - } - } - } - } -} - - - -// Scale navigation arrows and reduce padding from sides -@media all and (max-width: 900px) { - .mfp-arrow { - -webkit-transform: scale(0.75); - transform: scale(0.75); - } - .mfp-arrow-left { - -webkit-transform-origin: 0; - transform-origin: 0; - } - .mfp-arrow-right { - -webkit-transform-origin: 100%; - transform-origin: 100%; - } - .mfp-container { - padding-left: $mfp-popup-padding-left-mobile; - padding-right: $mfp-popup-padding-left-mobile; - } -} - - - -// IE7 support -// Styles that make popup look nicier in old IE -@if $mfp-IE7support { - .mfp-ie7 { - .mfp-img { - padding: 0; - } - .mfp-bottom-bar { - width: 600px; - left: 50%; - margin-left: -300px; - margin-top: 5px; - padding-bottom: 5px; - } - .mfp-container { - padding: 0; - } - .mfp-content { - padding-top: 44px; - } - .mfp-close { - top: 0; - right: 0; - padding-top: 0; - } - } -} diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/about/index.md b/about/index.md deleted file mode 100644 index b507b564b1..0000000000 --- a/about/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: About the Jekyll Theme -image: - feature: abstract-5.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ -comments: false -modified: 2016-02-01 ---- - -They say three times the charm, so here is another free responsive Jekyll blog theme for you. I've learned a ton since open sourcing my first two themes [on Github](http://github.com/mmistakes), and wanted to try a few new things this time around. - -If you've used any of [my other themes](http://mademistakes.com/work/jekyll-themes/) most of this should be familiar territory... - -## HPSTR Features: - -* Compatible with Jekyll 3 and GitHub Pages. -* Responsive templates for post, page, and post index `_layouts`. Looks great on mobile, tablet, and desktop devices. -* Gracefully degrades in older browsers. Compatible with Internet Explorer 8+ and all modern browsers. -* Sweet animated menu. -* Background image support. -* Support for large images to call out your favorite posts. -* Optional [Disqus](http://disqus.com) comments. -* Simple and clear permalink structure[^1]. -* [Open Graph](https://developers.facebook.com/docs/opengraph/) and [Twitter Cards](https://dev.twitter.com/docs/cards) support for a better social sharing experience. -* [Custom 404 page]({{ site.url }}/404.html) to get you started. -* [Syntax highlighting]({{ site.url }}/code-highlighting-post/) stylesheets to make your code examples look snazzy. - -
Theme Setup Download HPSTR
- -[^1]: Example: *domain.com/category-name/post-title* \ No newline at end of file diff --git a/archives/2017/11/index.html b/archives/2017/11/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2017/12/index.html b/archives/2017/12/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2017/index.html b/archives/2017/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2018/01/index.html b/archives/2018/01/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2018/02/index.html b/archives/2018/02/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2018/06/index.html b/archives/2018/06/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2018/index.html b/archives/2018/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2019/07/index.html b/archives/2019/07/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2019/08/index.html b/archives/2019/08/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2019/09/index.html b/archives/2019/09/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2019/12/index.html b/archives/2019/12/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2019/index.html b/archives/2019/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2024/10/index.html b/archives/2024/10/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/2024/index.html b/archives/2024/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/archives/page/2/index.html b/archives/page/2/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/assets/css/main.scss b/assets/css/main.scss deleted file mode 100644 index 83f780f31a..0000000000 --- a/assets/css/main.scss +++ /dev/null @@ -1,28 +0,0 @@ ---- -sitemap: false ---- - -/* - * - * HPSTR - * - * Designer: Michael Rose - * Twitter: http://twitter.com/mmistakes - * -*/ - -// Partials -@import "variables"; -@import "mixins"; -@import "reset"; -@import "vendor/font-awesome/font-awesome"; -@import "vendor/magnific-popup/magnific-popup"; -@import "site"; -@import "typography"; -@import "syntax"; -// @import "coderay"; -@import "grid"; -@import "elements"; -@import "animations"; -@import "dl-menu"; -@import "page"; \ No newline at end of file diff --git a/assets/fonts/FontAwesome.otf b/assets/fonts/FontAwesome.otf deleted file mode 100644 index 3ed7f8b48a..0000000000 Binary files a/assets/fonts/FontAwesome.otf and /dev/null differ diff --git a/assets/fonts/fontawesome-webfont.eot b/assets/fonts/fontawesome-webfont.eot deleted file mode 100644 index 9b6afaedc0..0000000000 Binary files a/assets/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/assets/fonts/fontawesome-webfont.svg b/assets/fonts/fontawesome-webfont.svg deleted file mode 100644 index d05688e9e2..0000000000 --- a/assets/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,655 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/fonts/fontawesome-webfont.ttf b/assets/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 26dea7951a..0000000000 Binary files a/assets/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/assets/fonts/fontawesome-webfont.woff b/assets/fonts/fontawesome-webfont.woff deleted file mode 100644 index dc35ce3c2c..0000000000 Binary files a/assets/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/assets/fonts/fontawesome-webfont.woff2 b/assets/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 500e517253..0000000000 Binary files a/assets/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/assets/js/_main.js b/assets/js/_main.js deleted file mode 100644 index ff0289d3c0..0000000000 --- a/assets/js/_main.js +++ /dev/null @@ -1,49 +0,0 @@ -/*! Plugin options and other jQuery stuff */ - -// dl-menu options -$(function() { - $( '#dl-menu' ).dlmenu({ - animationClasses : { classin : 'dl-animate-in', classout : 'dl-animate-out' } - }); -}); - -// FitVids options -$(function() { - $("article").fitVids(); -}); - -$(".close-menu").click(function () { - $(".menu").toggleClass("disabled"); - $(".links").toggleClass("enabled"); -}); - -$(".about").click(function () { - $("#about").css('display','block'); -}); - -$(".close-about").click(function () { - $("#about").css('display',''); -}); - -// Add lightbox class to all image links -$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"); - -// Magnific-Popup options -$(document).ready(function() { - $('.image-popup').magnificPopup({ - type: 'image', - tLoading: 'Loading image #%curr%...', - gallery: { - enabled: true, - navigateByImgClick: true, - preload: [0,1] // Will preload 0 - before current, and 1 after the current image - }, - image: { - tError: 'Image #%curr% could not be loaded.', - }, - removalDelay: 300, // Delay in milliseconds before popup is removed - // Class that is added to body when popup is open. - // make it unique to apply your CSS animations just to this exact popup - mainClass: 'mfp-fade' - }); -}); \ No newline at end of file diff --git a/assets/js/plugins/jquery.dlmenu.js b/assets/js/plugins/jquery.dlmenu.js deleted file mode 100644 index 2f54293d2e..0000000000 --- a/assets/js/plugins/jquery.dlmenu.js +++ /dev/null @@ -1,260 +0,0 @@ -/** - * jquery.dlmenu.js v1.0.1 - * http://www.codrops.com - * - * Licensed under the MIT license. - * http://www.opensource.org/licenses/mit-license.php - * - * Copyright 2013, Codrops - * http://www.codrops.com - * - * Modified by Michael Rose - */ -;( function( $, window, undefined ) { - - 'use strict'; - - // global - var Modernizr = window.Modernizr, $body = $( 'body' ); - - $.DLMenu = function( options, element ) { - this.$el = $( element ); - this._init( options ); - }; - - // the options - $.DLMenu.defaults = { - // classes for the animation effects - animationClasses : { classin : 'dl-animate-in-1', classout : 'dl-animate-out-1' }, - // callback: click a link that has a sub menu - // el is the link element (li); name is the level name - onLevelClick : function( el, name ) { return false; }, - // callback: click a link that does not have a sub menu - // el is the link element (li); ev is the event obj - onLinkClick : function( el, ev ) { return false; } - }; - - $.DLMenu.prototype = { - _init : function( options ) { - - // options - this.options = $.extend( true, {}, $.DLMenu.defaults, options ); - // cache some elements and initialize some variables - this._config(); - - var animEndEventNames = { - 'WebkitAnimation' : 'webkitAnimationEnd', - 'OAnimation' : 'oAnimationEnd', - 'msAnimation' : 'MSAnimationEnd', - 'animation' : 'animationend' - }, - transEndEventNames = { - 'WebkitTransition' : 'webkitTransitionEnd', - 'MozTransition' : 'transitionend', - 'OTransition' : 'oTransitionEnd', - 'msTransition' : 'MSTransitionEnd', - 'transition' : 'transitionend' - }; - // animation end event name - this.animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ] + '.dlmenu'; - // transition end event name - this.transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ] + '.dlmenu', - // support for css animations and css transitions - this.supportAnimations = Modernizr.cssanimations, - this.supportTransitions = Modernizr.csstransitions; - - this._initEvents(); - - }, - _config : function() { - this.open = false; - this.$menuwrapper = $( '#dl-menu' ); - this.$trigger = this.$el.children( '.dl-trigger' ); - this.$menu = this.$el.children( 'ul.dl-menu' ); - this.$menuitems = this.$menu.find( 'li:not(.dl-back)' ); - this.$el.find( 'ul.dl-submenu' ).prepend( '
  • back
  • ' ); - this.$back = this.$menu.find( 'li.dl-back' ); - }, - _initEvents : function() { - - var self = this; - - this.$trigger.on( 'click.dlmenu', function() { - - if( self.open ) { - self._closeMenu(); - } - else { - self._openMenu(); - } - return false; - - } ); - - this.$menuitems.on( 'click.dlmenu', function( event ) { - - event.stopPropagation(); - - var $item = $(this), - $submenu = $item.children( 'ul.dl-submenu' ); - - if( $submenu.length > 0 ) { - - var $flyin = $submenu.clone().css({ - opacity: 0, - margin: 0 - }).insertAfter( self.$menu ), - onAnimationEndFn = function() { - self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classout ).addClass( 'dl-subview' ); - $item.addClass( 'dl-subviewopen' ).parents( '.dl-subviewopen:first' ).removeClass( 'dl-subviewopen' ).addClass( 'dl-subview' ); - $flyin.remove(); - }; - - setTimeout( function() { - $flyin.addClass( self.options.animationClasses.classin ); - self.$menu.addClass( self.options.animationClasses.classout ); - if( self.supportAnimations ) { - self.$menu.on( self.animEndEventName, onAnimationEndFn ); - } - else { - onAnimationEndFn.call(); - } - - self.options.onLevelClick( $item, $item.children( 'a:first' ).text() ); - } ); - - return false; - - } - else { - self.options.onLinkClick( $item, event ); - } - - } ); - - this.$back.on( 'click.dlmenu', function( event ) { - - var $this = $( this ), - $submenu = $this.parents( 'ul.dl-submenu:first' ), - $item = $submenu.parent(), - - $flyin = $submenu.clone().insertAfter( self.$menu ); - - var onAnimationEndFn = function() { - self.$menu.off( self.animEndEventName ).removeClass( self.options.animationClasses.classin ); - $flyin.remove(); - }; - - setTimeout( function() { - $flyin.addClass( self.options.animationClasses.classout ); - self.$menu.addClass( self.options.animationClasses.classin ); - if( self.supportAnimations ) { - self.$menu.on( self.animEndEventName, onAnimationEndFn ); - } - else { - onAnimationEndFn.call(); - } - - $item.removeClass( 'dl-subviewopen' ); - - var $subview = $this.parents( '.dl-subview:first' ); - if( $subview.is( 'li' ) ) { - $subview.addClass( 'dl-subviewopen' ); - } - $subview.removeClass( 'dl-subview' ); - } ); - - return false; - - } ); - - }, - closeMenu : function() { - if( this.open ) { - this._closeMenu(); - } - }, - _closeMenu : function() { - var self = this, - onTransitionEndFn = function() { - self.$menu.off( self.transEndEventName ); - self._resetMenu(); - }; - - this.$menuwrapper.removeClass( 'dl-menuopen' ); - this.$menu.removeClass( 'dl-menuopen' ); - this.$menu.addClass( 'dl-menu-toggle' ); - this.$trigger.removeClass( 'dl-active' ); - - if( this.supportTransitions ) { - this.$menu.on( this.transEndEventName, onTransitionEndFn ); - } - else { - onTransitionEndFn.call(); - } - - this.open = false; - }, - openMenu : function() { - if( !this.open ) { - this._openMenu(); - } - }, - _openMenu : function() { - var self = this; - // clicking somewhere else makes the menu close - $body.off( 'click' ).on( 'click.dlmenu', function() { - self._closeMenu() ; - } ); - this.$menuwrapper.addClass( 'dl-menuopen' ); - this.$menu.addClass( 'dl-menuopen dl-menu-toggle' ).on( this.transEndEventName, function() { - $( this ).removeClass( 'dl-menu-toggle' ); - } ); - this.$trigger.addClass( 'dl-active' ); - this.open = true; - }, - // resets the menu to its original state (first level of options) - _resetMenu : function() { - this.$menu.removeClass( 'dl-subview' ); - this.$menuitems.removeClass( 'dl-subview dl-subviewopen' ); - } - }; - - var logError = function( message ) { - if ( window.console ) { - window.console.error( message ); - } - }; - - $.fn.dlmenu = function( options ) { - if ( typeof options === 'string' ) { - var args = Array.prototype.slice.call( arguments, 1 ); - this.each(function() { - var instance = $.data( this, 'dlmenu' ); - if ( !instance ) { - logError( "cannot call methods on dlmenu prior to initialization; " + - "attempted to call method '" + options + "'" ); - return; - } - if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) { - logError( "no such method '" + options + "' for dlmenu instance" ); - return; - } - instance[ options ].apply( instance, args ); - }); - } - else { - this.each(function() { - var instance = $.data( this, 'dlmenu' ); - if ( instance ) { - instance._init(); - } - else { - instance = $.data( this, 'dlmenu', new $.DLMenu( options, this ) ); - } - }); - } - return this; - }; - -} )( jQuery, window ); diff --git a/assets/js/plugins/jquery.fitvids.js b/assets/js/plugins/jquery.fitvids.js deleted file mode 100644 index 06cffcb1b8..0000000000 --- a/assets/js/plugins/jquery.fitvids.js +++ /dev/null @@ -1,81 +0,0 @@ -/*global jQuery */ -/*jshint multistr:true, browser:true */ -/*! -* FitVids 1.0 -* -* Copyright 2011, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com -* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ -* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ -* -* Date: Thu Sept 01 18:00:00 2011 -0500 -*/ - -(function( $ ){ - - "use strict"; - - $.fn.fitVids = function( options ) { - var settings = { - customSelector: null - }; - - var div = document.createElement('div'), - ref = document.getElementsByTagName('base')[0] || document.getElementsByTagName('script')[0]; - - div.className = 'fit-vids-style'; - div.innerHTML = '­'; - - ref.parentNode.insertBefore(div,ref); - - if ( options ) { - $.extend( settings, options ); - } - - return this.each(function(){ - var selectors = [ - "iframe[src*='player.vimeo.com']", - "iframe[src*='www.youtube.com']", - "iframe[src*='www.youtube-nocookie.com']", - "iframe[src*='www.kickstarter.com']", - "object", - "embed" - ]; - - if (settings.customSelector) { - selectors.push(settings.customSelector); - } - - var $allVideos = $(this).find(selectors.join(',')); - - $allVideos.each(function(){ - var $this = $(this); - if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } - var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), - width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), - aspectRatio = height / width; - if(!$this.attr('id')){ - var videoID = 'fitvid' + Math.floor(Math.random()*999999); - $this.attr('id', videoID); - } - $this.wrap('
    ').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%"); - $this.removeAttr('height').removeAttr('width'); - }); - }); - }; -})( jQuery ); \ No newline at end of file diff --git a/assets/js/plugins/jquery.magnific-popup.js b/assets/js/plugins/jquery.magnific-popup.js deleted file mode 100644 index d4dfed7017..0000000000 --- a/assets/js/plugins/jquery.magnific-popup.js +++ /dev/null @@ -1,2026 +0,0 @@ -/*! Magnific Popup - v0.9.3 - 2013-07-16 -* http://dimsemenov.com/plugins/magnific-popup/ -* Copyright (c) 2013 Dmitry Semenov; */ -;(function($) { - -/*>>core*/ -/** - * - * Magnific Popup Core JS file - * - */ - - -/** - * Private static constants - */ -var CLOSE_EVENT = 'Close', - BEFORE_CLOSE_EVENT = 'BeforeClose', - AFTER_CLOSE_EVENT = 'AfterClose', - BEFORE_APPEND_EVENT = 'BeforeAppend', - MARKUP_PARSE_EVENT = 'MarkupParse', - OPEN_EVENT = 'Open', - CHANGE_EVENT = 'Change', - NS = 'mfp', - EVENT_NS = '.' + NS, - READY_CLASS = 'mfp-ready', - REMOVING_CLASS = 'mfp-removing', - PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; - - -/** - * Private vars - */ -var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' - MagnificPopup = function(){}, - _isJQ = !!(window.jQuery), - _prevStatus, - _window = $(window), - _body, - _document, - _prevContentType, - _wrapClasses, - _currPopupType; - - -/** - * Private functions - */ -var _mfpOn = function(name, f) { - mfp.ev.on(NS + name + EVENT_NS, f); - }, - _getEl = function(className, appendTo, html, raw) { - var el = document.createElement('div'); - el.className = 'mfp-'+className; - if(html) { - el.innerHTML = html; - } - if(!raw) { - el = $(el); - if(appendTo) { - el.appendTo(appendTo); - } - } else if(appendTo) { - appendTo.appendChild(el); - } - return el; - }, - _mfpTrigger = function(e, data) { - mfp.ev.triggerHandler(NS + e, data); - - if(mfp.st.callbacks) { - // converts "mfpEventName" to "eventName" callback and triggers it if it's present - e = e.charAt(0).toLowerCase() + e.slice(1); - if(mfp.st.callbacks[e]) { - mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); - } - } - }, - _setFocus = function() { - (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).trigger('focus'); - }, - _getCloseBtn = function(type) { - if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { - mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); - _currPopupType = type; - } - return mfp.currTemplate.closeBtn; - }, - // Initialize Magnific Popup only when called at least once - _checkInstance = function() { - if(!$.magnificPopup.instance) { - mfp = new MagnificPopup(); - mfp.init(); - $.magnificPopup.instance = mfp; - } - }, - // Check to close popup or not - // "target" is an element that was clicked - _checkIfClose = function(target) { - - if($(target).hasClass(PREVENT_CLOSE_CLASS)) { - return; - } - - var closeOnContent = mfp.st.closeOnContentClick; - var closeOnBg = mfp.st.closeOnBgClick; - - if(closeOnContent && closeOnBg) { - return true; - } else { - - // We close the popup if click is on close button or on preloader. Or if there is no content. - if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) { - return true; - } - - // if click is outside the content - if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { - if(closeOnBg) { - // last check, if the clicked element is in DOM, (in case it's removed onclick) - if( $.contains(document, target) ) { - return true; - } - } - } else if(closeOnContent) { - return true; - } - - } - return false; - }, - // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr - supportsTransitions = function() { - var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist - v = ['ms','O','Moz','Webkit']; // 'v' for vendor - - if( s['transition'] !== undefined ) { - return true; - } - - while( v.length ) { - if( v.pop() + 'Transition' in s ) { - return true; - } - } - - return false; - }; - - - -/** - * Public functions - */ -MagnificPopup.prototype = { - - constructor: MagnificPopup, - - /** - * Initializes Magnific Popup plugin. - * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed - */ - init: function() { - var appVersion = navigator.appVersion; - mfp.isIE7 = appVersion.indexOf("MSIE 7.") !== -1; - mfp.isIE8 = appVersion.indexOf("MSIE 8.") !== -1; - mfp.isLowIE = mfp.isIE7 || mfp.isIE8; - mfp.isAndroid = (/android/gi).test(appVersion); - mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); - mfp.supportsTransition = supportsTransitions(); - - // We disable fixed positioned lightbox on devices that don't handle it nicely. - // If you know a better way of detecting this - let me know. - mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); - _body = $(document.body); - _document = $(document); - - mfp.popupsCache = {}; - }, - - /** - * Opens popup - * @param data [description] - */ - open: function(data) { - - var i; - - if(data.isObj === false) { - // convert jQuery collection to array to avoid conflicts later - mfp.items = data.items.toArray(); - - mfp.index = 0; - var items = data.items, - item; - for(i = 0; i < items.length; i++) { - item = items[i]; - if(item.parsed) { - item = item.el[0]; - } - if(item === data.el[0]) { - mfp.index = i; - break; - } - } - } else { - mfp.items = $.isArray(data.items) ? data.items : [data.items]; - mfp.index = data.index || 0; - } - - // if popup is already opened - we just update the content - if(mfp.isOpen) { - mfp.updateItemHTML(); - return; - } - - mfp.types = []; - _wrapClasses = ''; - if(data.mainEl && data.mainEl.length) { - mfp.ev = data.mainEl.eq(0); - } else { - mfp.ev = _document; - } - - if(data.key) { - if(!mfp.popupsCache[data.key]) { - mfp.popupsCache[data.key] = {}; - } - mfp.currTemplate = mfp.popupsCache[data.key]; - } else { - mfp.currTemplate = {}; - } - - - - mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); - mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; - - if(mfp.st.modal) { - mfp.st.closeOnContentClick = false; - mfp.st.closeOnBgClick = false; - mfp.st.showCloseBtn = false; - mfp.st.enableEscapeKey = false; - } - - - // Building markup - // main containers are created only once - if(!mfp.bgOverlay) { - - // Dark overlay - mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { - mfp.close(); - }); - - mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { - if(_checkIfClose(e.target)) { - mfp.close(); - } - }); - - mfp.container = _getEl('container', mfp.wrap); - } - - mfp.contentContainer = _getEl('content'); - if(mfp.st.preloader) { - mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); - } - - - // Initializing modules - var modules = $.magnificPopup.modules; - for(i = 0; i < modules.length; i++) { - var n = modules[i]; - n = n.charAt(0).toUpperCase() + n.slice(1); - mfp['init'+n].call(mfp); - } - _mfpTrigger('BeforeOpen'); - - - if(mfp.st.showCloseBtn) { - // Close button - if(!mfp.st.closeBtnInside) { - mfp.wrap.append( _getCloseBtn() ); - } else { - _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { - values.close_replaceWith = _getCloseBtn(item.type); - }); - _wrapClasses += ' mfp-close-btn-in'; - } - } - - if(mfp.st.alignTop) { - _wrapClasses += ' mfp-align-top'; - } - - - - if(mfp.fixedContentPos) { - mfp.wrap.css({ - overflow: mfp.st.overflowY, - overflowX: 'hidden', - overflowY: mfp.st.overflowY - }); - } else { - mfp.wrap.css({ - top: _window.scrollTop(), - position: 'absolute' - }); - } - if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { - mfp.bgOverlay.css({ - height: _document.height(), - position: 'absolute' - }); - } - - - - if(mfp.st.enableEscapeKey) { - // Close on ESC key - _document.on('keyup' + EVENT_NS, function(e) { - if(e.keyCode === 27) { - mfp.close(); - } - }); - } - - _window.on('resize' + EVENT_NS, function() { - mfp.updateSize(); - }); - - - if(!mfp.st.closeOnContentClick) { - _wrapClasses += ' mfp-auto-cursor'; - } - - if(_wrapClasses) - mfp.wrap.addClass(_wrapClasses); - - - // this triggers recalculation of layout, so we get it once to not to trigger twice - var windowHeight = mfp.wH = _window.height(); - - - var windowStyles = {}; - - if( mfp.fixedContentPos ) { - if(mfp._hasScrollBar(windowHeight)){ - var s = mfp._getScrollbarSize(); - if(s) { - windowStyles.paddingRight = s; - } - } - } - - if(mfp.fixedContentPos) { - if(!mfp.isIE7) { - windowStyles.overflow = 'hidden'; - } else { - // ie7 double-scroll bug - $('body, html').css('overflow', 'hidden'); - } - } - - - - var classesToadd = mfp.st.mainClass; - if(mfp.isIE7) { - classesToadd += ' mfp-ie7'; - } - if(classesToadd) { - mfp._addClassToMFP( classesToadd ); - } - - // add content - mfp.updateItemHTML(); - - _mfpTrigger('BuildControls'); - - - // remove scrollbar, add padding e.t.c - $('html').css(windowStyles); - - // add everything to DOM - mfp.bgOverlay.add(mfp.wrap).prependTo( document.body ); - - - - // Save last focused element - mfp._lastFocusedEl = document.activeElement; - - // Wait for next cycle to allow CSS transition - setTimeout(function() { - - if(mfp.content) { - mfp._addClassToMFP(READY_CLASS); - _setFocus(); - } else { - // if content is not defined (not loaded e.t.c) we add class only for BG - mfp.bgOverlay.addClass(READY_CLASS); - } - - // Trap the focus in popup - _document.on('focusin' + EVENT_NS, function (e) { - if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { - _setFocus(); - return false; - } - }); - - }, 16); - - mfp.isOpen = true; - mfp.updateSize(windowHeight); - _mfpTrigger(OPEN_EVENT); - }, - - /** - * Closes the popup - */ - close: function() { - if(!mfp.isOpen) return; - _mfpTrigger(BEFORE_CLOSE_EVENT); - - mfp.isOpen = false; - // for CSS3 animation - if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { - mfp._addClassToMFP(REMOVING_CLASS); - setTimeout(function() { - mfp._close(); - }, mfp.st.removalDelay); - } else { - mfp._close(); - } - }, - - /** - * Helper for close() function - */ - _close: function() { - _mfpTrigger(CLOSE_EVENT); - - var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; - - mfp.bgOverlay.detach(); - mfp.wrap.detach(); - mfp.container.empty(); - - if(mfp.st.mainClass) { - classesToRemove += mfp.st.mainClass + ' '; - } - - mfp._removeClassFromMFP(classesToRemove); - - if(mfp.fixedContentPos) { - var windowStyles = {paddingRight: ''}; - if(mfp.isIE7) { - $('body, html').css('overflow', ''); - } else { - windowStyles.overflow = ''; - } - $('html').css(windowStyles); - } - - _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); - mfp.ev.off(EVENT_NS); - - // clean up DOM elements that aren't removed - mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); - mfp.bgOverlay.attr('class', 'mfp-bg'); - mfp.container.attr('class', 'mfp-container'); - - // remove close button from target element - if(mfp.st.showCloseBtn && - (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { - if(mfp.currTemplate.closeBtn) - mfp.currTemplate.closeBtn.detach(); - } - - - if(mfp._lastFocusedEl) { - $(mfp._lastFocusedEl).trigger('focus'); // put tab focus back - } - mfp.currItem = null; - mfp.content = null; - mfp.currTemplate = null; - mfp.prevHeight = 0; - - _mfpTrigger(AFTER_CLOSE_EVENT); - }, - - updateSize: function(winHeight) { - - if(mfp.isIOS) { - // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 - var zoomLevel = document.documentElement.clientWidth / window.innerWidth; - var height = window.innerHeight * zoomLevel; - mfp.wrap.css('height', height); - mfp.wH = height; - } else { - mfp.wH = winHeight || _window.height(); - } - // Fixes #84: popup incorrectly positioned with position:relative on body - if(!mfp.fixedContentPos) { - mfp.wrap.css('height', mfp.wH); - } - - _mfpTrigger('Resize'); - - }, - - /** - * Set content of popup based on current index - */ - updateItemHTML: function() { - var item = mfp.items[mfp.index]; - - // Detach and perform modifications - mfp.contentContainer.detach(); - - if(mfp.content) - mfp.content.detach(); - - if(!item.parsed) { - item = mfp.parseEl( mfp.index ); - } - - var type = item.type; - - _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); - // BeforeChange event works like so: - // _mfpOn('BeforeChange', function(e, prevType, newType) { }); - - mfp.currItem = item; - - - - - - if(!mfp.currTemplate[type]) { - var markup = mfp.st[type] ? mfp.st[type].markup : false; - - // allows to modify markup - _mfpTrigger('FirstMarkupParse', markup); - - if(markup) { - mfp.currTemplate[type] = $(markup); - } else { - // if there is no markup found we just define that template is parsed - mfp.currTemplate[type] = true; - } - } - - if(_prevContentType && _prevContentType !== item.type) { - mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); - } - - var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); - mfp.appendContent(newContent, type); - - item.preloaded = true; - - _mfpTrigger(CHANGE_EVENT, item); - _prevContentType = item.type; - - // Append container back after its content changed - mfp.container.prepend(mfp.contentContainer); - - _mfpTrigger('AfterChange'); - }, - - - /** - * Set HTML content of popup - */ - appendContent: function(newContent, type) { - mfp.content = newContent; - - if(newContent) { - if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && - mfp.currTemplate[type] === true) { - // if there is no markup, we just append close button element inside - if(!mfp.content.find('.mfp-close').length) { - mfp.content.append(_getCloseBtn()); - } - } else { - mfp.content = newContent; - } - } else { - mfp.content = ''; - } - - _mfpTrigger(BEFORE_APPEND_EVENT); - mfp.container.addClass('mfp-'+type+'-holder'); - - mfp.contentContainer.append(mfp.content); - }, - - - - - /** - * Creates Magnific Popup data object based on given data - * @param {int} index Index of item to parse - */ - parseEl: function(index) { - var item = mfp.items[index], - type = item.type; - - if(item.tagName) { - item = { el: $(item) }; - } else { - item = { data: item, src: item.src }; - } - - if(item.el) { - var types = mfp.types; - - // check for 'mfp-TYPE' class - for(var i = 0; i < types.length; i++) { - if( item.el.hasClass('mfp-'+types[i]) ) { - type = types[i]; - break; - } - } - - item.src = item.el.attr('data-mfp-src'); - if(!item.src) { - item.src = item.el.attr('href'); - } - } - - item.type = type || mfp.st.type || 'inline'; - item.index = index; - item.parsed = true; - mfp.items[index] = item; - _mfpTrigger('ElementParse', item); - - return mfp.items[index]; - }, - - - /** - * Initializes single popup or a group of popups - */ - addGroup: function(el, options) { - var eHandler = function(e) { - e.mfpEl = this; - mfp._openClick(e, el, options); - }; - - if(!options) { - options = {}; - } - - var eName = 'click.magnificPopup'; - options.mainEl = el; - - if(options.items) { - options.isObj = true; - el.off(eName).on(eName, eHandler); - } else { - options.isObj = false; - if(options.delegate) { - el.off(eName).on(eName, options.delegate , eHandler); - } else { - options.items = el; - el.off(eName).on(eName, eHandler); - } - } - }, - _openClick: function(e, el, options) { - var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; - - - if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey ) ) { - return; - } - - var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; - - if(disableOn) { - if($.isFunction(disableOn)) { - if( !disableOn.call(mfp) ) { - return true; - } - } else { // else it's number - if( _window.width() < disableOn ) { - return true; - } - } - } - - if(e.type) { - e.preventDefault(); - - // This will prevent popup from closing if element is inside and popup is already opened - if(mfp.isOpen) { - e.stopPropagation(); - } - } - - - options.el = $(e.mfpEl); - if(options.delegate) { - options.items = el.find(options.delegate); - } - mfp.open(options); - }, - - - /** - * Updates text on preloader - */ - updateStatus: function(status, text) { - - if(mfp.preloader) { - if(_prevStatus !== status) { - mfp.container.removeClass('mfp-s-'+_prevStatus); - } - - if(!text && status === 'loading') { - text = mfp.st.tLoading; - } - - var data = { - status: status, - text: text - }; - // allows to modify status - _mfpTrigger('UpdateStatus', data); - - status = data.status; - text = data.text; - - mfp.preloader.html(text); - - mfp.preloader.find('a').on('click', function(e) { - e.stopImmediatePropagation(); - }); - - mfp.container.addClass('mfp-s-'+status); - _prevStatus = status; - } - }, - - - /* - "Private" helpers that aren't private at all - */ - _addClassToMFP: function(cName) { - mfp.bgOverlay.addClass(cName); - mfp.wrap.addClass(cName); - }, - _removeClassFromMFP: function(cName) { - this.bgOverlay.removeClass(cName); - mfp.wrap.removeClass(cName); - }, - _hasScrollBar: function(winHeight) { - return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); - }, - _parseMarkup: function(template, values, item) { - var arr; - if(item.data) { - values = $.extend(item.data, values); - } - _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); - - $.each(values, function(key, value) { - if(value === undefined || value === false) { - return true; - } - arr = key.split('_'); - if(arr.length > 1) { - var el = template.find(EVENT_NS + '-'+arr[0]); - - if(el.length > 0) { - var attr = arr[1]; - if(attr === 'replaceWith') { - if(el[0] !== value[0]) { - el.replaceWith(value); - } - } else if(attr === 'img') { - if(el.is('img')) { - el.attr('src', value); - } else { - el.replaceWith( '' ); - } - } else { - el.attr(arr[1], value); - } - } - - } else { - template.find(EVENT_NS + '-'+key).html(value); - } - }); - }, - - _getScrollbarSize: function() { - // thx David - if(mfp.scrollbarSize === undefined) { - var scrollDiv = document.createElement("div"); - scrollDiv.id = "mfp-sbm"; - scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; - document.body.appendChild(scrollDiv); - mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - } - return mfp.scrollbarSize; - } - -}; /* MagnificPopup core prototype end */ - - - - -/** - * Public static functions - */ -$.magnificPopup = { - instance: null, - proto: MagnificPopup.prototype, - modules: [], - - open: function(options, index) { - _checkInstance(); - - if(!options) - options = {}; - - options.isObj = true; - options.index = index || 0; - return this.instance.open(options); - }, - - close: function() { - return $.magnificPopup.instance.close(); - }, - - registerModule: function(name, module) { - if(module.options) { - $.magnificPopup.defaults[name] = module.options; - } - $.extend(this.proto, module.proto); - this.modules.push(name); - }, - - defaults: { - - // Info about options is in docs: - // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options - - disableOn: 0, - - key: null, - - midClick: false, - - mainClass: '', - - preloader: true, - - focus: '', // CSS selector of input to focus after popup is opened - - closeOnContentClick: false, - - closeOnBgClick: true, - - closeBtnInside: true, - - showCloseBtn: true, - - enableEscapeKey: true, - - modal: false, - - alignTop: false, - - removalDelay: 0, - - fixedContentPos: 'auto', - - fixedBgPos: 'auto', - - overflowY: 'auto', - - closeMarkup: '', - - tClose: 'Close (Esc)', - - tLoading: 'Loading...' - - } -}; - - - -$.fn.magnificPopup = function(options) { - _checkInstance(); - - var jqEl = $(this); - - // We call some API method of first param is a string - if (typeof options === "string" ) { - - if(options === 'open') { - var items, - itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup, - index = parseInt(arguments[1], 10) || 0; - - if(itemOpts.items) { - items = itemOpts.items[index]; - } else { - items = jqEl; - if(itemOpts.delegate) { - items = items.find(itemOpts.delegate); - } - items = items.eq( index ); - } - mfp._openClick({mfpEl:items}, jqEl, itemOpts); - } else { - if(mfp.isOpen) - mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); - } - - } else { - - /* - * As Zepto doesn't support .data() method for objects - * and it works only in normal browsers - * we assign "options" object directly to the DOM element. FTW! - */ - if(_isJQ) { - jqEl.data('magnificPopup', options); - } else { - jqEl[0].magnificPopup = options; - } - - mfp.addGroup(jqEl, options); - - } - return jqEl; -}; - - -//Quick benchmark -/* -var start = performance.now(), - i, - rounds = 1000; - -for(i = 0; i < rounds; i++) { - -} -console.log('Test #1:', performance.now() - start); - -start = performance.now(); -for(i = 0; i < rounds; i++) { - -} -console.log('Test #2:', performance.now() - start); -*/ - - -/*>>core*/ - -/*>>inline*/ - -var INLINE_NS = 'inline', - _hiddenClass, - _inlinePlaceholder, - _lastInlineElement, - _putInlineElementsBack = function() { - if(_lastInlineElement) { - _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach(); - _lastInlineElement = null; - } - }; - -$.magnificPopup.registerModule(INLINE_NS, { - options: { - hiddenClass: 'hide', // will be appended with `mfp-` prefix - markup: '', - tNotFound: 'Content not found' - }, - proto: { - - initInline: function() { - mfp.types.push(INLINE_NS); - - _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() { - _putInlineElementsBack(); - }); - }, - - getInline: function(item, template) { - - _putInlineElementsBack(); - - if(item.src) { - var inlineSt = mfp.st.inline, - el = $(item.src); - - if(el.length) { - - // If target element has parent - we replace it with placeholder and put it back after popup is closed - var parent = el[0].parentNode; - if(parent && parent.tagName) { - if(!_inlinePlaceholder) { - _hiddenClass = inlineSt.hiddenClass; - _inlinePlaceholder = _getEl(_hiddenClass); - _hiddenClass = 'mfp-'+_hiddenClass; - } - // replace target inline element with placeholder - _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); - } - - mfp.updateStatus('ready'); - } else { - mfp.updateStatus('error', inlineSt.tNotFound); - el = $('
    '); - } - - item.inlineElement = el; - return el; - } - - mfp.updateStatus('ready'); - mfp._parseMarkup(template, {}, item); - return template; - } - } -}); - -/*>>inline*/ - -/*>>ajax*/ -var AJAX_NS = 'ajax', - _ajaxCur, - _removeAjaxCursor = function() { - if(_ajaxCur) { - _body.removeClass(_ajaxCur); - } - }; - -$.magnificPopup.registerModule(AJAX_NS, { - - options: { - settings: null, - cursor: 'mfp-ajax-cur', - tError: 'The content could not be loaded.' - }, - - proto: { - initAjax: function() { - mfp.types.push(AJAX_NS); - _ajaxCur = mfp.st.ajax.cursor; - - _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, function() { - _removeAjaxCursor(); - if(mfp.req) { - mfp.req.abort(); - } - }); - }, - - getAjax: function(item) { - - if(_ajaxCur) - _body.addClass(_ajaxCur); - - mfp.updateStatus('loading'); - - var opts = $.extend({ - url: item.src, - success: function(data, textStatus, jqXHR) { - var temp = { - data:data, - xhr:jqXHR - }; - - _mfpTrigger('ParseAjax', temp); - - mfp.appendContent( $(temp.data), AJAX_NS ); - - item.finished = true; - - _removeAjaxCursor(); - - _setFocus(); - - setTimeout(function() { - mfp.wrap.addClass(READY_CLASS); - }, 16); - - mfp.updateStatus('ready'); - - _mfpTrigger('AjaxContentAdded'); - }, - error: function() { - _removeAjaxCursor(); - item.finished = item.loadError = true; - mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src)); - } - }, mfp.st.ajax.settings); - - mfp.req = $.ajax(opts); - - return ''; - } - } -}); - - - - - - - -/*>>ajax*/ - -/*>>image*/ -var _imgInterval, - _getTitle = function(item) { - if(item.data && item.data.title !== undefined) - return item.data.title; - - var src = mfp.st.image.titleSrc; - - if(src) { - if($.isFunction(src)) { - return src.call(mfp, item); - } else if(item.el) { - return item.el.attr(src) || ''; - } - } - return ''; - }; - -$.magnificPopup.registerModule('image', { - - options: { - markup: '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    '+ - '
    ', - cursor: 'mfp-zoom-out-cur', - titleSrc: 'title', - verticalFit: true, - tError: 'The image could not be loaded.' - }, - - proto: { - initImage: function() { - var imgSt = mfp.st.image, - ns = '.image'; - - mfp.types.push('image'); - - _mfpOn(OPEN_EVENT+ns, function() { - if(mfp.currItem.type === 'image' && imgSt.cursor) { - _body.addClass(imgSt.cursor); - } - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(imgSt.cursor) { - _body.removeClass(imgSt.cursor); - } - _window.off('resize' + EVENT_NS); - }); - - _mfpOn('Resize'+ns, mfp.resizeImage); - if(mfp.isLowIE) { - _mfpOn('AfterChange', mfp.resizeImage); - } - }, - resizeImage: function() { - var item = mfp.currItem; - if(!item.img) return; - - if(mfp.st.image.verticalFit) { - var decr = 0; - // fix box-sizing in ie7/8 - if(mfp.isLowIE) { - decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10); - } - item.img.css('max-height', mfp.wH-decr); - } - }, - _onImageHasSize: function(item) { - if(item.img) { - - item.hasSize = true; - - if(_imgInterval) { - clearInterval(_imgInterval); - } - - item.isCheckingImgSize = false; - - _mfpTrigger('ImageHasSize', item); - - if(item.imgHidden) { - if(mfp.content) - mfp.content.removeClass('mfp-loading'); - - item.imgHidden = false; - } - - } - }, - - /** - * Function that loops until the image has size to display elements that rely on it asap - */ - findImageSize: function(item) { - - var counter = 0, - img = item.img[0], - mfpSetInterval = function(delay) { - - if(_imgInterval) { - clearInterval(_imgInterval); - } - // decelerating interval that checks for size of an image - _imgInterval = setInterval(function() { - if(img.naturalWidth > 0) { - mfp._onImageHasSize(item); - return; - } - - if(counter > 200) { - clearInterval(_imgInterval); - } - - counter++; - if(counter === 3) { - mfpSetInterval(10); - } else if(counter === 40) { - mfpSetInterval(50); - } else if(counter === 100) { - mfpSetInterval(500); - } - }, delay); - }; - - mfpSetInterval(1); - }, - - getImage: function(item, template) { - - var guard = 0, - - // image load complete handler - onLoadComplete = function() { - if(item) { - if (item.img[0].complete) { - item.img.off('.mfploader'); - - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - - mfp.updateStatus('ready'); - } - - item.hasSize = true; - item.loaded = true; - - _mfpTrigger('ImageLoadComplete'); - - } - else { - // if image complete check fails 200 times (20 sec), we assume that there was an error. - guard++; - if(guard < 200) { - setTimeout(onLoadComplete,100); - } else { - onLoadError(); - } - } - } - }, - - // image error handler - onLoadError = function() { - if(item) { - item.img.off('.mfploader'); - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } - - item.hasSize = true; - item.loaded = true; - item.loadError = true; - } - }, - imgSt = mfp.st.image; - - - var el = template.find('.mfp-img'); - if(el.length) { - var img = new Image(); - img.className = 'mfp-img'; - item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError); - img.src = item.src; - - // without clone() "error" event is not firing when IMG is replaced by new IMG - // TODO: find a way to avoid such cloning - if(el.is('img')) { - item.img = item.img.clone(); - } - if(item.img[0].naturalWidth > 0) { - item.hasSize = true; - } - } - - mfp._parseMarkup(template, { - title: _getTitle(item), - img_replaceWith: item.img - }, item); - - mfp.resizeImage(); - - if(item.hasSize) { - if(_imgInterval) clearInterval(_imgInterval); - - if(item.loadError) { - template.addClass('mfp-loading'); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } else { - template.removeClass('mfp-loading'); - mfp.updateStatus('ready'); - } - return template; - } - - mfp.updateStatus('loading'); - item.loading = true; - - if(!item.hasSize) { - item.imgHidden = true; - template.addClass('mfp-loading'); - mfp.findImageSize(item); - } - - return template; - } - } -}); - - - -/*>>image*/ - -/*>>zoom*/ -var hasMozTransform, - getHasMozTransform = function() { - if(hasMozTransform === undefined) { - hasMozTransform = document.createElement('p').style.MozTransform !== undefined; - } - return hasMozTransform; - }; - -$.magnificPopup.registerModule('zoom', { - - options: { - enabled: false, - easing: 'ease-in-out', - duration: 300, - opener: function(element) { - return element.is('img') ? element : element.find('img'); - } - }, - - proto: { - - initZoom: function() { - var zoomSt = mfp.st.zoom, - ns = '.zoom'; - - if(!zoomSt.enabled || !mfp.supportsTransition) { - return; - } - - var duration = zoomSt.duration, - getElToAnimate = function(image) { - var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'), - transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing, - cssObj = { - position: 'fixed', - zIndex: 9999, - left: 0, - top: 0, - '-webkit-backface-visibility': 'hidden' - }, - t = 'transition'; - - cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition; - - newImg.css(cssObj); - return newImg; - }, - showMainContent = function() { - mfp.content.css('visibility', 'visible'); - }, - openTimeout, - animatedImg; - - _mfpOn('BuildControls'+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - mfp.content.css('visibility', 'hidden'); - - // Basically, all code below does is clones existing image, puts in on top of the current one and animated it - - image = mfp._getItemToZoom(); - - if(!image) { - showMainContent(); - return; - } - - animatedImg = getElToAnimate(image); - - animatedImg.css( mfp._getOffset() ); - - mfp.wrap.append(animatedImg); - - openTimeout = setTimeout(function() { - animatedImg.css( mfp._getOffset( true ) ); - openTimeout = setTimeout(function() { - - showMainContent(); - - setTimeout(function() { - animatedImg.remove(); - image = animatedImg = null; - _mfpTrigger('ZoomAnimationEnded'); - }, 16); // avoid blink when switching images - - }, duration); // this timeout equals animation duration - - }, 16); // by adding this timeout we avoid short glitch at the beginning of animation - - - // Lots of timeouts... - } - }); - _mfpOn(BEFORE_CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - - mfp.st.removalDelay = duration; - - if(!image) { - image = mfp._getItemToZoom(); - if(!image) { - return; - } - animatedImg = getElToAnimate(image); - } - - - animatedImg.css( mfp._getOffset(true) ); - mfp.wrap.append(animatedImg); - mfp.content.css('visibility', 'hidden'); - - setTimeout(function() { - animatedImg.css( mfp._getOffset() ); - }, 16); - } - - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - showMainContent(); - if(animatedImg) { - animatedImg.remove(); - } - } - }); - }, - - _allowZoom: function() { - return mfp.currItem.type === 'image'; - }, - - _getItemToZoom: function() { - if(mfp.currItem.hasSize) { - return mfp.currItem.img; - } else { - return false; - } - }, - - // Get element postion relative to viewport - _getOffset: function(isLarge) { - var el; - if(isLarge) { - el = mfp.currItem.img; - } else { - el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); - } - - var offset = el.offset(); - var paddingTop = parseInt(el.css('padding-top'),10); - var paddingBottom = parseInt(el.css('padding-bottom'),10); - offset.top -= ( $(window).scrollTop() - paddingTop ); - - - /* - - Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. - - */ - var obj = { - width: el.width(), - // fix Zepto height+padding issue - height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop - }; - - // I hate to do this, but there is no another option - if( getHasMozTransform() ) { - obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)'; - } else { - obj.left = offset.left; - obj.top = offset.top; - } - return obj; - } - - } -}); - - - -/*>>zoom*/ - -/*>>iframe*/ - -var IFRAME_NS = 'iframe', - _emptyPage = '//about:blank', - - _fixIframeBugs = function(isShowing) { - if(mfp.currTemplate[IFRAME_NS]) { - var el = mfp.currTemplate[IFRAME_NS].find('iframe'); - if(el.length) { - // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug - if(!isShowing) { - el[0].src = _emptyPage; - } - - // IE8 black screen bug fix - if(mfp.isIE8) { - el.css('display', isShowing ? 'block' : 'none'); - } - } - } - }; - -$.magnificPopup.registerModule(IFRAME_NS, { - - options: { - markup: '
    '+ - '
    '+ - ''+ - '
    ', - - srcAction: 'iframe_src', - - // we don't care and support only one default type of URL by default - patterns: { - youtube: { - index: 'youtube.com', - id: 'v=', - src: '//www.youtube.com/embed/%id%?autoplay=1' - }, - vimeo: { - index: 'vimeo.com/', - id: '/', - src: '//player.vimeo.com/video/%id%?autoplay=1' - }, - gmaps: { - index: '//maps.google.', - src: '%id%&output=embed' - } - } - }, - - proto: { - initIframe: function() { - mfp.types.push(IFRAME_NS); - - _mfpOn('BeforeChange', function(e, prevType, newType) { - if(prevType !== newType) { - if(prevType === IFRAME_NS) { - _fixIframeBugs(); // iframe if removed - } else if(newType === IFRAME_NS) { - _fixIframeBugs(true); // iframe is showing - } - }// else { - // iframe source is switched, don't do anything - //} - }); - - _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() { - _fixIframeBugs(); - }); - }, - - getIframe: function(item, template) { - var embedSrc = item.src; - var iframeSt = mfp.st.iframe; - - $.each(iframeSt.patterns, function() { - if(embedSrc.indexOf( this.index ) > -1) { - if(this.id) { - if(typeof this.id === 'string') { - embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length); - } else { - embedSrc = this.id.call( this, embedSrc ); - } - } - embedSrc = this.src.replace('%id%', embedSrc ); - return false; // break; - } - }); - - var dataObj = {}; - if(iframeSt.srcAction) { - dataObj[iframeSt.srcAction] = embedSrc; - } - mfp._parseMarkup(template, dataObj, item); - - mfp.updateStatus('ready'); - - return template; - } - } -}); - - - -/*>>iframe*/ - -/*>>gallery*/ -/** - * Get looped index depending on number of slides - */ -var _getLoopedId = function(index) { - var numSlides = mfp.items.length; - if(index > numSlides - 1) { - return index - numSlides; - } else if(index < 0) { - return numSlides + index; - } - return index; - }, - _replaceCurrTotal = function(text, curr, total) { - return text.replace('%curr%', curr + 1).replace('%total%', total); - }; - -$.magnificPopup.registerModule('gallery', { - - options: { - enabled: false, - arrowMarkup: '', - preload: [0,2], - navigateByImgClick: true, - arrows: true, - - tPrev: 'Previous (Left arrow key)', - tNext: 'Next (Right arrow key)', - tCounter: '%curr% of %total%' - }, - - proto: { - initGallery: function() { - - var gSt = mfp.st.gallery, - ns = '.mfp-gallery', - supportsFastClick = Boolean($.fn.mfpFastClick); - - mfp.direction = true; // true - next, false - prev - - if(!gSt || !gSt.enabled ) return false; - - _wrapClasses += ' mfp-gallery'; - - _mfpOn(OPEN_EVENT+ns, function() { - - if(gSt.navigateByImgClick) { - mfp.wrap.on('click'+ns, '.mfp-img', function() { - if(mfp.items.length > 1) { - mfp.next(); - return false; - } - }); - } - - _document.on('keydown'+ns, function(e) { - if (e.keyCode === 37) { - mfp.prev(); - } else if (e.keyCode === 39) { - mfp.next(); - } - }); - }); - - _mfpOn('UpdateStatus'+ns, function(e, data) { - if(data.text) { - data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); - } - }); - - _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) { - var l = mfp.items.length; - values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ''; - }); - - _mfpOn('BuildControls' + ns, function() { - if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { - var markup = gSt.arrowMarkup, - arrowLeft = mfp.arrowLeft = $( markup.replace('%title%', gSt.tPrev).replace('%dir%', 'left') ).addClass(PREVENT_CLOSE_CLASS), - arrowRight = mfp.arrowRight = $( markup.replace('%title%', gSt.tNext).replace('%dir%', 'right') ).addClass(PREVENT_CLOSE_CLASS); - - var eName = supportsFastClick ? 'mfpFastClick' : 'click'; - arrowLeft[eName](function() { - mfp.prev(); - }); - arrowRight[eName](function() { - mfp.next(); - }); - - // Polyfill for :before and :after (adds elements with classes mfp-a and mfp-b) - if(mfp.isIE7) { - _getEl('b', arrowLeft[0], false, true); - _getEl('a', arrowLeft[0], false, true); - _getEl('b', arrowRight[0], false, true); - _getEl('a', arrowRight[0], false, true); - } - - mfp.container.append(arrowLeft.add(arrowRight)); - } - }); - - _mfpOn(CHANGE_EVENT+ns, function() { - if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); - - mfp._preloadTimeout = setTimeout(function() { - mfp.preloadNearbyImages(); - mfp._preloadTimeout = null; - }, 16); - }); - - - _mfpOn(CLOSE_EVENT+ns, function() { - _document.off(ns); - mfp.wrap.off('click'+ns); - - if(mfp.arrowLeft && supportsFastClick) { - mfp.arrowLeft.add(mfp.arrowRight).destroyMfpFastClick(); - } - mfp.arrowRight = mfp.arrowLeft = null; - }); - - }, - next: function() { - mfp.direction = true; - mfp.index = _getLoopedId(mfp.index + 1); - mfp.updateItemHTML(); - }, - prev: function() { - mfp.direction = false; - mfp.index = _getLoopedId(mfp.index - 1); - mfp.updateItemHTML(); - }, - goTo: function(newIndex) { - mfp.direction = (newIndex >= mfp.index); - mfp.index = newIndex; - mfp.updateItemHTML(); - }, - preloadNearbyImages: function() { - var p = mfp.st.gallery.preload, - preloadBefore = Math.min(p[0], mfp.items.length), - preloadAfter = Math.min(p[1], mfp.items.length), - i; - - for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { - mfp._preloadItem(mfp.index+i); - } - for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { - mfp._preloadItem(mfp.index-i); - } - }, - _preloadItem: function(index) { - index = _getLoopedId(index); - - if(mfp.items[index].preloaded) { - return; - } - - var item = mfp.items[index]; - if(!item.parsed) { - item = mfp.parseEl( index ); - } - - _mfpTrigger('LazyLoad', item); - - if(item.type === 'image') { - item.img = $('').on('load.mfploader', function() { - item.hasSize = true; - }).on('error.mfploader', function() { - item.hasSize = true; - item.loadError = true; - _mfpTrigger('LazyLoadError', item); - }).attr('src', item.src); - } - - - item.preloaded = true; - } - } -}); - -/* -Touch Support that might be implemented some day - -addSwipeGesture: function() { - var startX, - moved, - multipleTouches; - - return; - - var namespace = '.mfp', - addEventNames = function(pref, down, move, up, cancel) { - mfp._tStart = pref + down + namespace; - mfp._tMove = pref + move + namespace; - mfp._tEnd = pref + up + namespace; - mfp._tCancel = pref + cancel + namespace; - }; - - if(window.navigator.msPointerEnabled) { - addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel'); - } else if('ontouchstart' in window) { - addEventNames('touch', 'start', 'move', 'end', 'cancel'); - } else { - return; - } - _window.on(mfp._tStart, function(e) { - var oE = e.originalEvent; - multipleTouches = moved = false; - startX = oE.pageX || oE.changedTouches[0].pageX; - }).on(mfp._tMove, function(e) { - if(e.originalEvent.touches.length > 1) { - multipleTouches = e.originalEvent.touches.length; - } else { - //e.preventDefault(); - moved = true; - } - }).on(mfp._tEnd + ' ' + mfp._tCancel, function(e) { - if(moved && !multipleTouches) { - var oE = e.originalEvent, - diff = startX - (oE.pageX || oE.changedTouches[0].pageX); - - if(diff > 20) { - mfp.next(); - } else if(diff < -20) { - mfp.prev(); - } - } - }); -}, -*/ - - -/*>>gallery*/ - -/*>>retina*/ - -var RETINA_NS = 'retina'; - -$.magnificPopup.registerModule(RETINA_NS, { - options: { - replaceSrc: function(item) { - return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; }); - }, - ratio: 1 // Function or number. Set to 1 to disable. - }, - proto: { - initRetina: function() { - if(window.devicePixelRatio > 1) { - - var st = mfp.st.retina, - ratio = st.ratio; - - ratio = !isNaN(ratio) ? ratio : ratio(); - - if(ratio > 1) { - _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) { - item.img.css({ - 'max-width': item.img[0].naturalWidth / ratio, - 'width': '100%' - }); - }); - _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) { - item.src = st.replaceSrc(item, ratio); - }); - } - } - - } - } -}); - -/*>>retina*/ - -/*>>fastclick*/ -/** - * FastClick event implementation. (removes 300ms delay on touch devices) - * Based on https://developers.google.com/mobile/articles/fast_buttons - * - * You may use it outside the Magnific Popup by calling just: - * - * $('.your-el').mfpFastClick(function() { - * console.log('Clicked!'); - * }); - * - * To unbind: - * $('.your-el').destroyMfpFastClick(); - * - * - * Note that it's a very basic and simple implementation, it blocks ghost click on the same element where it was bound. - * If you need something more advanced, use plugin by FT Labs https://github.com/ftlabs/fastclick - * - */ - -(function() { - var ghostClickDelay = 1000, - supportsTouch = 'ontouchstart' in window, - unbindTouchMove = function() { - _window.off('touchmove'+ns+' touchend'+ns); - }, - eName = 'mfpFastClick', - ns = '.'+eName; - - - // As Zepto.js doesn't have an easy way to add custom events (like jQuery), so we implement it in this way - $.fn.mfpFastClick = function(callback) { - - return $(this).each(function() { - - var elem = $(this), - lock; - - if( supportsTouch ) { - - var timeout, - startX, - startY, - pointerMoved, - point, - numPointers; - - elem.on('touchstart' + ns, function(e) { - pointerMoved = false; - numPointers = 1; - - point = e.originalEvent ? e.originalEvent.touches[0] : e.touches[0]; - startX = point.clientX; - startY = point.clientY; - - _window.on('touchmove'+ns, function(e) { - point = e.originalEvent ? e.originalEvent.touches : e.touches; - numPointers = point.length; - point = point[0]; - if (Math.abs(point.clientX - startX) > 10 || - Math.abs(point.clientY - startY) > 10) { - pointerMoved = true; - unbindTouchMove(); - } - }).on('touchend'+ns, function(e) { - unbindTouchMove(); - if(pointerMoved || numPointers > 1) { - return; - } - lock = true; - e.preventDefault(); - clearTimeout(timeout); - timeout = setTimeout(function() { - lock = false; - }, ghostClickDelay); - callback(); - }); - }); - - } - - elem.on('click' + ns, function() { - if(!lock) { - callback(); - } - }); - }); - }; - - $.fn.destroyMfpFastClick = function() { - $(this).off('touchstart' + ns + ' click' + ns); - if(supportsTouch) _window.off('touchmove'+ns+' touchend'+ns); - }; -})(); - -/*>>fastclick*/ -})(window.jQuery || window.Zepto); \ No newline at end of file diff --git a/assets/js/plugins/respond.js b/assets/js/plugins/respond.js deleted file mode 100644 index 0297d6c19e..0000000000 --- a/assets/js/plugins/respond.js +++ /dev/null @@ -1,342 +0,0 @@ -/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ - -window.matchMedia = window.matchMedia || (function( doc, undefined ) { - - "use strict"; - - var bool, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for - fakeBody = doc.createElement( "body" ), - div = doc.createElement( "div" ); - - div.id = "mq-test-1"; - div.style.cssText = "position:absolute;top:-100em"; - fakeBody.style.background = "none"; - fakeBody.appendChild(div); - - return function(q){ - - div.innerHTML = "­"; - - docElem.insertBefore( fakeBody, refNode ); - bool = div.offsetWidth === 42; - docElem.removeChild( fakeBody ); - - return { - matches: bool, - media: q - }; - - }; - -}( document )); - - - - - -/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ -(function( win ){ - - "use strict"; - - //exposed namespace - var respond = {}; - win.respond = respond; - - //define update even in native-mq-supporting browsers, to avoid errors - respond.update = function(){}; - - //expose media query support flag for external use - respond.mediaQueriesSupported = win.matchMedia && win.matchMedia( "only all" ).matches; - - //if media queries are supported, exit here - if( respond.mediaQueriesSupported ){ - return; - } - - //define vars - var doc = win.document, - docElem = doc.documentElement, - mediastyles = [], - rules = [], - appendedEls = [], - parsedSheets = {}, - resizeThrottle = 30, - head = doc.getElementsByTagName( "head" )[0] || docElem, - base = doc.getElementsByTagName( "base" )[0], - links = head.getElementsByTagName( "link" ), - requestQueue = [], - - //loop stylesheets, send text content to translate - ripCSS = function(){ - - for( var i = 0; i < links.length; i++ ){ - var sheet = links[ i ], - href = sheet.href, - media = sheet.media, - isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet"; - - //only links plz and prevent re-parsing - if( !!href && isCSS && !parsedSheets[ href ] ){ - // selectivizr exposes css through the rawCssText expando - if (sheet.styleSheet && sheet.styleSheet.rawCssText) { - translate( sheet.styleSheet.rawCssText, href, media ); - parsedSheets[ href ] = true; - } else { - if( (!/^([a-zA-Z:]*\/\/)/.test( href ) && !base) || - href.replace( RegExp.$1, "" ).split( "/" )[0] === win.location.host ){ - requestQueue.push( { - href: href, - media: media - } ); - } - } - } - } - makeRequests(); - }, - - //recurse through request queue, get css text - makeRequests = function(){ - if( requestQueue.length ){ - var thisRequest = requestQueue.shift(); - - ajax( thisRequest.href, function( styles ){ - translate( styles, thisRequest.href, thisRequest.media ); - parsedSheets[ thisRequest.href ] = true; - - // by wrapping recursive function call in setTimeout - // we prevent "Stack overflow" error in IE7 - win.setTimeout(function(){ makeRequests(); },0); - } ); - } - }, - - //find media blocks in css text, convert to style blocks - translate = function( styles, href, media ){ - var qs = styles.match( /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi ), - ql = qs && qs.length || 0; - - //try to get CSS path - href = href.substring( 0, href.lastIndexOf( "/" ) ); - - var repUrls = function( css ){ - return css.replace( /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g, "$1" + href + "$2$3" ); - }, - useMedia = !ql && media; - - //if path exists, tack on trailing slash - if( href.length ){ href += "/"; } - - //if no internal queries exist, but media attr does, use that - //note: this currently lacks support for situations where a media attr is specified on a link AND - //its associated stylesheet has internal CSS media queries. - //In those cases, the media attribute will currently be ignored. - if( useMedia ){ - ql = 1; - } - - for( var i = 0; i < ql; i++ ){ - var fullq, thisq, eachq, eql; - - //media attr - if( useMedia ){ - fullq = media; - rules.push( repUrls( styles ) ); - } - //parse for styles - else{ - fullq = qs[ i ].match( /@media *([^\{]+)\{([\S\s]+?)$/ ) && RegExp.$1; - rules.push( RegExp.$2 && repUrls( RegExp.$2 ) ); - } - - eachq = fullq.split( "," ); - eql = eachq.length; - - for( var j = 0; j < eql; j++ ){ - thisq = eachq[ j ]; - mediastyles.push( { - media : thisq.split( "(" )[ 0 ].match( /(only\s+)?([a-zA-Z]+)\s?/ ) && RegExp.$2 || "all", - rules : rules.length - 1, - hasquery : thisq.indexOf("(") > -1, - minw : thisq.match( /\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ), - maxw : thisq.match( /\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/ ) && parseFloat( RegExp.$1 ) + ( RegExp.$2 || "" ) - } ); - } - } - - applyMedia(); - }, - - lastCall, - - resizeDefer, - - // returns the value of 1em in pixels - getEmValue = function() { - var ret, - div = doc.createElement('div'), - body = doc.body, - fakeUsed = false; - - div.style.cssText = "position:absolute;font-size:1em;width:1em"; - - if( !body ){ - body = fakeUsed = doc.createElement( "body" ); - body.style.background = "none"; - } - - body.appendChild( div ); - - docElem.insertBefore( body, docElem.firstChild ); - - ret = div.offsetWidth; - - if( fakeUsed ){ - docElem.removeChild( body ); - } - else { - body.removeChild( div ); - } - - //also update eminpx before returning - ret = eminpx = parseFloat(ret); - - return ret; - }, - - //cached container for 1em value, populated the first time it's needed - eminpx, - - //enable/disable styles - applyMedia = function( fromResize ){ - var name = "clientWidth", - docElemProp = docElem[ name ], - currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[ name ] || docElemProp, - styleBlocks = {}, - lastLink = links[ links.length-1 ], - now = (new Date()).getTime(); - - //throttle resize calls - if( fromResize && lastCall && now - lastCall < resizeThrottle ){ - win.clearTimeout( resizeDefer ); - resizeDefer = win.setTimeout( applyMedia, resizeThrottle ); - return; - } - else { - lastCall = now; - } - - for( var i in mediastyles ){ - if( mediastyles.hasOwnProperty( i ) ){ - var thisstyle = mediastyles[ i ], - min = thisstyle.minw, - max = thisstyle.maxw, - minnull = min === null, - maxnull = max === null, - em = "em"; - - if( !!min ){ - min = parseFloat( min ) * ( min.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); - } - if( !!max ){ - max = parseFloat( max ) * ( max.indexOf( em ) > -1 ? ( eminpx || getEmValue() ) : 1 ); - } - - // if there's no media query at all (the () part), or min or max is not null, and if either is present, they're true - if( !thisstyle.hasquery || ( !minnull || !maxnull ) && ( minnull || currWidth >= min ) && ( maxnull || currWidth <= max ) ){ - if( !styleBlocks[ thisstyle.media ] ){ - styleBlocks[ thisstyle.media ] = []; - } - styleBlocks[ thisstyle.media ].push( rules[ thisstyle.rules ] ); - } - } - } - - //remove any existing respond style element(s) - for( var j in appendedEls ){ - if( appendedEls.hasOwnProperty( j ) ){ - if( appendedEls[ j ] && appendedEls[ j ].parentNode === head ){ - head.removeChild( appendedEls[ j ] ); - } - } - } - - //inject active styles, grouped by media type - for( var k in styleBlocks ){ - if( styleBlocks.hasOwnProperty( k ) ){ - var ss = doc.createElement( "style" ), - css = styleBlocks[ k ].join( "\n" ); - - ss.type = "text/css"; - ss.media = k; - - //originally, ss was appended to a documentFragment and sheets were appended in bulk. - //this caused crashes in IE in a number of circumstances, such as when the HTML element had a bg image set, so appending beforehand seems best. Thanks to @dvelyk for the initial research on this one! - head.insertBefore( ss, lastLink.nextSibling ); - - if ( ss.styleSheet ){ - ss.styleSheet.cssText = css; - } - else { - ss.appendChild( doc.createTextNode( css ) ); - } - - //push to appendedEls to track for later removal - appendedEls.push( ss ); - } - } - }, - //tweaked Ajax functions from Quirksmode - ajax = function( url, callback ) { - var req = xmlHttp(); - if (!req){ - return; - } - req.open( "GET", url, true ); - req.onreadystatechange = function () { - if ( req.readyState !== 4 || req.status !== 200 && req.status !== 304 ){ - return; - } - callback( req.responseText ); - }; - if ( req.readyState === 4 ){ - return; - } - req.send( null ); - }, - //define ajax obj - xmlHttp = (function() { - var xmlhttpmethod = false; - try { - xmlhttpmethod = new win.XMLHttpRequest(); - } - catch( e ){ - xmlhttpmethod = new win.ActiveXObject( "Microsoft.XMLHTTP" ); - } - return function(){ - return xmlhttpmethod; - }; - })(); - - //translate CSS - ripCSS(); - - //expose update for re-running respond later on - respond.update = ripCSS; - - //adjust on resize - function callMedia(){ - applyMedia( true ); - } - if( win.addEventListener ){ - win.addEventListener( "resize", callMedia, false ); - } - else if( win.attachEvent ){ - win.attachEvent( "onresize", callMedia ); - } -})(this); \ No newline at end of file diff --git a/assets/js/scripts.min.js b/assets/js/scripts.min.js deleted file mode 100644 index 149d1a759c..0000000000 --- a/assets/js/scripts.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(a,b){"use strict";var c=b.Modernizr,d=a("body");a.DLMenu=function(b,c){this.$el=a(c),this._init(b)},a.DLMenu.defaults={animationClasses:{classin:"dl-animate-in-1",classout:"dl-animate-out-1"},onLevelClick:function(){return!1},onLinkClick:function(){return!1}},a.DLMenu.prototype={_init:function(b){this.options=a.extend(!0,{},a.DLMenu.defaults,b),this._config();var d={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd",animation:"animationend"},e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"};this.animEndEventName=d[c.prefixed("animation")]+".dlmenu",this.transEndEventName=e[c.prefixed("transition")]+".dlmenu",this.supportAnimations=c.cssanimations,this.supportTransitions=c.csstransitions,this._initEvents()},_config:function(){this.open=!1,this.$menuwrapper=a("#dl-menu"),this.$trigger=this.$el.children(".dl-trigger"),this.$menu=this.$el.children("ul.dl-menu"),this.$menuitems=this.$menu.find("li:not(.dl-back)"),this.$el.find("ul.dl-submenu").prepend('
  • back
  • '),this.$back=this.$menu.find("li.dl-back")},_initEvents:function(){var b=this;this.$trigger.on("click.dlmenu",function(){return b.open?b._closeMenu():b._openMenu(),!1}),this.$menuitems.on("click.dlmenu",function(c){c.stopPropagation();var d=a(this),e=d.children("ul.dl-submenu");if(e.length>0){var f=e.clone().css({opacity:0,margin:0}).insertAfter(b.$menu),g=function(){b.$menu.off(b.animEndEventName).removeClass(b.options.animationClasses.classout).addClass("dl-subview"),d.addClass("dl-subviewopen").parents(".dl-subviewopen:first").removeClass("dl-subviewopen").addClass("dl-subview"),f.remove()};return setTimeout(function(){f.addClass(b.options.animationClasses.classin),b.$menu.addClass(b.options.animationClasses.classout),b.supportAnimations?b.$menu.on(b.animEndEventName,g):g.call(),b.options.onLevelClick(d,d.children("a:first").text())}),!1}b.options.onLinkClick(d,c)}),this.$back.on("click.dlmenu",function(){var c=a(this),d=c.parents("ul.dl-submenu:first"),e=d.parent(),f=d.clone().insertAfter(b.$menu),g=function(){b.$menu.off(b.animEndEventName).removeClass(b.options.animationClasses.classin),f.remove()};return setTimeout(function(){f.addClass(b.options.animationClasses.classout),b.$menu.addClass(b.options.animationClasses.classin),b.supportAnimations?b.$menu.on(b.animEndEventName,g):g.call(),e.removeClass("dl-subviewopen");var a=c.parents(".dl-subview:first");a.is("li")&&a.addClass("dl-subviewopen"),a.removeClass("dl-subview")}),!1})},closeMenu:function(){this.open&&this._closeMenu()},_closeMenu:function(){var a=this,b=function(){a.$menu.off(a.transEndEventName),a._resetMenu()};this.$menuwrapper.removeClass("dl-menuopen"),this.$menu.removeClass("dl-menuopen"),this.$menu.addClass("dl-menu-toggle"),this.$trigger.removeClass("dl-active"),this.supportTransitions?this.$menu.on(this.transEndEventName,b):b.call(),this.open=!1},openMenu:function(){this.open||this._openMenu()},_openMenu:function(){var b=this;d.off("click").on("click.dlmenu",function(){b._closeMenu()}),this.$menuwrapper.addClass("dl-menuopen"),this.$menu.addClass("dl-menuopen dl-menu-toggle").on(this.transEndEventName,function(){a(this).removeClass("dl-menu-toggle")}),this.$trigger.addClass("dl-active"),this.open=!0},_resetMenu:function(){this.$menu.removeClass("dl-subview"),this.$menuitems.removeClass("dl-subview dl-subviewopen")}};var e=function(a){b.console&&b.console.error(a)};a.fn.dlmenu=function(b){if("string"==typeof b){var c=Array.prototype.slice.call(arguments,1);this.each(function(){var d=a.data(this,"dlmenu");return d?a.isFunction(d[b])&&"_"!==b.charAt(0)?(d[b].apply(d,c),void 0):(e("no such method '"+b+"' for dlmenu instance"),void 0):(e("cannot call methods on dlmenu prior to initialization; attempted to call method '"+b+"'"),void 0)})}else this.each(function(){var c=a.data(this,"dlmenu");c?c._init():c=a.data(this,"dlmenu",new a.DLMenu(b,this))});return this}}(jQuery,window),function(a){"use strict";a.fn.fitVids=function(b){var c={customSelector:null},d=document.createElement("div"),e=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0];return d.className="fit-vids-style",d.innerHTML="­",e.parentNode.insertBefore(d,e),b&&a.extend(c,b),this.each(function(){var b=["iframe[src*='player.vimeo.com']","iframe[src*='www.youtube.com']","iframe[src*='www.youtube-nocookie.com']","iframe[src*='www.kickstarter.com']","object","embed"];c.customSelector&&b.push(c.customSelector);var d=a(this).find(b.join(","));d.each(function(){var b=a(this);if(!("embed"===this.tagName.toLowerCase()&&b.parent("object").length||b.parent(".fluid-width-video-wrapper").length)){var c="object"===this.tagName.toLowerCase()||b.attr("height")&&!isNaN(parseInt(b.attr("height"),10))?parseInt(b.attr("height"),10):b.height(),d=isNaN(parseInt(b.attr("width"),10))?b.width():parseInt(b.attr("width"),10),e=c/d;if(!b.attr("id")){var f="fitvid"+Math.floor(999999*Math.random());b.attr("id",f)}b.wrap('
    ').parent(".fluid-width-video-wrapper").css("padding-top",100*e+"%"),b.removeAttr("height").removeAttr("width")}})})}}(jQuery),function(a){var b,c,d,e,f,g,h,i="Close",j="BeforeClose",k="AfterClose",l="BeforeAppend",m="MarkupParse",n="Open",o="Change",p="mfp",q="."+p,r="mfp-ready",s="mfp-removing",t="mfp-prevent-close",u=function(){},v=!!window.jQuery,w=a(window),x=function(a,c){b.ev.on(p+a+q,c)},y=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},z=function(c,d){b.ev.triggerHandler(p+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},A=function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).trigger("focus")},B=function(c){return c===h&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),h=c),b.currTemplate.closeBtn},C=function(){a.magnificPopup.instance||(b=new u,b.init(),a.magnificPopup.instance=b)},D=function(c){if(!a(c).hasClass(t)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},E=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};u.prototype={constructor:u,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=E(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document.body),e=a(document),b.popupsCache={}},open:function(c){var d;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var f,h=c.items;for(d=0;d(a||w.height())},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),z(m,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(q+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith(''):d.attr(e[1],c)}}else b.find(q+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.id="mfp-sbm",a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:u.prototype,modules:[],open:function(a,b){return C(),a||(a={}),a.isObj=!0,a.index=b||0,this.instance.open(a)},close:function(){return a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading..."}},a.fn.magnificPopup=function(c){C();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=v?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else v?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var F,G,H,I="inline",J=function(){H&&(G.after(H.addClass(F)).detach(),H=null)};a.magnificPopup.registerModule(I,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(I),x(i+"."+I,function(){J()})},getInline:function(c,d){if(J(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(G||(F=e.hiddenClass,G=y(F),F="mfp-"+F),H=f.after(G).detach().removeClass(F)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
    ");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var K,L="ajax",M=function(){K&&d.removeClass(K)};a.magnificPopup.registerModule(L,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(L),K=b.st.ajax.cursor,x(i+"."+L,function(){M(),b.req&&b.req.abort()})},getAjax:function(c){K&&d.addClass(K),b.updateStatus("loading");var e=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};z("ParseAjax",g),b.appendContent(a(g.data),L),c.finished=!0,M(),A(),setTimeout(function(){b.wrap.addClass(r)},16),b.updateStatus("ready"),z("AjaxContentAdded")},error:function(){M(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(e),""}}});var N,O=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
    ',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var a=b.st.image,c=".image";b.types.push("image"),x(n+c,function(){"image"===b.currItem.type&&a.cursor&&d.addClass(a.cursor)}),x(i+c,function(){a.cursor&&d.removeClass(a.cursor),w.off("resize"+q)}),x("Resize"+c,b.resizeImage),b.isLowIE&&x("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,N&&clearInterval(N),a.isCheckingImgSize=!1,z("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){N&&clearInterval(N),N=setInterval(function(){return d.naturalWidth>0?(b._onImageHasSize(a),void 0):(c>200&&clearInterval(N),c++,3===c?e(10):40===c?e(50):100===c&&e(500),void 0)},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,z("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=new Image;j.className="mfp-img",c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),c.img[0].naturalWidth>0&&(c.hasSize=!0)}return b._parseMarkup(d,{title:O(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(N&&clearInterval(N),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var P,Q=function(){return void 0===P&&(P=void 0!==document.createElement("p").style.MozTransform),P};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a=b.st.zoom,c=".zoom";if(a.enabled&&b.supportsTransition){var d,e,f=a.duration,g=function(b){var c=b.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+a.duration/1e3+"s "+a.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,c.css(e),c},h=function(){b.content.css("visibility","visible")};x("BuildControls"+c,function(){if(b._allowZoom()){if(clearTimeout(d),b.content.css("visibility","hidden"),image=b._getItemToZoom(),!image)return h(),void 0;e=g(image),e.css(b._getOffset()),b.wrap.append(e),d=setTimeout(function(){e.css(b._getOffset(!0)),d=setTimeout(function(){h(),setTimeout(function(){e.remove(),image=e=null,z("ZoomAnimationEnded")},16)},f)},16)}}),x(j+c,function(){if(b._allowZoom()){if(clearTimeout(d),b.st.removalDelay=f,!image){if(image=b._getItemToZoom(),!image)return;e=g(image)}e.css(b._getOffset(!0)),b.wrap.append(e),b.content.css("visibility","hidden"),setTimeout(function(){e.css(b._getOffset())},16)}}),x(i+c,function(){b._allowZoom()&&(h(),e&&e.remove())})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(v?d.innerHeight():d[0].offsetHeight)-g-f};return Q()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var R="iframe",S="//about:blank",T=function(a){if(b.currTemplate[R]){var c=b.currTemplate[R].find("iframe");c.length&&(a||(c[0].src=S),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(R,{options:{markup:'
    ',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(R),x("BeforeChange",function(a,b,c){b!==c&&(b===R?T():c===R&&T(!0))}),x(i+"."+R,function(){T()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var U=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},V=function(a,b,c){return a.replace("%curr%",b+1).replace("%total%",c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,d=".mfp-gallery",f=Boolean(a.fn.mfpFastClick);return b.direction=!0,c&&c.enabled?(g+=" mfp-gallery",x(n+d,function(){c.navigateByImgClick&&b.wrap.on("click"+d,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),e.on("keydown"+d,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),x("UpdateStatus"+d,function(a,c){c.text&&(c.text=V(c.text,b.currItem.index,b.items.length))}),x(m+d,function(a,d,e,f){var g=b.items.length;e.counter=g>1?V(c.tCounter,f.index,g):""}),x("BuildControls"+d,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace("%title%",c.tPrev).replace("%dir%","left")).addClass(t),g=b.arrowRight=a(d.replace("%title%",c.tNext).replace("%dir%","right")).addClass(t),h=f?"mfpFastClick":"click";e[h](function(){b.prev()}),g[h](function(){b.next()}),b.isIE7&&(y("b",e[0],!1,!0),y("a",e[0],!1,!0),y("b",g[0],!1,!0),y("a",g[0],!1,!0)),b.container.append(e.add(g))}}),x(o+d,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),x(i+d,function(){e.off(d),b.wrap.off("click"+d),b.arrowLeft&&f&&b.arrowLeft.add(b.arrowRight).destroyMfpFastClick(),b.arrowRight=b.arrowLeft=null}),void 0):!1},next:function(){b.direction=!0,b.index=U(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=U(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=U(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),z("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,z("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var W="retina";a.magnificPopup.registerModule(W,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(x("ImageHasSize."+W,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),x("ElementParse."+W,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),function(){var b=1e3,c="ontouchstart"in window,d=function(){w.off("touchmove"+f+" touchend"+f)},e="mfpFastClick",f="."+e;a.fn.mfpFastClick=function(e){return a(this).each(function(){var g,h=a(this);if(c){var i,j,k,l,m,n;h.on("touchstart"+f,function(a){l=!1,n=1,m=a.originalEvent?a.originalEvent.touches[0]:a.touches[0],j=m.clientX,k=m.clientY,w.on("touchmove"+f,function(a){m=a.originalEvent?a.originalEvent.touches:a.touches,n=m.length,m=m[0],(Math.abs(m.clientX-j)>10||Math.abs(m.clientY-k)>10)&&(l=!0,d())}).on("touchend"+f,function(a){d(),l||n>1||(g=!0,a.preventDefault(),clearTimeout(i),i=setTimeout(function(){g=!1},b),e())})})}h.on("click"+f,function(){g||e()})})},a.fn.destroyMfpFastClick=function(){a(this).off("touchstart"+f+" click"+f),c&&w.off("touchmove"+f+" touchend"+f)}}()}(window.jQuery||window.Zepto),window.matchMedia=window.matchMedia||function(a){"use strict";var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(document),function(a){"use strict";function b(){v(!0)}var c={};if(a.respond=c,c.update=function(){},c.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var d,e,f,g=a.document,h=g.documentElement,i=[],j=[],k=[],l={},m=30,n=g.getElementsByTagName("head")[0]||h,o=g.getElementsByTagName("base")[0],p=n.getElementsByTagName("link"),q=[],r=function(){for(var b=0;bh;h++){var k,l,m,n;g?(k=c,j.push(f(a))):(k=d[h].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,j.push(RegExp.$2&&f(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],i.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:j.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},u=function(){var a,b=g.createElement("div"),c=g.body,d=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=d=g.createElement("body"),c.style.background="none"),c.appendChild(b),h.insertBefore(c,h.firstChild),a=b.offsetWidth,d?h.removeChild(c):c.removeChild(b),a=f=parseFloat(a)},v=function(b){var c="clientWidth",l=h[c],o="CSS1Compat"===g.compatMode&&l||g.body[c]||l,q={},r=p[p.length-1],s=(new Date).getTime();if(b&&d&&m>s-d)return a.clearTimeout(e),e=a.setTimeout(v,m),void 0;d=s;for(var t in i)if(i.hasOwnProperty(t)){var w=i[t],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?f||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?f||u():1)),w.hasquery&&(z&&A||!(z||o>=x)||!(A||y>=o))||(q[w.media]||(q[w.media]=[]),q[w.media].push(j[w.rules]))}for(var C in k)k.hasOwnProperty(C)&&k[C]&&k[C].parentNode===n&&n.removeChild(k[C]);for(var D in q)if(q.hasOwnProperty(D)){var E=g.createElement("style"),F=q[D].join("\n");E.type="text/css",E.media=D,n.insertBefore(E,r.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(g.createTextNode(F)),k.push(E)}},w=function(a,b){var c=x();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},x=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();r(),c.update=r,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this),$(function(){$("#dl-menu").dlmenu({animationClasses:{classin:"dl-animate-in",classout:"dl-animate-out"}})}),$(function(){$("article").fitVids()}),$(".close-menu").click(function(){$(".menu").toggleClass("disabled"),$(".links").toggleClass("enabled")}),$(".about").click(function(){$("#about").css("display","block")}),$(".close-about").click(function(){$("#about").css("display","")}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"),$(document).ready(function(){$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'Image #%curr% could not be loaded.'},removalDelay:300,mainClass:"mfp-fade"})}); \ No newline at end of file diff --git a/assets/js/vendor/jquery-1.9.1.min.js b/assets/js/vendor/jquery-1.9.1.min.js deleted file mode 100644 index 006e953102..0000000000 --- a/assets/js/vendor/jquery-1.9.1.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery.min.map -*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.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]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,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 b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; -return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
    ",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?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)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.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+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===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]||st.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]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(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){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},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,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.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"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) -}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("

    你也可以在 在 Scrimba 上尝试 AMS入门Demo>>

    ams-about

    项目信息

    开源项目地址:https://github.com/vipshop/ams

    开源项目作者:唯品会团队

    官方文档地址:https://vipshop.github.io/ams/

    ]]> + + + + <p>今天给大家分享一个开源项目——AMS,一个由唯品会开源的,基于类json配置的管理后台前端解决方案。</p> +<p><img src="https://h5rsc.vipstatic.com/ams/ams-logo.png" alt="logo"></p> + + + + + + + + + + + + + + + + + + 5G,对前端有什么影响 + + http://w3cmark.com/2019/07/19/5G-impact-on-the-front-end/ + 2019-07-19T08:25:26.000Z + 2024-10-09T11:43:02.238Z + + 5g-01

    最近在小组做了一次小分享,主题是【5G来袭,我们有何机遇】,有这个想法是源于在社区看到有人面试被问到这个问题。因为2019年5G一直都是热门话题,而小组刚好有次分享机会,所以自己花了点时间做资料收集和整合,看看5G对未来前端的领域有哪些影响。本文主要还是以聊聊看法为主。

    可能有人一看这个标题或者选题,就会冒出想法:一看就是蹭热点的啦,5G真正到民用哪有那么快或者前端只是个写UI的页面仔,能有多大影响…马上关闭页面走人!

    且慢!没错,5G到真正普及可能还有到明年甚至后年。但是我想在这里传达的是:我相信意识会潜移默化的影响你的行动。有些东西看似遥远,但是你日常有意识的多留意、多思考一下,总会比你真正发生变革时才突然觉悟(原来5G真的已经来来、原来5G真的颠覆大家对前端这个认识,巴拉巴拉…)要更有优势。

    移动通信的发展

    先来简单介绍一下基础硬件的移动通信历代发展。

    1G

    1g

    从上图可以看出,1G时代,移动通信的主要设备就是大哥大,如果看过80、90年代的香港电影,应该会看到过这种大哥大电话。

    2G

    2g

    到了2G时代,速度到了32Kb/s,除了能打电话,也可以发短信了,还可以利用2G网络来打开非常简单的网页,而且移动手机设备也变小了不少。比较有代表性的比如诺基亚功能机。这时候已经初现移动网页了,但是页面都是最简陋的形式,而且受限于流量资费的影响,普通人基本是很少使用里面的网络功能的。

    3G

    3g

    3G时代,移动通信的网络速度最高2Mb/s,出现了上网冲浪、手机QQ、3g智能手机等等经典名词。比如下面这张很熟悉的手机QQ网页

    5g-04

    可以看到界面都是比较原始,基本就是文字加链接的形式,偶尔会有一两张图片。3G时代的流量资费对于普通人来说,还是很贵、很少。所以当时基本都是在浏览器设置,把显示图片的功能关闭,这样可以节省很多流量。而且当时的手机QQ很流行,还有飞信(因为发短信不用钱,只要流量就行了)。但是手机qq还是有离线和在线的概念,因为生怕流量被无缘无故流失,基本都是需要网络的时候才打开移动数据功能,然后登录qq上线。

    5g-05

    3G时代还发生了一件很有历史影响性的事件,那就是乔布斯带来了3G触屏智能手机。原来手机可以长这样,不需要键盘!可以触屏!也正是苹果,带来了移动应用APP这个概念。那种惊艳真的无法用言语表达。

    4G

    4g

    到了4G,网络速度最高达到100Mb/s,是上一代的50倍。因为有了苹果的3G智能手机,后面陆续的智能手机也出现了,而小米,把国产的智能手机开启了在当时看来非常便宜的价格普及。有了4G和智能手机,人们能用手机的事情就多啰:以前只要电脑看的网页开始为移动端适配了,网页也多了图片、视频和音频等更丰富的形式,各种语音聊天、视频社交、视频直播接踵而至,在线社交也没有了上线和离线的概念,因为大家always online。硬件的发展也带动了移动互联网的技术发展——H5技术到来,也带来了火爆的移动互联网时代。

    5g-15

    5G

    5g

    2019年,5G的商用牌照已经下发,意味着5G时代将要来临了。是第五代移动通信技术,包含毫米波、波束赋形、Massive MIMO 等众多关键技术。这么多的技术,好像也看不懂,那么5G有什么牛的地方呢?有三大普通人也能明显感知的特性:

    • 高速率:未来理论上10Gbps 的通讯速率,相比4G提升了约100倍

    • 低延时:1ms的超低延时,相比于4G网络小于50ms的延时,再次降低了一个数量级

    • 广连接:每平方公里100万个设备接入,这也让每个物联网设备单独接入网络成为可能

    我们在看5G介绍时,经常看到的就是下载电影只要多少多少秒~看来速度,一直都是人们最能直接感受的变化了。而这些特性,又将会给对前端带来什么影响呢?下面本文从三方面分析(终于入正题了)。

    对前端有什么影响

    XR(VR/AR)技术

    5g-03

    其实,在2015年~2016年XR技术就已经火了一把,和前端关系比较大的有比如:腾讯游戏在ChinaJoy首曝的《龙之谷》webvr小游戏(Three.js)、支付宝AR红包、全景视频和各种XR活动推广专题等等。

    下图是腾讯游戏在ChinaJoy给游戏爱好者现场玩的webvr小游戏场景:
    5g-11

    下图是支付宝AR红包:
    5g-10

    下图是一个妹子在玩AR活动:
    5g-09

    5G如何影响XR技术?

    • 消除时延所致的眩晕感

    • 全新的XR解决方案,即将VR运行能力由终端向云端进行转移的“云计算”

    • 设备无线化。5G云,将大大降低VR/AR体验对“用户终端硬件性能”的要求

    • VR直播/VR流媒体,5G将带来体育赛事和演唱会等大型场景的现场VR直播

    • 更多场景:VR/AR模拟训练、AR车载导航等应用领域

    可以看出,5G解决了很多痛点,比如因为时延的眩晕,比如因为有线的缠绕和设备笨重等等。

    XR与前端

    我坚信的一点是有交互的地方就有前端的需求,所以不管是平面的交互,还是未来的立体交互。

    即使回到上面的传统的Web XR层面,5G的出现在加载速度、云计算等方面将会给用户带来更好的体验,从而推动Web XR技术的发展;

    而放眼未来,当这些XR设备越来越普及时,酷炫的交互会不会对前端发起新的挑战呢?会不会带来更广义的“前端”技术发展呢?

    回到本质:XR技术也无一例外不与图形技术相关联。

    引用一句在社区看到的:

    图形技术可能是仅有的与前端有密切联系的计算机底层技术了,因为所谓的UI就是靠图形接口调用GPU绘制而成的,这样就意味着掌握图形技术就能更深度地定制UI。

    所以图形技术很有可能在未来前端大放异彩。未来的前端UI可能不再是简单常规的流体布局,不再是简单粗糙的元素组件,甚至不再是基于平面设计的UI,而是更加多元化、更加细粒度、更加酷炫和立体的UI。
    5g-13

    而且我们目前的UI门槛比较低,未来可能会被AI代替(下面说AI的时候会说到)。而图形技术就不一样,首先被AI替代的可能性或者说实现性还是比普通UI要低很多。其次现在这方面的前端还是比较少,一方面是门槛比较高(数学计算、美术、空间思维等等),另一方面市场需求相对较小,可能在一些游戏公司会相对多点(游戏公司在做游戏推广的页面对酷炫UI要求比较多,甚至把游戏里面的某些场景通过web小游戏来呈现给玩家,让玩家在没有下载游戏之前就能进行体验),还有一方面,就是图形开发成本相对比较大,而给企业带来收入不成正比(没钱的企业养个普通开发都嫌成本高了)。

    人工智能——AI IN FE

    如果你是前端,一看到这个领域,会觉得有点遥远。前端能做AI?在浏览器上做机器学习?不能吧?

    的确,看起来是比较遥远,但是我们换一种思维,如果从工具层面呢?

    不过,目前的确有支持在浏览器上跑的机器学习开源项目。先来介绍两个开源项目:

    TensorFlow,一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief

    TensorFlow.jsTensorFlow 出了 JS 版本。一个利用 WebGL 来进行加速的机器学习类库,它基于浏览器,提供了高层次的 JavaScript API 接口。

    目前算是比较靠谱的前端+AI的场景就是自动化UI,将设计师的设计稿自动生成UI组件,闲鱼的大前端团队在2019.06的GIAC(全球互联网架构大会)分享了【UI2CODE图片识别自动生成代码】的项目。

    5g-14

    上面的文章有视频介绍,看效果,还原度还是比较高的。UI2CODE的视频截图:

    5g-17

    如果这个未来真的能满足业务,有多少前端目前的工作是可以被替代的!细思极恐啊!所以对这方面有兴趣的,可以研究下,多从日常的痛点思考,即使是做工具,像上面的UI2CODE工具,对行业也是影响深远的。

    物联网(Internet of Things, IoT)

    5g-06

    前端在想IoT上大展身手?这不是扯淡么?

    没错,从目前来看,的确有点扯。因为两个原因:

    • IoT是低性能低功耗低内存的设备,适合运行时高性能偏底层的编程语言,比如C语言

    • JavaScript功耗是个大问题(充电五分钟,待机5秒钟)

    下面看一张目前主流IoT设备的内存情况:

    5g-07

    但是,我们不是在聊未来吗?回头看看,JavaScript最初的出现是为了解决浏览器端用户交互的问题,到后来Node.js的出现,把它带到了服务端,很不可思议吧?后来因为Node.js,把前端带到了PC桌面应用开发,再到现在移动端app的开发。看来,前端是要一统江湖啊。不过,这里“前端”的定义当然也发生了变化,不再是我们传统的web前端那么简单了。

    那么怎么把JavaScript运行到IoT设备呢?

    JerryScript 虚拟机来了!三星还为IoT设备定制了JavaScript虚拟机(JerryScript ),它能够运行在小于 64KB 内存上,且全部代码能够存储在不足 200KB 的只读存储(ROM)上。

    来个Hollo World
    5g-08

    而和虚拟机配套使用,三星还推出了 IoT.js,基于 JerryScript 的“物联网”JavaScript框架。 IoT.js 使用 libuv 库实现类似于Node.js的事件驱动(非阻塞I / O模型)。向下兼容 Node.js, 遵守 CommonJS 规范中的模块化编程,并且支持 Node.js API 中核心功能的子集。目标是在资源受限的设备中运行,例如只有几千字节的RAM可用设备。

    5g-02

    总结

    5g-15

    前端在不断发展,而其代表的含义和领域也在发生变化。

    每次网络、终端设备的发展必然会推动web技术的更新,而“前端”这个领域也会有新的诠释,也许这也是我们新的机遇!

    5g-12

    ]]>
    + + + + <p><img src="/images/5g-01.png" alt="5g-01"></p> +<p>最近在小组做了一次小分享,主题是【5G来袭,我们有何机遇】,有这个想法是源于在社区看到有人面试被问到这个问题。因为2019年5G一直都是热门话题,而小组刚好有次分享机会,所以自己花了点时间做资料收集和整合,看看5G对未来前端的领域有哪些影响。本文主要还是以聊聊看法为主。</p> + + + + + + + + + + +
    + + + 【译】使用CSS开发SVG动画 + + http://w3cmark.com/2018/06/29/translate-animating-svg-with-css/ + 2018-06-29T11:25:26.000Z + 2024-10-09T11:43:02.241Z + +

    本文采用意译
    原文:Animating SVG with CSS

    image

    动画是网页内很有趣的一部分。它们可以改善用户体验,因为它们可以提供视觉反馈,任务指引和为网站添加动感。这里有几种方法可以创建Web动画,比如JavaScript库,GIF和嵌入式视频。但SVG和CSS的简单组合很有吸引力,原因有几个。首先由代码实现而不是数千个图像帧组成的它们具有高性能,并且比庞大的GIF和视频具有更快的加载时间。此外,它们还可以创建许多简单的动画,而无需在网页加载中另一个JavaScript插件。最重要的是,SVG是基于矢量的,因此它们可以在不同屏幕尺寸上完美缩放,而不会产生失真。

    现在,你可能想知道:为什么选择CSS? 为什么不使用原生SVG动画规范SMIL进行动画制作? 事实证明,SMIL的支持率正在下降。 Chrome(Chrome 45已经弃用)正朝着弃用SMIL的方向发展,转而采用CSS动画和Web Animations API。 所以,我们继续使用CSS动画……但它们是如何制作的? 在本文中,我们将学习如何制作这些轻量级,可扩展的动画!

    使用CSS制作SVG动画的常见例子

    首先,让我们看一下在Web应用程序或登录页面中为什么需要SVG动画的实际例子。

    图标(Icons)

    SVG动画非常适合指引交互和状态变化的图标。 在引导用户进行下一个操作时,例如在上手指引中,它们也很有用。 常见用例包括加载,上传,菜单切换以及播放/暂停视频。

    插图(Illustrations)

    插图是另一个常见的用例。在产品中,它们可以用来演示如何在仪表板上从空白状态生成数据。 而动画表情符号和贴纸也是其他流行的用例。 此外,还有动画现场插图,可以在制作品牌登陆页面时增加立体感和乐趣。

    如何准备SVG

    现在,让我们深入了解细节。 你要做的第一件事就是准备一个SVG。 当你因为准备的SVG变得复杂而变成一个狂躁的动画专家时,再开始简化可能会很烦人,但是从简化的SVG代码开始会更容易。

    简化SVG代码

    创建SVG时,它有些额外的代码,通常是不必要的。 因此,优化它非常重要。 我喜欢使用SVGO来减少文件大小并使用唯一ID保存路径(这对于防止同一页面上的多个SVG出现问题非常重要)。 SVGO是一个Node.js工具,有几种方法可以使用它,包括Sketch插件:SVGO Compressor。

    创建有意的分组(如果需要)

    在代码编辑器中打开SVG文件,并注意 <g> 元素。 这些元素是用于分组SVG元素。 如果要将一组元素设置为动画,请将它们包装在 <g> </g> 中,并使用 classID 命名它们。 如果你希望以相同方式设置多个形状(ID只能使用一次),请考虑将ID名称转换为class名称。 一旦你在形状上有了ID或类,你就可以用CSS来定位它们。 保存SVG时,暂时不会有任何明显的变化。

    小心堆叠顺序(如果你要为另一个形状后面的形状设置动画)

    这似乎是违反常识的,但最后列出的形状将粘贴在所有形状上。 因此,如果你希望在背景中显示形状,请确保它放在在SVG代码的顶部。 SVG形状从上到下依次“绘制”。

    将SVG样式设置为首选的初始状态

    SVG具有类似于CSS样式的表现属性,但是是直接在SVG标签上设置的。 一个常见的例子是填充颜色。 由于这些样式是在SVG标签上设置的,因此你可能认为它们在浏览器中具有很高权重。 但事实证明,你在外部设置的任何CSS / Sass都会正常地覆盖SVG样式,而不需要!important声明。 但是,你需要注意SVG上设置的内容,以便为页面加载期间显示的内容做好准备。 对于加载缓慢的页面,你可能会在通过CSS设置样式之前看到SVG闪现。 我建议你预留位置,以避免在页面加载过程中无样式闪现的SVG(Sara Soueidan在这篇文章里很好地解释了无样式SVG的闪现(FOUSVG))。

    把CSS应用于SVG

    现在你已经拥有了整洁的SVG代码,让我们开始介绍如何引入CSS。 关于如何将CSS应用于SVG,需要考虑一些因素。 有个限制是你无法使用外链的样式将样式应用于外链的SVG。

    方法一:在HTML中嵌入SVG代码(我最喜欢的)

    这使得SVG元素及其内容成为文档DOM树的一部分,因此它们受到文档CSS的影响。 这是我的最喜欢的方式,因为它使样式与标签分开。

    在下面的其他方法中,你会看到它们是相互缠绕的。 如果你正在使用Rails,那么有些插件可以自动将SVG嵌入到视图中。 因此,在你的代码中,你可以简单地引用外部SVG,然后在编译时嵌入它。 此方法的另一个好处是内联SVG意味着减少一个HTTP请求。 例子:

    方法2:在SVG中插入带有CSS的<style>标签

    你可以在<style>标签中添加CSS样式,然后嵌套在<svg>标签内。例子:

    方法3:使用外部链接在SVG中包含CSS

    如果你希望保留SVG中引用的样式,但又不想把样式包含在SVG标签内,则可以使用<?xml-stylesheet>标签引入外部样式表。例子:

    方法4:在SVG中使用内联CSS样式

    也可以使用内联样式属性style直接在元素上设置CSS。

    哪些可以用CSS动画?

    实际上很多! 具有可随时间变化的值的CSS属性都可以使用CSS动画或CSS过渡进行动画处理(有关这些属性的完整列表,请参阅MDN Web Doc的CSS动画属性列表)。 以下是一些Demo演示。

    Demos

    我们将介绍两种主要类型的动画,它们根据提供的控制量而有所不同。 注意:我将在demo中使用Sass,当然它也适用于CSS。 另外,为了简单起见,我省略了浏览器前缀,可能你实际项目中需要添加这些前缀(稍后会详细介绍)。

    过度属性

    你可以在加载时触发的动画或通过状态更改(例如hoverclick)时使用过渡属性。 transition属性允许属性值在指定的持续时间内平滑变化。 没有它,这种变化会在瞬间发生,从而产生一种唐突的现象。

    Transition 属性

    1
    transition: property duration timing-function delay;
    描述
    transition一次性设置所有四个的简写属性
    transition-delay过度效果的延迟(以秒为单位)
    transition-duration过度效果完成所需的秒数或毫秒数
    transition-property指定过度效果作用的CSS属性的名称
    transition-timing-function过渡效果的速度曲线

    悬停时变换的示例

    这款使用了过度效果的迷幻甜甜圈可以让变色更加好看自然! #donut-icing元素的转换告诉填充使用ease-out淡出缓动函数在三秒内逐渐改变。 鼠标悬停状态会触发填充变为蓝色。 中间发生的是一种很酷的混色,有一点点紫色。

    动画属性

    过渡属性的限制是它不能很好地控制在时间线期间发生的变化。 对于从A点到B点简单的动画来说更好。为了进一步控制,请使用Animation属性。 这些属性可以单独使用,但我这里演示的是简写动画属性。

    Animation 属性

    1
    animation: name duration timing-function delay iteration-count direction fill-mode play-state;
    描述
    animation-name动画关键帧的名称。当您阅读下面的关键帧部分时,请留意这一点。
    animation-duration动画的长度,以秒或毫秒为单位。注意:请必须指定animation-duration属性。否则持续时间默认为0,永远不会播放。
    animation-timing-function动画的速度曲线。例如:linear, ease, ease-in, ease-out, ease-in-out, step-start, step-end, `steps(int,start
    animation-delay以秒(s)或毫秒(ms)为单位,它是动画开始之前的延迟时间。注意:如果给定负值,它将立即播放,就像它已经播放了一段时间一样。
    animation-iteration-count应播放动画的次数。例如:任何数字
    animation-direction以反向或交替循环播放动画。例如:normal, reverse, alternate, alternate-reverse, initial, inherit
    animation-fill-mode动画在执行之前和之后如何将样式应用于其目标,比如forwardsbackwardsboth
    animation-play-state指定动画是正在运行还是暂停状态
    initial默认值
    inherit从父级继承

    关键帧(Keyframes)

    这是令人兴奋的地方,这就是在时序控制方面将动画与过渡属性区分开来的原因。 使用@keyframes 声明告诉它如何在中间步骤进行更改。 要使用关键帧,请添加一个@keyframes 声明,其名称与所需的animation-name属性相匹配。 使用关键帧选择器指定应在何时进行更改的动画时间轴上的百分比。

    下面是一个显示百分比选择器的示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @keyframes name-goes-here
    0%
    width: 100px
    25%
    width: 120px
    50%, 75%
    width: 130px
    100%
    width: 110px

    如果要仅为开头和结尾创建关键帧,可以这样做:

    1
    2
    3
    4
    5
    @keyframes name-goes-here
    from
    width: 100px
    to
    width: 120px

    虽然关键帧可以在你将它们放入样式表的任何位置运行,但它们通常位于动画属性下方,可以轻松找到它们的引用。

    变换(Transforms)

    元素可以在二维或三维空间中动画化。 在这里,我将展示一些2D变换的例子。 要了解有关3D变换的更多信息,请查看noob的3D变换指南

    旋转(Rotating)

    这是一个使用旋转变换的加载图标。想知道它是如何制作的吗?它从一个看起来像带有黑暗象限环的SVG开始的。

    HTML

    在Sass中,以SVG标签的ID为目标。 然后给它定义动画和过渡。 动画引用@keyframes的名称,其中transform:rotate设置为从0度到360度(完整旋转一圈)。 这就是让这加载图标变得动起来所需要的一切!

    Sass

    1
    2
    3
    4
    5
    6
    7
    8
    #loading
    animation: loading-spinner 1s linear infinite

    @keyframes loading-spinner
    from
    transform: rotate(0deg)
    to
    transform: rotate(360deg)

    想要动画效果更平滑顺畅吗? SVG支持渐变,因此你可以使用相同的Sass实现更平滑的效果,但需要使用具有渐变圆环的SVG(请参阅下面定义为#spinner-gradient-a)。

    现在,让我们使用transform:scale来创建一个变形条加载图标。

    SVG由三个大小相等的矩形组成,均匀分布。给SVG和三个<rect>元素都添加了ID,因此可以使用Sass轻松定位它们。

    Sass将动画应用于每个矩形。 关键帧告诉矩形图在时间轴中的四个位置沿Y轴改变比例:开始时,四分之一,中途,然后是四分之三。动画中的第一个数字表示动画时间长度,而第二个表示设置延迟。 由于我希望这些矩形在不同时间变形,我为每个条形添加了不同的延迟。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #loading-bar
    &-left
    animation: loading-bar-morph 1s linear .1s infinite
    transform-origin: center
    &-middle
    animation: loading-bar-morph 1s linear .2s infinite
    transform-origin: center
    &-right
    animation: loading-bar-morph 1s linear .4s infinite
    transform-origin: center

    @keyframes loading-bar-morph
    0%
    transform: scaleY(1)
    25%
    transform: scaleY(0.3)
    50%
    transform: scaleY(0.7)
    75%
    transform: scaleY(0.15)

    变换原点

    请注意,transform-origin:center表示从条形中心开始缩放; 否则,它会从顶部向下扩展,看起来就像是钻杆钻入地面。 测试一下,你会明白我的意思。 这是一个值得学习的重要课程:默认情况下,SVG原点位于左上角的(0,0)点。 如果你习惯使用HTML元素,这是一个关键的区别,HTML元素的默认变换原点始终为(50%,50%)。

    Fancier techniques

    线描动画

    这种漂亮的效果使你的SVG看起来就像被画出来一样。要得到上面的效果需要一个画线的SVG标签,因为它依赖于笔画。我将引导你了解如何用一条线完成它,然后你就知道如何完成剩下的工作。

    首先,使用stroke-dasharray对行进行虚线描边。数值表示以px为单位的线的长度。

    1
    2
    #line
    stroke-dasharray: 497

    然后添加stroke-dashoffset指定dash模式到路径开始的距离。让它尽可能得长使它看起来像一条实线。这是动画的最终帧的外观。

    1
    2
    3
    #line
    stroke-dasharray: 497
    stroke-dashoffset: 497

    现在它已经准备好可以动起来了。 添加为stroke-dashoffset设置动画的关键帧,使其从完全偏移(无可用笔划)变为0px偏移(实心笔划)。 注意动画属性中的forwards。 这是animation-fill-mode的其中一种取值,它告诉动画一旦播放就会保持最终结束状态。 没有它,动画将播放然后返回其第一个“帧”作为其最终的结束点。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #line
    stroke-dasharray: 497
    stroke-dashoffset: 497
    animation: draw 1400ms ease-in-out 4ms forwards

    @keyframes draw
    from
    stroke-dashoffset: 1000
    to
    stroke-dashoffset: 0

    插图动画

    下面这个带着笑脸的心形,在鼠标悬停时会触发一些动画。 心形的大小变化为110%,而上面笑脸的眼睛变小,嘴巴变大并出现红晕,心形出现脉冲效果动画。 对于脉冲效果,我使用了Animista的Heartbeat动画。 Animista是开发CSS动画效果的绝佳资源,你可以重复使用和迭代。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #smiley-love
    #smiley
    &-blush
    display: none
    a
    display: inline-block
    &:hover
    #smiley
    transform: scale(1.1)
    transform-origin: center
    -webkit-animation: heartbeat 1.5s ease-in-out infinite both
    animation: heartbeat 1.5s ease-in-out infinite both
    &-blush
    display: inherit
    &-eye-left
    transform-origin: center
    transform: scale(.7) translate(-8px)
    &-eye-right
    transform-origin: center
    transform: scale(.7) translate(8px)
    &-mouth
    transform: translateY(-22px) scale(1.6)
    transform-origin: center

    /* ----------------------------------------------
    * animation heartbeat
    * Generated by Animista on 2019-3-24 18:51:13
    * w: http://animista.net, t: @cssanimista
    * ---------------------------------------------- */

    @-webkit-keyframes heartbeat
    from
    -webkit-transform: scale(1)
    transform: scale(1)
    -webkit-transform-origin: center center
    transform-origin: center center
    -webkit-animation-timing-function: ease-out
    animation-timing-function: ease-out
    10%
    -webkit-transform: scale(0.91)
    transform: scale(0.91)
    -webkit-animation-timing-function: ease-in
    animation-timing-function: ease-in
    17%
    -webkit-transform: scale(0.98)
    transform: scale(0.98)
    -webkit-animation-timing-function: ease-out
    animation-timing-function: ease-out
    33%
    -webkit-transform: scale(0.87)
    transform: scale(0.87)
    -webkit-animation-timing-function: ease-in
    animation-timing-function: ease-in
    45%
    -webkit-transform: scale(1)
    transform: scale(1)
    -webkit-animation-timing-function: ease-out
    animation-timing-function: ease-out
    @keyframes heartbeat
    from
    -webkit-transform: scale(1)
    transform: scale(1)
    -webkit-transform-origin: center center
    transform-origin: center center
    -webkit-animation-timing-function: ease-out
    animation-timing-function: ease-out
    10%
    -webkit-transform: scale(0.91)
    transform: scale(0.91)
    -webkit-animation-timing-function: ease-in
    animation-timing-function: ease-in
    17%
    -webkit-transform: scale(0.98)
    transform: scale(0.98)
    -webkit-animation-timing-function: ease-out
    animation-timing-function: ease-out
    33%
    -webkit-transform: scale(0.87)
    transform: scale(0.87)
    -webkit-animation-timing-function: ease-in
    animation-timing-function: ease-in
    45%
    -webkit-transform: scale(1)
    transform: scale(1)
    -webkit-animation-timing-function: ease-out
    animation-timing-function: ease-out

    对于下面这个冰棒图,我通过使用transform:translate来改变它们的位置。 为了让它们消失,我设置了透明度变化。 现在它看起来像是炎热夏日里的冰棒在融化!

    插件

    你可以使用前面提到的CSS / Sass自己动手,或者使用像Animate.CSS这样的插件来快速开发。 它包含常用动画的现成的样式类,例如淡入淡出,幻灯片,摇动等等。 如果您想探索JavaScript的方式,我听说过Greensock的GSAP是很棒的东西,它有一个强大的插件叫做MorphSVGPlugin,可以让你将SVG形状变形为另一种形状。

    跨浏览器兼容性

    许多CSS动画在不同的浏览器都得到了很好的支持,但仍有一些事情需要注意。 比如:

    浏览器前缀

    您可以在shouldiprefix.com检查确认是否需要加上针对特定浏览器的前缀。在撰写本文时,建议你都加上-webkit-animation@ -webkit-keyframes前缀。

    浏览器测试

    请记住,尽管有大部分浏览器支持,但你可能会遇到一些渲染差异。 例如,如果你想支持旧版本的Firefox(v.42及更低版本),请留意有关transform-origin的兼容问题。 虽然Firefox最新版现在已经修复,但有一段时间不接受任何关键字(例如center)或变换原点的百分比。 因此,如果你遇到渲染问题,请尝试使用px。 你可以查看 cxcy 属性来计算原点中心。 要在多个浏览器和设备上查找渲染差异,可以在BrowserStack上测试你的动画以查找任何奇怪的问题。Chrome DevTools有一个动画选项卡,有助于深入了解动画状态。 它允许你通过时间轴可视化来查看页面上动画执行情况,也可以慢动作重放动画,以及修改动画。

    Chrome DevTools

    总结

    现在你已经了解了使用CSS为SVG制作动画的几种不同方法,希望你能够为自己的网页创建动画!而只需几行CSS代码就能将静态SVG变得动起来,这是很有趣的。 一旦掌握了一些技巧,就可以更轻松地处理更复杂的动画。 一些在线编辑器比如CodePen等有很大有趣的动画,可以给你带来无穷无尽的灵感!

    ]]> + + + + <blockquote> +<p>本文采用意译<br>原文:<a href="https://blog.logrocket.com/animating-svg-with-css-83e8e27d739c/" target="_blank" rel="noopener">Animating SVG with CSS</a></p> +</blockquote> +<p><img src="https://i2.wp.com/blog.logrocket.com/wp-content/uploads/2019/04/1_-mL-Y_OA9L_GvrKpKxrvpA.png?w=1600&ssl=1" alt="image"></p> + + + + + + + + + + + + + + Vue开发遇到的问题积累 + + http://w3cmark.com/2018/02/15/vue-bugs/ + 2018-02-15T11:25:26.000Z + 2024-10-09T11:43:02.242Z + + 以下问题出现的场景都是基于vue2.x,如果是vue 1.x,可能就没有参考意义了。

    绑定事件如何主动传当前元素

    1
    @click="onClick($event, others)"

    vue.config如何配置不同打包后的文件输出路径

    在使用vue的cli 3.x后,webpack的打包配置都通过项目根目录的vue.config.js进行配置,而默认这个文件是不存在的,需要自己创建和书写配置。

    假如现在有个需求,我想在不同的打包命令下,打包后的文件输出在不同的本地文件夹:
    package.json文件配置了两个命令
    (1)当我执行npm run build时,进行文件打包,打包后的文件输出在当前项目目录的dist文件夹(vue cli默认的配置就是如此)
    (2)当我执行npm run publish时,进行文件打包,打包后的文件输出在某个指定的本地目录的某个文件夹

    方法:

    通过修改打包命令进行传参数,让vue.config.js文件获取到参数来区分不同的打包操作,从而修改打包后的输出文件路径

    package.json文件配置:

    1
    2
    3
    4
    "scripts": {
    "build": "vue-cli-service build",
    "publish": "npm_config_publish=true npm run build'"
    },

    vue.config.js文件配置:

    1
    2
    3
    4
    5
    module.exports = {
    baseUrl: '',
    // 打包输出文件目录
    outputDir: process.env.npm_config_publish ? '/Users/xxx/Documents/host/test/projectname' : 'dist' ,
    }

    以上的打包配置,在npm run publish时,打包后的文件就会存在你本地的'/Users/xxx/Documents/host/test/projectname里。

    Element-ui的table事件如何传自定义参数

    例子代码片段(row-click为表格当某一行被点击时会触发该事件):

    1
    2
    3
    4
    5
    <el-table
    ref="fieldsTable"
    @row-click="onRowClick"
    >
    </el-table>

    而该事件默认有三个参数:row, column, event,参数的意义可以看element-ui官方文档

    问题:如果我的table是个数组循环渲染,需要传个当前table下标index
    第一反应的方案是:

    1
    2
    3
    4
    5
    6
    7
    <template v-for="(item, index) in data">
    <el-table
    ref="fieldsTable"
    @row-click="onRowClick(row, column, event, index)"
    >
    </el-table>
    </template>

    这种写法虽然能够获取到index的值,但是,row column event这三个变量的值就变成undefined

    因为如果在绑定的时,给onRowClick传入的三个参数,是当前上下文的三个新变量,而当前上下文并没有声明有这三个变量,所以是undefined,而传入的undefined就覆盖了row-click事件的三个默认参数。

    我们可以改造一下写法:

    1
    2
    3
    4
    5
    6
    7
    <template v-for="(item, index) in data">
    <el-table
    ref="fieldsTable"
    @row-click="(row, column, event)=>{return onRowClick(row, column, event, index)}"
    >
    </el-table>
    </template>

    这样,在onRowClick就可以正常获取到四个参数的值。

    ]]>
    + + + + <p>以下问题出现的场景都是基于vue2.x,如果是vue 1.x,可能就没有参考意义了。</p> + + + + + + + + + + +
    + + + 前端开发踩过的坑 + + http://w3cmark.com/2018/02/05/frontend-bugs/ + 2018-02-05T11:25:00.000Z + 2024-10-09T11:43:02.240Z + + 本文用于总结在前端开发中遇到的一些比较杂的坑。比如CORS跨域等等。

    CORS跨域方案

    接到一个前端跨域请求(GET和POST)相关的需求
    一调试,咦!浏览器提示跨域报错了~
    简单!让服务端童鞋加上跨域请求头,开启CORS:

    1
    2
    3
    4
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: x-requested-with,content-type,x-xsrf-token
    Access-Control-Allow-Methods: GET,POST,OPTIONS
    Access-Control-Allow-Origin: http://w3cmark.com

    ⚠️这里有个彩蛋,服务端加跨域请求头要小心,冒号前面如果有空格,会出现浏览器兼容问题,比如火狐浏览器看到的请求没有跨域请求头;再比如在chrome下,可以正常看到有跨域请求头,但如果使用whistle做代理,跨域请求头就丢失了。

    以下是错误示范(冒号前面多了个空格):

    1
    2
    3
    4
    Access-Control-Allow-Credentials : true
    Access-Control-Allow-Headers : x-requested-with,content-type,x-xsrf-token
    Access-Control-Allow-Methods : GET,POST,OPTIONS
    Access-Control-Allow-Origin : http://w3cmark.com

    服务端设置搞定!前端再次请求,请求响应头带上上面的返回,GET请求顺利过关。。。
    如果接口需要登录,前端设置请求withCredentials: true,请求就带上cookie,顺利过关。。。
    再来一个POST请求
    咦!浏览器多发了一个OPTIONS请求,一查,原来是preflight request,预校验请求

    这里的请求被分成两种:简单请求和复杂请求,只有复杂请求才会发OPTIONS请求,详情介绍移步:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

    ———-说了那么多坑终于来了—————

    因为服务端对请求做登录校验(包括OPTIONS请求),校验通过后,才会给请求加跨域头返回,而OPTIONS请求是无法携带cookie的
    来自SO的截图:
    image
    所以服务端无法接收到cookie,一直认为未登录,导致发OPTIONS请求时浏览器直接报跨域了。

    解决方案,服务端不需要对OPTIONS请求做cookie校验的操作

    npm install 时提示sha512错误

    1
    2
    3
    4
    npm ERR! code EINTEGRITY
    npm ERR! sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== integrity checksum failed when using sha512: wanted sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== but got sha512-WXI95kpJrxw4Nnx8vVI90PuUhrQjnNgghBl5tn54rUNKZYbxv+4ACxUzPVpJEtWxKmeDwnQrzjc0C2bYmRJVKg==. (65117 bytes)

    npm ERR! A complete log of this run can be found in:

    这是一个很奇怪的问题,同一个版本的包,不同人安装偶然会出现,出现问题后,删除package-lock.json再重新安装也无法解决(有时候一开始就报错,都没有生成package-lock.json文件)。

    尝试 npm cache clean --force 清除npm缓存,这是网上搜索出来的方案,但试过无效。

    解决方案:

    1
    2
    # 关闭npm的https
    npm config set Strict-ssl false

    然后再重新安装就正常了

    ]]>
    + + + + <p>本文用于总结在前端开发中遇到的一些比较杂的坑。比如CORS跨域等等。</p> + + + + + + + + + + +
    + + + 陌生的HTML标签 + + http://w3cmark.com/2018/01/25/unfamiliar-html-tags/ + 2018-01-25T11:00:00.000Z + 2024-10-09T11:43:02.242Z + + 从刚入门前端时,从table年代到div年代,很多实际的HTML开发基本都停留在几个常用的标签,比如html、head、body、div、meta、a、p、span、i、em、img、canvas、video、audio、h1、h2…
    而有很多相对于我来说,是很少用甚至没用过的标签。

    SVG预定义的形状元素标签

    这些标签不熟,说明svg不熟

    • 矩形 <rect>
    • 圆形 <circle>
    • 椭圆 <ellipse>
    • 线 <line>
    • 折线 <polyline>
    • 多边形 <polygon>
    • 路径 <path>

    <figure><figcaption>

    <figure>:用作文档中插图的图像
    <figcaption>:figure插图里如果带有一个标题可以使用

    ]]>
    + + + + <p>从刚入门前端时,从table年代到div年代,很多实际的HTML开发基本都停留在几个常用的标签,比如html、head、body、div、meta、a、p、span、i、em、img、canvas、video、audio、h1、h2…<br>而有很多相对于我来说,是很少用甚至没用过的标签。</p> + + + + + + + + + + +
    + + + Python入门积累 + + http://w3cmark.com/2018/01/20/python-getting-started/ + 2018-01-20T13:05:26.000Z + 2024-10-09T11:43:02.241Z + + 最近在学习Python,本文用来记录学习过程中觉得值得记录的知识点,以备复习。

    用处

    • web网站和各种网络服务

    • 系统工具和脚本

    • 作为“胶水”语言把其他语言开发的模块包装起来方便使用

    优缺点

    • 解析型语言,执行速度比 c(编译成机器码)/java(编译成字节码) 都慢

    • 源码不能加密

    • 代码量少,开发速度快

    注意事项

    • 版本兼容问题,2.7和3.3代码存在不兼容的情况

    • 如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

    1
    # -*- coding: utf-8 -*-
    ]]>
    + + + + <p>最近在学习Python,本文用来记录学习过程中觉得值得记录的知识点,以备复习。</p> + + + + + + + + +
    + + + 常用工具集备忘 + + http://w3cmark.com/2018/01/15/common-toolset-memo/ + 2018-01-15T11:25:26.000Z + 2024-10-09T11:43:02.239Z + + 前端开发过程中用到的各种各样的工具,经常会出现千奇百怪的问题,记录下来,下次再出现时可以快速定位解决。

    nrm——NPM源管理

    nrm官方>>

    1
    2
    # 安装
    npm install -g nrm
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Usage: nrm [options] [command]

    Commands:

    ls List all the registries
    use <registry> Change registry to registry
    add <registry> <url> [home] Add one custom registry
    del <registry> Delete one custom registry
    home <registry> [browser] Open the homepage of registry with optional browser
    test [registry] Show the response time for one or all registries
    help Print this help

    Options:

    -h, --help output usage information
    -V, --version output the version number

    npm 报错(npm ERR! cb() never called!

    出现环境:OS X/macOS
    官方issue:https://github.com/npm/npm/issues/17839

    这个报错无论是在官方的issue还是Stack Overflow,都有人反馈,解决思路主要有两种:
    (1)来自Stack Overflow的解决方案:npm cache verifynpm cache clean(网上搜索还有就是安装node的助手,但是我实践是不行的,因为在安装 npm install -g n 本身也会报这个错)
    (2)来自官方的issue评论的解决方案:删除node相关的安装,然后重装node(但看起来操作比较复杂,又要删这,又要删哪的)

    我的最终解决方案:
    官方下载对应的安装包(尝试过brew install node安装,但是报错:Error: Checksum mismatch,而且我一开始不是通过brew安装的,所以放弃折腾了),我直接选的是当前长期支持版的最新版,直接安装覆盖即可。
    image


    GitHub Pages怎么绑定自己的域名

    第一步:申请一个属于自己的域名

    第二步:在域名提供商,进入域名解析设置,以我的http://w3cmark.github.io为例
    (1)先添加一个CNAME,主机记录写@,后面记录值写上你的w3cmark.github.io
    (2)再添加一个CNAME,主机记录写www,后面记录值也是w3cmark.github.io
    这样别人用www和不用www都能访问你的网站(其实www的方式,会先解析成http://w3cmark.github.io,然后根据CNAME再变成http://wwww.3cmark.com,即中间是经过一次转换的)。
    image

    第三步:在GitHub Pages项目的Setting–>GitHub Pages–>Custom domain(自定义域名)去直接填写
    你自己的域名,如www.w3cmark.com,前面不需要http://,然后点击旁边的save按钮保存即可。(也可以不需要带www,如w3cmark.com。两者的区别是,如果带www,访问时不管是否带有www,浏览器地址栏访问的都是www.w3cmark.com,反之亦然。)
    image
    image

    上面介绍的是CNAME别名记录,也可以使用A记录,后面的记录值是写GitHub Pages里面的ip地址,但有时候IP地址会更改,导致最后解析不正确,所以还是推荐用CNAME别名记录要好些,不建议用IP。

    上面三步做完,一般等几分钟,解析生效,就可以用你自己域名访问下试试啦~


    GitHub Pages绑定自己的域名后,怎么支持https

    2018.05.01官方支持https Custom domains on GitHub Pages gain support for HTTPS

    如果你是采用CNAME别名记录的方式,开启https很简单,只需要在在GitHub Pages项目的Setting去勾选即可(如果你是用ip做解析的,需要更新一下ip,具体可以看GitHub官方博客)
    image


    Whistle使用

    1
    2
    3
    # 同一个域名根据不同的path指向不同的ip 
    /api.w3cmark.com\/(?!column)(.*)/ http://127.0.0.1:9529/$1
    ^api.w3cmark.com/column/*** host://10.199.133.253/column/$1

    MAC 命令相关

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 修改hosts
    sudo vi /etc/hosts

    # 打开当前路径的finder
    open .

    # 全局命令存放路径
    /usr/local/bin

    # 全局命令代码存放路径
    /usr/local/lib
    ]]>
    + + + + <p>前端开发过程中用到的各种各样的工具,经常会出现千奇百怪的问题,记录下来,下次再出现时可以快速定位解决。</p> + + + + + + + + +
    + + + Webp图片降级方案有哪些 + + http://w3cmark.com/2018/01/02/webp-image-degradation-plan/ + 2018-01-02T11:25:26.000Z + 2024-10-09T11:43:02.242Z + + Webp已经开始慢慢流行,有些产品还要考虑到一些低版本浏览器的情况,所以做兼容还是少不了,本文来探讨一下,Webp图片降级方案有哪些。

    前言

    无论哪种方案,前提你都需要有两套格式的图片。可以通过各种工具进行批量转换。

    方案一

    前端处理

    1
    2
    3
    4
    5
    <picture>
    <source srcset="img/awesomeWebPImage.webp" type="image/webp">
    <source srcset="img/creakyOldJPEG.jpg" type="image/jpeg">
    <img src="img/creakyOldJPEG.jpg" alt="Alt Text!">
    </picture>

    对于每个浏览器都可以用,而不只是支持<picuture>元素的浏览器。这是因为不支持<picture>的浏览器只会显示img指定的图片。

    方案二

    前端处理

    这种方案的原理就是通过先检测当前浏览器是否支持webp格式来决定图片和图片背景采用哪种图片格式来展示。

    • 第一步,需要知道浏览器是否支持webp格式
    1
    document.createElement('canvas').toDataURL('image/webp');

    如果浏览器支持webp格式,返回的结果带有data:image/webp;

    1
    data:image/webp;base64,UklGRrgAAABXRUJQVlA4WAoAAAAQAAAAKwEAlQAAQUxQSBIAAAABBxARERCQJP7/H0X0P+1/QwBWUDgggAAAAHANAJ0BKiwBlgA+bTaZSaQjIqEgKACADYlpbuF2sRtACewD32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99qwAAP7/1gAAAAAAAAAA

    如果浏览器不支持webp格式,返回的结果不带有data:image/webp;

    1
    data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAAXNSR0IArs4c6QAAAylJREFUeAHt0DEBAAAAwqD1T20IX4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYOAdGL/UAAEPpnR6AAAAAElFTkSuQmCC

    或者可以一开始,通过触发一张只有1像素的webp图片,监听它的onload事件,如果成功,说明浏览器支持webp格式,如果不支持,说明浏览器不支持啦。
    不过这种首先你得准备这张图片,其次,你要每次都去请求这张图片。

    • 第二步,根据不同浏览器支持情况展示不同格式

    在第一步,外面通过js知道浏览器支持情况,然后把两种格式的图片都放到img标签的自定义属性,根据不同情况取不同的图片地址显示出来即可。

    1
    <img data-src="https://xxx.w3cmark.com/f7b07c8.jpg" data-webp="https://xxx.w3cmark.com/f7b07c8.webp">

    至于样式,可以直接根据检测的结果在body标签加入一个特殊样式,然后把webp的背景图写在这个样式下即可。

    方案三

    服务端处理

    前端统一请求图片地址,比如https://xxx.w3cmark.com/f7b07c8.jpg,服务端接受到客户端请求时,根据request头的accept字段来判断,返回哪种格式的图片。

    客户端支持webp格式时,request头的accept字段会有image/webp,如下图:

    image

    不支持时:

    image

    官方对accept字段的解释:

    The Accept request-header field can be used to specify certain media types which are acceptable for the response. Accept headers can be used to indicate that the request is specifically limited to a small set of desired types, as in the case of a request for an in-line image.
    google翻译一下:

    Accept request-header字段可用于指定响应可接受的某些媒体类型。 接受标头可用于指示请求特别限于一小组所需类型,如在请求内嵌图像的情况下。

    这种方案前端不用做特殊处理,但是服务端返回处理写死后,就不太灵活了,如果有某些场景就是想要访问非webp呢?
    需要具体方案看业务的具体场景来用哈。

    ]]>
    + + + + <p>Webp已经开始慢慢流行,有些产品还要考虑到一些低版本浏览器的情况,所以做兼容还是少不了,本文来探讨一下,Webp图片降级方案有哪些。</p> + + + + + + + + +
    + + + 前端开源项目目录结构 + + http://w3cmark.com/2017/12/29/front-end-open-source-project-directory-structure/ + 2017-12-29T08:25:26.000Z + 2024-10-09T11:43:02.240Z + + 得益于各种自动化工具,如今前端开源项目的目录结构越来越复杂了,在看别人代码时可能一脸懵逼,在这里整理了常见的目录结构。

    文字版如下:

    .circleci

    存放CircleCI持续集成相关,目前只支持github和Bitbucket代码管理工具

    build

    webpack的相关配置,包括基本配置、开发环境配置、生产环境配置等

    config

    针对开发环境,生产环境,测试环境的配置信息

    dist

    存放编译打包后的文件

    examples

    存放例子

    flow

    flow(JavaScript静态类型检查器,貌似Eslint)的 libdef 相关,用来存放引入一些第三方库或是自定义类型库

    mock

    存放项目用于模拟的数据

    node_modules

    安装依赖时自动生成的,用于存放项目依赖包

    src

    项目源码

    static

    静态资源,此目录下的文件不会被webpack处理。在webpack打包后,此目录下的文件会默认被直接复制到dist/static/中

    test

    用于存放测试文件,比如unit单元测试、e2e测试等

    .babelrc

    babel配置文件

    .editorconfig

    编辑器编码规范配置文件,用于告诉编辑器本项目的一些编码规范,比如用多少个空格

    .eslintignore

    ESLint语法检查忽略配置文件,用于配置忽略语法检查的目录文件

    .eslintrc

    ESLint规则配置文件,用于语法检查

    .flowconfig

    flow(一个 js 静态类型检测器)项目的配置文件

    .gitignore

    用于告诉Git系统要忽略掉跟踪哪些文件

    .gitkeep

    用于跟踪项目中的空文件(默认情况Git 不跟踪空文件夹)

    .gitattributes

    以行为单位设置一个路径下所有文件的属性

    .postcssrc.js (postcss.config.js)

    postcss配置文件

    .travis.yml

    Travis CI(持续集成服务)的配置文件,指定了 Travis 的行为,Github 仓库里面,一旦代码仓库有新的 Commit,Travis 就会去找这个文件,执行里面的命令

    index.html

    首页静态html,可能是主入口

    LICENSE

    开源协议

    Makefile

    Make(主要用于C语言的项目构建工具,也有些前端开源项目会支持)构建规则

    package-lock.json

    使用npm安装依赖时自动生成的确切依赖配置文件,用于后续安装或跨机器安装能够生成相同版本的依赖,即使安装的依赖有更新也不影响

    package.json

    npm 模块配置文件,用于定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)

    yarn.lock

    使用用Yarn CLI 增加/升级/删除依赖时自动生成的确切依赖配置文件,准确存储每个安装的依赖是哪个版本,用于后续安装或跨机器安装能够生成相同版本的依赖

    README.md

    项目自述说明,用于概述本项目相关信息:是什么、做什么、有什么用、怎么用等

    思维导图版如下:

    前端开源项目目录结构图

    ]]>
    + + + + <p>得益于各种自动化工具,如今前端开源项目的目录结构越来越复杂了,在看别人代码时可能一脸懵逼,在这里整理了常见的目录结构。</p> + + + + + + + + +
    + + + Laraval-nova入门安装 + + http://w3cmark.com/2017/12/26/laraval-nova/ + 2017-12-26T11:25:26.000Z + 2024-10-09T11:43:02.240Z + + 最近在接触基于PHP框架laraval的一个nova项目,它 官方文档 在介绍安装有些步骤不是很详细,所以记录一下整个安装流程:

    1、需要确保安装mysql、php、composer环境

    2、安装laraval框架,通过larval框架创建新project项目

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 安装laraval
    composer global require "laravel/installer"

    # 创建名字为blog项目
    laravel new blog


    # 如果提示laraval命令没找到,需要设置环境变量,比如mac下:
    vim ~/.zshrc
    # 添加以下path
    export PATH="$HOME/.composer/vendor/bin:$PATH"

    3、进入创建好的新project项目,修改composer.json文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 新加repositories字段
    "repositories": [
    {
    "type": "path",
    "url": "./nova" // 下载源码解压后存放的相对路径
    }
    ],

    // 修改require字段
    "require": {

    "laravel/nova": "*" // 新加
    },

    4、修改composer.json文件后,按顺序执行:

    执行 composer update

    执行 php artisan nova:install

    5、本地数据库创建

    修改.env文件里面数据库相关信息,比如数据库名、用户名、密码

    执行 php artisan migrate

    (本人测试发现在mysql8.xx版本会出现连接报错,暂时没能解决,连接5.xx的mysql没问题)

    但是又遇到Unknown character set: 'utf8mb4'报错,解决方案是修改项目里的 /config/database.php

    laraval_nova.png

    6、创建用户(用于访问时的登录)

    php artisan nova:user

    7、启动服务 php artisan serve

    访问路径 http://127.0.0.1:8000/nova/

    即可看到后台界面啦

    ]]>
    + + + + <p>最近在接触基于PHP框架laraval的一个nova项目,它 <a href="https://laravel-china.org/index.php/docs/nova/1.0/install/2186" target="_blank" rel="noopener">官方文档</a> 在介绍安装有些步骤不是很详细,所以记录一下整个安装流程:</p> + + + + + + + + +
    + + + 小程序开发遇到的坑 + + http://w3cmark.com/2017/12/24/small-program-bugs/ + 2017-12-24T12:25:26.000Z + 2024-10-09T11:43:02.241Z + + 做了一小段时间的微信小程序开发,踩了不少坑,在这里做一下总结:

    1、在 app.jsonShowonHidegetCurrentPages() 查询页面栈,可能获取到空数组

    发现时间:20180517

    系统环境:IOS

    如果有在这两个场景使用,建议对当前页面对象进行判断是否为undefined

    2、tabBar页面 wx.getSystemInfowindowHeight 小于实际高度(大约少了一个tabBar的距离)

    发现时间:20180517

    系统环境:android部分机

    3、tabBar页面Page的onTabItemTap事件在首次切换不会触发,要在页面onShow后再切换才触发

    发现时间:20180517

    系统环境:iOS

    sdk 1.9.97有问题、更新到2.0.7正常

    4、button的border无法去掉?

    小程序的open-typebutton特有的属性,所以使用小程序原生button组件在所难免,比如:

    1
    2
    3
    <button open-type="share" class="btn">
    点击分享
    </button>

    但是原生的button可能不太适合业务,所以需要去掉默认样式,比如去掉背景色和边框:

    1
    2
    3
    4
    .btn {
    background-color: transparent;
    border: 0;
    }

    咦!意不意外?背景是去掉了,边框还在。。。
    原来原生button的边框是写在 伪元素 after的,所以,需要这样才能去掉:

    1
    2
    3
    .btn::after {
    border: 0;
    }

    5、canvas.draw回调一直不执行,也没报错(sdk在1.7.1以上都不可以)

    前往社区类似问题反馈

    如果你用了很多方式也排查不出原因,可以试下把绘画的canvas标签放到page页面级别的html,而不是放到自定义的组件html。貌似放到自定义组件,无法找到画布,导致绘画不成功(它没报错,但回调又不执行)。

    回头看来官方api,原来createCanvasContext方法有第二个参数 Object this

    在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 canvas-id 的 ,如果省略则不在任何自定义组件内查找

    ]]>
    + + + + <p>做了一小段时间的微信小程序开发,踩了不少坑,在这里做一下总结:</p> + + + + + + + + +
    + + + 让loading效果更线性 + + http://w3cmark.com/2017/12/20/loading-effect-more-linear/ + 2017-12-20T12:25:26.000Z + 2024-10-09T11:43:02.241Z + + 为了提高用户体验,在做一些比较多资源的项目,我们经常会用资源预加载的方式,一打开页面会先看到一个loading动画效果或者loading进度条,再或者加载百分比,用来暗示用户,页面资源比较多,正在加载中啦,你再等等哈,不要走喔。。。

    而这里的资源预加载,就是通过js去预先请求某些资源,以备页面展示时可以直接使用,比如图片预加载,我们可能会这样实现:

    1
    2
    3
    4
    5
    6
    7
    8
    var img = new Image();
    img.onload = function () {
    // 加载成功...
    };
    img.onerror = function () {
    // 加载出错...
    };
    img.src = 'https://dummyimage.com/90x90/ddd/79c';

    通过创建一个不可见的img来触发图片请求,上面演示的只是加载一张,一般情况做预加载都会有多资源才做啦,所以批量预加载只需要加入循环:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    var iFileData = [//预加载图片资源
    'https://dummyimage.com/90x90/ddd/79c',
    'https://dummyimage.com/100x100/ddd/79c',
    'https://dummyimage.com/200x200/ddd/79c',
    'https://dummyimage.com/300x300/ddd/79c',
    'https://dummyimage.com/400x400/ddd/79c',
    'https://dummyimage.com/500x500/ddd/79c'
    ],
    _total = iFileData.length,
    _loaded = 0;
    for(var i = 0; i < _total; i++) {
    loadImage(iFileData);
    }
    loadImage = function(iData){
    var img = new Image();
    img.onload = img.onerror = function () {
    _loaded++;
    checkLoadComplete();
    };
    img.src = iData;
    },
    checkLoadComplete = function(){
    if(_loaded == _total) {
    console.log('加载完毕');
    }
    };

    上面可以实现简单的预加载了,但好像没有当前加载的进度喔
    下面加上一个当前加载进度的百分比:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    checkLoadComplete = function(){
    var per = (_loaded/_total).toFixed(2);
    if(per > 1) {
    per = 1;
    }
    console.log('当前加载进度:' + per);
    if(_loaded == _total) {
    console.log('加载完毕');
    }
    }

    到这,资源预加载的功能基本就ok了,然后展示进度跟进上面的进度返回,转成数字百分比或者一个进度条就可以了。
    另外,这个功能很常用,可以再做一下封装,方便使用,还可以加入其它资源的支持,比如多媒体文件?

    完了?
    但,这个不是本文的重点,本文的重点是线性

    改良,让加载更线性

    上面的预加载有个问题,体验不好。比如,你要预加载10个资源,显示的百分比就是0%,10%,20%,30%…这样10个数字的跳动,极端点,当你只有一个资源(当然这里是极端考虑,像前文说的,一个资源,你估计不会用预加载了)时,进度就是0%~100%,一下就从0跳到100了。

    还有,即使是10个资源,当用户第二次打开页面,因为资源有缓存,这个loading效果就会可能一闪而过,因为有缓存加载太快了,进度都看不清就没了,体验也不好(或者即使第一次,如果用户网速很好,也会出现一闪而过)。

    所以,上面的预加载体验不够好,不稳定,导致动画效果不线性。

    预想的线性是怎样的呢?比如进度百分比数字,我预想的是无论多少资源,第几次打开,网速如何,都是从0%,1%,2%,3%,4%,5%,6%….这样直到100的,只有这样,数字展示才不会大幅度跳动或者进度条的宽度才不会跳跃。

    那怎么达到这样的数字累加效果呢?咦?累加?那可以用定时器啊:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var _num = 0;
    var _num_interval = setInterval(function(){
    _num++;
    if(_num > 99){
    clearInterval(_num_interval);
    _num = 100;
    }
    console.log(_num);
    }, 50)

    嗯,这样数字就不跳动啦,很线性!!从0100,每隔50毫秒加1,到100就停止,so easy

    线性数字有了,但和我加载进度有毛关系?而且资源加载是会根据网速不同而不同,这50毫秒。。。假的进度,明显不行啊

    第一个问题,线性数字和实际资源加载联系起来,这个还是很容易的。从第一个资源开始,就同时触发触发上面的计时器,当最后一个资源加载完而且计算到100了,就完成了预加载过程。

    第二个问题,定时器的时间怎么和实际资源加载联系起来呢?定时器先根据资源数定一个初始值,加载过程通过把假的计算进度和真实的加载进度进行比较,实时调整定时器的时间,以达到尽可能的模拟实际进度:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    var _time = 50;
    var linearLoad = function(){
    if(_num_interval){
    clearInterval(_num_interval);
    }
    _num_interval = setInterval(function(){
    _num++;
    if(_num > 99 && (_loaded == _total)){
    clearInterval(_num_interval);
    _num = 100;
    console.log(_num);
    // 加载完毕
    console.log('加载完毕');
    return;
    }else if(_num > 99){
    clearInterval(_num_interval);
    return;
    }
    console.log(_num);
    if(_time > 1){
    adjustSpeed(_time_range);
    }
    }, _time)
    },
    adjustSpeed = function(range){
    //调节数字变化速度
    var per = (_loaded/_total).toFixed(2);
    if(parseInt(per*100) > _num){
    //如果实际加载速度快,提高线性数字速度
    _time = _time - range;
    _time = _time < 1 ? 1 : _time;
    linearLoad();
    }else{
    //如果实际加载慢,降低线性数字速度
    _time = _time + range;
    linearLoad();
    }
    }

    逻辑细节请移步测试demo:http://www.w3cmark.com/staticdemo/loading/

    效果预览

    loading.gif

    ]]>
    + + + + <p>为了提高用户体验,在做一些比较多资源的项目,我们经常会用资源预加载的方式,一打开页面会先看到一个loading动画效果或者loading进度条,再或者加载百分比,用来暗示用户,页面资源比较多,正在加载中啦,你再等等哈,不要走喔。。。</p> + + + + + + + + +
    + + + 使用chrome extension解决gitlab在线编辑时输入中文出现错乱的问题 + + http://w3cmark.com/2017/11/12/chrome-extension-solves-gitlab-online-edit-bug/ + 2017-11-12T12:25:26.000Z + 2024-10-09T11:43:02.239Z + + 先上一张gif效果图:

    gitlab-chrome-input-bug

    我们团队内部搭建了gitlab作为代码托管,目前的版本是GitLab Community Edition 8.17.5 9a564a8,在升级到这个版本时,发现在chrome下,在线编辑无法正常输入中文了,出现如上动图的错乱效果,而在firefox是正常的。

    一开始怀疑是chrome更新版本后的问题,但是github的在线编辑是正常的,后来通过chrome开发者工具debug,发现是gitlab使用的在线编辑器有问题。无论gitlab还是github,这种在线编辑代码都是借助于一些web编辑器实现的,比如aceeditor,而这里gitlab用的正是aceeditor,因此第一时间跑去aceeditor官网,嗯,人家的是正常的。所以gitlab出现这种问题的原因就是aceeditor编辑器的版本在新版chrome下的bug。

    找到问题源头,解决办法也就有眉目了:

    • 直接更新GitLab Community Edition版本到最新版,看看官方是否更换了aceeditor编辑器的版本解决了这个问题。

    • 升级gitlab,可能会担心升级过程会不会有什么新问题,特别是大版本更新就更要慎重。既然这样,那就直接自己在现版本手动去更新aceeditor编辑器,理论上找到gitlab的安装,找到编辑器的相关文件,替换成新的版本。前提是你要摸索清gitlab的目录结构,完整替换编辑器版本。听起来有点麻烦,而且也有一定风险~

    • 这里介绍另一种思路,通过chrome extension在打开编辑页时替换编辑器。这种不是治本的方案,但感觉也是一种思路,刚好团队本身有一个在用从chrome插件,所以把解决方案放进现有的插件即可。这个方案可能适用性和参考意义不大,但这种思路说不定能给到你一些新的想法呢

    下面详细说下第三种方案的操作细节:
    (涉及到chrome extension的相关细节,这里就不详细描述,默认你拥有chrome extension的开发能力)

    下载最新版的aceeditor编辑器

    这一步很简单,直接去官网下载即可aceeditor,然后把编辑器的相关文件放到chrome插件下,比如:

    1
    2
    3
    4
    |--src  //插件源码
    | |--js
    | | |--lib
    | | | |--src-min-noconflict //aceeditor

    到时候打包插件时会一起打包的。

    加载编辑器文件

    什么时候去加载新版的编辑器文件呢?因为我们只需要在gitlab编辑界面才用到,所以通过URL匹配来识别当前是编辑界面,然后再去加载aceeditor相关文件。另外还可以根据当前的编辑文件类型,来加载对应的编辑器文件,然后再通过chrome.tabs.executeScript来实现。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
    // when complete
    if (changeInfo.status === 'complete') {

    if(/https:\/\/(你的系统域名)\/.+\/(edit|blob)\/.+/ig.test(tab.url)){
    var newurl = tab.url.replace('(你的系统域名)',''),
    r_file_suffix = /((?!(\.|\/))[\s\S])+\.([a-z]+)/ig;
    newurl.match(r_file_suffix);
    var file_suffix = RegExp.$3,
    jsFiles = [
    '/js/lib/jquery-2.1.3.min.js',
    '/js/lib/src-min-noconflict/ace.js'
    ];
    //根据文件类型
    switch(file_suffix){
    case 'js':
    jsFiles.push('/js/lib/src-min-noconflict/mode-javascript.js');
    break;
    case 'tmpl':
    jsFiles.push('/js/lib/src-min-noconflict/mode-html.js');
    break;
    case 'md':
    jsFiles.push('/js/lib/src-min-noconflict/mode-markdown.js');
    break;
    default :
    jsFiles.push('/js/lib/src-min-noconflict/mode-'+ file_suffix +'.js');
    }
    //替换编辑器以及保存等逻辑
    jsFiles.push('/js/fixgitlabinput.js');

    chrome.tabs.executeScript(tabId, {
    code: 'var injected = window.octotreeInjected; window.octotreeInjected = true; injected;',
    runAt: 'document_start'
    }, function (res) {

    var cssFiles = ['/css/fixgitlabedit.css'];

    eachTask([function (cb) {
    return eachItem(cssFiles, inject('insertCSS'), cb);
    }, function (cb) {
    return eachItem(jsFiles, inject('executeScript'), cb);
    }]);

    function inject(fn) {
    return function (file, cb) {
    chrome.tabs[fn](tabId, { file: file, runAt: 'document_start' }, cb);
    };
    }
    });
    }
    }
    });

    替换操作

    加载到编辑器文件,那最后一步就是进行编辑器替换,以及新编辑器的初始化,最后还要在保存时把新编辑器的内容提交。
    这些逻辑放进了单独js文件fixgitlabinput.js处理。
    这里我选择通过插入一个新的按钮来进行新编辑器的切换:

    1
    2
    var fix_btn = '<span class="fix-btn" id="js-fix-btn">中文编辑</span>';
    $('body').append(fix_btn);

    当点击这个按钮时,会做两件事:
    (1)根据当前地址,获取目前编辑文件的内容
    (2)把获取到的文件内容用新的编辑器初始化,并隐藏旧版的编辑器,显示新版的编辑器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    var fix_btn = '<a href="#fixgitlabedit" class="fix-btn" id="js-fix-btn">中文编辑</a>';
    $('body').append(fix_btn);

    if(location.hash == '#fixgitlabedit'){
    //传入当前地址和文件类型
    fixeditor(curhref, file_mode);
    $('#js-fix-btn').hide();
    }

    function fixeditor(curhref, file_mode){
    //隐藏旧的编辑器
    $('#editor').hide();

    var fix_div = '<pre id="js-fix-editor" class="fix-editor"><pre>',
    new_editor,
    $old_editor_par = $('#editor').parent();
    // 插入新的编辑器
    $old_editor_par.append(fix_div);

    var $form_actions = $('form .form-actions');

    //隐藏旧的保存按钮
    $form_actions.find('.btn.commit-btn.js-commit-button.btn-create').hide();
    var new_submit_btn = '<button name="button" class="btn btn-create new-submit-btn">Commit Changes</button>';

    //插入新的保存按钮
    $form_actions.prepend(new_submit_btn);

    //保存操作
    $form_actions.on('click', '.new-submit-btn', function(e){
    if($(this).hasClass('disabled')){return;}
    e.preventDefault();
    $(this).addClass('disabled');
    //获取编辑器的内容,aceeditor提供的方法
    var new_val = new_editor.getValue();
    $('#file-content').val(new_val);
    $("form.form-horizontal.js-quick-submit.js-requires-input.js-edit-blob-form")[0].submit();
    })

    // 根据当前地址获取文件内容
    getHttpRequest(curhref, function(data){
    var r_editor_text = /\<pre class="js-edit-mode-pane" id="editor"\>([\s\S]*)\<\/pre\>/igm;
    data.match(r_editor_text);
    var editor_text = RegExp.$1;
    $old_editor_par.find('#js-fix-editor').html(editor_text);
    //获取编辑器的内容,aceeditor提供的方法
    new_editor = ace.edit("js-fix-editor");
    new_editor.session.setMode("ace/mode/"+file_mode);
    });
    }

    function getHttpRequest(href, callback){
    var xhr = new XMLHttpRequest();
    xhr.open("GET", href, true);
    xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
    var data = xhr.responseText;
    typeof callback == 'function' && callback(data);
    }
    }
    xhr.send();
    }

    到这里,就可以正常输入中文并保存了,对于没有接触chrome插件开发的人来说可能比较麻烦,so,就当新想法的折腾呗~

    ]]>
    + + + + <p>先上一张gif效果图:</p> +<p><img src="https://github.com/w3cmark/blog/blob/master/assets/gitlab-chrome-input-bug.gif?raw=true" alt="gitlab-chrome-input-bug"></p> +<p>我们团队内部搭建了gitlab作为代码托管,目前的版本是<code>GitLab Community Edition 8.17.5 9a564a8</code>,在升级到这个版本时,发现在chrome下,在线编辑无法正常输入中文了,出现如上动图的错乱效果,而在firefox是正常的。</p> + + + + + + + + + + +
    + + diff --git a/baidusitemap.xml b/baidusitemap.xml new file mode 100644 index 0000000000..0fc94f8a6b --- /dev/null +++ b/baidusitemap.xml @@ -0,0 +1,71 @@ + + + + http://w3cmark.com/2018/01/25/unfamiliar-html-tags/ + 2024-10-09 + + + http://w3cmark.com/2018/02/15/vue-bugs/ + 2024-10-09 + + + http://w3cmark.com/2018/01/02/webp-image-degradation-plan/ + 2024-10-09 + + + http://w3cmark.com/2018/01/20/python-getting-started/ + 2024-10-09 + + + http://w3cmark.com/2017/12/20/loading-effect-more-linear/ + 2024-10-09 + + + http://w3cmark.com/2017/12/24/small-program-bugs/ + 2024-10-09 + + + http://w3cmark.com/2018/06/29/translate-animating-svg-with-css/ + 2024-10-09 + + + http://w3cmark.com/2019/12/01/flutter/ + 2024-10-09 + + + http://w3cmark.com/2017/12/29/front-end-open-source-project-directory-structure/ + 2024-10-09 + + + http://w3cmark.com/2018/02/05/frontend-bugs/ + 2024-10-09 + + + http://w3cmark.com/2017/12/26/laraval-nova/ + 2024-10-09 + + + http://w3cmark.com/2024/10/08/kuakes/ + 2024-10-09 + + + http://w3cmark.com/2019/08/28/ams/ + 2024-10-09 + + + http://w3cmark.com/2019/09/08/export-default-imported-as-xxx-was-not-found/ + 2024-10-09 + + + http://w3cmark.com/2017/11/12/chrome-extension-solves-gitlab-online-edit-bug/ + 2024-10-09 + + + http://w3cmark.com/2018/01/15/common-toolset-memo/ + 2024-10-09 + + + http://w3cmark.com/2019/07/19/5G-impact-on-the-front-end/ + 2024-10-09 + + \ No newline at end of file diff --git a/categories/AMS/index.html b/categories/AMS/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/HTML/index.html b/categories/HTML/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/JavaScript/index.html b/categories/JavaScript/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/Python/index.html b/categories/Python/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/Webpack/index.html b/categories/Webpack/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/bugs/index.html b/categories/bugs/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/flutter/index.html b/categories/flutter/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/categories/translate/index.html b/categories/translate/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/categories/\345\205\266\345\256\203/index.html" "b/categories/\345\205\266\345\256\203/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/categories/\345\244\270\345\205\213/index.html" "b/categories/\345\244\270\345\205\213/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/categories/\345\260\217\347\250\213\345\272\217/index.html" "b/categories/\345\260\217\347\250\213\345\272\217/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/categories/\345\267\245\345\205\267/index.html" "b/categories/\345\267\245\345\205\267/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index ec3c4f04a8..0000000000 Binary files a/favicon.ico and /dev/null differ diff --git a/favicon.png b/favicon.png deleted file mode 100644 index 5460ff14c4..0000000000 Binary files a/favicon.png and /dev/null differ diff --git a/images/1g.png b/images/1g.png new file mode 100644 index 0000000000..caecf2084c Binary files /dev/null and b/images/1g.png differ diff --git a/images/2g.png b/images/2g.png new file mode 100644 index 0000000000..823cb2a948 Binary files /dev/null and b/images/2g.png differ diff --git a/images/3953273590_704e3899d5_m.jpg b/images/3953273590_704e3899d5_m.jpg deleted file mode 100644 index 9e5fb86654..0000000000 Binary files a/images/3953273590_704e3899d5_m.jpg and /dev/null differ diff --git a/images/3g.png b/images/3g.png new file mode 100644 index 0000000000..08c834dcea Binary files /dev/null and b/images/3g.png differ diff --git a/images/4g.png b/images/4g.png new file mode 100644 index 0000000000..cc58cdfb82 Binary files /dev/null and b/images/4g.png differ diff --git a/images/5g-01.png b/images/5g-01.png new file mode 100644 index 0000000000..89a984bd6c Binary files /dev/null and b/images/5g-01.png differ diff --git a/images/5g-02.png b/images/5g-02.png new file mode 100644 index 0000000000..cae9fb41be Binary files /dev/null and b/images/5g-02.png differ diff --git a/images/5g-03.jpg b/images/5g-03.jpg new file mode 100644 index 0000000000..dd1be7d7d5 Binary files /dev/null and b/images/5g-03.jpg differ diff --git a/images/5g-04.png b/images/5g-04.png new file mode 100644 index 0000000000..3eb9f0a30a Binary files /dev/null and b/images/5g-04.png differ diff --git a/images/5g-05.jpeg b/images/5g-05.jpeg new file mode 100644 index 0000000000..afb7ef0e7f Binary files /dev/null and b/images/5g-05.jpeg differ diff --git a/images/5g-06.png b/images/5g-06.png new file mode 100644 index 0000000000..f85c8f60c5 Binary files /dev/null and b/images/5g-06.png differ diff --git a/images/5g-07.png b/images/5g-07.png new file mode 100644 index 0000000000..36efd88fb3 Binary files /dev/null and b/images/5g-07.png differ diff --git a/images/5g-08.png b/images/5g-08.png new file mode 100644 index 0000000000..4b2fe9327b Binary files /dev/null and b/images/5g-08.png differ diff --git a/images/5g-09.jpg b/images/5g-09.jpg new file mode 100644 index 0000000000..fb8d60a7fd Binary files /dev/null and b/images/5g-09.jpg differ diff --git a/images/5g-10.jpg b/images/5g-10.jpg new file mode 100644 index 0000000000..05f90cc190 Binary files /dev/null and b/images/5g-10.jpg differ diff --git a/images/5g-11.png b/images/5g-11.png new file mode 100644 index 0000000000..031f568c69 Binary files /dev/null and b/images/5g-11.png differ diff --git a/images/5g-12.png b/images/5g-12.png new file mode 100644 index 0000000000..335251af03 Binary files /dev/null and b/images/5g-12.png differ diff --git a/images/5g-13.jpg b/images/5g-13.jpg new file mode 100644 index 0000000000..a3b387e300 Binary files /dev/null and b/images/5g-13.jpg differ diff --git a/images/5g-14.png b/images/5g-14.png new file mode 100644 index 0000000000..d8ca5c84ba Binary files /dev/null and b/images/5g-14.png differ diff --git a/images/5g-15.png b/images/5g-15.png new file mode 100644 index 0000000000..4f62e83d28 Binary files /dev/null and b/images/5g-15.png differ diff --git a/images/5g-16.jpg b/images/5g-16.jpg new file mode 100644 index 0000000000..103de9b310 Binary files /dev/null and b/images/5g-16.jpg differ diff --git a/images/5g-17.png b/images/5g-17.png new file mode 100644 index 0000000000..7d5e2a903c Binary files /dev/null and b/images/5g-17.png differ diff --git a/images/5g.png b/images/5g.png new file mode 100644 index 0000000000..12100be5dc Binary files /dev/null and b/images/5g.png differ diff --git a/images/abstract-1.jpg b/images/abstract-1.jpg deleted file mode 100644 index fe8b06a29e..0000000000 Binary files a/images/abstract-1.jpg and /dev/null differ diff --git a/images/abstract-10.jpg b/images/abstract-10.jpg deleted file mode 100644 index 6ea3479f3b..0000000000 Binary files a/images/abstract-10.jpg and /dev/null differ diff --git a/images/abstract-11.jpg b/images/abstract-11.jpg deleted file mode 100644 index 1da50a5fb8..0000000000 Binary files a/images/abstract-11.jpg and /dev/null differ diff --git a/images/abstract-12.jpg b/images/abstract-12.jpg deleted file mode 100644 index b16a35bd19..0000000000 Binary files a/images/abstract-12.jpg and /dev/null differ diff --git a/images/abstract-2.jpg b/images/abstract-2.jpg deleted file mode 100644 index 5881c605c2..0000000000 Binary files a/images/abstract-2.jpg and /dev/null differ diff --git a/images/abstract-3.jpg b/images/abstract-3.jpg deleted file mode 100644 index efa98926d4..0000000000 Binary files a/images/abstract-3.jpg and /dev/null differ diff --git a/images/abstract-4.jpg b/images/abstract-4.jpg deleted file mode 100644 index 4ad776d6f1..0000000000 Binary files a/images/abstract-4.jpg and /dev/null differ diff --git a/images/abstract-5.jpg b/images/abstract-5.jpg deleted file mode 100644 index 76a34910f2..0000000000 Binary files a/images/abstract-5.jpg and /dev/null differ diff --git a/images/abstract-6.jpg b/images/abstract-6.jpg deleted file mode 100644 index b360fde890..0000000000 Binary files a/images/abstract-6.jpg and /dev/null differ diff --git a/images/abstract-7.jpg b/images/abstract-7.jpg deleted file mode 100644 index 734663c35e..0000000000 Binary files a/images/abstract-7.jpg and /dev/null differ diff --git a/images/abstract-8.jpg b/images/abstract-8.jpg deleted file mode 100644 index 0ad7fa2422..0000000000 Binary files a/images/abstract-8.jpg and /dev/null differ diff --git a/images/ams.png b/images/ams.png new file mode 100644 index 0000000000..f675c6438e Binary files /dev/null and b/images/ams.png differ diff --git a/images/apple-touch-icon-114x114-precomposed.png b/images/apple-touch-icon-114x114-precomposed.png deleted file mode 100644 index 4785a176a9..0000000000 Binary files a/images/apple-touch-icon-114x114-precomposed.png and /dev/null differ diff --git a/images/apple-touch-icon-144x144-precomposed.png b/images/apple-touch-icon-144x144-precomposed.png deleted file mode 100644 index a7cc9b39d9..0000000000 Binary files a/images/apple-touch-icon-144x144-precomposed.png and /dev/null differ diff --git a/images/apple-touch-icon-72x72-precomposed.png b/images/apple-touch-icon-72x72-precomposed.png deleted file mode 100644 index 8238c8127a..0000000000 Binary files a/images/apple-touch-icon-72x72-precomposed.png and /dev/null differ diff --git a/images/apple-touch-icon-next.png b/images/apple-touch-icon-next.png new file mode 100644 index 0000000000..b957ec109f Binary files /dev/null and b/images/apple-touch-icon-next.png differ diff --git a/images/apple-touch-icon-precomposed.png b/images/apple-touch-icon-precomposed.png deleted file mode 100644 index c08c572aba..0000000000 Binary files a/images/apple-touch-icon-precomposed.png and /dev/null differ diff --git a/images/avatar.jpg b/images/avatar.jpg deleted file mode 100644 index 8bc5f23476..0000000000 Binary files a/images/avatar.jpg and /dev/null differ diff --git a/images/favicon-16x16-next.png b/images/favicon-16x16-next.png new file mode 100644 index 0000000000..a420402e7e Binary files /dev/null and b/images/favicon-16x16-next.png differ diff --git a/images/favicon-32x32-next.png b/images/favicon-32x32-next.png new file mode 100644 index 0000000000..0d0359c1ee Binary files /dev/null and b/images/favicon-32x32-next.png differ diff --git a/images/hpstr-jekyll-theme-preview.jpg b/images/hpstr-jekyll-theme-preview.jpg deleted file mode 100644 index 39930d6608..0000000000 Binary files a/images/hpstr-jekyll-theme-preview.jpg and /dev/null differ diff --git a/images/ipzy.png b/images/ipzy.png new file mode 100644 index 0000000000..38572caf46 Binary files /dev/null and b/images/ipzy.png differ diff --git a/images/kuakes2.png b/images/kuakes2.png new file mode 100644 index 0000000000..4df00bae0a Binary files /dev/null and b/images/kuakes2.png differ diff --git a/images/ps_neutral.png b/images/ps_neutral.png deleted file mode 100644 index a56e22c2aa..0000000000 Binary files a/images/ps_neutral.png and /dev/null differ diff --git a/images/triangular.png b/images/triangular.png deleted file mode 100644 index 11950fb155..0000000000 Binary files a/images/triangular.png and /dev/null differ diff --git a/images/twitter-card-summary-large-image.jpg b/images/twitter-card-summary-large-image.jpg deleted file mode 100644 index 1297780aa2..0000000000 Binary files a/images/twitter-card-summary-large-image.jpg and /dev/null differ diff --git a/images/witewall_3.png b/images/witewall_3.png deleted file mode 100644 index 89e9fbbc92..0000000000 Binary files a/images/witewall_3.png and /dev/null differ diff --git a/index.html b/index.html index c60f0f9cd0..e69de29bb2 100644 --- a/index.html +++ b/index.html @@ -1,42 +0,0 @@ ---- -layout: post-index -title: Latest Posts -description: "Describe this nonsense." -tags: [Jekyll, theme, themes, responsive, blog, modern] -comments: false -image: - feature: abstract-1.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ ---- - -{% for post in paginator.posts %} - -{% endfor %} - -{% include pagination.html %} \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 8de8f926e4..0000000000 --- a/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "hpstr-theme", - "author": "Michael Rose ", - "homepage": "http://mmistakes.github.io/jekyll-theme-hpstr/", - "repository": { - "type": "git", - "url": "git://github.com/mmistakes/jekyll-theme-hpstr.git" - }, - "bugs": { - "url": "https://github.com/mmistakes/jekyll-theme-hpstr/issues" - }, - "engines": { - "node": ">= 0.10.0" - }, - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-jshint": "~0.6.3", - "grunt-contrib-uglify": "~0.2.2", - "grunt-contrib-watch": "~0.5.2", - "grunt-contrib-imagemin": "~0.2.0", - "grunt-svgmin": "~0.2.0" - } -} diff --git a/page/2/index.html b/page/2/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/posts/index.html b/posts/index.html deleted file mode 100644 index f6da2b8065..0000000000 --- a/posts/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: post-index -title: All Posts -description: "An archive of posts." -comments: false ---- - -{% for post in site.posts %} - {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} - {% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %} - - {% if forloop.first %} -
    -

    {{ this_year }}

    - -
    - {% else %} - {% if this_year != next_year %} - - -
    -

    {{next_year}}

    -
      - {% endif %} - {% endif %} -{% endfor %} \ No newline at end of file diff --git a/search.xml b/search.xml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000000..6a28b5e70d --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,144 @@ + + + + + http://w3cmark.com/tags/index.html + + 2024-10-09T11:43:02.277Z + + + + + http://w3cmark.com/2018/01/25/unfamiliar-html-tags/ + + 2024-10-09T11:43:02.242Z + + + + + http://w3cmark.com/2018/02/15/vue-bugs/ + + 2024-10-09T11:43:02.242Z + + + + + http://w3cmark.com/2018/01/02/webp-image-degradation-plan/ + + 2024-10-09T11:43:02.242Z + + + + + http://w3cmark.com/about/index.html + + 2024-10-09T11:43:02.242Z + + + + + http://w3cmark.com/categories/index.html + + 2024-10-09T11:43:02.242Z + + + + + http://w3cmark.com/2018/01/20/python-getting-started/ + + 2024-10-09T11:43:02.241Z + + + + + http://w3cmark.com/2017/12/20/loading-effect-more-linear/ + + 2024-10-09T11:43:02.241Z + + + + + http://w3cmark.com/2017/12/24/small-program-bugs/ + + 2024-10-09T11:43:02.241Z + + + + + http://w3cmark.com/2018/06/29/translate-animating-svg-with-css/ + + 2024-10-09T11:43:02.241Z + + + + + http://w3cmark.com/2019/12/01/flutter/ + + 2024-10-09T11:43:02.240Z + + + + + http://w3cmark.com/2017/12/29/front-end-open-source-project-directory-structure/ + + 2024-10-09T11:43:02.240Z + + + + + http://w3cmark.com/2018/02/05/frontend-bugs/ + + 2024-10-09T11:43:02.240Z + + + + + http://w3cmark.com/2017/12/26/laraval-nova/ + + 2024-10-09T11:43:02.240Z + + + + + http://w3cmark.com/2024/10/08/kuakes/ + + 2024-10-09T11:43:02.240Z + + + + + http://w3cmark.com/2019/08/28/ams/ + + 2024-10-09T11:43:02.239Z + + + + + http://w3cmark.com/2019/09/08/export-default-imported-as-xxx-was-not-found/ + + 2024-10-09T11:43:02.239Z + + + + + http://w3cmark.com/2017/11/12/chrome-extension-solves-gitlab-online-edit-bug/ + + 2024-10-09T11:43:02.239Z + + + + + http://w3cmark.com/2018/01/15/common-toolset-memo/ + + 2024-10-09T11:43:02.239Z + + + + + http://w3cmark.com/2019/07/19/5G-impact-on-the-front-end/ + + 2024-10-09T11:43:02.238Z + + + + diff --git a/tags/5G/index.html b/tags/5G/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/AMS/index.html b/tags/AMS/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/Element-UI/index.html b/tags/Element-UI/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/Vue/index.html b/tags/Vue/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/Webpack/index.html b/tags/Webpack/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/alias/index.html b/tags/alias/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/bug/index.html b/tags/bug/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/bugs/index.html b/tags/bugs/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/chrome-extension/index.html b/tags/chrome-extension/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/cors/index.html b/tags/cors/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/css/index.html b/tags/css/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/export/index.html b/tags/export/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/flutter/index.html b/tags/flutter/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/gitlab/index.html b/tags/gitlab/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/html/index.html b/tags/html/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/import/index.html b/tags/import/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/index.html b/tags/index.html index 77da5ea0d0..e69de29bb2 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,28 +0,0 @@ ---- -layout: post-index -title: Tag Archive -description: "An archive of posts sorted by tag." -comments: false ---- - -{% capture site_tags %}{% for tag in site.tags %}{{ tag | first }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} -{% assign tags_list = site_tags | split:',' | sort %} - - - -{% for item in (0..site.tags.size) %}{% unless forloop.last %} - {% capture this_word %}{{ tags_list[item] | strip_newlines }}{% endcapture %} -
      -

      {{ this_word }}

      -
        - {% for post in site.tags[this_word] %}{% if post.title != null %} -
      • {{ post.title }}
      • - {% endif %}{% endfor %} -
      -
      -{% endunless %}{% endfor %} \ No newline at end of file diff --git a/tags/laraval/index.html b/tags/laraval/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/python/index.html b/tags/python/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/svg/index.html b/tags/svg/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/tags/index.html b/tags/tags/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/tools/index.html b/tags/tools/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tags/webp/index.html b/tags/webp/index.html new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/tags/\345\211\215\347\253\257/index.html" "b/tags/\345\211\215\347\253\257/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/tags/\345\244\270\345\205\213/index.html" "b/tags/\345\244\270\345\205\213/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/tags/\345\244\270\345\205\213\347\275\221\347\233\230/index.html" "b/tags/\345\244\270\345\205\213\347\275\221\347\233\230/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/tags/\345\275\261\350\247\206\350\265\204\346\272\220/index.html" "b/tags/\345\275\261\350\247\206\350\265\204\346\272\220/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git "a/tags/\346\200\273\347\273\223/index.html" "b/tags/\346\200\273\347\273\223/index.html" new file mode 100644 index 0000000000..e69de29bb2 diff --git a/theme-setup/index.md b/theme-setup/index.md deleted file mode 100644 index a135d289d3..0000000000 --- a/theme-setup/index.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -layout: page -title: Theme Setup -description: "Instructions on how to install and customize the modern Jekyll theme HPSTR." -image: - feature: abstract-11.jpg - credit: dargadgetz - creditlink: http://www.dargadgetz.com/ios-7-abstract-wallpaper-pack-for-iphone-5-and-ipod-touch-retina/ -share: true -modified: 2016-06-01T15:14:43-04:00 ---- - -General notes and suggestions for customizing **HPSTR**. - -HPSTR now requires [Jekyll](http://jekyllrb.com/) 3.0. Make sure to run `bundle update` if you aren't on the latest version to update all gem dependencies. - -## Basic Setup for a new Jekyll site - -1. [Install Bundler](http://bundler.io) `gem install bundler` and then install [Jekyll](http://jekyllrb.com) and all dependencies `bundle install`. -2. Fork the [HPSTR Jekyll Theme repo](https://github.com/mmistakes/jekyll-theme-hpstr/fork). -3. Clone the repo you just forked and rename it. -4. Edit `_config.yml` to personalize your site. -5. Check out the sample posts in `_posts` to see examples for pulling in large feature images, assigning categories and tags, and other YAML data. -6. Read the documentation below for further customization pointers and documentation. - - - -**Pro-tip:** Delete the `gh-pages` branch after cloning and start fresh by branching off `master`. There is a bunch of garbage in `gh-pages` used for the theme's demo site that I'm guessing you don't want on your site. -{: .notice} - ---- - -## Setup for an Existing Jekyll site - -1. Clone the following folders: `_includes`, `_layouts`, `_sass`, `assets`, and `images`. -2. Clone the following folders/files and personalize content as need: `about/`, `posts/`, `tags/`, `feed.xml` and `index.html`. -3. Edit `_config.yml` to personalize your site. - ---- - -## Running Jekyll - -The preferred method for running Jekyll is with `bundle exec`, but if you're willing to deal gem conflicts feel free to go cowboy with a `jekyll build` or `jekyll serve`. - -> In some cases, running executables without bundle exec may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle. -> ->However, this is unreliable and is the source of considerable pain. Even if it looks like it works, it may not work in the future or on another machine. - -```bash -bundle exec jekyll build - -bundle exec jekyll serve -``` - ---- - -## Folder Structure - -```bash -jekyll-theme-hpstr/ -├── _includes -| ├── browser-upgrade.html # prompt to upgrade browser on < IE8 -| ├── footer.html # site footer -| ├── head.html # site head -| ├── navigation.html # site navigation -| └── scripts.html # jQuery, plugins, GA, etc -├── _layouts -| ├── page.html # page layout -| ├── page.html # post-index layout used on home page -| └── post.html # post layout -├── _posts -├── _sass # Sass partials -├── assets -| ├── css # compiled stylesheets -| ├── js -| | ├── _main.js # plugin options -| | ├── scripts.min.js # concatenated and minifed site scripts -| | ├── plugins # plugin scripts -| └── └── vendor # jQuery and Modernizr scripts -├── images # images for posts and pages -├── _config.yml # Jekyll options -├── about/ # about page -├── posts/ # all posts -├── tags/ # all posts grouped by tag -└── index.html # home page with pagination -``` - ---- - -## Customization - -Most of the variables found here are used in the .html files found in `_includes` if you need to add or remove anything. A good place to start would be to add the `title`, `description`, and `url` for your site. Links are absolute and prefixed with `{{ "{{ site.url " }}}}` in the various `_includes` and `_layouts`, so remember to properly set `url`[^1] to `http://localhost:4000` when developing locally. - -### Disqus Comments - -Create a [Disqus](http://disqus.com) account and change `disqus_shortname` in `_config.yml` to the Disqus *shortname* you just setup. By default comments appear on all post and pages if you assigned a shortname. To disable commenting on a post or page, add the following to its YAML Front Matter: - -```yaml -comments: false -``` - -### Social Share Links - -To disable Facebook, Twitter, and Google+ share links on a post or page, add the following to its front matter: - -```yaml -share: false -``` - -### Owner/Author Information - -Change your name, and avatar photo (200x200 pixels or larger), email, and social networking URLs. If you want to link to an external image on Gravatar or something similar you'll need to edit the path in `navigation.html` since it assumes it is located in `/images`. - -### Google Analytics and Webmaster Tools - -Your Google Analytics ID goes here along with meta tags for [Google Webmaster Tools](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35179) and [Bing Webmaster Tools](https://ssl.bing.com/webmaster/configure/verify/ownershi) site verification. - -### Navigation Links - -To add additional links in the drop down menu edit `_data/navigation.yml`. Use the following format to set the URL and title for as many links as you'd like. *External links will open in a new window.* - -```yaml -- title: Portfolio - url: /portfolio/ - -- title: Made Mistakes - url: http://mademistakes.com -``` - ---- - -## Adding New Content - -Posts are stored in the `_posts` directory and named according to the `YEAR-MONTH-DAY-title.MARKUP` format as per [the usual](https://jekyllrb.com/docs/posts/). - -To streamline the creation of posts and pages, [Jekyll::Compose](https://github.com/jekyll/jekyll-compose) and [Octopress](https://github.com/octopress/octopress) are great plugins you can install to automate this process. - ---- - -### Jekyll _includes - -For the most part you can leave these as is since the author/owner details are pulled from `_config.yml`. That said you'll probably want to customize the copyright stuff in `footer.html` to your liking. - -### Reading Time - -On by default. To turn off remove `reading_time` from `_config.yml`. Default words per minute is set at 200 and can changed by updating `words_per_minute` in `_config.yml`. - -### Feature Images - -A good rule of thumb is to keep feature images nice and wide so you don't push the body text too far down. An image cropped around around 1024 x 256 pixels will keep file size down with an acceptable resolution for most devices. If you want to serve these images responsively I'd suggest looking at the [Jekyll Picture Tag](https://github.com/scottjehl/picturefill)[^2] plugin. - -The two layouts make the assumption that the feature images live in the *images* folder. To add a feature image to a post or page just include the filename in the front matter like so. - -```yaml -image: - feature: feature-image-filename.jpg - thumb: thumbnail-image.jpg #keep it square 200x200 px is good -``` - -If you want to apply attribution to a feature image use the following YAML front matter on posts or pages. Image credits appear directly below the feature image with a link back to the original source. - -```yaml -image: - feature: feature-image-filename.jpg - credit: Michael Rose #name of the person or site you want to credit - creditlink: http://mademistakes.com #url to their site or licensing -``` - -By default the `
      ` containing feature images is set to have a minimum height of 400px with CSS. Anything taller is hidden with an `overflow: hidden` declaration. You can customize the height of the homepage feature image and those appearing on posts/pages by modifying the following variables in `/_sass/_variables.scss`. - -```scss -$feature-image-height: 400px; // min 150px recommended -$front-page-feature-image-height: 400px; // min 150px recommended -``` - -#### Post/Page Thumbnails for OG and Twitter Cards - -Post and page thumbnails work the same way. These are used by [Open Graph](https://developers.facebook.com/docs/opengraph/) and [Twitter Cards](https://dev.twitter.com/docs/cards) meta tags found in `head.html`. If you don't assign a thumbnail the image you assigned to `site.owner.avatar` in `_config.yml` will be used. - -Here's an example of what a tweet to your site could look like if you activate Twitter Cards and include all the metas in your post's YAML. - -![Twitter Card summary large image screenshot]({{ site.url }}/images/twitter-card-summary-large-image.jpg) - -### Videos - -Video embeds are responsive and scale with the width of the main content block with the help of [FitVids](http://fitvidsjs.com/). - -### Twitter Cards - -Twitter cards make it possible to attach images and post summaries to Tweets that link to your content. Summary Card meta tags have been added to `head.html` to support this, you just need to [validate and apply your domain](https://dev.twitter.com/docs/cards) to turn it on. - -### Link Post Type - -Link blog like a champ by adding `link: http://url-you-want-linked` to a post's YAML front matter. Arrow glyph links to the post's permalink and the the `post-title` links to the source URL. Here's an [example of a link post]({{ site.url }}/sample-link-post/) if you need a visual. - ---- - -## Further Customization - -Jekyll 2.x added support for Sass files making it much easier to modify a theme's fonts and colors. By editing values found in `_sass/variables.scss` you can fine tune the site's colors and typography. - -For example if you wanted a red background instead of white you'd change `$bodycolor: #fff;` to `$bodycolor: $cc0033;`. - -To modify the site's JavaScript files I setup a Grunt build script to lint/concatenate/minify all scripts into `scripts.min.js`. [Install Node.js](http://nodejs.org/), then [install Grunt](http://gruntjs.com/getting-started), and then finally install the dependencies for the theme contained in `package.json`: - -```bash -npm install -``` - -From the theme's root, use `grunt` to concatenate JavaScript files and optimize `.jpg`, `.png` and `.svg` files in the `images/` folder. - -You can also use `grunt dev` in combination with `bundle exec jekyll serve` to watch for updates in JS files that Grunt will then automatically re-build as you write your code, which will in turn auto-generate your Jekyll site when developing locally. - ---- - -## Questions? - -Having a problem getting something to work or want to know why I setup something in a certain way? Ping me on Twitter [@mmistakes](http://twitter.com/mmistakes) or [file a GitHub Issue](https://github.com/mmistakes/jekyll-theme-hpstr/issues/new). And if you make something cool with this theme feel free to let me know. - ---- - -## License - -This theme is free and open source software, distributed under the [MIT License]({{ site.url }}/LICENSE) version 2 or later. So feel free to to modify this theme to suit your needs. - ---- - -[^1]: Used to generate absolute URLs in `feed.xml`, and for canonical URLs in `head.html`. Don't include a trailing `/` in your base url ie: http://mademistakes.com. When developing locally I suggest using http://localhost:4000 or whatever localhost you're using to properly load all theme stylesheets, scripts, and image assets. If you leave this variable blank all links will resolve correctly except those pointing to home. - -[^2]: If you're using GitHub Pages to host your site be aware that plugins are disabled. So you'll need to build your site locally and then manually deploy if you want to use this sweet plugin.