{"version":3,"file":"SpineLoader.mjs","sources":["../src/SpineLoader.ts"],"sourcesContent":["import { ISpineResource, SpineLoaderAbstract } from '@pixi-spine/loader-base';\nimport { BinaryInput, ISkeletonData, ISkeletonParser, TextureAtlas } from '@pixi-spine/base';\nimport * as spine38 from '@pixi-spine/runtime-3.8';\nimport * as spine37 from '@pixi-spine/runtime-3.7';\nimport * as spine41 from '@pixi-spine/runtime-4.1';\nimport { detectSpineVersion, SPINE_VERSION } from './versions';\n\nclass UniBinaryParser implements ISkeletonParser {\n    scale = 1;\n\n    readSkeletonData(atlas: TextureAtlas, dataToParse: Uint8Array): ISkeletonData {\n        let parser: any = null;\n        let version = this.readVersionOldFormat(dataToParse);\n        let ver = detectSpineVersion(version);\n\n        if (ver === SPINE_VERSION.VER38) {\n            parser = new spine38.SkeletonBinary(new spine38.AtlasAttachmentLoader(atlas));\n        }\n        version = this.readVersionNewFormat(dataToParse);\n        ver = detectSpineVersion(version);\n        if (ver === SPINE_VERSION.VER40 || ver === SPINE_VERSION.VER41) {\n            parser = new spine41.SkeletonBinary(new spine41.AtlasAttachmentLoader(atlas));\n        }\n        if (!parser) {\n            const error = `Unsupported version of spine model ${version}, please update pixi-spine`;\n\n            console.error(error);\n        }\n\n        parser.scale = this.scale;\n\n        return parser.readSkeletonData(dataToParse);\n    }\n\n    readVersionOldFormat(dataToParse: Uint8Array) {\n        const input = new BinaryInput(dataToParse);\n        let version;\n\n        try {\n            input.readString();\n            version = input.readString();\n        } catch (e) {\n            version = '';\n        }\n\n        return version || '';\n    }\n\n    readVersionNewFormat(dataToParse: Uint8Array) {\n        const input = new BinaryInput(dataToParse);\n\n        input.readInt32();\n        input.readInt32();\n        let version;\n\n        try {\n            version = input.readString();\n        } catch (e) {\n            version = '';\n        }\n\n        return version || '';\n    }\n}\n\nclass UniJsonParser implements ISkeletonParser {\n    scale = 1;\n\n    readSkeletonData(atlas: TextureAtlas, dataToParse: any): ISkeletonData {\n        const version = dataToParse.skeleton.spine;\n        const ver = detectSpineVersion(version);\n        let parser: any = null;\n\n        if (ver === SPINE_VERSION.VER37) {\n            parser = new spine37.SkeletonJson(new spine37.AtlasAttachmentLoader(atlas));\n        }\n        if (ver === SPINE_VERSION.VER38) {\n            parser = new spine38.SkeletonJson(new spine38.AtlasAttachmentLoader(atlas));\n        }\n        if (ver === SPINE_VERSION.VER40 || ver === SPINE_VERSION.VER41) {\n            parser = new spine41.SkeletonJson(new spine41.AtlasAttachmentLoader(atlas));\n        }\n        if (!parser) {\n            const error = `Unsupported version of spine model ${version}, please update pixi-spine`;\n\n            console.error(error);\n        }\n\n        parser.scale = this.scale;\n\n        return parser.readSkeletonData(dataToParse);\n    }\n}\n\n/**\n * @public\n */\nexport class SpineLoader extends SpineLoaderAbstract<ISkeletonData> {\n    createBinaryParser(): ISkeletonParser {\n        return new UniBinaryParser();\n    }\n\n    createJsonParser(): ISkeletonParser {\n        return new UniJsonParser();\n    }\n\n    parseData(parser: ISkeletonParser, atlas: TextureAtlas, dataToParse: any): ISpineResource<ISkeletonData> {\n        const parserCast = parser as UniBinaryParser | UniJsonParser;\n\n        return {\n            spineData: parserCast.readSkeletonData(atlas, dataToParse),\n            spineAtlas: atlas,\n        };\n    }\n}\n"],"names":[],"mappings":"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"}