@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
36 lines (35 loc) • 1.58 kB
TypeScript
import { Signal } from '@preact/signals-core';
import { Object3D, RenderItem } from 'three';
import { Properties } from './properties/index.js';
export type WithReversePainterSortStableCache = {
reversePainterSortStableCache?: number;
};
export declare const reversePainterSortStableCacheKey: unique symbol;
export declare const orderInfoKey: unique symbol;
export declare function reversePainterSortStable(a: RenderItem, b: RenderItem): number;
export declare const ElementType: {
readonly Panel: 0;
readonly Image: 1;
readonly Content: 2;
readonly Custom: 3;
readonly Text: 4;
};
export type ElementType = (typeof ElementType)[keyof typeof ElementType];
export type OrderInfo = {
majorIndex: number;
minorIndex: number;
elementType: ElementType;
patchIndex: number;
instancedGroupDependencies?: Signal<Record<string, any>> | Record<string, any>;
};
export declare function compareOrderInfo(o1: OrderInfo | undefined, o2: OrderInfo | undefined): number;
export type ZIndexProperties = {
zIndex?: number;
zIndexOffset?: number;
};
export declare function setupOrderInfo(target: Signal<OrderInfo | undefined>, properties: Properties, zIndexKey: string, type: ElementType, instancedGroupDependencies: Signal<Record<string, any>> | Record<string, any> | undefined, basisOrderInfoSignal: Signal<OrderInfo | undefined | null>, abortSignal: AbortSignal): void;
export declare function setupRenderOrder(target: Object3D, root: {
peek(): WithReversePainterSortStableCache;
}, orderInfo: {
value: OrderInfo | undefined;
}): void;