1 line
9.2 KiB
Plaintext
1 line
9.2 KiB
Plaintext
{"version":3,"file":"Application.mjs","sources":["../../src/app/Application.ts"],"sourcesContent":["import { extensions, ExtensionType } from '../extensions/Extensions';\nimport { autoDetectRenderer } from '../rendering/renderers/autoDetectRenderer';\nimport { Container } from '../scene/container/Container';\nimport { ApplicationInitHook } from '../utils/global/globalHooks';\nimport { deprecation, v8_0_0 } from '../utils/logging/deprecation';\n\nimport type { Rectangle } from '../maths/shapes/Rectangle';\nimport type { AutoDetectOptions } from '../rendering/renderers/autoDetectRenderer';\nimport type { RendererDestroyOptions } from '../rendering/renderers/shared/system/AbstractRenderer';\nimport type { Renderer } from '../rendering/renderers/types';\nimport type { DestroyOptions } from '../scene/container/destroyTypes';\n\n/**\n * The app module provides a set of classes to use as a starting point when building applications.\n *\n * <aside>This module has a mixin for <code>TickerPlugin</code> and <code>ResizePlugin</code>.\n * These will need to be imported if you are managing your own renderer.</aside>\n *\n * ```js\n * import { Application } from 'pixi.js';\n *\n * const app = new Application();\n *\n * await app.init();\n *\n * // don't forget to add the canvas to the DOM\n * document.body.appendChild(app.canvas);\n * ```\n * @namespace app\n */\n\n/**\n * Any plugin that's usable for Application should contain these methods.\n * @example\n * import { ApplicationPlugin } from 'pixi.js';\n *\n * const plugin: ApplicationPlugin = {\n * init: (options: Partial<ApplicationOptions>) =>\n * {\n * // handle init here, use app options if needed\n * },\n * destroy: () =>\n * {\n * // handle destruction code here\n * }\n * }\n * @memberof app\n * @see {@link app.ApplicationOptions}\n * @ignore\n */\nexport interface ApplicationPlugin\n{\n /**\n * Called when Application is constructed, scoped to Application instance.\n * Passes in `options` as the only argument, which are Application `init()` options.\n * @param {object} options - Application options.\n */\n init(options: Partial<ApplicationOptions>): void;\n /** Called when destroying Application, scoped to Application instance. */\n destroy(): void;\n}\n\n/**\n * Application options supplied to the {@link app.Application#init} method.\n * @memberof app\n * @example\n * import { Application } from 'pixi.js';\n *\n * const app = new Application();\n *\n * await app.init({\n * autoStart: false,\n * resizeTo: window,\n * sharedTicker: true,\n * });\n */\nexport interface ApplicationOptions extends AutoDetectOptions, PixiMixins.ApplicationOptions { }\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Application extends PixiMixins.Application { }\n\n/**\n * Convenience class to create a new PixiJS application.\n *\n * This class automatically creates the renderer, ticker and root container.\n * @example\n * import { Application, Sprite } from 'pixi.js';\n *\n * // Create the application\n * const app = new Application();\n *\n * await app.init({ width: 800, height: 600 });\n *\n * // Add the view to the DOM\n * document.body.appendChild(app.canvas);\n *\n * // ex, add display objects\n * app.stage.addChild(Sprite.from('something.png'));\n * @memberof app\n */\nexport class Application<R extends Renderer = Renderer>\n{\n /**\n * Collection of installed plugins.\n * @alias _plugins\n */\n public static _plugins: ApplicationPlugin[] = [];\n\n /** The root display container that's rendered. */\n public stage: Container = new Container();\n\n /**\n * WebGL renderer if available, otherwise CanvasRenderer.\n * @member {rendering.Renderer}\n */\n public renderer: R;\n\n /** Create new Application instance */\n constructor();\n\n /** @deprecated since 8.0.0 */\n constructor(options?: Partial<ApplicationOptions>);\n\n /** @ignore */\n constructor(...args: [Partial<ApplicationOptions>] | [])\n {\n // #if _DEBUG\n if (args[0] !== undefined)\n {\n deprecation(v8_0_0, 'Application constructor options are deprecated, please use Application.init() instead.');\n }\n // #endif\n }\n\n /**\n * @param options - The optional application and renderer parameters.\n */\n public async init(options?: Partial<ApplicationOptions>)\n {\n // The default options\n options = { ...options };\n\n this.renderer = await autoDetectRenderer(options as ApplicationOptions) as R;\n\n // install plugins here\n Application._plugins.forEach((plugin) =>\n {\n plugin.init.call(this, options);\n });\n }\n\n /** Render the current stage. */\n public render(): void\n {\n this.renderer.render({ container: this.stage });\n }\n\n /**\n * Reference to the renderer's canvas element.\n * @readonly\n * @member {HTMLCanvasElement}\n */\n get canvas(): R['canvas']\n {\n return this.renderer.canvas as R['canvas'];\n }\n\n /**\n * Reference to the renderer's canvas element.\n * @member {HTMLCanvasElement}\n * @deprecated since 8.0.0\n */\n get view(): R['canvas']\n {\n // #if _DEBUG\n deprecation(v8_0_0, 'Application.view is deprecated, please use Application.canvas instead.');\n // #endif\n\n return this.renderer.canvas as R['canvas'];\n }\n\n /**\n * Reference to the renderer's screen rectangle. Its safe to use as `filterArea` or `hitArea` for the whole screen.\n * @readonly\n */\n get screen(): Rectangle\n {\n return this.renderer.screen;\n }\n\n /**\n * Destroys the application and all of its resources.\n * @param {object|boolean}[rendererDestroyOptions=false] - The options for destroying the renderer.\n * @param {boolean}[rendererDestroyOptions.removeView=false] - Removes the Canvas element from the DOM.\n * @param {object|boolean} [options=false] - The options for destroying the stage.\n * @param {boolean} [options.children=false] - If set to true, all the children will have their destroy method\n * called as well. `options` will be passed on to those calls.\n * @param {boolean} [options.texture=false] - Only used for children with textures e.g. Sprites.\n * If options.children is set to true,\n * it should destroy the texture of the child sprite.\n * @param {boolean} [options.textureSource=false] - Only used for children with textures e.g. Sprites.\n * If options.children is set to true,\n * it should destroy the texture source of the child sprite.\n * @param {boolean} [options.context=false] - Only used for children with graphicsContexts e.g. Graphics.\n * If options.children is set to true,\n * it should destroy the context of the child graphics.\n */\n public destroy(rendererDestroyOptions: RendererDestroyOptions = false, options: DestroyOptions = false): void\n {\n // Destroy plugins in the opposite order\n // which they were constructed\n const plugins = Application._plugins.slice(0);\n\n plugins.reverse();\n plugins.forEach((plugin) =>\n {\n plugin.destroy.call(this);\n });\n\n this.stage.destroy(options);\n this.stage = null;\n\n this.renderer.destroy(rendererDestroyOptions);\n this.renderer = null;\n }\n}\n\nextensions.handleByList(ExtensionType.Application, Application._plugins);\nextensions.add(ApplicationInitHook);\n"],"names":[],"mappings":";;;;;;;AAoGO,MAAM,YAAA,GAAN,MAAM,YACb,CAAA;AAAA;AAAA,EAuBI,eAAe,IACf,EAAA;AAhBA;AAAA,IAAO,IAAA,CAAA,KAAA,GAAmB,IAAI,SAAU,EAAA,CAAA;AAkBpC,IAAI,IAAA,IAAA,CAAK,CAAC,CAAA,KAAM,KAChB,CAAA,EAAA;AACI,MAAA,WAAA,CAAY,QAAQ,wFAAwF,CAAA,CAAA;AAAA,KAChH;AAAA,GAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,KAAK,OAClB,EAAA;AAEI,IAAU,OAAA,GAAA,EAAE,GAAG,OAAQ,EAAA,CAAA;AAEvB,IAAK,IAAA,CAAA,QAAA,GAAW,MAAM,kBAAA,CAAmB,OAA6B,CAAA,CAAA;AAGtE,IAAY,YAAA,CAAA,QAAA,CAAS,OAAQ,CAAA,CAAC,MAC9B,KAAA;AACI,MAAO,MAAA,CAAA,IAAA,CAAK,IAAK,CAAA,IAAA,EAAM,OAAO,CAAA,CAAA;AAAA,KACjC,CAAA,CAAA;AAAA,GACL;AAAA;AAAA,EAGO,MACP,GAAA;AACI,IAAA,IAAA,CAAK,SAAS,MAAO,CAAA,EAAE,SAAW,EAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,GAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,MACJ,GAAA;AACI,IAAA,OAAO,KAAK,QAAS,CAAA,MAAA,CAAA;AAAA,GACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,IACJ,GAAA;AAEI,IAAA,WAAA,CAAY,QAAQ,wEAAwE,CAAA,CAAA;AAG5F,IAAA,OAAO,KAAK,QAAS,CAAA,MAAA,CAAA;AAAA,GACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,MACJ,GAAA;AACI,IAAA,OAAO,KAAK,QAAS,CAAA,MAAA,CAAA;AAAA,GACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBO,OAAQ,CAAA,sBAAA,GAAiD,KAAO,EAAA,OAAA,GAA0B,KACjG,EAAA;AAGI,IAAA,MAAM,OAAU,GAAA,YAAA,CAAY,QAAS,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAE5C,IAAA,OAAA,CAAQ,OAAQ,EAAA,CAAA;AAChB,IAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MACjB,KAAA;AACI,MAAO,MAAA,CAAA,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,KAC3B,CAAA,CAAA;AAED,IAAK,IAAA,CAAA,KAAA,CAAM,QAAQ,OAAO,CAAA,CAAA;AAC1B,IAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAA;AAEb,IAAK,IAAA,CAAA,QAAA,CAAS,QAAQ,sBAAsB,CAAA,CAAA;AAC5C,IAAA,IAAA,CAAK,QAAW,GAAA,IAAA,CAAA;AAAA,GACpB;AACJ,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AA7Ha,YAAA,CAMK,WAAgC,EAAC,CAAA;AAN5C,IAAM,WAAN,GAAA,aAAA;AA+HP,UAAA,CAAW,YAAa,CAAA,aAAA,CAAc,WAAa,EAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AACvE,UAAA,CAAW,IAAI,mBAAmB,CAAA;;;;"} |