-
-
Notifications
You must be signed in to change notification settings - Fork 596
/
api.js
59 lines (47 loc) · 1.24 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
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
module.exports = (cssWithMappingToString) => {
const list = [];
// return the list of modules as css string
list.toString = function toString() {
return this.map((item) => {
const content = cssWithMappingToString(item);
if (item[2]) {
return `@media ${item[2]} {${content}}`;
}
return content;
}).join("");
};
// import a list of modules into the list
list.i = function i(modules, mediaQuery, dedupe) {
if (typeof modules === "string") {
modules = [[null, modules, ""]];
}
const alreadyImportedModules = {};
if (dedupe) {
for (let i = 0; i < this.length; i++) {
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]]) {
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = `${mediaQuery} and ${item[2]}`;
}
}
list.push(item);
}
};
return list;
};