mirror of
https://github.com/excalidraw/excalidraw.git
synced 2024-11-10 11:35:52 +01: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;
|
||
|
}
|
||
|
}
|