├── .gitignore ├── webpack.build.js ├── webpack.build.min.js ├── src ├── index.js ├── app.js ├── ClipLoader.vue ├── SquareLoader.vue ├── BeatLoader.vue ├── SyncLoader.vue ├── RotateLoader.vue ├── PulseLoader.vue ├── BounceLoader.vue ├── MoonLoader.vue ├── SkewLoader.vue ├── DotLoader.vue ├── ScaleLoader.vue ├── PacmanLoader.vue ├── RingLoader.vue ├── FadeLoader.vue ├── RiseLoader.vue └── GridLoader.vue ├── LICENSE ├── package.json ├── example ├── app.js └── app.css ├── webpack.config.js ├── README.md ├── index.html └── dist └── vue-spinner.min.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | build 4 | npm-debug.log -------------------------------------------------------------------------------- /webpack.build.js: -------------------------------------------------------------------------------- 1 | var config = require('./webpack.config.js') 2 | 3 | config.entry = { 4 | 'vue-spinner': './src/index.js', 5 | } 6 | 7 | config.output = { 8 | 9 | filename: './dist/[name].js', 10 | library: 'VueSpinner', 11 | libraryTarget: 'umd' 12 | } 13 | 14 | 15 | module.exports = config 16 | -------------------------------------------------------------------------------- /webpack.build.min.js: -------------------------------------------------------------------------------- 1 | var config = require('./webpack.build.js') 2 | var webpack = require('webpack') 3 | 4 | 5 | config.output.filename = config.output.filename.replace(/\.js$/, '.min.js') 6 | 7 | delete config.devtool 8 | 9 | config.plugins = [ 10 | new webpack.optimize.UglifyJsPlugin({ 11 | sourceMap: false, 12 | compress: { 13 | warnings: false 14 | } 15 | }), 16 | new webpack.optimize.OccurenceOrderPlugin() 17 | ] 18 | 19 | module.exports = config -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import PulseLoader from './PulseLoader.vue' 2 | import GridLoader from './GridLoader.vue' 3 | import ClipLoader from './ClipLoader.vue' 4 | import RiseLoader from './RiseLoader.vue' 5 | import BeatLoader from './BeatLoader.vue' 6 | import SyncLoader from './SyncLoader.vue' 7 | import RotateLoader from './RotateLoader.vue' 8 | import FadeLoader from './FadeLoader.vue' 9 | import PacmanLoader from './PacmanLoader.vue' 10 | import SquareLoader from './SquareLoader.vue' 11 | import ScaleLoader from './ScaleLoader.vue' 12 | import SkewLoader from './SkewLoader.vue' 13 | import MoonLoader from './MoonLoader.vue' 14 | import RingLoader from './RingLoader.vue' 15 | import BounceLoader from './BounceLoader.vue' 16 | import DotLoader from './DotLoader.vue' 17 | 18 | const VueSpinner = { 19 | PulseLoader, 20 | GridLoader, 21 | ClipLoader, 22 | RiseLoader, 23 | BeatLoader, 24 | SyncLoader, 25 | RotateLoader, 26 | FadeLoader, 27 | PacmanLoader, 28 | SquareLoader, 29 | ScaleLoader, 30 | SkewLoader, 31 | MoonLoader, 32 | RingLoader, 33 | BounceLoader, 34 | DotLoader 35 | } 36 | 37 | module.exports = VueSpinner 38 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 greyby 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-spinner", 3 | "version": "1.0.4", 4 | "description": "Spinners of Vue Components", 5 | "keywords": [ 6 | "spinner", 7 | "vuejs", 8 | "loading" 9 | ], 10 | "main": "src/app.js", 11 | "scripts": { 12 | "dev": "webpack-dev-server --inline --hot --quiet", 13 | "build": "NODE_ENV=production webpack --progress --hide-modules", 14 | "dist": "webpack --progress --hide-modules --config webpack.build.js && NODE_ENV=production webpack --progress --hide-modules --config webpack.build.min.js" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/greyby/vue-spinner.git" 19 | }, 20 | "author": "greyby", 21 | "devDependencies": { 22 | "vue": "^1.0.12", 23 | "babel-core": "^6.1.21", 24 | "babel-loader": "^6.1.0", 25 | "babel-plugin-transform-runtime": "^6.1.18", 26 | "babel-preset-es2015": "^6.1.18", 27 | "babel-runtime": "^5.8.0", 28 | "css-loader": "^0.21.0", 29 | "style-loader": "^0.13.0", 30 | "stylus-loader": "^1.4.0", 31 | "vue-hot-reload-api": "^1.2.0", 32 | "vue-html-loader": "^1.0.0", 33 | "vue-loader": "^7.2.0", 34 | "webpack": "^1.12.2", 35 | "webpack-dev-server": "^1.12.0", 36 | "extract-text-webpack-plugin": "^0.8.2" 37 | }, 38 | "license": "MIT" 39 | } 40 | -------------------------------------------------------------------------------- /example/app.js: -------------------------------------------------------------------------------- 1 | Vue.config.debug = true // turn on debugging mode 2 | var PulseLoader = VueSpinner.PulseLoader 3 | var GridLoader = VueSpinner.GridLoader 4 | var ClipLoader = VueSpinner.ClipLoader 5 | var RiseLoader = VueSpinner.RiseLoader 6 | var BeatLoader = VueSpinner.BeatLoader 7 | var SyncLoader = VueSpinner.SyncLoader 8 | var RotateLoader = VueSpinner.RotateLoader 9 | var FadeLoader = VueSpinner.FadeLoader 10 | var PacmanLoader = VueSpinner.PacmanLoader 11 | var SquareLoader = VueSpinner.SquareLoader 12 | var ScaleLoader = VueSpinner.ScaleLoader 13 | var SkewLoader = VueSpinner.SkewLoader 14 | var MoonLoader = VueSpinner.MoonLoader 15 | var RingLoader = VueSpinner.RingLoader 16 | var BounceLoader = VueSpinner.BounceLoader 17 | var DotLoader = VueSpinner.DotLoader 18 | 19 | new Vue({ 20 | el: '#app', 21 | components: { 22 | PulseLoader, 23 | GridLoader, 24 | ClipLoader, 25 | RiseLoader, 26 | BeatLoader, 27 | SyncLoader, 28 | RotateLoader, 29 | FadeLoader, 30 | PacmanLoader, 31 | SquareLoader, 32 | ScaleLoader, 33 | SkewLoader, 34 | MoonLoader, 35 | RingLoader, 36 | BounceLoader, 37 | DotLoader 38 | }, 39 | data () { 40 | return { 41 | color: '#3AB982', 42 | height: '35px', 43 | width: '4px', 44 | margin: '2px', 45 | radius: '2px' 46 | } 47 | } 48 | }) -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | import PulseLoader from './PulseLoader.vue' 2 | import GridLoader from './GridLoader.vue' 3 | import ClipLoader from './ClipLoader.vue' 4 | import RiseLoader from './RiseLoader.vue' 5 | import BeatLoader from './BeatLoader.vue' 6 | import SyncLoader from './SyncLoader.vue' 7 | import RotateLoader from './RotateLoader.vue' 8 | import FadeLoader from './FadeLoader.vue' 9 | import PacmanLoader from './PacmanLoader.vue' 10 | import SquareLoader from './SquareLoader.vue' 11 | import ScaleLoader from './ScaleLoader.vue' 12 | import SkewLoader from './SkewLoader.vue' 13 | import MoonLoader from './MoonLoader.vue' 14 | import RingLoader from './RingLoader.vue' 15 | import BounceLoader from './BounceLoader.vue' 16 | import DotLoader from './DotLoader.vue' 17 | 18 | 19 | Vue.config.debug = true 20 | 21 | new Vue({ 22 | el: '#app', 23 | components: { 24 | PulseLoader, 25 | GridLoader, 26 | ClipLoader, 27 | RiseLoader, 28 | BeatLoader, 29 | SyncLoader, 30 | RotateLoader, 31 | FadeLoader, 32 | PacmanLoader, 33 | SquareLoader, 34 | ScaleLoader, 35 | SkewLoader, 36 | MoonLoader, 37 | RingLoader, 38 | BounceLoader, 39 | DotLoader 40 | }, 41 | data () { 42 | return { 43 | color: '#5dc596', 44 | size: '15px', 45 | margin: '2px', 46 | radius: '100%' 47 | } 48 | } 49 | }) 50 | 51 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var vue = require('vue-loader') 2 | var webpack = require("webpack") 3 | var ExtractTextPlugin = require("extract-text-webpack-plugin") 4 | 5 | var cssLoader = ExtractTextPlugin.extract("style-loader", "css-loader") 6 | 7 | module.exports = { 8 | entry: { 9 | app: './src/app.js' 10 | }, 11 | output: { 12 | path: './build', 13 | publicPath: '/build/', 14 | filename: 'bundle.js' 15 | }, 16 | module: { 17 | loaders: [ 18 | { 19 | test: /\.vue$/, 20 | loader: 'vue' 21 | }, 22 | { 23 | test: /\.js$/, 24 | // excluding some local linked packages. 25 | // for normal use cases only node_modules is needed. 26 | exclude: /node_modules|vue\/src|vue-router\/|vue-loader\/|vue-hot-reload-api\//, 27 | loader: 'babel' 28 | }, 29 | { test: /\.css$/, loader: cssLoader } 30 | ] 31 | }, 32 | // vue: { 33 | // loaders: { 34 | // css: ExtractTextPlugin.extract("css"), 35 | // stylus: ExtractTextPlugin.extract("css!stylus") 36 | // } 37 | // }, 38 | devtool: "#source-map", 39 | babel: { 40 | presets: ['es2015'], 41 | plugins: ['transform-runtime'] 42 | } 43 | } 44 | 45 | if (process.env.NODE_ENV === 'production') { 46 | 47 | delete module.exports.devtool 48 | module.exports.plugins = [ 49 | new webpack.DefinePlugin({ 50 | 'process.env': { 51 | NODE_ENV: '"production"' 52 | } 53 | }), 54 | new webpack.optimize.UglifyJsPlugin({ 55 | compress: { 56 | warnings: false 57 | } 58 | }), 59 | new webpack.optimize.OccurenceOrderPlugin() 60 | // new ExtractTextPlugin("build.css") 61 | ] 62 | } else { 63 | // module.exports.plugins = [ 64 | // new ExtractTextPlugin("build.css") 65 | // ] 66 | // module.exports.devtool = '#source-map' 67 | } -------------------------------------------------------------------------------- /src/ClipLoader.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 46 | 47 | 107 | -------------------------------------------------------------------------------- /src/SquareLoader.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 39 | 40 | -------------------------------------------------------------------------------- /src/BeatLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 51 | 52 | -------------------------------------------------------------------------------- /src/SyncLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 66 | 67 | -------------------------------------------------------------------------------- /src/RotateLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 51 | 52 | -------------------------------------------------------------------------------- /src/PulseLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 66 | 67 | -------------------------------------------------------------------------------- /src/BounceLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 63 | 64 | -------------------------------------------------------------------------------- /src/MoonLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 72 | 73 | -------------------------------------------------------------------------------- /src/SkewLoader.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 41 | 42 | -------------------------------------------------------------------------------- /src/DotLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 57 | 58 | -------------------------------------------------------------------------------- /example/app.css: -------------------------------------------------------------------------------- 1 | html { 2 | -ms-text-size-adjust: 100%; 3 | -webkit-text-size-adjust: 100%; 4 | overflow-x: hidden; 5 | } 6 | 7 | *, 8 | *:before, 9 | *:after { 10 | -webkit-box-sizing: inherit; 11 | -moz-box-sizing: inherit; 12 | box-sizing: inherit; 13 | } 14 | 15 | body { 16 | font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif; 17 | font-size: 15px; 18 | -webkit-font-smoothing: antialiased; 19 | -moz-osx-font-smoothing: grayscale; 20 | color: #34495e; 21 | margin: 0; 22 | border-top: 2px solid #4fc08d; 23 | background-color: #f8f8f8; 24 | -webkit-box-sizing: border-box; 25 | -moz-box-sizing: border-box; 26 | box-sizing: border-box; 27 | } 28 | 29 | h1 { 30 | font-family: 'Dosis', 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif; 31 | font-weight: 300; 32 | font-size: 4em; 33 | color: #2c3e50; 34 | } 35 | 36 | h4, a { 37 | font-weight: 400; 38 | font-size: 15px; 39 | color: #7f8c8d; 40 | } 41 | 42 | p { 43 | word-spacing: 0.05em; 44 | } 45 | 46 | a { 47 | text-decoration: none; 48 | color: #34495e; 49 | } 50 | 51 | 52 | a.button { 53 | display: inline-block; 54 | width: 280px; 55 | margin: 0.5em; 56 | font-family: 'Roboto Mono', Monaco, courier, monospace; 57 | font-weight: 700; 58 | color: #fff; 59 | background-color: #4fc08d; 60 | border-bottom: 2px solid #3aa373; 61 | padding: 12px 14px; 62 | border-radius: 4px; 63 | transition: all 0.15s ease; 64 | } 65 | 66 | a.button:hover { 67 | background-color: #5dc596; 68 | -webkit-transform: translate(0, -2px); 69 | transform: translate(0, -2px); 70 | } 71 | 72 | #social { 73 | text-align: center; 74 | list-style-type: none; 75 | margin: 0 auto; 76 | padding: 0; 77 | margin: 1.5em auto; 78 | } 79 | 80 | #social li { 81 | display: inline-block; 82 | margin: 0 5px; 83 | vertical-align: middle; 84 | } 85 | 86 | ul { 87 | list-style-type: none; 88 | padding: 0; 89 | margin: 60px 0; 90 | } 91 | 92 | #wrapper { 93 | width: 960px; 94 | margin: 0 auto; 95 | min-height: 80px; 96 | text-align: center; 97 | } 98 | 99 | .list-container { 100 | 101 | border: 1px solid #eee; 102 | border-radius: 2px; 103 | background: #fff; 104 | 105 | display: -webkit-flex; 106 | display: flex; 107 | 108 | -webkit-flex-flow: row wrap; 109 | flex-flow: row wrap; 110 | 111 | -webkit-align-items: center; 112 | align-items: center; 113 | 114 | -webkit-justify-content: space-around; 115 | justify-content: space-around; 116 | 117 | } 118 | 119 | 120 | .spinner-list { 121 | 122 | /* width: 200px; 123 | height: 150px; 124 | line-height: 150px; 125 | color: white; 126 | font-weight: bold; 127 | font-size: 3em; 128 | text-align: center;*/ 129 | 130 | 131 | 132 | display: -webkit-flex; 133 | display: flex; 134 | 135 | webkit-flex: 0 1 auto; 136 | flex: 0 1 auto; 137 | 138 | -webkit-flex-flow: row wrap; 139 | flex-flow: row wrap; 140 | 141 | width: 200px; 142 | height: 200px; 143 | webkit-align-items: center; 144 | align-items: center; 145 | webkit-justify-content: center; 146 | justify-content: center; 147 | 148 | } 149 | 150 | @media screen and(max-width: 700px) { 151 | html, 152 | body { 153 | margin: 0; 154 | } 155 | #wrapper { 156 | width: 100%; 157 | } 158 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-spinner 2 | 3 | > Not support Vue 2.0. 4 | 5 | A collection of loading spinners with Vue.js. Just convert yuanyan's React.js project [Halogen](https://github.com/yuanyan/halogen) to Vue.js components. Special thanks to [yuanyan](https://github.com/yuanyan) for the wonderful project. 6 | 7 | ## [Live demo](http://greyby.github.io/vue-spinner/) 8 | 9 | ## Installation 10 | 11 | ### NPM 12 | ```bash 13 | $ npm install vue-spinner 14 | ``` 15 | 16 | ### CommonJS 17 | ```js 18 | var PulseLoader = require('vue-spinner/src/PulseLoader.vue'); 19 | 20 | new Vue({ 21 | components: { 22 | 'PulseLoader': PulseLoader 23 | } 24 | }) 25 | ``` 26 | 27 | ### ES6 28 | ```js 29 | import PulseLoader from 'vue-spinner/src/PulseLoader.vue' 30 | 31 | new Vue({ 32 | components: { 33 | PulseLoader 34 | } 35 | }) 36 | ``` 37 | Or: 38 | ```js 39 | Vue.component('pulse-loader', require('vue-spinner/src/PulseLoader.vue')); 40 | ``` 41 | 42 | ### For browserify 43 | If you use browserify + vueify, you may need to import vue-spinner like this: 44 | 45 | ```js 46 | var PulseLoader= require('vue-spinner/dist/vue-spinner.min').PulseLoader; 47 | ``` 48 | 49 | ```js 50 | import { PulseLoader } from 'vue-spinner/dist/vue-spinner.min.js' 51 | ``` 52 | 53 | [explain here](https://github.com/greyby/vue-spinner/issues/2) 54 | 55 | ### Browser globals 56 | The `dist` folder contains `vue-spinner.js` and `vue-spinner.min.js` with all components exported in the window.VueSpinner object. These bundles are also available on NPM packages. 57 | 58 | ```html 59 | 60 | 61 | 64 | ``` 65 | 66 | ## Local setup 67 | 68 | ``` 69 | npm install 70 | npm run dev 71 | ``` 72 | 73 | ## Usage 74 | 75 | ```html 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | ``` 93 | 94 | You can customize the color and size with setting the props. All props have default value. You can control the spinner show/hidden with setting the loading prop. 95 | 96 | ## TODO 97 | 98 | 99 | 100 | ## License 101 | 102 | vue-spinner is licensed under [The MIT License](LICENSE). 103 | -------------------------------------------------------------------------------- /src/ScaleLoader.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 80 | 81 | -------------------------------------------------------------------------------- /src/PacmanLoader.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 101 | 102 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue-spinner 6 | 7 | 8 | 9 | 10 |
11 |
12 |

vue-spinner

13 |

vue-spinner

14 | 15 |

16 | Source on GitHub 17 |

18 |
19 | 21 |
  • 23 |
    24 | 74 |
    75 |
    76 | 77 | 78 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/RingLoader.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 58 | 59 | -------------------------------------------------------------------------------- /src/FadeLoader.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 134 | 135 | -------------------------------------------------------------------------------- /src/RiseLoader.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 53 | 54 | -------------------------------------------------------------------------------- /src/GridLoader.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 138 | 139 | -------------------------------------------------------------------------------- /dist/vue-spinner.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueSpinner=e():t.VueSpinner=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var a=i[n]={exports:{},id:n,loaded:!1};return t[n].call(a.exports,a,a.exports,e),a.loaded=!0,a.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var a=i(75),r=n(a),o=i(72),s=n(o),l=i(69),d=n(l),p=i(77),f=n(p),c=i(67),u=n(c),v=i(82),m=n(v),y=i(78),b=n(y),h=i(71),g=n(h),x=i(74),S=n(x),k=i(81),w=n(k),D=i(79),Y=n(D),z=i(80),_=n(z),R=i(73),L=n(R),M=i(76),X=n(M),B=i(68),C=n(B),j=i(70),O=n(j),F={PulseLoader:r.default,GridLoader:s.default,ClipLoader:d.default,RiseLoader:f.default,BeatLoader:u.default,SyncLoader:m.default,RotateLoader:b.default,FadeLoader:g.default,PacmanLoader:S.default,SquareLoader:w.default,ScaleLoader:Y.default,SkewLoader:_.default,MoonLoader:L.default,RingLoader:X.default,BounceLoader:C.default,DotLoader:O.default};t.exports=F},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e=0&&g.splice(e,1)}function s(t){var e=document.createElement("style");return e.type="text/css",r(t,e),e}function l(t){var e=document.createElement("link");return e.rel="stylesheet",r(t,e),e}function d(t,e){var i,n,a;if(e.singleton){var r=h++;i=b||(b=s(e)),n=p.bind(null,i,r,!1),a=p.bind(null,i,r,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(i=l(e),n=c.bind(null,i),a=function(){o(i),i.href&&URL.revokeObjectURL(i.href)}):(i=s(e),n=f.bind(null,i),a=function(){o(i)});return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else a()}}function p(t,e,i,n){var a=i?"":n.css;if(t.styleSheet)t.styleSheet.cssText=x(e,a);else{var r=document.createTextNode(a),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function f(t,e){var i=e.css,n=e.media;if(n&&t.setAttribute("media",n),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}function c(t,e){var i=e.css,n=e.sourceMap;n&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */");var a=new Blob([i],{type:"text/css"}),r=t.href;t.href=URL.createObjectURL(a),r&&URL.revokeObjectURL(r)}var u={},v=function(t){var e;return function(){return"undefined"==typeof e&&(e=t.apply(this,arguments)),e}},m=v(function(){return/msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase())}),y=v(function(){return document.head||document.getElementsByTagName("head")[0]}),b=null,h=0,g=[];t.exports=function(t,e){e=e||{},"undefined"==typeof e.singleton&&(e.singleton=m()),"undefined"==typeof e.insertAt&&(e.insertAt="bottom");var i=a(t);return n(i,e),function(t){for(var r=[],o=0;o
    '},function(t,e){t.exports='
    '},function(t,e){t.exports="
    "},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports="
    "},function(t,e){t.exports="
    "},function(t,e){t.exports='
    '},function(t,e,i){var n,a;i(38),n=i(3),a=i(51),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(44),n=i(4),a=i(52),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(47),n=i(5),a=i(53),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(39),n=i(6),a=i(54),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(42),n=i(7),a=i(55),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(48),n=i(8),a=i(56),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(36),n=i(9),a=i(57),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(37),n=i(10),a=i(58),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(40),n=i(11),a=i(59),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(43),n=i(12),a=i(60),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(46),n=i(13),a=i(61),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(35),n=i(14),a=i(62),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(50),n=i(15),a=i(63),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(49),n=i(16),a=i(64),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(45),n=i(17),a=i(65),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)},function(t,e,i){var n,a;i(41),n=i(18),a=i(66),t.exports=n||{},t.exports.__esModule&&(t.exports=t.exports.default),a&&(("function"==typeof t.exports?t.exports.options:t.exports).template=a)}])}); --------------------------------------------------------------------------------