@tamagui/style-grammar 0.0.0-bootstrap.0 → 3.0.0-beta.643.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/LICENSE +21 -0
- package/README.md +33 -1
- package/dist/cjs/backgroundFamily.cjs +176 -0
- package/dist/cjs/backgroundFamily.native.cjs +195 -0
- package/dist/cjs/backgroundFamily.native.js +197 -0
- package/dist/cjs/backgroundFamily.native.js.map +1 -0
- package/dist/cjs/borderFamily.cjs +169 -0
- package/dist/cjs/borderFamily.native.cjs +247 -0
- package/dist/cjs/borderFamily.native.js +249 -0
- package/dist/cjs/borderFamily.native.js.map +1 -0
- package/dist/cjs/candidate.cjs +608 -0
- package/dist/cjs/candidate.native.cjs +821 -0
- package/dist/cjs/candidate.native.js +823 -0
- package/dist/cjs/candidate.native.js.map +1 -0
- package/dist/cjs/candidateTarget.cjs +50 -0
- package/dist/cjs/candidateTarget.native.cjs +88 -0
- package/dist/cjs/candidateTarget.native.js +90 -0
- package/dist/cjs/candidateTarget.native.js.map +1 -0
- package/dist/cjs/clauseCapability.cjs +130 -0
- package/dist/cjs/clauseCapability.native.cjs +152 -0
- package/dist/cjs/clauseCapability.native.js +154 -0
- package/dist/cjs/clauseCapability.native.js.map +1 -0
- package/dist/cjs/clausePrecedence.cjs +153 -0
- package/dist/cjs/clausePrecedence.native.cjs +204 -0
- package/dist/cjs/clausePrecedence.native.js +206 -0
- package/dist/cjs/clausePrecedence.native.js.map +1 -0
- package/dist/cjs/clauseSources.cjs +47 -0
- package/dist/cjs/clauseSources.native.cjs +49 -0
- package/dist/cjs/clauseSources.native.js +51 -0
- package/dist/cjs/clauseSources.native.js.map +1 -0
- package/dist/cjs/config.cjs +130 -0
- package/dist/cjs/config.native.cjs +185 -0
- package/dist/cjs/config.native.js +187 -0
- package/dist/cjs/config.native.js.map +1 -0
- package/dist/cjs/evaluateProgram.cjs +65 -0
- package/dist/cjs/evaluateProgram.native.cjs +70 -0
- package/dist/cjs/evaluateProgram.native.js +72 -0
- package/dist/cjs/evaluateProgram.native.js.map +1 -0
- package/dist/cjs/fontShorthand.cjs +207 -0
- package/dist/cjs/fontShorthand.native.cjs +260 -0
- package/dist/cjs/fontShorthand.native.js +262 -0
- package/dist/cjs/fontShorthand.native.js.map +1 -0
- package/dist/cjs/geometricShorthand.cjs +122 -0
- package/dist/cjs/geometricShorthand.native.cjs +128 -0
- package/dist/cjs/geometricShorthand.native.js +130 -0
- package/dist/cjs/geometricShorthand.native.js.map +1 -0
- package/dist/cjs/index.cjs +19 -0
- package/dist/cjs/index.native.cjs +21 -0
- package/dist/cjs/index.native.js +23 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/lowerProgram.cjs +205 -0
- package/dist/cjs/lowerProgram.native.cjs +257 -0
- package/dist/cjs/lowerProgram.native.js +259 -0
- package/dist/cjs/lowerProgram.native.js.map +1 -0
- package/dist/cjs/mergeFlatValues.cjs +50 -0
- package/dist/cjs/mergeFlatValues.native.cjs +71 -0
- package/dist/cjs/mergeFlatValues.native.js +73 -0
- package/dist/cjs/mergeFlatValues.native.js.map +1 -0
- package/dist/cjs/modifierRegistry.cjs +246 -0
- package/dist/cjs/modifierRegistry.native.cjs +426 -0
- package/dist/cjs/modifierRegistry.native.js +428 -0
- package/dist/cjs/modifierRegistry.native.js.map +1 -0
- package/dist/cjs/payloadShape.cjs +69 -0
- package/dist/cjs/payloadShape.native.cjs +71 -0
- package/dist/cjs/payloadShape.native.js +73 -0
- package/dist/cjs/payloadShape.native.js.map +1 -0
- package/dist/cjs/programEligibility.cjs +46 -0
- package/dist/cjs/programEligibility.native.cjs +48 -0
- package/dist/cjs/programEligibility.native.js +50 -0
- package/dist/cjs/programEligibility.native.js.map +1 -0
- package/dist/cjs/programHash.cjs +86 -0
- package/dist/cjs/programHash.native.cjs +106 -0
- package/dist/cjs/programHash.native.js +108 -0
- package/dist/cjs/programHash.native.js.map +1 -0
- package/dist/cjs/programs.cjs +128 -0
- package/dist/cjs/programs.native.cjs +220 -0
- package/dist/cjs/programs.native.js +222 -0
- package/dist/cjs/programs.native.js.map +1 -0
- package/dist/cjs/registry.cjs +629 -0
- package/dist/cjs/registry.native.cjs +635 -0
- package/dist/cjs/registry.native.js +637 -0
- package/dist/cjs/registry.native.js.map +1 -0
- package/dist/cjs/resolvePayload.cjs +296 -0
- package/dist/cjs/resolvePayload.native.cjs +302 -0
- package/dist/cjs/resolvePayload.native.js +304 -0
- package/dist/cjs/resolvePayload.native.js.map +1 -0
- package/dist/cjs/runtime.cjs +50 -0
- package/dist/cjs/runtime.native.cjs +52 -0
- package/dist/cjs/runtime.native.js +54 -0
- package/dist/cjs/runtime.native.js.map +1 -0
- package/dist/cjs/safeAreaVariables.cjs +42 -0
- package/dist/cjs/safeAreaVariables.native.cjs +44 -0
- package/dist/cjs/safeAreaVariables.native.js +46 -0
- package/dist/cjs/safeAreaVariables.native.js.map +1 -0
- package/dist/cjs/scanFlatValue.cjs +181 -0
- package/dist/cjs/scanFlatValue.native.cjs +183 -0
- package/dist/cjs/scanFlatValue.native.js +185 -0
- package/dist/cjs/scanFlatValue.native.js.map +1 -0
- package/dist/cjs/serializePayload.cjs +149 -0
- package/dist/cjs/serializePayload.native.cjs +187 -0
- package/dist/cjs/serializePayload.native.js +189 -0
- package/dist/cjs/serializePayload.native.js.map +1 -0
- package/dist/cjs/stateModifiers.cjs +43 -0
- package/dist/cjs/stateModifiers.native.cjs +45 -0
- package/dist/cjs/stateModifiers.native.js +47 -0
- package/dist/cjs/stateModifiers.native.js.map +1 -0
- package/dist/cjs/states.cjs +97 -0
- package/dist/cjs/states.native.cjs +131 -0
- package/dist/cjs/states.native.js +133 -0
- package/dist/cjs/states.native.js.map +1 -0
- package/dist/cjs/table.cjs +54 -0
- package/dist/cjs/table.native.cjs +135 -0
- package/dist/cjs/table.native.js +137 -0
- package/dist/cjs/table.native.js.map +1 -0
- package/dist/cjs/textDecorationFamily.cjs +129 -0
- package/dist/cjs/textDecorationFamily.native.cjs +199 -0
- package/dist/cjs/textDecorationFamily.native.js +201 -0
- package/dist/cjs/textDecorationFamily.native.js.map +1 -0
- package/dist/cjs/tooling.cjs +26 -0
- package/dist/cjs/tooling.native.cjs +28 -0
- package/dist/cjs/tooling.native.js +30 -0
- package/dist/cjs/tooling.native.js.map +1 -0
- package/dist/cjs/toolingAnnotations.cjs +105 -0
- package/dist/cjs/toolingAnnotations.native.cjs +133 -0
- package/dist/cjs/toolingAnnotations.native.js +135 -0
- package/dist/cjs/toolingAnnotations.native.js.map +1 -0
- package/dist/cjs/toolingDiagnostics.cjs +459 -0
- package/dist/cjs/toolingDiagnostics.native.cjs +788 -0
- package/dist/cjs/toolingDiagnostics.native.js +790 -0
- package/dist/cjs/toolingDiagnostics.native.js.map +1 -0
- package/dist/cjs/toolingRegistry.cjs +159 -0
- package/dist/cjs/toolingRegistry.native.cjs +164 -0
- package/dist/cjs/toolingRegistry.native.js +166 -0
- package/dist/cjs/toolingRegistry.native.js.map +1 -0
- package/dist/cjs/transformFamily.cjs +425 -0
- package/dist/cjs/transformFamily.native.cjs +517 -0
- package/dist/cjs/transformFamily.native.js +519 -0
- package/dist/cjs/transformFamily.native.js.map +1 -0
- package/dist/cjs/transition.cjs +459 -0
- package/dist/cjs/transition.native.cjs +499 -0
- package/dist/cjs/transition.native.js +501 -0
- package/dist/cjs/transition.native.js.map +1 -0
- package/dist/cjs/transitionAlign.cjs +115 -0
- package/dist/cjs/transitionAlign.native.cjs +154 -0
- package/dist/cjs/transitionAlign.native.js +156 -0
- package/dist/cjs/transitionAlign.native.js.map +1 -0
- package/dist/cjs/transitionLegacy.cjs +217 -0
- package/dist/cjs/transitionLegacy.native.cjs +260 -0
- package/dist/cjs/transitionLegacy.native.js +262 -0
- package/dist/cjs/transitionLegacy.native.js.map +1 -0
- package/dist/cjs/transitionNative.cjs +281 -0
- package/dist/cjs/transitionNative.native.cjs +285 -0
- package/dist/cjs/transitionNative.native.js +287 -0
- package/dist/cjs/transitionNative.native.js.map +1 -0
- package/dist/cjs/unitlessNumbers.cjs +86 -0
- package/dist/cjs/unitlessNumbers.native.cjs +106 -0
- package/dist/cjs/unitlessNumbers.native.js +108 -0
- package/dist/cjs/unitlessNumbers.native.js.map +1 -0
- package/dist/cjs/v6ThemeNames.cjs +47 -0
- package/dist/cjs/v6ThemeNames.native.cjs +53 -0
- package/dist/cjs/v6ThemeNames.native.js +55 -0
- package/dist/cjs/v6ThemeNames.native.js.map +1 -0
- package/dist/cjs/valueParser.cjs +148 -0
- package/dist/cjs/valueParser.native.cjs +150 -0
- package/dist/cjs/valueParser.native.js +152 -0
- package/dist/cjs/valueParser.native.js.map +1 -0
- package/dist/cjs/valueTypes.cjs +38 -0
- package/dist/cjs/valueTypes.native.cjs +40 -0
- package/dist/cjs/valueTypes.native.js +42 -0
- package/dist/cjs/valueTypes.native.js.map +1 -0
- package/dist/esm/backgroundFamily.mjs +150 -0
- package/dist/esm/backgroundFamily.mjs.map +1 -0
- package/dist/esm/backgroundFamily.native.js +167 -0
- package/dist/esm/backgroundFamily.native.js.map +1 -0
- package/dist/esm/borderFamily.mjs +146 -0
- package/dist/esm/borderFamily.mjs.map +1 -0
- package/dist/esm/borderFamily.native.js +222 -0
- package/dist/esm/borderFamily.native.js.map +1 -0
- package/dist/esm/candidate.mjs +581 -0
- package/dist/esm/candidate.mjs.map +1 -0
- package/dist/esm/candidate.native.js +792 -0
- package/dist/esm/candidate.native.js.map +1 -0
- package/dist/esm/candidateTarget.mjs +29 -0
- package/dist/esm/candidateTarget.mjs.map +1 -0
- package/dist/esm/candidateTarget.native.js +65 -0
- package/dist/esm/candidateTarget.native.js.map +1 -0
- package/dist/esm/clauseCapability.mjs +107 -0
- package/dist/esm/clauseCapability.mjs.map +1 -0
- package/dist/esm/clauseCapability.native.js +127 -0
- package/dist/esm/clauseCapability.native.js.map +1 -0
- package/dist/esm/clausePrecedence.mjs +121 -0
- package/dist/esm/clausePrecedence.mjs.map +1 -0
- package/dist/esm/clausePrecedence.native.js +170 -0
- package/dist/esm/clausePrecedence.native.js.map +1 -0
- package/dist/esm/clauseSources.mjs +23 -0
- package/dist/esm/clauseSources.mjs.map +1 -0
- package/dist/esm/clauseSources.native.js +23 -0
- package/dist/esm/clauseSources.native.js.map +1 -0
- package/dist/esm/config.mjs +103 -0
- package/dist/esm/config.mjs.map +1 -0
- package/dist/esm/config.native.js +156 -0
- package/dist/esm/config.native.js.map +1 -0
- package/dist/esm/evaluateProgram.mjs +45 -0
- package/dist/esm/evaluateProgram.mjs.map +1 -0
- package/dist/esm/evaluateProgram.native.js +48 -0
- package/dist/esm/evaluateProgram.native.js.map +1 -0
- package/dist/esm/fontShorthand.mjs +184 -0
- package/dist/esm/fontShorthand.mjs.map +1 -0
- package/dist/esm/fontShorthand.native.js +235 -0
- package/dist/esm/fontShorthand.native.js.map +1 -0
- package/dist/esm/geometricShorthand.mjs +102 -0
- package/dist/esm/geometricShorthand.mjs.map +1 -0
- package/dist/esm/geometricShorthand.native.js +106 -0
- package/dist/esm/geometricShorthand.native.js.map +1 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.native.js +1 -0
- package/dist/esm/lowerProgram.mjs +182 -0
- package/dist/esm/lowerProgram.mjs.map +1 -0
- package/dist/esm/lowerProgram.native.js +232 -0
- package/dist/esm/lowerProgram.native.js.map +1 -0
- package/dist/esm/mergeFlatValues.mjs +27 -0
- package/dist/esm/mergeFlatValues.mjs.map +1 -0
- package/dist/esm/mergeFlatValues.native.js +46 -0
- package/dist/esm/mergeFlatValues.native.js.map +1 -0
- package/dist/esm/modifierRegistry.mjs +219 -0
- package/dist/esm/modifierRegistry.mjs.map +1 -0
- package/dist/esm/modifierRegistry.native.js +397 -0
- package/dist/esm/modifierRegistry.native.js.map +1 -0
- package/dist/esm/payloadShape.mjs +49 -0
- package/dist/esm/payloadShape.mjs.map +1 -0
- package/dist/esm/payloadShape.native.js +49 -0
- package/dist/esm/payloadShape.native.js.map +1 -0
- package/dist/esm/programEligibility.mjs +22 -0
- package/dist/esm/programEligibility.mjs.map +1 -0
- package/dist/esm/programEligibility.native.js +22 -0
- package/dist/esm/programEligibility.native.js.map +1 -0
- package/dist/esm/programHash.mjs +62 -0
- package/dist/esm/programHash.mjs.map +1 -0
- package/dist/esm/programHash.native.js +80 -0
- package/dist/esm/programHash.native.js.map +1 -0
- package/dist/esm/programs.mjs +103 -0
- package/dist/esm/programs.mjs.map +1 -0
- package/dist/esm/programs.native.js +193 -0
- package/dist/esm/programs.native.js.map +1 -0
- package/dist/esm/registry.mjs +595 -0
- package/dist/esm/registry.mjs.map +1 -0
- package/dist/esm/registry.native.js +599 -0
- package/dist/esm/registry.native.js.map +1 -0
- package/dist/esm/resolvePayload.mjs +273 -0
- package/dist/esm/resolvePayload.mjs.map +1 -0
- package/dist/esm/resolvePayload.native.js +277 -0
- package/dist/esm/resolvePayload.native.js.map +1 -0
- package/dist/esm/runtime.mjs +63 -0
- package/dist/esm/runtime.native.js +63 -0
- package/dist/esm/safeAreaVariables.mjs +18 -0
- package/dist/esm/safeAreaVariables.mjs.map +1 -0
- package/dist/esm/safeAreaVariables.native.js +18 -0
- package/dist/esm/safeAreaVariables.native.js.map +1 -0
- package/dist/esm/scanFlatValue.mjs +160 -0
- package/dist/esm/scanFlatValue.mjs.map +1 -0
- package/dist/esm/scanFlatValue.native.js +160 -0
- package/dist/esm/scanFlatValue.native.js.map +1 -0
- package/dist/esm/serializePayload.mjs +125 -0
- package/dist/esm/serializePayload.mjs.map +1 -0
- package/dist/esm/serializePayload.native.js +161 -0
- package/dist/esm/serializePayload.native.js.map +1 -0
- package/dist/esm/stateModifiers.mjs +19 -0
- package/dist/esm/stateModifiers.mjs.map +1 -0
- package/dist/esm/stateModifiers.native.js +19 -0
- package/dist/esm/stateModifiers.native.js.map +1 -0
- package/dist/esm/states.mjs +69 -0
- package/dist/esm/states.mjs.map +1 -0
- package/dist/esm/states.native.js +101 -0
- package/dist/esm/states.native.js.map +1 -0
- package/dist/esm/table.mjs +31 -0
- package/dist/esm/table.mjs.map +1 -0
- package/dist/esm/table.native.js +110 -0
- package/dist/esm/table.native.js.map +1 -0
- package/dist/esm/textDecorationFamily.mjs +106 -0
- package/dist/esm/textDecorationFamily.mjs.map +1 -0
- package/dist/esm/textDecorationFamily.native.js +174 -0
- package/dist/esm/textDecorationFamily.native.js.map +1 -0
- package/dist/esm/tooling.mjs +15 -0
- package/dist/esm/tooling.native.js +15 -0
- package/dist/esm/toolingAnnotations.mjs +85 -0
- package/dist/esm/toolingAnnotations.mjs.map +1 -0
- package/dist/esm/toolingAnnotations.native.js +111 -0
- package/dist/esm/toolingAnnotations.native.js.map +1 -0
- package/dist/esm/toolingDiagnostics.mjs +428 -0
- package/dist/esm/toolingDiagnostics.mjs.map +1 -0
- package/dist/esm/toolingDiagnostics.native.js +755 -0
- package/dist/esm/toolingDiagnostics.native.js.map +1 -0
- package/dist/esm/toolingRegistry.mjs +135 -0
- package/dist/esm/toolingRegistry.mjs.map +1 -0
- package/dist/esm/toolingRegistry.native.js +138 -0
- package/dist/esm/toolingRegistry.native.js.map +1 -0
- package/dist/esm/transformFamily.mjs +392 -0
- package/dist/esm/transformFamily.mjs.map +1 -0
- package/dist/esm/transformFamily.native.js +482 -0
- package/dist/esm/transformFamily.native.js.map +1 -0
- package/dist/esm/transition.mjs +434 -0
- package/dist/esm/transition.mjs.map +1 -0
- package/dist/esm/transition.native.js +472 -0
- package/dist/esm/transition.native.js.map +1 -0
- package/dist/esm/transitionAlign.mjs +95 -0
- package/dist/esm/transitionAlign.mjs.map +1 -0
- package/dist/esm/transitionAlign.native.js +132 -0
- package/dist/esm/transitionAlign.native.js.map +1 -0
- package/dist/esm/transitionLegacy.mjs +197 -0
- package/dist/esm/transitionLegacy.mjs.map +1 -0
- package/dist/esm/transitionLegacy.native.js +238 -0
- package/dist/esm/transitionLegacy.native.js.map +1 -0
- package/dist/esm/transitionNative.mjs +257 -0
- package/dist/esm/transitionNative.mjs.map +1 -0
- package/dist/esm/transitionNative.native.js +259 -0
- package/dist/esm/transitionNative.native.js.map +1 -0
- package/dist/esm/unitlessNumbers.mjs +65 -0
- package/dist/esm/unitlessNumbers.mjs.map +1 -0
- package/dist/esm/unitlessNumbers.native.js +83 -0
- package/dist/esm/unitlessNumbers.native.js.map +1 -0
- package/dist/esm/v6ThemeNames.mjs +23 -0
- package/dist/esm/v6ThemeNames.mjs.map +1 -0
- package/dist/esm/v6ThemeNames.native.js +27 -0
- package/dist/esm/v6ThemeNames.native.js.map +1 -0
- package/dist/esm/valueParser.mjs +125 -0
- package/dist/esm/valueParser.mjs.map +1 -0
- package/dist/esm/valueParser.native.js +125 -0
- package/dist/esm/valueParser.native.js.map +1 -0
- package/dist/esm/valueTypes.mjs +14 -0
- package/dist/esm/valueTypes.mjs.map +1 -0
- package/dist/esm/valueTypes.native.js +14 -0
- package/dist/esm/valueTypes.native.js.map +1 -0
- package/package.json +98 -4
- package/src/backgroundFamily.ts +182 -0
- package/src/borderFamily.ts +172 -0
- package/src/candidate.ts +691 -0
- package/src/candidateTarget.ts +67 -0
- package/src/clauseCapability.ts +209 -0
- package/src/clausePrecedence.ts +198 -0
- package/src/clauseSources.ts +29 -0
- package/src/config.ts +169 -0
- package/src/evaluateProgram.ts +91 -0
- package/src/fontShorthand.ts +177 -0
- package/src/geometricShorthand.ts +105 -0
- package/src/index.ts +1 -0
- package/src/lowerProgram.ts +398 -0
- package/src/modifierRegistry.ts +340 -0
- package/src/payloadShape.ts +92 -0
- package/src/programEligibility.ts +46 -0
- package/src/programHash.ts +128 -0
- package/src/programs.ts +95 -0
- package/src/registry.ts +367 -0
- package/src/resolvePayload.ts +480 -0
- package/src/runtime.ts +32 -0
- package/src/safeAreaVariables.ts +19 -0
- package/src/scanFlatValue.ts +327 -0
- package/src/serializePayload.ts +199 -0
- package/src/stateModifiers.ts +36 -0
- package/src/states.ts +128 -0
- package/src/table.ts +47 -0
- package/src/textDecorationFamily.ts +119 -0
- package/src/tooling.ts +8 -0
- package/src/toolingAnnotations.ts +151 -0
- package/src/toolingDiagnostics.ts +735 -0
- package/src/toolingRegistry.ts +130 -0
- package/src/transformFamily.ts +590 -0
- package/src/transition.ts +553 -0
- package/src/transitionAlign.ts +165 -0
- package/src/transitionLegacy.ts +237 -0
- package/src/transitionNative.ts +357 -0
- package/src/unitlessNumbers.ts +61 -0
- package/src/v6ThemeNames.ts +40 -0
- package/src/valueParser.ts +193 -0
- package/src/valueTypes.ts +136 -0
- package/types/backgroundFamily.d.ts +17 -0
- package/types/backgroundFamily.d.ts.map +11 -0
- package/types/borderFamily.d.ts +23 -0
- package/types/borderFamily.d.ts.map +11 -0
- package/types/candidate.d.ts +52 -0
- package/types/candidate.d.ts.map +11 -0
- package/types/candidateTarget.d.ts +32 -0
- package/types/candidateTarget.d.ts.map +11 -0
- package/types/clauseCapability.d.ts +69 -0
- package/types/clauseCapability.d.ts.map +11 -0
- package/types/clausePrecedence.d.ts +30 -0
- package/types/clausePrecedence.d.ts.map +11 -0
- package/types/clauseSources.d.ts +12 -0
- package/types/clauseSources.d.ts.map +11 -0
- package/types/config.d.ts +44 -0
- package/types/config.d.ts.map +11 -0
- package/types/evaluateProgram.d.ts +27 -0
- package/types/evaluateProgram.d.ts.map +11 -0
- package/types/fontShorthand.d.ts +25 -0
- package/types/fontShorthand.d.ts.map +11 -0
- package/types/geometricShorthand.d.ts +21 -0
- package/types/geometricShorthand.d.ts.map +11 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +11 -0
- package/types/lowerProgram.d.ts +73 -0
- package/types/lowerProgram.d.ts.map +11 -0
- package/types/mergeFlatValues.d.ts +14 -0
- package/types/mergeFlatValues.d.ts.map +11 -0
- package/types/modifierRegistry.d.ts +70 -0
- package/types/modifierRegistry.d.ts.map +11 -0
- package/types/payloadShape.d.ts +15 -0
- package/types/payloadShape.d.ts.map +11 -0
- package/types/programEligibility.d.ts +23 -0
- package/types/programEligibility.d.ts.map +11 -0
- package/types/programHash.d.ts +20 -0
- package/types/programHash.d.ts.map +11 -0
- package/types/programs.d.ts +18 -0
- package/types/programs.d.ts.map +11 -0
- package/types/registry.d.ts +24 -0
- package/types/registry.d.ts.map +11 -0
- package/types/resolvePayload.d.ts +75 -0
- package/types/resolvePayload.d.ts.map +11 -0
- package/types/runtime.d.ts +34 -0
- package/types/runtime.d.ts.map +11 -0
- package/types/safeAreaVariables.d.ts +5 -0
- package/types/safeAreaVariables.d.ts.map +11 -0
- package/types/scanFlatValue.d.ts +29 -0
- package/types/scanFlatValue.d.ts.map +11 -0
- package/types/serializePayload.d.ts +13 -0
- package/types/serializePayload.d.ts.map +11 -0
- package/types/stateModifiers.d.ts +14 -0
- package/types/stateModifiers.d.ts.map +11 -0
- package/types/states.d.ts +22 -0
- package/types/states.d.ts.map +11 -0
- package/types/table.d.ts +4 -0
- package/types/table.d.ts.map +11 -0
- package/types/textDecorationFamily.d.ts +23 -0
- package/types/textDecorationFamily.d.ts.map +11 -0
- package/types/tooling.d.ts +10 -0
- package/types/tooling.d.ts.map +11 -0
- package/types/toolingAnnotations.d.ts +29 -0
- package/types/toolingAnnotations.d.ts.map +11 -0
- package/types/toolingDiagnostics.d.ts +114 -0
- package/types/toolingDiagnostics.d.ts.map +11 -0
- package/types/toolingRegistry.d.ts +10 -0
- package/types/toolingRegistry.d.ts.map +11 -0
- package/types/transformFamily.d.ts +83 -0
- package/types/transformFamily.d.ts.map +11 -0
- package/types/transition.d.ts +65 -0
- package/types/transition.d.ts.map +11 -0
- package/types/transitionAlign.d.ts +15 -0
- package/types/transitionAlign.d.ts.map +11 -0
- package/types/transitionLegacy.d.ts +9 -0
- package/types/transitionLegacy.d.ts.map +11 -0
- package/types/transitionNative.d.ts +41 -0
- package/types/transitionNative.d.ts.map +11 -0
- package/types/unitlessNumbers.d.ts +3 -0
- package/types/unitlessNumbers.d.ts.map +11 -0
- package/types/v6ThemeNames.d.ts +7 -0
- package/types/v6ThemeNames.d.ts.map +11 -0
- package/types/valueParser.d.ts +36 -0
- package/types/valueParser.d.ts.map +11 -0
- package/types/valueTypes.d.ts +66 -0
- package/types/valueTypes.d.ts.map +11 -0
|
@@ -0,0 +1,581 @@
|
|
|
1
|
+
import { fontWeightNames, grammarEntries, modifierAliases, prefixToEntries, radiusCornerProps, standaloneValueProps, textAlignKeywords, wholeClassConveniences, wholeClassUtilities } from "./registry.mjs";
|
|
2
|
+
import { createModifierRegistry } from "./modifierRegistry.mjs";
|
|
3
|
+
import { splitColorOpacitySuffix } from "./resolvePayload.mjs";
|
|
4
|
+
import { getSafeAreaEdge } from "./safeAreaVariables.mjs";
|
|
5
|
+
|
|
6
|
+
const sizingConveniences = /* @__PURE__ */ new Set([
|
|
7
|
+
"full",
|
|
8
|
+
"auto",
|
|
9
|
+
"screen",
|
|
10
|
+
"min",
|
|
11
|
+
"max",
|
|
12
|
+
"fit"
|
|
13
|
+
]);
|
|
14
|
+
const fontGenerics = /* @__PURE__ */ new Set([
|
|
15
|
+
"sans",
|
|
16
|
+
"serif",
|
|
17
|
+
"mono"
|
|
18
|
+
]);
|
|
19
|
+
const numericPattern = /^\d+(?:\.\d+)?$/;
|
|
20
|
+
const extraPrefixes = [
|
|
21
|
+
"border-x",
|
|
22
|
+
"border-y",
|
|
23
|
+
"rounded-t",
|
|
24
|
+
"rounded-r",
|
|
25
|
+
"rounded-b",
|
|
26
|
+
"rounded-l"
|
|
27
|
+
];
|
|
28
|
+
const negativeTokenProps = /* @__PURE__ */ new Set([
|
|
29
|
+
"margin",
|
|
30
|
+
"marginTop",
|
|
31
|
+
"marginRight",
|
|
32
|
+
"marginBottom",
|
|
33
|
+
"marginLeft",
|
|
34
|
+
"marginHorizontal",
|
|
35
|
+
"marginVertical",
|
|
36
|
+
"top",
|
|
37
|
+
"right",
|
|
38
|
+
"bottom",
|
|
39
|
+
"left",
|
|
40
|
+
"inset",
|
|
41
|
+
"x",
|
|
42
|
+
"y",
|
|
43
|
+
"letterSpacing"
|
|
44
|
+
]);
|
|
45
|
+
const borderWidthKeywords = /* @__PURE__ */ new Set([
|
|
46
|
+
"thin",
|
|
47
|
+
"medium",
|
|
48
|
+
"thick"
|
|
49
|
+
]);
|
|
50
|
+
const ambiguousCssKeywords = /* @__PURE__ */ new Set([
|
|
51
|
+
"auto",
|
|
52
|
+
"dashed",
|
|
53
|
+
"dotted",
|
|
54
|
+
"double",
|
|
55
|
+
"groove",
|
|
56
|
+
"hidden",
|
|
57
|
+
"inherit",
|
|
58
|
+
"initial",
|
|
59
|
+
"inset",
|
|
60
|
+
"none",
|
|
61
|
+
"outset",
|
|
62
|
+
"revert",
|
|
63
|
+
"revert-layer",
|
|
64
|
+
"ridge",
|
|
65
|
+
"solid",
|
|
66
|
+
"unset"
|
|
67
|
+
]);
|
|
68
|
+
const 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)";
|
|
69
|
+
const cssLengthPattern = new RegExp(`^-?(?:\\d+|\\d*\\.\\d+)${cssLengthUnits}$`, "i");
|
|
70
|
+
function hasName(names, name) {
|
|
71
|
+
if (!names) return false;
|
|
72
|
+
if (Array.isArray(names)) return names.includes(name);
|
|
73
|
+
if (names instanceof Set) return names.has(name);
|
|
74
|
+
return Object.prototype.hasOwnProperty.call(names, name);
|
|
75
|
+
}
|
|
76
|
+
function splitCandidate(candidate) {
|
|
77
|
+
const parts = [];
|
|
78
|
+
let current = "";
|
|
79
|
+
let bracketDepth = 0;
|
|
80
|
+
let escaped = false;
|
|
81
|
+
for (const char of candidate) {
|
|
82
|
+
if (escaped) {
|
|
83
|
+
current += char;
|
|
84
|
+
escaped = false;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (char === "\\") {
|
|
88
|
+
current += char;
|
|
89
|
+
escaped = true;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (char === "[") bracketDepth++;
|
|
93
|
+
if (char === "]") bracketDepth--;
|
|
94
|
+
if (char === ":" && bracketDepth === 0) {
|
|
95
|
+
parts.push(current);
|
|
96
|
+
current = "";
|
|
97
|
+
} else {
|
|
98
|
+
current += char;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (!current || bracketDepth !== 0) return null;
|
|
102
|
+
return {
|
|
103
|
+
modifiers: parts,
|
|
104
|
+
base: current
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const modifierRegistryCache = /* @__PURE__ */ new WeakMap();
|
|
108
|
+
function getModifierRegistry(config) {
|
|
109
|
+
let registry = modifierRegistryCache.get(config);
|
|
110
|
+
if (!registry) {
|
|
111
|
+
registry = createModifierRegistry(config).registry;
|
|
112
|
+
modifierRegistryCache.set(config, registry);
|
|
113
|
+
}
|
|
114
|
+
return registry;
|
|
115
|
+
}
|
|
116
|
+
function modifierKind(modifier, config) {
|
|
117
|
+
const canonical = modifierAliases[modifier] || modifier;
|
|
118
|
+
return getModifierRegistry(config).get(canonical) || null;
|
|
119
|
+
}
|
|
120
|
+
function modifiersAreKnown(modifiers, config) {
|
|
121
|
+
const seen = /* @__PURE__ */ new Set();
|
|
122
|
+
for (const modifier of modifiers) {
|
|
123
|
+
const kind = modifierKind(modifier, config);
|
|
124
|
+
if (!kind || seen.has(kind)) return false;
|
|
125
|
+
seen.add(kind);
|
|
126
|
+
}
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
function hasTokenDomain(config, category) {
|
|
130
|
+
return config.tokenNames?.[category] !== void 0;
|
|
131
|
+
}
|
|
132
|
+
function hasTokenName(config, category, name) {
|
|
133
|
+
return hasName(config.tokenNames?.[category], name);
|
|
134
|
+
}
|
|
135
|
+
function resolveEntries(prefix, config) {
|
|
136
|
+
const registered = prefixToEntries[prefix];
|
|
137
|
+
if (registered) return registered;
|
|
138
|
+
if (prefix === "border-x" || prefix === "border-y") {
|
|
139
|
+
const props = prefix === "border-x" ? ["borderLeft", "borderRight"] : ["borderTop", "borderBottom"];
|
|
140
|
+
return grammarEntries.filter((entry) => props.some((prop) => entry.prop === `${prop}Width` || entry.prop === `${prop}Color`));
|
|
141
|
+
}
|
|
142
|
+
if (prefix.startsWith("rounded-")) {
|
|
143
|
+
const props = radiusCornerProps[prefix.slice("rounded-".length)];
|
|
144
|
+
return props ? grammarEntries.filter((entry) => props.includes(entry.prop)) : [];
|
|
145
|
+
}
|
|
146
|
+
const expanded = config.shorthands?.[prefix];
|
|
147
|
+
if (!expanded) return [];
|
|
148
|
+
return grammarEntries.filter((entry) => entry.prop === expanded);
|
|
149
|
+
}
|
|
150
|
+
function findPrefix(base, config) {
|
|
151
|
+
const prefixes = new Set(Object.keys(prefixToEntries));
|
|
152
|
+
for (const prefix of extraPrefixes) prefixes.add(prefix);
|
|
153
|
+
for (const shorthand in config.shorthands) prefixes.add(shorthand);
|
|
154
|
+
let found = null;
|
|
155
|
+
for (const prefix of prefixes) {
|
|
156
|
+
if (base.startsWith(`${prefix}-`) && (!found || prefix.length > found.length)) {
|
|
157
|
+
found = prefix;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return found;
|
|
161
|
+
}
|
|
162
|
+
function arbitraryInner(rawValue) {
|
|
163
|
+
if (rawValue.length <= 2 || rawValue[0] !== "[" || rawValue.at(-1) !== "]") {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
const inner = rawValue.slice(1, -1);
|
|
167
|
+
return arbitraryValueIsBalanced(decodeArbitrary(inner)) ? inner : null;
|
|
168
|
+
}
|
|
169
|
+
function arbitraryValueIsBalanced(value) {
|
|
170
|
+
const opening = /* @__PURE__ */ new Set([
|
|
171
|
+
"(",
|
|
172
|
+
"[",
|
|
173
|
+
"{"
|
|
174
|
+
]);
|
|
175
|
+
const matching = {
|
|
176
|
+
")": "(",
|
|
177
|
+
"]": "[",
|
|
178
|
+
"}": "{"
|
|
179
|
+
};
|
|
180
|
+
const stack = [];
|
|
181
|
+
let quote = "";
|
|
182
|
+
let escaped = false;
|
|
183
|
+
for (const char of value) {
|
|
184
|
+
if (escaped) {
|
|
185
|
+
escaped = false;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
if (char === "\\") {
|
|
189
|
+
escaped = true;
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if (quote) {
|
|
193
|
+
if (char === quote) quote = "";
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (char === "\"" || char === "'") {
|
|
197
|
+
quote = char;
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (opening.has(char)) {
|
|
201
|
+
stack.push(char);
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
const expected = matching[char];
|
|
205
|
+
if (expected && stack.pop() !== expected) return false;
|
|
206
|
+
}
|
|
207
|
+
return !escaped && !quote && stack.length === 0;
|
|
208
|
+
}
|
|
209
|
+
function fractionIsValid(value) {
|
|
210
|
+
const fraction = /^(\d+)\/(\d+)$/.exec(value);
|
|
211
|
+
return !!fraction && Number(fraction[2]) !== 0;
|
|
212
|
+
}
|
|
213
|
+
function arbitraryBorderKind(value) {
|
|
214
|
+
if (/^-?(?:\d+|\d*\.\d+)$/.test(value)) return "width";
|
|
215
|
+
if (cssLengthPattern.test(value) || borderWidthKeywords.has(value)) return "width";
|
|
216
|
+
if (/^(?:calc|min|max|clamp)\(/.test(value)) return "width";
|
|
217
|
+
if (ambiguousCssKeywords.has(value) || value.startsWith("var(")) return null;
|
|
218
|
+
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)) {
|
|
219
|
+
return "color";
|
|
220
|
+
}
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
function tokenLookupName(category, value) {
|
|
224
|
+
if (category !== "color") return value;
|
|
225
|
+
const suffix = splitColorOpacitySuffix(value);
|
|
226
|
+
return suffix.kind === "none" ? value : suffix.name;
|
|
227
|
+
}
|
|
228
|
+
function chooseEntry(entries, prefix, rawValue, negative, config) {
|
|
229
|
+
if (getSafeAreaEdge(rawValue)) {
|
|
230
|
+
const entry = entries.find(({ tokenCategory }) => tokenCategory === "space" || tokenCategory === "size" || tokenCategory === "radius" || tokenCategory === "fontSize" || tokenCategory === "lineHeight" || tokenCategory === "letterSpacing");
|
|
231
|
+
if (entry) {
|
|
232
|
+
return {
|
|
233
|
+
entry,
|
|
234
|
+
valueKind: "convenience",
|
|
235
|
+
convenience: "safe-area"
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const arbitrary = arbitraryInner(rawValue);
|
|
240
|
+
if (arbitrary !== null) {
|
|
241
|
+
if (!arbitrary) return null;
|
|
242
|
+
if (prefix.startsWith("border")) {
|
|
243
|
+
const width = entries.find((entry) => entry.prop.endsWith("Width"));
|
|
244
|
+
const color = entries.find((entry) => entry.prop.endsWith("Color"));
|
|
245
|
+
const kind = arbitraryBorderKind(decodeArbitrary(arbitrary));
|
|
246
|
+
if (!kind || !width || !color) return null;
|
|
247
|
+
return {
|
|
248
|
+
entry: kind === "width" ? width : color,
|
|
249
|
+
valueKind: "arbitrary"
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
if (prefix === "text") {
|
|
253
|
+
return {
|
|
254
|
+
entry: entries.find((entry) => entry.prop === "fontSize"),
|
|
255
|
+
valueKind: "arbitrary"
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (prefix === "font") {
|
|
259
|
+
return {
|
|
260
|
+
entry: entries.find((entry) => entry.prop === "fontFamily"),
|
|
261
|
+
valueKind: "arbitrary"
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
entry: entries[0],
|
|
266
|
+
valueKind: "arbitrary"
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
if (prefix === "text") {
|
|
270
|
+
const fontSize = entries.find((entry) => entry.prop === "fontSize");
|
|
271
|
+
if (fontSize && hasTokenName(config, "fontSize", rawValue)) {
|
|
272
|
+
return {
|
|
273
|
+
entry: fontSize,
|
|
274
|
+
valueKind: "token"
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
if (textAlignKeywords.has(rawValue)) {
|
|
278
|
+
return {
|
|
279
|
+
entry: entries.find((entry) => entry.prop === "textAlign"),
|
|
280
|
+
valueKind: "enum"
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
if (prefix === "font") {
|
|
286
|
+
const fontFamily = entries.find((entry) => entry.prop === "fontFamily");
|
|
287
|
+
const fontWeight = entries.find((entry) => entry.prop === "fontWeight");
|
|
288
|
+
if (!fontFamily) return null;
|
|
289
|
+
const matchesFamily = hasTokenName(config, "fontFamily", rawValue);
|
|
290
|
+
const matchesWeight = fontWeight && hasTokenName(config, "fontWeight", rawValue);
|
|
291
|
+
if (matchesFamily && matchesWeight) return null;
|
|
292
|
+
if (matchesFamily) {
|
|
293
|
+
return {
|
|
294
|
+
entry: fontFamily,
|
|
295
|
+
valueKind: "token"
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
if (matchesWeight) {
|
|
299
|
+
return {
|
|
300
|
+
entry: fontWeight,
|
|
301
|
+
valueKind: "token"
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
return fontGenerics.has(rawValue) ? {
|
|
305
|
+
entry: fontFamily,
|
|
306
|
+
valueKind: "convenience",
|
|
307
|
+
convenience: "font-generic"
|
|
308
|
+
} : null;
|
|
309
|
+
}
|
|
310
|
+
if (prefix.startsWith("border")) {
|
|
311
|
+
const width = entries.find((entry) => entry.prop.endsWith("Width"));
|
|
312
|
+
const color = entries.find((entry) => entry.prop.endsWith("Color"));
|
|
313
|
+
const token = negative ? `-${rawValue}` : rawValue;
|
|
314
|
+
const matchesWidth = width && hasTokenName(config, "space", token);
|
|
315
|
+
const colorName = tokenLookupName("color", rawValue);
|
|
316
|
+
const matchesColor = color && hasTokenName(config, "color", colorName);
|
|
317
|
+
if (matchesWidth && matchesColor) return null;
|
|
318
|
+
if (matchesWidth) {
|
|
319
|
+
return {
|
|
320
|
+
entry: width,
|
|
321
|
+
valueKind: "token"
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
if (matchesColor) {
|
|
325
|
+
return {
|
|
326
|
+
entry: color,
|
|
327
|
+
valueKind: "token"
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
for (const entry of entries) {
|
|
333
|
+
if (entry.tokenCategory) {
|
|
334
|
+
const name = negative ? `-${rawValue}` : rawValue;
|
|
335
|
+
const tokenName = tokenLookupName(entry.tokenCategory, name);
|
|
336
|
+
if (hasTokenName(config, entry.tokenCategory, tokenName)) {
|
|
337
|
+
return {
|
|
338
|
+
entry,
|
|
339
|
+
valueKind: "token"
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
if (entry.tokenCategory === "size" && (sizingConveniences.has(rawValue) || fractionIsValid(rawValue))) {
|
|
343
|
+
return {
|
|
344
|
+
entry,
|
|
345
|
+
valueKind: "convenience",
|
|
346
|
+
convenience: "sizing-keyword"
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
if (entry.tokenCategory === "zIndex" && numericPattern.test(rawValue)) {
|
|
350
|
+
return {
|
|
351
|
+
entry,
|
|
352
|
+
valueKind: "convenience",
|
|
353
|
+
convenience: "integer"
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
if (prefix === "opacity" || prefix === "scale") {
|
|
359
|
+
if (numericPattern.test(rawValue)) {
|
|
360
|
+
return {
|
|
361
|
+
entry,
|
|
362
|
+
valueKind: "convenience",
|
|
363
|
+
convenience: "percentage"
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (entry.prop === "zIndex" && numericPattern.test(rawValue)) {
|
|
369
|
+
return {
|
|
370
|
+
entry,
|
|
371
|
+
valueKind: "convenience",
|
|
372
|
+
convenience: "integer"
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
function parseCandidate(candidate, config) {
|
|
379
|
+
const split = splitCandidate(candidate);
|
|
380
|
+
if (!split || !modifiersAreKnown(split.modifiers, config)) {
|
|
381
|
+
return null;
|
|
382
|
+
}
|
|
383
|
+
const modifiers = split.modifiers.map((modifier) => modifierAliases[modifier] || modifier);
|
|
384
|
+
const negative = split.base[0] === "-";
|
|
385
|
+
const core = negative ? split.base.slice(1) : split.base;
|
|
386
|
+
const prefix = findPrefix(core, config);
|
|
387
|
+
let dynamic;
|
|
388
|
+
if (prefix) {
|
|
389
|
+
const rawValue = core.slice(prefix.length + 1);
|
|
390
|
+
if (rawValue) {
|
|
391
|
+
const entries = resolveEntries(prefix, config);
|
|
392
|
+
const selected = chooseEntry(entries, prefix, rawValue, negative, config);
|
|
393
|
+
if (selected && (!negative || selected.valueKind === "token" && negativeTokenProps.has(selected.entry.prop))) {
|
|
394
|
+
dynamic = {
|
|
395
|
+
prefix,
|
|
396
|
+
rawValue,
|
|
397
|
+
selected
|
|
398
|
+
};
|
|
399
|
+
if (selected.valueKind === "token") {
|
|
400
|
+
return {
|
|
401
|
+
candidate,
|
|
402
|
+
base: split.base,
|
|
403
|
+
modifiers,
|
|
404
|
+
negative,
|
|
405
|
+
kind: "dynamic",
|
|
406
|
+
prefix,
|
|
407
|
+
rawValue,
|
|
408
|
+
arbitrary: arbitraryInner(rawValue) !== null,
|
|
409
|
+
entry: selected.entry,
|
|
410
|
+
valueKind: selected.valueKind,
|
|
411
|
+
convenience: selected.convenience
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
const direct = wholeClassUtilities[split.base];
|
|
418
|
+
if (!negative && direct) {
|
|
419
|
+
const convenience = wholeClassConveniences[split.base];
|
|
420
|
+
return {
|
|
421
|
+
candidate,
|
|
422
|
+
base: split.base,
|
|
423
|
+
modifiers,
|
|
424
|
+
kind: "utility",
|
|
425
|
+
valueKind: convenience ? "convenience" : "enum",
|
|
426
|
+
properties: direct,
|
|
427
|
+
convenience,
|
|
428
|
+
negative: false
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
if (dynamic) {
|
|
432
|
+
return {
|
|
433
|
+
candidate,
|
|
434
|
+
base: split.base,
|
|
435
|
+
modifiers,
|
|
436
|
+
negative,
|
|
437
|
+
kind: "dynamic",
|
|
438
|
+
prefix: dynamic.prefix,
|
|
439
|
+
rawValue: dynamic.rawValue,
|
|
440
|
+
arbitrary: arbitraryInner(dynamic.rawValue) !== null,
|
|
441
|
+
entry: dynamic.selected.entry,
|
|
442
|
+
valueKind: dynamic.selected.valueKind,
|
|
443
|
+
convenience: dynamic.selected.convenience
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
return null;
|
|
447
|
+
}
|
|
448
|
+
function classifyCandidate(candidate, config) {
|
|
449
|
+
const parsed = parseCandidate(candidate, config);
|
|
450
|
+
return parsed ? {
|
|
451
|
+
kind: "tamagui",
|
|
452
|
+
parsed
|
|
453
|
+
} : {
|
|
454
|
+
kind: "passthrough",
|
|
455
|
+
reason: "not in the configured Tamagui grammar"
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
function tokenValidationConfig(entry, value, config) {
|
|
459
|
+
const tokenNames = { ...config?.tokenNames };
|
|
460
|
+
const category = entry.tokenCategory;
|
|
461
|
+
if (tokenNames[category] === void 0) {
|
|
462
|
+
tokenNames[category] = [tokenLookupName(category, value)];
|
|
463
|
+
}
|
|
464
|
+
for (const other of prefixToEntries[entry.prefix] || []) {
|
|
465
|
+
if (other.tokenCategory && tokenNames[other.tokenCategory] === void 0) {
|
|
466
|
+
tokenNames[other.tokenCategory] = [];
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
return {
|
|
470
|
+
...config,
|
|
471
|
+
tokenNames
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
function formatCandidate({ prop, value, valueKind, modifiers = [] }, config) {
|
|
475
|
+
const entry = grammarEntries.find((candidate2) => candidate2.prop === prop);
|
|
476
|
+
if (!entry) return null;
|
|
477
|
+
if (valueKind === "arbitrary" && value === "") return null;
|
|
478
|
+
if (!modifiersAreKnown(modifiers, config || {})) return null;
|
|
479
|
+
const normalizedModifiers = modifiers.map((modifier) => modifierAliases[modifier] || modifier);
|
|
480
|
+
if (valueKind === "enum") {
|
|
481
|
+
const whole2 = standaloneValueProps[prop]?.[value];
|
|
482
|
+
if (whole2) {
|
|
483
|
+
const candidate2 = normalizedModifiers.length ? `${normalizedModifiers.join(":")}:${whole2}` : whole2;
|
|
484
|
+
if (config) {
|
|
485
|
+
const parsed2 = parseCandidate(candidate2, config);
|
|
486
|
+
if (!parsed2?.properties || parsed2.properties[prop] !== value) return null;
|
|
487
|
+
}
|
|
488
|
+
return candidate2;
|
|
489
|
+
}
|
|
490
|
+
if (prop === "fontWeight") {
|
|
491
|
+
const name = fontWeightNames[value];
|
|
492
|
+
if (!name) return null;
|
|
493
|
+
const core2 = `font-${name}`;
|
|
494
|
+
if (String(wholeClassUtilities[core2]?.fontWeight) !== value) return null;
|
|
495
|
+
const candidate2 = normalizedModifiers.length ? `${normalizedModifiers.join(":")}:${core2}` : core2;
|
|
496
|
+
if (config) {
|
|
497
|
+
const parsed2 = parseCandidate(candidate2, config);
|
|
498
|
+
if (!parsed2?.properties || String(parsed2.properties.fontWeight) !== value) {
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
return candidate2;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
if (!entry.prefix) return null;
|
|
506
|
+
if (valueKind === "token") {
|
|
507
|
+
if (!entry.tokenCategory) return null;
|
|
508
|
+
const sourceDomainKnown = !!config && hasTokenDomain(config, entry.tokenCategory);
|
|
509
|
+
const lookupName = tokenLookupName(entry.tokenCategory, value);
|
|
510
|
+
if (sourceDomainKnown && !hasTokenName(config, entry.tokenCategory, lookupName)) return null;
|
|
511
|
+
const colliding = prefixToEntries[entry.prefix].filter((other) => other.prop !== prop && other.tokenCategory);
|
|
512
|
+
if (colliding.length) {
|
|
513
|
+
if (!config || !sourceDomainKnown) return null;
|
|
514
|
+
for (const other of colliding) {
|
|
515
|
+
if (!hasTokenDomain(config, other.tokenCategory)) return null;
|
|
516
|
+
if (hasTokenName(config, other.tokenCategory, value)) return null;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
const formattedValue = valueKind === "arbitrary" ? `[${encodeArbitrary(value)}]` : value;
|
|
521
|
+
const core = formattedValue[0] === "-" && formattedValue[1] !== "[" ? `-${entry.prefix}-${formattedValue.slice(1)}` : formattedValue ? `${entry.prefix}-${formattedValue}` : entry.prefix;
|
|
522
|
+
const candidate = normalizedModifiers.length ? `${normalizedModifiers.join(":")}:${core}` : core;
|
|
523
|
+
const whole = wholeClassUtilities[core];
|
|
524
|
+
if (whole) {
|
|
525
|
+
if (valueKind === "token") {
|
|
526
|
+
if (!config || !hasTokenDomain(config, entry.tokenCategory)) return null;
|
|
527
|
+
} else if (config) {
|
|
528
|
+
const parsed2 = parseCandidate(candidate, config);
|
|
529
|
+
if (parsed2?.kind === "utility") {
|
|
530
|
+
return Object.prototype.hasOwnProperty.call(parsed2.properties, prop) && String(parsed2.properties?.[prop]) === value ? candidate : null;
|
|
531
|
+
}
|
|
532
|
+
return parsed2?.entry?.prop === prop && parsed2.valueKind === valueKind ? candidate : null;
|
|
533
|
+
} else if (Object.prototype.hasOwnProperty.call(whole, prop) && String(whole[prop]) === value) {
|
|
534
|
+
return candidate;
|
|
535
|
+
} else {
|
|
536
|
+
return null;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
if (valueKind === "token") {
|
|
540
|
+
if (!hasTokenDomain(config || {}, entry.tokenCategory) && parseCandidate(candidate, config || {})) {
|
|
541
|
+
return null;
|
|
542
|
+
}
|
|
543
|
+
const parsed2 = parseCandidate(candidate, tokenValidationConfig(entry, value, config));
|
|
544
|
+
const parsedValue = parsed2?.rawValue ? `${parsed2.negative ? "-" : ""}${parsed2.rawValue}` : null;
|
|
545
|
+
if (parsed2?.kind !== "dynamic" || parsed2.entry?.prop !== prop || parsed2.valueKind !== "token" || parsedValue !== value) {
|
|
546
|
+
return null;
|
|
547
|
+
}
|
|
548
|
+
return candidate;
|
|
549
|
+
}
|
|
550
|
+
const parsed = parseCandidate(candidate, config || {});
|
|
551
|
+
if (!parsed || parsed.entry?.prop !== prop || parsed.valueKind !== valueKind) return null;
|
|
552
|
+
return candidate;
|
|
553
|
+
}
|
|
554
|
+
function encodeArbitrary(value) {
|
|
555
|
+
let encoded = "";
|
|
556
|
+
for (const char of value) {
|
|
557
|
+
if (char === "\\" || char === "_" || char === "[" || char === "]") {
|
|
558
|
+
encoded += `\\${char}`;
|
|
559
|
+
} else if (/\s/.test(char)) {
|
|
560
|
+
encoded += "_";
|
|
561
|
+
} else {
|
|
562
|
+
encoded += char;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
return encoded;
|
|
566
|
+
}
|
|
567
|
+
function decodeArbitrary(value) {
|
|
568
|
+
let decoded = "";
|
|
569
|
+
for (let index = 0; index < value.length; index++) {
|
|
570
|
+
const char = value[index];
|
|
571
|
+
if (char === "\\" && index + 1 < value.length) {
|
|
572
|
+
decoded += value[++index];
|
|
573
|
+
} else {
|
|
574
|
+
decoded += char === "_" ? " " : char;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
return decoded;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
export { classifyCandidate, decodeArbitrary, encodeArbitrary, formatCandidate, hasTokenName, parseCandidate };
|
|
581
|
+
//# sourceMappingURL=candidate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate.js","names":[],"sources":["esm/candidate.js"],"sourcesContent":["import {\n grammarEntries,\n fontWeightNames,\n modifierAliases,\n prefixToEntries,\n radiusCornerProps,\n standaloneValueProps,\n textAlignKeywords,\n wholeClassConveniences,\n wholeClassUtilities\n} from \"./registry\";\nimport { createModifierRegistry } from \"./modifierRegistry\";\nimport { splitColorOpacitySuffix } from \"./resolvePayload\";\nimport { getSafeAreaEdge } from \"./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];\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 Object.prototype.hasOwnProperty.call(names, name);\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 modifierRegistryCache = /* @__PURE__ */ new WeakMap();\nfunction getModifierRegistry(config) {\n let registry = modifierRegistryCache.get(config);\n if (!registry) {\n registry = createModifierRegistry(config).registry;\n modifierRegistryCache.set(config, registry);\n }\n return registry;\n}\nfunction modifierKind(modifier, config) {\n const canonical = modifierAliases[modifier] || modifier;\n return getModifierRegistry(config).get(canonical) || null;\n}\nfunction modifiersAreKnown(modifiers, config) {\n const seen = /* @__PURE__ */ new Set();\n for (const modifier of modifiers) {\n const kind = modifierKind(modifier, config);\n if (!kind || seen.has(kind)) return false;\n seen.add(kind);\n }\n return true;\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 resolveEntries(prefix, config) {\n const registered = prefixToEntries[prefix];\n if (registered) return registered;\n if (prefix === \"border-x\" || prefix === \"border-y\") {\n const props = prefix === \"border-x\" ? [\"borderLeft\", \"borderRight\"] : [\"borderTop\", \"borderBottom\"];\n return grammarEntries.filter(\n (entry) => props.some((prop) => entry.prop === `${prop}Width` || entry.prop === `${prop}Color`)\n );\n }\n if (prefix.startsWith(\"rounded-\")) {\n const props = radiusCornerProps[prefix.slice(\"rounded-\".length)];\n return props ? grammarEntries.filter((entry) => props.includes(entry.prop)) : [];\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 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 return {\n entry: entries.find((entry) => entry.prop === \"fontSize\"),\n valueKind: \"arbitrary\"\n };\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 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 || !modifiersAreKnown(split.modifiers, config)) {\n return null;\n }\n const modifiers = split.modifiers.map(\n (modifier) => modifierAliases[modifier] || modifier\n );\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 if (!modifiersAreKnown(modifiers, config || {})) return null;\n const normalizedModifiers = modifiers.map(\n (modifier) => modifierAliases[modifier] || modifier\n );\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 Object.prototype.hasOwnProperty.call(parsed2.properties, prop) && String(parsed2.properties?.[prop]) === value ? candidate : null;\n }\n return parsed2?.entry?.prop === prop && parsed2.valueKind === valueKind ? candidate : null;\n } else if (Object.prototype.hasOwnProperty.call(whole, prop) && 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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"}
|