2020-10-20 05:15:30 +00:00

64 lines
1.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _buildSelectorVariant = _interopRequireDefault(require("../util/buildSelectorVariant"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _default({
addVariant,
config,
postcss,
prefix
}) {
addVariant('dark', ({
container,
separator,
modifySelectors
}) => {
if (config('dark') === false) {
return postcss.root();
}
if (config('dark') === 'media') {
const modified = modifySelectors(({
selector
}) => {
return (0, _buildSelectorVariant.default)(selector, 'dark', separator, message => {
throw container.error(message);
});
});
const mediaQuery = postcss.atRule({
name: 'media',
params: '(prefers-color-scheme: dark)'
});
mediaQuery.append(modified);
container.append(mediaQuery);
return container;
}
if (config('dark') === 'class') {
const modified = modifySelectors(({
selector
}) => {
return (0, _buildSelectorVariant.default)(selector, 'dark', separator, message => {
throw container.error(message);
});
});
modified.walkRules(rule => {
rule.selectors = rule.selectors.map(selector => {
return `${prefix('.dark')} ${selector}`;
});
});
return modified;
}
throw new Error("The `dark` config option must be either 'media' or 'class'.");
}, {
unstable_stack: true
});
}