// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ./chunks/tslib.es6 ./core/Accessor ./core/Collection ./core/reactiveUtils ./core/accessorSupport/decorators/property ./core/has ./core/Logger ./core/RandomLCG ./core/accessorSupport/decorators/subclass ./core/support/UpdatingHandles ./undoredo/OperationStatus ./undoredo/UndoableOperation ./undoredo/UndoRedoError".split(" "),function(b,d,p,l,m,e,t,u,v,q,r,n,g,f){b.UndoRedo=class extends p{constructor(){super(...arguments);this._stack=new l;this._stackPosition=-1;this._updatingHandles= new r.UpdatingHandles}get updating(){return this._updatingHandles.updating}get canUndo(){return this.hasUndo&&!this.updating}get hasUndo(){return 0<=this._stackPosition}get canRedo(){return this.hasRedo&&!this.updating}get hasRedo(){return this._stackPositiona.destroy())}_drainStack(){this._stack.drain(a=>a.destroy());this._stackPosition=-1}async undo(){if(!this.hasUndo)throw new f.UndoInvalidError; if(this.updating)throw new f.UndoRedoUpdatingError;const a=this._stack.getItemAt(this._stackPosition);await this._updatingHandles.addPromise((async()=>{await a.executeUndoRedoOperation(g.UndoRedoExecutionMethod.Undo);--this._stackPosition;a.canRedo||this._truncateForwardStack()})())}async redo(){if(!this.hasRedo)throw new f.RedoInvalidError;if(this.updating)throw new f.UndoRedoUpdatingError;const a=this._stack.getItemAt(this._stackPosition+1);await this._updatingHandles.addPromise((async()=>{await a.executeUndoRedoOperation(g.UndoRedoExecutionMethod.Redo); ++this._stackPosition})())}peekUndo(){return this.canUndo?this._stack.getItemAt(this._stackPosition):null}peekRedo(){return this.canRedo?this._stack.getItemAt(this._stackPosition+1):null}async inject(a){if(this.updating)throw new f.UndoRedoUpdatingError;await this._updatingHandles.addPromise((async()=>{a.status===n.OperationStatus.NeverApplied&&await a.executeUndoRedoOperation(g.UndoRedoExecutionMethod.Apply);a.canUndo?(this._stack.splice(this._stackPosition+1,0,a),this._stackPosition++):-1c.destroy()),this._stackPosition=-1)})())}async add(a){if(this.updating)throw new f.UndoRedoUpdatingError;await this._updatingHandles.addPromise((async()=>{a.status===n.OperationStatus.NeverApplied&&await a.executeUndoRedoOperation(g.UndoRedoExecutionMethod.Apply);-1<=this._stackPosition&&this._truncateForwardStack();a.canUndo?(this._stack.push(a),this._stackPosition=this._stack.length-1):this._drainStack()})())}async removeTagged(a,c=!1){if(!this.updating|| c){await m.whenOnce(()=>!this.updating);c=new l;for(let h=0;hc.length-1&&(this._stackPosition=c.length-1)}}async clear(a=!1){if(this.updating&&!a)throw new f.UndoRedoUpdatingError;await m.whenOnce(()=>!this.updating);this._drainStack()}};d.__decorate([e.property()],b.UndoRedo.prototype,"_stack",void 0);d.__decorate([e.property()], b.UndoRedo.prototype,"_stackPosition",void 0);d.__decorate([e.property()],b.UndoRedo.prototype,"updating",null);d.__decorate([e.property({readOnly:!0})],b.UndoRedo.prototype,"canUndo",null);d.__decorate([e.property({readOnly:!0})],b.UndoRedo.prototype,"hasUndo",null);d.__decorate([e.property({readOnly:!0})],b.UndoRedo.prototype,"canRedo",null);d.__decorate([e.property({readOnly:!0})],b.UndoRedo.prototype,"hasRedo",null);b.UndoRedo=d.__decorate([q.subclass("esri.UndoRedo")],b.UndoRedo);Object.defineProperty(b, Symbol.toStringTag,{value:"Module"})});