{"version":3,"file":"getCanvasTexture.mjs","sources":["../../../../../../src/rendering/renderers/shared/texture/utils/getCanvasTexture.ts"],"sourcesContent":["import { GlobalResourceRegistry } from '../../../../../utils/pool/GlobalResourceRegistry';\nimport { CanvasSource } from '../sources/CanvasSource';\nimport { Texture } from '../Texture';\n\nimport type { ICanvas } from '../../../../../environment/canvas/ICanvas';\nimport type { CanvasSourceOptions } from '../sources/CanvasSource';\n\nconst canvasCache: Map<ICanvas, Texture<CanvasSource>> = new Map();\n\nGlobalResourceRegistry.register(canvasCache);\n\n/**\n * @param canvas\n * @param options\n * @internal\n */\nexport function getCanvasTexture(canvas: ICanvas, options?: CanvasSourceOptions): Texture<CanvasSource>\n{\n    if (!canvasCache.has(canvas))\n    {\n        const texture = new Texture({\n            source: new CanvasSource({\n                resource: canvas,\n                ...options,\n            })\n        });\n\n        const onDestroy = () =>\n        {\n            if (canvasCache.get(canvas) === texture)\n            {\n                canvasCache.delete(canvas);\n            }\n        };\n\n        texture.once('destroy', onDestroy);\n        texture.source.once('destroy', onDestroy);\n\n        canvasCache.set(canvas, texture);\n    }\n\n    return canvasCache.get(canvas);\n}\n\n/**\n * @param canvas\n * @internal\n */\nexport function hasCachedCanvasTexture(canvas: ICanvas): boolean\n{\n    return canvasCache.has(canvas);\n}\n"],"names":[],"mappings":";;;;;AAOA,MAAM,WAAA,uBAAuD,GAAA,EAAI;AAEjE,sBAAA,CAAuB,SAAS,WAAW,CAAA;AAOpC,SAAS,gBAAA,CAAiB,QAAiB,OAAA,EAClD;AACI,EAAA,IAAI,CAAC,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA,EAC3B;AACI,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ;AAAA,MACxB,MAAA,EAAQ,IAAI,YAAA,CAAa;AAAA,QACrB,QAAA,EAAU,MAAA;AAAA,QACV,GAAG;AAAA,OACN;AAAA,KACJ,CAAA;AAED,IAAA,MAAM,YAAY,MAClB;AACI,MAAA,IAAI,WAAA,CAAY,GAAA,CAAI,MAAM,CAAA,KAAM,OAAA,EAChC;AACI,QAAA,WAAA,CAAY,OAAO,MAAM,CAAA;AAAA,MAC7B;AAAA,IACJ,CAAA;AAEA,IAAA,OAAA,CAAQ,IAAA,CAAK,WAAW,SAAS,CAAA;AACjC,IAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,SAAS,CAAA;AAExC,IAAA,WAAA,CAAY,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA,EACnC;AAEA,EAAA,OAAO,WAAA,CAAY,IAAI,MAAM,CAAA;AACjC;AAMO,SAAS,uBAAuB,MAAA,EACvC;AACI,EAAA,OAAO,WAAA,CAAY,IAAI,MAAM,CAAA;AACjC;;;;"}