import type FieldElement from "@arcgis/core/form/elements/FieldElement.js"; import type { Attachment } from "@vertigis/arcgis-extensions/data/Attachment"; import type { Feature } from "@vertigis/arcgis-extensions/data/Feature"; import type { FeatureSource } from "@vertigis/arcgis-extensions/data/FeatureSource"; 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 { Features, File, HasFeatures, HasGeometry, HasLayers, HasMaps, HasUITarget, MapsLike } from "../common.js"; import type { EditGeometryOptions } from "./sketching.js"; /** * Arguments for the "edit.add-attachment" command. "Features" is the feature(s) * the attachment is being added to. */ export interface AddAttachmentArgs extends HasFeatures { /** * The map. * * @deprecated Unused property - will be removed in future versions. */ maps: MapsLike; /** * The name of the attachment. */ name: string; /** * The MIME content type of the attachment. */ contentType: string; /** * The binary data for the attachment. */ data: number[]; } /** * VertiGIS Studio Web's arguments for the "edit.add-attachment" command. Not * supported by Mobile. */ export interface WebAddAttachmentArgs { /** * The feature(s) to add the attachment(s) to. If multiple features are * specified, the attachment(s) will be added to all features. */ features: Features; /** * The blob(s) that contains the file attachment(s). If multiple attachments * are specified, all attachments will be added to the feature(s). */ blobs: File | File[]; } /** * Arguments for the "edit.delete-attachment" command. */ export interface DeleteAttachmentArgs { /** * The feature(s) to remove the attachment(s) from. */ features: Features; /** * The attachment(s) to remove from the feature(s). This property can be * populated with the title(s) or ID(s) of the attachments(s). Any and all * matching attachments found on the input features will be deleted. Web * only. */ attachments?: string[]; /** * The attachment to remove from the feature(s). Mobile only. */ gcxAttachment?: Attachment; } /** * Arguments for various attachment events. */ export interface AttachmentEventArgs { /** * The feature that had an attachment added/updated/deleted. */ feature: Feature; /** * The attachment that was added/updated/deleted. */ attachment: Attachment; } /** * A collection of options common to interactive feature editing sessions. Web * only. */ export interface EditOptions { /** * Whether to show UI notifications. Defaults to `true`. */ showNotifications?: boolean; /** * The orientation of the template picker. Defaults to "vertical". */ orientation?: "horizontal" | "vertical"; /** * Whether to show titles on the template picker. Defaults to `true`. */ showTitles?: boolean; /** * Whether to allow editing of feature geometry. */ editGeometry?: boolean; /** * Whether to allow editing of feature attributes. */ editAttributes?: boolean; /** * Whether to allow editing of feature attachments. */ editAttachments?: boolean; /** * Options for the geometry editing session. */ editGeometryOptions?: EditGeometryOptions; /** * 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>; } /** * Used to update an in-progress interactive feature editing session with new * attributes, attachments or geometry. Web only. */ export interface UpdateSessionArgs extends HasGeometry { /** * A collection of attributes that apply or are to be applied to the * currently edited feature. */ attributes?: Record; /** * An array of attachments that apply or are to be applied to the currently * edited feature. */ attachments?: Attachment[]; } /** * Arguments for the "edit.create-feature" operation. A valid feature layer, * subtype group layer, or subtype sublayer is required. The geometry is * required for non-tabular features. Web only. */ export interface CreateFeatureArgs extends HasGeometry, HasLayers, HasMaps { /** * Whether to show UI notifications. Defaults to `true`. */ showNotifications?: boolean; /** * The orientation of the template picker. Defaults to "vertical". */ orientation?: "horizontal" | "vertical"; /** * Whether to show titles on the template picker. Defaults to `true`. */ showTitles?: boolean; /** * A collection of attributes to apply to the new feature. */ featureAttributes?: Record; /** * The template to use as a starting point for this feature. Requires a * layer. The default or first template will be used if not set. */ templateName?: string; /** * A type id to use as a starting point for this feature. This may return * one or more templates and requires a layer with types defined. */ typeId?: string; } /** * Arguments for the "edit.display-add-feature" command. Web only. */ export interface DisplayAddFeatureArgs extends CreateFeatureArgs, HasMaps, EditOptions { /** * Arguments for the display of the attribute editing form. Web only. */ formUITarget?: HasUITarget; /** * Arguments for the display of the template picker. Web only. */ templateUITarget?: HasUITarget; /** * A collection of configuration overrides for the editable fields. Web * only. */ fieldElements?: FieldElementOverride[]; } /** * Arguments for the "edit.display-add-related-feature" command. A feature and a * relationship ID are supplied as inputs instead of a layer. */ export interface DisplayAddRelatedFeatureArgs extends Omit, HasFeatures { /** * The ID of the relationship to add a feature to. */ relationshipId: string; /** * The feature source for the related feature to create. Mobile only. */ relatedFeatureSource: FeatureSource; } /** * Arguments for the "edit.display-update-features" operation. Web only. */ export interface DisplayUpdateFeatureArgs extends EditCommandArgs, HasGeometry, HasMaps, HasUITarget, EditOptions { /** * A collection of attributes to automatically apply to the updated feature. */ featureAttributes?: Record; /** * A collection of configuration overrides for the editable fields. */ fieldElements?: FieldElementOverride[]; } /** * Arguments for the "edit.add-features", "edit.update-features" and * "edit.delete-features" commands. Web only. */ export interface EditCommandArgs extends HasFeatures { /** * Whether to show UI notifications. Will default to `true`. */ showNotifications?: boolean; } /** * Arguments for the "edit.bulk-attribute-update" command. Web only. */ export interface BulkAttributeUpdateArgs extends HasFeatures { /** * The attributes to update on all features. */ attributes: Record; /** * Optional list of bulk attribute update overrides to the values of * participating and non-participating fields, keyed by feature.id and then * by field name. * * **Example:** Override field `color` and feature with id = * "8a9214f5-aa9e-4bbb-a24a-28cc6f59e0af". * * ``` * { * "8a9214f5-aa9e-4bbb-a24a-28cc6f59e0af": { * "color": "Green" * } * } * ``` */ overrides?: Record>; } /** * Result of a bulk attribute validation. Web only. */ export interface ValidationResult { /** * Whether this validation passed or failed. */ isValid: boolean; /** * Validation message or error details. */ message?: string; } /** * Arguments for bulk attribute pre-validation event. Web only. */ export interface BulkAttributePreValidationEventArgs extends HasFeatures { /** * The attributes that will be applied to the features. */ attributes: Record; /** * Optional list of bulk attribute update overrides to the values of * participating and non-participating fields, keyed by feature.id and then * by field name. * * **Example:** Override field `color` and feature with id = * "8a9214f5-aa9e-4bbb-a24a-28cc6f59e0af". * * ``` * { * "8a9214f5-aa9e-4bbb-a24a-28cc6f59e0af": { * "color": "Green" * } * } * ``` */ overrides?: Record>; } /** * Arguments for bulk attribute validation events. Web only. */ export interface BulkAttributeValidationEventArgs extends HasFeatures { /** * The attributes that will be applied to the features. */ attributes: Record; /** * Array of validation results from different validators. The bulk edit * operation is considered valid only if all results are valid. */ validationResults: ValidationResult[]; } /** * Arguments for bulk attribute completion event. Web only. */ export interface BulkAttributeCompleteEventArgs extends HasFeatures { /** * Whether the bulk attribute update was successful. */ success: boolean; /** * Error message if the update failed. */ error?: string; } /** * Override settings for a field element. */ export type FieldElementOverride = Partial; export declare class EditCommands extends CommandRegistry { protected readonly _prefix = "edit"; /** * Create and add an attachment to a provided feature, using the given * attachment data. */ get addAttachment(): Command; /** * Deletes attachments from feature(s). */ get deleteAttachment(): Command; /** * Adds a feature to a particular layer. `Features` and `EditCommandArgs` * are not supported on Mobile. */ get addFeature(): Command; /** * Cancels active editing sessions and discards any changes. If a feature is * supplied, only the sessions using that feature will be cancelled. Web * only. * * @webOnly */ get cancel(): Command; /** * Completes active editing sessions and submits any changes made to the * attributes, attachments or geometry to the feature source. If a feature * is supplied, only sessions using that feature will complete. Web only. * * @webOnly */ get complete(): Command; /** * Deletes the given feature or features from their feature sources. * `EditCommandArgs` is not supported on Mobile. */ get deleteFeatures(): Command; /** * Begin an interactive feature editing session with a new feature. * `DisplayAddFeatureArgs` is not supported on Mobile. * * **Example:** Create and allow the user to edit a new feature with an * initial attributes collection. If no geometry is provided in context they * will be asked to select one. * * _Note:_ "maps" argument can be the output of a 'Get Map' activity run in * Web by Workflow or coming from a previous operation in the action chain. * When the map and/or layer are provided in the context of a command chain * these parameters can be omitted. * * ``` * { * "editAttributes": true, * "editGeometry": true, * "featureAttributes": { * "ASSET_ID": "WFH001234" * }, * "layers": "Victoria_Fire_Hydrants_8780" * } * ``` */ get displayAddFeature(): Command; /** * Begin an interactive feature editing session for a new related feature. * The specified feature will be the original feature that the new related * feature will be added to in the relationship. * * **Example:** Create and edit a new record on a related table, with the * option to add attachments. Make sure the 'COMMENTS' field is included in * the editable attributes and make it required. * * _Notes:_. * * 1. The feature used here must come from the running viewer, and cannot be an * ad-hoc feature created from a JSON object. For example, you can use * the output of `results.get-active-features`, or the feature provided * in a command chain context. * 2. `editableExpression` and `requiredExpression` both take an Arcade * expression, and here the string "true" is just a simple Arcade * expression that always returns true. You can also use a more complex * expression, or reference one from your webmap. * * ``` * { * "editAttributes": true, * "editAttachments": true, * "relationshipId": "1", * "fieldElements": [ * { * "fieldName": "COMMENTS", * "editableExpression": "true", * "requiredExpression": "true" * } * ] * } * ``` */ get displayAddRelatedFeature(): Command; /** * Begin an interactive feature editing session with an existing feature. * `DisplayUpdateFeatureArgs` is not supported on Mobile. */ get displayUpdateFeature(): Command; /** * Updates a layer feature or features. Edits to the geometry and attributes * of the supplied features will be committed to their respective feature * sources. `Features` and `EditCommandArgs` are not supported on Mobile. */ get updateFeature(): Command; /** * Updates an in-progress interactive feature editing session with new * attributes, attachments, or geometry. These will be immediately applied * to the current session, if one is active. Web only. * * @webOnly */ get updateSession(): Command; /** * Updates multiple features from multiple sources simultaneously. This * command commits the bulk attribute changes directly to the feature * source. Web only. * * @webOnly */ get bulkAttributeUpdate(): Command; /** * Clears a feature's GNSS metadata. This command will clear the well known * GNSS attributes, such as "esrignss_longitude" and "esrignss_latitude". * Mobile only. * * @mobileOnly */ get clearGnssMetadata(): Command; } export declare class EditOperations extends OperationRegistry { protected readonly _prefix = "edit"; /** * Creates a new feature for the supplied feature source from the supplied * configuration. This operation does not add the feature to the source, but * returns the feature for further processing. Web only. * * @webOnly */ get createFeature(): Operation; /** * Automatically populates the well known GNSS attributes from the current * location data. Examples of well known GNSS attributes are * "esrignss_longitude" and "esrignss_latitude". The input feature argument * may be null, in which case a new feature will be created. Returns the * input feature, or a new feature if one was created. Mobile only. * * @mobileOnly */ get updateGnssMetadata(): Operation; } export declare class EditEvents extends EventRegistry { protected readonly _prefix = "edit"; /** * Raised when an attachment is added to a feature. Mobile only. * * @mobileOnly */ get attachmentAdded(): Event; /** * Raised when an attachment is updated. Mobile only. * * @mobileOnly */ get attachmentUpdated(): Event; /** * Raised when an attachment is deleted from a feature. Mobile only. * * @mobileOnly */ get attachmentDeleted(): Event; /** * Raised before bulk attribute update validation occurs, allowing for * modifications to the features. Web only. * * @webOnly */ get bulkAttributeUpdatePreValidation(): Event; /** * Raised when bulk attribute update validation is complete, allowing for * subscribers to perform additional validation and add the results to the * `validationResults` array. If any validations failed, errors will be * displayed to the user and the bulk attribute update will be cancelled. * Web only. * * @webOnly */ get bulkAttributeUpdateValidation(): Event; /** * Raised when a bulk attribute update is complete. Web only. * * @webOnly */ get bulkAttributeUpdateComplete(): Event; /** * Raised when a new feature is added to a feature source. */ get featureAdded(): Event; /** * Raised when a feature is deleted from a feature source. */ get featureDeleted(): Event; /** * Raised when the attributes or geometry of a feature from a feature source * are updated. */ get featureUpdated(): Event; /** * Raised when an interactive feature editing session is updated with new * attributes, attachments, or feature geometry. The payload of this event * represents the current state of that session and has not yet been applied * to the feature. Web only. * * @webOnly */ get sessionUpdated(): Event; }