summaryrefslogtreecommitdiff
path: root/node_modules/tailwindcss/src/lib/partitionApplyAtRules.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /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.js52
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)
+ }
+}