{"version":3,"file":"PluginSystem.mjs","sources":["../../src/plugin/PluginSystem.ts"],"sourcesContent":["import { extensions, ExtensionType } from '@pixi/extensions';\nimport { deprecation } from '@pixi/utils';\n\nimport type { ExtensionMetadata } from '@pixi/extensions';\nimport type { IRenderer } from '../IRenderer';\nimport type { ISystem } from '../system/ISystem';\n\nexport interface IRendererPlugins extends GlobalMixins.IRendererPlugins\n{\n    [key: string]: any;\n}\n\n/**\n * Manages the functionality that allows users to extend pixi functionality via additional plugins.\n * @memberof PIXI\n */\nexport class PluginSystem implements ISystem\n{\n    /** @ignore */\n    static extension: ExtensionMetadata = {\n        type: [\n            ExtensionType.RendererSystem,\n            ExtensionType.CanvasRendererSystem\n        ],\n        name: '_plugin',\n    };\n\n    /** @ignore */\n    public rendererPlugins: IRendererPlugins;\n\n    /**\n     * Collection of plugins.\n     * @readonly\n     * @member {object}\n     */\n    public readonly plugins: IRendererPlugins;\n    private renderer: IRenderer;\n\n    constructor(renderer: IRenderer)\n    {\n        this.renderer = renderer;\n\n        /**\n         * Collection of plugins.\n         * @readonly\n         * @member {object}\n         */\n        this.plugins = {};\n\n        if (process.env.DEBUG)\n        {\n            Object.defineProperties(this.plugins, {\n                extract: {\n                    enumerable: false,\n                    get()\n                    {\n                        deprecation('7.0.0', 'renderer.plugins.extract has moved to renderer.extract');\n\n                        return (renderer as any).extract;\n                    },\n                },\n                prepare: {\n                    enumerable: false,\n                    get()\n                    {\n                        deprecation('7.0.0', 'renderer.plugins.prepare has moved to renderer.prepare');\n\n                        return (renderer as any).prepare;\n                    },\n                },\n                interaction: {\n                    enumerable: false,\n                    get()\n                    {\n                        deprecation('7.0.0', 'renderer.plugins.interaction has been deprecated, use renderer.events');\n\n                        return (renderer as any).events;\n                    },\n                },\n            });\n        }\n    }\n\n    /**\n     * Initialize the plugins.\n     * @protected\n     */\n    init(): void\n    {\n        const staticMap = this.rendererPlugins;\n\n        for (const o in staticMap)\n        {\n            this.plugins[o] = new (staticMap[o])(this.renderer);\n        }\n    }\n\n    destroy(): void\n    {\n        for (const o in this.plugins)\n        {\n            this.plugins[o].destroy();\n            this.plugins[o] = null;\n        }\n    }\n}\n\nextensions.add(PluginSystem);\n"],"names":[],"mappings":";;AAgBO,MAAM,aACb;AAAA,EAqBI,YAAY,UACZ;AACS,SAAA,WAAW,UAOhB,KAAK,UAAU,CAIX,GAAA,OAAO,iBAAiB,KAAK,SAAS;AAAA,MAClC,SAAS;AAAA,QACL,YAAY;AAAA,QACZ,MACA;AACgB,iBAAA,YAAA,SAAS,wDAAwD,GAErE,SAAiB;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,SAAS;AAAA,QACL,YAAY;AAAA,QACZ,MACA;AACgB,iBAAA,YAAA,SAAS,wDAAwD,GAErE,SAAiB;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,aAAa;AAAA,QACT,YAAY;AAAA,QACZ,MACA;AACgB,iBAAA,YAAA,SAAS,uEAAuE,GAEpF,SAAiB;AAAA,QAC7B;AAAA,MACJ;AAAA,IAAA,CACH;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OACA;AACI,UAAM,YAAY,KAAK;AAEvB,eAAW,KAAK;AAEP,WAAA,QAAQ,CAAC,IAAI,IAAK,UAAU,CAAC,EAAG,KAAK,QAAQ;AAAA,EAE1D;AAAA,EAEA,UACA;AACI,eAAW,KAAK,KAAK;AAEZ,WAAA,QAAQ,CAAC,EAAE,QAAA,GAChB,KAAK,QAAQ,CAAC,IAAI;AAAA,EAE1B;AACJ;AAzFa,aAGF,YAA+B;AAAA,EAClC,MAAM;AAAA,IACF,cAAc;AAAA,IACd,cAAc;AAAA,EAClB;AAAA,EACA,MAAM;AACV;AAkFJ,WAAW,IAAI,YAAY;"}