├── .gitignore
├── dev
├── font
│ ├── OpenSans-Regular.eot
│ ├── OpenSans-Regular.ttf
│ ├── OpenSans-Regular.woff
│ └── OpenSans-Regular.svg
├── index.js
├── index.html
└── style.css
├── .babelrc
├── src
├── style.css
└── index.js
├── package.json
├── README.md
└── dist
├── vue-loading.js
└── vue-loading.js.map
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dev/dev/
4 | npm-debug.log
5 |
--------------------------------------------------------------------------------
/dev/font/OpenSans-Regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coffcer/vue-loading/HEAD/dev/font/OpenSans-Regular.eot
--------------------------------------------------------------------------------
/dev/font/OpenSans-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coffcer/vue-loading/HEAD/dev/font/OpenSans-Regular.ttf
--------------------------------------------------------------------------------
/dev/font/OpenSans-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Coffcer/vue-loading/HEAD/dev/font/OpenSans-Regular.woff
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-2"],
3 | "plugins": ["transform-runtime"],
4 | "comments": false
5 | }
6 |
--------------------------------------------------------------------------------
/dev/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import loading from '../src/index';
3 |
4 | new Vue({
5 | el: '#app',
6 | directives: { loading },
7 | data: {
8 | title: 'Vue Loading',
9 | desc: 'Vue directive for show loading block in anything',
10 | github: 'https://github.com/coffcer/vue-loading',
11 | // example
12 | loading: {
13 | a: false,
14 | b: false
15 | }
16 | },
17 | methods: {
18 | showLoading (example) {
19 | this.loading[example] = true;
20 |
21 | window.setTimeout(() => {
22 | this.loading[example] = false;
23 | }, 2000);
24 | }
25 | }
26 | })
27 |
--------------------------------------------------------------------------------
/src/style.css:
--------------------------------------------------------------------------------
1 | .vue-loading {
2 | position: absolute;
3 | top: 0px;
4 | left: 0px;
5 | z-index: 1000;
6 | margin: 0px;
7 | padding: 0px;
8 | width: 100%;
9 | height: 100%;
10 | border: none;
11 | background-color: rgba(230, 233, 236, 0.8);
12 | cursor: wait;
13 | opacity: 0;
14 | transition: opacity .4s;
15 | }
16 |
17 | .vue-loading-msg {
18 | box-sizing: content-box !important;
19 | position: absolute;
20 | z-index: 1001;
21 | margin: 0px;
22 | padding: 0 35px;
23 | height: 40px;
24 | top: 20%;
25 | left: 50%;
26 | text-align: center;
27 | font-size: 14px;
28 | line-height: 40px;
29 | cursor: wait;
30 | background-color: #f4f4f4;
31 | border-radius: 4px;
32 | box-shadow: 0 1px 8px rgba(0,0,0,.15);
33 | border: solid 1px #bbb;
34 | transform: translateX(-50%);
35 | }
--------------------------------------------------------------------------------
/dev/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vue Loading
8 |
9 |
10 |
11 |
12 |
{{ title }}
13 |
{{ desc }}
14 |
15 |
Source on GitHub
16 |
17 |
18 |
22 |
23 |
24 |
v-loading="loading"
25 |
:loading-options="{ text: 'custom text ...' }"
26 |
Loading this block
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-loading",
3 | "description": "Vue directive for show loading block in anything",
4 | "author": "coffcer",
5 | "main": "./dist/vue-loading.js",
6 | "version": "0.1.5",
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --hot --content-base dev/ --config ./build/dev.js --port 9090",
9 | "build": "cross-env NODE_ENV=production webpack --progress --hide-modules --config ./build/prod.js",
10 | "build:demo": "cross-env NODE_ENV=production webpack --progress --hide-modules --config ./build/dev.js"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/Coffcer/vue-loading"
15 | },
16 | "keywords": [
17 | "vue",
18 | "directive",
19 | "loading"
20 | ],
21 | "dependencies": {
22 | "vue": "^1.0.0"
23 | },
24 | "devDependencies": {
25 | "autoprefixer-loader": "^3.2.0",
26 | "babel-core": "^6.0.0",
27 | "babel-loader": "^6.0.0",
28 | "babel-plugin-transform-runtime": "^6.0.0",
29 | "babel-preset-es2015": "^6.0.0",
30 | "babel-preset-stage-2": "^6.0.0",
31 | "cross-env": "^1.0.6",
32 | "css-loader": "^0.23.1",
33 | "file-loader": "^0.8.4",
34 | "json-loader": "^0.5.4",
35 | "style-loader": "^0.13.1",
36 | "url-loader": "^0.5.7",
37 | "vue-hot-reload-api": "^1.2.0",
38 | "vue-html-loader": "^1.0.0",
39 | "vue-loader": "^8.2.1",
40 | "vue-style-loader": "^1.0.0",
41 | "webpack": "^1.12.2",
42 | "webpack-dev-server": "^1.12.0"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-loading
2 |
3 | > Vue directive for show loading block in any element.
4 |
5 | [Live demo and usage](http://coffcer.github.io/vue-loading/)
6 |
7 | Build by [vue-cli](https://github.com/vuejs/vue-cli) and [vue-cli-component](https://github.com/Coffcer/component)
8 |
9 | ## Usage
10 |
11 | General usage
12 | ```vue
13 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | ```
29 |
30 | You can also use `vue-loading` with vue-router [$loadingRouteData](http://vuejs.github.io/vue-router/en/pipeline/data.html#details)
31 | ```vue
32 |
46 |
47 |
48 |
49 |
50 | ```
51 |
52 | ## Options
53 |
54 | **text:**
55 | * loading block text
56 | * default value: "Loading ..."
57 |
58 | **bg:**
59 | * loading block backgroundColor css,
60 | * default value: "rgba(230, 233, 236, 0.8)"
61 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import './style.css';
2 |
3 | export default {
4 | params: ['loadingOptions'],
5 | handleShow () {
6 | let position = window.getComputedStyle(this.el).position;
7 |
8 | if (position === 'static' || position === '') {
9 | this.static = true;
10 | this.el.style.position = 'relative';
11 | }
12 |
13 | let box = document.createElement('div');
14 | box.className = 'vue-loading';
15 | box.style.backgroundColor = this.options.bg;
16 | this.el.appendChild(box);
17 |
18 | let msg = document.createElement('div');
19 | msg.className = 'vue-loading-msg';
20 | msg.textContent = this.options.text;
21 | box.appendChild(msg);
22 |
23 | window.requestAnimationFrame(() => {
24 | box.style.opacity = 1;
25 | });
26 |
27 | this.loadingBox = box;
28 | },
29 | handleHide () {
30 | this.loadingBox.addEventListener('transitionend', () => {
31 | this.loadingBox.remove();
32 |
33 | if (this.static) {
34 | this.el.style.removeProperty('position');
35 | }
36 | });
37 |
38 | this.loadingBox.style.opacity = 0.01;
39 | },
40 | bind () {
41 | // is static
42 | this.static = false;
43 | // vue-loading dom
44 | this.loadingBox = null;
45 | // is first call update
46 | this.first = true;
47 | // default options
48 | this.options = {
49 | text: 'Loading ...',
50 | bg: 'rgba(230, 233, 236, 0.8)'
51 | };
52 |
53 | if (this.params.loadingOptions) {
54 | Object.assign(this.options, this.params.loadingOptions);
55 | }
56 | },
57 | update (value) {
58 | if (value) {
59 | this.first = false;
60 | this.handleShow();
61 | } else {
62 | if (this.first) {
63 | this.first = false;
64 | return;
65 | }
66 | this.handleHide();
67 | }
68 | }
69 | };
70 |
--------------------------------------------------------------------------------
/dev/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "Open Sans";
3 | src: url("./font/OpenSans-Regular.eot?") format("eot"), url("./font/OpenSans-Regular.woff") format("woff"), url("./font/OpenSans-Regular.ttf") format("truetype"), url("./font/OpenSans-Regular.svg#OpenSans") format("svg");
4 | }
5 |
6 | * {
7 | box-sizing: border-box;
8 | }
9 |
10 | *:before,
11 | *:after {
12 | box-sizing: inherit;
13 | }
14 |
15 | body {
16 | margin: 0;
17 | font-family: 'Open Sans', 'Source Sans Pro', 'Helvetica Neue', 'Microsoft Yahei', Arial, sans-serif;
18 | color: #2c3e50;
19 | }
20 |
21 | a {
22 | color: #4F92C0;
23 | text-decoration: none;
24 | }
25 |
26 | h1, h2, h3, h4, h5, h6 {
27 | font-weight: 300;
28 | }
29 |
30 | a:hover {
31 | text-decoration: underline;
32 | }
33 |
34 | #app {
35 | margin: 40px auto;
36 | padding: 0 20px;
37 | max-width: 600px;
38 | text-align: center;
39 | }
40 |
41 | #main {
42 | margin-top: 70px;
43 | }
44 |
45 | .title {
46 | font-size: 4em;
47 | color: #4F92C0;
48 | }
49 |
50 | .desc {
51 | font-size: 15px;
52 | color: #7f8c8d;
53 | }
54 |
55 | .github-link {
56 | font-size: 22px;
57 | }
58 |
59 | .button {
60 | box-sizing: content-box;
61 | display: inline-block;
62 | width: 180px;
63 | margin: 0.5em;
64 | padding: 12px 14px;
65 | font-weight: 700;
66 | color: #fff;
67 | border-bottom: 2px solid;
68 | border-radius: 4px;
69 | -webkit-transition: all 0.15s ease;
70 | transition: all 0.15s ease;
71 | }
72 |
73 | .button.green {
74 | background-color: #4fc08d;
75 | border-bottom-color: #3aa373;
76 | }
77 |
78 | .button.blue {
79 | background-color: #4F92C0;
80 | border-bottom-color: #4881A9;
81 | }
82 |
83 | .button:hover {
84 | text-decoration: none;
85 | -webkit-transform: translate(0, -2px);
86 | -ms-transform: translate(0, -2px);
87 | transform: translate(0, -2px);
88 | }
89 |
90 | .block {
91 | display: flex;
92 | justify-content: center;
93 | align-items: center;
94 | flex-direction: column;
95 | padding: 50px 0;
96 | margin-bottom: 20px;
97 | height: 260px;
98 | border: solid 1px #ccc;
99 | border-radius: 4px;
100 | }
101 |
--------------------------------------------------------------------------------
/dist/vue-loading.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["vue-loading"]=e():t["vue-loading"]=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={exports:{},id:o,loaded:!1};return t[o].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function o(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=o(r);n(19),e["default"]={params:["loadingOptions"],handleShow:function(){var t=window.getComputedStyle(this.el).position;"static"!==t&&""!==t||(this["static"]=!0,this.el.style.position="relative");var e=document.createElement("div");e.className="vue-loading",e.style.backgroundColor=this.options.bg,this.el.appendChild(e);var n=document.createElement("div");n.className="vue-loading-msg",n.textContent=this.options.text,e.appendChild(n),window.requestAnimationFrame(function(){e.style.opacity=1}),this.loadingBox=e},handleHide:function(){var t=this;this.loadingBox.addEventListener("transitionend",function(){t.loadingBox.remove(),t["static"]&&t.el.style.removeProperty("position")}),this.loadingBox.style.opacity=0},bind:function(){this["static"]=!1,this.loadingBox=null,this.first=!0,this.options={text:"Loading ...",bg:"rgba(230, 233, 236, 0.8)"},this.params.loadingOptions&&(0,i["default"])(this.options,this.params.loadingOptions)},update:function(t){if(t)this.first=!1,this.handleShow();else{if(this.first)return void(this.first=!1);this.handleHide()}}}},function(t,e){var n=t.exports={version:"1.2.6"};"number"==typeof __e&&(__e=n)},function(t,e,n){t.exports={"default":n(3),__esModule:!0}},function(t,e,n){n(15),t.exports=n(1).Object.assign},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var o=n(4);t.exports=function(t,e,n){if(o(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,o){return t.call(e,n,o)};case 3:return function(n,o,r){return t.call(e,n,o,r)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var o=n(10),r=n(1),i=n(6),s="prototype",a=function(t,e,n){var u,c,f,l=t&a.F,p=t&a.G,d=t&a.S,h=t&a.P,g=t&a.B,v=t&a.W,b=p?r:r[e]||(r[e]={}),y=p?o:d?o[e]:(o[e]||{})[s];p&&(n=e);for(u in n)c=!l&&y&&u in y,c&&u in b||(f=c?y[u]:n[u],b[u]=p&&"function"!=typeof y[u]?n[u]:g&&c?i(f,o):v&&y[u]==f?function(t){var e=function(e){return this instanceof t?new t(e):t(e)};return e[s]=t[s],e}(f):h&&"function"==typeof f?i(Function.call,f):f,h&&((b[s]||(b[s]={}))[u]=f))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,t.exports=a},function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var o=n(5);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var n=Object;t.exports={create:n.create,getProto:n.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:n.getOwnPropertyDescriptor,setDesc:n.defineProperty,setDescs:n.defineProperties,getKeys:n.keys,getNames:n.getOwnPropertyNames,getSymbols:n.getOwnPropertySymbols,each:[].forEach}},function(t,e,n){var o=n(12),r=n(14),i=n(11);t.exports=n(9)(function(){var t=Object.assign,e={},n={},o=Symbol(),r="abcdefghijklmnopqrst";return e[o]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[o]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),s=arguments,a=s.length,u=1,c=o.getKeys,f=o.getSymbols,l=o.isEnum;a>u;)for(var p,d=i(s[u++]),h=f?c(d).concat(f(d)):c(d),g=h.length,v=0;g>v;)l.call(d,p=h[v++])&&(n[p]=d[p]);return n}:Object.assign},function(t,e,n){var o=n(7);t.exports=function(t){return Object(o(t))}},function(t,e,n){var o=n(8);o(o.S+o.F,"Object",{assign:n(13)})},function(t,e,n){e=t.exports=n(17)(),e.push([t.id,".vue-loading{top:0;left:0;z-index:1000;padding:0;width:100%;height:100%;border:none;background-color:rgba(230,233,236,.8);opacity:0;-webkit-transition:opacity .4s;transition:opacity .4s}.vue-loading,.vue-loading-msg{position:absolute;margin:0;cursor:wait}.vue-loading-msg{box-sizing:content-box!important;z-index:1001;padding:0 35px;height:40px;top:20%;left:50%;text-align:center;font-size:14px;line-height:40px;background-color:#f4f4f4;border-radius:4px;box-shadow:0 1px 8px rgba(0,0,0,.15);border:1px solid #bbb;-webkit-transform:translateX(-50%);transform:translateX(-50%)}",""])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e=0&&m.splice(e,1)}function a(t){var e=document.createElement("style");return e.type="text/css",i(t,e),e}function u(t){var e=document.createElement("link");return e.rel="stylesheet",i(t,e),e}function c(t,e){var n,o,r;if(e.singleton){var i=y++;n=b||(b=a(e)),o=f.bind(null,n,i,!1),r=f.bind(null,n,i,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=u(e),o=p.bind(null,n),r=function(){s(n),n.href&&URL.revokeObjectURL(n.href)}):(n=a(e),o=l.bind(null,n),r=function(){s(n)});return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else r()}}function f(t,e,n,o){var r=n?"":o.css;if(t.styleSheet)t.styleSheet.cssText=x(e,r);else{var i=document.createTextNode(r),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(i,s[e]):t.appendChild(i)}}function l(t,e){var n=e.css,o=e.media;if(o&&t.setAttribute("media",o),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function p(t,e){var n=e.css,o=e.sourceMap;o&&(n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var r=new Blob([n],{type:"text/css"}),i=t.href;t.href=URL.createObjectURL(r),i&&URL.revokeObjectURL(i)}var d={},h=function(t){var e;return function(){return"undefined"==typeof e&&(e=t.apply(this,arguments)),e}},g=h(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),v=h(function(){return document.head||document.getElementsByTagName("head")[0]}),b=null,y=0,m=[];t.exports=function(t,e){e=e||{},"undefined"==typeof e.singleton&&(e.singleton=g()),"undefined"==typeof e.insertAt&&(e.insertAt="bottom");var n=r(t);return o(n,e),function(t){for(var i=[],s=0;s index){\n\t var S = IObject($$[index++])\n\t , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n\t , length = keys.length\n\t , j = 0\n\t , key;\n\t while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n\t }\n\t return T;\n\t} : Object.assign;\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 7.1.13 ToObject(argument)\n\tvar defined = __webpack_require__(7);\n\tmodule.exports = function(it){\n\t return Object(defined(it));\n\t};\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 19.1.3.1 Object.assign(target, source)\n\tvar $export = __webpack_require__(8);\n\t\n\t$export($export.S + $export.F, 'Object', {assign: __webpack_require__(13)});\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(17)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".vue-loading{top:0;left:0;z-index:1000;padding:0;width:100%;height:100%;border:none;background-color:rgba(230,233,236,.8);opacity:0;-webkit-transition:opacity .4s;transition:opacity .4s}.vue-loading,.vue-loading-msg{position:absolute;margin:0;cursor:wait}.vue-loading-msg{box-sizing:content-box!important;z-index:1001;padding:0 35px;height:40px;top:20%;left:50%;text-align:center;font-size:14px;line-height:40px;background-color:#f4f4f4;border-radius:4px;box-shadow:0 1px 8px rgba(0,0,0,.15);border:1px solid #bbb;-webkit-transform:translateX(-50%);transform:translateX(-50%)}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\t// css base code, injected by the css-loader\r\n\tmodule.exports = function() {\r\n\t\tvar list = [];\r\n\t\r\n\t\t// return the list of modules as css string\r\n\t\tlist.toString = function toString() {\r\n\t\t\tvar result = [];\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar item = this[i];\r\n\t\t\t\tif(item[2]) {\r\n\t\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.push(item[1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result.join(\"\");\r\n\t\t};\r\n\t\r\n\t\t// import a list of modules into the list\r\n\t\tlist.i = function(modules, mediaQuery) {\r\n\t\t\tif(typeof modules === \"string\")\r\n\t\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\t\tvar alreadyImportedModules = {};\r\n\t\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\t\tvar id = this[i][0];\r\n\t\t\t\tif(typeof id === \"number\")\r\n\t\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t\t}\r\n\t\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\t\tvar item = modules[i];\r\n\t\t\t\t// skip already imported module\r\n\t\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlist.push(item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn list;\r\n\t};\r\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\r\n\t\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\t\tAuthor Tobias Koppers @sokra\r\n\t*/\r\n\tvar stylesInDom = {},\r\n\t\tmemoize = function(fn) {\r\n\t\t\tvar memo;\r\n\t\t\treturn function () {\r\n\t\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\r\n\t\t\t\treturn memo;\r\n\t\t\t};\r\n\t\t},\r\n\t\tisOldIE = memoize(function() {\r\n\t\t\treturn /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\r\n\t\t}),\r\n\t\tgetHeadElement = memoize(function () {\r\n\t\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\r\n\t\t}),\r\n\t\tsingletonElement = null,\r\n\t\tsingletonCounter = 0,\r\n\t\tstyleElementsInsertedAtTop = [];\r\n\t\r\n\tmodule.exports = function(list, options) {\r\n\t\tif(false) {\r\n\t\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\r\n\t\t}\r\n\t\r\n\t\toptions = options || {};\r\n\t\t// Force single-tag solution on IE6-9, which has a hard limit on the # of