forked from webpack-contrib/style-loader
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuseable.js
56 lines (50 loc) · 1.56 KB
/
useable.js
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
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
var path = require('path');
var loaderUtils = require("loader-utils");
var validateOptions = require('schema-utils');
module.exports = function () {};
module.exports.pitch = function (request) {
if (this.cacheable) this.cacheable();
var options = loaderUtils.getOptions(this) || {};
validateOptions(require('./options.json'), options, 'Style Loader (Useable)');
return [
"var refs = 0;",
"var dispose;",
"var content = require(" + loaderUtils.stringifyRequest(this, "!!" + request) + ");",
"if(typeof content === 'string') content = [[module.id, content, '']];",
"if(content.locals) exports.locals = content.locals;",
"exports.use = exports.ref = function() {",
" if(!(refs++)) {",
" dispose = require(" + loaderUtils.stringifyRequest(this, "!" + path.join(__dirname, "lib", "addUniversalStyles.js")) + ")(content, " + JSON.stringify(options) + ");",
" }",
" return exports;",
"};",
"exports.unuse = exports.unref = function() {",
" if(refs > 0 && !(--refs)) {",
" dispose();",
" dispose = null;",
" }",
"};",
"if(module.hot) {",
" var lastRefs = module.hot.data && module.hot.data.refs || 0;",
" if(lastRefs) {",
" exports.ref();",
" if(!content.locals) {",
" refs = lastRefs;",
" }",
" }",
" if(!content.locals) {",
" module.hot.accept();",
" }",
" module.hot.dispose(function(data) {",
" data.refs = content.locals ? 0 : refs;",
" if(dispose) {",
" dispose();",
" }",
" });",
"}"
].join("\n");
};