mirror of
https://github.com/SamEyeBam/animate.git
synced 2025-09-28 15:05:25 +00:00
larry babby and threejs for glsl
This commit is contained in:
52
webGl/my-threejs-test/node_modules/@parcel/events/src/Disposable.js
generated
vendored
Normal file
52
webGl/my-threejs-test/node_modules/@parcel/events/src/Disposable.js
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
// @flow strict-local
|
||||
|
||||
import type {IDisposable} from './types';
|
||||
|
||||
import invariant from 'assert';
|
||||
import {AlreadyDisposedError} from './errors';
|
||||
|
||||
type DisposableLike = IDisposable | (() => mixed);
|
||||
|
||||
/*
|
||||
* A general-purpose disposable class. It can normalize disposable-like values
|
||||
* (such as single functions or IDisposables), as well as hold multiple
|
||||
* disposable-like values to be disposed of at once.
|
||||
*/
|
||||
export default class Disposable implements IDisposable {
|
||||
disposed: boolean = false;
|
||||
#disposables /*: ?Set<DisposableLike> */;
|
||||
|
||||
constructor(...disposables: Array<DisposableLike>) {
|
||||
this.#disposables = new Set(disposables);
|
||||
}
|
||||
|
||||
add(...disposables: Array<DisposableLike>): void {
|
||||
if (this.disposed) {
|
||||
throw new AlreadyDisposedError(
|
||||
'Cannot add new disposables after disposable has been disposed',
|
||||
);
|
||||
}
|
||||
|
||||
invariant(this.#disposables != null);
|
||||
for (let disposable of disposables) {
|
||||
this.#disposables.add(disposable);
|
||||
}
|
||||
}
|
||||
|
||||
async dispose(): Promise<void> {
|
||||
if (this.disposed) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.disposed = true;
|
||||
|
||||
invariant(this.#disposables != null);
|
||||
await Promise.all(
|
||||
[...this.#disposables].map(disposable =>
|
||||
typeof disposable === 'function' ? disposable() : disposable.dispose(),
|
||||
),
|
||||
);
|
||||
|
||||
this.#disposables = null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user