Skip to content

Commit 084384b

Browse files
committed
Base types on generics, not global JSX namespace
For a while now, JSX frameworks don’t have to declare the global `JSX` namespace anymore. This is a significant improvement when using multiple JSX frameworks in the same project. React has deprecated the global `JSX` namespace. Preact doesn’t even define it anymore. This change replaces the use of the `JSX` namespace with generics, to make it compatible with modern JSX frameworks.
1 parent 56bf2f4 commit 084384b

File tree

7 files changed

+274
-210
lines changed

7 files changed

+274
-210
lines changed

index.js

+42-10
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,51 @@
11
/**
2-
* @typedef {import('./lib/components.js').Components} Components
3-
* @typedef {import('./lib/components.js').ExtraProps} ExtraProps
4-
* @typedef {import('./lib/index.js').CreateEvaluater} CreateEvaluater
2+
* @typedef {unknown} Components
3+
* @typedef {unknown} ExtraProps
54
* @typedef {import('./lib/index.js').ElementAttributeNameCase} ElementAttributeNameCase
6-
* @typedef {import('./lib/index.js').EvaluateExpression} EvaluateExpression
75
* @typedef {import('./lib/index.js').EvaluateProgram} EvaluateProgram
8-
* @typedef {import('./lib/index.js').Evaluater} Evaluater
9-
* @typedef {import('./lib/index.js').Fragment} Fragment
10-
* @typedef {import('./lib/index.js').Jsx} Jsx
11-
* @typedef {import('./lib/index.js').JsxDev} JsxDev
12-
* @typedef {import('./lib/index.js').Options} Options
13-
* @typedef {import('./lib/index.js').Props} Props
6+
* @typedef {unknown} Fragment
147
* @typedef {import('./lib/index.js').Source} Source
158
* @typedef {import('./lib/index.js').Space} Space
169
* @typedef {import('./lib/index.js').StylePropertyNameCase} StylePropertyNameCase
1710
*/
1811

12+
/**
13+
* @typedef {import('./lib/index.js').CreateEvaluater<JSXElementType>} CreateEvaluater
14+
* @template JSXElementType
15+
*/
16+
17+
/**
18+
* @typedef {import('./lib/index.js').EvaluateExpression<JSXElementType>} EvaluateExpression
19+
* @template JSXElementType
20+
*/
21+
22+
/**
23+
* @typedef {import('./lib/index.js').Evaluater<JSXElementType>} Evaluater
24+
* @template JSXElementType
25+
*/
26+
27+
/**
28+
* @typedef {import('./lib/index.js').Jsx<JSXElementType, JSXElement>} Jsx
29+
* @template JSXElementType
30+
* @template JSXElement
31+
*/
32+
33+
/**
34+
* @typedef {import('./lib/index.js').JsxDev<JSXElementType, JSXElement>} JsxDev
35+
* @template JSXElementType
36+
* @template JSXElement
37+
*/
38+
39+
/**
40+
* @typedef {import('./lib/index.js').Options<JSXElementType, JSXElement>} Options
41+
* @template JSXElementType
42+
* @template JSXElement
43+
*/
44+
45+
/**
46+
* @typedef {import('./lib/index.js').Props<JSXElement>} Props
47+
* @template JSXElementType
48+
* @template JSXElement
49+
*/
50+
1951
export {toJsxRuntime} from './lib/index.js'

lib/components.d.ts

-65
This file was deleted.

lib/components.js

-2
This file was deleted.

0 commit comments

Comments
 (0)