From cc1d16e42b8a16ecceca9d3117b41de17953956a Mon Sep 17 00:00:00 2001 From: AnkitaParakh Date: Mon, 6 Apr 2026 23:50:16 +0530 Subject: [PATCH] fix: add CSSStyleValue to Keyframe and PropertyIndexedKeyframes index signatures The Web Animations API allows passing CSS Typed Object Model values (CSSStyleValue and its subtypes like CSSUnitValue, CSSKeywordValue, CSSTransformValue, etc.) directly to animation keyframes via element.animate() and KeyframeEffect. However, the current Keyframe and PropertyIndexedKeyframes interfaces only accept string | number, causing type errors for valid CSS Typed OM usage. This adds CSSStyleValue to the index signatures of: - Keyframe: accepts CSSStyleValue for individual keyframe properties - PropertyIndexedKeyframes: accepts CSSStyleValue and CSSStyleValue[] ComputedKeyframe is intentionally left unchanged since getKeyframes() returns computed string values, not CSSStyleValue objects. Fixes microsoft/TypeScript#63325 --- baselines/dom.generated.d.ts | 4 ++-- baselines/ts5.5/dom.generated.d.ts | 4 ++-- baselines/ts5.6/dom.generated.d.ts | 4 ++-- baselines/ts5.9/dom.generated.d.ts | 4 ++-- inputfiles/overridingTypes.jsonc | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 49869687a..39e245f22 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -1386,7 +1386,7 @@ interface Keyframe { composite?: CompositeOperationOrAuto; easing?: string; offset?: number | null; - [property: string]: string | number | null | undefined; + [property: string]: string | number | CSSStyleValue | null | undefined; } interface KeyframeAnimationOptions extends KeyframeEffectOptions { @@ -2006,7 +2006,7 @@ interface PropertyIndexedKeyframes { composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[]; easing?: string | string[]; offset?: number | (number | null)[]; - [property: string]: string | string[] | number | null | (number | null)[] | undefined; + [property: string]: string | string[] | number | CSSStyleValue | CSSStyleValue[] | null | (number | null)[] | undefined; } interface PublicKeyCredentialCreationOptions { diff --git a/baselines/ts5.5/dom.generated.d.ts b/baselines/ts5.5/dom.generated.d.ts index c2605d732..b7fe41292 100644 --- a/baselines/ts5.5/dom.generated.d.ts +++ b/baselines/ts5.5/dom.generated.d.ts @@ -1383,7 +1383,7 @@ interface Keyframe { composite?: CompositeOperationOrAuto; easing?: string; offset?: number | null; - [property: string]: string | number | null | undefined; + [property: string]: string | number | CSSStyleValue | null | undefined; } interface KeyframeAnimationOptions extends KeyframeEffectOptions { @@ -2003,7 +2003,7 @@ interface PropertyIndexedKeyframes { composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[]; easing?: string | string[]; offset?: number | (number | null)[]; - [property: string]: string | string[] | number | null | (number | null)[] | undefined; + [property: string]: string | string[] | number | CSSStyleValue | CSSStyleValue[] | null | (number | null)[] | undefined; } interface PublicKeyCredentialCreationOptions { diff --git a/baselines/ts5.6/dom.generated.d.ts b/baselines/ts5.6/dom.generated.d.ts index 080755c34..3ad1bd245 100644 --- a/baselines/ts5.6/dom.generated.d.ts +++ b/baselines/ts5.6/dom.generated.d.ts @@ -1383,7 +1383,7 @@ interface Keyframe { composite?: CompositeOperationOrAuto; easing?: string; offset?: number | null; - [property: string]: string | number | null | undefined; + [property: string]: string | number | CSSStyleValue | null | undefined; } interface KeyframeAnimationOptions extends KeyframeEffectOptions { @@ -2003,7 +2003,7 @@ interface PropertyIndexedKeyframes { composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[]; easing?: string | string[]; offset?: number | (number | null)[]; - [property: string]: string | string[] | number | null | (number | null)[] | undefined; + [property: string]: string | string[] | number | CSSStyleValue | CSSStyleValue[] | null | (number | null)[] | undefined; } interface PublicKeyCredentialCreationOptions { diff --git a/baselines/ts5.9/dom.generated.d.ts b/baselines/ts5.9/dom.generated.d.ts index e7d397376..6acad99c9 100644 --- a/baselines/ts5.9/dom.generated.d.ts +++ b/baselines/ts5.9/dom.generated.d.ts @@ -1383,7 +1383,7 @@ interface Keyframe { composite?: CompositeOperationOrAuto; easing?: string; offset?: number | null; - [property: string]: string | number | null | undefined; + [property: string]: string | number | CSSStyleValue | null | undefined; } interface KeyframeAnimationOptions extends KeyframeEffectOptions { @@ -2003,7 +2003,7 @@ interface PropertyIndexedKeyframes { composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[]; easing?: string | string[]; offset?: number | (number | null)[]; - [property: string]: string | string[] | number | null | (number | null)[] | undefined; + [property: string]: string | string[] | number | CSSStyleValue | CSSStyleValue[] | null | (number | null)[] | undefined; } interface PublicKeyCredentialCreationOptions { diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index c6e2832d5..bd04272a8 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -2923,13 +2923,13 @@ "BaseKeyframe": { "name": "Keyframe", "overrideIndexSignatures": [ - "[property: string]: string | number | null | undefined" + "[property: string]: string | number | CSSStyleValue | null | undefined" ] }, "BasePropertyIndexedKeyframe": { "name": "PropertyIndexedKeyframes", "overrideIndexSignatures": [ - "[property: string]: string | string[] | number | null | (number | null)[] | undefined" + "[property: string]: string | string[] | number | CSSStyleValue | CSSStyleValue[] | null | (number | null)[] | undefined" ] }, "BaseComputedKeyframe": {