{"version":3,"file":"detectCompressedTextures.mjs","sources":["../../src/loaders/detectCompressedTextures.ts"],"sourcesContent":["import { extensions as ext, ExtensionType, settings } from 'pixijs/core';\n\nimport type { FormatDetectionParser } from 'pixijs/assets';\nimport type { CompressedTextureExtensionRef, CompressedTextureExtensions } from './compressedTextureExtensions';\n\nlet storedGl: WebGLRenderingContext;\nlet extensions: Partial<CompressedTextureExtensions>;\n\nfunction getCompressedTextureExtensions()\n{\n    extensions = {\n        s3tc: storedGl.getExtension('WEBGL_compressed_texture_s3tc'),\n        s3tc_sRGB: storedGl.getExtension('WEBGL_compressed_texture_s3tc_srgb'), /* eslint-disable-line camelcase */\n        etc: storedGl.getExtension('WEBGL_compressed_texture_etc'),\n        etc1: storedGl.getExtension('WEBGL_compressed_texture_etc1'),\n        pvrtc: storedGl.getExtension('WEBGL_compressed_texture_pvrtc')\n            || storedGl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc'),\n        atc: storedGl.getExtension('WEBGL_compressed_texture_atc'),\n        astc: storedGl.getExtension('WEBGL_compressed_texture_astc')\n    } as Partial<CompressedTextureExtensions>;\n}\n\nexport const detectCompressedTextures = {\n    extension: {\n        type: ExtensionType.DetectionParser,\n        priority: 2,\n    },\n    test: async (): Promise<boolean> =>\n    {\n        // Auto-detect WebGL compressed-texture extensions\n        const canvas = settings.ADAPTER.createCanvas();\n        const gl = canvas.getContext('webgl');\n\n        if (!gl)\n        {\n            // #if _DEBUG\n            console.warn('WebGL not available for compressed textures.');\n            // #endif\n\n            return false;\n        }\n\n        storedGl = gl;\n\n        return true;\n    },\n    add: async (formats: string[]): Promise<string[]> =>\n    {\n        if (!extensions) getCompressedTextureExtensions();\n\n        const textureFormats = [];\n\n        // Assign all available compressed-texture formats\n        for (const extensionName in extensions)\n        {\n            const extension = extensions[extensionName as CompressedTextureExtensionRef];\n\n            if (!extension)\n            {\n                continue;\n            }\n\n            textureFormats.push(extensionName);\n        }\n\n        return [...textureFormats, ...formats];\n    },\n    remove: async (formats: string[]): Promise<string[]> =>\n    {\n        if (!extensions) getCompressedTextureExtensions();\n\n        return formats.filter((f) => !(f in extensions));\n    },\n} as FormatDetectionParser;\n\next.add(detectCompressedTextures);\n"],"names":["ext"],"mappings":";;AAKA,IAAI,QAAA,CAAA;AACJ,IAAI,UAAA,CAAA;AAEJ,SACA,8BAAA,GAAA;AACI,EAAa,UAAA,GAAA;AAAA,IACT,IAAA,EAAM,QAAS,CAAA,YAAA,CAAa,+BAA+B,CAAA;AAAA,IAC3D,SAAA,EAAW,QAAS,CAAA,YAAA,CAAa,oCAAoC,CAAA;AAAA,IACrE,GAAA,EAAK,QAAS,CAAA,YAAA,CAAa,8BAA8B,CAAA;AAAA,IACzD,IAAA,EAAM,QAAS,CAAA,YAAA,CAAa,+BAA+B,CAAA;AAAA,IAC3D,OAAO,QAAS,CAAA,YAAA,CAAa,gCAAgC,CACtD,IAAA,QAAA,CAAS,aAAa,uCAAuC,CAAA;AAAA,IACpE,GAAA,EAAK,QAAS,CAAA,YAAA,CAAa,8BAA8B,CAAA;AAAA,IACzD,IAAA,EAAM,QAAS,CAAA,YAAA,CAAa,+BAA+B,CAAA;AAAA,GAC/D,CAAA;AACJ,CAAA;AAEO,MAAM,wBAA2B,GAAA;AAAA,EACpC,SAAW,EAAA;AAAA,IACP,MAAM,aAAc,CAAA,eAAA;AAAA,IACpB,QAAU,EAAA,CAAA;AAAA,GACd;AAAA,EACA,MAAM,YACN;AAEI,IAAM,MAAA,MAAA,GAAS,QAAS,CAAA,OAAA,CAAQ,YAAa,EAAA,CAAA;AAC7C,IAAM,MAAA,EAAA,GAAK,MAAO,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA;AAEpC,IAAA,IAAI,CAAC,EACL,EAAA;AAEI,MAAA,OAAA,CAAQ,KAAK,8CAA8C,CAAA,CAAA;AAG3D,MAAO,OAAA,KAAA,CAAA;AAAA,KACX;AAEA,IAAW,QAAA,GAAA,EAAA,CAAA;AAEX,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AAAA,EACA,GAAA,EAAK,OAAO,OACZ,KAAA;AACI,IAAA,IAAI,CAAC,UAAA;AAAY,MAA+B,8BAAA,EAAA,CAAA;AAEhD,IAAA,MAAM,iBAAiB,EAAC,CAAA;AAGxB,IAAA,KAAA,MAAW,iBAAiB,UAC5B,EAAA;AACI,MAAA,MAAM,YAAY,UAAW,CAAA,aAAA,CAAA,CAAA;AAE7B,MAAA,IAAI,CAAC,SACL,EAAA;AACI,QAAA,SAAA;AAAA,OACJ;AAEA,MAAA,cAAA,CAAe,KAAK,aAAa,CAAA,CAAA;AAAA,KACrC;AAEA,IAAA,OAAO,CAAC,GAAG,cAAgB,EAAA,GAAG,OAAO,CAAA,CAAA;AAAA,GACzC;AAAA,EACA,MAAA,EAAQ,OAAO,OACf,KAAA;AACI,IAAA,IAAI,CAAC,UAAA;AAAY,MAA+B,8BAAA,EAAA,CAAA;AAEhD,IAAA,OAAO,QAAQ,MAAO,CAAA,CAAC,CAAM,KAAA,OAAO,UAAW,CAAA,CAAA,CAAA;AAAA,GACnD;AACJ,EAAA;AAEAA,YAAA,CAAI,IAAI,wBAAwB,CAAA;;;;"}