@tamagui/style-grammar 3.0.0-beta.924.1 → 3.0.1
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/dist/cjs/ast/payloadShape.cjs +45 -17
- package/dist/cjs/ast/payloadShape.native.cjs +45 -17
- package/dist/cjs/ast/payloadShape.native.js +45 -17
- package/dist/cjs/ast/payloadShape.native.js.map +1 -1
- package/dist/cjs/ast/resolvePayload.cjs +16 -9
- package/dist/cjs/ast/resolvePayload.native.cjs +16 -9
- package/dist/cjs/ast/resolvePayload.native.js +16 -9
- package/dist/cjs/ast/resolvePayload.native.js.map +1 -1
- package/dist/cjs/programs/lowerProgram.cjs +2 -2
- package/dist/cjs/programs/lowerProgram.native.cjs +2 -2
- package/dist/cjs/programs/lowerProgram.native.js +2 -2
- package/dist/cjs/programs/lowerProgram.native.js.map +1 -1
- package/dist/cjs/runtime/clauseIdentity.cjs +9 -28
- package/dist/cjs/runtime/clauseIdentity.native.cjs +9 -28
- package/dist/cjs/runtime/clauseIdentity.native.js +9 -28
- package/dist/cjs/runtime/clauseIdentity.native.js.map +1 -1
- package/dist/cjs/runtime/clausePrecedence.cjs +2 -2
- package/dist/cjs/runtime/clausePrecedence.native.cjs +3 -10
- package/dist/cjs/runtime/clausePrecedence.native.js +3 -10
- package/dist/cjs/runtime/clausePrecedence.native.js.map +1 -1
- package/dist/cjs/runtime/modifierVocabulary.native.cjs +1 -8
- package/dist/cjs/runtime/modifierVocabulary.native.js +1 -8
- package/dist/cjs/runtime/modifierVocabulary.native.js.map +1 -1
- package/dist/cjs/runtime/scanFlatValue.cjs +58 -7
- package/dist/cjs/runtime/scanFlatValue.native.cjs +58 -7
- package/dist/cjs/runtime/scanFlatValue.native.js +58 -7
- package/dist/cjs/runtime/scanFlatValue.native.js.map +1 -1
- package/dist/cjs/runtime/spring.cjs +123 -0
- package/dist/cjs/runtime/spring.native.cjs +131 -0
- package/dist/cjs/runtime/spring.native.js +133 -0
- package/dist/cjs/runtime/spring.native.js.map +1 -0
- package/dist/cjs/runtime/stateModifiers.cjs +23 -1
- package/dist/cjs/runtime/stateModifiers.native.cjs +23 -1
- package/dist/cjs/runtime/stateModifiers.native.js +23 -1
- package/dist/cjs/runtime/stateModifiers.native.js.map +1 -1
- package/dist/cjs/runtime/tokenCategories.cjs +3 -0
- package/dist/cjs/runtime/tokenCategories.native.cjs +3 -0
- package/dist/cjs/runtime/tokenCategories.native.js +3 -0
- package/dist/cjs/runtime/tokenCategories.native.js.map +1 -1
- package/dist/cjs/runtime/unitlessNumbers.cjs +0 -5
- package/dist/cjs/runtime/unitlessNumbers.native.cjs +0 -5
- package/dist/cjs/runtime/unitlessNumbers.native.js +0 -5
- package/dist/cjs/runtime/unitlessNumbers.native.js.map +1 -1
- package/dist/cjs/runtime.cjs +11 -0
- package/dist/cjs/runtime.native.cjs +11 -0
- package/dist/cjs/runtime.native.js +11 -0
- package/dist/cjs/runtime.native.js.map +1 -1
- package/dist/cjs/shorthands/transition.cjs +111 -36
- package/dist/cjs/shorthands/transition.native.cjs +113 -36
- package/dist/cjs/shorthands/transition.native.js +113 -36
- package/dist/cjs/shorthands/transition.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionAlign.cjs +13 -10
- package/dist/cjs/shorthands/transitionAlign.native.cjs +14 -11
- package/dist/cjs/shorthands/transitionAlign.native.js +14 -11
- package/dist/cjs/shorthands/transitionAlign.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionLegacy.cjs +263 -126
- package/dist/cjs/shorthands/transitionLegacy.native.cjs +333 -155
- package/dist/cjs/shorthands/transitionLegacy.native.js +333 -155
- package/dist/cjs/shorthands/transitionLegacy.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionNative.cjs +5 -5
- package/dist/cjs/shorthands/transitionNative.native.cjs +8 -7
- package/dist/cjs/shorthands/transitionNative.native.js +8 -7
- package/dist/cjs/shorthands/transitionNative.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionObject.cjs +302 -0
- package/dist/cjs/shorthands/transitionObject.native.cjs +347 -0
- package/dist/cjs/shorthands/transitionObject.native.js +349 -0
- package/dist/cjs/shorthands/transitionObject.native.js.map +1 -0
- package/dist/cjs/tooling/candidate.cjs +254 -15
- package/dist/cjs/tooling/candidate.native.cjs +314 -62
- package/dist/cjs/tooling/candidate.native.js +314 -62
- package/dist/cjs/tooling/candidate.native.js.map +1 -1
- package/dist/cjs/tooling/config.cjs +19 -9
- package/dist/cjs/tooling/config.native.cjs +25 -26
- package/dist/cjs/tooling/config.native.js +25 -26
- package/dist/cjs/tooling/config.native.js.map +1 -1
- package/dist/cjs/tooling/registry.cjs +579 -11
- package/dist/cjs/tooling/registry.native.cjs +579 -11
- package/dist/cjs/tooling/registry.native.js +579 -11
- package/dist/cjs/tooling/registry.native.js.map +1 -1
- package/dist/cjs/tooling/toolingDiagnostics.cjs +306 -10
- package/dist/cjs/tooling/toolingDiagnostics.native.cjs +408 -48
- package/dist/cjs/tooling/toolingDiagnostics.native.js +408 -48
- package/dist/cjs/tooling/toolingDiagnostics.native.js.map +1 -1
- package/dist/cjs/tooling/toolingRegistry.cjs +6 -1
- package/dist/cjs/tooling/toolingRegistry.native.cjs +9 -1
- package/dist/cjs/tooling/toolingRegistry.native.js +9 -1
- package/dist/cjs/tooling/toolingRegistry.native.js.map +1 -1
- package/dist/cjs/tooling.cjs +1 -0
- package/dist/cjs/tooling.native.cjs +1 -0
- package/dist/cjs/tooling.native.js +1 -0
- package/dist/cjs/tooling.native.js.map +1 -1
- package/dist/cjs/transitions.cjs +38 -0
- package/dist/cjs/transitions.native.cjs +40 -0
- package/dist/cjs/transitions.native.js +42 -0
- package/dist/cjs/transitions.native.js.map +1 -0
- package/dist/esm/ast/payloadShape.mjs +45 -17
- package/dist/esm/ast/payloadShape.mjs.map +1 -1
- package/dist/esm/ast/payloadShape.native.js +45 -17
- package/dist/esm/ast/payloadShape.native.js.map +1 -1
- package/dist/esm/ast/resolvePayload.mjs +16 -9
- package/dist/esm/ast/resolvePayload.mjs.map +1 -1
- package/dist/esm/ast/resolvePayload.native.js +16 -9
- package/dist/esm/ast/resolvePayload.native.js.map +1 -1
- package/dist/esm/programs/lowerProgram.mjs +2 -2
- package/dist/esm/programs/lowerProgram.mjs.map +1 -1
- package/dist/esm/programs/lowerProgram.native.js +2 -2
- package/dist/esm/programs/lowerProgram.native.js.map +1 -1
- package/dist/esm/runtime/clauseIdentity.mjs +2 -22
- package/dist/esm/runtime/clauseIdentity.mjs.map +1 -1
- package/dist/esm/runtime/clauseIdentity.native.js +2 -22
- package/dist/esm/runtime/clauseIdentity.native.js.map +1 -1
- package/dist/esm/runtime/clausePrecedence.mjs +2 -2
- package/dist/esm/runtime/clausePrecedence.mjs.map +1 -1
- package/dist/esm/runtime/clausePrecedence.native.js +3 -10
- package/dist/esm/runtime/clausePrecedence.native.js.map +1 -1
- package/dist/esm/runtime/modifierVocabulary.native.js +1 -8
- package/dist/esm/runtime/modifierVocabulary.native.js.map +1 -1
- package/dist/esm/runtime/scanFlatValue.mjs +59 -7
- package/dist/esm/runtime/scanFlatValue.mjs.map +1 -1
- package/dist/esm/runtime/scanFlatValue.native.js +59 -7
- package/dist/esm/runtime/scanFlatValue.native.js.map +1 -1
- package/dist/esm/runtime/spring.mjs +93 -0
- package/dist/esm/runtime/spring.mjs.map +1 -0
- package/dist/esm/runtime/spring.native.js +99 -0
- package/dist/esm/runtime/spring.native.js.map +1 -0
- package/dist/esm/runtime/stateModifiers.mjs +22 -2
- package/dist/esm/runtime/stateModifiers.mjs.map +1 -1
- package/dist/esm/runtime/stateModifiers.native.js +22 -2
- package/dist/esm/runtime/stateModifiers.native.js.map +1 -1
- package/dist/esm/runtime/tokenCategories.mjs +3 -0
- package/dist/esm/runtime/tokenCategories.mjs.map +1 -1
- package/dist/esm/runtime/tokenCategories.native.js +3 -0
- package/dist/esm/runtime/tokenCategories.native.js.map +1 -1
- package/dist/esm/runtime/unitlessNumbers.mjs +0 -5
- package/dist/esm/runtime/unitlessNumbers.mjs.map +1 -1
- package/dist/esm/runtime/unitlessNumbers.native.js +0 -5
- package/dist/esm/runtime/unitlessNumbers.native.js.map +1 -1
- package/dist/esm/runtime.mjs +4 -2
- package/dist/esm/runtime.native.js +4 -2
- package/dist/esm/shorthands/transition.mjs +111 -36
- package/dist/esm/shorthands/transition.mjs.map +1 -1
- package/dist/esm/shorthands/transition.native.js +113 -36
- package/dist/esm/shorthands/transition.native.js.map +1 -1
- package/dist/esm/shorthands/transitionAlign.mjs +13 -10
- package/dist/esm/shorthands/transitionAlign.mjs.map +1 -1
- package/dist/esm/shorthands/transitionAlign.native.js +14 -11
- package/dist/esm/shorthands/transitionAlign.native.js.map +1 -1
- package/dist/esm/shorthands/transitionLegacy.mjs +260 -126
- package/dist/esm/shorthands/transitionLegacy.mjs.map +1 -1
- package/dist/esm/shorthands/transitionLegacy.native.js +330 -155
- package/dist/esm/shorthands/transitionLegacy.native.js.map +1 -1
- package/dist/esm/shorthands/transitionNative.mjs +5 -5
- package/dist/esm/shorthands/transitionNative.mjs.map +1 -1
- package/dist/esm/shorthands/transitionNative.native.js +8 -7
- package/dist/esm/shorthands/transitionNative.native.js.map +1 -1
- package/dist/esm/shorthands/transitionObject.mjs +280 -0
- package/dist/esm/shorthands/transitionObject.mjs.map +1 -0
- package/dist/esm/shorthands/transitionObject.native.js +323 -0
- package/dist/esm/shorthands/transitionObject.native.js.map +1 -0
- package/dist/esm/tooling/candidate.mjs +250 -16
- package/dist/esm/tooling/candidate.mjs.map +1 -1
- package/dist/esm/tooling/candidate.native.js +310 -63
- package/dist/esm/tooling/candidate.native.js.map +1 -1
- package/dist/esm/tooling/config.mjs +18 -9
- package/dist/esm/tooling/config.mjs.map +1 -1
- package/dist/esm/tooling/config.native.js +24 -26
- package/dist/esm/tooling/config.native.js.map +1 -1
- package/dist/esm/tooling/registry.mjs +579 -11
- package/dist/esm/tooling/registry.mjs.map +1 -1
- package/dist/esm/tooling/registry.native.js +579 -11
- package/dist/esm/tooling/registry.native.js.map +1 -1
- package/dist/esm/tooling/toolingDiagnostics.mjs +306 -11
- package/dist/esm/tooling/toolingDiagnostics.mjs.map +1 -1
- package/dist/esm/tooling/toolingDiagnostics.native.js +408 -49
- package/dist/esm/tooling/toolingDiagnostics.native.js.map +1 -1
- package/dist/esm/tooling/toolingRegistry.mjs +6 -1
- package/dist/esm/tooling/toolingRegistry.mjs.map +1 -1
- package/dist/esm/tooling/toolingRegistry.native.js +9 -1
- package/dist/esm/tooling/toolingRegistry.native.js.map +1 -1
- package/dist/esm/tooling.mjs +2 -0
- package/dist/esm/tooling.native.js +2 -0
- package/dist/esm/transitions.mjs +5 -0
- package/dist/esm/transitions.native.js +5 -0
- package/package.json +21 -3
- package/src/ast/payloadShape.ts +44 -16
- package/src/ast/resolvePayload.ts +28 -13
- package/src/programs/lowerProgram.ts +9 -4
- package/src/runtime/clauseIdentity.ts +8 -31
- package/src/runtime/clausePrecedence.ts +2 -10
- package/src/runtime/scanFlatValue.ts +81 -9
- package/src/runtime/spring.ts +208 -0
- package/src/runtime/stateModifiers.ts +31 -1
- package/src/runtime/tokenCategories.ts +3 -0
- package/src/runtime/unitlessNumbers.ts +0 -5
- package/src/runtime.ts +13 -0
- package/src/shorthands/transition.ts +159 -44
- package/src/shorthands/transitionAlign.ts +22 -12
- package/src/shorthands/transitionLegacy.ts +376 -156
- package/src/shorthands/transitionNative.ts +8 -11
- package/src/shorthands/transitionObject.ts +369 -0
- package/src/tooling/candidate.ts +269 -14
- package/src/tooling/config.ts +25 -9
- package/src/tooling/registry.ts +339 -12
- package/src/tooling/toolingDiagnostics.ts +474 -9
- package/src/tooling/toolingRegistry.ts +6 -1
- package/src/tooling.ts +1 -0
- package/src/transitions.ts +42 -0
- package/types/ast/payloadShape.d.ts.map +2 -2
- package/types/ast/resolvePayload.d.ts +5 -4
- package/types/ast/resolvePayload.d.ts.map +2 -2
- package/types/programs/lowerProgram.d.ts +4 -2
- package/types/programs/lowerProgram.d.ts.map +2 -2
- package/types/runtime/clauseIdentity.d.ts +1 -4
- package/types/runtime/clauseIdentity.d.ts.map +2 -2
- package/types/runtime/clausePrecedence.d.ts.map +2 -2
- package/types/runtime/scanFlatValue.d.ts +1 -1
- package/types/runtime/scanFlatValue.d.ts.map +2 -2
- package/types/runtime/spring.d.ts +61 -0
- package/types/runtime/spring.d.ts.map +11 -0
- package/types/runtime/stateModifiers.d.ts +4 -0
- package/types/runtime/stateModifiers.d.ts.map +2 -2
- package/types/runtime/tokenCategories.d.ts.map +2 -2
- package/types/runtime/unitlessNumbers.d.ts.map +2 -2
- package/types/runtime.d.ts +3 -1
- package/types/runtime.d.ts.map +2 -2
- package/types/shorthands/transition.d.ts +26 -5
- package/types/shorthands/transition.d.ts.map +2 -2
- package/types/shorthands/transitionAlign.d.ts.map +2 -2
- package/types/shorthands/transitionLegacy.d.ts +19 -4
- package/types/shorthands/transitionLegacy.d.ts.map +2 -2
- package/types/shorthands/transitionNative.d.ts.map +1 -1
- package/types/shorthands/transitionObject.d.ts +49 -0
- package/types/shorthands/transitionObject.d.ts.map +11 -0
- package/types/tooling/candidate.d.ts +13 -0
- package/types/tooling/candidate.d.ts.map +2 -2
- package/types/tooling/config.d.ts +8 -1
- package/types/tooling/config.d.ts.map +2 -2
- package/types/tooling/registry.d.ts +4 -2
- package/types/tooling/registry.d.ts.map +2 -2
- package/types/tooling/toolingDiagnostics.d.ts +3 -1
- package/types/tooling/toolingDiagnostics.d.ts.map +2 -2
- package/types/tooling/toolingRegistry.d.ts.map +2 -2
- package/types/tooling.d.ts +1 -0
- package/types/tooling.d.ts.map +2 -2
- package/types/transitions.d.ts +5 -0
- package/types/transitions.d.ts.map +11 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { namedCssColors } from "../runtime/namedCssColors.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { propTokenGroupFallbacks } from "./config.mjs";
|
|
3
|
+
import { fontWeightNames, grammarEntries, insetAxisProps, prefixToEntries, propToGrammarEntry, radiusCornerProps, sizeUtilityProps, standaloneValueProps, textAlignKeywords, wholeClassConveniences, wholeClassUtilities } from "./registry.mjs";
|
|
3
4
|
import { canonicalClauseModifier, containerModifierSizeEnd, parseGroupModifier } from "../runtime/clauseIdentity.mjs";
|
|
4
5
|
import { compileModifierVocabulary, modifierKindMedia } from "../runtime/modifierVocabulary.mjs";
|
|
5
6
|
import { splitColorOpacitySuffix } from "../runtime/colorOpacity.mjs";
|
|
@@ -9,6 +10,12 @@ const sizingConveniences = /* @__PURE__ */ new Set([
|
|
|
9
10
|
"full",
|
|
10
11
|
"auto",
|
|
11
12
|
"screen",
|
|
13
|
+
"dvh",
|
|
14
|
+
"lvh",
|
|
15
|
+
"svh",
|
|
16
|
+
"dvw",
|
|
17
|
+
"lvw",
|
|
18
|
+
"svw",
|
|
12
19
|
"min",
|
|
13
20
|
"max",
|
|
14
21
|
"fit"
|
|
@@ -19,6 +26,22 @@ const fontGenerics = /* @__PURE__ */ new Set([
|
|
|
19
26
|
"mono"
|
|
20
27
|
]);
|
|
21
28
|
const numericPattern = /^\d+(?:\.\d+)?$/;
|
|
29
|
+
const tailwindLeadingRatios = {
|
|
30
|
+
none: 1,
|
|
31
|
+
tight: 1.25,
|
|
32
|
+
snug: 1.375,
|
|
33
|
+
normal: 1.5,
|
|
34
|
+
relaxed: 1.625,
|
|
35
|
+
loose: 2
|
|
36
|
+
};
|
|
37
|
+
const tailwindTrackingEms = {
|
|
38
|
+
tighter: -.05,
|
|
39
|
+
tight: -.025,
|
|
40
|
+
normal: 0,
|
|
41
|
+
wide: .025,
|
|
42
|
+
wider: .05,
|
|
43
|
+
widest: .1
|
|
44
|
+
};
|
|
22
45
|
const extraPrefixes = [
|
|
23
46
|
"border-x",
|
|
24
47
|
"border-y",
|
|
@@ -26,9 +49,12 @@ const extraPrefixes = [
|
|
|
26
49
|
"rounded-r",
|
|
27
50
|
"rounded-b",
|
|
28
51
|
"rounded-l",
|
|
52
|
+
"rounded-s",
|
|
53
|
+
"rounded-e",
|
|
29
54
|
"inset-x",
|
|
30
55
|
"inset-y",
|
|
31
|
-
"size"
|
|
56
|
+
"size",
|
|
57
|
+
"translate"
|
|
32
58
|
];
|
|
33
59
|
const negativeTokenProps = /* @__PURE__ */ new Set([
|
|
34
60
|
"margin",
|
|
@@ -36,6 +62,10 @@ const negativeTokenProps = /* @__PURE__ */ new Set([
|
|
|
36
62
|
"marginRight",
|
|
37
63
|
"marginBottom",
|
|
38
64
|
"marginLeft",
|
|
65
|
+
"marginInlineStart",
|
|
66
|
+
"marginInlineEnd",
|
|
67
|
+
"marginBlockStart",
|
|
68
|
+
"marginBlockEnd",
|
|
39
69
|
"marginHorizontal",
|
|
40
70
|
"marginVertical",
|
|
41
71
|
"top",
|
|
@@ -43,9 +73,53 @@ const negativeTokenProps = /* @__PURE__ */ new Set([
|
|
|
43
73
|
"bottom",
|
|
44
74
|
"left",
|
|
45
75
|
"inset",
|
|
76
|
+
"insetInlineStart",
|
|
77
|
+
"insetInlineEnd",
|
|
78
|
+
"insetBlockStart",
|
|
79
|
+
"insetBlockEnd",
|
|
80
|
+
"start",
|
|
81
|
+
"end",
|
|
82
|
+
"zIndex",
|
|
46
83
|
"x",
|
|
47
84
|
"y",
|
|
48
|
-
"
|
|
85
|
+
"rotate",
|
|
86
|
+
"rotateX",
|
|
87
|
+
"rotateY",
|
|
88
|
+
"rotateZ",
|
|
89
|
+
"skewX",
|
|
90
|
+
"skewY",
|
|
91
|
+
"order",
|
|
92
|
+
"scale",
|
|
93
|
+
"scaleX",
|
|
94
|
+
"scaleY",
|
|
95
|
+
"letterSpacing",
|
|
96
|
+
"outlineOffset"
|
|
97
|
+
]);
|
|
98
|
+
const positionSpaceProps = /* @__PURE__ */ new Set([
|
|
99
|
+
"top",
|
|
100
|
+
"right",
|
|
101
|
+
"bottom",
|
|
102
|
+
"left",
|
|
103
|
+
"inset",
|
|
104
|
+
"insetInlineStart",
|
|
105
|
+
"insetInlineEnd",
|
|
106
|
+
"insetBlockStart",
|
|
107
|
+
"insetBlockEnd",
|
|
108
|
+
"start",
|
|
109
|
+
"end"
|
|
110
|
+
]);
|
|
111
|
+
const marginSpaceProps = /* @__PURE__ */ new Set([
|
|
112
|
+
"margin",
|
|
113
|
+
"marginTop",
|
|
114
|
+
"marginRight",
|
|
115
|
+
"marginBottom",
|
|
116
|
+
"marginLeft",
|
|
117
|
+
"marginInlineStart",
|
|
118
|
+
"marginInlineEnd",
|
|
119
|
+
"marginBlockStart",
|
|
120
|
+
"marginBlockEnd",
|
|
121
|
+
"marginHorizontal",
|
|
122
|
+
"marginVertical"
|
|
49
123
|
]);
|
|
50
124
|
const borderWidthKeywords = /* @__PURE__ */ new Set([
|
|
51
125
|
"thin",
|
|
@@ -142,11 +216,25 @@ function normalizeModifiers(modifiers, config) {
|
|
|
142
216
|
}
|
|
143
217
|
return normalized;
|
|
144
218
|
}
|
|
219
|
+
function tokenDomain(config, category) {
|
|
220
|
+
const fallback = propTokenGroupFallbacks[category];
|
|
221
|
+
return config.tokenNames?.[category] || (fallback ? config.tokenNames?.[fallback] : void 0);
|
|
222
|
+
}
|
|
145
223
|
function hasTokenDomain(config, category) {
|
|
146
|
-
return config
|
|
224
|
+
return tokenDomain(config, category) !== void 0;
|
|
147
225
|
}
|
|
148
226
|
function hasTokenName(config, category, name) {
|
|
149
|
-
return
|
|
227
|
+
return resolveTokenName(config, category, name) !== null;
|
|
228
|
+
}
|
|
229
|
+
function decimalHalfTokenAlias(name) {
|
|
230
|
+
const match = /^(-?\d+)\.5$/.exec(name);
|
|
231
|
+
return match ? `${match[1]}-5` : null;
|
|
232
|
+
}
|
|
233
|
+
function resolveTokenName(config, category, name) {
|
|
234
|
+
const names = tokenDomain(config, category);
|
|
235
|
+
if (hasName(names, name)) return name;
|
|
236
|
+
const alias = decimalHalfTokenAlias(name);
|
|
237
|
+
return alias !== null && hasName(names, alias) ? alias : null;
|
|
150
238
|
}
|
|
151
239
|
function entriesForProps(props) {
|
|
152
240
|
const byProp = new Map(grammarEntries.map((entry) => [entry.prop, entry]));
|
|
@@ -172,11 +260,17 @@ function resolveEntries(prefix, config) {
|
|
|
172
260
|
return entriesForProps(sides.flatMap((side) => [`border${side}Width`, `border${side}Color`]));
|
|
173
261
|
}
|
|
174
262
|
if (prefix === "size") {
|
|
175
|
-
return entriesForProps(sizeUtilityProps)
|
|
263
|
+
return entriesForProps(sizeUtilityProps).map((entry) => ({
|
|
264
|
+
...entry,
|
|
265
|
+
tokenCategory: "size"
|
|
266
|
+
}));
|
|
176
267
|
}
|
|
177
268
|
if (prefix === "inset-x" || prefix === "inset-y") {
|
|
178
269
|
return entriesForProps(insetAxisProps[prefix.slice("inset-".length)]);
|
|
179
270
|
}
|
|
271
|
+
if (prefix === "translate") {
|
|
272
|
+
return entriesForProps(["x", "y"]);
|
|
273
|
+
}
|
|
180
274
|
if (prefix.startsWith("rounded-")) {
|
|
181
275
|
const props = radiusCornerProps[prefix.slice("rounded-".length)];
|
|
182
276
|
return props ? entriesForProps(props) : [];
|
|
@@ -260,6 +354,9 @@ function arbitraryTextKind(value) {
|
|
|
260
354
|
if (/^[a-zA-Z][a-zA-Z0-9-]*$/.test(value)) return "fontSize";
|
|
261
355
|
return null;
|
|
262
356
|
}
|
|
357
|
+
function isWidthColorPrefix(prefix) {
|
|
358
|
+
return prefix.startsWith("border") || prefix === "outline";
|
|
359
|
+
}
|
|
263
360
|
function arbitraryBorderKind(value) {
|
|
264
361
|
if (/^-?(?:\d+|\d*\.\d+)$/.test(value)) return "width";
|
|
265
362
|
if (cssLengthPattern.test(value) || borderWidthKeywords.has(value)) return "width";
|
|
@@ -289,7 +386,7 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
289
386
|
const arbitrary = arbitraryInner(rawValue);
|
|
290
387
|
if (arbitrary !== null) {
|
|
291
388
|
if (!arbitrary) return null;
|
|
292
|
-
if (prefix
|
|
389
|
+
if (isWidthColorPrefix(prefix)) {
|
|
293
390
|
const width = entries.find((entry) => entry.prop.endsWith("Width"));
|
|
294
391
|
const color = entries.find((entry) => entry.prop.endsWith("Color"));
|
|
295
392
|
const kind = arbitraryBorderKind(decodeArbitrary(arbitrary));
|
|
@@ -343,6 +440,12 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
343
440
|
};
|
|
344
441
|
}
|
|
345
442
|
const color = entries.find((entry) => entry.prop === "color");
|
|
443
|
+
if (color && rawValue === "transparent") {
|
|
444
|
+
return {
|
|
445
|
+
entry: color,
|
|
446
|
+
valueKind: "enum"
|
|
447
|
+
};
|
|
448
|
+
}
|
|
346
449
|
const colorName = tokenLookupName("color", rawValue);
|
|
347
450
|
if (color && hasTokenName(config, "color", colorName)) {
|
|
348
451
|
return {
|
|
@@ -377,11 +480,12 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
377
480
|
convenience: "font-generic"
|
|
378
481
|
} : null;
|
|
379
482
|
}
|
|
380
|
-
if (prefix
|
|
483
|
+
if (isWidthColorPrefix(prefix)) {
|
|
381
484
|
const width = entries.find((entry) => entry.prop.endsWith("Width"));
|
|
382
485
|
const color = entries.find((entry) => entry.prop.endsWith("Color"));
|
|
383
486
|
const token = negative ? `-${rawValue}` : rawValue;
|
|
384
|
-
const
|
|
487
|
+
const widthCategory = width?.tokenCategory || "space";
|
|
488
|
+
const matchesWidth = width && hasTokenName(config, widthCategory, token);
|
|
385
489
|
const colorName = tokenLookupName("color", rawValue);
|
|
386
490
|
const matchesColor = color && hasTokenName(config, "color", colorName);
|
|
387
491
|
if (matchesWidth && matchesColor) return null;
|
|
@@ -397,11 +501,120 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
397
501
|
valueKind: "token"
|
|
398
502
|
};
|
|
399
503
|
}
|
|
504
|
+
if (color && rawValue === "transparent") {
|
|
505
|
+
return {
|
|
506
|
+
entry: color,
|
|
507
|
+
valueKind: "enum"
|
|
508
|
+
};
|
|
509
|
+
}
|
|
400
510
|
return null;
|
|
401
511
|
}
|
|
512
|
+
if (prefix === "flex" && fractionIsValid(rawValue)) {
|
|
513
|
+
const flex = entries.find((entry) => entry.prop === "flex");
|
|
514
|
+
if (flex) {
|
|
515
|
+
return {
|
|
516
|
+
entry: flex,
|
|
517
|
+
valueKind: "convenience",
|
|
518
|
+
convenience: "flex-bundle"
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (prefix === "tracking" && Object.hasOwn(tailwindTrackingEms, rawValue)) {
|
|
523
|
+
const letterSpacing = entries.find((entry) => entry.prop === "letterSpacing");
|
|
524
|
+
if (letterSpacing) {
|
|
525
|
+
return {
|
|
526
|
+
entry: letterSpacing,
|
|
527
|
+
valueKind: "convenience",
|
|
528
|
+
convenience: "tracking-keyword"
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
if (prefix === "leading" && Object.hasOwn(tailwindLeadingRatios, rawValue)) {
|
|
533
|
+
const lineHeight = entries.find((entry) => entry.prop === "lineHeight");
|
|
534
|
+
if (lineHeight) {
|
|
535
|
+
return {
|
|
536
|
+
entry: lineHeight,
|
|
537
|
+
valueKind: "convenience",
|
|
538
|
+
convenience: "leading-keyword"
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
if (numericPattern.test(rawValue)) {
|
|
543
|
+
const angle = entries.find((entry) => entry.conveniences?.includes("angle"));
|
|
544
|
+
if (angle) {
|
|
545
|
+
return {
|
|
546
|
+
entry: angle,
|
|
547
|
+
valueKind: "convenience",
|
|
548
|
+
convenience: "angle"
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
if (prefix === "flex") {
|
|
552
|
+
const flex = entries.find((entry) => entry.prop === "flex");
|
|
553
|
+
if (flex) return {
|
|
554
|
+
entry: flex,
|
|
555
|
+
valueKind: "convenience",
|
|
556
|
+
convenience: "flex-bundle"
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
if (prefix === "grow") {
|
|
560
|
+
const grow = entries.find((entry) => entry.prop === "flexGrow");
|
|
561
|
+
if (grow) return {
|
|
562
|
+
entry: grow,
|
|
563
|
+
valueKind: "convenience",
|
|
564
|
+
convenience: "integer"
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
if (prefix === "shrink") {
|
|
568
|
+
const shrink = entries.find((entry) => entry.prop === "flexShrink");
|
|
569
|
+
if (shrink) return {
|
|
570
|
+
entry: shrink,
|
|
571
|
+
valueKind: "convenience",
|
|
572
|
+
convenience: "integer"
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
if (prefix === "line-clamp") {
|
|
576
|
+
const clamp = entries.find((entry) => entry.prop === "numberOfLines");
|
|
577
|
+
if (clamp) return {
|
|
578
|
+
entry: clamp,
|
|
579
|
+
valueKind: "convenience",
|
|
580
|
+
convenience: "integer"
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
if (prefix === "leading") {
|
|
584
|
+
const lineHeight = entries.find((entry) => entry.prop === "lineHeight");
|
|
585
|
+
if (lineHeight && (!lineHeight.tokenCategory || !hasTokenName(config, lineHeight.tokenCategory, rawValue))) {
|
|
586
|
+
return {
|
|
587
|
+
entry: lineHeight,
|
|
588
|
+
valueKind: "convenience",
|
|
589
|
+
convenience: "integer"
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
if (prefix === "grid-cols" || prefix === "col-span" || prefix === "col-start" || prefix === "col-end" || prefix === "row-span" || prefix === "row-start" || prefix === "row-end") {
|
|
594
|
+
const entry = entries[0];
|
|
595
|
+
if (entry) return {
|
|
596
|
+
entry,
|
|
597
|
+
valueKind: "convenience",
|
|
598
|
+
convenience: "integer"
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
}
|
|
402
602
|
for (const entry of entries) {
|
|
403
603
|
if (entry.tokenCategory) {
|
|
404
|
-
|
|
604
|
+
if (entry.tokenCategory === "color" && rawValue === "transparent") {
|
|
605
|
+
return {
|
|
606
|
+
entry,
|
|
607
|
+
valueKind: "enum"
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
if (entry.tokenCategory === "radius" && rawValue === "none") {
|
|
611
|
+
return {
|
|
612
|
+
entry,
|
|
613
|
+
valueKind: "convenience",
|
|
614
|
+
convenience: "zero"
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
const name = negative && rawValue !== "0" ? `-${rawValue}` : rawValue;
|
|
405
618
|
const tokenName = tokenLookupName(entry.tokenCategory, name);
|
|
406
619
|
if (hasTokenName(config, entry.tokenCategory, tokenName)) {
|
|
407
620
|
return {
|
|
@@ -409,7 +622,21 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
409
622
|
valueKind: "token"
|
|
410
623
|
};
|
|
411
624
|
}
|
|
412
|
-
if (entry.
|
|
625
|
+
if (entry.conveniences?.includes("sizing-keyword") && (sizingConveniences.has(rawValue) || fractionIsValid(rawValue))) {
|
|
626
|
+
return {
|
|
627
|
+
entry,
|
|
628
|
+
valueKind: "convenience",
|
|
629
|
+
convenience: "sizing-keyword"
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
if (positionSpaceProps.has(entry.prop) && (rawValue === "full" || rawValue === "auto" || fractionIsValid(rawValue))) {
|
|
633
|
+
return {
|
|
634
|
+
entry,
|
|
635
|
+
valueKind: "convenience",
|
|
636
|
+
convenience: "sizing-keyword"
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
if (marginSpaceProps.has(entry.prop) && rawValue === "auto") {
|
|
413
640
|
return {
|
|
414
641
|
entry,
|
|
415
642
|
valueKind: "convenience",
|
|
@@ -425,7 +652,7 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
425
652
|
}
|
|
426
653
|
continue;
|
|
427
654
|
}
|
|
428
|
-
if (prefix === "opacity" || prefix === "scale") {
|
|
655
|
+
if (prefix === "opacity" || prefix === "scale" || prefix === "scale-x" || prefix === "scale-y") {
|
|
429
656
|
if (numericPattern.test(rawValue)) {
|
|
430
657
|
return {
|
|
431
658
|
entry,
|
|
@@ -442,6 +669,13 @@ function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
|
442
669
|
convenience: "integer"
|
|
443
670
|
};
|
|
444
671
|
}
|
|
672
|
+
if (entry.conveniences?.includes("integer") && numericPattern.test(rawValue)) {
|
|
673
|
+
return {
|
|
674
|
+
entry,
|
|
675
|
+
valueKind: "convenience",
|
|
676
|
+
convenience: "integer"
|
|
677
|
+
};
|
|
678
|
+
}
|
|
445
679
|
}
|
|
446
680
|
return null;
|
|
447
681
|
}
|
|
@@ -459,7 +693,7 @@ function parseCandidate(candidate, config) {
|
|
|
459
693
|
if (rawValue) {
|
|
460
694
|
const entries = resolveEntries(prefix, config);
|
|
461
695
|
const selected = chooseEntry(entries, prefix, rawValue, negative, config);
|
|
462
|
-
if (selected && (!negative || selected.
|
|
696
|
+
if (selected && (!negative || selected.convenience === "tracking-keyword" || negativeTokenProps.has(selected.entry.prop) && (selected.valueKind === "token" || selected.valueKind === "arbitrary" && selected.entry.prop === "order" || selected.convenience === "angle" || selected.convenience === "percentage" || selected.convenience === "sizing-keyword" || selected.convenience === "integer"))) {
|
|
463
697
|
dynamic = {
|
|
464
698
|
prefix,
|
|
465
699
|
rawValue,
|
|
@@ -484,7 +718,7 @@ function parseCandidate(candidate, config) {
|
|
|
484
718
|
}
|
|
485
719
|
}
|
|
486
720
|
const direct = wholeClassUtilities[split.base];
|
|
487
|
-
if (!negative && direct) {
|
|
721
|
+
if (!negative && direct && (split.base !== "shadow" || hasTokenName(config, "boxShadow", "sm"))) {
|
|
488
722
|
const convenience = wholeClassConveniences[split.base];
|
|
489
723
|
return {
|
|
490
724
|
candidate,
|
|
@@ -541,7 +775,7 @@ function tokenValidationConfig(entry, value, config) {
|
|
|
541
775
|
};
|
|
542
776
|
}
|
|
543
777
|
function formatCandidate({ prop, value, valueKind, modifiers = [] }, config) {
|
|
544
|
-
const entry =
|
|
778
|
+
const entry = propToGrammarEntry[prop];
|
|
545
779
|
if (!entry) return null;
|
|
546
780
|
if (valueKind === "arbitrary" && value === "") return null;
|
|
547
781
|
const normalizedModifiers = normalizeModifiers(modifiers, config || {});
|
|
@@ -646,5 +880,5 @@ function decodeArbitrary(value) {
|
|
|
646
880
|
return decoded;
|
|
647
881
|
}
|
|
648
882
|
|
|
649
|
-
export { classifyCandidate, decodeArbitrary, encodeArbitrary, formatCandidate, hasTokenName, parseCandidate };
|
|
883
|
+
export { classifyCandidate, decimalHalfTokenAlias, decodeArbitrary, encodeArbitrary, formatCandidate, hasTokenName, parseCandidate, resolveTokenName, splitCandidate, tailwindLeadingRatios, tailwindTrackingEms };
|
|
650
884
|
//# sourceMappingURL=candidate.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate.js","names":[],"sources":["esm/tooling/candidate.js"],"sourcesContent":["import { namedCssColors } from \"../runtime/namedCssColors\";\nimport {\n grammarEntries,\n fontWeightNames,\n insetAxisProps,\n prefixToEntries,\n radiusCornerProps,\n sizeUtilityProps,\n standaloneValueProps,\n textAlignKeywords,\n wholeClassConveniences,\n wholeClassUtilities\n} from \"./registry\";\nimport {\n canonicalClauseModifier,\n containerModifierSizeEnd,\n parseGroupModifier\n} from \"../runtime/clauseIdentity\";\nimport {\n compileModifierVocabulary,\n modifierKindMedia\n} from \"../runtime/modifierVocabulary\";\nimport { splitColorOpacitySuffix } from \"../runtime/colorOpacity\";\nimport { getSafeAreaEdge } from \"../runtime/safeAreaVariables\";\nconst sizingConveniences = /* @__PURE__ */ new Set([\"full\", \"auto\", \"screen\", \"min\", \"max\", \"fit\"]);\nconst fontGenerics = /* @__PURE__ */ new Set([\"sans\", \"serif\", \"mono\"]);\nconst numericPattern = /^\\d+(?:\\.\\d+)?$/;\nconst extraPrefixes = [\n \"border-x\",\n \"border-y\",\n \"rounded-t\",\n \"rounded-r\",\n \"rounded-b\",\n \"rounded-l\",\n \"inset-x\",\n \"inset-y\",\n \"size\"\n];\nconst negativeTokenProps = /* @__PURE__ */ new Set([\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginHorizontal\",\n \"marginVertical\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"inset\",\n \"x\",\n \"y\",\n \"letterSpacing\"\n]);\nconst borderWidthKeywords = /* @__PURE__ */ new Set([\"thin\", \"medium\", \"thick\"]);\nconst ambiguousCssKeywords = /* @__PURE__ */ new Set([\n \"auto\",\n \"dashed\",\n \"dotted\",\n \"double\",\n \"groove\",\n \"hidden\",\n \"inherit\",\n \"initial\",\n \"inset\",\n \"none\",\n \"outset\",\n \"revert\",\n \"revert-layer\",\n \"ridge\",\n \"solid\",\n \"unset\"\n]);\nconst cssLengthUnits = \"(?:px|em|rem|ex|ch|cap|ic|lh|rlh|vw|vh|vmin|vmax|svw|svh|svmin|svmax|lvw|lvh|lvmin|lvmax|dvw|dvh|dvmin|dvmax|cm|mm|q|in|pt|pc)\";\nconst cssLengthPattern = new RegExp(`^-?(?:\\\\d+|\\\\d*\\\\.\\\\d+)${cssLengthUnits}$`, \"i\");\nfunction hasName(names, name) {\n if (!names) return false;\n if (Array.isArray(names)) return names.includes(name);\n if (names instanceof Set) return names.has(name);\n return name in names;\n}\nfunction splitCandidate(candidate) {\n const parts = [];\n let current = \"\";\n let bracketDepth = 0;\n let escaped = false;\n for (const char of candidate) {\n if (escaped) {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"[\") bracketDepth++;\n if (char === \"]\") bracketDepth--;\n if (char === \":\" && bracketDepth === 0) {\n parts.push(current);\n current = \"\";\n } else {\n current += char;\n }\n }\n if (!current || bracketDepth !== 0) return null;\n return { modifiers: parts, base: current };\n}\nconst modifierVocabularyCache = /* @__PURE__ */ new WeakMap();\nconst modifierKindGroup = 5;\nconst modifierKindContainer = 6;\nfunction getModifierVocabulary(config) {\n let vocabulary = modifierVocabularyCache.get(config);\n if (!vocabulary) {\n vocabulary = compileModifierVocabulary(config);\n modifierVocabularyCache.set(config, vocabulary);\n }\n return vocabulary;\n}\nfunction modifierKindCode(modifier, config) {\n const vocabulary = getModifierVocabulary(config);\n const exact = vocabulary[modifier];\n if (exact !== void 0) return exact & 7;\n if (parseGroupModifier(modifier)) return modifierKindGroup;\n const sizeEnd = containerModifierSizeEnd(modifier);\n if (sizeEnd === -1) return 0;\n const size = modifier.slice(1, sizeEnd);\n return (vocabulary[size] & 7) === modifierKindMedia && (config.containerSizeNames === void 0 || hasName(config.containerSizeNames, size)) ? modifierKindContainer : 0;\n}\nfunction normalizeModifiers(modifiers, config) {\n const normalized = [];\n const seen = /* @__PURE__ */ new Set();\n for (const modifier of modifiers) {\n const canonical = canonicalClauseModifier(modifier);\n const kind = modifierKindCode(canonical, config);\n if (!kind || seen.has(kind)) return null;\n seen.add(kind);\n normalized.push(canonical);\n }\n return normalized;\n}\nfunction hasTokenDomain(config, category) {\n return config.tokenNames?.[category] !== void 0;\n}\nfunction hasTokenName(config, category, name) {\n return hasName(config.tokenNames?.[category], name);\n}\nfunction entriesForProps(props) {\n const byProp = new Map(grammarEntries.map((entry) => [entry.prop, entry]));\n const out = [];\n for (const prop of props) {\n const entry = byProp.get(prop);\n if (entry) out.push(entry);\n }\n return out;\n}\nfunction resolveEntries(prefix, config) {\n const registered = prefixToEntries[prefix];\n if (prefix === \"text\") {\n return entriesForProps([\"fontSize\", \"textAlign\", \"color\"]);\n }\n if (registered) return registered;\n if (prefix === \"border-x\" || prefix === \"border-y\") {\n const sides = prefix === \"border-x\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"];\n return entriesForProps(\n sides.flatMap((side) => [`border${side}Width`, `border${side}Color`])\n );\n }\n if (prefix === \"size\") {\n return entriesForProps(sizeUtilityProps);\n }\n if (prefix === \"inset-x\" || prefix === \"inset-y\") {\n return entriesForProps(insetAxisProps[prefix.slice(\"inset-\".length)]);\n }\n if (prefix.startsWith(\"rounded-\")) {\n const props = radiusCornerProps[prefix.slice(\"rounded-\".length)];\n return props ? entriesForProps(props) : [];\n }\n const expanded = config.shorthands?.[prefix];\n if (!expanded) return [];\n return grammarEntries.filter((entry) => entry.prop === expanded);\n}\nfunction findPrefix(base, config) {\n const prefixes = new Set(Object.keys(prefixToEntries));\n for (const prefix of extraPrefixes) prefixes.add(prefix);\n for (const shorthand in config.shorthands) prefixes.add(shorthand);\n let found = null;\n for (const prefix of prefixes) {\n if (base.startsWith(`${prefix}-`) && (!found || prefix.length > found.length)) {\n found = prefix;\n }\n }\n return found;\n}\nfunction arbitraryInner(rawValue) {\n if (rawValue.length <= 2 || rawValue[0] !== \"[\" || rawValue.at(-1) !== \"]\") {\n return null;\n }\n const inner = rawValue.slice(1, -1);\n return arbitraryValueIsBalanced(decodeArbitrary(inner)) ? inner : null;\n}\nfunction arbitraryValueIsBalanced(value) {\n const opening = /* @__PURE__ */ new Set([\"(\", \"[\", \"{\"]);\n const matching = { \")\": \"(\", \"]\": \"[\", \"}\": \"{\" };\n const stack = [];\n let quote = \"\";\n let escaped = false;\n for (const char of value) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (quote) {\n if (char === quote) quote = \"\";\n continue;\n }\n if (char === '\"' || char === \"'\") {\n quote = char;\n continue;\n }\n if (opening.has(char)) {\n stack.push(char);\n continue;\n }\n const expected = matching[char];\n if (expected && stack.pop() !== expected) return false;\n }\n return !escaped && !quote && stack.length === 0;\n}\nfunction fractionIsValid(value) {\n const fraction = /^(\\d+)\\/(\\d+)$/.exec(value);\n return !!fraction && Number(fraction[2]) !== 0;\n}\nfunction arbitraryTextKind(value) {\n if (/^-?(?:\\d+|\\d*\\.\\d+)$/.test(value)) return \"fontSize\";\n if (cssLengthPattern.test(value) || /^(?:calc|min|max|clamp)\\(/.test(value)) {\n return \"fontSize\";\n }\n if (ambiguousCssKeywords.has(value) || value.startsWith(\"var(\")) return null;\n if (value.startsWith(\"#\") || /^(?:rgb|hsl|hwb|lab|lch|oklab|oklch|color|color-mix|light-dark)\\(/.test(value) || namedCssColors.has(value.toLowerCase())) {\n return \"color\";\n }\n if (/^[a-zA-Z][a-zA-Z0-9-]*$/.test(value)) return \"fontSize\";\n return null;\n}\nfunction arbitraryBorderKind(value) {\n if (/^-?(?:\\d+|\\d*\\.\\d+)$/.test(value)) return \"width\";\n if (cssLengthPattern.test(value) || borderWidthKeywords.has(value)) return \"width\";\n if (/^(?:calc|min|max|clamp)\\(/.test(value)) return \"width\";\n if (ambiguousCssKeywords.has(value) || value.startsWith(\"var(\")) return null;\n if (value.startsWith(\"#\") || /^(?:rgb|hsl|hwb|lab|lch|oklab|oklch|color|color-mix|light-dark)\\(/.test(value) || /^[a-zA-Z][a-zA-Z0-9-]*$/.test(value)) {\n return \"color\";\n }\n return null;\n}\nfunction tokenLookupName(category, value) {\n if (category !== \"color\") return value;\n const suffix = splitColorOpacitySuffix(value);\n return suffix.kind === \"none\" ? value : suffix.name;\n}\nfunction chooseEntry(entries, prefix, rawValue, negative, config) {\n if (getSafeAreaEdge(rawValue)) {\n const entry = entries.find(\n ({ tokenCategory }) => tokenCategory === \"space\" || tokenCategory === \"size\" || tokenCategory === \"radius\" || tokenCategory === \"fontSize\" || tokenCategory === \"lineHeight\" || tokenCategory === \"letterSpacing\"\n );\n if (entry) {\n return { entry, valueKind: \"convenience\", convenience: \"safe-area\" };\n }\n }\n const arbitrary = arbitraryInner(rawValue);\n if (arbitrary !== null) {\n if (!arbitrary) return null;\n if (prefix.startsWith(\"border\")) {\n const width = entries.find((entry) => entry.prop.endsWith(\"Width\"));\n const color = entries.find((entry) => entry.prop.endsWith(\"Color\"));\n const kind = arbitraryBorderKind(decodeArbitrary(arbitrary));\n if (!kind || !width || !color) return null;\n return {\n entry: kind === \"width\" ? width : color,\n valueKind: \"arbitrary\"\n };\n }\n if (prefix === \"text\") {\n const kind = arbitraryTextKind(decodeArbitrary(arbitrary));\n const fontSize = entries.find((entry) => entry.prop === \"fontSize\");\n const color = entries.find((entry) => entry.prop === \"color\");\n if (kind === \"fontSize\" && fontSize) {\n return { entry: fontSize, valueKind: \"arbitrary\" };\n }\n if (kind === \"color\" && color) {\n return { entry: color, valueKind: \"arbitrary\" };\n }\n return null;\n }\n if (prefix === \"font\") {\n return {\n entry: entries.find((entry) => entry.prop === \"fontFamily\"),\n valueKind: \"arbitrary\"\n };\n }\n return { entry: entries[0], valueKind: \"arbitrary\" };\n }\n if (prefix === \"text\") {\n const fontSize = entries.find((entry) => entry.prop === \"fontSize\");\n if (fontSize && hasTokenName(config, \"fontSize\", rawValue)) {\n return { entry: fontSize, valueKind: \"token\" };\n }\n if (textAlignKeywords.has(rawValue)) {\n return {\n entry: entries.find((entry) => entry.prop === \"textAlign\"),\n valueKind: \"enum\"\n };\n }\n const color = entries.find((entry) => entry.prop === \"color\");\n const colorName = tokenLookupName(\"color\", rawValue);\n if (color && hasTokenName(config, \"color\", colorName)) {\n return { entry: color, valueKind: \"token\" };\n }\n return null;\n }\n if (prefix === \"font\") {\n const fontFamily = entries.find((entry) => entry.prop === \"fontFamily\");\n const fontWeight = entries.find((entry) => entry.prop === \"fontWeight\");\n if (!fontFamily) return null;\n const matchesFamily = hasTokenName(config, \"fontFamily\", rawValue);\n const matchesWeight = fontWeight && hasTokenName(config, \"fontWeight\", rawValue);\n if (matchesFamily && matchesWeight) return null;\n if (matchesFamily) {\n return { entry: fontFamily, valueKind: \"token\" };\n }\n if (matchesWeight) {\n return { entry: fontWeight, valueKind: \"token\" };\n }\n return fontGenerics.has(rawValue) ? { entry: fontFamily, valueKind: \"convenience\", convenience: \"font-generic\" } : null;\n }\n if (prefix.startsWith(\"border\")) {\n const width = entries.find((entry) => entry.prop.endsWith(\"Width\"));\n const color = entries.find((entry) => entry.prop.endsWith(\"Color\"));\n const token = negative ? `-${rawValue}` : rawValue;\n const matchesWidth = width && hasTokenName(config, \"space\", token);\n const colorName = tokenLookupName(\"color\", rawValue);\n const matchesColor = color && hasTokenName(config, \"color\", colorName);\n if (matchesWidth && matchesColor) return null;\n if (matchesWidth) {\n return { entry: width, valueKind: \"token\" };\n }\n if (matchesColor) {\n return { entry: color, valueKind: \"token\" };\n }\n return null;\n }\n for (const entry of entries) {\n if (entry.tokenCategory) {\n const name = negative ? `-${rawValue}` : rawValue;\n const tokenName = tokenLookupName(entry.tokenCategory, name);\n if (hasTokenName(config, entry.tokenCategory, tokenName)) {\n return { entry, valueKind: \"token\" };\n }\n if (entry.tokenCategory === \"size\" && (sizingConveniences.has(rawValue) || fractionIsValid(rawValue))) {\n return { entry, valueKind: \"convenience\", convenience: \"sizing-keyword\" };\n }\n if (entry.tokenCategory === \"zIndex\" && numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"integer\" };\n }\n continue;\n }\n if (prefix === \"opacity\" || prefix === \"scale\") {\n if (numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"percentage\" };\n }\n continue;\n }\n if (entry.prop === \"zIndex\" && numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"integer\" };\n }\n }\n return null;\n}\nfunction parseCandidate(candidate, config) {\n const split = splitCandidate(candidate);\n if (!split) return null;\n const modifiers = normalizeModifiers(split.modifiers, config);\n if (!modifiers) return null;\n const negative = split.base[0] === \"-\";\n const core = negative ? split.base.slice(1) : split.base;\n const prefix = findPrefix(core, config);\n let dynamic;\n if (prefix) {\n const rawValue = core.slice(prefix.length + 1);\n if (rawValue) {\n const entries = resolveEntries(prefix, config);\n const selected = chooseEntry(entries, prefix, rawValue, negative, config);\n if (selected && (!negative || selected.valueKind === \"token\" && negativeTokenProps.has(selected.entry.prop))) {\n dynamic = { prefix, rawValue, selected };\n if (selected.valueKind === \"token\") {\n return {\n candidate,\n base: split.base,\n modifiers,\n negative,\n kind: \"dynamic\",\n prefix,\n rawValue,\n arbitrary: arbitraryInner(rawValue) !== null,\n entry: selected.entry,\n valueKind: selected.valueKind,\n convenience: selected.convenience\n };\n }\n }\n }\n }\n const direct = wholeClassUtilities[split.base];\n if (!negative && direct) {\n const convenience = wholeClassConveniences[split.base];\n return {\n candidate,\n base: split.base,\n modifiers,\n kind: \"utility\",\n valueKind: convenience ? \"convenience\" : \"enum\",\n properties: direct,\n convenience,\n negative: false\n };\n }\n if (dynamic) {\n return {\n candidate,\n base: split.base,\n modifiers,\n negative,\n kind: \"dynamic\",\n prefix: dynamic.prefix,\n rawValue: dynamic.rawValue,\n arbitrary: arbitraryInner(dynamic.rawValue) !== null,\n entry: dynamic.selected.entry,\n valueKind: dynamic.selected.valueKind,\n convenience: dynamic.selected.convenience\n };\n }\n return null;\n}\nfunction classifyCandidate(candidate, config) {\n const parsed = parseCandidate(candidate, config);\n return parsed ? { kind: \"tamagui\", parsed } : { kind: \"passthrough\", reason: \"not in the configured Tamagui grammar\" };\n}\nfunction tokenValidationConfig(entry, value, config) {\n const tokenNames = {\n ...config?.tokenNames\n };\n const category = entry.tokenCategory;\n if (tokenNames[category] === void 0) {\n tokenNames[category] = [tokenLookupName(category, value)];\n }\n for (const other of prefixToEntries[entry.prefix] || []) {\n if (other.tokenCategory && tokenNames[other.tokenCategory] === void 0) {\n tokenNames[other.tokenCategory] = [];\n }\n }\n return { ...config, tokenNames };\n}\nfunction formatCandidate({ prop, value, valueKind, modifiers = [] }, config) {\n const entry = grammarEntries.find((candidate2) => candidate2.prop === prop);\n if (!entry) return null;\n if (valueKind === \"arbitrary\" && value === \"\") return null;\n const normalizedModifiers = normalizeModifiers(modifiers, config || {});\n if (!normalizedModifiers) return null;\n if (valueKind === \"enum\") {\n const whole2 = standaloneValueProps[prop]?.[value];\n if (whole2) {\n const candidate2 = normalizedModifiers.length ? `${normalizedModifiers.join(\":\")}:${whole2}` : whole2;\n if (config) {\n const parsed2 = parseCandidate(candidate2, config);\n if (!parsed2?.properties || parsed2.properties[prop] !== value) return null;\n }\n return candidate2;\n }\n if (prop === \"fontWeight\") {\n const name = fontWeightNames[value];\n if (!name) return null;\n const core2 = `font-${name}`;\n if (String(wholeClassUtilities[core2]?.fontWeight) !== value) return null;\n const candidate2 = normalizedModifiers.length ? `${normalizedModifiers.join(\":\")}:${core2}` : core2;\n if (config) {\n const parsed2 = parseCandidate(candidate2, config);\n if (!parsed2?.properties || String(parsed2.properties.fontWeight) !== value) {\n return null;\n }\n }\n return candidate2;\n }\n }\n if (!entry.prefix) return null;\n if (valueKind === \"token\") {\n if (!entry.tokenCategory) return null;\n const sourceDomainKnown = !!config && hasTokenDomain(config, entry.tokenCategory);\n const lookupName = tokenLookupName(entry.tokenCategory, value);\n if (sourceDomainKnown && !hasTokenName(config, entry.tokenCategory, lookupName))\n return null;\n const colliding = prefixToEntries[entry.prefix].filter(\n (other) => other.prop !== prop && other.tokenCategory\n );\n if (colliding.length) {\n if (!config || !sourceDomainKnown) return null;\n for (const other of colliding) {\n if (!hasTokenDomain(config, other.tokenCategory)) return null;\n if (hasTokenName(config, other.tokenCategory, value)) return null;\n }\n }\n }\n const formattedValue = valueKind === \"arbitrary\" ? `[${encodeArbitrary(value)}]` : value;\n const core = formattedValue[0] === \"-\" && formattedValue[1] !== \"[\" ? `-${entry.prefix}-${formattedValue.slice(1)}` : formattedValue ? `${entry.prefix}-${formattedValue}` : entry.prefix;\n const candidate = normalizedModifiers.length ? `${normalizedModifiers.join(\":\")}:${core}` : core;\n const whole = wholeClassUtilities[core];\n if (whole) {\n if (valueKind === \"token\") {\n if (!config || !hasTokenDomain(config, entry.tokenCategory)) return null;\n } else if (config) {\n const parsed2 = parseCandidate(candidate, config);\n if (parsed2?.kind === \"utility\") {\n return parsed2.properties && prop in parsed2.properties && String(parsed2.properties[prop]) === value ? candidate : null;\n }\n return parsed2?.entry?.prop === prop && parsed2.valueKind === valueKind ? candidate : null;\n } else if (prop in whole && String(whole[prop]) === value) {\n return candidate;\n } else {\n return null;\n }\n }\n if (valueKind === \"token\") {\n if (!hasTokenDomain(config || {}, entry.tokenCategory) && parseCandidate(candidate, config || {})) {\n return null;\n }\n const parsed2 = parseCandidate(candidate, tokenValidationConfig(entry, value, config));\n const parsedValue = parsed2?.rawValue ? `${parsed2.negative ? \"-\" : \"\"}${parsed2.rawValue}` : null;\n if (parsed2?.kind !== \"dynamic\" || parsed2.entry?.prop !== prop || parsed2.valueKind !== \"token\" || parsedValue !== value) {\n return null;\n }\n return candidate;\n }\n const parsed = parseCandidate(candidate, config || {});\n if (!parsed || parsed.entry?.prop !== prop || parsed.valueKind !== valueKind)\n return null;\n return candidate;\n}\nfunction encodeArbitrary(value) {\n let encoded = \"\";\n for (const char of value) {\n if (char === \"\\\\\" || char === \"_\" || char === \"[\" || char === \"]\") {\n encoded += `\\\\${char}`;\n } else if (/\\s/.test(char)) {\n encoded += \"_\";\n } else {\n encoded += char;\n }\n }\n return encoded;\n}\nfunction decodeArbitrary(value) {\n let decoded = \"\";\n for (let index = 0; index < value.length; index++) {\n const char = value[index];\n if (char === \"\\\\\" && index + 1 < value.length) {\n decoded += value[++index];\n } else {\n decoded += char === \"_\" ? \" \" : char;\n }\n }\n return decoded;\n}\nexport {\n classifyCandidate,\n decodeArbitrary,\n encodeArbitrary,\n formatCandidate,\n hasTokenName,\n parseCandidate\n};\n//# sourceMappingURL=candidate.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"candidate.js","names":[],"sources":["esm/tooling/candidate.js"],"sourcesContent":["import { namedCssColors } from \"../runtime/namedCssColors\";\nimport { propTokenGroupFallbacks } from \"./config\";\nimport {\n grammarEntries,\n fontWeightNames,\n insetAxisProps,\n prefixToEntries,\n propToGrammarEntry,\n radiusCornerProps,\n sizeUtilityProps,\n standaloneValueProps,\n textAlignKeywords,\n wholeClassConveniences,\n wholeClassUtilities\n} from \"./registry\";\nimport {\n canonicalClauseModifier,\n containerModifierSizeEnd,\n parseGroupModifier\n} from \"../runtime/clauseIdentity\";\nimport {\n compileModifierVocabulary,\n modifierKindMedia\n} from \"../runtime/modifierVocabulary\";\nimport { splitColorOpacitySuffix } from \"../runtime/colorOpacity\";\nimport { getSafeAreaEdge } from \"../runtime/safeAreaVariables\";\nconst sizingConveniences = /* @__PURE__ */ new Set([\n \"full\",\n \"auto\",\n \"screen\",\n \"dvh\",\n \"lvh\",\n \"svh\",\n \"dvw\",\n \"lvw\",\n \"svw\",\n \"min\",\n \"max\",\n \"fit\"\n]);\nconst fontGenerics = /* @__PURE__ */ new Set([\"sans\", \"serif\", \"mono\"]);\nconst numericPattern = /^\\d+(?:\\.\\d+)?$/;\nconst tailwindLeadingRatios = {\n none: 1,\n tight: 1.25,\n snug: 1.375,\n normal: 1.5,\n relaxed: 1.625,\n loose: 2\n};\nconst tailwindTrackingEms = {\n tighter: -0.05,\n tight: -0.025,\n normal: 0,\n wide: 0.025,\n wider: 0.05,\n widest: 0.1\n};\nconst extraPrefixes = [\n \"border-x\",\n \"border-y\",\n \"rounded-t\",\n \"rounded-r\",\n \"rounded-b\",\n \"rounded-l\",\n \"rounded-s\",\n \"rounded-e\",\n \"inset-x\",\n \"inset-y\",\n \"size\",\n \"translate\"\n];\nconst negativeTokenProps = /* @__PURE__ */ new Set([\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginInlineStart\",\n \"marginInlineEnd\",\n \"marginBlockStart\",\n \"marginBlockEnd\",\n \"marginHorizontal\",\n \"marginVertical\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"inset\",\n \"insetInlineStart\",\n \"insetInlineEnd\",\n \"insetBlockStart\",\n \"insetBlockEnd\",\n \"start\",\n \"end\",\n \"zIndex\",\n \"x\",\n \"y\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skewX\",\n \"skewY\",\n \"order\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"letterSpacing\",\n \"outlineOffset\"\n]);\nconst positionSpaceProps = /* @__PURE__ */ new Set([\n \"top\",\n \"right\",\n \"bottom\",\n \"left\",\n \"inset\",\n \"insetInlineStart\",\n \"insetInlineEnd\",\n \"insetBlockStart\",\n \"insetBlockEnd\",\n \"start\",\n \"end\"\n]);\nconst marginSpaceProps = /* @__PURE__ */ new Set([\n \"margin\",\n \"marginTop\",\n \"marginRight\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginInlineStart\",\n \"marginInlineEnd\",\n \"marginBlockStart\",\n \"marginBlockEnd\",\n \"marginHorizontal\",\n \"marginVertical\"\n]);\nconst borderWidthKeywords = /* @__PURE__ */ new Set([\"thin\", \"medium\", \"thick\"]);\nconst ambiguousCssKeywords = /* @__PURE__ */ new Set([\n \"auto\",\n \"dashed\",\n \"dotted\",\n \"double\",\n \"groove\",\n \"hidden\",\n \"inherit\",\n \"initial\",\n \"inset\",\n \"none\",\n \"outset\",\n \"revert\",\n \"revert-layer\",\n \"ridge\",\n \"solid\",\n \"unset\"\n]);\nconst cssLengthUnits = \"(?:px|em|rem|ex|ch|cap|ic|lh|rlh|vw|vh|vmin|vmax|svw|svh|svmin|svmax|lvw|lvh|lvmin|lvmax|dvw|dvh|dvmin|dvmax|cm|mm|q|in|pt|pc)\";\nconst cssLengthPattern = new RegExp(`^-?(?:\\\\d+|\\\\d*\\\\.\\\\d+)${cssLengthUnits}$`, \"i\");\nfunction hasName(names, name) {\n if (!names) return false;\n if (Array.isArray(names)) return names.includes(name);\n if (names instanceof Set) return names.has(name);\n return name in names;\n}\nfunction splitCandidate(candidate) {\n const parts = [];\n let current = \"\";\n let bracketDepth = 0;\n let escaped = false;\n for (const char of candidate) {\n if (escaped) {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"[\") bracketDepth++;\n if (char === \"]\") bracketDepth--;\n if (char === \":\" && bracketDepth === 0) {\n parts.push(current);\n current = \"\";\n } else {\n current += char;\n }\n }\n if (!current || bracketDepth !== 0) return null;\n return { modifiers: parts, base: current };\n}\nconst modifierVocabularyCache = /* @__PURE__ */ new WeakMap();\nconst modifierKindGroup = 5;\nconst modifierKindContainer = 6;\nfunction getModifierVocabulary(config) {\n let vocabulary = modifierVocabularyCache.get(config);\n if (!vocabulary) {\n vocabulary = compileModifierVocabulary(config);\n modifierVocabularyCache.set(config, vocabulary);\n }\n return vocabulary;\n}\nfunction modifierKindCode(modifier, config) {\n const vocabulary = getModifierVocabulary(config);\n const exact = vocabulary[modifier];\n if (exact !== void 0) return exact & 7;\n if (parseGroupModifier(modifier)) return modifierKindGroup;\n const sizeEnd = containerModifierSizeEnd(modifier);\n if (sizeEnd === -1) return 0;\n const size = modifier.slice(1, sizeEnd);\n return (vocabulary[size] & 7) === modifierKindMedia && (config.containerSizeNames === void 0 || hasName(config.containerSizeNames, size)) ? modifierKindContainer : 0;\n}\nfunction normalizeModifiers(modifiers, config) {\n const normalized = [];\n const seen = /* @__PURE__ */ new Set();\n for (const modifier of modifiers) {\n const canonical = canonicalClauseModifier(modifier);\n const kind = modifierKindCode(canonical, config);\n if (!kind || seen.has(kind)) return null;\n seen.add(kind);\n normalized.push(canonical);\n }\n return normalized;\n}\nfunction tokenDomain(config, category) {\n const fallback = propTokenGroupFallbacks[category];\n return config.tokenNames?.[category] || (fallback ? config.tokenNames?.[fallback] : void 0);\n}\nfunction hasTokenDomain(config, category) {\n return tokenDomain(config, category) !== void 0;\n}\nfunction hasTokenName(config, category, name) {\n return resolveTokenName(config, category, name) !== null;\n}\nfunction decimalHalfTokenAlias(name) {\n const match = /^(-?\\d+)\\.5$/.exec(name);\n return match ? `${match[1]}-5` : null;\n}\nfunction resolveTokenName(config, category, name) {\n const names = tokenDomain(config, category);\n if (hasName(names, name)) return name;\n const alias = decimalHalfTokenAlias(name);\n return alias !== null && hasName(names, alias) ? alias : null;\n}\nfunction entriesForProps(props) {\n const byProp = new Map(grammarEntries.map((entry) => [entry.prop, entry]));\n const out = [];\n for (const prop of props) {\n const entry = byProp.get(prop);\n if (entry) out.push(entry);\n }\n return out;\n}\nfunction resolveEntries(prefix, config) {\n const registered = prefixToEntries[prefix];\n if (prefix === \"text\") {\n return entriesForProps([\"fontSize\", \"textAlign\", \"color\"]);\n }\n if (registered) return registered;\n if (prefix === \"border-x\" || prefix === \"border-y\") {\n const sides = prefix === \"border-x\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"];\n return entriesForProps(\n sides.flatMap((side) => [`border${side}Width`, `border${side}Color`])\n );\n }\n if (prefix === \"size\") {\n return entriesForProps(sizeUtilityProps).map((entry) => ({\n ...entry,\n tokenCategory: \"size\"\n }));\n }\n if (prefix === \"inset-x\" || prefix === \"inset-y\") {\n return entriesForProps(insetAxisProps[prefix.slice(\"inset-\".length)]);\n }\n if (prefix === \"translate\") {\n return entriesForProps([\"x\", \"y\"]);\n }\n if (prefix.startsWith(\"rounded-\")) {\n const props = radiusCornerProps[prefix.slice(\"rounded-\".length)];\n return props ? entriesForProps(props) : [];\n }\n const expanded = config.shorthands?.[prefix];\n if (!expanded) return [];\n return grammarEntries.filter((entry) => entry.prop === expanded);\n}\nfunction findPrefix(base, config) {\n const prefixes = new Set(Object.keys(prefixToEntries));\n for (const prefix of extraPrefixes) prefixes.add(prefix);\n for (const shorthand in config.shorthands) prefixes.add(shorthand);\n let found = null;\n for (const prefix of prefixes) {\n if (base.startsWith(`${prefix}-`) && (!found || prefix.length > found.length)) {\n found = prefix;\n }\n }\n return found;\n}\nfunction arbitraryInner(rawValue) {\n if (rawValue.length <= 2 || rawValue[0] !== \"[\" || rawValue.at(-1) !== \"]\") {\n return null;\n }\n const inner = rawValue.slice(1, -1);\n return arbitraryValueIsBalanced(decodeArbitrary(inner)) ? inner : null;\n}\nfunction arbitraryValueIsBalanced(value) {\n const opening = /* @__PURE__ */ new Set([\"(\", \"[\", \"{\"]);\n const matching = { \")\": \"(\", \"]\": \"[\", \"}\": \"{\" };\n const stack = [];\n let quote = \"\";\n let escaped = false;\n for (const char of value) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (quote) {\n if (char === quote) quote = \"\";\n continue;\n }\n if (char === '\"' || char === \"'\") {\n quote = char;\n continue;\n }\n if (opening.has(char)) {\n stack.push(char);\n continue;\n }\n const expected = matching[char];\n if (expected && stack.pop() !== expected) return false;\n }\n return !escaped && !quote && stack.length === 0;\n}\nfunction fractionIsValid(value) {\n const fraction = /^(\\d+)\\/(\\d+)$/.exec(value);\n return !!fraction && Number(fraction[2]) !== 0;\n}\nfunction arbitraryTextKind(value) {\n if (/^-?(?:\\d+|\\d*\\.\\d+)$/.test(value)) return \"fontSize\";\n if (cssLengthPattern.test(value) || /^(?:calc|min|max|clamp)\\(/.test(value)) {\n return \"fontSize\";\n }\n if (ambiguousCssKeywords.has(value) || value.startsWith(\"var(\")) return null;\n if (value.startsWith(\"#\") || /^(?:rgb|hsl|hwb|lab|lch|oklab|oklch|color|color-mix|light-dark)\\(/.test(value) || namedCssColors.has(value.toLowerCase())) {\n return \"color\";\n }\n if (/^[a-zA-Z][a-zA-Z0-9-]*$/.test(value)) return \"fontSize\";\n return null;\n}\nfunction isWidthColorPrefix(prefix) {\n return prefix.startsWith(\"border\") || prefix === \"outline\";\n}\nfunction arbitraryBorderKind(value) {\n if (/^-?(?:\\d+|\\d*\\.\\d+)$/.test(value)) return \"width\";\n if (cssLengthPattern.test(value) || borderWidthKeywords.has(value)) return \"width\";\n if (/^(?:calc|min|max|clamp)\\(/.test(value)) return \"width\";\n if (ambiguousCssKeywords.has(value) || value.startsWith(\"var(\")) return null;\n if (value.startsWith(\"#\") || /^(?:rgb|hsl|hwb|lab|lch|oklab|oklch|color|color-mix|light-dark)\\(/.test(value) || /^[a-zA-Z][a-zA-Z0-9-]*$/.test(value)) {\n return \"color\";\n }\n return null;\n}\nfunction tokenLookupName(category, value) {\n if (category !== \"color\") return value;\n const suffix = splitColorOpacitySuffix(value);\n return suffix.kind === \"none\" ? value : suffix.name;\n}\nfunction chooseEntry(entries, prefix, rawValue, negative, config) {\n if (getSafeAreaEdge(rawValue)) {\n const entry = entries.find(\n ({ tokenCategory }) => tokenCategory === \"space\" || tokenCategory === \"size\" || tokenCategory === \"radius\" || tokenCategory === \"fontSize\" || tokenCategory === \"lineHeight\" || tokenCategory === \"letterSpacing\"\n );\n if (entry) {\n return { entry, valueKind: \"convenience\", convenience: \"safe-area\" };\n }\n }\n const arbitrary = arbitraryInner(rawValue);\n if (arbitrary !== null) {\n if (!arbitrary) return null;\n if (isWidthColorPrefix(prefix)) {\n const width = entries.find((entry) => entry.prop.endsWith(\"Width\"));\n const color = entries.find((entry) => entry.prop.endsWith(\"Color\"));\n const kind = arbitraryBorderKind(decodeArbitrary(arbitrary));\n if (!kind || !width || !color) return null;\n return {\n entry: kind === \"width\" ? width : color,\n valueKind: \"arbitrary\"\n };\n }\n if (prefix === \"text\") {\n const kind = arbitraryTextKind(decodeArbitrary(arbitrary));\n const fontSize = entries.find((entry) => entry.prop === \"fontSize\");\n const color = entries.find((entry) => entry.prop === \"color\");\n if (kind === \"fontSize\" && fontSize) {\n return { entry: fontSize, valueKind: \"arbitrary\" };\n }\n if (kind === \"color\" && color) {\n return { entry: color, valueKind: \"arbitrary\" };\n }\n return null;\n }\n if (prefix === \"font\") {\n return {\n entry: entries.find((entry) => entry.prop === \"fontFamily\"),\n valueKind: \"arbitrary\"\n };\n }\n return { entry: entries[0], valueKind: \"arbitrary\" };\n }\n if (prefix === \"text\") {\n const fontSize = entries.find((entry) => entry.prop === \"fontSize\");\n if (fontSize && hasTokenName(config, \"fontSize\", rawValue)) {\n return { entry: fontSize, valueKind: \"token\" };\n }\n if (textAlignKeywords.has(rawValue)) {\n return {\n entry: entries.find((entry) => entry.prop === \"textAlign\"),\n valueKind: \"enum\"\n };\n }\n const color = entries.find((entry) => entry.prop === \"color\");\n if (color && rawValue === \"transparent\") {\n return { entry: color, valueKind: \"enum\" };\n }\n const colorName = tokenLookupName(\"color\", rawValue);\n if (color && hasTokenName(config, \"color\", colorName)) {\n return { entry: color, valueKind: \"token\" };\n }\n return null;\n }\n if (prefix === \"font\") {\n const fontFamily = entries.find((entry) => entry.prop === \"fontFamily\");\n const fontWeight = entries.find((entry) => entry.prop === \"fontWeight\");\n if (!fontFamily) return null;\n const matchesFamily = hasTokenName(config, \"fontFamily\", rawValue);\n const matchesWeight = fontWeight && hasTokenName(config, \"fontWeight\", rawValue);\n if (matchesFamily && matchesWeight) return null;\n if (matchesFamily) {\n return { entry: fontFamily, valueKind: \"token\" };\n }\n if (matchesWeight) {\n return { entry: fontWeight, valueKind: \"token\" };\n }\n return fontGenerics.has(rawValue) ? { entry: fontFamily, valueKind: \"convenience\", convenience: \"font-generic\" } : null;\n }\n if (isWidthColorPrefix(prefix)) {\n const width = entries.find((entry) => entry.prop.endsWith(\"Width\"));\n const color = entries.find((entry) => entry.prop.endsWith(\"Color\"));\n const token = negative ? `-${rawValue}` : rawValue;\n const widthCategory = width?.tokenCategory || \"space\";\n const matchesWidth = width && hasTokenName(config, widthCategory, token);\n const colorName = tokenLookupName(\"color\", rawValue);\n const matchesColor = color && hasTokenName(config, \"color\", colorName);\n if (matchesWidth && matchesColor) return null;\n if (matchesWidth) {\n return { entry: width, valueKind: \"token\" };\n }\n if (matchesColor) {\n return { entry: color, valueKind: \"token\" };\n }\n if (color && rawValue === \"transparent\") {\n return { entry: color, valueKind: \"enum\" };\n }\n return null;\n }\n if (prefix === \"flex\" && fractionIsValid(rawValue)) {\n const flex = entries.find((entry) => entry.prop === \"flex\");\n if (flex) {\n return { entry: flex, valueKind: \"convenience\", convenience: \"flex-bundle\" };\n }\n }\n if (prefix === \"tracking\" && Object.hasOwn(tailwindTrackingEms, rawValue)) {\n const letterSpacing = entries.find((entry) => entry.prop === \"letterSpacing\");\n if (letterSpacing) {\n return {\n entry: letterSpacing,\n valueKind: \"convenience\",\n convenience: \"tracking-keyword\"\n };\n }\n }\n if (prefix === \"leading\" && Object.hasOwn(tailwindLeadingRatios, rawValue)) {\n const lineHeight = entries.find((entry) => entry.prop === \"lineHeight\");\n if (lineHeight) {\n return {\n entry: lineHeight,\n valueKind: \"convenience\",\n convenience: \"leading-keyword\"\n };\n }\n }\n if (numericPattern.test(rawValue)) {\n const angle = entries.find((entry) => entry.conveniences?.includes(\"angle\"));\n if (angle) {\n return { entry: angle, valueKind: \"convenience\", convenience: \"angle\" };\n }\n if (prefix === \"flex\") {\n const flex = entries.find((entry) => entry.prop === \"flex\");\n if (flex)\n return { entry: flex, valueKind: \"convenience\", convenience: \"flex-bundle\" };\n }\n if (prefix === \"grow\") {\n const grow = entries.find((entry) => entry.prop === \"flexGrow\");\n if (grow) return { entry: grow, valueKind: \"convenience\", convenience: \"integer\" };\n }\n if (prefix === \"shrink\") {\n const shrink = entries.find((entry) => entry.prop === \"flexShrink\");\n if (shrink)\n return { entry: shrink, valueKind: \"convenience\", convenience: \"integer\" };\n }\n if (prefix === \"line-clamp\") {\n const clamp = entries.find((entry) => entry.prop === \"numberOfLines\");\n if (clamp) return { entry: clamp, valueKind: \"convenience\", convenience: \"integer\" };\n }\n if (prefix === \"leading\") {\n const lineHeight = entries.find((entry) => entry.prop === \"lineHeight\");\n if (lineHeight && (!lineHeight.tokenCategory || !hasTokenName(config, lineHeight.tokenCategory, rawValue))) {\n return {\n entry: lineHeight,\n valueKind: \"convenience\",\n convenience: \"integer\"\n };\n }\n }\n if (prefix === \"grid-cols\" || prefix === \"col-span\" || prefix === \"col-start\" || prefix === \"col-end\" || prefix === \"row-span\" || prefix === \"row-start\" || prefix === \"row-end\") {\n const entry = entries[0];\n if (entry) return { entry, valueKind: \"convenience\", convenience: \"integer\" };\n }\n }\n for (const entry of entries) {\n if (entry.tokenCategory) {\n if (entry.tokenCategory === \"color\" && rawValue === \"transparent\") {\n return { entry, valueKind: \"enum\" };\n }\n if (entry.tokenCategory === \"radius\" && rawValue === \"none\") {\n return { entry, valueKind: \"convenience\", convenience: \"zero\" };\n }\n const name = negative && rawValue !== \"0\" ? `-${rawValue}` : rawValue;\n const tokenName = tokenLookupName(entry.tokenCategory, name);\n if (hasTokenName(config, entry.tokenCategory, tokenName)) {\n return { entry, valueKind: \"token\" };\n }\n if (entry.conveniences?.includes(\"sizing-keyword\") && (sizingConveniences.has(rawValue) || fractionIsValid(rawValue))) {\n return { entry, valueKind: \"convenience\", convenience: \"sizing-keyword\" };\n }\n if (positionSpaceProps.has(entry.prop) && (rawValue === \"full\" || rawValue === \"auto\" || fractionIsValid(rawValue))) {\n return { entry, valueKind: \"convenience\", convenience: \"sizing-keyword\" };\n }\n if (marginSpaceProps.has(entry.prop) && rawValue === \"auto\") {\n return { entry, valueKind: \"convenience\", convenience: \"sizing-keyword\" };\n }\n if (entry.tokenCategory === \"zIndex\" && numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"integer\" };\n }\n continue;\n }\n if (prefix === \"opacity\" || prefix === \"scale\" || prefix === \"scale-x\" || prefix === \"scale-y\") {\n if (numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"percentage\" };\n }\n continue;\n }\n if (entry.prop === \"zIndex\" && numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"integer\" };\n }\n if (entry.conveniences?.includes(\"integer\") && numericPattern.test(rawValue)) {\n return { entry, valueKind: \"convenience\", convenience: \"integer\" };\n }\n }\n return null;\n}\nfunction parseCandidate(candidate, config) {\n const split = splitCandidate(candidate);\n if (!split) return null;\n const modifiers = normalizeModifiers(split.modifiers, config);\n if (!modifiers) return null;\n const negative = split.base[0] === \"-\";\n const core = negative ? split.base.slice(1) : split.base;\n const prefix = findPrefix(core, config);\n let dynamic;\n if (prefix) {\n const rawValue = core.slice(prefix.length + 1);\n if (rawValue) {\n const entries = resolveEntries(prefix, config);\n const selected = chooseEntry(entries, prefix, rawValue, negative, config);\n if (selected && (!negative || selected.convenience === \"tracking-keyword\" || negativeTokenProps.has(selected.entry.prop) && (selected.valueKind === \"token\" || selected.valueKind === \"arbitrary\" && selected.entry.prop === \"order\" || selected.convenience === \"angle\" || selected.convenience === \"percentage\" || selected.convenience === \"sizing-keyword\" || selected.convenience === \"integer\"))) {\n dynamic = { prefix, rawValue, selected };\n if (selected.valueKind === \"token\") {\n return {\n candidate,\n base: split.base,\n modifiers,\n negative,\n kind: \"dynamic\",\n prefix,\n rawValue,\n arbitrary: arbitraryInner(rawValue) !== null,\n entry: selected.entry,\n valueKind: selected.valueKind,\n convenience: selected.convenience\n };\n }\n }\n }\n }\n const direct = wholeClassUtilities[split.base];\n if (!negative && direct && (split.base !== \"shadow\" || hasTokenName(config, \"boxShadow\", \"sm\"))) {\n const convenience = wholeClassConveniences[split.base];\n return {\n candidate,\n base: split.base,\n modifiers,\n kind: \"utility\",\n valueKind: convenience ? \"convenience\" : \"enum\",\n properties: direct,\n convenience,\n negative: false\n };\n }\n if (dynamic) {\n return {\n candidate,\n base: split.base,\n modifiers,\n negative,\n kind: \"dynamic\",\n prefix: dynamic.prefix,\n rawValue: dynamic.rawValue,\n arbitrary: arbitraryInner(dynamic.rawValue) !== null,\n entry: dynamic.selected.entry,\n valueKind: dynamic.selected.valueKind,\n convenience: dynamic.selected.convenience\n };\n }\n return null;\n}\nfunction classifyCandidate(candidate, config) {\n const parsed = parseCandidate(candidate, config);\n return parsed ? { kind: \"tamagui\", parsed } : { kind: \"passthrough\", reason: \"not in the configured Tamagui grammar\" };\n}\nfunction tokenValidationConfig(entry, value, config) {\n const tokenNames = {\n ...config?.tokenNames\n };\n const category = entry.tokenCategory;\n if (tokenNames[category] === void 0) {\n tokenNames[category] = [tokenLookupName(category, value)];\n }\n for (const other of prefixToEntries[entry.prefix] || []) {\n if (other.tokenCategory && tokenNames[other.tokenCategory] === void 0) {\n tokenNames[other.tokenCategory] = [];\n }\n }\n return { ...config, tokenNames };\n}\nfunction formatCandidate({ prop, value, valueKind, modifiers = [] }, config) {\n const entry = propToGrammarEntry[prop];\n if (!entry) return null;\n if (valueKind === \"arbitrary\" && value === \"\") return null;\n const normalizedModifiers = normalizeModifiers(modifiers, config || {});\n if (!normalizedModifiers) return null;\n if (valueKind === \"enum\") {\n const whole2 = standaloneValueProps[prop]?.[value];\n if (whole2) {\n const candidate2 = normalizedModifiers.length ? `${normalizedModifiers.join(\":\")}:${whole2}` : whole2;\n if (config) {\n const parsed2 = parseCandidate(candidate2, config);\n if (!parsed2?.properties || parsed2.properties[prop] !== value) return null;\n }\n return candidate2;\n }\n if (prop === \"fontWeight\") {\n const name = fontWeightNames[value];\n if (!name) return null;\n const core2 = `font-${name}`;\n if (String(wholeClassUtilities[core2]?.fontWeight) !== value) return null;\n const candidate2 = normalizedModifiers.length ? `${normalizedModifiers.join(\":\")}:${core2}` : core2;\n if (config) {\n const parsed2 = parseCandidate(candidate2, config);\n if (!parsed2?.properties || String(parsed2.properties.fontWeight) !== value) {\n return null;\n }\n }\n return candidate2;\n }\n }\n if (!entry.prefix) return null;\n if (valueKind === \"token\") {\n if (!entry.tokenCategory) return null;\n const sourceDomainKnown = !!config && hasTokenDomain(config, entry.tokenCategory);\n const lookupName = tokenLookupName(entry.tokenCategory, value);\n if (sourceDomainKnown && !hasTokenName(config, entry.tokenCategory, lookupName))\n return null;\n const colliding = prefixToEntries[entry.prefix].filter(\n (other) => other.prop !== prop && other.tokenCategory\n );\n if (colliding.length) {\n if (!config || !sourceDomainKnown) return null;\n for (const other of colliding) {\n if (!hasTokenDomain(config, other.tokenCategory)) return null;\n if (hasTokenName(config, other.tokenCategory, value)) return null;\n }\n }\n }\n const formattedValue = valueKind === \"arbitrary\" ? `[${encodeArbitrary(value)}]` : value;\n const core = formattedValue[0] === \"-\" && formattedValue[1] !== \"[\" ? `-${entry.prefix}-${formattedValue.slice(1)}` : formattedValue ? `${entry.prefix}-${formattedValue}` : entry.prefix;\n const candidate = normalizedModifiers.length ? `${normalizedModifiers.join(\":\")}:${core}` : core;\n const whole = wholeClassUtilities[core];\n if (whole) {\n if (valueKind === \"token\") {\n if (!config || !hasTokenDomain(config, entry.tokenCategory)) return null;\n } else if (config) {\n const parsed2 = parseCandidate(candidate, config);\n if (parsed2?.kind === \"utility\") {\n return parsed2.properties && prop in parsed2.properties && String(parsed2.properties[prop]) === value ? candidate : null;\n }\n return parsed2?.entry?.prop === prop && parsed2.valueKind === valueKind ? candidate : null;\n } else if (prop in whole && String(whole[prop]) === value) {\n return candidate;\n } else {\n return null;\n }\n }\n if (valueKind === \"token\") {\n if (!hasTokenDomain(config || {}, entry.tokenCategory) && parseCandidate(candidate, config || {})) {\n return null;\n }\n const parsed2 = parseCandidate(candidate, tokenValidationConfig(entry, value, config));\n const parsedValue = parsed2?.rawValue ? `${parsed2.negative ? \"-\" : \"\"}${parsed2.rawValue}` : null;\n if (parsed2?.kind !== \"dynamic\" || parsed2.entry?.prop !== prop || parsed2.valueKind !== \"token\" || parsedValue !== value) {\n return null;\n }\n return candidate;\n }\n const parsed = parseCandidate(candidate, config || {});\n if (!parsed || parsed.entry?.prop !== prop || parsed.valueKind !== valueKind)\n return null;\n return candidate;\n}\nfunction encodeArbitrary(value) {\n let encoded = \"\";\n for (const char of value) {\n if (char === \"\\\\\" || char === \"_\" || char === \"[\" || char === \"]\") {\n encoded += `\\\\${char}`;\n } else if (/\\s/.test(char)) {\n encoded += \"_\";\n } else {\n encoded += char;\n }\n }\n return encoded;\n}\nfunction decodeArbitrary(value) {\n let decoded = \"\";\n for (let index = 0; index < value.length; index++) {\n const char = value[index];\n if (char === \"\\\\\" && index + 1 < value.length) {\n decoded += value[++index];\n } else {\n decoded += char === \"_\" ? \" \" : char;\n }\n }\n return decoded;\n}\nexport {\n classifyCandidate,\n decimalHalfTokenAlias,\n decodeArbitrary,\n encodeArbitrary,\n formatCandidate,\n hasTokenName,\n parseCandidate,\n resolveTokenName,\n splitCandidate,\n tailwindLeadingRatios,\n tailwindTrackingEms\n};\n//# sourceMappingURL=candidate.js.map\n"],"mappings":";;;;;;;;;AA0BA,MAAM,qCAAqC,IAAI,IAAI;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,+BAA+B,IAAI,IAAI;CAAC;CAAQ;CAAS;AAAM,CAAC;AACtE,MAAM,iBAAiB;AACvB,MAAM,wBAAwB;CAC5B,MAAM;CACN,OAAO;CACP,MAAM;CACN,QAAQ;CACR,SAAS;CACT,OAAO;AACT;AACA,MAAM,sBAAsB;CAC1B,SAAS,CAAC;CACV,OAAO,CAAC;CACR,QAAQ;CACR,MAAM;CACN,OAAO;CACP,QAAQ;AACV;AACA,MAAM,gBAAgB;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,MAAM,qCAAqC,IAAI,IAAI;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,qCAAqC,IAAI,IAAI;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,mCAAmC,IAAI,IAAI;CAC/C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,sCAAsC,IAAI,IAAI;CAAC;CAAQ;CAAU;AAAO,CAAC;AAC/E,MAAM,uCAAuC,IAAI,IAAI;CACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,iBAAiB;AACvB,MAAM,mBAAmB,IAAI,OAAO,0BAA0B,eAAe,IAAI,GAAG;AACpF,SAAS,QAAQ,OAAO,MAAM;CAC5B,IAAI,CAAC,OAAO,OAAO;CACnB,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,SAAS,IAAI;CACpD,IAAI,i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"}
|