From 3a9a92cc7dbbaebd0275a35b1912acfe8207a93b Mon Sep 17 00:00:00 2001 From: Mark Lawlor Date: Sat, 16 Aug 2025 11:49:03 +1000 Subject: [PATCH] fix: caret-color parsing for unparsed declarations --- src/compiler/__tests__/declarations.test.tsx | 1 + src/compiler/atRules.ts | 5 ++++- src/compiler/declarations.ts | 13 +------------ src/compiler/stylesheet.ts | 1 + 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/compiler/__tests__/declarations.test.tsx b/src/compiler/__tests__/declarations.test.tsx index e6ef85af..0d4ee23e 100644 --- a/src/compiler/__tests__/declarations.test.tsx +++ b/src/compiler/__tests__/declarations.test.tsx @@ -1,6 +1,7 @@ import { compile } from "../compiler"; const tests = [ + ["caret-color: black", [{ d: [["#000", ["cursorColor"]]], s: [1, 1] }]], ["stroke: black;", [{ d: [["#000", ["stroke"]]], s: [1, 1] }]], ] as const; diff --git a/src/compiler/atRules.ts b/src/compiler/atRules.ts index b421d930..ba3ffe80 100644 --- a/src/compiler/atRules.ts +++ b/src/compiler/atRules.ts @@ -79,7 +79,10 @@ function isPropAtRule(rule: Rule | PropAtRule): rule is PropAtRule { } export function parsePropAtRule(rules?: (Rule | PropAtRule)[]) { - const mapping: StyleRuleMapping = {}; + // Include any default mapping here + const mapping: StyleRuleMapping = { + "caret-color": ["cursorColor"], + }; if (!rules) return mapping; diff --git a/src/compiler/declarations.ts b/src/compiler/declarations.ts index 039ad765..dd746250 100644 --- a/src/compiler/declarations.ts +++ b/src/compiler/declarations.ts @@ -142,7 +142,7 @@ const parsers: { "border-width": parseBorderWidth, "bottom": parseSizeDeclaration, "box-shadow": parseBoxShadow, - "caret-color": parseCaretColor, + "caret-color": parseColorOrAutoDeclaration, "color": parseFontColorDeclaration, "column-gap": parseGap, "container": parseContainer, @@ -244,17 +244,6 @@ const parsers: { const validProperties = new Set(Object.keys(parsers)); -function parseCaretColor( - declaration: DeclarationType<"caret-color">, - builder: StylesheetBuilder, -) { - builder.addMapping({ [declaration.property]: ["cursorColor"] }); - builder.addDescriptor( - "caret-color", - parseColorOrAutoDeclaration(declaration, builder), - ); -} - export function parseDeclaration( declaration: Declaration, builder: StylesheetBuilder, diff --git a/src/compiler/stylesheet.ts b/src/compiler/stylesheet.ts index 5785836d..93a86598 100644 --- a/src/compiler/stylesheet.ts +++ b/src/compiler/stylesheet.ts @@ -50,6 +50,7 @@ export class StylesheetBuilder { private ruleTemplate: StyleRule = { s: [], }, + // Any default mapping should be included in the @prop parsing private mapping: StyleRuleMapping = {}, public descriptorProperty?: string, private shared: {