mirror of
https://github.com/Dvorinka/excalidraw-full.git
synced 2026-06-04 14:22:57 +00:00
19 lines
456 B
TypeScript
19 lines
456 B
TypeScript
export class Locker<T extends string> {
|
|
private locks = new Map<T, true>();
|
|
|
|
lock = (lockType: T) => {
|
|
this.locks.set(lockType, true);
|
|
};
|
|
|
|
/** @returns whether no locks remaining */
|
|
unlock = (lockType: T) => {
|
|
this.locks.delete(lockType);
|
|
return !this.isLocked();
|
|
};
|
|
|
|
/** @returns whether some (or specific) locks are present */
|
|
isLocked(lockType?: T) {
|
|
return lockType ? this.locks.has(lockType) : !!this.locks.size;
|
|
}
|
|
}
|