@stencil/react-output-target
Version:
React output target for @stencil/core components.
25 lines (23 loc) • 1.57 kB
TypeScript
import { EventName, Options } from '@lit/react';
import { default as React } from 'react';
type EventNames = Record<string, EventName | string>;
type StencilProps<I extends HTMLElement, E extends EventNames, C, R extends keyof C = never> = Omit<React.HTMLAttributes<I>, keyof E> & Partial<{
[K in keyof E]: E[K] extends EventName<infer T> ? (event: T) => void : (event: any) => void;
}> & Required<Pick<C, R>> & Partial<Omit<C, R>> & React.RefAttributes<I>;
export type StencilReactComponent<I extends HTMLElement, E extends EventNames = {}, C = Omit<I, keyof HTMLElement>, R extends keyof C = never> = React.FunctionComponent<StencilProps<I, E, C, R>>;
/**
* Merge the app's `className`/`class` with the classes the Stencil runtime
* manages on the host. `@lit/react` maps `className` to `class` and rewrites it
* wholesale on every render, which wipes runtime-added classes like `hydrated`,
* `sc-*` scope classes, and state classes a design system relies on.
*/
export declare const mergeClassNames: (currentClasses: Iterable<string>, newClassName: string | undefined, oldClassName: string | undefined) => string;
/**
* Defines a custom element and creates a React component.
* @public
*/
export declare const createComponent: <I extends HTMLElement, E extends EventNames = {}, C = Omit<I, keyof HTMLElement>, R extends keyof C = never>({ defineCustomElement, tagName, transformTag, ...options }: Options<I, E> & {
defineCustomElement: () => void;
transformTag?: (tagName: string) => string;
}) => StencilReactComponent<I, E, C, R>;
export {};