Spaces:
Sleeping
Sleeping
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| Object.defineProperty(exports, "nesting", { | |
| enumerable: true, | |
| get: function() { | |
| return nesting; | |
| } | |
| }); | |
| const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss")); | |
| const _postcssnested = /*#__PURE__*/ _interop_require_default(require("postcss-nested")); | |
| function _interop_require_default(obj) { | |
| return obj && obj.__esModule ? obj : { | |
| default: obj | |
| }; | |
| } | |
| function nesting(opts = _postcssnested.default) { | |
| return (root, result)=>{ | |
| root.walkAtRules("screen", (rule)=>{ | |
| rule.name = "media"; | |
| rule.params = `screen(${rule.params})`; | |
| }); | |
| root.walkAtRules("apply", (rule)=>{ | |
| rule.before(_postcss.default.decl({ | |
| prop: "__apply", | |
| value: rule.params, | |
| source: rule.source | |
| })); | |
| rule.remove(); | |
| }); | |
| let plugin = (()=>{ | |
| var _opts_hasOwnProperty; | |
| if (typeof opts === "function" || typeof opts === "object" && (opts === null || opts === void 0 ? void 0 : (_opts_hasOwnProperty = opts.hasOwnProperty) === null || _opts_hasOwnProperty === void 0 ? void 0 : _opts_hasOwnProperty.call(opts, "postcssPlugin"))) { | |
| return opts; | |
| } | |
| if (typeof opts === "string") { | |
| return require(opts); | |
| } | |
| if (Object.keys(opts).length <= 0) { | |
| return _postcssnested.default; | |
| } | |
| throw new Error("tailwindcss/nesting should be loaded with a nesting plugin."); | |
| })(); | |
| (0, _postcss.default)([ | |
| plugin | |
| ]).process(root, result.opts).sync(); | |
| root.walkDecls("__apply", (decl)=>{ | |
| decl.before(_postcss.default.atRule({ | |
| name: "apply", | |
| params: decl.value, | |
| source: decl.source | |
| })); | |
| decl.remove(); | |
| }); | |
| /** | |
| * Use a private PostCSS API to remove the "clean" flag from the entire AST. | |
| * This is done because running process() on the AST will set the "clean" | |
| * flag on all nodes, which we don't want. | |
| * | |
| * This causes downstream plugins using the visitor API to be skipped. | |
| * | |
| * This is guarded because the PostCSS API is not public | |
| * and may change in future versions of PostCSS. | |
| * | |
| * See https://github.com/postcss/postcss/issues/1712 for more details | |
| * | |
| * @param {import('postcss').Node} node | |
| */ function markDirty(node) { | |
| if (!("markDirty" in node)) { | |
| return; | |
| } | |
| // Traverse the tree down to the leaf nodes | |
| if (node.nodes) { | |
| node.nodes.forEach((n)=>markDirty(n)); | |
| } | |
| // If it's a leaf node mark it as dirty | |
| // We do this here because marking a node as dirty | |
| // will walk up the tree and mark all parents as dirty | |
| // resulting in a lot of unnecessary work if we did this | |
| // for every single node | |
| if (!node.nodes) { | |
| node.markDirty(); | |
| } | |
| } | |
| markDirty(root); | |
| return root; | |
| }; | |
| } | |