UNPKG

1.93 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4Object.defineProperty(exports, "__esModule", {
5 value: true
6});
7exports.default = void 0;
8var _excludeVariablesFromRoot = _interopRequireDefault(require("./excludeVariablesFromRoot"));
9var _default = theme => (colorScheme, css) => {
10 const root = theme.rootSelector || ':root';
11 const selector = theme.colorSchemeSelector;
12 let rule = selector;
13 if (selector === 'class') {
14 rule = '.%s';
15 }
16 if (selector === 'data') {
17 rule = '[data-%s]';
18 }
19 if (selector?.startsWith('data-') && !selector.includes('%s')) {
20 // 'data-mui-color-scheme' -> '[data-mui-color-scheme="%s"]'
21 rule = `[${selector}="%s"]`;
22 }
23 if (theme.defaultColorScheme === colorScheme) {
24 if (colorScheme === 'dark') {
25 const excludedVariables = {};
26 (0, _excludeVariablesFromRoot.default)(theme.cssVarPrefix).forEach(cssVar => {
27 excludedVariables[cssVar] = css[cssVar];
28 delete css[cssVar];
29 });
30 if (rule === 'media') {
31 return {
32 [root]: css,
33 [`@media (prefers-color-scheme: dark)`]: {
34 [root]: excludedVariables
35 }
36 };
37 }
38 if (rule) {
39 return {
40 [rule.replace('%s', colorScheme)]: excludedVariables,
41 [`${root}, ${rule.replace('%s', colorScheme)}`]: css
42 };
43 }
44 return {
45 [root]: {
46 ...css,
47 ...excludedVariables
48 }
49 };
50 }
51 if (rule && rule !== 'media') {
52 return `${root}, ${rule.replace('%s', String(colorScheme))}`;
53 }
54 } else if (colorScheme) {
55 if (rule === 'media') {
56 return {
57 [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {
58 [root]: css
59 }
60 };
61 }
62 if (rule) {
63 return rule.replace('%s', String(colorScheme));
64 }
65 }
66 return root;
67};
68exports.default = _default;
\No newline at end of file