{"version":3,"file":"WithPromise.mjs","sources":["../../../../src/animation/utils/WithPromise.ts"],"sourcesContent":["export class WithPromise {\n    /**\n     * The promise and its resolver are only created when `finished` is\n     * first read. Most animations are never awaited, so this saves a\n     * Promise allocation per value animation.\n     */\n    private _finished?: Promise<void>\n\n    private _resolve?: VoidFunction\n\n    private isResolved = false\n\n    get finished() {\n        if (!this._finished) {\n            this._finished = this.isResolved\n                ? Promise.resolve()\n                : new Promise<void>((resolve) => {\n                      this._resolve = resolve\n                  })\n        }\n\n        return this._finished\n    }\n\n    protected updateFinished() {\n        this._finished = this._resolve = undefined\n        this.isResolved = false\n    }\n\n    protected notifyFinished() {\n        this.isResolved = true\n        this._resolve?.()\n    }\n\n    /**\n     * Allows the animation to be awaited.\n     *\n     * @deprecated Use `finished` instead.\n     */\n    then(onResolve: VoidFunction, onReject?: VoidFunction) {\n        return this.finished.then(onResolve, onReject)\n    }\n}\n"],"names":[],"mappings":"MAAa,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QAUY,IAAA,CAAA,UAAU,GAAG,KAAK;IAgC9B;AA9BI,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAClB,kBAAE,OAAO,CAAC,OAAO;AACjB,kBAAE,IAAI,OAAO,CAAO,CAAC,OAAO,KAAI;AAC1B,oBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC3B,gBAAA,CAAC,CAAC;QACZ;QAEA,OAAO,IAAI,CAAC,SAAS;IACzB;IAEU,cAAc,GAAA;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,SAAS;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IAC3B;IAEU,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,IAAI;IACrB;AAEA;;;;AAIG;IACH,IAAI,CAAC,SAAuB,EAAE,QAAuB,EAAA;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;IAClD;AACH;;;;"}