@tamagui/style-grammar 3.0.0-beta.922.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ast/payloadShape.cjs +45 -17
- package/dist/cjs/ast/payloadShape.native.cjs +45 -17
- package/dist/cjs/ast/payloadShape.native.js +45 -17
- package/dist/cjs/ast/payloadShape.native.js.map +1 -1
- package/dist/cjs/ast/resolvePayload.cjs +16 -9
- package/dist/cjs/ast/resolvePayload.native.cjs +16 -9
- package/dist/cjs/ast/resolvePayload.native.js +16 -9
- package/dist/cjs/ast/resolvePayload.native.js.map +1 -1
- package/dist/cjs/programs/lowerProgram.cjs +2 -2
- package/dist/cjs/programs/lowerProgram.native.cjs +2 -2
- package/dist/cjs/programs/lowerProgram.native.js +2 -2
- package/dist/cjs/programs/lowerProgram.native.js.map +1 -1
- package/dist/cjs/runtime/clauseIdentity.cjs +9 -28
- package/dist/cjs/runtime/clauseIdentity.native.cjs +9 -28
- package/dist/cjs/runtime/clauseIdentity.native.js +9 -28
- package/dist/cjs/runtime/clauseIdentity.native.js.map +1 -1
- package/dist/cjs/runtime/clausePrecedence.cjs +2 -2
- package/dist/cjs/runtime/clausePrecedence.native.cjs +3 -10
- package/dist/cjs/runtime/clausePrecedence.native.js +3 -10
- package/dist/cjs/runtime/clausePrecedence.native.js.map +1 -1
- package/dist/cjs/runtime/modifierVocabulary.native.cjs +1 -8
- package/dist/cjs/runtime/modifierVocabulary.native.js +1 -8
- package/dist/cjs/runtime/modifierVocabulary.native.js.map +1 -1
- package/dist/cjs/runtime/scanFlatValue.cjs +58 -7
- package/dist/cjs/runtime/scanFlatValue.native.cjs +58 -7
- package/dist/cjs/runtime/scanFlatValue.native.js +58 -7
- package/dist/cjs/runtime/scanFlatValue.native.js.map +1 -1
- package/dist/cjs/runtime/spring.cjs +123 -0
- package/dist/cjs/runtime/spring.native.cjs +131 -0
- package/dist/cjs/runtime/spring.native.js +133 -0
- package/dist/cjs/runtime/spring.native.js.map +1 -0
- package/dist/cjs/runtime/stateModifiers.cjs +23 -1
- package/dist/cjs/runtime/stateModifiers.native.cjs +23 -1
- package/dist/cjs/runtime/stateModifiers.native.js +23 -1
- package/dist/cjs/runtime/stateModifiers.native.js.map +1 -1
- package/dist/cjs/runtime/tokenCategories.cjs +3 -0
- package/dist/cjs/runtime/tokenCategories.native.cjs +3 -0
- package/dist/cjs/runtime/tokenCategories.native.js +3 -0
- package/dist/cjs/runtime/tokenCategories.native.js.map +1 -1
- package/dist/cjs/runtime/unitlessNumbers.cjs +0 -5
- package/dist/cjs/runtime/unitlessNumbers.native.cjs +0 -5
- package/dist/cjs/runtime/unitlessNumbers.native.js +0 -5
- package/dist/cjs/runtime/unitlessNumbers.native.js.map +1 -1
- package/dist/cjs/runtime.cjs +11 -0
- package/dist/cjs/runtime.native.cjs +11 -0
- package/dist/cjs/runtime.native.js +11 -0
- package/dist/cjs/runtime.native.js.map +1 -1
- package/dist/cjs/shorthands/transition.cjs +111 -36
- package/dist/cjs/shorthands/transition.native.cjs +113 -36
- package/dist/cjs/shorthands/transition.native.js +113 -36
- package/dist/cjs/shorthands/transition.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionAlign.cjs +13 -10
- package/dist/cjs/shorthands/transitionAlign.native.cjs +14 -11
- package/dist/cjs/shorthands/transitionAlign.native.js +14 -11
- package/dist/cjs/shorthands/transitionAlign.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionLegacy.cjs +263 -126
- package/dist/cjs/shorthands/transitionLegacy.native.cjs +333 -155
- package/dist/cjs/shorthands/transitionLegacy.native.js +333 -155
- package/dist/cjs/shorthands/transitionLegacy.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionNative.cjs +5 -5
- package/dist/cjs/shorthands/transitionNative.native.cjs +8 -7
- package/dist/cjs/shorthands/transitionNative.native.js +8 -7
- package/dist/cjs/shorthands/transitionNative.native.js.map +1 -1
- package/dist/cjs/shorthands/transitionObject.cjs +302 -0
- package/dist/cjs/shorthands/transitionObject.native.cjs +347 -0
- package/dist/cjs/shorthands/transitionObject.native.js +349 -0
- package/dist/cjs/shorthands/transitionObject.native.js.map +1 -0
- package/dist/cjs/tooling/candidate.cjs +254 -15
- package/dist/cjs/tooling/candidate.native.cjs +314 -62
- package/dist/cjs/tooling/candidate.native.js +314 -62
- package/dist/cjs/tooling/candidate.native.js.map +1 -1
- package/dist/cjs/tooling/config.cjs +19 -9
- package/dist/cjs/tooling/config.native.cjs +25 -26
- package/dist/cjs/tooling/config.native.js +25 -26
- package/dist/cjs/tooling/config.native.js.map +1 -1
- package/dist/cjs/tooling/registry.cjs +579 -11
- package/dist/cjs/tooling/registry.native.cjs +579 -11
- package/dist/cjs/tooling/registry.native.js +579 -11
- package/dist/cjs/tooling/registry.native.js.map +1 -1
- package/dist/cjs/tooling/toolingDiagnostics.cjs +306 -10
- package/dist/cjs/tooling/toolingDiagnostics.native.cjs +408 -48
- package/dist/cjs/tooling/toolingDiagnostics.native.js +408 -48
- package/dist/cjs/tooling/toolingDiagnostics.native.js.map +1 -1
- package/dist/cjs/tooling/toolingRegistry.cjs +6 -1
- package/dist/cjs/tooling/toolingRegistry.native.cjs +9 -1
- package/dist/cjs/tooling/toolingRegistry.native.js +9 -1
- package/dist/cjs/tooling/toolingRegistry.native.js.map +1 -1
- package/dist/cjs/tooling.cjs +1 -0
- package/dist/cjs/tooling.native.cjs +1 -0
- package/dist/cjs/tooling.native.js +1 -0
- package/dist/cjs/tooling.native.js.map +1 -1
- package/dist/cjs/transitions.cjs +38 -0
- package/dist/cjs/transitions.native.cjs +40 -0
- package/dist/cjs/transitions.native.js +42 -0
- package/dist/cjs/transitions.native.js.map +1 -0
- package/dist/esm/ast/payloadShape.mjs +45 -17
- package/dist/esm/ast/payloadShape.mjs.map +1 -1
- package/dist/esm/ast/payloadShape.native.js +45 -17
- package/dist/esm/ast/payloadShape.native.js.map +1 -1
- package/dist/esm/ast/resolvePayload.mjs +16 -9
- package/dist/esm/ast/resolvePayload.mjs.map +1 -1
- package/dist/esm/ast/resolvePayload.native.js +16 -9
- package/dist/esm/ast/resolvePayload.native.js.map +1 -1
- package/dist/esm/programs/lowerProgram.mjs +2 -2
- package/dist/esm/programs/lowerProgram.mjs.map +1 -1
- package/dist/esm/programs/lowerProgram.native.js +2 -2
- package/dist/esm/programs/lowerProgram.native.js.map +1 -1
- package/dist/esm/runtime/clauseIdentity.mjs +2 -22
- package/dist/esm/runtime/clauseIdentity.mjs.map +1 -1
- package/dist/esm/runtime/clauseIdentity.native.js +2 -22
- package/dist/esm/runtime/clauseIdentity.native.js.map +1 -1
- package/dist/esm/runtime/clausePrecedence.mjs +2 -2
- package/dist/esm/runtime/clausePrecedence.mjs.map +1 -1
- package/dist/esm/runtime/clausePrecedence.native.js +3 -10
- package/dist/esm/runtime/clausePrecedence.native.js.map +1 -1
- package/dist/esm/runtime/modifierVocabulary.native.js +1 -8
- package/dist/esm/runtime/modifierVocabulary.native.js.map +1 -1
- package/dist/esm/runtime/scanFlatValue.mjs +59 -7
- package/dist/esm/runtime/scanFlatValue.mjs.map +1 -1
- package/dist/esm/runtime/scanFlatValue.native.js +59 -7
- package/dist/esm/runtime/scanFlatValue.native.js.map +1 -1
- package/dist/esm/runtime/spring.mjs +93 -0
- package/dist/esm/runtime/spring.mjs.map +1 -0
- package/dist/esm/runtime/spring.native.js +99 -0
- package/dist/esm/runtime/spring.native.js.map +1 -0
- package/dist/esm/runtime/stateModifiers.mjs +22 -2
- package/dist/esm/runtime/stateModifiers.mjs.map +1 -1
- package/dist/esm/runtime/stateModifiers.native.js +22 -2
- package/dist/esm/runtime/stateModifiers.native.js.map +1 -1
- package/dist/esm/runtime/tokenCategories.mjs +3 -0
- package/dist/esm/runtime/tokenCategories.mjs.map +1 -1
- package/dist/esm/runtime/tokenCategories.native.js +3 -0
- package/dist/esm/runtime/tokenCategories.native.js.map +1 -1
- package/dist/esm/runtime/unitlessNumbers.mjs +0 -5
- package/dist/esm/runtime/unitlessNumbers.mjs.map +1 -1
- package/dist/esm/runtime/unitlessNumbers.native.js +0 -5
- package/dist/esm/runtime/unitlessNumbers.native.js.map +1 -1
- package/dist/esm/runtime.mjs +4 -2
- package/dist/esm/runtime.native.js +4 -2
- package/dist/esm/shorthands/transition.mjs +111 -36
- package/dist/esm/shorthands/transition.mjs.map +1 -1
- package/dist/esm/shorthands/transition.native.js +113 -36
- package/dist/esm/shorthands/transition.native.js.map +1 -1
- package/dist/esm/shorthands/transitionAlign.mjs +13 -10
- package/dist/esm/shorthands/transitionAlign.mjs.map +1 -1
- package/dist/esm/shorthands/transitionAlign.native.js +14 -11
- package/dist/esm/shorthands/transitionAlign.native.js.map +1 -1
- package/dist/esm/shorthands/transitionLegacy.mjs +260 -126
- package/dist/esm/shorthands/transitionLegacy.mjs.map +1 -1
- package/dist/esm/shorthands/transitionLegacy.native.js +330 -155
- package/dist/esm/shorthands/transitionLegacy.native.js.map +1 -1
- package/dist/esm/shorthands/transitionNative.mjs +5 -5
- package/dist/esm/shorthands/transitionNative.mjs.map +1 -1
- package/dist/esm/shorthands/transitionNative.native.js +8 -7
- package/dist/esm/shorthands/transitionNative.native.js.map +1 -1
- package/dist/esm/shorthands/transitionObject.mjs +280 -0
- package/dist/esm/shorthands/transitionObject.mjs.map +1 -0
- package/dist/esm/shorthands/transitionObject.native.js +323 -0
- package/dist/esm/shorthands/transitionObject.native.js.map +1 -0
- package/dist/esm/tooling/candidate.mjs +250 -16
- package/dist/esm/tooling/candidate.mjs.map +1 -1
- package/dist/esm/tooling/candidate.native.js +310 -63
- package/dist/esm/tooling/candidate.native.js.map +1 -1
- package/dist/esm/tooling/config.mjs +18 -9
- package/dist/esm/tooling/config.mjs.map +1 -1
- package/dist/esm/tooling/config.native.js +24 -26
- package/dist/esm/tooling/config.native.js.map +1 -1
- package/dist/esm/tooling/registry.mjs +579 -11
- package/dist/esm/tooling/registry.mjs.map +1 -1
- package/dist/esm/tooling/registry.native.js +579 -11
- package/dist/esm/tooling/registry.native.js.map +1 -1
- package/dist/esm/tooling/toolingDiagnostics.mjs +306 -11
- package/dist/esm/tooling/toolingDiagnostics.mjs.map +1 -1
- package/dist/esm/tooling/toolingDiagnostics.native.js +408 -49
- package/dist/esm/tooling/toolingDiagnostics.native.js.map +1 -1
- package/dist/esm/tooling/toolingRegistry.mjs +6 -1
- package/dist/esm/tooling/toolingRegistry.mjs.map +1 -1
- package/dist/esm/tooling/toolingRegistry.native.js +9 -1
- package/dist/esm/tooling/toolingRegistry.native.js.map +1 -1
- package/dist/esm/tooling.mjs +2 -0
- package/dist/esm/tooling.native.js +2 -0
- package/dist/esm/transitions.mjs +5 -0
- package/dist/esm/transitions.native.js +5 -0
- package/package.json +13 -3
- package/src/ast/payloadShape.ts +44 -16
- package/src/ast/resolvePayload.ts +28 -13
- package/src/programs/lowerProgram.ts +9 -4
- package/src/runtime/clauseIdentity.ts +8 -31
- package/src/runtime/clausePrecedence.ts +2 -10
- package/src/runtime/scanFlatValue.ts +81 -9
- package/src/runtime/spring.ts +208 -0
- package/src/runtime/stateModifiers.ts +31 -1
- package/src/runtime/tokenCategories.ts +3 -0
- package/src/runtime/unitlessNumbers.ts +0 -5
- package/src/runtime.ts +13 -0
- package/src/shorthands/transition.ts +159 -44
- package/src/shorthands/transitionAlign.ts +22 -12
- package/src/shorthands/transitionLegacy.ts +376 -156
- package/src/shorthands/transitionNative.ts +8 -11
- package/src/shorthands/transitionObject.ts +369 -0
- package/src/tooling/candidate.ts +269 -14
- package/src/tooling/config.ts +25 -9
- package/src/tooling/registry.ts +339 -12
- package/src/tooling/toolingDiagnostics.ts +474 -9
- package/src/tooling/toolingRegistry.ts +6 -1
- package/src/tooling.ts +1 -0
- package/src/transitions.ts +42 -0
- package/types/ast/payloadShape.d.ts.map +2 -2
- package/types/ast/resolvePayload.d.ts +5 -4
- package/types/ast/resolvePayload.d.ts.map +2 -2
- package/types/programs/lowerProgram.d.ts +4 -2
- package/types/programs/lowerProgram.d.ts.map +2 -2
- package/types/runtime/clauseIdentity.d.ts +1 -4
- package/types/runtime/clauseIdentity.d.ts.map +2 -2
- package/types/runtime/clausePrecedence.d.ts.map +2 -2
- package/types/runtime/scanFlatValue.d.ts +1 -1
- package/types/runtime/scanFlatValue.d.ts.map +2 -2
- package/types/runtime/spring.d.ts +61 -0
- package/types/runtime/spring.d.ts.map +11 -0
- package/types/runtime/stateModifiers.d.ts +4 -0
- package/types/runtime/stateModifiers.d.ts.map +2 -2
- package/types/runtime/tokenCategories.d.ts.map +2 -2
- package/types/runtime/unitlessNumbers.d.ts.map +2 -2
- package/types/runtime.d.ts +3 -1
- package/types/runtime.d.ts.map +2 -2
- package/types/shorthands/transition.d.ts +26 -5
- package/types/shorthands/transition.d.ts.map +2 -2
- package/types/shorthands/transitionAlign.d.ts.map +2 -2
- package/types/shorthands/transitionLegacy.d.ts +19 -4
- package/types/shorthands/transitionLegacy.d.ts.map +2 -2
- package/types/shorthands/transitionNative.d.ts.map +1 -1
- package/types/shorthands/transitionObject.d.ts +49 -0
- package/types/shorthands/transitionObject.d.ts.map +11 -0
- package/types/tooling/candidate.d.ts +13 -0
- package/types/tooling/candidate.d.ts.map +2 -2
- package/types/tooling/config.d.ts +8 -1
- package/types/tooling/config.d.ts.map +2 -2
- package/types/tooling/registry.d.ts +4 -2
- package/types/tooling/registry.d.ts.map +2 -2
- package/types/tooling/toolingDiagnostics.d.ts +3 -1
- package/types/tooling/toolingDiagnostics.d.ts.map +2 -2
- package/types/tooling/toolingRegistry.d.ts.map +2 -2
- package/types/tooling.d.ts +1 -0
- package/types/tooling.d.ts.map +2 -2
- package/types/transitions.d.ts +5 -0
- package/types/transitions.d.ts.map +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolingDiagnostics.js","names":[],"sources":["esm/tooling/toolingDiagnostics.js"],"sourcesContent":["import {\n resolveCandidateTarget\n} from \"./candidateTarget\";\nimport { createGrammarConfigView } from \"./config\";\nimport { splitGeometricShorthandValue } from \"../shorthands/geometricShorthand\";\nimport { formatParsedValue } from \"./toolingFormat\";\nimport { validatePayloadShape } from \"../ast/payloadShape\";\nimport { legacyPartComposite, programEligibility } from \"../programs/programEligibility\";\nimport {\n resolvePayload\n} from \"../ast/resolvePayload\";\nimport {\n fontWeightNames,\n grammarEntries,\n standaloneValueProps\n} from \"./registry\";\nimport {\n parseValue,\n parseValueWithSourceSpans\n} from \"../ast/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":";;;;;;;;;;;;AAqBA,SAAS,uBAAuB,OAAO,UAAU;CAC/C,MAAM,SAAS,WAAW,OAAO,QAAQ;CACzC,IAAI,CAAC,OAAO,IAAI,OAAO;CACvB,OAAO;EACL,IAAI;EACJ,OAAO,kBAAkB,OAAO,KAAK;EACrC,QAAQ,OAAO;CACjB;AACF;AACA,SAAS,YAAY,OAAO,OAAO;CACjC,IAAI,CAAC,OAAO;CACZ,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxB,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI;EACpC;CACF;CACA,IAAI,iBAAiB,KAAK;EACxB,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI;EACpC;CACF;CACA,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI;AACtC;AACA,SAAS,kCAAkC,QAAQ;CACjD,MAAM,yBAAyB,IAAI,IAAI;CACvC,MAAM,oCAAoC,IAAI,IAAI;CAClD,KAAK,MAAM,SAAS,gBAAgB;EAClC,IAAI,CAAC,MAAM,eAAe;EAC1B,MAAM,gBAAgB,kBAAkB,IAAI,MAAM,aAAa,KAAK,CAAC;EACrE,cAAc,KAAK;GAAE,UAAU,MAAM;GAAM,eAAe,MAAM;EAAc,CAAC;EAC/E,kBAAkB,IAAI,MAAM,eAAe,aAAa;CAC1D;CACA,KAAK,MAAM,CAAC,UAAU,kBAAkB,mBAAmB;EACzD,YAAY,OAAO,aAAa,YAAY,SAAS;GACnD,MAAM,WAAW,OAAO,IAAI,IAAI,KAAK,CAAC;GACtC,KAAK,MAAM,gBAAgB,eAAe;IACxC,IAAI,CAAC,SAAS,MAAM,SAAS,KAAK,aAAa,aAAa,QAAQ,GAAG;KACrE,SAAS,KAAK,YAAY;IAC5B;GACF;GACA,OAAO,IAAI,MAAM,QAAQ;EAC3B,CAAC;CACH;CACA,OAAO;AACT;AACA,SAAS,4CAA4C,QAAQ,UAAU;CACrE,MAAM,cAAc,OAAO,aAAa,YAAY,aAAa,QAAQ,SAAS,gBAAgB;CAClG,IAAI,aAAa,KAAK,KAAK,CAAC,aAAa;EACvC,MAAM,IAAI,MACR,0EACF;CACF;CACA,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,aAAa,OAAO,QAAQ;EACrC,MAAM,kBAAkB,OAAO,OAAO;EACtC,IAAI,CAAC,mBAAmB,OAAO,oBAAoB,UAAU;EAC7D,MAAM,eAAe,CAAC;EACtB,KAAK,MAAM,OAAO,iBAAiB;GACjC,IAAI,eAAe,QAAQ,MAAM;IAC/B,aAAa,OAAO,gBAAgB;GACtC;EACF;EACA,OAAO,aAAa;CACtB;CACA,OAAO,wBAAwB;EAC7B,YAAY,OAAO;EACnB,OAAO,OAAO;EACd;EACA,cAAc,OAAO;EACrB,aAAa,OAAO;CACtB,CAAC;AACH;AACA,MAAM,oBAAoB,IAAI,IAAI,mBAAmB;AACrD,MAAM,oBAAoB,IAAI,IAC5B,eAAe,KAAK,UAAU,MAAM,IAAI,CAC1C;AACA,MAAM,wBAAwB;CAC5B,OAAO;CACP,OAAO;CACP,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,YAAY;CACZ,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,eAAe;AACjB;AACA,SAAS,iBAAiB,eAAe,gBAAgB;CACvD,IAAI;CACJ,KAAK,MAAM,gBAAgB,eAAe;EACxC,MAAM,OAAO,aAAa,gBAAgB,sBAAsB,aAAa,iBAAiB;EAC9F,IAAI,aAAa,aAAa,gBAAgB,OAAO;EACrD,IAAI,aAAa,SAAS,WAAW;CACvC;CACA,OAAO,YAAY;AACrB;AACA,SAAS,eAAe,OAAO,OAAO;CACpC,MAAM,SAAS,MAAM;CACrB,IAAI,MAAM,SAAS,2BAA2B,MAAM,UAAU;EAC5D,OAAO;GAAE,OAAO,MAAM;GAAO,KAAK,MAAM,QAAQ,MAAM,SAAS;EAAO;CACxE;CACA,IAAI,MAAM,SAAS,yBAAyB,MAAM,SAAS,2BAA2B,MAAM,SAAS,wBAAwB;EAC3H,OAAO;GAAE,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,OAAO,SAAS,CAAC,CAAC;GAAG,KAAK;EAAO;CAC9E;CACA,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,OAAO,SAAS,CAAC,CAAC;CAC3D,MAAM,QAAQ,MAAM,SAAS,wBAAwB,IAAI;CACzD,OAAO;EAAE;EAAO,KAAK,KAAK,IAAI,QAAQ,QAAQ,KAAK;CAAE;AACvD;AACA,SAAS,uBAAuB,SAAS,KAAK;CAC5C,IAAI,QAAQ,WAAW,GAAG,MAAM,IAAI,OAAO;CAC3C,IAAI,SAAS,MAAM;CACnB,OAAO,SAAS,QAAQ,QAAQ;EAC9B,MAAM,OAAO,QAAQ,WAAW,MAAM;EACtC,IAAI,SAAS,MAAM,SAAS,KAAK,SAAS,MAAM,SAAS,MAAM,SAAS,IAAI;EAC5E,IAAI,SAAS,MAAM,SAAS,MAAM,SAAS,IAAI;EAC/C;CACF;CACA,OAAO;AACT;AACA,SAAS,mBAAmB,UAAU,OAAO,SAAS;CACpD,MAAM,EAAE,QAAQ,UAAU,0BAA0B,OAAO,QAAQ,QAAQ;CAC3E,IAAI,CAAC,OAAO,IAAI;EACd,OAAO,OAAO,OAAO,KAAK,UAAU;GAClC,MAAM,OAAO,eAAe,OAAO,KAAK;GACxC,OAAO;IACL,MAAM,MAAM;IACZ,OAAO,KAAK;IACZ,GAAG;IACH,SAAS,MAAM;GACjB;EACF,CAAC;CACH;CACA,MAAM,iBAAiB,QAAQ,OAAO,aAAa,aAAa;CAChE,MAAM,gBAAgB,kBAAkB,IAAI,cAAc;CAC1D,MAAM,aAAa,QAAQ,cAAc,kCAAkC,QAAQ,MAAM;CACzF,MAAM,cAAc,CAAC;CACrB,MAAM,4BAA4B,IAAI,IAAI;CAC1C,MAAM,QAAQ,KAAK,eAAe;EAChC,IAAI,UAAU,IAAI,GAAG,GAAG;EACxB,UAAU,IAAI,GAAG;EACjB,YAAY,KAAK;GAAE,OAAO,WAAW;GAAO,GAAG;EAAW,CAAC;CAC7D;CACA,MAAM,mBAAmB,SAAS,WAAW;EAC3C,MAAM,YAAY,CAAC;EACnB,MAAM,WAAW,eAAe,SAAS;GACvC,OAAO,MAAM;IACX,MAAM,iBAAiB,WAAW,IAAI,IAAI;IAC1C,IAAI,CAAC,gBAAgB,OAAO,KAAK;IACjC,OAAO;KAAE;KAAM,MAAM,iBAAiB,gBAAgB,cAAc;IAAE;GACxE;GACA,YAAY,OAAO,KAAK,MAAM,WAAW;IACvC,UAAU,KAAK;KAAE;KAAO;KAAK;KAAM,UAAU;IAAU,CAAC;IACxD,IAAI,WAAW;IACf,MAAM,cAAc,wBAAwB;IAC5C,IAAI,aAAa;KACf,KAAK,0BAA0B,QAAQ;MACrC,MAAM;MACN,OAAO,SAAS;MAChB,KAAK,SAAS;MACd,WAAW;MACX;MACA,SAAS,IAAI,KAAK,oCAAoC,YAAY;KACpE,CAAC;IACH,OAAO,IAAI,kBAAkB,IAAI,IAAI,GAAG;KACtC,KAAK,yBAAyB,QAAQ;MACpC,MAAM;MACN,OAAO,SAAS;MAChB,KAAK,SAAS;MACd,WAAW;MACX,SAAS,IAAI,KAAK;KACpB,CAAC;IACH;GACF;EACF,CAAC;EACD,IAAI,eAAe;GACjB,KAAK,MAAM,SAAS,SAAS,QAAQ;IACnC,MAAM,YAAY,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,KAAK;IACvE,IAAI,CAAC,WAAW,UAAU;IAC1B,KAAK,GAAG,MAAM,KAAK,GAAG,MAAM,KAAK,GAAG,MAAM,WAAW;KACnD,MAAM,MAAM;KACZ,OAAO,SAAS,MAAM;KACtB,KAAK,SAAS,uBAAuB,SAAS,UAAU,GAAG;KAC3D,WAAW,MAAM;KACjB,SAAS,MAAM;IACjB,CAAC;GACH;EACF;EACA,MAAM,YAAY,SAAS,SAAS,WAAW,KAAK,OAAO,SAAS,SAAS,OAAO,WAAW,SAAS,SAAS,EAAE,CAAC,OAAO;EAC3H,IAAI,cAAc,QAAQ,CAAC,eAAe;EAC1C,MAAM,gBAAgB,WAAW,IAAI,SAAS;EAC9C,IAAI,CAAC,eAAe;EACpB,MAAM,SAAS,uBAAuB,gBAAgB,WAAW,aAAa;EAC9E,IAAI,OAAO,IAAI;EACf,MAAM,WAAW,UAAU,MAAM,UAAU,MAAM,SAAS,aAAa,MAAM,QAAQ;EACrF,KAAK,GAAG,OAAO,WAAW,KAAK,GAAG,UAAU,GAAG,kBAAkB;GAC/D,GAAG,OAAO;GACV,OAAO,UAAU,UAAU,SAAS;GACpC,KAAK,UAAU,UAAU,OAAO,QAAQ;EAC1C,CAAC;CACH;CACA,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,WAAW;EACrD,IAAI,KAAK,SAAS,KAAK,KAAK;EAC5B,gBAAgB,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG,GAAG,KAAK,KAAK;CAC/D;CACA,OAAO;AACT;AACA,SAAS,oBAAoB,OAAO,OAAO,OAAO;CAChD,MAAM,wBAAwB,IAAI,IAAI;CACtC,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,KAAK,SAAS,YAAY,MAAM,IAAI,KAAK,KAAK,IAAI;CACxD;CACA,MAAM,WAAW,CAAC;CAClB,IAAI,QAAQ,QAAQ;CACpB,OAAO,SAAS,KAAK,MAAM,WAAW,KAAK,MAAM,IAAI;EACnD,MAAM,OAAO,MAAM,IAAI,KAAK;EAC5B,IAAI,CAAC,MAAM;EACX,SAAS,KAAK,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG,CAAC;EAC/C,QAAQ,KAAK,QAAQ;CACvB;CACA,SAAS,QAAQ;CACjB,OAAO;AACT;AACA,SAAS,mBAAmB,QAAQ;CAClC,MAAM,6BAA6B,IAAI,IAAI,CACzC,GAAG,eAAe,KAAK,UAAU,MAAM,IAAI,GAC3C,GAAG,OAAO,KAAK,mBAAmB,CACpC,CAAC;CACD,KAAK,MAAM,aAAa,OAAO,YAAY;EACzC,WAAW,IAAI,SAAS;EACxB,WAAW,IAAI,OAAO,WAAW,UAAU;CAC7C;CACA,OAAO;AACT;AACA,SAAS,YAAY,OAAO,SAAS;CACnC,MAAM,KAAK,MAAM,QAAQ,OAAO;CAChC,OAAO,OAAO,CAAC,IAAI;EAAE,OAAO;EAAG,KAAK,MAAM;CAAO,IAAI;EAAE,OAAO;EAAI,KAAK,KAAK,QAAQ;CAAO;AAC7F;AACA,SAAS,0BAA0B,UAAU,OAAO,SAAS;CAC3D,MAAM,aAAa,QAAQ,cAAc,kCAAkC,QAAQ,MAAM;CACzF,MAAM,SAAS;EAAE,GAAG;EAAS;CAAW;CACxC,MAAM,cAAc,mBAAmB,UAAU,OAAO,MAAM;CAC9D,IAAI,YAAY,SAAS,GAAG,OAAO;CACnC,MAAM,SAAS,WAAW,OAAO,QAAQ,QAAQ;CACjD,IAAI,CAAC,OAAO,IAAI,OAAO;CACvB,MAAM,iBAAiB,QAAQ,OAAO,aAAa,aAAa;CAChE,IAAI,OAAO,MAAM,QAAQ,SAAS,KAAK,mBAAmB,cAAc,MAAM,eAAe;EAC3F,OAAO,CACL;GACE,MAAM;GACN,OAAO;GACP,OAAO;GACP,KAAK,MAAM;GACX,UAAU;GACV,SAAS,sDAAsD,eAAe,+BAA+B,oBAAoB,gBAAgB;EACnJ,CACF;CACF;CACA,MAAM,UAAU,CAAC;CACjB,MAAM,2BAA2B,IAAI,IAAI;CACzC,MAAM,YAAY,6BAA6B,gBAAgB,OAAO,KAAK;CAC3E,MAAM,WAAW,aAAa,UAAU,OAAO,WAAW,IAAI,UAAU,UAAU,CAAC;EAAE,UAAU;EAAgB,OAAO,OAAO;CAAM,CAAC;CACpI,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,EAAE,MAAM,YAAY,QAAQ;EAClC,MAAM,WAAW,CACf,GAAG,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,GAC7B,GAAG,QAAQ,KAAK,WAAW,OAAO,OAAO,CAC3C;EACA,KAAK,MAAM,WAAW,UAAU;GAC9B,KAAK,MAAM,cAAc,8BACvB,QAAQ,UACR,SACA,MACF,GAAG;IACD,MAAM,MAAM,GAAG,WAAW,KAAK,GAAG,WAAW,UAAU,GAAG,QAAQ;IAClE,IAAI,SAAS,IAAI,GAAG,GAAG;IACvB,SAAS,IAAI,GAAG;IAChB,MAAM,OAAO,YAAY,OAAO,OAAO;IACvC,QAAQ,KAAK;KAAE,GAAG;KAAY,OAAO,KAAK;KAAO,GAAG;IAAK,CAAC;GAC5D;EACF;EACA,IAAI,SAAS,MAAM;GACjB,oBAAoB,SAAS,UAAU,OAAO,QAAQ,UAAU,MAAM,IAAI;EAC5E;EACA,KAAK,MAAM,UAAU,SAAS;GAC5B,oBACE,SACA,UACA,OACA,QAAQ,UACR,OAAO,SACP,SAAS,IACX;EACF;CACF;CACA,OAAO;AACT;AACA,SAAS,8BAA8B,UAAU,SAAS,SAAS;CACjE,MAAM,kBAAkB,mBAAmB,UAAU,SAAS,OAAO;CACrE,OAAO,gBAAgB,QACpB,eAAe,WAAW,SAAS,6BACtC;AACF;AACA,SAAS,oBAAoB,SAAS,UAAU,OAAO,UAAU,SAAS,SAAS;CACjF,MAAM,aAAa,qBAAqB,UAAU,SAAS,OAAO;CAClE,IAAI,CAAC,YAAY;CACjB,MAAM,MAAM,GAAG,WAAW,KAAK,GAAG,WAAW,QAAQ,GAAG;CACxD,IAAI,SAAS,IAAI,GAAG,GAAG;CACvB,SAAS,IAAI,GAAG;CAChB,MAAM,OAAO,YAAY,OAAO,OAAO;CACvC,QAAQ,KAAK;EACX,MAAM,WAAW;EACjB,OAAO,KAAK;EACZ,GAAG;EACH;EACA,SAAS,WAAW;CACtB,CAAC;AACH;AACA,SAAS,mBAAmB,UAAU,SAAS;CAC7C,MAAM,aAAa,QAAQ,cAAc,kCAAkC,QAAQ,MAAM;CACzF,MAAM,iBAAiB,QAAQ,OAAO,aAAa,aAAa;CAChE,IAAI,CAAC,kBAAkB,IAAI,cAAc,GAAG,OAAO,CAAC;CACpD,MAAM,0BAA0B,IAAI,IAAI;CACxC,KAAK,MAAM,CAAC,OAAO,kBAAkB,YAAY;EAC/C,IAAI,uBAAuB,gBAAgB,OAAO,aAAa,CAAC,CAAC,IAAI;GACnE,QAAQ,IAAI,OAAO,YAAY;EACjC;CACF;CACA,MAAM,aAAa,qBAAqB;CACxC,IAAI,YAAY;EACd,KAAK,MAAM,SAAS,YAAY;GAC9B,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,QAAQ,IAAI,OAAO,SAAS;EACvD;CACF;CACA,IAAI,mBAAmB,cAAc;EACnC,KAAK,MAAM,SAAS,iBAAiB;GACnC,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,QAAQ,IAAI,OAAO,SAAS;EACvD;CACF;CACA,MAAM,cAAc,CAAC;CACrB,KAAK,MAAM,CAAC,OAAO,SAAS,SAAS;EACnC,IAAI,mBAAmB,UAAU,OAAO;GACtC,GAAG;GACH;EACF,CAAC,CAAC,CAAC,WAAW,GAAG;GACf,YAAY,KAAK;IAAE;IAAO;GAAK,CAAC;EAClC;CACF;CACA,YAAY,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,CAAC;CAC7E,OAAO;AACT;AACA,SAAS,2BAA2B,UAAU,OAAO,QAAQ,SAAS;CACpE,IAAI,SAAS,KAAK,SAAS,MAAM,QAAQ,OAAO;CAChD,MAAM,SAAS,0BAA0B,OAAO,QAAQ,QAAQ;CAChE,MAAM,SAAS,OAAO,MAAM,MACzB,SAAS,UAAU,KAAK,SAAS,UAAU,KAAK,OAAO,KAAK,SAAS,UACxE,KAAK,OAAO,MAAM,MACf,SAAS,UAAU,KAAK,SAAS,UAAU,KAAK,OAAO,KAAK,SAAS,UAAU,KAAK,QAAQ,KAAK,OAAO,OAAO,MAAM,OAAO,MAAM,MAChI,aAAa,QAAQ,SAAS,UAAU,QAAQ,SAAS,cAAc,QAAQ,QAAQ,KAAK,SAAS,QAAQ,OAAO,KAAK,GAC5H,CACF,KAAK,OAAO,MAAM,MACf,SAAS,UAAU,KAAK,SAAS,UAAU,KAAK,OAAO,KAAK,SAAS,cAAc,KAAK,SAAS,MACpG;CACA,IAAI,QAAQ,SAAS,cAAc,QAAQ,SAAS,QAAQ;EAC1D,IAAI,CAAC,OAAO,OAAO,MAAM,OAAO,OAAO,OAAO,MAC3C,UAAU,MAAM,SAAS,2BAA2B,MAAM,SAAS,oBAAoB,MAAM,SAAS,eACzG,GAAG;GACD,OAAO;EACT;EACA,OAAO;GACL,cAAc,OAAO;GACrB,eAAe,OAAO,MAAM,OAAO;GACnC,aAAa,kBACX,SACA,MAAM,WAAW,OAAO,GAAG,MAAM,IACjC,OAAO,SAAS,aAAa,oBAAoB,OAAO,OAAO,OAAO,OAAO,KAAK,IAAI,CAAC,CACzF;EACF;CACF;CACA,IAAI,QAAQ;EACV,IAAI,CAAC,OAAO,OAAO,MAAM,OAAO,OAAO,OAAO,MAAM,UAAU,MAAM,SAAS,eAAe,GAAG;GAC7F,OAAO;EACT;EACA,OAAO;GACL,cAAc,OAAO;GACrB,eAAe,OAAO,MAAM,OAAO;GAGnC,aAAa,OAAO,SAAS,aAAa,MAAM,WAAW,OAAO,QAAQ,CAAC,MAAM,KAAK,CACpF,GAAG,kBACD,SACA,MACA,oBAAoB,OAAO,OAAO,OAAO,OAAO,KAAK,CACvD,GACA,GAAG,mBAAmB,UAAU,OAAO,CACzC,IAAI,mBAAmB,UAAU,OAAO;EAC1C;CACF;CACA,IAAI,OAAO,OAAO,MAAM,WAAW,MAAM,QAAQ;EAC/C,OAAO;GACL,cAAc;GACd,eAAe;GACf,aAAa,kBAAkB,SAAS,MAAM,CAAC,CAAC;EAClD;CACF;CACA,OAAO;AACT;AACA,SAAS,kBAAkB,SAAS,aAAa,WAAW;CAC1D,MAAM,QAAQ,QAAQ,SAAS,OAAO,SAAS;CAC/C,IAAI,CAAC,OAAO,OAAO,CAAC;CACpB,MAAM,cAAc,CAAC;CACrB,KAAK,MAAM,QAAQ,OAAO;EACxB,YAAY,KAAK;GACf,OAAO;GACP,MAAM;GACN,YAAY,cAAc,GAAG,KAAK,KAAK;EACzC,CAAC;CACH;CACA,YAAY,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,CAAC;CAC7E,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"toolingDiagnostics.js","names":[],"sources":["esm/tooling/toolingDiagnostics.js"],"sourcesContent":["import {\n resolveCandidateTarget\n} from \"./candidateTarget\";\nimport { createGrammarConfigView } from \"./config\";\nimport { splitGeometricShorthandValue } from \"../shorthands/geometricShorthand\";\nimport { borderFamilyTargets, splitBorderValue } from \"../shorthands/borderFamily\";\nimport { formatParsedValue } from \"./toolingFormat\";\nimport { validatePayloadShape } from \"../ast/payloadShape\";\nimport { legacyPartComposite, programEligibility } from \"../programs/programEligibility\";\nimport {\n resolvePayload\n} from \"../ast/resolvePayload\";\nimport {\n fontWeightNames,\n grammarEntries,\n propToGrammarEntry,\n standaloneValueProps\n} from \"./registry\";\nimport {\n parseValue,\n parseValueWithSourceSpans\n} from \"../ast/valueParser\";\nimport { v6RemovedThemeNames, v6ThemeNameReplacements } from \"../v6ThemeNames\";\nimport { namedCssColors } from \"../runtime/namedCssColors\";\nimport { getTokenCategoryName, propToTokenCategoryCode } from \"../runtime/tokenCategories\";\nimport { hasTokenName } from \"./candidate\";\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}\nconst removedV2Props = Object.freeze({\n animation: \"transition=\",\n hoverStyle: \"hover:\",\n pressStyle: \"press:\",\n focusStyle: \"focus:\",\n enterStyle: \"enter:\",\n exitStyle: \"exit:\"\n});\nconst globalCssKeywords = /* @__PURE__ */ new Set([\n \"inherit\",\n \"initial\",\n \"unset\",\n \"revert\",\n \"revert-layer\"\n]);\nconst spaceKeywords = /* @__PURE__ */ new Set([\"auto\", \"normal\", \"safe\"]);\nconst sizeKeywords = /* @__PURE__ */ new Set([\n \"auto\",\n \"fit-content\",\n \"max-content\",\n \"min-content\",\n \"none\",\n \"full\",\n \"screen\",\n \"dvh\",\n \"lvh\",\n \"svh\",\n \"dvw\",\n \"lvw\",\n \"svw\",\n \"min\",\n \"max\",\n \"fit\",\n \"intrinsic\",\n \"content\"\n]);\nconst radiusKeywords = /* @__PURE__ */ new Set([\"none\"]);\nconst zIndexKeywords = /* @__PURE__ */ new Set([\"auto\"]);\nconst borderWidthKeywordsSet = /* @__PURE__ */ new Set([\"thin\", \"medium\", \"thick\"]);\nconst compoundColorKeywords = /* @__PURE__ */ new Set([\n \"auto\",\n \"border-box\",\n \"bottom\",\n \"center\",\n \"contain\",\n \"content-box\",\n \"cover\",\n \"dashed\",\n \"dotted\",\n \"double\",\n \"fixed\",\n \"groove\",\n \"hidden\",\n \"inset\",\n \"left\",\n \"local\",\n \"medium\",\n \"no-repeat\",\n \"none\",\n \"outset\",\n \"padding-box\",\n \"repeat\",\n \"repeat-x\",\n \"repeat-y\",\n \"ridge\",\n \"right\",\n \"round\",\n \"scroll\",\n \"solid\",\n \"space\",\n \"thick\",\n \"thin\",\n \"top\"\n]);\nconst fontKeywords = /* @__PURE__ */ new Set([\n \"normal\",\n \"sans-serif\",\n \"serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-sans-serif\",\n \"ui-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"emoji\",\n \"math\",\n \"fangsong\",\n \"sans\",\n \"serif\",\n \"mono\"\n]);\nconst sizeCategoryFallbacks = /* @__PURE__ */ new Set([\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"inlineSize\",\n \"minInlineSize\",\n \"maxInlineSize\",\n \"flexBasis\"\n]);\nfunction editDistance(a, b) {\n const previous = Array.from({ length: b.length + 1 }, (_, index) => index);\n for (let aIndex = 0; aIndex < a.length; aIndex++) {\n let diagonal = previous[0];\n previous[0] = aIndex + 1;\n for (let bIndex = 0; bIndex < b.length; bIndex++) {\n const above = previous[bIndex + 1];\n previous[bIndex + 1] = Math.min(\n previous[bIndex] + 1,\n above + 1,\n diagonal + (a[aIndex] === b[bIndex] ? 0 : 1)\n );\n diagonal = above;\n }\n }\n return previous[b.length];\n}\nfunction findNearestCompletion(payload, completions) {\n let bestCandidate;\n let bestDistance = Number.POSITIVE_INFINITY;\n const maxAllowedDistance = Math.max(3, Math.floor(payload.length * 0.6));\n for (const completion of completions) {\n const val = completion.value;\n if (Math.abs(val.length - payload.length) > maxAllowedDistance) continue;\n const distance = editDistance(payload, val);\n if (distance < bestDistance && distance <= maxAllowedDistance) {\n bestDistance = distance;\n bestCandidate = val;\n }\n }\n return bestCandidate;\n}\nfunction isSingleBareToken(payload) {\n if (/\\s/.test(payload)) return false;\n if (payload.includes(\"(\") || payload.includes(\")\")) return false;\n if (payload.startsWith('\"') || payload.startsWith(\"'\")) return false;\n if (/^#[0-9a-fA-F]{3,8}$/.test(payload)) return false;\n if (/^-?(?:\\d+|\\d*\\.\\d+)(?:%|[a-zA-Z]+)$/.test(payload)) return false;\n return true;\n}\nfunction hasTokenVocabulary(config, category, targetProperty, candidates) {\n if (category) {\n const domain = config.tokenNames?.[category] || (sizeCategoryFallbacks.has(category) ? config.tokenNames?.size : void 0);\n if (domain) {\n if (Array.isArray(domain) && domain.length > 0) return true;\n if (domain instanceof Set && domain.size > 0) return true;\n if (typeof domain === \"object\" && Object.keys(domain).length > 0) return true;\n }\n }\n for (const [, contributions] of candidates) {\n for (const contribution of contributions) {\n if (contribution.property === targetProperty) return true;\n }\n }\n return false;\n}\nfunction isKnownPropertyValue(payload, targetProperty, category, config, candidates) {\n if (/^-?(?:\\d+|\\d*\\.\\d+)$/.test(payload)) return true;\n if (globalCssKeywords.has(payload)) return true;\n if (standaloneValueProps[targetProperty]?.[payload] !== void 0) return true;\n if (targetProperty === \"fontWeight\" && payload in fontWeightNames) return true;\n const contributions = candidates.get(payload);\n if (contributions && resolveCandidateTarget(\n targetProperty === \"background\" ? \"backgroundColor\" : targetProperty,\n payload,\n contributions\n ).ok) {\n return true;\n }\n if (category && hasTokenName(config, category, payload)) return true;\n if (category === \"color\") {\n if (payload === \"transparent\" || payload === \"currentColor\" || payload === \"currentcolor\")\n return true;\n if (namedCssColors.has(payload.toLowerCase())) return true;\n if (payload.includes(\"/\")) {\n const slash = payload.lastIndexOf(\"/\");\n const base = payload.slice(0, slash);\n const opacity = payload.slice(slash + 1);\n if (/^\\d+(?:\\.\\d+)?$/.test(opacity)) {\n const baseContribs = candidates.get(base);\n if (baseContribs && resolveCandidateTarget(\n targetProperty === \"background\" ? \"backgroundColor\" : targetProperty,\n base,\n baseContribs\n ).ok)\n return true;\n if (namedCssColors.has(base.toLowerCase()) || base === \"transparent\" || base === \"currentColor\")\n return true;\n }\n }\n }\n if (category === \"space\" && spaceKeywords.has(payload)) return true;\n if ((category === \"size\" || category && sizeCategoryFallbacks.has(category)) && sizeKeywords.has(payload)) {\n return true;\n }\n if (category === \"radius\" && radiusKeywords.has(payload)) return true;\n if (category === \"zIndex\" && zIndexKeywords.has(payload)) return true;\n if (targetProperty.endsWith(\"Width\") && borderWidthKeywordsSet.has(payload)) return true;\n if ((category === \"fontFamily\" || category === \"lineHeight\" || category === \"letterSpacing\") && fontKeywords.has(payload)) {\n return true;\n }\n if (targetProperty === \"background\" && /^(?:repeat|repeat-x|repeat-y|no-repeat|space|round|scroll|fixed|local|border-box|padding-box|content-box|left|right|top|bottom|center|cover|contain)$/.test(\n payload\n ))\n return true;\n if ((targetProperty === \"boxShadow\" || targetProperty === \"background\") && payload === \"none\")\n return true;\n return false;\n}\nfunction diagnoseStyleValue(property, input, options) {\n const removedReplacement = removedV2Props[property];\n if (removedReplacement) {\n return [\n {\n code: \"v2-removed-prop\",\n index: 0,\n start: 0,\n end: input.length,\n property,\n message: property === \"animation\" ? `\"${property}\" was removed in v3; use \"transition=\" instead` : `\"${property}\" was removed in v3; use \"${removedReplacement}\" clauses instead`\n }\n ];\n }\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 targetCategory = (targetProperty === \"background\" ? \"color\" : propToGrammarEntry[targetProperty]?.tokenCategory) || getTokenCategoryName(propToTokenCategoryCode[targetProperty]) || void 0;\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, functionDepth) {\n sightings.push({\n start,\n end,\n name,\n resolved: reference,\n functionDepth: functionDepth ?? 0\n });\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 sightings;\n const contributions = candidates.get(candidate);\n if (!contributions) return sightings;\n const target = resolveCandidateTarget(targetProperty, candidate, contributions);\n if (target.ok || isKnownPropertyValue(\n candidate,\n targetProperty,\n targetCategory,\n options.config,\n candidates\n ))\n return sightings;\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 return sightings;\n };\n for (const span of spans) {\n if (span.kind !== \"base\" && span.kind !== \"payload\") continue;\n if (span.start >= span.end) continue;\n const payload = input.slice(span.start, span.end);\n if (targetProperty === \"lineHeight\" && !hasTokenName(options.config, \"lineHeight\", payload) && /^(?:[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?|[+-]?Infinity|NaN)$/i.test(payload) && (!Number.isFinite(+payload) || +payload < 0)) {\n push(`invalid-line-height:${span.start}`, {\n code: \"invalid-line-height\",\n start: span.start,\n end: span.end,\n property,\n message: 'lineHeight ratios must be finite and non-negative; write \"24px\" for an absolute length'\n });\n continue;\n }\n if (payload.startsWith(\"$\")) {\n const stripped = payload.slice(1);\n push(`v2-dollar-prefix:${span.start}`, {\n code: \"v2-dollar-prefix\",\n start: span.start,\n end: span.end,\n property,\n replacement: stripped,\n message: `v3 tokens have no \"$\" prefix, write \"${stripped}\" not \"${payload}\"`\n });\n continue;\n }\n const sightings = diagnoseSegment(payload, span.start);\n const carriesCompoundColor = targetProperty === \"background\" || targetProperty === \"boxShadow\" || targetProperty === \"textShadow\" || targetProperty in borderFamilyTargets;\n if (options.strictPayloads && (targetIsKnown || targetProperty === \"background\" || carriesCompoundColor)) {\n const single = isSingleBareToken(payload);\n const compoundColor = !single && carriesCompoundColor;\n if (!single && !compoundColor) continue;\n const strictSightings = single ? [\n {\n start: 0,\n end: payload.length,\n name: payload,\n resolved: void 0,\n functionDepth: 0\n }\n ] : sightings;\n const validationProperty = compoundColor ? \"color\" : targetProperty;\n const category = compoundColor ? \"color\" : targetCategory;\n if (!hasTokenVocabulary(options.config, category, validationProperty, candidates))\n continue;\n for (const sighting of strictSightings) {\n const candidate = sighting.name;\n if (sighting.functionDepth > 0) continue;\n if (single && candidates.has(candidate)) continue;\n if (compoundColor && (compoundColorKeywords.has(candidate.toLowerCase()) || /^#[0-9a-fA-F]{3,8}$/.test(candidate)))\n continue;\n if (isKnownPropertyValue(\n candidate,\n validationProperty,\n category,\n options.config,\n candidates\n ))\n continue;\n const completions = completeStyleValue(\n compoundColor ? \"color\" : targetProperty === \"background\" ? \"backgroundColor\" : property,\n {\n ...options,\n strictPayloads: false,\n candidates\n }\n );\n const suggestion = findNearestCompletion(candidate, completions);\n const message = suggestion ? `unknown value \"${candidate}\" for ${property}; did you mean \"${suggestion}\"?` : `unknown value \"${candidate}\" for ${property}`;\n const start = span.start + sighting.start;\n const end = span.start + sighting.end;\n push(`unknown-payload-value:${start}:${candidate}`, {\n code: \"unknown-payload-value\",\n start,\n end,\n property,\n candidate,\n replacement: suggestion,\n message\n });\n }\n }\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 ...Object.keys(removedV2Props)\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 let border = null;\n if (borderFamilyTargets[targetProperty]) {\n const colorNames = options.config.tokenNames?.color;\n const colorTokens = colorNames instanceof Set ? colorNames : /* @__PURE__ */ new Set();\n if (!(colorNames instanceof Set)) {\n forEachName(colorNames, (name) => colorTokens.add(name));\n }\n border = splitBorderValue(targetProperty, parsed.value, colorTokens);\n }\n const programs = geometric && geometric.errors.length === 0 ? geometric.entries : border && border.errors.length === 0 ? border.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\" || diagnostic.code === \"unknown-payload-value\" || diagnostic.code === \"v2-dollar-prefix\"\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 removedV2Props\n};\n//# sourceMappingURL=toolingDiagnostics.js.map\n"],"mappings":"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"}
|