@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
23 lines (22 loc) • 1.15 kB
TypeScript
import { ReadonlySignal, Signal } from '@preact/signals-core';
import { PanelGroupManager } from './panel/instanced-panel-group.js';
import { WithReversePainterSortStableCache } from './order.js';
import { Matrix4, Vector2Tuple } from 'three';
import { GlyphGroupManager } from './text/render/instanced-glyph-group.js';
import { Component } from './components/component.js';
import { Properties } from './properties/index.js';
export type RenderContext = {
requestFrame: () => void;
};
export type RootContext = WithReversePainterSortStableCache & {
requestCalculateLayout: () => void;
requestRender: () => void;
component: Component;
glyphGroupManager: GlyphGroupManager;
panelGroupManager: PanelGroupManager;
onFrameSet: Set<(delta: number) => void>;
onUpdateMatrixWorldSet: Set<() => void>;
isUpdateRunning: boolean;
} & Partial<RenderContext>;
export declare function buildRootContext(component: Component, renderContext: RenderContext | undefined): ReadonlySignal<RootContext>;
export declare function buildRootMatrix(properties: Properties, size: Signal<Vector2Tuple | undefined>): Matrix4 | undefined;