aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/UndoManager.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util/UndoManager.ts')
-rw-r--r--src/client/util/UndoManager.ts33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/client/util/UndoManager.ts b/src/client/util/UndoManager.ts
index 534ffd2c8..ce0e7768b 100644
--- a/src/client/util/UndoManager.ts
+++ b/src/client/util/UndoManager.ts
@@ -5,7 +5,7 @@ import { Without } from '../../Utils';
import { RichTextField } from '../../fields/RichTextField';
import { SnappingManager } from './SnappingManager';
-function getBatchName(target: any, key: string | symbol): string {
+function getBatchName(target: (...args: unknown[]) => unknown, key: string | symbol): string {
const keyName = key.toString();
if (target?.constructor?.name) {
return `${target.constructor.name}.${keyName}`;
@@ -13,19 +13,19 @@ function getBatchName(target: any, key: string | symbol): string {
return keyName;
}
-function propertyDecorator(target: any, key: string | symbol) {
+function propertyDecorator(target: (...args: unknown[]) => unknown, key: string | symbol) {
Object.defineProperty(target, key, {
configurable: true,
enumerable: false,
get: function () {
return 5;
},
- set: function (value: any) {
+ set: function (value: (...args: unknown[]) => unknown) {
Object.defineProperty(this, key, {
enumerable: false,
writable: true,
configurable: true,
- value: function (...args: any[]) {
+ value: function (...args: unknown[]) {
const batch = UndoManager.StartBatch(getBatchName(target, key));
try {
return value.apply(this, args);
@@ -38,7 +38,8 @@ function propertyDecorator(target: any, key: string | symbol) {
});
}
-export function undoable(fn: (...args: any[]) => any, batchName: string): (...args: any[]) => any {
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export function undoable<T>(fn: (...args: any[]) => T, batchName: string): (...args: unknown[]) => T {
return function (...fargs) {
const batch = UndoManager.StartBatch(batchName);
try {
@@ -50,13 +51,12 @@ export function undoable(fn: (...args: any[]) => any, batchName: string): (...ar
};
}
+// eslint-disable-next-line no-redeclare, @typescript-eslint/no-explicit-any
export function undoBatch(target: any, key: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any;
-// eslint-disable-next-line no-redeclare
-export function undoBatch(fn: (...args: any[]) => any): (...args: any[]) => any;
-// eslint-disable-next-line no-redeclare
-export function undoBatch(target: any, key?: string | symbol, descriptor?: TypedPropertyDescriptor<any>): any {
+// eslint-disable-next-line no-redeclare, @typescript-eslint/no-explicit-any
+export function undoBatch(target: any, key?: string | symbol, descriptor?: TypedPropertyDescriptor<(...args: any[]) => unknown>): any {
if (!key) {
- return function (...fargs: any[]) {
+ return function (...fargs: unknown[]) {
const batch = UndoManager.StartBatch('');
try {
return target.apply(undefined, fargs);
@@ -71,10 +71,10 @@ export function undoBatch(target: any, key?: string | symbol, descriptor?: Typed
}
const oldFunction = descriptor.value;
- descriptor.value = function (...args: any[]) {
+ descriptor.value = function (...args: unknown[]) {
const batch = UndoManager.StartBatch(getBatchName(target, key));
try {
- return oldFunction.apply(this, args);
+ return oldFunction?.apply(this, args);
} finally {
batch.end();
}
@@ -99,12 +99,12 @@ export namespace UndoManager {
export const undoStack: UndoBatch[] = observable([]);
export const redoStack: UndoBatch[] = observable([]);
export const batchCounter = observable.box(0);
- let _fieldPrinter: (val: any) => string = val => val?.toString();
- export function SetFieldPrinter(printer: (val: any) => string) {
+ let _fieldPrinter: (val: unknown) => string = val => val?.toString?.() || '';
+ export function SetFieldPrinter(printer: (val: unknown) => string) {
_fieldPrinter = printer;
}
- export function AddEvent(event: UndoEvent, value?: any): void {
+ export function AddEvent(event: UndoEvent, value?: unknown): void {
if (currentBatch && batchCounter.get() && !undoing) {
SnappingManager.PrintToConsole &&
console.log(
@@ -220,7 +220,7 @@ export namespace UndoManager {
batch.end();
}
}
- export const UndoTempBatch = action((success: any) => {
+ export const UndoTempBatch = action((success: boolean) => {
if (tempEvents && !success) {
undoing = true;
for (let i = tempEvents.length - 1; i >= 0; i--) {
@@ -243,7 +243,6 @@ export namespace UndoManager {
}
undoing = true;
- // eslint-disable-next-line prettier/prettier
commands
.slice()
.reverse()