@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
40 lines (39 loc) • 1.93 kB
TypeScript
import { Signal } from '@preact/signals-core';
import { EventHandlers } from '../events.js';
import { Object3D, Object3DEventMap } from 'three';
import { ParentContext } from '../context.js';
import { FontFamilies } from '../text/index.js';
export declare function createParentContextSignal(): Signal<Signal<(Readonly<{
node: Signal<import("../internals.js").FlexNode | undefined>;
anyAncestorScrollable: Signal<readonly [boolean, boolean]>;
ancestorsHaveListeners: Signal<boolean>;
clippingRect: Signal<import("../clipping.js").ClippingRect | undefined>;
childrenMatrix: Signal<import("three").Matrix4 | undefined>;
orderInfo: Signal<import("../order.js").OrderInfo | undefined>;
root: import("../context.js").RootContext;
}> & {
fontFamiliesSignal: Signal<FontFamilies | undefined>;
}) | undefined> | undefined>;
export declare function setupParentContextSignal(parentContextSignal: ReturnType<typeof createParentContextSignal>, container: Object3D): void;
export declare class Component<T = {}> extends Object3D<EventMap & {
childadded: {};
childremoved: {};
} & T> {
}
export declare class Parent<T = {}> extends Component<T> {
readonly contextSignal: Signal<(ParentContext & {
fontFamiliesSignal: Signal<FontFamilies | undefined>;
}) | undefined>;
protected readonly childrenContainer: Object3D<{
childadded: {};
childremoved: {};
} & Object3DEventMap>;
constructor();
add(...objects: Array<Object3D>): this;
addAt(object: Component, index: number): this;
remove(...objects: Array<Object3D>): this;
}
export declare function bindHandlers(handlers: Signal<EventHandlers>, container: Object3D<EventMap>, abortSignal: AbortSignal): void;
export type EventMap = Object3DEventMap & {
[Key in keyof EventHandlers as Lowercase<Key extends `on${infer K}` ? K : never>]-?: Parameters<Exclude<EventHandlers[Key], undefined>>[0];
};