Skip to content

Commit e27626e

Browse files
committed
refactor: Support package.json#exports & .mjs
1 parent 0a8ccf7 commit e27626e

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

package.json

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,26 @@
55
"source": "src/index.js",
66
"types": "src/index.d.ts",
77
"main": "dist/preact-custom-element.js",
8-
"module": "dist/preact-custom-element.esm.js",
8+
"module": "dist/preact-custom-element.mjs",
99
"unpkg": "dist/preact-custom-element.umd.js",
10+
"exports": {
11+
".": {
12+
"module": {
13+
"types": "./src/index.d.mts",
14+
"default": "./dist/preact-custom-element.mjs"
15+
},
16+
"umd": "./dist/preact-custom-element.umd.js",
17+
"import": {
18+
"types": "./src/index.d.mts",
19+
"default": "./dist/preact-custom-element.mjs"
20+
},
21+
"require": {
22+
"types": "./src/index.d.ts",
23+
"default": "./dist/preact-custom-element.js"
24+
}
25+
},
26+
"./package.json": "./package.json"
27+
},
1028
"scripts": {
1129
"prepare": "npx simple-git-hooks",
1230
"build": "microbundle -f cjs,es,umd --no-generateTypes",

src/index.d.mts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { AnyComponent } from 'preact';
2+
3+
type Options =
4+
| {
5+
shadow: false;
6+
}
7+
| {
8+
shadow: true;
9+
mode?: 'open' | 'closed';
10+
adoptedStyleSheets?: CSSStyleSheet[];
11+
serializable?: boolean;
12+
};
13+
14+
/**
15+
* Register a preact component as web-component.
16+
*
17+
* @example
18+
* ```jsx
19+
* // use custom web-component class
20+
* class PreactWebComponent extends Component {
21+
* static tagName = 'my-web-component';
22+
* render() {
23+
* return <p>Hello world!</p>
24+
* }
25+
* }
26+
*
27+
* register(PreactComponent);
28+
*
29+
* // use a preact component
30+
* function PreactComponent({ prop }) {
31+
* return <p>Hello {prop}!</p>
32+
* }
33+
*
34+
* register(PreactComponent, 'my-component');
35+
* register(PreactComponent, 'my-component', ['prop']);
36+
* register(PreactComponent, 'my-component', ['prop'], {
37+
* shadow: true,
38+
* mode: 'closed'
39+
* });
40+
* const klass = register(PreactComponent, 'my-component');
41+
* ```
42+
*/
43+
export default function register<P = {}, S = {}>(
44+
Component: AnyComponent<P, S>,
45+
tagName?: string,
46+
propNames?: (keyof P)[],
47+
options?: Options
48+
): HTMLElement;

0 commit comments

Comments
 (0)