preact-custom-element
Version:
Wrap your component up as a custom element
51 lines (47 loc) • 1.07 kB
TypeScript
import { AnyComponent } from 'preact';
type Options =
| {
shadow: false;
}
| {
shadow: true;
mode?: 'open' | 'closed';
adoptedStyleSheets?: CSSStyleSheet[];
serializable?: boolean;
};
/**
* Register a preact component as web-component.
*
* @example
* ```jsx
* // use custom web-component class
* class PreactWebComponent extends Component {
* static tagName = 'my-web-component';
* render() {
* return <p>Hello world!</p>
* }
* }
*
* register(PreactComponent);
*
* // use a preact component
* function PreactComponent({ prop }) {
* return <p>Hello {prop}!</p>
* }
*
* register(PreactComponent, 'my-component');
* register(PreactComponent, 'my-component', ['prop']);
* register(PreactComponent, 'my-component', ['prop'], {
* shadow: true,
* mode: 'closed'
* });
* const klass = register(PreactComponent, 'my-component');
* ```
*/
declare function register<P = {}, S = {}>(
Component: AnyComponent<P, S>,
tagName?: string,
propNames?: (keyof P)[],
options?: Options
): HTMLElement;
export = register;