UNPKG

@pmndrs/uikit

Version:

Build performant 3D user interfaces with Three.js and yoga.

23 lines (22 loc) 1.21 kB
import { Signal } from '@preact/signals-core'; import { Matrix4, Object3D } from 'three'; import { FlexNodeState } from './flex/node.js'; import { alignmentXMap, alignmentYMap } from './utils.js'; import { MergedProperties } from './properties/merged.js'; import { RootContext } from './context.js'; export type Percentage = `${number}%`; export type TransformProperties = { transformTranslateX?: Percentage | number; transformTranslateY?: Percentage | number; transformTranslateZ?: number; transformRotateX?: number; transformRotateY?: number; transformRotateZ?: number; transformScaleX?: Percentage | number; transformScaleY?: Percentage | number; transformScaleZ?: Percentage | number; transformOriginX?: keyof typeof alignmentXMap; transformOriginY?: keyof typeof alignmentYMap; }; export declare function computedTransformMatrix(propertiesSignal: Signal<MergedProperties>, { relativeCenter, size }: FlexNodeState, pixelSizeSignal: Signal<number>): Signal<Matrix4 | undefined>; export declare function setupObjectTransform(root: Pick<RootContext, 'requestRender'>, object: Object3D, transformMatrix: Signal<Matrix4 | undefined>, abortSignal: AbortSignal): void;