@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
59 lines (58 loc) • 4.86 kB
TypeScript
import { ReadonlySignal, Signal } from '@preact/signals-core';
import { Matrix4, Object3D } from 'three';
import { WithActive } from '../active.js';
import { WithPreferredColorScheme } from '../dark.js';
import { WithHover } from '../hover.js';
import { WithResponsive } from '../responsive.js';
import { FlexNode, FlexNodeState } from '../flex/index.js';
import { ParentContext, RootContext } from '../context.js';
import { EventHandlers } from '../events.js';
import { AllOptionalProperties, MergedProperties, Properties, PropertyTransformers } from '../properties/index.js';
import { AllowedPointerEventsType } from '../internals.js';
export declare function disposeGroup(object: Object3D | undefined): void;
export declare function computedGlobalMatrix(parentMatrix: Signal<Matrix4 | undefined>, localMatrix: Signal<Matrix4 | undefined>): Signal<Matrix4 | undefined>;
export type VisibilityProperties = {
visibility?: 'visible' | 'hidden';
};
export declare function computedIsVisible(flexState: FlexNodeState, isClipped: Signal<boolean> | undefined, mergedProperties: Signal<MergedProperties>): ReadonlySignal<boolean>;
export type WithConditionals<T> = WithHover<T> & WithResponsive<T> & WithPreferredColorScheme<T> & WithActive<T>;
export declare function loadResourceWithParams<P, R, A extends Array<unknown>>(target: Signal<R | undefined>, fn: (param: P, ...additional: A) => Promise<R>, cleanup: ((value: R) => void) | undefined, abortSignal: AbortSignal, param: Signal<P> | P, ...additionals: A): void;
export declare function setupNode(state: FlexNodeState & {
root: RootContext;
node: Signal<FlexNode | undefined>;
mergedProperties: Signal<MergedProperties>;
}, parentContext: ParentContext | undefined, object: Object3D, objectVisibleDefault: boolean, abortSignal: AbortSignal): FlexNode;
export declare const keepAspectRatioPropertyTransformer: PropertyTransformers;
export declare function computedHandlers(style: Signal<Properties | undefined>, propertiesSignal: Signal<Properties | undefined>, defaultProperties: Signal<AllOptionalProperties | undefined>, hoveredSignal: Signal<Array<number>>, activeSignal: Signal<Array<number>>, dynamicHandlers?: Signal<EventHandlers | undefined>, defaultCursor?: string): ReadonlySignal<EventHandlers>;
export declare function computedAncestorsHaveListeners(parentContext: ParentContext | undefined, handlers: ReadonlySignal<EventHandlers>): ReadonlySignal<boolean>;
export declare function addHandlers(target: EventHandlers, handlers: EventHandlers | undefined): void;
export declare function addHandler<T extends {
[Key in string]?: (e: any) => void;
}, K extends keyof T>(key: K, target: T, handler: T[K]): void;
export declare function computedMergedProperties(style: Signal<Properties | undefined>, properties: Signal<Properties | undefined>, defaultProperties: Signal<AllOptionalProperties | undefined>, postTransformers: PropertyTransformers, preTransformers?: PropertyTransformers, onInit?: (merged: MergedProperties) => void): ReadonlySignal<MergedProperties>;
/**
* @requires that each mesh inside the group has its default color stored inside object.userData.color
*/
export declare function applyAppearancePropertiesToGroup(propertiesSignal: Signal<MergedProperties>, group: Signal<Object3D | undefined> | Object3D, abortSignal: AbortSignal): void;
export declare function computeMatrixWorld(target: Matrix4, localMatrix: Matrix4 | undefined, rootObjectMatrixWorld: Matrix4, globalMatrixSignal: Signal<Matrix4 | undefined>): boolean;
export type UpdateMatrixWorldProperties = {
updateMatrixWorld?: boolean;
};
export declare function setupMatrixWorldUpdate(updateMatrixWorld: Signal<boolean> | true, updateChildrenMatrixWorld: boolean, object: Object3D, rootContext: RootContext, globalMatrixSignal: Signal<Matrix4 | undefined>, useOwnMatrix: boolean, abortSignal: AbortSignal): void;
export declare function computeDefaultProperties(propertiesSignal: Signal<MergedProperties>): {
pointerEvents: Signal<"auto" | "none" | "listener" | undefined>;
pointerEventsOrder: Signal<number | undefined>;
pointerEventsType: Signal<AllowedPointerEventsType | undefined>;
renderOrder: Signal<number>;
depthTest: Signal<boolean>;
depthWrite: Signal<boolean>;
};
export type OutgoingDefaultProperties = {
renderOrder: ReadonlySignal<number>;
depthTest: ReadonlySignal<boolean>;
depthWrite: ReadonlySignal<boolean>;
pointerEvents: ReadonlySignal<'none' | 'auto' | 'listener'>;
pointerEventsType: ReadonlySignal<AllowedPointerEventsType>;
pointerEventsOrder: ReadonlySignal<number>;
};
export declare function setupPointerEvents(propertiesSignal: Signal<MergedProperties>, ancestorsHaveListeners: ReadonlySignal<boolean>, rootContext: RootContext, target: Object3D, canHaveNonUikitChildren: boolean, abortSignal: AbortSignal): void;