diff options
| author | Philipp Tanlak <philipp.tanlak@gmail.com> | 2025-11-24 20:54:57 +0100 |
|---|---|---|
| committer | Philipp Tanlak <philipp.tanlak@gmail.com> | 2025-11-24 20:57:48 +0100 |
| commit | b1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch) | |
| tree | 49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/tailwindcss/src/lib/partitionApplyAtRules.js | |
Docs
Diffstat (limited to 'node_modules/tailwindcss/src/lib/partitionApplyAtRules.js')
| -rw-r--r-- | node_modules/tailwindcss/src/lib/partitionApplyAtRules.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js b/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js new file mode 100644 index 0000000..34813c6 --- /dev/null +++ b/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js @@ -0,0 +1,52 @@ +function partitionRules(root) { + if (!root.walkAtRules) return + + let applyParents = new Set() + + root.walkAtRules('apply', (rule) => { + applyParents.add(rule.parent) + }) + + if (applyParents.size === 0) { + return + } + + for (let rule of applyParents) { + let nodeGroups = [] + let lastGroup = [] + + for (let node of rule.nodes) { + if (node.type === 'atrule' && node.name === 'apply') { + if (lastGroup.length > 0) { + nodeGroups.push(lastGroup) + lastGroup = [] + } + nodeGroups.push([node]) + } else { + lastGroup.push(node) + } + } + + if (lastGroup.length > 0) { + nodeGroups.push(lastGroup) + } + + if (nodeGroups.length === 1) { + continue + } + + for (let group of [...nodeGroups].reverse()) { + let clone = rule.clone({ nodes: [] }) + clone.append(group) + rule.after(clone) + } + + rule.remove() + } +} + +export default function expandApplyAtRules() { + return (root) => { + partitionRules(root) + } +} |