17 lines
790 B
TypeScript
17 lines
790 B
TypeScript
import * as React from 'react';
|
|
import { Object3D } from 'three';
|
|
import { Falsey } from 'utility-types';
|
|
type HelperType = Object3D & {
|
|
update: () => void;
|
|
dispose: () => void;
|
|
};
|
|
type HelperConstructor = new (...args: any[]) => any;
|
|
type HelperArgs<T> = T extends [infer _, ...infer R] ? R : never;
|
|
export declare function useHelper<T extends HelperConstructor>(object3D: React.RefObject<Object3D> | Falsey, helperConstructor: T, ...args: HelperArgs<ConstructorParameters<T>>): React.RefObject<HelperType | null>;
|
|
export type HelperProps<T extends HelperConstructor> = {
|
|
type: T;
|
|
args?: HelperArgs<ConstructorParameters<T>>;
|
|
};
|
|
export declare const Helper: <T extends HelperConstructor>({ type: helperConstructor, args, }: HelperProps<T>) => React.JSX.Element;
|
|
export {};
|