1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | export default () => {
|
20 | if (!__CLIENT__) return {};
|
21 | if (typeof document.styleSheets !== 'object')
|
22 | throw new Error(`document.styleSheets not supported!`);
|
23 | const results = {};
|
24 | const sheets = document.styleSheets;
|
25 | for (let i = 0; i < sheets.length; i++) {
|
26 | const sheet = sheets[i];
|
27 | const owner = sheet.ownerNode;
|
28 | if (!owner) continue;
|
29 | if (owner.getAttribute(__STYLE_TAG_GLOBAL_ATTR_NAME__) === '')
|
30 | results._global = transformCSSStyleSheet(sheet);
|
31 | if (owner.getAttribute(__STYLE_TAG_MODULE_ATTR_NAME__))
|
32 | results[
|
33 | owner.getAttribute(__STYLE_TAG_MODULE_ATTR_NAME__)
|
34 | ] = transformCSSStyleSheet(sheet);
|
35 | }
|
36 | return results;
|
37 | };
|
38 |
|
39 | const transformCSSStyleSheet = sheet => {
|
40 | const rules = sheet.cssRules || sheet.rules;
|
41 | if (typeof rules !== 'object' || !rules.length) return {};
|
42 | return {
|
43 | text: [...rules].map(rule => rule.cssText || '').join('\r\n'),
|
44 | rules
|
45 | };
|
46 | };
|