@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
33 lines (32 loc) • 1.35 kB
TypeScript
import { Signal } from '@preact/signals-core';
import { Matrix4, Object3D, Vector2Tuple, WebGLRenderer } from 'three';
import { ClippingRect } from './clipping.js';
import { OrderInfo, WithReversePainterSortStableCache } from './order.js';
import { GlyphGroupManager } from './text/render/instanced-glyph-group.js';
import { PanelGroupManager } from './panel/instanced-panel-group.js';
import { FlexNode } from './flex/index.js';
export type ParentContext = Readonly<{
node: Signal<FlexNode | undefined>;
anyAncestorScrollable: Signal<readonly [boolean, boolean]>;
ancestorsHaveListeners: Signal<boolean>;
clippingRect: Signal<ClippingRect | undefined>;
childrenMatrix: Signal<Matrix4 | undefined>;
orderInfo: Signal<OrderInfo | undefined>;
root: RootContext;
}>;
export type RootContext = WithReversePainterSortStableCache & Readonly<{
requestCalculateLayout: () => void;
objectRef: {
current?: Object3D | null;
};
gylphGroupManager: GlyphGroupManager;
panelGroupManager: PanelGroupManager;
pixelSize: Signal<number>;
onFrameSet: Set<(delta: number) => void>;
onUpdateMatrixWorldSet: Set<() => void>;
interactableDescendants: Array<Object3D>;
renderer: WebGLRenderer;
size: Signal<Vector2Tuple | undefined>;
requestRender: () => void;
requestFrame: () => void;
}>;