-
Notifications
You must be signed in to change notification settings - Fork 59
/
makeResetStyles.ts
41 lines (29 loc) · 1.21 KB
/
makeResetStyles.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import type { GriffelResetStyle } from '@griffel/style-types';
import { DEBUG_RESET_CLASSES } from './constants';
import { resolveResetStyleRules } from './runtime/resolveResetStyleRules';
import type { GriffelRenderer } from './types';
import type { GriffelInsertionFactory } from './types';
import { insertionFactory } from './makeStyles';
export interface MakeResetStylesOptions {
dir: 'ltr' | 'rtl';
renderer: GriffelRenderer;
}
export function makeResetStyles(styles: GriffelResetStyle, factory: GriffelInsertionFactory = insertionFactory) {
const insertStyles = factory();
let ltrClassName: string | null = null;
let rtlClassName: string | null = null;
let cssRules: string[] | null = null;
function computeClassName(options: MakeResetStylesOptions): string {
const { dir, renderer } = options;
if (ltrClassName === null) {
[ltrClassName, rtlClassName, cssRules] = resolveResetStyleRules(styles);
}
insertStyles(renderer, dir, { r: cssRules! });
const className = dir === 'ltr' ? ltrClassName : rtlClassName || ltrClassName;
if (process.env.NODE_ENV !== 'production') {
DEBUG_RESET_CLASSES[className] = 1;
}
return className;
}
return computeClassName;
}