| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- Object.defineProperty(exports, "nesting", {
- enumerable: true,
- get: ()=>nesting
- });
- const _postcss = /*#__PURE__*/ _interopRequireDefault(require("postcss"));
- const _postcssNested = /*#__PURE__*/ _interopRequireDefault(require("postcss-nested"));
- function _interopRequireDefault(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;
- };
- }
|