@dcl/react-ecs
Version:
Decentraland ECS
87 lines (86 loc) • 2.24 kB
TypeScript
import { PBUiBackground, PBUiText, PBUiTransform, PBUiInput, PBUiDropdown } from '@dcl/ecs';
import { Callback, Key } from './components';
/**
* @public
*/
export interface EcsElements {
entity: Partial<EntityComponents> & {
children?: ReactEcs.JSX.ReactNode;
key?: Key;
};
}
/**
* @public
*/
export type EntityComponents = {
uiTransform: PBUiTransform;
uiText: PBUiText;
uiBackground: PBUiBackground;
uiInput: PBUiInput;
uiDropdown: PBUiDropdown;
onMouseDown: Callback;
onMouseUp: Callback;
onMouseEnter: Callback;
onMouseLeave: Callback;
};
/**
* @hidden
*/
export declare namespace JSX {
interface Element extends ReactElement<any, any> {
}
interface IntrinsicElements extends EcsElements {
}
interface Component {
}
}
/**
* @public
*/
export type JSXElementConstructor<P> = (props: P) => ReactElement<any, any> | null;
/**
* @public
*/
export interface ReactElement<P = any, T extends string | JSXElementConstructor<any> = string | JSXElementConstructor<any>> {
type: T;
props: P;
key: Key | null;
}
/**
* @public
*/
export declare namespace ReactEcs {
export namespace JSX {
/**
* @public
*/
type ReactNode = Element | ReactElement | string | number | boolean | null | undefined | ReactNode[];
/**
* @public
*/
interface Element extends ReactElement<any, any> {
}
/**
* @public
* HTML tag elements
*/
interface IntrinsicElements extends EcsElements {
}
/**
* @public
* Component empty interface
*/
interface Component {
}
}
export const createElement: any;
type SetStateAction<T> = T | ((prevState: T) => T);
type Dispatch<T> = (action: SetStateAction<T>) => void;
type StateHook = <T>(initialState: T | (() => T)) => [T, Dispatch<T>];
type DependencyList = ReadonlyArray<any>;
type EffectCallback = () => void | (() => void | undefined);
type EffectHook = (effect: EffectCallback, deps?: DependencyList) => void;
export const useEffect: EffectHook;
export const useState: StateHook;
export {};
}