@pmndrs/uikit
Version:
Build performant 3D user interfaces with Three.js and yoga.
25 lines (24 loc) • 1.62 kB
TypeScript
import { ReadonlySignal, Signal } from '@preact/signals-core';
import { PanelProperties } from '../../panel/instance/panel.js';
import { Matrix4 } from 'three';
import { ClippingRect } from '../../clipping.js';
import { OrderInfo } from '../../order.js';
import { ColorRepresentation } from '../../utils.js';
import { PanelGroupProperties } from '../../panel/instance/index.js';
import { Properties } from '../../properties/index.js';
import { RootContext } from '../../context.js';
import type { AbsoluteLengthValue } from '../../properties/values.js';
import type { SelectionTransformation } from '../layout/index.js';
export type { SelectionTransformation } from '../layout/index.js';
export type SelectionBorderSizeProperties = {
selectionBorderRightWidth?: AbsoluteLengthValue;
selectionBorderTopWidth?: AbsoluteLengthValue;
selectionBorderLeftWidth?: AbsoluteLengthValue;
selectionBorderBottomWidth?: AbsoluteLengthValue;
};
export type SelectionProperties = {
selectionColor?: ColorRepresentation;
} & SelectionBorderSizeProperties & {
[Key in Exclude<keyof PanelProperties, 'opacity'> as `selection${Capitalize<Key>}`]?: PanelProperties[Key];
};
export declare function createSelection(properties: Properties, root: Signal<RootContext>, globalMatrix: Signal<Matrix4 | undefined>, selectionTransformations: ReadonlySignal<Array<SelectionTransformation>>, isVisible: Signal<boolean>, prevOrderInfo: Signal<OrderInfo | undefined>, prevPanelDeps: ReadonlySignal<Required<PanelGroupProperties>>, parentClippingRect: Signal<ClippingRect | undefined> | undefined, abortSignal: AbortSignal): void;