import { type IMaterialAbstractData, type IViewportApi } from "@shapediver/viewer"; import { type ITreeNode } from "@shapediver/viewer.shared.node-tree"; import { type IIntersectionDefinition, type IRay } from "@shapediver/viewer.shared.types"; import { INTERACTION_STATE } from "../../interfaces/IInteractionEngine"; import { type IInteractionFilterOptions } from "../../interfaces/IInteractionManager"; import { type IInteractionEffect } from "../../interfaces/utils/IInteractionEffectUtils"; import { AbstractInteractionManager } from "../AbstractInteractionManager"; export declare class MultiSelectManager extends AbstractInteractionManager { #private; constructor(id?: string, interactionEffect?: IInteractionEffect | IMaterialAbstractData, minimumNodes?: number, maximumNodes?: number); get boxSelectionActive(): boolean; get boxSelectionKey(): string; set boxSelectionKey(value: string); get deselectOnEmpty(): boolean; set deselectOnEmpty(value: boolean); get filter(): IInteractionFilterOptions; get insertionActive(): boolean; get insertionKey(): string; set insertionKey(value: string); get maximumNodes(): number; set maximumNodes(value: number); get minimumNodes(): number; set minimumNodes(value: number); get removalActive(): boolean; get removalKey(): string; set removalKey(value: string); add(viewport: IViewportApi): void; /** * Deselect a specific node. * * @param node */ deselect(node: ITreeNode): void; /** * Deselect all nodes. */ deselectAll(): void; onDown(event: PointerEvent, ray: IRay, intersection: IIntersectionDefinition[]): void; onEnd(event: PointerEvent, ray: IRay, intersection: IIntersectionDefinition[], endState: INTERACTION_STATE): void; onKeyDown(event: KeyboardEvent, pointerInCanvas: boolean): void; onKeyUp(event: KeyboardEvent, pointerInCanvas: boolean): void; onMove(event: PointerEvent, ray: IRay, intersection: IIntersectionDefinition[]): void; remove(): void; /** * Select a node. * The point and distance of the intersection can be freely chosen and are provided in the event callbacks. * * @param intersection */ select(intersection: Omit & Partial>): void; /** * Utility function to make the node the current active node. * Set the according values, apply the effect and emit the event. * * @param intersection * @param event * @param ray */ private activateNode; /** * Utility function to make the node inactive. * Set the according values, remove the effect and emit the event. * * @param event */ private deactivateNode; private emitSelectionEvents; private manageIntersection; } //# sourceMappingURL=MultiSelectManager.d.ts.map