@@ -44,7 +44,8 @@ function compileStyles(
44
44
}
45
45
46
46
export interface StyleModifierSignature {
47
- Element : HTMLElement ;
47
+ // TODO: use `ElementCSSInlineStyle & Element` once TypeScript marks `<math>` elements as `MathMLElement`
48
+ Element : HTMLElement | SVGElement | MathMLElement ;
48
49
Args : {
49
50
Positional : CSSStyles [ ] ;
50
51
Named : CSSStyles ;
@@ -54,7 +55,10 @@ export interface StyleModifierSignature {
54
55
export default class StyleModifier extends Modifier < StyleModifierSignature > {
55
56
existingStyles : Set < string > = new Set ( ) ;
56
57
57
- setStyles ( element : HTMLElement , newStyles : [ string , string ] [ ] ) {
58
+ setStyles (
59
+ element : StyleModifierSignature [ 'Element' ] ,
60
+ newStyles : [ string , string ] [ ] ,
61
+ ) {
58
62
const { existingStyles } = this ;
59
63
const rulesToRemove : Set < string > = new Set ( existingStyles ) ;
60
64
@@ -92,7 +96,11 @@ export default class StyleModifier extends Modifier<StyleModifierSignature> {
92
96
rulesToRemove . forEach ( ( rule ) => element . style . removeProperty ( rule ) ) ;
93
97
}
94
98
95
- modify ( element : HTMLElement , positional : [ CSSStyles ] | [ ] , named : CSSStyles ) {
99
+ modify (
100
+ element : StyleModifierSignature [ 'Element' ] ,
101
+ positional : [ CSSStyles ] | [ ] ,
102
+ named : CSSStyles ,
103
+ ) {
96
104
this . setStyles ( element , compileStyles ( positional , named ) ) ;
97
105
}
98
106
}
0 commit comments