{"version":3,"file":"PluginSystem.js","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 _DEBUG\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        // #endif\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":["deprecation","ExtensionType","extensions"],"mappings":";;;;;;;AAgBO,MAAM,YACb,CAAA;AAAA,EAqBI,YAAY,QACZ,EAAA;AACI,IAAA,IAAA,CAAK,QAAW,GAAA,QAAA,CAAA;AAOhB,IAAA,IAAA,CAAK,UAAU,EAAC,CAAA;AAGhB,IAAO,MAAA,CAAA,gBAAA,CAAiB,KAAK,OAAS,EAAA;AAAA,MAClC,OAAS,EAAA;AAAA,QACL,UAAY,EAAA,KAAA;AAAA,QACZ,GACA,GAAA;AACI,UAAAA,iBAAA,CAAY,SAAS,wDAAwD,CAAA,CAAA;AAE7E,UAAA,OAAQ,QAAiB,CAAA,OAAA,CAAA;AAAA,SAC7B;AAAA,OACJ;AAAA,MACA,OAAS,EAAA;AAAA,QACL,UAAY,EAAA,KAAA;AAAA,QACZ,GACA,GAAA;AACI,UAAAA,iBAAA,CAAY,SAAS,wDAAwD,CAAA,CAAA;AAE7E,UAAA,OAAQ,QAAiB,CAAA,OAAA,CAAA;AAAA,SAC7B;AAAA,OACJ;AAAA,MACA,WAAa,EAAA;AAAA,QACT,UAAY,EAAA,KAAA;AAAA,QACZ,GACA,GAAA;AACI,UAAAA,iBAAA,CAAY,SAAS,uEAAuE,CAAA,CAAA;AAE5F,UAAA,OAAQ,QAAiB,CAAA,MAAA,CAAA;AAAA,SAC7B;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAAA,GAEL;AAAA,EAMA,IACA,GAAA;AACI,IAAA,MAAM,YAAY,IAAK,CAAA,eAAA,CAAA;AAEvB,IAAA,KAAA,MAAW,KAAK,SAChB,EAAA;AACI,MAAA,IAAA,CAAK,QAAQ,CAAK,CAAA,GAAA,IAAK,SAAU,CAAA,CAAA,CAAA,CAAI,KAAK,QAAQ,CAAA,CAAA;AAAA,KACtD;AAAA,GACJ;AAAA,EAEA,OACA,GAAA;AACI,IAAW,KAAA,MAAA,CAAA,IAAK,KAAK,OACrB,EAAA;AACI,MAAK,IAAA,CAAA,OAAA,CAAQ,GAAG,OAAQ,EAAA,CAAA;AACxB,MAAA,IAAA,CAAK,QAAQ,CAAK,CAAA,GAAA,IAAA,CAAA;AAAA,KACtB;AAAA,GACJ;AACJ,CAAA;AAxFa,aAGF,SAA+B,GAAA;AAAA,EAClC,IAAM,EAAA;AAAA,IACFC,wBAAc,CAAA,cAAA;AAAA,IACdA,wBAAc,CAAA,oBAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA,SAAA;AACV,CAAA,CAAA;AAiFJC,qBAAA,CAAW,IAAI,YAAY,CAAA;;;;"}