{"version":3,"sources":["jsdelivr-header.js","/npm/stereo-panner-node-polyfill@1.0.2/dist/stereo-panner-node-polyfill.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,CAAE,IACE,MAAM,EAAmB,EAAO,iBAChC,MAAM,EACF,WAAA,CAAY,EAAS,EAAU,CAAE,IAAK,IAClC,KAAK,QAAU,EACf,KAAK,OAAS,KAAK,QAAQ,aAC3B,KAAK,QAAU,KAAK,QAAQ,aAC5B,IAAI,EAAW,EAAQ,IACvB,MAAM,EAAW,KAAK,QAAQ,sBAAsB,GAC9C,EAAS,KAAK,QAAQ,aACtB,EAAS,KAAK,QAAQ,aACtB,EAAS,KAAK,QAAQ,aACtB,EAAS,KAAK,QAAQ,aACtB,EAAU,KAAK,QAAQ,oBAAoB,GAC3C,EAAU,KAAK,QAAQ,oBAAoB,GAC3C,EAAS,KAAK,QAAQ,oBAAoB,GAChD,KAAK,OAAO,QAAQ,GACpB,EAAS,QAAQ,EAAQ,GACzB,EAAS,QAAQ,EAAQ,GACzB,EAAS,QAAQ,EAAQ,GACzB,EAAS,QAAQ,EAAQ,GACzB,EAAO,QAAQ,EAAS,EAAG,GAC3B,EAAO,QAAQ,EAAS,EAAG,GAC3B,EAAO,QAAQ,EAAS,EAAG,GAC3B,EAAO,QAAQ,EAAS,EAAG,GAC3B,EAAQ,QAAQ,EAAQ,EAAG,GAC3B,EAAQ,QAAQ,EAAQ,EAAG,GAC3B,EAAO,QAAQ,KAAK,SACpB,KAAK,IAAM,CACP,SAAI,GACA,OAAO,CACX,EACA,SAAI,CAAM,GACN,EAAO,KAAK,MAAQ,EAAI,KAAK,IAAI,EAAO,GACxC,EAAO,KAAK,OAAS,KAAK,IAAI,EAAO,GACrC,EAAO,KAAK,MAAQ,EAAI,KAAK,IAAI,EAAO,GACxC,EAAO,KAAK,MAAQ,KAAK,IAAI,EAAO,GACpC,EAAW,CACf,GAEJ,KAAK,IAAI,MAAQ,CACrB,CACA,uBAAI,GACA,OAAO,CACX,CACA,OAAA,GACI,KAAK,QAAQ,QAAQ,MAAM,KAAK,QAAS,UAC7C,CACA,UAAA,GACI,KAAK,QAAQ,WAAW,MAAM,KAAK,QAAS,UAChD,CACA,QAAA,GACI,MAAO,kBACX,EAGJ,GAAI,KAAsB,uBAAwB,EAAiB,WAAY,CAC3E,OAAO,eAAe,EAAiB,UAAW,qBAAsB,CACpE,MAAO,WACH,OAAO,IAAI,EAAiB,KAChC,EACA,YAAY,EAAO,UAAU,EAAO,cAAc,IAEtD,IAAI,EAAW,UAAU,UAAU,QACnC,UAAU,UAAU,QAAU,WAC1B,IAAI,EAAO,MAAM,UAAU,MAAM,KAAK,WAClC,EAAK,GAAG,sBACR,EAAK,GAAK,EAAK,GAAG,QACtB,EAAS,MAAM,KAAM,EACzB,EACsB,mBAAX,QAAuD,iBAAvB,OAAO,aAC9C,OAAO,eAAe,EAAkB,OAAO,YAAa,CACxD,MAAO,SAAU,GACb,OAAO,aAAiB,WAAa,EAAM,eAAe,UAC9D,SA1EhB,WA6EmB,IACP,EAAO,iBAAmB,EAElC,CACH,EAjFD,CAiFG","file":"/npm/stereo-panner-node-polyfill@1.0.2/dist/stereo-panner-node-polyfill.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/stereo-panner-node-polyfill@1.0.2/dist/stereo-panner-node-polyfill.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","((window, undefined) => {\n    const BaseAudioContext = window.BaseAudioContext;\n    class StereoPannerNode {\n        constructor(context, options = { pan: 0 }) {\n            this.context = context;\n            this._input = this.context.createGain();\n            this._output = this.context.createGain();\n            let panValue = options.pan;\n            const splitter = this.context.createChannelSplitter(2);\n            const gainL1 = this.context.createGain();\n            const gainL2 = this.context.createGain();\n            const gainR1 = this.context.createGain();\n            const gainR2 = this.context.createGain();\n            const mergerL = this.context.createChannelMerger(2);\n            const mergerR = this.context.createChannelMerger(2);\n            const merger = this.context.createChannelMerger(2);\n            this._input.connect(splitter);\n            splitter.connect(gainL1, 0);\n            splitter.connect(gainL2, 0);\n            splitter.connect(gainR1, 1);\n            splitter.connect(gainR2, 1);\n            gainL1.connect(mergerL, 0, 0);\n            gainR2.connect(mergerL, 0, 0);\n            gainR1.connect(mergerR, 0, 1);\n            gainL2.connect(mergerR, 0, 1);\n            mergerL.connect(merger, 0, 0);\n            mergerR.connect(merger, 0, 1);\n            merger.connect(this._output);\n            this.pan = {\n                get value() {\n                    return panValue;\n                },\n                set value(value) {\n                    gainL1.gain.value = 1 - Math.max(value, 0);\n                    gainR2.gain.value = -Math.min(value, 0);\n                    gainR1.gain.value = 1 + Math.min(value, 0);\n                    gainL2.gain.value = Math.max(value, 0);\n                    panValue = value;\n                },\n            };\n            this.pan.value = panValue;\n        }\n        get _isStereoPannerNode() {\n            return true;\n        }\n        connect() {\n            this._output.connect.apply(this._output, arguments);\n        }\n        disconnect() {\n            this._output.disconnect.apply(this._output, arguments);\n        }\n        toString() {\n            return \"StereoPannerNode\";\n        }\n    }\n    // Install polyfill\n    if (BaseAudioContext && !(\"createStereoPanner\" in BaseAudioContext.prototype)) {\n        Object.defineProperty(BaseAudioContext.prototype, \"createStereoPanner\", {\n            value: function () {\n                return new StereoPannerNode(this);\n            },\n            enumerable: false, writable: false, configurable: true\n        });\n        var _connect = AudioNode.prototype.connect;\n        AudioNode.prototype.connect = function () {\n            var args = Array.prototype.slice.call(arguments);\n            if (args[0]._isStereoPannerNode)\n                args[0] = args[0]._input;\n            _connect.apply(this, args);\n        };\n        if (typeof Symbol === \"function\" && typeof Symbol.hasInstance === \"symbol\") {\n            Object.defineProperty(StereoPannerNode, Symbol.hasInstance, {\n                value: function (value) {\n                    return value instanceof AudioNode && value.pan instanceof AudioParam;\n                }\n            });\n        }\n        if (typeof window !== undefined) {\n            window.StereoPannerNode = StereoPannerNode;\n        }\n    }\n})(window);\n"]}