{"version":3,"file":"HTMLAudioContext.mjs","sources":["../../src/htmlaudio/HTMLAudioContext.ts"],"sourcesContent":["import { EventEmitter } from 'pixi.js';\nimport { Filter } from '../filters/Filter';\nimport { IMediaContext } from '../interfaces/IMediaContext';\n\n/**\n * The fallback version of WebAudioContext which uses `<audio>` instead of WebAudio API.\n * @memberof htmlaudio\n * @extends PIXI.EventEmitter\n */\nclass HTMLAudioContext extends EventEmitter implements IMediaContext\n{\n    /** Current global speed from 0 to 1 */\n    public speed = 1;\n\n    /** Current muted status of the context */\n    public muted = false;\n\n    /** Current volume from 0 to 1  */\n    public volume = 1;\n\n    /** Current paused status */\n    public paused = false;\n\n    /** Internal trigger when volume, mute or speed changes */\n    public refresh(): void\n    {\n        this.emit('refresh');\n    }\n\n    /** Internal trigger paused changes */\n    public refreshPaused(): void\n    {\n        this.emit('refreshPaused');\n    }\n\n    /**\n     * HTML Audio does not support filters, this is non-functional API.\n     */\n    public get filters(): Filter[]\n    {\n        console.warn('HTML Audio does not support filters');\n\n        return null;\n    }\n    public set filters(_filters: Filter[])\n    {\n        console.warn('HTML Audio does not support filters');\n    }\n\n    /**\n     * HTML Audio does not support `audioContext`\n     * @readonly\n     * @type {AudioContext}\n     */\n    public get audioContext(): AudioContext\n    {\n        console.warn('HTML Audio does not support audioContext');\n\n        return null;\n    }\n\n    /**\n     * Toggles the muted state.\n     * @return The current muted state.\n     */\n    public toggleMute(): boolean\n    {\n        this.muted = !this.muted;\n        this.refresh();\n\n        return this.muted;\n    }\n\n    /**\n     * Toggles the paused state.\n     * @return The current paused state.\n     */\n    public togglePause(): boolean\n    {\n        this.paused = !this.paused;\n        this.refreshPaused();\n\n        return this.paused;\n    }\n\n    /** Destroy and don't use after this */\n    public destroy(): void\n    {\n        this.removeAllListeners();\n    }\n}\n\nexport { HTMLAudioContext };\n"],"names":[],"mappings":";;AASA,MAAM,yBAAyB,YAC/B,CAAA;AAAA,EADA,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAAA;AAGI;AAAA,IAAA,IAAA,CAAO,KAAQ,GAAA,CAAA,CAAA;AAGf;AAAA,IAAA,IAAA,CAAO,KAAQ,GAAA,KAAA,CAAA;AAGf;AAAA,IAAA,IAAA,CAAO,MAAS,GAAA,CAAA,CAAA;AAGhB;AAAA,IAAA,IAAA,CAAO,MAAS,GAAA,KAAA,CAAA;AAAA,GAAA;AAAA;AAAA,EAGT,OACP,GAAA;AACI,IAAA,IAAA,CAAK,KAAK,SAAS,CAAA,CAAA;AAAA,GACvB;AAAA;AAAA,EAGO,aACP,GAAA;AACI,IAAA,IAAA,CAAK,KAAK,eAAe,CAAA,CAAA;AAAA,GAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAW,OACX,GAAA;AACI,IAAA,OAAA,CAAQ,KAAK,qCAAqC,CAAA,CAAA;AAElD,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AAAA,EACA,IAAW,QAAQ,QACnB,EAAA;AACI,IAAA,OAAA,CAAQ,KAAK,qCAAqC,CAAA,CAAA;AAAA,GACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAW,YACX,GAAA;AACI,IAAA,OAAA,CAAQ,KAAK,0CAA0C,CAAA,CAAA;AAEvD,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,UACP,GAAA;AACI,IAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA,CAAA;AACnB,IAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAEb,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,GAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,WACP,GAAA;AACI,IAAK,IAAA,CAAA,MAAA,GAAS,CAAC,IAAK,CAAA,MAAA,CAAA;AACpB,IAAA,IAAA,CAAK,aAAc,EAAA,CAAA;AAEnB,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GAChB;AAAA;AAAA,EAGO,OACP,GAAA;AACI,IAAA,IAAA,CAAK,kBAAmB,EAAA,CAAA;AAAA,GAC5B;AACJ;;;;"}