Skip to content

Commit 607253a

Browse files
committed
feat: 🎸 add CSSOM and VCSSOM TypeScript typings
1 parent aea14e5 commit 607253a

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

‎addon/cssom.d.ts‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export interface CSSOMRule extends CSSRule {
2+
index: number;
3+
style: CSSStyleDeclaration;
4+
styleMap: any;
5+
}
6+
7+
export interface AddonCSSOM {
8+
/**
9+
* @param selector CSS rule selector string.
10+
* @param prelude Media query at-rule prelude string.
11+
*/
12+
createRule(selector: string, prelude: string): CSSOMRule;
13+
}
14+
15+
export function addon<Nano extends {sh: HTMLStyleElement}>(nano: Nano): Nano & AddonCSSOM;

‎addon/vcssom.d.ts‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {AddonCSSOM} from './cssom';
2+
import {Css} from './vcssom/cssToTree';
3+
4+
export interface VSheet {
5+
diff(css: Css);
6+
}
7+
8+
export interface AddonVCSSOM {
9+
VSheet: new () => VSheet;
10+
}
11+
12+
export function addon<Nano extends AddonCSSOM>(nano: Nano): Nano & AddonVCSSOM;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import {CssLikeObject} from '../../types/common';
2+
3+
export interface Css {
4+
[key: string]: CssLikeObject[keyof CssLikeObject] | Css;
5+
}
6+
7+
export interface Tree {
8+
[atRulePrelude: string]: {
9+
[selector: string]: {
10+
[property: string]: CssLikeObject;
11+
};
12+
};
13+
}
14+
15+
export function cssToTree(css: Css): Tree;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import {CSSOMRule} from '../cssom';
2+
3+
export function removeRule(sh: CSSStyleSheet, rule: CSSOMRule);

‎addon/vcssom/removeRule.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// TODO: `rule` should have a reference to stylesheet it is contained in,
2+
// maybe we don't need to pass `sh` in here.
13
function removeRule (sh, rule) {
24
var maxIndex = rule.index;
35
var rules = sh.cssRules || sh.rules;

0 commit comments

Comments
 (0)