{"version":3,"file":"StereoFilter.mjs","sources":["../../src/filters/StereoFilter.ts"],"sourcesContent":["import { getInstance } from '../instance';\nimport { WebAudioUtils } from '../webaudio/WebAudioUtils';\nimport { Filter } from './Filter';\n\n/**\n * Filter for adding Stereo panning.\n *\n * @memberof filters\n */\nclass StereoFilter extends Filter\n{\n    /** The stereo panning node */\n    private _stereo: StereoPannerNode;\n\n    /** The stereo panning node */\n    private _panner: PannerNode;\n\n    /** The amount of panning, -1 is left, 1 is right, 0 is centered */\n    private _pan: number;\n\n    /** @param pan - The amount of panning, -1 is left, 1 is right, 0 is centered. */\n    constructor(pan = 0)\n    {\n        let stereo: StereoPannerNode;\n        let panner: PannerNode;\n        let destination: AudioNode;\n\n        if (!getInstance().useLegacy)\n        {\n            const { audioContext } = getInstance().context;\n\n            if (audioContext.createStereoPanner)\n            {\n                stereo = audioContext.createStereoPanner();\n                destination = stereo;\n            }\n            else\n            {\n                panner = audioContext.createPanner();\n                panner.panningModel = 'equalpower';\n                destination = panner;\n            }\n        }\n\n        super(destination);\n\n        this._stereo = stereo;\n        this._panner = panner;\n\n        this.pan = pan;\n    }\n\n    /** Set the amount of panning, where -1 is left, 1 is right, and 0 is centered */\n    set pan(value: number)\n    {\n        this._pan = value;\n        if (this._stereo)\n        {\n            WebAudioUtils.setParamValue(this._stereo.pan, value);\n        }\n        else if (this._panner)\n        {\n            this._panner.setPosition(value, 0, 1 - Math.abs(value));\n        }\n    }\n    get pan(): number\n    {\n        return this._pan;\n    }\n\n    public destroy(): void\n    {\n        super.destroy();\n        this._stereo = null;\n        this._panner = null;\n    }\n}\n\nexport { StereoFilter };\n"],"names":[],"mappings":";;;;AASA,MAAM,qBAAqB,MAC3B,CAAA;AAAA;AAAA,EAWI,WAAA,CAAY,MAAM,CAClB,EAAA;AACI,IAAI,IAAA,MAAA,CAAA;AACJ,IAAI,IAAA,MAAA,CAAA;AACJ,IAAI,IAAA,WAAA,CAAA;AAEJ,IAAI,IAAA,CAAC,WAAY,EAAA,CAAE,SACnB,EAAA;AACI,MAAA,MAAM,EAAE,YAAA,EAAiB,GAAA,WAAA,EAAc,CAAA,OAAA,CAAA;AAEvC,MAAA,IAAI,aAAa,kBACjB,EAAA;AACI,QAAA,MAAA,GAAS,aAAa,kBAAmB,EAAA,CAAA;AACzC,QAAc,WAAA,GAAA,MAAA,CAAA;AAAA,OAGlB,MAAA;AACI,QAAA,MAAA,GAAS,aAAa,YAAa,EAAA,CAAA;AACnC,QAAA,MAAA,CAAO,YAAe,GAAA,YAAA,CAAA;AACtB,QAAc,WAAA,GAAA,MAAA,CAAA;AAAA,OAClB;AAAA,KACJ;AAEA,IAAA,KAAA,CAAM,WAAW,CAAA,CAAA;AAEjB,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AAEf,IAAA,IAAA,CAAK,GAAM,GAAA,GAAA,CAAA;AAAA,GACf;AAAA;AAAA,EAGA,IAAI,IAAI,KACR,EAAA;AACI,IAAA,IAAA,CAAK,IAAO,GAAA,KAAA,CAAA;AACZ,IAAA,IAAI,KAAK,OACT,EAAA;AACI,MAAA,aAAA,CAAc,aAAc,CAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,EAAK,KAAK,CAAA,CAAA;AAAA,KACvD,MAAA,IACS,KAAK,OACd,EAAA;AACI,MAAK,IAAA,CAAA,OAAA,CAAQ,YAAY,KAAO,EAAA,CAAA,EAAG,IAAI,IAAK,CAAA,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA,KAC1D;AAAA,GACJ;AAAA,EACA,IAAI,GACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,GAChB;AAAA,EAEO,OACP,GAAA;AACI,IAAA,KAAA,CAAM,OAAQ,EAAA,CAAA;AACd,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AACf,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AAAA,GACnB;AACJ;;;;"}