import { EventEmitter, h } from '../../stencil-public-runtime'; import { Dimensions, Point } from '@vertexvis/geometry'; import { BasicViewer } from '@vertexvis/utils'; import { MarkupCenteringBehavior, MarkupInteraction } from '../../lib/types/markup'; import { LineAnchorStyle } from './utils'; /** * The supported arrow markup modes. * * @see {@link ViewerMarkupArrowMode.mode} - For more details about modes. */ export type ViewerMarkupArrowMode = 'edit' | 'create' | ''; export declare class ViewerMarkupArrow { /** * The position of the starting anchor. Can either be an instance of a * `Point` or a JSON string representation in the format of `[x, y]` or * `{"x": 0, "y": 0}`. * * Points are expected to be relative coordinates from `[-0.5, 0.5]`, * e.g. `[0, 0]` corresponds to a point in the center of the viewport. */ start?: Point.Point; /** * The position of the starting anchor, as a JSON string. Can either be an * instance of a `Point` or a JSON string representation in the format of * `[x, y]` or `{"x": 0, "y": 0}`. * * Points are expected to be relative coordinates from `[-0.5, 0.5]`, * e.g. `[0, 0]` corresponds to a point in the center of the viewport. */ startJson?: string; /** * The position of the ending anchor. Can either be an instance of a `Point` * or a JSON string representation in the format of `[x, y]` or `{"x": 0, * "y": 0}`. * * Points are expected to be relative coordinates from `[-0.5, 0.5]`, * e.g. `[0, 0]` corresponds to a point in the center of the viewport. */ end?: Point.Point; /** * The position of the ending anchor, as a JSON string. Can either be an * instance of a `Point` or a JSON string representation in the format of * `[x, y]` or `{"x": 0, "y": 0}`. * * Points are expected to be relative coordinates from `[-0.5, 0.5]`, * e.g. `[0, 0]` corresponds to a point in the center of the viewport. */ endJson?: string; /** * 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; /** * 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; /** * A mode that specifies how the markup component should behave. When * unset, the component will not respond to interactions with the handles. * When `edit`, the markup anchors are interactive and the user is able * to reposition them. When `create`, anytime the user clicks on the canvas, * a new markup will be performed. */ mode: ViewerMarkupArrowMode; /** * The viewer to connect to markups. * * This property will automatically be set when a child of a * `` or `` element. */ viewer?: BasicViewer; /** * An event that is dispatched anytime the user begins interacting with the * markup. */ interactionBegin: EventEmitter; /** * An event that is dispatched when the user has finished interacting with the * markup. */ interactionEnd: EventEmitter; private hostEl; private elementBounds?; private interactionHandler; private registeredInteraction?; /** * @ignore */ protected componentWillLoad(): void; protected componentDidLoad(): void; protected disconnectedCallback(): void; dispose(): Promise; /** * @ignore */ protected handleViewerChanged(newViewer?: BasicViewer): Promise; protected handleStartJsonChange(): void; protected handleEndJsonChange(): void; protected handleModeChange(): void; protected handleScalingConfigurationChange(): void; protected handleScaleChange(): void; private updateViewport; private updatePointsFromProps; private renderLineAnchorStyle; render(): h.JSX.IntrinsicElements; private handleWindowPointerDown; private handleTouchStart; }