{"version":3,"file":"TickerPlugin.mjs","sources":["../src/TickerPlugin.ts"],"sourcesContent":["import { extensions, ExtensionType } from 'pixijs/extensions';\nimport { UPDATE_PRIORITY } from './const';\nimport { Ticker } from './Ticker';\n\nimport type { ExtensionMetadata } from 'pixijs/extensions';\n\n/**\n * Middleware for for Application Ticker.\n * @class\n * @memberof PIXI\n */\nexport class TickerPlugin\n{\n    /** @ignore */\n    static extension: ExtensionMetadata = ExtensionType.Application;\n\n    static start: () => void;\n    static stop: () => void;\n    static _ticker: Ticker;\n    static ticker: Ticker;\n\n    /**\n     * Initialize the plugin with scope of application instance\n     * @static\n     * @private\n     * @param {object} [options] - See application options\n     */\n    static init(options?: GlobalMixins.IApplicationOptions): void\n    {\n        // Set default\n        options = Object.assign({\n            autoStart: true,\n            sharedTicker: false,\n        }, options);\n\n        // Create ticker setter\n        Object.defineProperty(this, 'ticker',\n            {\n                set(ticker)\n                {\n                    if (this._ticker)\n                    {\n                        this._ticker.remove(this.render, this);\n                    }\n                    this._ticker = ticker;\n                    if (ticker)\n                    {\n                        ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n                    }\n                },\n                get()\n                {\n                    return this._ticker;\n                },\n            });\n\n        /**\n         * Convenience method for stopping the render.\n         * @method\n         * @memberof PIXI.Application\n         * @instance\n         */\n        this.stop = (): void =>\n        {\n            this._ticker.stop();\n        };\n\n        /**\n         * Convenience method for starting the render.\n         * @method\n         * @memberof PIXI.Application\n         * @instance\n         */\n        this.start = (): void =>\n        {\n            this._ticker.start();\n        };\n\n        /**\n         * Internal reference to the ticker.\n         * @type {PIXI.Ticker}\n         * @name _ticker\n         * @memberof PIXI.Application#\n         * @private\n         */\n        this._ticker = null;\n\n        /**\n         * Ticker for doing render updates.\n         * @type {PIXI.Ticker}\n         * @name ticker\n         * @memberof PIXI.Application#\n         * @default PIXI.Ticker.shared\n         */\n        this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n\n        // Start the rendering\n        if (options.autoStart)\n        {\n            this.start();\n        }\n    }\n\n    /**\n     * Clean up the ticker, scoped to application.\n     * @static\n     * @private\n     */\n    static destroy(): void\n    {\n        if (this._ticker)\n        {\n            const oldTicker = this._ticker;\n\n            this.ticker = null;\n            oldTicker.destroy();\n        }\n    }\n}\n\nextensions.add(TickerPlugin);\n"],"names":[],"mappings":";;;;AAWO,MAAM,YACb,CAAA;AAAA,EAeI,OAAO,KAAK,OACZ,EAAA;AAEI,IAAA,OAAA,GAAU,OAAO,MAAO,CAAA;AAAA,MACpB,SAAW,EAAA,IAAA;AAAA,MACX,YAAc,EAAA,KAAA;AAAA,OACf,OAAO,CAAA,CAAA;AAGV,IAAO,MAAA,CAAA,cAAA,CAAe,MAAM,QACxB,EAAA;AAAA,MACI,IAAI,MACJ,EAAA;AACI,QAAA,IAAI,KAAK,OACT,EAAA;AACI,UAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAO,IAAK,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,SACzC;AACA,QAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,QAAA,IAAI,MACJ,EAAA;AACI,UAAA,MAAA,CAAO,GAAI,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAA,EAAM,gBAAgB,GAAG,CAAA,CAAA;AAAA,SACrD;AAAA,OACJ;AAAA,MACA,GACA,GAAA;AACI,QAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,OAChB;AAAA,KACH,CAAA,CAAA;AAQL,IAAA,IAAA,CAAK,OAAO,MACZ;AACI,MAAA,IAAA,CAAK,QAAQ,IAAK,EAAA,CAAA;AAAA,KACtB,CAAA;AAQA,IAAA,IAAA,CAAK,QAAQ,MACb;AACI,MAAA,IAAA,CAAK,QAAQ,KAAM,EAAA,CAAA;AAAA,KACvB,CAAA;AASA,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AASf,IAAA,IAAA,CAAK,SAAS,OAAQ,CAAA,YAAA,GAAe,MAAO,CAAA,MAAA,GAAS,IAAI,MAAO,EAAA,CAAA;AAGhE,IAAA,IAAI,QAAQ,SACZ,EAAA;AACI,MAAA,IAAA,CAAK,KAAM,EAAA,CAAA;AAAA,KACf;AAAA,GACJ;AAAA,EAOA,OAAO,OACP,GAAA;AACI,IAAA,IAAI,KAAK,OACT,EAAA;AACI,MAAA,MAAM,YAAY,IAAK,CAAA,OAAA,CAAA;AAEvB,MAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAA;AACd,MAAA,SAAA,CAAU,OAAQ,EAAA,CAAA;AAAA,KACtB;AAAA,GACJ;AACJ,CAAA;AAxGI,YAHS,CAGF,YAA+B,aAAc,CAAA,WAAA,CAAA;AA0GxD,UAAA,CAAW,IAAI,YAAY,CAAA;;;;"}