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,177 +0,0 @@
|
|
1
|
-
declare namespace postcssValueParser {
|
2
|
-
interface BaseNode {
|
3
|
-
/**
|
4
|
-
* The offset, inclusive, inside the CSS value at which the node starts.
|
5
|
-
*/
|
6
|
-
sourceIndex: number
|
7
|
-
|
8
|
-
/**
|
9
|
-
* The offset, exclusive, inside the CSS value at which the node ends.
|
10
|
-
*/
|
11
|
-
sourceEndIndex: number
|
12
|
-
|
13
|
-
/**
|
14
|
-
* The node's characteristic value
|
15
|
-
*/
|
16
|
-
value: string
|
17
|
-
}
|
18
|
-
|
19
|
-
interface ClosableNode {
|
20
|
-
/**
|
21
|
-
* Whether the parsed CSS value ended before the node was properly closed
|
22
|
-
*/
|
23
|
-
unclosed?: true
|
24
|
-
}
|
25
|
-
|
26
|
-
interface AdjacentAwareNode {
|
27
|
-
/**
|
28
|
-
* The token at the start of the node
|
29
|
-
*/
|
30
|
-
before: string
|
31
|
-
|
32
|
-
/**
|
33
|
-
* The token at the end of the node
|
34
|
-
*/
|
35
|
-
after: string
|
36
|
-
}
|
37
|
-
|
38
|
-
interface CommentNode extends BaseNode, ClosableNode {
|
39
|
-
type: 'comment'
|
40
|
-
}
|
41
|
-
|
42
|
-
interface DivNode extends BaseNode, AdjacentAwareNode {
|
43
|
-
type: 'div'
|
44
|
-
}
|
45
|
-
|
46
|
-
interface FunctionNode extends BaseNode, ClosableNode, AdjacentAwareNode {
|
47
|
-
type: 'function'
|
48
|
-
|
49
|
-
/**
|
50
|
-
* Nodes inside the function
|
51
|
-
*/
|
52
|
-
nodes: Node[]
|
53
|
-
}
|
54
|
-
|
55
|
-
interface SpaceNode extends BaseNode {
|
56
|
-
type: 'space'
|
57
|
-
}
|
58
|
-
|
59
|
-
interface StringNode extends BaseNode, ClosableNode {
|
60
|
-
type: 'string'
|
61
|
-
|
62
|
-
/**
|
63
|
-
* The quote type delimiting the string
|
64
|
-
*/
|
65
|
-
quote: '"' | "'"
|
66
|
-
}
|
67
|
-
|
68
|
-
interface UnicodeRangeNode extends BaseNode {
|
69
|
-
type: 'unicode-range'
|
70
|
-
}
|
71
|
-
|
72
|
-
interface WordNode extends BaseNode {
|
73
|
-
type: 'word'
|
74
|
-
}
|
75
|
-
|
76
|
-
/**
|
77
|
-
* Any node parsed from a CSS value
|
78
|
-
*/
|
79
|
-
type Node =
|
80
|
-
| CommentNode
|
81
|
-
| DivNode
|
82
|
-
| FunctionNode
|
83
|
-
| SpaceNode
|
84
|
-
| StringNode
|
85
|
-
| UnicodeRangeNode
|
86
|
-
| WordNode
|
87
|
-
|
88
|
-
interface CustomStringifierCallback {
|
89
|
-
/**
|
90
|
-
* @param node The node to stringify
|
91
|
-
* @returns The serialized CSS representation of the node
|
92
|
-
*/
|
93
|
-
(nodes: Node): string | undefined
|
94
|
-
}
|
95
|
-
|
96
|
-
interface WalkCallback {
|
97
|
-
/**
|
98
|
-
* @param node The currently visited node
|
99
|
-
* @param index The index of the node in the series of parsed nodes
|
100
|
-
* @param nodes The series of parsed nodes
|
101
|
-
* @returns Returning `false` will prevent traversal of descendant nodes (only applies if `bubble` was set to `true` in the `walk()` call)
|
102
|
-
*/
|
103
|
-
(node: Node, index: number, nodes: Node[]): void | boolean
|
104
|
-
}
|
105
|
-
|
106
|
-
/**
|
107
|
-
* A CSS dimension, decomposed into its numeric and unit parts
|
108
|
-
*/
|
109
|
-
interface Dimension {
|
110
|
-
number: string
|
111
|
-
unit: string
|
112
|
-
}
|
113
|
-
|
114
|
-
/**
|
115
|
-
* A wrapper around a parsed CSS value that allows for inspecting and walking nodes
|
116
|
-
*/
|
117
|
-
interface ParsedValue {
|
118
|
-
/**
|
119
|
-
* The series of parsed nodes
|
120
|
-
*/
|
121
|
-
nodes: Node[]
|
122
|
-
|
123
|
-
/**
|
124
|
-
* Walk all parsed nodes, applying a callback
|
125
|
-
*
|
126
|
-
* @param callback A visitor callback that will be executed for each node
|
127
|
-
* @param bubble When set to `true`, walking will be done inside-out instead of outside-in
|
128
|
-
*/
|
129
|
-
walk(callback: WalkCallback, bubble?: boolean): this
|
130
|
-
}
|
131
|
-
|
132
|
-
interface ValueParser {
|
133
|
-
/**
|
134
|
-
* Decompose a CSS dimension into its numeric and unit part
|
135
|
-
*
|
136
|
-
* @param value The dimension to decompose
|
137
|
-
* @returns An object representing `number` and `unit` part of the dimension or `false` if the decomposing fails
|
138
|
-
*/
|
139
|
-
unit(value: string): Dimension | false
|
140
|
-
|
141
|
-
/**
|
142
|
-
* Serialize a series of nodes into a CSS value
|
143
|
-
*
|
144
|
-
* @param nodes The nodes to stringify
|
145
|
-
* @param custom A custom stringifier callback
|
146
|
-
* @returns The generated CSS value
|
147
|
-
*/
|
148
|
-
stringify(nodes: Node | Node[], custom?: CustomStringifierCallback): string
|
149
|
-
|
150
|
-
/**
|
151
|
-
* Walk a series of nodes, applying a callback
|
152
|
-
*
|
153
|
-
* @param nodes The nodes to walk
|
154
|
-
* @param callback A visitor callback that will be executed for each node
|
155
|
-
* @param bubble When set to `true`, walking will be done inside-out instead of outside-in
|
156
|
-
*/
|
157
|
-
walk(nodes: Node[], callback: WalkCallback, bubble?: boolean): void
|
158
|
-
|
159
|
-
/**
|
160
|
-
* Parse a CSS value into a series of nodes to operate on
|
161
|
-
*
|
162
|
-
* @param value The value to parse
|
163
|
-
*/
|
164
|
-
new (value: string): ParsedValue
|
165
|
-
|
166
|
-
/**
|
167
|
-
* Parse a CSS value into a series of nodes to operate on
|
168
|
-
*
|
169
|
-
* @param value The value to parse
|
170
|
-
*/
|
171
|
-
(value: string): ParsedValue
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
175
|
-
declare const postcssValueParser: postcssValueParser.ValueParser
|
176
|
-
|
177
|
-
export = postcssValueParser
|
@@ -1,28 +0,0 @@
|
|
1
|
-
var parse = require('./parse')
|
2
|
-
var walk = require('./walk')
|
3
|
-
var stringify = require('./stringify')
|
4
|
-
|
5
|
-
function ValueParser(value) {
|
6
|
-
if (this instanceof ValueParser) {
|
7
|
-
this.nodes = parse(value)
|
8
|
-
return this
|
9
|
-
}
|
10
|
-
return new ValueParser(value)
|
11
|
-
}
|
12
|
-
|
13
|
-
ValueParser.prototype.toString = function () {
|
14
|
-
return Array.isArray(this.nodes) ? stringify(this.nodes) : ''
|
15
|
-
}
|
16
|
-
|
17
|
-
ValueParser.prototype.walk = function (cb, bubble) {
|
18
|
-
walk(this.nodes, cb, bubble)
|
19
|
-
return this
|
20
|
-
}
|
21
|
-
|
22
|
-
ValueParser.unit = require('./unit')
|
23
|
-
|
24
|
-
ValueParser.walk = walk
|
25
|
-
|
26
|
-
ValueParser.stringify = stringify
|
27
|
-
|
28
|
-
module.exports = ValueParser
|
@@ -1,303 +0,0 @@
|
|
1
|
-
var openParentheses = '('.charCodeAt(0)
|
2
|
-
var closeParentheses = ')'.charCodeAt(0)
|
3
|
-
var singleQuote = "'".charCodeAt(0)
|
4
|
-
var doubleQuote = '"'.charCodeAt(0)
|
5
|
-
var backslash = '\\'.charCodeAt(0)
|
6
|
-
var slash = '/'.charCodeAt(0)
|
7
|
-
var comma = ','.charCodeAt(0)
|
8
|
-
var colon = ':'.charCodeAt(0)
|
9
|
-
var star = '*'.charCodeAt(0)
|
10
|
-
var uLower = 'u'.charCodeAt(0)
|
11
|
-
var uUpper = 'U'.charCodeAt(0)
|
12
|
-
var plus = '+'.charCodeAt(0)
|
13
|
-
var isUnicodeRange = /^[a-f0-9?-]+$/i
|
14
|
-
|
15
|
-
module.exports = function (input) {
|
16
|
-
var tokens = []
|
17
|
-
var value = input
|
18
|
-
|
19
|
-
var next, quote, prev, token, escape, escapePos, whitespacePos, parenthesesOpenPos
|
20
|
-
var pos = 0
|
21
|
-
var code = value.charCodeAt(pos)
|
22
|
-
var max = value.length
|
23
|
-
var stack = [{ nodes: tokens }]
|
24
|
-
var balanced = 0
|
25
|
-
var parent
|
26
|
-
|
27
|
-
var name = ''
|
28
|
-
var before = ''
|
29
|
-
var after = ''
|
30
|
-
|
31
|
-
while (pos < max) {
|
32
|
-
// Whitespaces
|
33
|
-
if (code <= 32) {
|
34
|
-
next = pos
|
35
|
-
do {
|
36
|
-
next += 1
|
37
|
-
code = value.charCodeAt(next)
|
38
|
-
} while (code <= 32)
|
39
|
-
token = value.slice(pos, next)
|
40
|
-
|
41
|
-
prev = tokens[tokens.length - 1]
|
42
|
-
if (code === closeParentheses && balanced) {
|
43
|
-
after = token
|
44
|
-
} else if (prev && prev.type === 'div') {
|
45
|
-
prev.after = token
|
46
|
-
prev.sourceEndIndex += token.length
|
47
|
-
} else if (
|
48
|
-
code === comma ||
|
49
|
-
code === colon ||
|
50
|
-
(code === slash &&
|
51
|
-
value.charCodeAt(next + 1) !== star &&
|
52
|
-
(!parent || (parent && parent.type === 'function' && false)))
|
53
|
-
) {
|
54
|
-
before = token
|
55
|
-
} else {
|
56
|
-
tokens.push({
|
57
|
-
type: 'space',
|
58
|
-
sourceIndex: pos,
|
59
|
-
sourceEndIndex: next,
|
60
|
-
value: token,
|
61
|
-
})
|
62
|
-
}
|
63
|
-
|
64
|
-
pos = next
|
65
|
-
|
66
|
-
// Quotes
|
67
|
-
} else if (code === singleQuote || code === doubleQuote) {
|
68
|
-
next = pos
|
69
|
-
quote = code === singleQuote ? "'" : '"'
|
70
|
-
token = {
|
71
|
-
type: 'string',
|
72
|
-
sourceIndex: pos,
|
73
|
-
quote: quote,
|
74
|
-
}
|
75
|
-
do {
|
76
|
-
escape = false
|
77
|
-
next = value.indexOf(quote, next + 1)
|
78
|
-
if (~next) {
|
79
|
-
escapePos = next
|
80
|
-
while (value.charCodeAt(escapePos - 1) === backslash) {
|
81
|
-
escapePos -= 1
|
82
|
-
escape = !escape
|
83
|
-
}
|
84
|
-
} else {
|
85
|
-
value += quote
|
86
|
-
next = value.length - 1
|
87
|
-
token.unclosed = true
|
88
|
-
}
|
89
|
-
} while (escape)
|
90
|
-
token.value = value.slice(pos + 1, next)
|
91
|
-
token.sourceEndIndex = token.unclosed ? next : next + 1
|
92
|
-
tokens.push(token)
|
93
|
-
pos = next + 1
|
94
|
-
code = value.charCodeAt(pos)
|
95
|
-
|
96
|
-
// Comments
|
97
|
-
} else if (code === slash && value.charCodeAt(pos + 1) === star) {
|
98
|
-
next = value.indexOf('*/', pos)
|
99
|
-
|
100
|
-
token = {
|
101
|
-
type: 'comment',
|
102
|
-
sourceIndex: pos,
|
103
|
-
sourceEndIndex: next + 2,
|
104
|
-
}
|
105
|
-
|
106
|
-
if (next === -1) {
|
107
|
-
token.unclosed = true
|
108
|
-
next = value.length
|
109
|
-
token.sourceEndIndex = next
|
110
|
-
}
|
111
|
-
|
112
|
-
token.value = value.slice(pos + 2, next)
|
113
|
-
tokens.push(token)
|
114
|
-
|
115
|
-
pos = next + 2
|
116
|
-
code = value.charCodeAt(pos)
|
117
|
-
|
118
|
-
// Operation within calc
|
119
|
-
} else if ((code === slash || code === star) && parent && parent.type === 'function' && true) {
|
120
|
-
token = value[pos]
|
121
|
-
tokens.push({
|
122
|
-
type: 'word',
|
123
|
-
sourceIndex: pos - before.length,
|
124
|
-
sourceEndIndex: pos + token.length,
|
125
|
-
value: token,
|
126
|
-
})
|
127
|
-
pos += 1
|
128
|
-
code = value.charCodeAt(pos)
|
129
|
-
|
130
|
-
// Dividers
|
131
|
-
} else if (code === slash || code === comma || code === colon) {
|
132
|
-
token = value[pos]
|
133
|
-
|
134
|
-
tokens.push({
|
135
|
-
type: 'div',
|
136
|
-
sourceIndex: pos - before.length,
|
137
|
-
sourceEndIndex: pos + token.length,
|
138
|
-
value: token,
|
139
|
-
before: before,
|
140
|
-
after: '',
|
141
|
-
})
|
142
|
-
before = ''
|
143
|
-
|
144
|
-
pos += 1
|
145
|
-
code = value.charCodeAt(pos)
|
146
|
-
|
147
|
-
// Open parentheses
|
148
|
-
} else if (openParentheses === code) {
|
149
|
-
// Whitespaces after open parentheses
|
150
|
-
next = pos
|
151
|
-
do {
|
152
|
-
next += 1
|
153
|
-
code = value.charCodeAt(next)
|
154
|
-
} while (code <= 32)
|
155
|
-
parenthesesOpenPos = pos
|
156
|
-
token = {
|
157
|
-
type: 'function',
|
158
|
-
sourceIndex: pos - name.length,
|
159
|
-
value: name,
|
160
|
-
before: value.slice(parenthesesOpenPos + 1, next),
|
161
|
-
}
|
162
|
-
pos = next
|
163
|
-
|
164
|
-
if (name === 'url' && code !== singleQuote && code !== doubleQuote) {
|
165
|
-
next -= 1
|
166
|
-
do {
|
167
|
-
escape = false
|
168
|
-
next = value.indexOf(')', next + 1)
|
169
|
-
if (~next) {
|
170
|
-
escapePos = next
|
171
|
-
while (value.charCodeAt(escapePos - 1) === backslash) {
|
172
|
-
escapePos -= 1
|
173
|
-
escape = !escape
|
174
|
-
}
|
175
|
-
} else {
|
176
|
-
value += ')'
|
177
|
-
next = value.length - 1
|
178
|
-
token.unclosed = true
|
179
|
-
}
|
180
|
-
} while (escape)
|
181
|
-
// Whitespaces before closed
|
182
|
-
whitespacePos = next
|
183
|
-
do {
|
184
|
-
whitespacePos -= 1
|
185
|
-
code = value.charCodeAt(whitespacePos)
|
186
|
-
} while (code <= 32)
|
187
|
-
if (parenthesesOpenPos < whitespacePos) {
|
188
|
-
if (pos !== whitespacePos + 1) {
|
189
|
-
token.nodes = [
|
190
|
-
{
|
191
|
-
type: 'word',
|
192
|
-
sourceIndex: pos,
|
193
|
-
sourceEndIndex: whitespacePos + 1,
|
194
|
-
value: value.slice(pos, whitespacePos + 1),
|
195
|
-
},
|
196
|
-
]
|
197
|
-
} else {
|
198
|
-
token.nodes = []
|
199
|
-
}
|
200
|
-
if (token.unclosed && whitespacePos + 1 !== next) {
|
201
|
-
token.after = ''
|
202
|
-
token.nodes.push({
|
203
|
-
type: 'space',
|
204
|
-
sourceIndex: whitespacePos + 1,
|
205
|
-
sourceEndIndex: next,
|
206
|
-
value: value.slice(whitespacePos + 1, next),
|
207
|
-
})
|
208
|
-
} else {
|
209
|
-
token.after = value.slice(whitespacePos + 1, next)
|
210
|
-
token.sourceEndIndex = next
|
211
|
-
}
|
212
|
-
} else {
|
213
|
-
token.after = ''
|
214
|
-
token.nodes = []
|
215
|
-
}
|
216
|
-
pos = next + 1
|
217
|
-
token.sourceEndIndex = token.unclosed ? next : pos
|
218
|
-
code = value.charCodeAt(pos)
|
219
|
-
tokens.push(token)
|
220
|
-
} else {
|
221
|
-
balanced += 1
|
222
|
-
token.after = ''
|
223
|
-
token.sourceEndIndex = pos + 1
|
224
|
-
tokens.push(token)
|
225
|
-
stack.push(token)
|
226
|
-
tokens = token.nodes = []
|
227
|
-
parent = token
|
228
|
-
}
|
229
|
-
name = ''
|
230
|
-
|
231
|
-
// Close parentheses
|
232
|
-
} else if (closeParentheses === code && balanced) {
|
233
|
-
pos += 1
|
234
|
-
code = value.charCodeAt(pos)
|
235
|
-
|
236
|
-
parent.after = after
|
237
|
-
parent.sourceEndIndex += after.length
|
238
|
-
after = ''
|
239
|
-
balanced -= 1
|
240
|
-
stack[stack.length - 1].sourceEndIndex = pos
|
241
|
-
stack.pop()
|
242
|
-
parent = stack[balanced]
|
243
|
-
tokens = parent.nodes
|
244
|
-
|
245
|
-
// Words
|
246
|
-
} else {
|
247
|
-
next = pos
|
248
|
-
do {
|
249
|
-
if (code === backslash) {
|
250
|
-
next += 1
|
251
|
-
}
|
252
|
-
next += 1
|
253
|
-
code = value.charCodeAt(next)
|
254
|
-
} while (
|
255
|
-
next < max &&
|
256
|
-
!(
|
257
|
-
code <= 32 ||
|
258
|
-
code === singleQuote ||
|
259
|
-
code === doubleQuote ||
|
260
|
-
code === comma ||
|
261
|
-
code === colon ||
|
262
|
-
code === slash ||
|
263
|
-
code === openParentheses ||
|
264
|
-
(code === star && parent && parent.type === 'function' && true) ||
|
265
|
-
(code === slash && parent.type === 'function' && true) ||
|
266
|
-
(code === closeParentheses && balanced)
|
267
|
-
)
|
268
|
-
)
|
269
|
-
token = value.slice(pos, next)
|
270
|
-
|
271
|
-
if (openParentheses === code) {
|
272
|
-
name = token
|
273
|
-
} else if (
|
274
|
-
(uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&
|
275
|
-
plus === token.charCodeAt(1) &&
|
276
|
-
isUnicodeRange.test(token.slice(2))
|
277
|
-
) {
|
278
|
-
tokens.push({
|
279
|
-
type: 'unicode-range',
|
280
|
-
sourceIndex: pos,
|
281
|
-
sourceEndIndex: next,
|
282
|
-
value: token,
|
283
|
-
})
|
284
|
-
} else {
|
285
|
-
tokens.push({
|
286
|
-
type: 'word',
|
287
|
-
sourceIndex: pos,
|
288
|
-
sourceEndIndex: next,
|
289
|
-
value: token,
|
290
|
-
})
|
291
|
-
}
|
292
|
-
|
293
|
-
pos = next
|
294
|
-
}
|
295
|
-
}
|
296
|
-
|
297
|
-
for (pos = stack.length - 1; pos; pos -= 1) {
|
298
|
-
stack[pos].unclosed = true
|
299
|
-
stack[pos].sourceEndIndex = value.length
|
300
|
-
}
|
301
|
-
|
302
|
-
return stack[0].nodes
|
303
|
-
}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
function stringifyNode(node, custom) {
|
2
|
-
var type = node.type
|
3
|
-
var value = node.value
|
4
|
-
var buf
|
5
|
-
var customResult
|
6
|
-
|
7
|
-
if (custom && (customResult = custom(node)) !== undefined) {
|
8
|
-
return customResult
|
9
|
-
} else if (type === 'word' || type === 'space') {
|
10
|
-
return value
|
11
|
-
} else if (type === 'string') {
|
12
|
-
buf = node.quote || ''
|
13
|
-
return buf + value + (node.unclosed ? '' : buf)
|
14
|
-
} else if (type === 'comment') {
|
15
|
-
return '/*' + value + (node.unclosed ? '' : '*/')
|
16
|
-
} else if (type === 'div') {
|
17
|
-
return (node.before || '') + value + (node.after || '')
|
18
|
-
} else if (Array.isArray(node.nodes)) {
|
19
|
-
buf = stringify(node.nodes, custom)
|
20
|
-
if (type !== 'function') {
|
21
|
-
return buf
|
22
|
-
}
|
23
|
-
return value + '(' + (node.before || '') + buf + (node.after || '') + (node.unclosed ? '' : ')')
|
24
|
-
}
|
25
|
-
return value
|
26
|
-
}
|
27
|
-
|
28
|
-
function stringify(nodes, custom) {
|
29
|
-
var result, i
|
30
|
-
|
31
|
-
if (Array.isArray(nodes)) {
|
32
|
-
result = ''
|
33
|
-
for (i = nodes.length - 1; ~i; i -= 1) {
|
34
|
-
result = stringifyNode(nodes[i], custom) + result
|
35
|
-
}
|
36
|
-
return result
|
37
|
-
}
|
38
|
-
return stringifyNode(nodes, custom)
|
39
|
-
}
|
40
|
-
|
41
|
-
module.exports = stringify
|
package/src/value-parser/unit.js
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
var minus = '-'.charCodeAt(0)
|
2
|
-
var plus = '+'.charCodeAt(0)
|
3
|
-
var dot = '.'.charCodeAt(0)
|
4
|
-
var exp = 'e'.charCodeAt(0)
|
5
|
-
var EXP = 'E'.charCodeAt(0)
|
6
|
-
|
7
|
-
// Check if three code points would start a number
|
8
|
-
// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number
|
9
|
-
function likeNumber(value) {
|
10
|
-
var code = value.charCodeAt(0)
|
11
|
-
var nextCode
|
12
|
-
|
13
|
-
if (code === plus || code === minus) {
|
14
|
-
nextCode = value.charCodeAt(1)
|
15
|
-
|
16
|
-
if (nextCode >= 48 && nextCode <= 57) {
|
17
|
-
return true
|
18
|
-
}
|
19
|
-
|
20
|
-
var nextNextCode = value.charCodeAt(2)
|
21
|
-
|
22
|
-
if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {
|
23
|
-
return true
|
24
|
-
}
|
25
|
-
|
26
|
-
return false
|
27
|
-
}
|
28
|
-
|
29
|
-
if (code === dot) {
|
30
|
-
nextCode = value.charCodeAt(1)
|
31
|
-
|
32
|
-
if (nextCode >= 48 && nextCode <= 57) {
|
33
|
-
return true
|
34
|
-
}
|
35
|
-
|
36
|
-
return false
|
37
|
-
}
|
38
|
-
|
39
|
-
if (code >= 48 && code <= 57) {
|
40
|
-
return true
|
41
|
-
}
|
42
|
-
|
43
|
-
return false
|
44
|
-
}
|
45
|
-
|
46
|
-
// Consume a number
|
47
|
-
// https://www.w3.org/TR/css-syntax-3/#consume-number
|
48
|
-
module.exports = function (value) {
|
49
|
-
var pos = 0
|
50
|
-
var length = value.length
|
51
|
-
var code
|
52
|
-
var nextCode
|
53
|
-
var nextNextCode
|
54
|
-
|
55
|
-
if (length === 0 || !likeNumber(value)) {
|
56
|
-
return false
|
57
|
-
}
|
58
|
-
|
59
|
-
code = value.charCodeAt(pos)
|
60
|
-
|
61
|
-
if (code === plus || code === minus) {
|
62
|
-
pos++
|
63
|
-
}
|
64
|
-
|
65
|
-
while (pos < length) {
|
66
|
-
code = value.charCodeAt(pos)
|
67
|
-
|
68
|
-
if (code < 48 || code > 57) {
|
69
|
-
break
|
70
|
-
}
|
71
|
-
|
72
|
-
pos += 1
|
73
|
-
}
|
74
|
-
|
75
|
-
code = value.charCodeAt(pos)
|
76
|
-
nextCode = value.charCodeAt(pos + 1)
|
77
|
-
|
78
|
-
if (code === dot && nextCode >= 48 && nextCode <= 57) {
|
79
|
-
pos += 2
|
80
|
-
|
81
|
-
while (pos < length) {
|
82
|
-
code = value.charCodeAt(pos)
|
83
|
-
|
84
|
-
if (code < 48 || code > 57) {
|
85
|
-
break
|
86
|
-
}
|
87
|
-
|
88
|
-
pos += 1
|
89
|
-
}
|
90
|
-
}
|
91
|
-
|
92
|
-
code = value.charCodeAt(pos)
|
93
|
-
nextCode = value.charCodeAt(pos + 1)
|
94
|
-
nextNextCode = value.charCodeAt(pos + 2)
|
95
|
-
|
96
|
-
if (
|
97
|
-
(code === exp || code === EXP) &&
|
98
|
-
((nextCode >= 48 && nextCode <= 57) ||
|
99
|
-
((nextCode === plus || nextCode === minus) && nextNextCode >= 48 && nextNextCode <= 57))
|
100
|
-
) {
|
101
|
-
pos += nextCode === plus || nextCode === minus ? 3 : 2
|
102
|
-
|
103
|
-
while (pos < length) {
|
104
|
-
code = value.charCodeAt(pos)
|
105
|
-
|
106
|
-
if (code < 48 || code > 57) {
|
107
|
-
break
|
108
|
-
}
|
109
|
-
|
110
|
-
pos += 1
|
111
|
-
}
|
112
|
-
}
|
113
|
-
|
114
|
-
return {
|
115
|
-
number: value.slice(0, pos),
|
116
|
-
unit: value.slice(pos),
|
117
|
-
}
|
118
|
-
}
|
package/src/value-parser/walk.js
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module.exports = function walk(nodes, cb, bubble) {
|
2
|
-
var i, max, node, result
|
3
|
-
|
4
|
-
for (i = 0, max = nodes.length; i < max; i += 1) {
|
5
|
-
node = nodes[i]
|
6
|
-
if (!bubble) {
|
7
|
-
result = cb(node, i, nodes)
|
8
|
-
}
|
9
|
-
|
10
|
-
if (result !== false && node.type === 'function' && Array.isArray(node.nodes)) {
|
11
|
-
walk(node.nodes, cb, bubble)
|
12
|
-
}
|
13
|
-
|
14
|
-
if (bubble) {
|
15
|
-
cb(node, i, nodes)
|
16
|
-
}
|
17
|
-
}
|
18
|
-
}
|
package/stubs/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
!*
|