/
api.js
103 lines (83 loc) · 2.16 KB
/
api.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
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function (cssWithMappingToString) {
const list = [];
// return the list of modules as css string
list.toString = function toString() {
return this.map((item) => {
let content = "";
if (item[4]) {
content += `@${item[4]} {`;
}
if (item[3]) {
content += `@${item[3]} {`;
}
if (item[2]) {
content += `@media ${item[2]} {`;
}
content += cssWithMappingToString(item);
if (item[2]) {
content += "}";
}
if (item[3]) {
content += "}";
}
if (item[4]) {
content += "}";
}
return content;
}).join("");
};
// import a list of modules into the list
// eslint-disable-next-line func-names
list.i = function (modules, mediaQueryList, dedupe, layer, supports) {
if (typeof modules === "string") {
// eslint-disable-next-line no-param-reassign
modules = [[null, modules, ""]];
}
const alreadyImportedModules = {};
if (dedupe) {
for (let i = 0; i < this.length; i++) {
// eslint-disable-next-line prefer-destructuring
const id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for (let i = 0; i < modules.length; i++) {
const item = [].concat(modules[i]);
if (dedupe && alreadyImportedModules[item[0]]) {
// eslint-disable-next-line no-continue
continue;
}
if (mediaQueryList) {
if (!item[2]) {
item[2] = mediaQueryList;
} else {
item[2] = `${mediaQueryList} and ${item[2]}`;
}
}
if (layer) {
if (!item[3]) {
item[3] = layer;
} else {
item[3] = `${layer} and ${item[3]}`;
}
}
if (supports) {
if (!item[4]) {
item[4] = supports;
} else {
item[4] = `${supports} and ${item[4]}`;
}
}
list.push(item);
}
};
return list;
};