tailwindcss 3.4.1 → 4.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -6
- package/dist/lib.d.mts +324 -0
- package/dist/lib.d.ts +324 -0
- package/dist/lib.js +11 -0
- package/dist/lib.mjs +11 -0
- package/index.css +5 -0
- package/package.json +29 -107
- package/preflight.css +355 -0
- package/theme.css +465 -0
- package/CHANGELOG.md +0 -2571
- package/base.css +0 -1
- package/colors.d.ts +0 -3
- package/colors.js +0 -2
- package/components.css +0 -1
- package/defaultConfig.d.ts +0 -3
- package/defaultConfig.js +0 -2
- package/defaultTheme.d.ts +0 -4
- package/defaultTheme.js +0 -2
- package/lib/cli/build/deps.js +0 -62
- package/lib/cli/build/index.js +0 -54
- package/lib/cli/build/plugin.js +0 -378
- package/lib/cli/build/utils.js +0 -88
- package/lib/cli/build/watching.js +0 -182
- package/lib/cli/help/index.js +0 -73
- package/lib/cli/index.js +0 -230
- package/lib/cli/init/index.js +0 -63
- package/lib/cli-peer-dependencies.js +0 -36
- package/lib/cli.js +0 -7
- package/lib/corePluginList.js +0 -190
- package/lib/corePlugins.js +0 -4282
- package/lib/css/LICENSE +0 -25
- package/lib/css/preflight.css +0 -385
- package/lib/featureFlags.js +0 -83
- package/lib/index.js +0 -2
- package/lib/lib/cacheInvalidation.js +0 -92
- package/lib/lib/collapseAdjacentRules.js +0 -61
- package/lib/lib/collapseDuplicateDeclarations.js +0 -85
- package/lib/lib/content.js +0 -181
- package/lib/lib/defaultExtractor.js +0 -251
- package/lib/lib/detectNesting.js +0 -45
- package/lib/lib/evaluateTailwindFunctions.js +0 -238
- package/lib/lib/expandApplyAtRules.js +0 -540
- package/lib/lib/expandTailwindAtRules.js +0 -291
- package/lib/lib/findAtConfigPath.js +0 -46
- package/lib/lib/generateRules.js +0 -904
- package/lib/lib/getModuleDependencies.js +0 -99
- package/lib/lib/load-config.js +0 -53
- package/lib/lib/normalizeTailwindDirectives.js +0 -89
- package/lib/lib/offsets.js +0 -306
- package/lib/lib/partitionApplyAtRules.js +0 -58
- package/lib/lib/regex.js +0 -74
- package/lib/lib/remap-bitfield.js +0 -89
- package/lib/lib/resolveDefaultsAtRules.js +0 -165
- package/lib/lib/setupContextUtils.js +0 -1294
- package/lib/lib/setupTrackingContext.js +0 -166
- package/lib/lib/sharedState.js +0 -87
- package/lib/lib/substituteScreenAtRules.js +0 -31
- package/lib/oxide/cli/build/deps.js +0 -89
- package/lib/oxide/cli/build/index.js +0 -53
- package/lib/oxide/cli/build/plugin.js +0 -375
- package/lib/oxide/cli/build/utils.js +0 -87
- package/lib/oxide/cli/build/watching.js +0 -179
- package/lib/oxide/cli/help/index.js +0 -72
- package/lib/oxide/cli/index.js +0 -214
- package/lib/oxide/cli/init/index.js +0 -52
- package/lib/oxide/cli.js +0 -5
- package/lib/oxide/postcss-plugin.js +0 -2
- package/lib/plugin.js +0 -98
- package/lib/postcss-plugins/nesting/README.md +0 -42
- package/lib/postcss-plugins/nesting/index.js +0 -21
- package/lib/postcss-plugins/nesting/plugin.js +0 -89
- package/lib/processTailwindFeatures.js +0 -64
- package/lib/public/colors.js +0 -355
- package/lib/public/create-plugin.js +0 -17
- package/lib/public/default-config.js +0 -18
- package/lib/public/default-theme.js +0 -18
- package/lib/public/load-config.js +0 -12
- package/lib/public/resolve-config.js +0 -24
- package/lib/util/applyImportantSelector.js +0 -36
- package/lib/util/bigSign.js +0 -13
- package/lib/util/buildMediaQuery.js +0 -27
- package/lib/util/cloneDeep.js +0 -22
- package/lib/util/cloneNodes.js +0 -54
- package/lib/util/color.js +0 -116
- package/lib/util/colorNames.js +0 -752
- package/lib/util/configurePlugins.js +0 -23
- package/lib/util/createPlugin.js +0 -32
- package/lib/util/createUtilityPlugin.js +0 -53
- package/lib/util/dataTypes.js +0 -415
- package/lib/util/defaults.js +0 -27
- package/lib/util/escapeClassName.js +0 -24
- package/lib/util/escapeCommas.js +0 -13
- package/lib/util/flattenColorPalette.js +0 -18
- package/lib/util/formatVariantSelector.js +0 -270
- package/lib/util/getAllConfigs.js +0 -50
- package/lib/util/hashConfig.js +0 -21
- package/lib/util/isKeyframeRule.js +0 -13
- package/lib/util/isPlainObject.js +0 -17
- package/lib/util/isSyntacticallyValidPropertyValue.js +0 -74
- package/lib/util/log.js +0 -61
- package/lib/util/nameClass.js +0 -49
- package/lib/util/negateValue.js +0 -36
- package/lib/util/normalizeConfig.js +0 -282
- package/lib/util/normalizeScreens.js +0 -178
- package/lib/util/parseAnimationValue.js +0 -93
- package/lib/util/parseBoxShadowValue.js +0 -88
- package/lib/util/parseDependency.js +0 -47
- package/lib/util/parseGlob.js +0 -36
- package/lib/util/parseObjectStyles.js +0 -36
- package/lib/util/pluginUtils.js +0 -289
- package/lib/util/prefixSelector.js +0 -39
- package/lib/util/pseudoElements.js +0 -212
- package/lib/util/removeAlphaVariables.js +0 -31
- package/lib/util/resolveConfig.js +0 -256
- package/lib/util/resolveConfigPath.js +0 -70
- package/lib/util/responsive.js +0 -24
- package/lib/util/splitAtTopLevelOnly.js +0 -51
- package/lib/util/tap.js +0 -14
- package/lib/util/toColorValue.js +0 -13
- package/lib/util/toPath.js +0 -32
- package/lib/util/transformThemeValue.js +0 -73
- package/lib/util/validateConfig.js +0 -37
- package/lib/util/validateFormalSyntax.js +0 -26
- package/lib/util/withAlphaVariable.js +0 -79
- package/lib/value-parser/LICENSE +0 -22
- package/lib/value-parser/README.md +0 -3
- package/lib/value-parser/index.d.js +0 -2
- package/lib/value-parser/index.js +0 -22
- package/lib/value-parser/parse.js +0 -259
- package/lib/value-parser/stringify.js +0 -38
- package/lib/value-parser/unit.js +0 -86
- package/lib/value-parser/walk.js +0 -16
- package/loadConfig.d.ts +0 -4
- package/loadConfig.js +0 -2
- package/nesting/index.d.ts +0 -4
- package/nesting/index.js +0 -2
- package/peers/index.js +0 -96624
- package/plugin.d.ts +0 -11
- package/plugin.js +0 -2
- package/prettier.config.js +0 -19
- package/resolveConfig.d.ts +0 -31
- package/resolveConfig.js +0 -2
- package/screens.css +0 -1
- package/scripts/create-plugin-list.js +0 -10
- package/scripts/generate-types.js +0 -104
- package/scripts/release-channel.js +0 -18
- package/scripts/release-notes.js +0 -21
- package/scripts/swap-engines.js +0 -40
- package/scripts/type-utils.js +0 -27
- package/src/cli/build/deps.js +0 -56
- package/src/cli/build/index.js +0 -49
- package/src/cli/build/plugin.js +0 -444
- package/src/cli/build/utils.js +0 -76
- package/src/cli/build/watching.js +0 -229
- package/src/cli/help/index.js +0 -70
- package/src/cli/index.js +0 -216
- package/src/cli/init/index.js +0 -79
- package/src/cli-peer-dependencies.js +0 -15
- package/src/cli.js +0 -7
- package/src/corePluginList.js +0 -1
- package/src/corePlugins.js +0 -2943
- package/src/css/LICENSE +0 -25
- package/src/css/preflight.css +0 -385
- package/src/featureFlags.js +0 -66
- package/src/index.js +0 -1
- package/src/lib/cacheInvalidation.js +0 -52
- package/src/lib/collapseAdjacentRules.js +0 -58
- package/src/lib/collapseDuplicateDeclarations.js +0 -93
- package/src/lib/content.js +0 -208
- package/src/lib/defaultExtractor.js +0 -230
- package/src/lib/detectNesting.js +0 -47
- package/src/lib/evaluateTailwindFunctions.js +0 -272
- package/src/lib/expandApplyAtRules.js +0 -620
- package/src/lib/expandTailwindAtRules.js +0 -300
- package/src/lib/findAtConfigPath.js +0 -48
- package/src/lib/generateRules.js +0 -951
- package/src/lib/getModuleDependencies.js +0 -79
- package/src/lib/load-config.ts +0 -39
- package/src/lib/normalizeTailwindDirectives.js +0 -84
- package/src/lib/offsets.js +0 -373
- package/src/lib/partitionApplyAtRules.js +0 -52
- package/src/lib/regex.js +0 -74
- package/src/lib/remap-bitfield.js +0 -82
- package/src/lib/resolveDefaultsAtRules.js +0 -163
- package/src/lib/setupContextUtils.js +0 -1366
- package/src/lib/setupTrackingContext.js +0 -169
- package/src/lib/sharedState.js +0 -61
- package/src/lib/substituteScreenAtRules.js +0 -19
- package/src/oxide/cli/build/deps.ts +0 -91
- package/src/oxide/cli/build/index.ts +0 -47
- package/src/oxide/cli/build/plugin.ts +0 -442
- package/src/oxide/cli/build/utils.ts +0 -74
- package/src/oxide/cli/build/watching.ts +0 -225
- package/src/oxide/cli/help/index.ts +0 -69
- package/src/oxide/cli/index.ts +0 -204
- package/src/oxide/cli/init/index.ts +0 -59
- package/src/oxide/cli.ts +0 -1
- package/src/oxide/postcss-plugin.ts +0 -1
- package/src/plugin.js +0 -107
- package/src/postcss-plugins/nesting/README.md +0 -42
- package/src/postcss-plugins/nesting/index.js +0 -13
- package/src/postcss-plugins/nesting/plugin.js +0 -80
- package/src/processTailwindFeatures.js +0 -59
- package/src/public/colors.js +0 -322
- package/src/public/create-plugin.js +0 -2
- package/src/public/default-config.js +0 -4
- package/src/public/default-theme.js +0 -4
- package/src/public/load-config.js +0 -2
- package/src/public/resolve-config.js +0 -7
- package/src/util/applyImportantSelector.js +0 -27
- package/src/util/bigSign.js +0 -3
- package/src/util/buildMediaQuery.js +0 -22
- package/src/util/cloneDeep.js +0 -11
- package/src/util/cloneNodes.js +0 -49
- package/src/util/color.js +0 -88
- package/src/util/colorNames.js +0 -150
- package/src/util/configurePlugins.js +0 -23
- package/src/util/createPlugin.js +0 -27
- package/src/util/createUtilityPlugin.js +0 -37
- package/src/util/dataTypes.js +0 -406
- package/src/util/defaults.js +0 -17
- package/src/util/escapeClassName.js +0 -8
- package/src/util/escapeCommas.js +0 -3
- package/src/util/flattenColorPalette.js +0 -13
- package/src/util/formatVariantSelector.js +0 -324
- package/src/util/getAllConfigs.js +0 -38
- package/src/util/hashConfig.js +0 -5
- package/src/util/isKeyframeRule.js +0 -3
- package/src/util/isPlainObject.js +0 -8
- package/src/util/isSyntacticallyValidPropertyValue.js +0 -61
- package/src/util/log.js +0 -29
- package/src/util/nameClass.js +0 -30
- package/src/util/negateValue.js +0 -24
- package/src/util/normalizeConfig.js +0 -301
- package/src/util/normalizeScreens.js +0 -140
- package/src/util/parseAnimationValue.js +0 -68
- package/src/util/parseBoxShadowValue.js +0 -72
- package/src/util/parseDependency.js +0 -44
- package/src/util/parseGlob.js +0 -24
- package/src/util/parseObjectStyles.js +0 -19
- package/src/util/pluginUtils.js +0 -307
- package/src/util/prefixSelector.js +0 -33
- package/src/util/pseudoElements.js +0 -171
- package/src/util/removeAlphaVariables.js +0 -24
- package/src/util/resolveConfig.js +0 -277
- package/src/util/resolveConfigPath.js +0 -66
- package/src/util/responsive.js +0 -10
- package/src/util/splitAtTopLevelOnly.js +0 -52
- package/src/util/tap.js +0 -4
- package/src/util/toColorValue.js +0 -3
- package/src/util/toPath.js +0 -26
- package/src/util/transformThemeValue.js +0 -62
- package/src/util/validateConfig.js +0 -26
- package/src/util/validateFormalSyntax.js +0 -34
- package/src/util/withAlphaVariable.js +0 -49
- package/src/value-parser/LICENSE +0 -22
- package/src/value-parser/README.md +0 -3
- package/src/value-parser/index.d.ts +0 -177
- package/src/value-parser/index.js +0 -28
- package/src/value-parser/parse.js +0 -303
- package/src/value-parser/stringify.js +0 -41
- package/src/value-parser/unit.js +0 -118
- package/src/value-parser/walk.js +0 -18
- package/stubs/.gitignore +0 -1
- package/stubs/.prettierrc.json +0 -6
- package/stubs/config.full.js +0 -1062
- package/stubs/config.simple.js +0 -7
- package/stubs/postcss.config.cjs +0 -6
- package/stubs/postcss.config.js +0 -6
- package/stubs/tailwind.config.cjs +0 -2
- package/stubs/tailwind.config.js +0 -2
- package/stubs/tailwind.config.ts +0 -3
- package/tailwind.css +0 -5
- package/types/config.d.ts +0 -376
- package/types/generated/.gitkeep +0 -0
- package/types/generated/colors.d.ts +0 -298
- package/types/generated/corePluginList.d.ts +0 -1
- package/types/generated/default-theme.d.ts +0 -397
- package/types/index.d.ts +0 -11
- package/variants.css +0 -1
@@ -1,82 +0,0 @@
|
|
1
|
-
// @ts-check
|
2
|
-
|
3
|
-
/**
|
4
|
-
* We must remap all the old bits to new bits for each set variant
|
5
|
-
* Only arbitrary variants are considered as those are the only
|
6
|
-
* ones that need to be re-sorted at this time
|
7
|
-
*
|
8
|
-
* An iterated process that removes and sets individual bits simultaneously
|
9
|
-
* will not work because we may have a new bit that is also a later old bit
|
10
|
-
* This means that we would be removing a previously set bit which we don't
|
11
|
-
* want to do
|
12
|
-
*
|
13
|
-
* For example (assume `bN` = `1<<N`)
|
14
|
-
* Given the "total" mapping `[[b1, b3], [b2, b4], [b3, b1], [b4, b2]]`
|
15
|
-
* The mapping is "total" because:
|
16
|
-
* 1. Every input and output is accounted for
|
17
|
-
* 2. All combinations are unique
|
18
|
-
* 3. No one input maps to multiple outputs and vice versa
|
19
|
-
* And, given an offset with all bits set:
|
20
|
-
* V = b1 | b2 | b3 | b4
|
21
|
-
*
|
22
|
-
* Let's explore the issue with removing and setting bits simultaneously:
|
23
|
-
* V & ~b1 | b3 = b2 | b3 | b4
|
24
|
-
* V & ~b2 | b4 = b3 | b4
|
25
|
-
* V & ~b3 | b1 = b1 | b4
|
26
|
-
* V & ~b4 | b2 = b1 | b2
|
27
|
-
*
|
28
|
-
* As you can see, we end up with the wrong result.
|
29
|
-
* This is because we're removing a bit that was previously set.
|
30
|
-
* And, thus the final result is missing b3 and b4.
|
31
|
-
*
|
32
|
-
* Now, let's explore the issue with removing the bits first:
|
33
|
-
* V & ~b1 = b2 | b3 | b4
|
34
|
-
* V & ~b2 = b3 | b4
|
35
|
-
* V & ~b3 = b4
|
36
|
-
* V & ~b4 = 0
|
37
|
-
*
|
38
|
-
* And then setting the bits:
|
39
|
-
* V | b3 = b3
|
40
|
-
* V | b4 = b3 | b4
|
41
|
-
* V | b1 = b1 | b3 | b4
|
42
|
-
* V | b2 = b1 | b2 | b3 | b4
|
43
|
-
*
|
44
|
-
* We get the correct result because we're not removing any bits that were
|
45
|
-
* previously set thus properly remapping the bits to the new order
|
46
|
-
*
|
47
|
-
* To collect this into a single operation that can be done simultaneously
|
48
|
-
* we must first create a mask for the old bits that are set and a mask for
|
49
|
-
* the new bits that are set. Then we can remove the old bits and set the new
|
50
|
-
* bits simultaneously in a "single" operation like so:
|
51
|
-
* OldMask = b1 | b2 | b3 | b4
|
52
|
-
* NewMask = b3 | b4 | b1 | b2
|
53
|
-
*
|
54
|
-
* So this:
|
55
|
-
* V & ~oldMask | newMask
|
56
|
-
*
|
57
|
-
* Expands to this:
|
58
|
-
* V & ~b1 & ~b2 & ~b3 & ~b4 | b3 | b4 | b1 | b2
|
59
|
-
*
|
60
|
-
* Which becomes this:
|
61
|
-
* b1 | b2 | b3 | b4
|
62
|
-
*
|
63
|
-
* Which is the correct result!
|
64
|
-
*
|
65
|
-
* @param {bigint} num
|
66
|
-
* @param {[bigint, bigint][]} mapping
|
67
|
-
*/
|
68
|
-
export function remapBitfield(num, mapping) {
|
69
|
-
// Create masks for the old and new bits that are set
|
70
|
-
let oldMask = 0n
|
71
|
-
let newMask = 0n
|
72
|
-
for (let [oldBit, newBit] of mapping) {
|
73
|
-
if (num & oldBit) {
|
74
|
-
oldMask = oldMask | oldBit
|
75
|
-
newMask = newMask | newBit
|
76
|
-
}
|
77
|
-
}
|
78
|
-
|
79
|
-
// Remove all old bits
|
80
|
-
// Set all new bits
|
81
|
-
return (num & ~oldMask) | newMask
|
82
|
-
}
|
@@ -1,163 +0,0 @@
|
|
1
|
-
import postcss from 'postcss'
|
2
|
-
import selectorParser from 'postcss-selector-parser'
|
3
|
-
import { flagEnabled } from '../featureFlags'
|
4
|
-
|
5
|
-
let getNode = {
|
6
|
-
id(node) {
|
7
|
-
return selectorParser.attribute({
|
8
|
-
attribute: 'id',
|
9
|
-
operator: '=',
|
10
|
-
value: node.value,
|
11
|
-
quoteMark: '"',
|
12
|
-
})
|
13
|
-
},
|
14
|
-
}
|
15
|
-
|
16
|
-
function minimumImpactSelector(nodes) {
|
17
|
-
let rest = nodes
|
18
|
-
.filter((node) => {
|
19
|
-
// Keep non-pseudo nodes
|
20
|
-
if (node.type !== 'pseudo') return true
|
21
|
-
|
22
|
-
// Keep pseudo nodes that have subnodes
|
23
|
-
// E.g.: `:not()` contains subnodes inside the parentheses
|
24
|
-
if (node.nodes.length > 0) return true
|
25
|
-
|
26
|
-
// Keep pseudo `elements`
|
27
|
-
// This implicitly means that we ignore pseudo `classes`
|
28
|
-
return (
|
29
|
-
node.value.startsWith('::') ||
|
30
|
-
[':before', ':after', ':first-line', ':first-letter'].includes(node.value)
|
31
|
-
)
|
32
|
-
})
|
33
|
-
.reverse()
|
34
|
-
|
35
|
-
let searchFor = new Set(['tag', 'class', 'id', 'attribute'])
|
36
|
-
|
37
|
-
let splitPointIdx = rest.findIndex((n) => searchFor.has(n.type))
|
38
|
-
if (splitPointIdx === -1) return rest.reverse().join('').trim()
|
39
|
-
|
40
|
-
let node = rest[splitPointIdx]
|
41
|
-
let bestNode = getNode[node.type] ? getNode[node.type](node) : node
|
42
|
-
|
43
|
-
rest = rest.slice(0, splitPointIdx)
|
44
|
-
|
45
|
-
let combinatorIdx = rest.findIndex((n) => n.type === 'combinator' && n.value === '>')
|
46
|
-
if (combinatorIdx !== -1) {
|
47
|
-
rest.splice(0, combinatorIdx)
|
48
|
-
rest.unshift(selectorParser.universal())
|
49
|
-
}
|
50
|
-
|
51
|
-
return [bestNode, ...rest.reverse()].join('').trim()
|
52
|
-
}
|
53
|
-
|
54
|
-
export let elementSelectorParser = selectorParser((selectors) => {
|
55
|
-
return selectors.map((s) => {
|
56
|
-
let nodes = s.split((n) => n.type === 'combinator' && n.value === ' ').pop()
|
57
|
-
return minimumImpactSelector(nodes)
|
58
|
-
})
|
59
|
-
})
|
60
|
-
|
61
|
-
let cache = new Map()
|
62
|
-
|
63
|
-
function extractElementSelector(selector) {
|
64
|
-
if (!cache.has(selector)) {
|
65
|
-
cache.set(selector, elementSelectorParser.transformSync(selector))
|
66
|
-
}
|
67
|
-
|
68
|
-
return cache.get(selector)
|
69
|
-
}
|
70
|
-
|
71
|
-
export default function resolveDefaultsAtRules({ tailwindConfig }) {
|
72
|
-
return (root) => {
|
73
|
-
let variableNodeMap = new Map()
|
74
|
-
|
75
|
-
/** @type {Set<import('postcss').AtRule>} */
|
76
|
-
let universals = new Set()
|
77
|
-
|
78
|
-
root.walkAtRules('defaults', (rule) => {
|
79
|
-
if (rule.nodes && rule.nodes.length > 0) {
|
80
|
-
universals.add(rule)
|
81
|
-
return
|
82
|
-
}
|
83
|
-
|
84
|
-
let variable = rule.params
|
85
|
-
if (!variableNodeMap.has(variable)) {
|
86
|
-
variableNodeMap.set(variable, new Set())
|
87
|
-
}
|
88
|
-
|
89
|
-
variableNodeMap.get(variable).add(rule.parent)
|
90
|
-
|
91
|
-
rule.remove()
|
92
|
-
})
|
93
|
-
|
94
|
-
if (flagEnabled(tailwindConfig, 'optimizeUniversalDefaults')) {
|
95
|
-
for (let universal of universals) {
|
96
|
-
/** @type {Map<string, Set<string>>} */
|
97
|
-
let selectorGroups = new Map()
|
98
|
-
|
99
|
-
let rules = variableNodeMap.get(universal.params) ?? []
|
100
|
-
|
101
|
-
for (let rule of rules) {
|
102
|
-
for (let selector of extractElementSelector(rule.selector)) {
|
103
|
-
// If selector contains a vendor prefix after a pseudo element or class,
|
104
|
-
// we consider them separately because merging the declarations into
|
105
|
-
// a single rule will cause browsers that do not understand the
|
106
|
-
// vendor prefix to throw out the whole rule
|
107
|
-
let selectorGroupName =
|
108
|
-
selector.includes(':-') || selector.includes('::-') ? selector : '__DEFAULT__'
|
109
|
-
|
110
|
-
let selectors = selectorGroups.get(selectorGroupName) ?? new Set()
|
111
|
-
selectorGroups.set(selectorGroupName, selectors)
|
112
|
-
|
113
|
-
selectors.add(selector)
|
114
|
-
}
|
115
|
-
}
|
116
|
-
|
117
|
-
if (flagEnabled(tailwindConfig, 'optimizeUniversalDefaults')) {
|
118
|
-
if (selectorGroups.size === 0) {
|
119
|
-
universal.remove()
|
120
|
-
continue
|
121
|
-
}
|
122
|
-
|
123
|
-
for (let [, selectors] of selectorGroups) {
|
124
|
-
let universalRule = postcss.rule({
|
125
|
-
source: universal.source,
|
126
|
-
})
|
127
|
-
|
128
|
-
universalRule.selectors = [...selectors]
|
129
|
-
|
130
|
-
universalRule.append(universal.nodes.map((node) => node.clone()))
|
131
|
-
universal.before(universalRule)
|
132
|
-
}
|
133
|
-
}
|
134
|
-
|
135
|
-
universal.remove()
|
136
|
-
}
|
137
|
-
} else if (universals.size) {
|
138
|
-
let universalRule = postcss.rule({
|
139
|
-
selectors: ['*', '::before', '::after'],
|
140
|
-
})
|
141
|
-
|
142
|
-
for (let universal of universals) {
|
143
|
-
universalRule.append(universal.nodes)
|
144
|
-
|
145
|
-
if (!universalRule.parent) {
|
146
|
-
universal.before(universalRule)
|
147
|
-
}
|
148
|
-
|
149
|
-
if (!universalRule.source) {
|
150
|
-
universalRule.source = universal.source
|
151
|
-
}
|
152
|
-
|
153
|
-
universal.remove()
|
154
|
-
}
|
155
|
-
|
156
|
-
let backdropRule = universalRule.clone({
|
157
|
-
selectors: ['::backdrop'],
|
158
|
-
})
|
159
|
-
|
160
|
-
universalRule.after(backdropRule)
|
161
|
-
}
|
162
|
-
}
|
163
|
-
}
|