()
| 38 | // programmatic play() calls work even outside a gesture. |
| 39 | let audioCtx = null; |
| 40 | function ensureAudioCtx() { |
| 41 | const AC = window.AudioContext || window.webkitAudioContext; |
| 42 | if (!AC) return null; |
| 43 | if (!audioCtx) audioCtx = new AC(); |
| 44 | if (audioCtx.state === "suspended") audioCtx.resume().catch(() => {}); |
| 45 | return audioCtx; |
| 46 | } |
| 47 | |
| 48 | |
| 49 | const ICON = { |
no outgoing calls
no test coverage detected