@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.42 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{_ as t}from"../chunks/tslib.es6.js";import o from"../core/Accessor.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{subclass as e}from"../core/accessorSupport/decorators/subclass.js";import{OperationStatus as r}from"./OperationStatus.js";import{UndoInvalidError as i,ApplyInvalidError as p}from"./UndoRedoError.js";var a;!function(t){t[t.Apply=0]="Apply",t[t.Undo=1]="Undo",t[t.Redo=2]="Redo"}(a||(a={}));let n=class extends o{constructor(){super(...arguments),this.name="",this.tag=Symbol(),this.status=r.NeverApplied}get canUndo(){return this.status===r.Applied}get canRedo(){return this.status===r.Undone}async executeUndoRedoOperation(t){switch(t){case a.Apply:if(this.status!==r.NeverApplied)throw new p;return await this.apply(),void(this.status=r.Applied);case a.Undo:if(this.status!==r.Applied)throw new i;return await this.undo(),void(this.status=r.Undone);case a.Redo:if(this.status!==r.Undone)throw new i;return await this.redo(),void(this.status=r.Applied)}}};t([s()],n.prototype,"name",void 0),t([s()],n.prototype,"tag",void 0),n=t([e("esri.undoredo.UndoableOperation")],n);export{a as UndoRedoExecutionMethod,n as UndoableOperation};