import { EventEmitter, h } from '../../stencil-public-runtime'; import { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller'; import { VolumeIntersectionQueryModel } from '../../lib/volume-intersection/model'; import { VolumeIntersectionQueryMode, VolumeIntersectionQueryType } from './types'; /** * The `ViewerBoxQueryTool` allows for the drawing of a "box" on screen to represent * a query for items in a specific area of the viewer. This tool then allows for an * operation to be performed on the items contained (exclusive) by the box or both * contained by and intersecting with (inclusive) the box. */ export declare class ViewerBoxQueryTool { /** * The viewer that this component is bound to. This is automatically assigned * if added to the light-dom of a parent viewer element. */ viewer?: HTMLVertexViewerElement; /** * The controller that is responsible for performing operations using the * volume intersection query defined by the drawn box and updating the model. */ controller?: VolumeIntersectionQueryController; /** * The model that contains the points representing the corners of the box * displayed on screen, the type of the query to be performed, and methods * for setting these values. */ model?: VolumeIntersectionQueryModel; /** * The default operation to perform when a drag has completed and the intersection * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`. * * `clearAndSelect` will clear all existing selection, and select the results of the query. * `select` will maintain existing selection, and select the results of the query. * `deselect` will maintain existing selection, and deselect the results of the query. * * The operation behavior for this intersection query tool can also be changed by * providing a custom implementation of the `VolumeIntersectionQueryController`, or * by using the `setOperationTransform` method of the default controller. */ operationType: VolumeIntersectionQueryType; /** * An optional value to specify a singular mode of intersection query. This value * defaults to `undefined`, which will indicate that both `exclusive` and `inclusive` * queries should be made, with `inclusive` being represented by a left to right * drag behavior and `exclusive` being represented by a right to left drag. * * Setting this value to `inclusive` will cause dragging left to right and left to right * to result in an `inclusive` query, and the box will only be styled for `inclusive` queries. * * Setting this value to `exclusive` will cause dragging left to right and left to right * to result in an `exclusive` query, and the box will only be styled for `exclusive` queries. */ mode?: VolumeIntersectionQueryMode; private details?; /** * Event emitted when the `VolumeIntersectionQueryController` associated with this tool changes. */ controllerChanged: EventEmitter; private hostEl; private interactionHandler?; private interactionHandlerDisposable?; private operationStartedDisposable?; private operationCompleteDisposable?; private screenBoundsChangedDisposable?; constructor(); componentWillLoad(): void; disconnectedCallback(): void; /** * @ignore */ protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void; /** * @ignore */ protected handleDefaultOperationChange(updatedOperationType: VolumeIntersectionQueryType): void; /** * @ignore */ protected handleModeChange(updatedMode?: VolumeIntersectionQueryMode): void; /** * @ignore */ protected handleControllerChange(controller?: VolumeIntersectionQueryController): void; /** * @ignore */ protected render(): h.JSX.IntrinsicElements; private handleScreenBoundsChanged; private handleExecuteStarted; private handleExecuteComplete; private registerInteractionHandler; private deregisterInteractionHandler; private updateTypeAttribute; private setDefaultClearAndSelectOperation; private setDefaultSelectOperation; private setDefaultDeselectOperation; }