@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
29 lines (28 loc) • 1.53 kB
TypeScript
import { ReadonlySignal, Signal } from '@preact/signals-core';
import { Matrix4, Vector2Tuple } from 'three';
import { ClippingRect } from './clipping.js';
import { OrderInfo } from './order.js';
import { PanelProperties } from './panel/instanced-panel.js';
import { ColorRepresentation } from './utils.js';
import { PanelGroupManager, PanelGroupProperties } from './panel/index.js';
import { MergedProperties } from './properties/index.js';
export type CaretTransformation = {
position: Vector2Tuple;
height: number;
};
export type CaretWidthProperties = {
caretWidth?: number;
};
export type CaretBorderSizeProperties = {
caretBorderRightWidth?: number;
caretBorderTopWidth?: number;
caretBorderLeftWidth?: number;
caretBorderBottomWidth?: number;
};
export type CaretProperties = {
caretOpacity?: number;
caretColor?: ColorRepresentation;
} & CaretWidthProperties & CaretBorderSizeProperties & {
[Key in Exclude<keyof PanelProperties, 'backgroundColor' | 'backgroundOpacity'> as `caret${Capitalize<Key>}`]: PanelProperties[Key];
};
export declare function createCaret(propertiesSignal: Signal<MergedProperties>, matrix: Signal<Matrix4 | undefined>, caretTransformation: Signal<CaretTransformation | undefined>, isVisible: Signal<boolean>, parentOrderInfo: Signal<OrderInfo | undefined>, parentGroupDeps: ReadonlySignal<Required<PanelGroupProperties>>, parentClippingRect: Signal<ClippingRect | undefined> | undefined, panelGroupManager: PanelGroupManager, abortSignal: AbortSignal): void;