@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
23 lines (22 loc) • 1.21 kB
TypeScript
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;