diff options
-rw-r--r-- | svg.js.d.ts | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/svg.js.d.ts b/svg.js.d.ts index 5fd0513..b3f17e9 100644 --- a/svg.js.d.ts +++ b/svg.js.d.ts @@ -4,14 +4,27 @@ // trick to keep reference to Array build-in type declare class BuiltInArray<T> extends Array<T> {} +// camelCase to kebab-case +declare type CamelToKebab<S extends string> = S extends `${infer T}${infer U}` + ? U extends Uncapitalize<U> + ? `${Lowercase<T>}${CamelToKebab<U>}` + : `${Lowercase<T>}-${CamelToKebab<U>}` + : S; + +declare type ConvertKeysToKebab<T> = { + [K in keyof T as CamelToKebab<K & string>]: T[K]; +}; + +declare type KebabCSSStyleDeclaration = ConvertKeysToKebab<CSSStyleDeclaration> + // trick to have nice attribute list for CSS declare type CSSStyleName = Exclude< - keyof CSSStyleDeclaration, - 'parentRule' | 'length' + keyof KebabCSSStyleDeclaration, + 'parent-rule' | 'length' > // create our own style declaration that includes css vars -interface CSSStyleDeclarationWithVars extends CSSStyleDeclaration { +interface CSSStyleDeclarationWithVars extends KebabCSSStyleDeclaration { [key: `--${string}`]: string } |