├── .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 |
19 |

v-loading="loading"

20 | Loading this block 21 |
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 | 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 | 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