import { EventEmitter, h } from '../../stencil-public-runtime'; import { Dimensions, Point } from '@vertexvis/geometry'; import { BasicViewer } from '@vertexvis/utils'; import { Markup, MarkupCenteringBehavior } from '../../lib/types/markup'; import { LineAnchorStyle } from '../viewer-markup-arrow/utils'; /** * The types of markup that can be performed by this tool. */ export type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform'; export declare class ViewerMarkupTool { /** * An HTML template that describes the HTML to use for new arrow * markup. It's expected that the template contains a * ``. */ arrowTemplateId?: string; /** * An HTML template that describes the HTML to use for new circle * markup. It's expected that the template contains a * ``. */ circleTemplateId?: string; /** * An HTML template that describes the HTML to use for new freeform * markup. It's expected that the template contains a * ``. */ freeformTemplateId?: string; /** * The type of markup. * * This property will automatically be set when a child of a * `` element. */ tool: ViewerMarkupToolType; /** * Disables markups. * * This property will automatically be set when a child of a * `` element. */ disabled: boolean; /** * The viewer to connect to markup. * * This property will automatically be set when a child of a * `` or `` element. */ viewer?: BasicViewer; /** * The style of the starting anchor. This defaults to none. */ startLineAnchorStyle: LineAnchorStyle; /** * The style of the ending anchor. This defaults to 'arrow-triangle.' */ endLineAnchorStyle: LineAnchorStyle; /** * The original viewport dimensions where this markup was created. This value is used * to determine where the markup should be rendered relative to the current viewport, * enabling some markup to appear "off-screen". * * When provided, all NDC values will be considered relative to this viewport. */ originatingViewport?: Dimensions.Dimensions; /** * Defines the behavior of the provided markup when the originating viewport is smaller * than the current viewport, or is scaled to a size smaller than the current viewport * using the `scale` property. * * Options: * - `x-only`: Markup will be centered horizontally, but not vertically. * - `y-only`: Markup will be centered vertically, but not horizontally. * - `both`: Markup will be centered both horizontally and vertically. * - `none`: Markup will not be centered (default). */ centeringBehavior: MarkupCenteringBehavior; /** * The current offset of the visible viewport. This value is used to determine where * markup should be rendered relative to the current viewport, enabling some markup to appear "off-screen". * * When provided, all computed coordinates will be offset by this amount. */ offset?: Point.Point; /** * The scale to render this markup at. This value is used to scale the element's bounds * along with any `offset` to determine the final computed coordinates. * * When provided, all computed coordinates will be scaled by this amount. */ scale: number; /** * An event that is dispatched when a user begins a new markup. */ markupBegin: EventEmitter; /** * An event that is dispatched when a user has finished their markup. */ markupEnd: EventEmitter; private hostEl; /** * Captures internal state that you want to preserve across dev refreshes, but * don't want to trigger a render when the state changes. */ private stateMap; protected handleViewerChanged(): Promise; /** * @ignore */ protected handlePropertyChanged(): void; protected handleScalingConfigurationChanged(): void; /** * @ignore */ protected componentDidLoad(): void; /** * Resets the state of the internally managed markup element * to allow for creating a new markup. This state is automatically * managed when this element is placed as a child of a * `` element. */ reset(): Promise; /** * @ignore */ protected render(): h.JSX.IntrinsicElements; private createArrowMarkupElement; private createCircleMarkupElement; private createFreeformMarkupElement; private createNewMarkupElement; private updateMarkupElement; private handleMarkupInteractionBegin; private handleMarkupInteractionEnd; }