@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,428 @@
|
|
|
1
|
+
import { resolveCandidateTarget } from "./candidateTarget.mjs";
|
|
2
|
+
import { createGrammarConfigView } from "./config.mjs";
|
|
3
|
+
import { splitGeometricShorthandValue } from "./geometricShorthand.mjs";
|
|
4
|
+
import { formatParsedValue } from "./mergeFlatValues.mjs";
|
|
5
|
+
import { validatePayloadShape } from "./payloadShape.mjs";
|
|
6
|
+
import { legacyPartComposite, programEligibility } from "./programEligibility.mjs";
|
|
7
|
+
import { resolvePayload } from "./resolvePayload.mjs";
|
|
8
|
+
import { fontWeightNames, grammarEntries, standaloneValueProps } from "./registry.mjs";
|
|
9
|
+
import { parseValue, parseValueWithSourceSpans } from "./valueParser.mjs";
|
|
10
|
+
import { v6RemovedThemeNames, v6ThemeNameReplacements } from "./v6ThemeNames.mjs";
|
|
11
|
+
|
|
12
|
+
function canonicalizeStyleValue(input, registry) {
|
|
13
|
+
const parsed = parseValue(input, registry);
|
|
14
|
+
if (!parsed.ok) return parsed;
|
|
15
|
+
return {
|
|
16
|
+
ok: true,
|
|
17
|
+
value: formatParsedValue(parsed.value),
|
|
18
|
+
parsed: parsed.value
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function forEachName(names, visit) {
|
|
22
|
+
if (!names) return;
|
|
23
|
+
if (Array.isArray(names)) {
|
|
24
|
+
for (const name of names) visit(name);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (names instanceof Set) {
|
|
28
|
+
for (const name of names) visit(name);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
for (const name in names) visit(name);
|
|
32
|
+
}
|
|
33
|
+
function createCandidatePropertyVocabulary(config) {
|
|
34
|
+
const byName = /* @__PURE__ */ new Map();
|
|
35
|
+
const entriesByCategory = /* @__PURE__ */ new Map();
|
|
36
|
+
for (const entry of grammarEntries) {
|
|
37
|
+
if (!entry.tokenCategory) continue;
|
|
38
|
+
const contributions = entriesByCategory.get(entry.tokenCategory) || [];
|
|
39
|
+
contributions.push({
|
|
40
|
+
property: entry.prop,
|
|
41
|
+
tokenCategory: entry.tokenCategory
|
|
42
|
+
});
|
|
43
|
+
entriesByCategory.set(entry.tokenCategory, contributions);
|
|
44
|
+
}
|
|
45
|
+
for (const [category, contributions] of entriesByCategory) {
|
|
46
|
+
forEachName(config.tokenNames?.[category], (name) => {
|
|
47
|
+
const existing = byName.get(name) || [];
|
|
48
|
+
for (const contribution of contributions) {
|
|
49
|
+
if (!existing.some((item) => item.property === contribution.property)) {
|
|
50
|
+
existing.push(contribution);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
byName.set(name, existing);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return byName;
|
|
57
|
+
}
|
|
58
|
+
function createGrammarConfigViewFromSerializedConfig(config, metadata) {
|
|
59
|
+
const isVersioned = typeof metadata === "object" && metadata !== null && metadata.themeFields === "values-only";
|
|
60
|
+
if (metadata !== void 0 && !isVersioned) {
|
|
61
|
+
throw new Error("@tamagui/style-grammar: unsupported serialized config themeFields format");
|
|
62
|
+
}
|
|
63
|
+
const themes = {};
|
|
64
|
+
for (const themeName in config.themes) {
|
|
65
|
+
const serializedTheme = config.themes[themeName];
|
|
66
|
+
if (!serializedTheme || typeof serializedTheme !== "object") continue;
|
|
67
|
+
const runtimeTheme = {};
|
|
68
|
+
for (const key in serializedTheme) {
|
|
69
|
+
if (isVersioned || key !== "id") {
|
|
70
|
+
runtimeTheme[key] = serializedTheme[key];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
themes[themeName] = runtimeTheme;
|
|
74
|
+
}
|
|
75
|
+
return createGrammarConfigView({
|
|
76
|
+
shorthands: config.shorthands,
|
|
77
|
+
media: config.media,
|
|
78
|
+
themes,
|
|
79
|
+
tokensParsed: config.tokens,
|
|
80
|
+
fontsParsed: config.fonts
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const removedThemeNames = new Set(v6RemovedThemeNames);
|
|
84
|
+
const grammarProperties = new Set(grammarEntries.map((entry) => entry.prop));
|
|
85
|
+
const categoryReferenceKind = {
|
|
86
|
+
color: "color",
|
|
87
|
+
space: "length",
|
|
88
|
+
size: "length",
|
|
89
|
+
radius: "length",
|
|
90
|
+
zIndex: "number",
|
|
91
|
+
fontFamily: "other",
|
|
92
|
+
fontSize: "length",
|
|
93
|
+
fontWeight: "number",
|
|
94
|
+
lineHeight: "length",
|
|
95
|
+
letterSpacing: "length"
|
|
96
|
+
};
|
|
97
|
+
function referenceKindFor(contributions, targetProperty) {
|
|
98
|
+
let fallback;
|
|
99
|
+
for (const contribution of contributions) {
|
|
100
|
+
const kind = contribution.tokenCategory ? categoryReferenceKind[contribution.tokenCategory] : "other";
|
|
101
|
+
if (contribution.property === targetProperty) return kind;
|
|
102
|
+
if (fallback !== "color") fallback = kind;
|
|
103
|
+
}
|
|
104
|
+
return fallback ?? "other";
|
|
105
|
+
}
|
|
106
|
+
function parseErrorSpan(input, error) {
|
|
107
|
+
const length = input.length;
|
|
108
|
+
if (error.code === "unregistered-modifier" && error.modifier) {
|
|
109
|
+
return {
|
|
110
|
+
start: error.index,
|
|
111
|
+
end: error.index + error.modifier.length
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (error.code === "unterminated-string" || error.code === "unterminated-function" || error.code === "unterminated-comment") {
|
|
115
|
+
return {
|
|
116
|
+
start: Math.max(0, Math.min(error.index, length - 1)),
|
|
117
|
+
end: length
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const start = Math.max(0, Math.min(error.index, length - 1));
|
|
121
|
+
const width = error.code === "stray-comment-close" ? 2 : 1;
|
|
122
|
+
return {
|
|
123
|
+
start,
|
|
124
|
+
end: Math.min(length, start + width)
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function candidateEndWithSuffix(payload, end) {
|
|
128
|
+
if (payload.charCodeAt(end) !== 47) return end;
|
|
129
|
+
let cursor = end + 1;
|
|
130
|
+
while (cursor < payload.length) {
|
|
131
|
+
const code = payload.charCodeAt(cursor);
|
|
132
|
+
if (code === 32 || code === 9 || code === 10 || code === 13 || code === 12) break;
|
|
133
|
+
if (code === 44 || code === 40 || code === 41) break;
|
|
134
|
+
cursor++;
|
|
135
|
+
}
|
|
136
|
+
return cursor;
|
|
137
|
+
}
|
|
138
|
+
function diagnoseStyleValue(property, input, options) {
|
|
139
|
+
const { result, spans } = parseValueWithSourceSpans(input, options.registry);
|
|
140
|
+
if (!result.ok) {
|
|
141
|
+
return result.errors.map((error) => {
|
|
142
|
+
const span = parseErrorSpan(input, error);
|
|
143
|
+
return {
|
|
144
|
+
code: error.code,
|
|
145
|
+
index: span.start,
|
|
146
|
+
...span,
|
|
147
|
+
message: error.message
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const targetProperty = options.config.shorthands?.[property] || property;
|
|
152
|
+
const targetIsKnown = grammarProperties.has(targetProperty);
|
|
153
|
+
const candidates = options.candidates || createCandidatePropertyVocabulary(options.config);
|
|
154
|
+
const diagnostics = [];
|
|
155
|
+
const diagnosed = /* @__PURE__ */ new Set();
|
|
156
|
+
const push = (key, diagnostic) => {
|
|
157
|
+
if (diagnosed.has(key)) return;
|
|
158
|
+
diagnosed.add(key);
|
|
159
|
+
diagnostics.push({
|
|
160
|
+
index: diagnostic.start,
|
|
161
|
+
...diagnostic
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
const diagnoseSegment = (payload, offset) => {
|
|
165
|
+
const sightings = [];
|
|
166
|
+
const resolved = resolvePayload(payload, {
|
|
167
|
+
lookup(name) {
|
|
168
|
+
const contributions2 = candidates.get(name);
|
|
169
|
+
if (!contributions2) return void 0;
|
|
170
|
+
return {
|
|
171
|
+
name,
|
|
172
|
+
kind: referenceKindFor(contributions2, targetProperty)
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
onCandidate(start, end, name, reference) {
|
|
176
|
+
sightings.push({
|
|
177
|
+
start,
|
|
178
|
+
end,
|
|
179
|
+
name,
|
|
180
|
+
resolved: reference
|
|
181
|
+
});
|
|
182
|
+
if (reference) return;
|
|
183
|
+
const replacement = v6ThemeNameReplacements[name];
|
|
184
|
+
if (replacement) {
|
|
185
|
+
push(`v6-theme-name-replaced:${name}`, {
|
|
186
|
+
code: "v6-theme-name-replaced",
|
|
187
|
+
start: offset + start,
|
|
188
|
+
end: offset + end,
|
|
189
|
+
candidate: name,
|
|
190
|
+
replacement,
|
|
191
|
+
message: `"${name}" is not a v6 built-in name; use "${replacement}"`
|
|
192
|
+
});
|
|
193
|
+
} else if (removedThemeNames.has(name)) {
|
|
194
|
+
push(`v6-theme-name-removed:${name}`, {
|
|
195
|
+
code: "v6-theme-name-removed",
|
|
196
|
+
start: offset + start,
|
|
197
|
+
end: offset + end,
|
|
198
|
+
candidate: name,
|
|
199
|
+
message: `"${name}" was removed from the v6 built-in theme vocabulary`
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
if (targetIsKnown) {
|
|
205
|
+
for (const error of resolved.errors) {
|
|
206
|
+
const sighting2 = sightings.find((entry) => entry.start === error.index);
|
|
207
|
+
if (!sighting2?.resolved) continue;
|
|
208
|
+
push(`${error.code}:${error.name}:${error.opacity}`, {
|
|
209
|
+
code: error.code,
|
|
210
|
+
start: offset + error.index,
|
|
211
|
+
end: offset + candidateEndWithSuffix(payload, sighting2.end),
|
|
212
|
+
candidate: error.name,
|
|
213
|
+
message: error.message
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const candidate = resolved.segments.length === 1 && typeof resolved.segments[0] !== "string" ? resolved.segments[0].name : null;
|
|
218
|
+
if (candidate === null || !targetIsKnown) return;
|
|
219
|
+
const contributions = candidates.get(candidate);
|
|
220
|
+
if (!contributions) return;
|
|
221
|
+
const target = resolveCandidateTarget(targetProperty, candidate, contributions);
|
|
222
|
+
if (target.ok) return;
|
|
223
|
+
const sighting = sightings.find((entry) => entry.name === candidate && entry.resolved);
|
|
224
|
+
push(`${target.diagnostic.code}:${candidate}:${targetProperty}`, {
|
|
225
|
+
...target.diagnostic,
|
|
226
|
+
start: offset + (sighting?.start ?? 0),
|
|
227
|
+
end: offset + (sighting?.end ?? payload.length)
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
for (const span of spans) {
|
|
231
|
+
if (span.kind !== "base" && span.kind !== "payload") continue;
|
|
232
|
+
if (span.start >= span.end) continue;
|
|
233
|
+
diagnoseSegment(input.slice(span.start, span.end), span.start);
|
|
234
|
+
}
|
|
235
|
+
return diagnostics;
|
|
236
|
+
}
|
|
237
|
+
function modifierChainBefore(input, spans, start) {
|
|
238
|
+
const byEnd = /* @__PURE__ */ new Map();
|
|
239
|
+
for (const span of spans) {
|
|
240
|
+
if (span.kind === "modifier") byEnd.set(span.end, span);
|
|
241
|
+
}
|
|
242
|
+
const reversed = [];
|
|
243
|
+
let colon = start - 1;
|
|
244
|
+
while (colon >= 0 && input.charCodeAt(colon) === 58) {
|
|
245
|
+
const span = byEnd.get(colon);
|
|
246
|
+
if (!span) break;
|
|
247
|
+
reversed.push(input.slice(span.start, span.end));
|
|
248
|
+
colon = span.start - 1;
|
|
249
|
+
}
|
|
250
|
+
reversed.reverse();
|
|
251
|
+
return reversed;
|
|
252
|
+
}
|
|
253
|
+
function createStylePropSet(config) {
|
|
254
|
+
const styleProps = /* @__PURE__ */ new Set([...grammarEntries.map((entry) => entry.prop), ...Object.keys(legacyPartComposite)]);
|
|
255
|
+
for (const shorthand in config.shorthands) {
|
|
256
|
+
styleProps.add(shorthand);
|
|
257
|
+
styleProps.add(config.shorthands[shorthand]);
|
|
258
|
+
}
|
|
259
|
+
return styleProps;
|
|
260
|
+
}
|
|
261
|
+
function payloadSpan(input, payload) {
|
|
262
|
+
const at = input.indexOf(payload);
|
|
263
|
+
return at === -1 ? {
|
|
264
|
+
start: 0,
|
|
265
|
+
end: input.length
|
|
266
|
+
} : {
|
|
267
|
+
start: at,
|
|
268
|
+
end: at + payload.length
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function diagnoseStyleValueProgram(property, input, options) {
|
|
272
|
+
const candidates = options.candidates || createCandidatePropertyVocabulary(options.config);
|
|
273
|
+
const scoped = {
|
|
274
|
+
...options,
|
|
275
|
+
candidates
|
|
276
|
+
};
|
|
277
|
+
const diagnostics = diagnoseStyleValue(property, input, scoped);
|
|
278
|
+
if (diagnostics.length > 0) return diagnostics;
|
|
279
|
+
const parsed = parseValue(input, options.registry);
|
|
280
|
+
if (!parsed.ok) return diagnostics;
|
|
281
|
+
const targetProperty = options.config.shorthands?.[property] || property;
|
|
282
|
+
if (parsed.value.clauses.length > 0 && programEligibility(targetProperty) === "legacy-part") {
|
|
283
|
+
return [{
|
|
284
|
+
code: "legacy-part-conditional",
|
|
285
|
+
index: 0,
|
|
286
|
+
start: 0,
|
|
287
|
+
end: input.length,
|
|
288
|
+
property: targetProperty,
|
|
289
|
+
message: `conditional values are not supported on part prop "${targetProperty}"; move the condition onto \`${legacyPartComposite[targetProperty]}\``
|
|
290
|
+
}];
|
|
291
|
+
}
|
|
292
|
+
const results = [];
|
|
293
|
+
const reported = /* @__PURE__ */ new Set();
|
|
294
|
+
const geometric = splitGeometricShorthandValue(targetProperty, parsed.value);
|
|
295
|
+
const programs = geometric && geometric.errors.length === 0 ? geometric.entries : [{
|
|
296
|
+
property: targetProperty,
|
|
297
|
+
value: parsed.value
|
|
298
|
+
}];
|
|
299
|
+
for (const program of programs) {
|
|
300
|
+
const { base, clauses } = program.value;
|
|
301
|
+
const payloads = [...base === null ? [] : [base], ...clauses.map((clause) => clause.payload)];
|
|
302
|
+
for (const payload of payloads) {
|
|
303
|
+
for (const diagnostic of diagnoseStyleValueProgramSlot(program.property, payload, scoped)) {
|
|
304
|
+
const key = `${diagnostic.code}:${diagnostic.candidate}:${program.property}`;
|
|
305
|
+
if (reported.has(key)) continue;
|
|
306
|
+
reported.add(key);
|
|
307
|
+
const span = payloadSpan(input, payload);
|
|
308
|
+
results.push({
|
|
309
|
+
...diagnostic,
|
|
310
|
+
index: span.start,
|
|
311
|
+
...span
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (base !== null) {
|
|
316
|
+
pushShapeDiagnostic(results, reported, input, program.property, base, true);
|
|
317
|
+
}
|
|
318
|
+
for (const clause of clauses) {
|
|
319
|
+
pushShapeDiagnostic(results, reported, input, program.property, clause.payload, base !== null);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return results;
|
|
323
|
+
}
|
|
324
|
+
function diagnoseStyleValueProgramSlot(property, payload, options) {
|
|
325
|
+
const slotDiagnostics = diagnoseStyleValue(property, payload, options);
|
|
326
|
+
return slotDiagnostics.filter((diagnostic) => diagnostic.code === "candidate-property-mismatch");
|
|
327
|
+
}
|
|
328
|
+
function pushShapeDiagnostic(results, reported, input, property, payload, hasBase) {
|
|
329
|
+
const diagnostic = validatePayloadShape(property, payload, hasBase);
|
|
330
|
+
if (!diagnostic) return;
|
|
331
|
+
const key = `${diagnostic.code}:${diagnostic.payload}:${property}`;
|
|
332
|
+
if (reported.has(key)) return;
|
|
333
|
+
reported.add(key);
|
|
334
|
+
const span = payloadSpan(input, payload);
|
|
335
|
+
results.push({
|
|
336
|
+
code: diagnostic.code,
|
|
337
|
+
index: span.start,
|
|
338
|
+
...span,
|
|
339
|
+
property,
|
|
340
|
+
message: diagnostic.message
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
function completeStyleValue(property, options) {
|
|
344
|
+
const candidates = options.candidates || createCandidatePropertyVocabulary(options.config);
|
|
345
|
+
const targetProperty = options.config.shorthands?.[property] || property;
|
|
346
|
+
if (!grammarProperties.has(targetProperty)) return [];
|
|
347
|
+
const byValue = /* @__PURE__ */ new Map();
|
|
348
|
+
for (const [value, contributions] of candidates) {
|
|
349
|
+
if (resolveCandidateTarget(targetProperty, value, contributions).ok) {
|
|
350
|
+
byValue.set(value, "configured");
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
const standalone = standaloneValueProps[targetProperty];
|
|
354
|
+
if (standalone) {
|
|
355
|
+
for (const value in standalone) {
|
|
356
|
+
if (!byValue.has(value)) byValue.set(value, "keyword");
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (targetProperty === "fontWeight") {
|
|
360
|
+
for (const value in fontWeightNames) {
|
|
361
|
+
if (!byValue.has(value)) byValue.set(value, "keyword");
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
const completions = [];
|
|
365
|
+
for (const [value, kind] of byValue) {
|
|
366
|
+
if (diagnoseStyleValue(property, value, {
|
|
367
|
+
...options,
|
|
368
|
+
candidates
|
|
369
|
+
}).length === 0) {
|
|
370
|
+
completions.push({
|
|
371
|
+
value,
|
|
372
|
+
kind
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
completions.sort((a, b) => a.value < b.value ? -1 : a.value > b.value ? 1 : 0);
|
|
377
|
+
return completions;
|
|
378
|
+
}
|
|
379
|
+
function completeStyleValueAtCursor(property, input, cursor, options) {
|
|
380
|
+
if (cursor < 0 || cursor > input.length) return null;
|
|
381
|
+
const parsed = parseValueWithSourceSpans(input, options.registry);
|
|
382
|
+
const active = parsed.spans.find((span) => cursor >= span.start && cursor <= span.end && span.kind === "modifier") ?? parsed.spans.find((span) => cursor >= span.start && cursor <= span.end && span.kind === "word" && span.start > 0 && parsed.result.ok && parsed.spans.some((segment) => (segment.kind === "base" || segment.kind === "payload") && segment.start < span.start && segment.end >= span.end)) ?? parsed.spans.find((span) => cursor >= span.start && cursor <= span.end && span.kind !== "modifier" && span.kind !== "word");
|
|
383
|
+
if (active?.kind === "modifier" || active?.kind === "word") {
|
|
384
|
+
if (!parsed.result.ok && parsed.result.errors.some((error) => error.code !== "unregistered-modifier" && error.code !== "empty-modifier" && error.code !== "empty-payload")) {
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
return {
|
|
388
|
+
replaceStart: active.start,
|
|
389
|
+
replaceLength: active.end - active.start,
|
|
390
|
+
completions: completeModifiers(options, input.charCodeAt(active.end) !== 58, active.kind === "modifier" ? modifierChainBefore(input, parsed.spans, active.start) : [])
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
if (active) {
|
|
394
|
+
if (!parsed.result.ok && parsed.result.errors.some((error) => error.code !== "empty-payload")) {
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
return {
|
|
398
|
+
replaceStart: active.start,
|
|
399
|
+
replaceLength: active.end - active.start,
|
|
400
|
+
completions: active.kind === "payload" && input.charCodeAt(active.start - 1) === 58 ? [...completeModifiers(options, true, modifierChainBefore(input, parsed.spans, active.start)), ...completeStyleValue(property, options)] : completeStyleValue(property, options)
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
if (parsed.result.ok && cursor === input.length) {
|
|
404
|
+
return {
|
|
405
|
+
replaceStart: cursor,
|
|
406
|
+
replaceLength: 0,
|
|
407
|
+
completions: completeModifiers(options, true, [])
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
function completeModifiers(options, appendColon, modifiers) {
|
|
413
|
+
const names = options.registry.next?.(modifiers);
|
|
414
|
+
if (!names) return [];
|
|
415
|
+
const completions = [];
|
|
416
|
+
for (const name of names) {
|
|
417
|
+
completions.push({
|
|
418
|
+
value: name,
|
|
419
|
+
kind: "modifier",
|
|
420
|
+
insertText: appendColon ? `${name}:` : name
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
completions.sort((a, b) => a.value < b.value ? -1 : a.value > b.value ? 1 : 0);
|
|
424
|
+
return completions;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
export { canonicalizeStyleValue, completeStyleValue, completeStyleValueAtCursor, createCandidatePropertyVocabulary, createGrammarConfigViewFromSerializedConfig, createStylePropSet, diagnoseStyleValue, diagnoseStyleValueProgram, modifierChainBefore, referenceKindFor };
|
|
428
|
+
//# sourceMappingURL=toolingDiagnostics.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolingDiagnostics.js","names":[],"sources":["esm/toolingDiagnostics.js"],"sourcesContent":["import {\n resolveCandidateTarget\n} from \"./candidateTarget\";\nimport { createGrammarConfigView } from \"./config\";\nimport { splitGeometricShorthandValue } from \"./geometricShorthand\";\nimport { formatParsedValue } from \"./mergeFlatValues\";\nimport { validatePayloadShape } from \"./payloadShape\";\nimport { legacyPartComposite, programEligibility } from \"./programEligibility\";\nimport {\n resolvePayload\n} from \"./resolvePayload\";\nimport {\n fontWeightNames,\n grammarEntries,\n standaloneValueProps\n} from \"./registry\";\nimport {\n parseValue,\n parseValueWithSourceSpans\n} from \"./valueParser\";\nimport { v6RemovedThemeNames, v6ThemeNameReplacements } from \"./v6ThemeNames\";\nfunction canonicalizeStyleValue(input, registry) {\n const parsed = parseValue(input, registry);\n if (!parsed.ok) return parsed;\n return {\n ok: true,\n value: formatParsedValue(parsed.value),\n parsed: parsed.value\n };\n}\nfunction forEachName(names, visit) {\n if (!names) return;\n if (Array.isArray(names)) {\n for (const name of names) visit(name);\n return;\n }\n if (names instanceof Set) {\n for (const name of names) visit(name);\n return;\n }\n for (const name in names) visit(name);\n}\nfunction createCandidatePropertyVocabulary(config) {\n const byName = /* @__PURE__ */ new Map();\n const entriesByCategory = /* @__PURE__ */ new Map();\n for (const entry of grammarEntries) {\n if (!entry.tokenCategory) continue;\n const contributions = entriesByCategory.get(entry.tokenCategory) || [];\n contributions.push({ property: entry.prop, tokenCategory: entry.tokenCategory });\n entriesByCategory.set(entry.tokenCategory, contributions);\n }\n for (const [category, contributions] of entriesByCategory) {\n forEachName(config.tokenNames?.[category], (name) => {\n const existing = byName.get(name) || [];\n for (const contribution of contributions) {\n if (!existing.some((item) => item.property === contribution.property)) {\n existing.push(contribution);\n }\n }\n byName.set(name, existing);\n });\n }\n return byName;\n}\nfunction createGrammarConfigViewFromSerializedConfig(config, metadata) {\n const isVersioned = typeof metadata === \"object\" && metadata !== null && metadata.themeFields === \"values-only\";\n if (metadata !== void 0 && !isVersioned) {\n throw new Error(\n \"@tamagui/style-grammar: unsupported serialized config themeFields format\"\n );\n }\n const themes = {};\n for (const themeName in config.themes) {\n const serializedTheme = config.themes[themeName];\n if (!serializedTheme || typeof serializedTheme !== \"object\") continue;\n const runtimeTheme = {};\n for (const key in serializedTheme) {\n if (isVersioned || key !== \"id\") {\n runtimeTheme[key] = serializedTheme[key];\n }\n }\n themes[themeName] = runtimeTheme;\n }\n return createGrammarConfigView({\n shorthands: config.shorthands,\n media: config.media,\n themes,\n tokensParsed: config.tokens,\n fontsParsed: config.fonts\n });\n}\nconst removedThemeNames = new Set(v6RemovedThemeNames);\nconst grammarProperties = new Set(\n grammarEntries.map((entry) => entry.prop)\n);\nconst categoryReferenceKind = {\n color: \"color\",\n space: \"length\",\n size: \"length\",\n radius: \"length\",\n zIndex: \"number\",\n fontFamily: \"other\",\n fontSize: \"length\",\n fontWeight: \"number\",\n lineHeight: \"length\",\n letterSpacing: \"length\"\n};\nfunction referenceKindFor(contributions, targetProperty) {\n let fallback;\n for (const contribution of contributions) {\n const kind = contribution.tokenCategory ? categoryReferenceKind[contribution.tokenCategory] : \"other\";\n if (contribution.property === targetProperty) return kind;\n if (fallback !== \"color\") fallback = kind;\n }\n return fallback ?? \"other\";\n}\nfunction parseErrorSpan(input, error) {\n const length = input.length;\n if (error.code === \"unregistered-modifier\" && error.modifier) {\n return { start: error.index, end: error.index + error.modifier.length };\n }\n if (error.code === \"unterminated-string\" || error.code === \"unterminated-function\" || error.code === \"unterminated-comment\") {\n return { start: Math.max(0, Math.min(error.index, length - 1)), end: length };\n }\n const start = Math.max(0, Math.min(error.index, length - 1));\n const width = error.code === \"stray-comment-close\" ? 2 : 1;\n return { start, end: Math.min(length, start + width) };\n}\nfunction candidateEndWithSuffix(payload, end) {\n if (payload.charCodeAt(end) !== 47) return end;\n let cursor = end + 1;\n while (cursor < payload.length) {\n const code = payload.charCodeAt(cursor);\n if (code === 32 || code === 9 || code === 10 || code === 13 || code === 12) break;\n if (code === 44 || code === 40 || code === 41) break;\n cursor++;\n }\n return cursor;\n}\nfunction diagnoseStyleValue(property, input, options) {\n const { result, spans } = parseValueWithSourceSpans(input, options.registry);\n if (!result.ok) {\n return result.errors.map((error) => {\n const span = parseErrorSpan(input, error);\n return {\n code: error.code,\n index: span.start,\n ...span,\n message: error.message\n };\n });\n }\n const targetProperty = options.config.shorthands?.[property] || property;\n const targetIsKnown = grammarProperties.has(targetProperty);\n const candidates = options.candidates || createCandidatePropertyVocabulary(options.config);\n const diagnostics = [];\n const diagnosed = /* @__PURE__ */ new Set();\n const push = (key, diagnostic) => {\n if (diagnosed.has(key)) return;\n diagnosed.add(key);\n diagnostics.push({ index: diagnostic.start, ...diagnostic });\n };\n const diagnoseSegment = (payload, offset) => {\n const sightings = [];\n const resolved = resolvePayload(payload, {\n lookup(name) {\n const contributions2 = candidates.get(name);\n if (!contributions2) return void 0;\n return { name, kind: referenceKindFor(contributions2, targetProperty) };\n },\n onCandidate(start, end, name, reference) {\n sightings.push({ start, end, name, resolved: reference });\n if (reference) return;\n const replacement = v6ThemeNameReplacements[name];\n if (replacement) {\n push(`v6-theme-name-replaced:${name}`, {\n code: \"v6-theme-name-replaced\",\n start: offset + start,\n end: offset + end,\n candidate: name,\n replacement,\n message: `\"${name}\" is not a v6 built-in name; use \"${replacement}\"`\n });\n } else if (removedThemeNames.has(name)) {\n push(`v6-theme-name-removed:${name}`, {\n code: \"v6-theme-name-removed\",\n start: offset + start,\n end: offset + end,\n candidate: name,\n message: `\"${name}\" was removed from the v6 built-in theme vocabulary`\n });\n }\n }\n });\n if (targetIsKnown) {\n for (const error of resolved.errors) {\n const sighting2 = sightings.find((entry) => entry.start === error.index);\n if (!sighting2?.resolved) continue;\n push(`${error.code}:${error.name}:${error.opacity}`, {\n code: error.code,\n start: offset + error.index,\n end: offset + candidateEndWithSuffix(payload, sighting2.end),\n candidate: error.name,\n message: error.message\n });\n }\n }\n const candidate = resolved.segments.length === 1 && typeof resolved.segments[0] !== \"string\" ? resolved.segments[0].name : null;\n if (candidate === null || !targetIsKnown) return;\n const contributions = candidates.get(candidate);\n if (!contributions) return;\n const target = resolveCandidateTarget(targetProperty, candidate, contributions);\n if (target.ok) return;\n const sighting = sightings.find((entry) => entry.name === candidate && entry.resolved);\n push(`${target.diagnostic.code}:${candidate}:${targetProperty}`, {\n ...target.diagnostic,\n start: offset + (sighting?.start ?? 0),\n end: offset + (sighting?.end ?? payload.length)\n });\n };\n for (const span of spans) {\n if (span.kind !== \"base\" && span.kind !== \"payload\") continue;\n if (span.start >= span.end) continue;\n diagnoseSegment(input.slice(span.start, span.end), span.start);\n }\n return diagnostics;\n}\nfunction modifierChainBefore(input, spans, start) {\n const byEnd = /* @__PURE__ */ new Map();\n for (const span of spans) {\n if (span.kind === \"modifier\") byEnd.set(span.end, span);\n }\n const reversed = [];\n let colon = start - 1;\n while (colon >= 0 && input.charCodeAt(colon) === 58) {\n const span = byEnd.get(colon);\n if (!span) break;\n reversed.push(input.slice(span.start, span.end));\n colon = span.start - 1;\n }\n reversed.reverse();\n return reversed;\n}\nfunction createStylePropSet(config) {\n const styleProps = /* @__PURE__ */ new Set([\n ...grammarEntries.map((entry) => entry.prop),\n ...Object.keys(legacyPartComposite)\n ]);\n for (const shorthand in config.shorthands) {\n styleProps.add(shorthand);\n styleProps.add(config.shorthands[shorthand]);\n }\n return styleProps;\n}\nfunction payloadSpan(input, payload) {\n const at = input.indexOf(payload);\n return at === -1 ? { start: 0, end: input.length } : { start: at, end: at + payload.length };\n}\nfunction diagnoseStyleValueProgram(property, input, options) {\n const candidates = options.candidates || createCandidatePropertyVocabulary(options.config);\n const scoped = { ...options, candidates };\n const diagnostics = diagnoseStyleValue(property, input, scoped);\n if (diagnostics.length > 0) return diagnostics;\n const parsed = parseValue(input, options.registry);\n if (!parsed.ok) return diagnostics;\n const targetProperty = options.config.shorthands?.[property] || property;\n if (parsed.value.clauses.length > 0 && programEligibility(targetProperty) === \"legacy-part\") {\n return [\n {\n code: \"legacy-part-conditional\",\n index: 0,\n start: 0,\n end: input.length,\n property: targetProperty,\n message: `conditional values are not supported on part prop \"${targetProperty}\"; move the condition onto \\`${legacyPartComposite[targetProperty]}\\``\n }\n ];\n }\n const results = [];\n const reported = /* @__PURE__ */ new Set();\n const geometric = splitGeometricShorthandValue(targetProperty, parsed.value);\n const programs = geometric && geometric.errors.length === 0 ? geometric.entries : [{ property: targetProperty, value: parsed.value }];\n for (const program of programs) {\n const { base, clauses } = program.value;\n const payloads = [\n ...base === null ? [] : [base],\n ...clauses.map((clause) => clause.payload)\n ];\n for (const payload of payloads) {\n for (const diagnostic of diagnoseStyleValueProgramSlot(\n program.property,\n payload,\n scoped\n )) {\n const key = `${diagnostic.code}:${diagnostic.candidate}:${program.property}`;\n if (reported.has(key)) continue;\n reported.add(key);\n const span = payloadSpan(input, payload);\n results.push({ ...diagnostic, index: span.start, ...span });\n }\n }\n if (base !== null) {\n pushShapeDiagnostic(results, reported, input, program.property, base, true);\n }\n for (const clause of clauses) {\n pushShapeDiagnostic(\n results,\n reported,\n input,\n program.property,\n clause.payload,\n base !== null\n );\n }\n }\n return results;\n}\nfunction diagnoseStyleValueProgramSlot(property, payload, options) {\n const slotDiagnostics = diagnoseStyleValue(property, payload, options);\n return slotDiagnostics.filter(\n (diagnostic) => diagnostic.code === \"candidate-property-mismatch\"\n );\n}\nfunction pushShapeDiagnostic(results, reported, input, property, payload, hasBase) {\n const diagnostic = validatePayloadShape(property, payload, hasBase);\n if (!diagnostic) return;\n const key = `${diagnostic.code}:${diagnostic.payload}:${property}`;\n if (reported.has(key)) return;\n reported.add(key);\n const span = payloadSpan(input, payload);\n results.push({\n code: diagnostic.code,\n index: span.start,\n ...span,\n property,\n message: diagnostic.message\n });\n}\nfunction completeStyleValue(property, options) {\n const candidates = options.candidates || createCandidatePropertyVocabulary(options.config);\n const targetProperty = options.config.shorthands?.[property] || property;\n if (!grammarProperties.has(targetProperty)) return [];\n const byValue = /* @__PURE__ */ new Map();\n for (const [value, contributions] of candidates) {\n if (resolveCandidateTarget(targetProperty, value, contributions).ok) {\n byValue.set(value, \"configured\");\n }\n }\n const standalone = standaloneValueProps[targetProperty];\n if (standalone) {\n for (const value in standalone) {\n if (!byValue.has(value)) byValue.set(value, \"keyword\");\n }\n }\n if (targetProperty === \"fontWeight\") {\n for (const value in fontWeightNames) {\n if (!byValue.has(value)) byValue.set(value, \"keyword\");\n }\n }\n const completions = [];\n for (const [value, kind] of byValue) {\n if (diagnoseStyleValue(property, value, {\n ...options,\n candidates\n }).length === 0) {\n completions.push({ value, kind });\n }\n }\n completions.sort((a, b) => a.value < b.value ? -1 : a.value > b.value ? 1 : 0);\n return completions;\n}\nfunction completeStyleValueAtCursor(property, input, cursor, options) {\n if (cursor < 0 || cursor > input.length) return null;\n const parsed = parseValueWithSourceSpans(input, options.registry);\n const active = parsed.spans.find(\n (span) => cursor >= span.start && cursor <= span.end && span.kind === \"modifier\"\n ) ?? parsed.spans.find(\n (span) => cursor >= span.start && cursor <= span.end && span.kind === \"word\" && span.start > 0 && parsed.result.ok && parsed.spans.some(\n (segment) => (segment.kind === \"base\" || segment.kind === \"payload\") && segment.start < span.start && segment.end >= span.end\n )\n ) ?? parsed.spans.find(\n (span) => cursor >= span.start && cursor <= span.end && span.kind !== \"modifier\" && span.kind !== \"word\"\n );\n if (active?.kind === \"modifier\" || active?.kind === \"word\") {\n if (!parsed.result.ok && parsed.result.errors.some(\n (error) => error.code !== \"unregistered-modifier\" && error.code !== \"empty-modifier\" && error.code !== \"empty-payload\"\n )) {\n return null;\n }\n return {\n replaceStart: active.start,\n replaceLength: active.end - active.start,\n completions: completeModifiers(\n options,\n input.charCodeAt(active.end) !== 58,\n active.kind === \"modifier\" ? modifierChainBefore(input, parsed.spans, active.start) : []\n )\n };\n }\n if (active) {\n if (!parsed.result.ok && parsed.result.errors.some((error) => error.code !== \"empty-payload\")) {\n return null;\n }\n return {\n replaceStart: active.start,\n replaceLength: active.end - active.start,\n // the first payload word is also where another modifier in the chain\n // begins, so both vocabularies remain available until the author picks.\n completions: active.kind === \"payload\" && input.charCodeAt(active.start - 1) === 58 ? [\n ...completeModifiers(\n options,\n true,\n modifierChainBefore(input, parsed.spans, active.start)\n ),\n ...completeStyleValue(property, options)\n ] : completeStyleValue(property, options)\n };\n }\n if (parsed.result.ok && cursor === input.length) {\n return {\n replaceStart: cursor,\n replaceLength: 0,\n completions: completeModifiers(options, true, [])\n };\n }\n return null;\n}\nfunction completeModifiers(options, appendColon, modifiers) {\n const names = options.registry.next?.(modifiers);\n if (!names) return [];\n const completions = [];\n for (const name of names) {\n completions.push({\n value: name,\n kind: \"modifier\",\n insertText: appendColon ? `${name}:` : name\n });\n }\n completions.sort((a, b) => a.value < b.value ? -1 : a.value > b.value ? 1 : 0);\n return completions;\n}\nexport {\n canonicalizeStyleValue,\n completeStyleValue,\n completeStyleValueAtCursor,\n createCandidatePropertyVocabulary,\n createGrammarConfigViewFromSerializedConfig,\n createStylePropSet,\n diagnoseStyleValue,\n diagnoseStyleValueProgram,\n modifierChainBefore,\n referenceKindFor\n};\n//# sourceMappingURL=toolingDiagnostics.js.map\n"],"mappings":"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"}
|