Spaces:
Runtime error
Runtime error
| import StartAudioContext from 'startaudiocontext'; | |
| import bowser from 'bowser'; | |
| import log from '../log'; | |
| let AUDIO_CONTEXT; | |
| if (!bowser.msie) { | |
| /** | |
| * AudioContext can be initialized only when user interaction event happens | |
| */ | |
| const event = | |
| typeof document.ontouchstart === 'undefined' ? | |
| 'mousedown' : | |
| 'touchstart'; | |
| const initAudioContext = () => { | |
| document.removeEventListener(event, initAudioContext); | |
| try { | |
| AUDIO_CONTEXT = new (window.AudioContext || window.webkitAudioContext)(); | |
| StartAudioContext(AUDIO_CONTEXT); | |
| } catch (e) { | |
| log.error('could not create shared audio context; sound-related features will not be available', e); | |
| } | |
| }; | |
| document.addEventListener(event, initAudioContext); | |
| } | |
| /** | |
| * Wrap browser AudioContext because we shouldn't create more than one | |
| * @return {AudioContext} The singleton AudioContext | |
| */ | |
| export default function () { | |
| return AUDIO_CONTEXT; | |
| } | |