aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/UndoManager.ts
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-04-08 21:58:34 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-04-08 21:58:34 -0400
commite963f324fe8436ff5fc8ee21cdf091b6265690f9 (patch)
treeb6a4255bd3a0a3c30504639f3e0e7a48ebadd420 /src/client/util/UndoManager.ts
parent0c76a60386cc0693b1572b5a8cf23b37243e5ab7 (diff)
parenta2135bcc0a995378aad0e71ade832a4d526a37f0 (diff)
Merge branch 'master' of github-tsch-brown:browngraphicslab/Dash-Web into propsRefactor
Diffstat (limited to 'src/client/util/UndoManager.ts')
-rw-r--r--src/client/util/UndoManager.ts22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/client/util/UndoManager.ts b/src/client/util/UndoManager.ts
index bdc77f1ba..b4ea4acae 100644
--- a/src/client/util/UndoManager.ts
+++ b/src/client/util/UndoManager.ts
@@ -35,7 +35,20 @@ function propertyDecorator(target: any, key: string | symbol) {
}
})
}
-export function undoBatch(target: any, key: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any {
+
+export function undoBatch(target: any, key: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any;
+export function undoBatch(fn: (...args: any[]) => any): (...args: any[]) => any;
+export function undoBatch(target: any, key?: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any {
+ if (!key) {
+ return function () {
+ let batch = UndoManager.StartBatch("");
+ try {
+ return target.apply(undefined, arguments)
+ } finally {
+ batch.end();
+ }
+ }
+ }
if (!descriptor) {
propertyDecorator(target, key);
return;
@@ -129,8 +142,11 @@ export namespace UndoManager {
export function RunInBatch(fn: () => void, batchName: string) {
let batch = StartBatch(batchName);
- fn();
- batch.end();
+ try {
+ fn();
+ } finally {
+ batch.end();
+ }
}
export const Undo = action(() => {