@vertigis/viewer-spec
Version:
VertiGIS Viewer Specification
1,025 lines (1,024 loc) • 33.3 kB
TypeScript
import type Graphic from "@arcgis/core/Graphic";
import type Point from "@arcgis/core/geometry/Point";
import type LineSymbol3D from "@arcgis/core/symbols/LineSymbol3D";
import type PictureFillSymbol from "@arcgis/core/symbols/PictureFillSymbol";
import type PictureMarkerSymbol from "@arcgis/core/symbols/PictureMarkerSymbol";
import type PointSymbol3D from "@arcgis/core/symbols/PointSymbol3D";
import type PolygonSymbol3D from "@arcgis/core/symbols/PolygonSymbol3D";
import type SimpleFillSymbol from "@arcgis/core/symbols/SimpleFillSymbol";
import type SimpleLineSymbol from "@arcgis/core/symbols/SimpleLineSymbol";
import type SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol";
import type TextSymbol from "@arcgis/core/symbols/TextSymbol";
import type { GeometryUnion, SymbolUnion } from "@arcgis/core/unionTypes.js";
import type { Feature } from "@vertigis/arcgis-extensions/data/Feature.js";
import type { LineSymbol3DJson, PictureFillSymbolJson, PictureMarkerSymbolJson, PointSymbol3DJson, PolygonSymbol3DJson, SimpleFillSymbolJson, SimpleLineSymbolJson, SimpleMarkerSymbolJson, SymbolJson } from "@vertigis/arcgis-extensions/json/SymbolJson.js";
import type { MapExtension } from "@vertigis/arcgis-extensions/mapping/MapExtension";
import type { SnappingProperties } from "../../app-config/web/SnappingProperties.js";
import type { TopologyProperties } from "../../app-config/web/TopologyProperties.js";
import type { Command } from "../Command.js";
import { CommandRegistry } from "../CommandRegistry.js";
import type { Event } from "../Event.js";
import { EventRegistry } from "../EventRegistry.js";
import type { Operation } from "../Operation.js";
import { OperationRegistry } from "../OperationRegistry.js";
import type { FeaturesLike, GeometryLike, GraphicsLike, HasMaps, Maps, MapsLike } from "../common.js";
import type { EditSymbolResult } from "./drawing.js";
import type { GeodeticCurveType, LengthUnits, LengthUnitsMobile, ReferenceLine } from "./geometry.js";
/**
* A representation of a 2D vector or point.
*/
export interface Vector2D {
/**
* The x component.
*/
x: number;
/**
* The y component.
*/
y: number;
}
/**
* A set of symbols that can be used to sketch geometries.
*/
export interface SymbolSet {
/**
* The symbol used to draw points.
*/
pointSymbol?: SimpleMarkerSymbol | SimpleMarkerSymbolJson | PictureMarkerSymbol | PictureMarkerSymbolJson;
/**
* The symbol used to draw 3D points.
*/
pointSymbol3D?: PointSymbol3D | PointSymbol3DJson;
/**
* The symbol used to draw lines.
*/
lineSymbol?: SimpleLineSymbol | SimpleLineSymbolJson;
/**
* The symbol used to draw 3D lines.
*/
lineSymbol3D?: LineSymbol3D | LineSymbol3DJson;
/**
* The symbol used to draw polygons.
*/
polygonSymbol?: SimpleFillSymbol | SimpleFillSymbolJson | PictureFillSymbol | PictureFillSymbolJson;
/**
* The symbol used to draw 3D polygons.
*/
polygonSymbol3D?: PolygonSymbol3D | PolygonSymbol3DJson;
}
/**
* The type of tool used for sketching.
*/
export declare enum SketchTool {
POINT = "point",
MULTIPOINT = "multipoint",
/**
* Not supported in VertiGIS Studio Mobile.
*/
LINE = "line",
POLYLINE = "polyline",
POLYGON = "polygon",
EXTENT = "extent",
/**
* Not supported in VertiGIS Studio Mobile.
*/
SQUARE = "square",
/**
* Not supported in VertiGIS Studio Mobile.
*/
CIRCLE = "circle"
}
/**
* Indicates whether a new point should be added before or after the active
* point in a sketch.
*/
export type AddNodeOrder = "add-after-active" | "add-before-active";
/**
* Deprecated - use "sketching.move-point" with {@link MovePointArgs}.
*
* @deprecated
*/
export interface MoveNodeArgs extends HasMaps {
/**
* The point to move, which must already exist within the active sketch. If
* not provided, the active point will be used.
*/
node?: Point;
/**
* The new position for the point.
*/
position: GeometryUnion;
}
/**
* The arguments for the "sketching.move-point" command.
*/
export interface MovePointArgs extends HasMaps {
/**
* The point to move, which must already exist within the active sketch. If
* this property is undefined and no geometry and pointIndex are specified,
* the active point(s) will be moved.
*/
point?: Point;
/**
* The geometry where the point exists, if multiple are present in an active
* editing session. This property is required if pointIndex and/or partIndex
* are defined.
*/
geometry?: GeometryUnion;
/**
* The index of the point. If this property is defined, the 'geometry'
* property must also be defined.
*/
pointIndex?: number;
/**
* The part of the geometry where the point exists. Required for polyline
* and polygon geometry types when the geometry and pointIndex properties
* are defined.
*/
partIndex?: number;
/**
* The new point that will replace the target point within an active sketch
* or edit geometry. If this property is defined, the distance property will
* be ignored.
*/
newPoint?: Point;
/**
* An amount to move the point(s) on the X and Y axes. If the newPoint
* property is defined, this property will be ignored.
*/
distance?: Vector2D;
/**
* The units of the above distance. Optional, will default to the units used
* by the measurement service associated with the map.
*/
units?: LengthUnits;
}
/**
* Deprecated - use "sketching.set-active-points" with
* {@link SetActivePointsArgs}.
*
* @deprecated
*/
export interface SwitchActiveNodeArgs extends HasMaps {
/**
* The new point that will become the active point of an active sketch.
*/
node: Point;
}
/**
* The arguments for the "sketching.set-active-points" command.
*/
export interface SetActivePointsArgs extends HasMaps {
/**
* The new point(s) that will become active in the sketch or editing
* session. Sketching only supports one active point; if multiple are
* specified, then only the first will be set as active.
*/
points?: Point | Point[];
/**
* The geometry where the new active point exists, if multiple are present
* in an active editing session. This property is required if pointIndex
* and/or partIndex are defined.
*/
geometry?: GeometryUnion;
/**
* The index of the new active point. If this property is defined, the
* geometry property must be defined.
*/
pointIndex?: number;
/**
* The part of the geometry where the new active point exists. Required for
* polyline and polygon geometry types when the geometry and pointIndex
* properties are defined.
*/
partIndex?: number;
}
/**
* Arguments for the "sketching.capture-geometry" operation.
*/
export interface CaptureGeometryArgs {
/**
* The maps to activate drawing on. By default it will be all maps.
*/
maps?: MapsLike;
/**
* The geometry/shape to use for sketching. * Multiple sketch tools are only
* supported by VertiGIS Studio Web. When multiple sketch tools are
* provided, the sketch will begin with the first one in the list. If
* "point" is the first of multiple options in the list, click actions will
* create points while click-and-drag actions will automatically begin the
* freehand variation of the next included geometry type. The types "point",
* "line" and "square" are supported only in Web.
*/
geometryType: SketchTool | SketchTool[];
/**
* An optional symbol to use. SymbolSets are not supported by VertiGIS
* Studio Mobile.
*/
symbol?: SymbolJson | SymbolSet;
/**
* The maximum number of segments permitted for a polyline or polygon
* sketch. Default is no limit. Mobile only.
*/
maxSegments?: number;
/**
* The settings to be applied to the sketch. Mobile only.
*/
editorSettings?: GeometryEditorSettings;
/**
* Disables freehand sketching during the draw session. Web only.
*/
disableFreehand?: boolean;
/**
* Web only. Additional settings that are specific to sketching plugins,
* keyed by plugin ID. The only currently supported plugin is "snapping". A
* boolean value can also be assigned to completely disable, or enable with
* default settings.
*/
pluginSettings?: Record<string, boolean | Record<string, unknown>>;
}
/**
* Result of the "sketching.capture-geometry" operation.
*/
export interface CaptureGeometryResult {
/**
* The geometry that was captured.
*/
geometry: GeometryUnion;
/**
* The map that the user sketched the geometry on. Unavailable in VertiGIS
* Studio Mobile.
*/
maps: MapsLike;
/**
* The symbol that was used. Unavailable in VertiGIS Studio Web.
*/
symbol?: SymbolUnion;
}
/**
* A generic context for operations that act on geometries.
*/
export interface GeometryOperationBase {
/**
* The maps to activate editing on. By default it will be all maps.
*/
maps?: MapsLike;
/**
* The geometries to edit.
*/
geometry?: GeometryLike;
/**
* The graphics containing geometries to edit. The graphics will pass
* through and be assigned the altered geometries. Not supported in Mobile.
*/
graphics?: GraphicsLike;
/**
* The features containing geometries to edit. The features will pass
* through and be assigned the altered geometries. Not supported in Mobile.
*/
features?: FeaturesLike;
/**
* Flag all inputs as measured geometries. Geometry operations will show
* measurements for in progress operations. Not supported in Mobile.
*/
isMeasurement?: boolean;
/**
* An optional symbol to use while editing.
*/
symbol?: SimpleLineSymbol | PictureFillSymbol | PictureMarkerSymbol | SimpleFillSymbol | SimpleMarkerSymbol | TextSymbol | Symbol;
}
/**
* Arguments for the "sketching.edit-geometry" operation.
*/
export interface EditGeometryArgs extends GeometryOperationBase {
/**
* The options for this edit operation. Not supported in Mobile. Web only.
*
* @webOnly
*/
options?: EditGeometryOptions;
/**
* Web only. Additional settings that are specific to sketching plugins,
* keyed by plugin ID. The only currently supported plugin is "snapping". A
* boolean value can also be assigned to completely disable, or enable with
* default settings.
*/
pluginSettings?: Record<string, boolean | Record<string, unknown>>;
}
/**
* Options for the "sketching.edit-geometry operation.
*
* @webOnly
*/
export interface EditGeometryOptions {
/**
* Whether to allow deletion of the edited geometry. Defaults to false.
*/
enableDelete?: boolean;
/**
* Whether to allow rotation of the edited geometry. Defaults to true.
*/
enableRotation?: boolean;
/**
* Whether to allow scaling of the edited geometry. Defaults to true.
*/
enableScaling?: boolean;
/**
* Whether to allow the user to toggle to the non-default scale mode.
* Defaults to true.
*/
enableScaleModeToggle?: boolean;
/**
* Whether to allow moving of the edited geometry. Defaults to true. Not
* applicable when editing in 3D.
*/
enableMoving?: boolean;
/**
* Whether to allow the user to add, move, and remove vertices from a
* geometry. Defaults to true.
*/
enableVertexEditing?: boolean;
/**
* Setting "free" allows independent scaling on the x and y axis,
* "preserve-aspect-ratio" constrains scaling to the original aspect ratio.
* Defaults to "preserve-aspect-ratio".
*/
scaleMode?: "free" | "preserve-aspect-ratio";
/**
* Whether the resulting geometry is validated before it's returned from the
* operation. If the geometry is invalid upon completion, an error is
* thrown. Defaults to true.
*/
validateGeometry?: boolean;
/**
* Where to anchor the geometry when performing a free scale operation.
* Defaults to "center".
*/
anchor?: "center" | "opposite";
}
/**
* Result of the "sketching.edit-geometry" operation.
*/
export interface EditGeometryResult extends GeometryOperationBase {
/**
* Any coincident Features that were included in the geometry editing
* session, if topological editing was enabled. Web only.
*/
coincidentFeatures?: Feature[];
/**
* Any coincident Graphics that were included in the geometry editing
* session, if topological editing was enabled. Web only.
*/
coincidentGraphics?: CoincidentEditingGraphicResult[];
}
/**
* The result of a Graphic being coincidentally edited as a part of a editing
* session with topological editing enabled. Web Only.
*/
export interface CoincidentEditingGraphicResult {
/**
* The coincident graphic that was included in an editing session with
* topological editing enabled.
*/
graphic: Graphic;
/**
* A copy of the original geometry of the Graphic, before it was edited.
*/
originalGeometry: GeometryUnion;
}
/**
* Arguments for the "sketching.move-geometry" operation.
*/
export interface MoveGeometryArgs extends GeometryOperationBase {
/**
* An amount to move the geometry on the X and Y axes.
*/
distance: Vector2D;
/**
* The units of the above distance. Optional, will default to the units used
* by the measurement service associated with the map.
*/
units?: LengthUnits;
}
/**
* Arguments for the "sketching.scale-geometry" operation.
*/
export interface ScaleGeometryArgs extends GeometryOperationBase {
/**
* The amount to scale the geometry, specified either uniformly or
* independently on the x and y axis. Point geometries will not be modified
* by this operation.
*/
scale: Vector2D | number;
}
/**
* Arguments for the "sketching.rotate-geometry" operation.
*/
export interface RotateGeometryArgs extends GeometryOperationBase {
/**
* The number of degrees to rotate the geometry.
*/
degrees: number;
/**
* The origin around which to rotate the geometry. Defaults to the centroid.
*/
origin?: Point;
}
/**
* Arguments for the "sketching.stop" operation.
*/
export interface StopGeometryEditArgs {
/**
* The maps on which to stop editing geometry.
*/
maps: MapsLike;
/**
* Whether to validate the geometry before returning it. Defaults to true if
* not set.
*/
validateGeometry?: boolean;
}
/**
* Arguments for the "sketching.add-point" command.
*/
export interface AddPointArgs extends HasMaps {
/**
* The new point to be added.
*/
newPoint: Point;
/**
* The geometry to add the point to, if multiple are present in an active
* editing session. Not supported by Mobile.
*/
geometry?: GeometryUnion;
}
/**
* Arguments for the "sketching.insert-point" command.
*/
export interface InsertPointArgs extends HasMaps {
/**
* The index of the part to which the point will be added. If null, the last
* part will be used.
*/
partIndex?: number;
/**
* The index at which the point will be added. If null, the point will be
* added as the last point.
*/
pointIndex?: number;
/**
* The new point to be added.
*/
newPoint: Point;
/**
* The geometry to add the point to, if multiple are present in an active
* editing session. Not supported by Mobile.
*/
geometry?: GeometryUnion;
}
/**
* Deprecated - Mobile users should rather use "geometry.add-point"; Web users
* should use "sketching.add-point" with {@link AddPointArgs} or
* "sketching.insert-point" with {@link InsertPointArgs} instead.
*
* @deprecated
*/
export interface AddNodeToGeometryArgs extends HasMaps {
/**
* The initial geometry to add the point to. Can be null.
*/
geometry: GeometryUnion;
/**
* The type of geometry to create if the initial geometry is null. In
* VertiGIS Studio Mobile, this value must be 'polygon' or 'polyline'. In
* VertiGIS Studio Web, this value may also be null if the point being added
* is intended to be added to the active sketch.
*/
geometryType: string;
/**
* A point geometry to add to the initial geometry. In VertiGIS Studio Web,
* this value may be null if the intention is to add a point at the position
* of the active point of an active sketch.
*/
node: GeometryUnion;
/**
* Indicates whether the new point should be added before or after the
* active point in the sketch. Not supported by VertiGIS Studio Mobile.
*/
nodeOrder?: AddNodeOrder;
}
/**
* Arguments for the "sketching.delete" command.
*/
export interface DeleteGeometryArgs extends HasMaps {
/**
* The point to remove from the geometry. If this property is defined, the
* 'pointIndex' and 'partIndex' properties are ignored. If no point nor
* pointIndex/partIndex are specified, any active points will be deleted. If
* there are no active points, the entire geometry will be deleted.
*/
point?: Point;
/**
* The geometry to remove a point from. If this property is not specified,
* any active vertices will be deleted.
*/
geometry?: GeometryUnion;
/**
* The index of the point that should be removed from the geometry. If this
* property is defined, the geometry property must also be defined.
*/
pointIndex?: number;
/**
* The index of the part of the geometry that the point should be removed
* from. Required for polyline and polygon geometry types when the geometry
* and pointIndex properties are defined.
*/
partIndex?: number;
}
/**
* Arguments for the "sketching.set-geometry-mode" command.
*/
export interface SetGeometryModeArgs extends HasMaps {
/**
* The geometry mode to switch to. VertiGIS Studio Mobile only supports
* "line" and "area".
*/
editorGeometryMode: EditorGeometryMode | SketchTool;
}
/**
* Arguments for the "sketching.set-interaction-mode" command.
*/
export interface SetInteractionModeArgs extends HasMaps {
/**
* The interaction mode to switch to.
*/
editorInteractionMode: EditorInteractionMode;
}
/**
* Arguments for the "sketching.start-streaming" command.
*/
export interface StartStreamingArgs extends HasMaps {
/**
* An optional value indicating, in seconds, how often points should be
* recorded.
*/
interval?: number;
}
/**
* The editor geometry mode.
*/
export type EditorGeometryMode = "line" | "area";
/**
* The editor interaction mode.
*/
export type EditorInteractionMode = "centerCrosshairMode" | "pointerMode";
/**
* Settings for a sketch.
*/
export interface GeometryEditorSettings {
/**
* Whether snapping should be enabled.
*/
snappingEnabled?: boolean;
/**
* Whether bearing labels should be shown on the map.
*/
showBearings?: boolean;
/**
* The editor geometry mode.
*/
editorGeometryMode?: EditorGeometryMode;
/**
* The editor interaction mode.
*/
editorInteractionMode?: EditorInteractionMode;
/**
* Whether the sketch is using freehand or segment sketching.
*/
freehand?: boolean;
/**
* Whether the sketch should stop when double clicking.
*/
finishOnDoubleClick?: boolean;
/**
* Whether the sketch should commit its geometry if another sketch is
* activated.
*/
finishIfInterrupted?: boolean;
}
/**
* Result returned from the 'sketching.get-active-points' operation.
*/
export interface GetActivePointsResult extends GetActiveSketchResult {
}
/**
* Result returned from the 'sketching.get-active-sketch' operation.
*/
export interface GetActiveSketchResult {
/**
* The active graphic(s).
*/
graphics: Graphic[] | undefined;
/**
* The map associated with the graphics.
*/
maps: MapExtension;
}
/**
* Specifies if a desired point comes before or after a given reference point.
*/
export type PointOffset = "before" | "after";
/**
* Arguments for the 'sketching.get-adjacent-point' operation.
*/
export interface GetAdjacentPointArgs extends HasMaps {
/**
* A point geometry that represents a vertex within an active editing
* graphic.
*/
referencePoint: Point;
/**
* Specifies if the desired point comes before or after the referencePoint.
* Defaults to 'after'.
*/
relativeOffset?: PointOffset;
}
/**
* Arguments for the "sketching.set-constraints" command.
*/
export interface SetConstraintsArgs extends HasMaps {
/**
* The constraint for the length of the line between the selected vertex and
* the new point.
*/
length?: number;
/**
* The constraint for the angle of the line between the selected vertex and
* the new point, relative to the reference line. Remains unchanged until
* set to a different value, or cleared.
*/
angle?: number;
/**
* A reference line that the angle will be relative to. Defaults to 'north'.
* Remains unchanged until set again.
*/
referenceLine?: ReferenceLine;
/**
* Indicates whether constraints will be automatically cleared after a
* vertex is added or updated. If not set (value is null), then the value
* will remain unchanged with this operation. If the value has never been
* set, the default is false. Remains unchanged until set to a different
* value.
*/
autoClear?: boolean;
/**
* The units to be used for length. If not specified, the units of the map's
* spatial reference will be used.
*/
units?: LengthUnitsMobile;
/**
* Indicates whether the distance calculations will be geodetic or planar.
* Default is true.
*/
geodetic?: boolean;
/**
* The geodetic curve type used when calculating the new point. Only applies
* when geodetic is set to true. Defaults to geodesic.
*/
geodeticCurveType?: GeodeticCurveType;
}
/**
* Arguments for the "sketching.clear-constraints" command.
*/
export interface ClearConstraintsArgs extends HasMaps {
/**
* Indicates whether the length constraint should be cleared. Defaults to
* true if not specified.
*/
clearLengthConstraint?: boolean;
/**
* Indicates whether the angle constraint should be cleared. Defaults to
* true if not specified.
*/
clearAngleConstraint?: boolean;
}
/**
* Arguments for the "sketching.set-snapping-configuration" command.
*/
export interface SetSnappingConfigurationArgs extends HasMaps {
/**
* The snapping properties to set.
*/
config: SnappingProperties;
/**
* Whether the config should be replace, or merged. Defaults to "merge".
*/
mode?: "replace" | "merge";
}
/**
* Arguments for the "sketching.set-topology-configuration" command.
*/
export interface SetTopologyConfigurationArgs extends HasMaps {
/**
* The topology properties to set.
*/
config: TopologyProperties;
/**
* Whether the config should be replace, or merged. Defaults to "merge".
*/
mode?: "replace" | "merge";
}
export declare class SketchingOperations extends OperationRegistry {
protected readonly _prefix = "sketching";
/**
* Allows the user to create geometry by sketching on a map. Returns the
* geometry that was drawn, along with the map that it was drawn on.
*/
get captureGeometry(): Operation<CaptureGeometryArgs, CaptureGeometryResult>;
/**
* Allows the user to edit the symbology used by the graphics actively being
* edited. Web only.
*
* @webOnly
*/
get editActiveSymbol(): Operation<void, EditSymbolResult | undefined>;
/**
* Allows the user to edit an existing geometry by drawing on a map. Returns
* the geometry that was edited, or the supplied feature with the altered
* geometry applied, along with the map that it was drawn on.
*/
get editGeometry(): Operation<EditGeometryArgs, EditGeometryResult>;
/**
* Allows the user to move an existing geometry by a specified amount.
* Returns the altered geometry or the supplied feature with altered
* geometry applied. Will also pass through any map or symbol associated
* with the command chain, but only the map is required for this operation.
* Web only.
*
* @webOnly
*/
get moveGeometry(): Operation<MoveGeometryArgs, GeometryOperationBase>;
/**
* Allows the user to scale and mirror an existing geometry on either axis.
* Returns the altered geometry or the supplied feature with altered
* geometry applied. Will also pass through any map or symbol associated
* with the command chain, but they are not required for this operation. Web
* only.
*
* @webOnly
*/
get scaleGeometry(): Operation<ScaleGeometryArgs, GeometryOperationBase>;
/**
* Allows the user to rotate an existing geometry. Returns the altered
* geometry or the supplied feature with altered geometry applied. Will also
* pass through any map or symbol associated with the command chain, but
* they are not required for this operation. Web only.
*
* @webOnly
*/
get rotateGeometry(): Operation<RotateGeometryArgs, GeometryOperationBase>;
/**
* Stops geometry capturing or editing on a given map. Returns the current
* geometry. If validateGeometry parameter is true and geometry is invalid,
* the operation will return null.
*/
get stop(): Operation<StopGeometryEditArgs | void, CaptureGeometryResult>;
/**
* Deprecated - Mobile users should rather use "geometry.add-point"; Web
* users should use "sketching.add-point" or "sketching.insert-point"
* instead.
*
* @deprecated
*/
get addNodeToGeometry(): Operation<AddNodeToGeometryArgs, GeometryUnion>;
/**
* Returns the active sketch graphic from a map. Web only.
*
* @webOnly
*/
get getActiveSketch(): Operation<void, GetActiveSketchResult>;
/**
* Deprecated - use 'sketching.get-active-points' instead. Web only.
*
* @deprecated
* @webOnly
*/
get getActiveNode(): Operation<Maps, GetActivePointsResult>;
/**
* Returns the active point graphics of the active sketch or edit session on
* a map. Web only.
*
* @webOnly
*/
get getActivePoints(): Operation<Maps, GetActivePointsResult>;
/**
* Return the adjacent point graphic(s), relative to a given vertex that's a
* part of an active editing or sketching session. This operation is only
* supported for Polyline and Polygon geometries. Web only.
*
* @webOnly
*/
get getAdjacentPoint(): Operation<GetAdjacentPointArgs, GetActiveSketchResult>;
/**
* Checks whether streaming is active. Mobile only.
*
* @mobileOnly
*/
get isStreaming(): Operation<HasMaps, boolean>;
}
export declare class SketchingCommands extends CommandRegistry {
protected readonly _prefix = "sketching";
/**
* Set the snapping default to 'on' for all subsequent operations. Web only.
*
* @webOnly
*/
get activateSnapping(): Command<void>;
/**
* Set the topology default to 'on' for all subsequent operations. Web only.
*
* @webOnly
*/
get activateTopology(): Command<void>;
/**
* Cancels the current geometry edit or capture operation. Web only.
*
* @webOnly
*/
get cancel(): Command<void>;
/**
* Set the snapping default to 'off' for all subsequent operations. Web
* only.
*
* @webOnly
*/
get deactivateSnapping(): Command<void>;
/**
* Set the topology default to 'off' for all subsequent operations. Web
* only.
*
* @webOnly
*/
get deactivateTopology(): Command<void>;
/**
* Undoes the last edit while editing a geometry.
*/
get undo(): Command<HasMaps>;
/**
* Redoes the last undone edit while editing a geometry.
*/
get redo(): Command<HasMaps>;
/**
* Sets the geometry mode of the geometry editor.
*/
get setGeometryMode(): Command<SetGeometryModeArgs>;
/**
* Sets the global snapping configuration.
*/
get setSnappingConfiguration(): Command<SetSnappingConfigurationArgs>;
/**
* Sets the global snapping configuration. Web only.
*
* @webOnly
*/
get setTopologyConfiguration(): Command<SetTopologyConfigurationArgs>;
/**
* Adds a point at the center of the map while editing a geometry. Works in
* centerCrosshair mode only. Mobile only.
*
* @mobileOnly
*/
get addPointAtCenter(): Command<HasMaps>;
/**
* Adds a point at the user's current location while editing a geometry.
* Mobile only.
*
* @mobileOnly
*/
get addPointAtCurrentLocation(): Command<HasMaps>;
/**
* Sets a point at the user's current location while editing a geometry. In
* this context, "set" means to either add a point at the current location,
* or update the currently selected point to be the user's current location,
* depending on what edit mode the user is in. Mobile only.
*
* @mobileOnly
*/
get setPointAtCurrentLocation(): Command<HasMaps>;
/**
* If a point is supplied while a sketching or editing operation is active,
* the vertex at that point will be deleted from the current geometry. If no
* point is supplied, any active points in the session will be deleted. If
* there are no active points in the session, the entire geometry will be
* deleted.
*/
get delete(): Command<void | DeleteGeometryArgs>;
/**
* Deprecated - use 'sketching.move-point' instead. Web only.
*
* @deprecated
* @webOnly
*/
get moveNode(): Command<MoveNodeArgs>;
/**
* Moves a point within an active sketch to a new location. Web only.
*
* @webOnly
*/
get movePoint(): Command<MovePointArgs>;
/**
* Deprecated - use 'sketching.set-active-points' instead. Web only.
*
* @deprecated
* @webOnly
*/
get switchActiveNode(): Command<SwitchActiveNodeArgs>;
/**
* Switches the active point of an active sketch. Web only.
*
* @webOnly
*/
get setActivePoints(): Command<SetActivePointsArgs>;
/**
* Sets the interaction mode of the geometry editor. Mobile only.
*
* @mobileOnly
*/
get setInteractionMode(): Command<SetInteractionModeArgs>;
/**
* Enables free scaling while editing geometries. Web only.
*
* @webOnly
*/
get enableFreeScaleMode(): Command<void>;
/**
* Disables free scaling while editing geometries. Web only.
*
* @webOnly
*/
get disableFreeScaleMode(): Command<void>;
/**
* Enables more precise inputs while editing geometries. Web only.
*
* @webOnly
*/
get enablePrecisionMode(): Command<void>;
/**
* Disables more precise inputs while editing geometries. Web only.
*
* @webOnly
*/
get disablePrecisionMode(): Command<void>;
/**
* Sets constraints on the active sketch. Mobile only.
*
* @mobileOnly
*/
get setConstraints(): Command<SetConstraintsArgs>;
/**
* Clears constraints that have been previously set. Mobile only.
*
* @mobileOnly
*/
get clearConstraints(): Command<ClearConstraintsArgs>;
/**
* Inserts a point into a polygon, polyline, or multipoint at the specified
* index. If the partIndex is null, then the last part is used. If the
* pointIndex is null, then the new point is inserted at the end.
*/
get insertPoint(): Command<InsertPointArgs>;
/**
* Adds a point to polygon, polyline, or multipoint using the selected index
* as the point to insert after.
*/
get addPoint(): Command<AddPointArgs>;
/**
* Starts streaming: recording your location at regular intervals and adding
* the collected points to the currently active geometry editor. Mobile
* only.
*
* @mobileOnly
*/
get startStreaming(): Command<StartStreamingArgs>;
/**
* Stops streaming. Mobile only.
*
* @mobileOnly
*/
get stopStreaming(): Command<HasMaps>;
}
export declare class SketchingEvents extends EventRegistry {
protected readonly _prefix = "sketching";
/**
* Raised when streaming has begun. Mobile only.
*
* @mobileOnly
*/
get streamingStarted(): Event<HasMaps>;
/**
* Raised when streaming has stopped. Mobile only.
*
* @mobileOnly
*/
get streamingStopped(): Event<HasMaps>;
}