@capgo/native-audio 8.2.12 → 8.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/audio-asset.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst NativeAudio = registerPlugin('NativeAudio', {\n web: () => import('./web').then((m) => new m.NativeAudioWeb()),\n});\nexport * from './definitions';\nexport { NativeAudio };\n//# sourceMappingURL=index.js.map","export class AudioAsset {\n constructor(audio) {\n this.audio = audio;\n }\n}\n//# sourceMappingURL=audio-asset.js.map","import { WebPlugin } from '@capacitor/core';\nimport { AudioAsset } from './audio-asset';\nexport class NativeAudioWeb extends WebPlugin {\n constructor() {\n super();\n }\n async resume(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (audio.paused) {\n return audio.play();\n }\n }\n async pause(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return audio.pause();\n }\n async setCurrentTime(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.currentTime = options.time;\n return;\n }\n async getCurrentTime(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { currentTime: audio.currentTime };\n }\n async getDuration(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (Number.isNaN(audio.duration)) {\n throw 'no duration available';\n }\n if (!Number.isFinite(audio.duration)) {\n throw 'duration not available => media resource is streaming';\n }\n return { duration: audio.duration };\n }\n async configure(options) {\n throw `configure is not supported for web: ${JSON.stringify(options)}`;\n }\n async isPreloaded(options) {\n try {\n return { found: !!this.getAudioAsset(options.assetId) };\n }\n catch (e) {\n return { found: false };\n }\n }\n async preload(options) {\n var _a;\n if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {\n throw 'AssetId already exists. Unload first if like to change!';\n }\n if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {\n throw 'no assetPath provided';\n }\n if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {\n const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';\n options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;\n }\n const audio = new Audio(options.assetPath);\n audio.autoplay = false;\n audio.loop = false;\n audio.preload = 'auto';\n if (options.volume) {\n audio.volume = options.volume;\n }\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));\n }\n async playOnce(options) {\n var _a;\n // Generate a unique temporary asset ID\n const assetId = `playOnce_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n NativeAudioWeb.playOnceAssets.add(assetId);\n const autoPlay = options.autoPlay !== false; // Default to true\n const deleteAfterPlay = (_a = options.deleteAfterPlay) !== null && _a !== void 0 ? _a : false;\n try {\n // Preload the asset\n await this.preload({\n assetId,\n assetPath: options.assetPath,\n volume: options.volume,\n isUrl: options.isUrl,\n });\n // Set up automatic cleanup on completion\n const audio = this.getAudioAsset(assetId).audio;\n const cleanupHandler = async () => {\n try {\n // Unload the asset\n await this.unload({ assetId });\n NativeAudioWeb.playOnceAssets.delete(assetId);\n // Delete file if requested (Web can't actually delete files from disk)\n // This is a no-op on web, but we keep the interface consistent\n if (deleteAfterPlay) {\n console.warn('[NativeAudio] deleteAfterPlay is not supported on web platform. File deletion is ignored.');\n }\n }\n catch (error) {\n console.error('[NativeAudio] Error during playOnce cleanup:', error);\n }\n };\n audio.addEventListener('ended', cleanupHandler, { once: true });\n // Handle errors during playback - cleanup if play fails\n audio.addEventListener('error', () => {\n cleanupHandler().catch((error) => {\n console.error('[NativeAudio] Error during error cleanup:', error);\n });\n }, { once: true });\n // Auto-play if requested\n if (autoPlay) {\n await this.play({ assetId });\n }\n return { assetId };\n }\n catch (error) {\n // Cleanup on failure\n try {\n await this.unload({ assetId });\n NativeAudioWeb.playOnceAssets.delete(assetId);\n }\n catch (_b) {\n // Ignore cleanup errors\n }\n throw error;\n }\n }\n onEnded(assetId) {\n this.notifyListeners('complete', { assetId });\n }\n async play(options) {\n const { assetId, time = 0 } = options;\n const audio = this.getAudioAsset(assetId).audio;\n await this.stop(options);\n audio.loop = false;\n audio.currentTime = time;\n audio.addEventListener('ended', () => this.onEnded(assetId), {\n once: true,\n });\n return audio.play();\n }\n async loop(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n await this.stop(options);\n audio.loop = true;\n return audio.play();\n }\n async stop(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.pause();\n audio.loop = false;\n audio.currentTime = 0;\n }\n async unload(options) {\n await this.stop(options);\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);\n }\n async setVolume(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {\n throw 'no volume provided';\n }\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.volume = options.volume;\n }\n async setRate(options) {\n if (typeof (options === null || options === void 0 ? void 0 : options.rate) !== 'number') {\n throw 'no rate provided';\n }\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.playbackRate = options.rate;\n }\n async isPlaying(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { isPlaying: !audio.paused };\n }\n async clearCache() {\n // Web audio doesn't have a persistent cache to clear\n return;\n }\n getAudioAsset(assetId) {\n this.checkAssetId(assetId);\n if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {\n throw `no asset for assetId \"${assetId}\" available. Call preload first!`;\n }\n return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);\n }\n checkAssetId(assetId) {\n if (typeof assetId !== 'string') {\n throw 'assetId must be a string';\n }\n if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {\n throw 'no assetId provided';\n }\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n async deinitPlugin() {\n // Stop and unload all audio assets\n for (const [assetId] of NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID) {\n await this.unload({ assetId });\n }\n return;\n }\n}\nNativeAudioWeb.FILE_LOCATION = '';\nNativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();\nNativeAudioWeb.playOnceAssets = new Set();\nconst NativeAudio = new NativeAudioWeb();\nexport { NativeAudio };\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/audio-asset.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst NativeAudio = registerPlugin('NativeAudio', {\n web: () => import('./web').then((m) => new m.NativeAudioWeb()),\n});\nexport * from './definitions';\nexport { NativeAudio };\n//# sourceMappingURL=index.js.map","export class AudioAsset {\n constructor(audio) {\n this.audio = audio;\n }\n}\n//# sourceMappingURL=audio-asset.js.map","import { WebPlugin } from '@capacitor/core';\nimport { AudioAsset } from './audio-asset';\nexport class NativeAudioWeb extends WebPlugin {\n constructor() {\n super();\n this.debugMode = false;\n this.currentTimeIntervals = new Map();\n this.zeroVolume = 0.0001;\n }\n async resume(options) {\n var _a, _b;\n const audio = this.getAudioAsset(options.assetId).audio;\n const data = this.getAudioAssetData(options.assetId);\n const targetVolume = (_b = (_a = data.volumeBeforePause) !== null && _a !== void 0 ? _a : data.volume) !== null && _b !== void 0 ? _b : 1;\n if (options.fadeIn) {\n const fadeDuration = options.fadeInDuration || NativeAudioWeb.DEFAULT_FADE_DURATION_SEC;\n this.doFadeIn(audio, fadeDuration, targetVolume);\n }\n else if (audio.volume <= this.zeroVolume) {\n audio.volume = targetVolume;\n this.setGainNodeVolume(audio, targetVolume);\n }\n this.clearFadeOutToStopTimer(options.assetId);\n return this.doResume(options.assetId);\n }\n async doResume(assetId) {\n const audio = this.getAudioAsset(assetId).audio;\n this.startCurrentTimeUpdates(assetId);\n if (audio.paused) {\n return audio.play();\n }\n }\n async pause(options) {\n var _a;\n const audio = this.getAudioAsset(options.assetId).audio;\n this.cancelGainNodeRamp(audio);\n const data = this.getAudioAssetData(options.assetId);\n data.volumeBeforePause = (_a = data.volume) !== null && _a !== void 0 ? _a : audio.volume;\n this.setAudioAssetData(options.assetId, data);\n if (!audio.paused && options.fadeOut) {\n const fadeOutDuration = options.fadeOutDuration || NativeAudioWeb.DEFAULT_FADE_DURATION_SEC;\n this.doFadeOut(audio, fadeOutDuration);\n data.fadeOutToStopTimer = window.setTimeout(() => {\n this.doPause(options.assetId).catch(() => {\n // no-op\n });\n }, fadeOutDuration * 1000);\n this.setAudioAssetData(options.assetId, data);\n return;\n }\n return this.doPause(options.assetId);\n }\n async doPause(assetId) {\n const audio = this.getAudioAsset(assetId).audio;\n this.clearFadeOutToStopTimer(assetId);\n this.stopCurrentTimeUpdates(assetId);\n audio.pause();\n }\n async setCurrentTime(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.currentTime = options.time;\n }\n async getCurrentTime(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { currentTime: audio.currentTime };\n }\n async getDuration(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n if (Number.isNaN(audio.duration)) {\n throw 'no duration available';\n }\n if (!Number.isFinite(audio.duration)) {\n throw 'duration not available => media resource is streaming';\n }\n return { duration: audio.duration };\n }\n async setDebugMode(options) {\n this.debugMode = options.enabled;\n if (this.debugMode) {\n this.logInfo('Debug mode enabled');\n }\n }\n async configure(options) {\n throw `configure is not supported for web: ${JSON.stringify(options)}`;\n }\n async isPreloaded(options) {\n try {\n return { found: !!this.getAudioAsset(options.assetId) };\n }\n catch (_a) {\n return { found: false };\n }\n }\n async preload(options) {\n var _a;\n this.logInfo(`Preloading audio asset with options: ${JSON.stringify(options)}`);\n if (NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(options.assetId)) {\n throw 'AssetId already exists. Unload first if like to change!';\n }\n if (!((_a = options.assetPath) === null || _a === void 0 ? void 0 : _a.length)) {\n throw 'no assetPath provided';\n }\n NativeAudioWeb.AUDIO_PRELOAD_OPTIONS_MAP.set(options.assetId, options);\n await new Promise((resolve, reject) => {\n var _a;\n if (!options.isUrl && !new RegExp('^/?' + NativeAudioWeb.FILE_LOCATION).test(options.assetPath)) {\n const slashPrefix = options.assetPath.startsWith('/') ? '' : '/';\n options.assetPath = `${NativeAudioWeb.FILE_LOCATION}${slashPrefix}${options.assetPath}`;\n }\n const audio = document.createElement('audio');\n audio.id = options.assetId;\n audio.crossOrigin = 'anonymous';\n audio.src = options.assetPath;\n audio.autoplay = false;\n audio.loop = false;\n audio.preload = 'metadata';\n audio.addEventListener('loadedmetadata', () => {\n resolve();\n });\n audio.addEventListener('error', (errEvt) => {\n this.logError(`Error loading audio file: ${options.assetPath}, error: ${String(errEvt)}`);\n reject('Error loading audio file');\n });\n const data = this.getAudioAssetData(options.assetId);\n if (typeof options.volume === 'number') {\n audio.volume = options.volume;\n data.volume = options.volume;\n }\n else {\n data.volume = audio.volume;\n }\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.set(options.assetId, new AudioAsset(audio));\n this.setAudioAssetData(options.assetId, data);\n this.setGainNodeVolume(audio, (_a = data.volume) !== null && _a !== void 0 ? _a : 1);\n });\n }\n async playOnce(options) {\n var _a;\n const assetId = `playOnce_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n NativeAudioWeb.playOnceAssets.add(assetId);\n const autoPlay = options.autoPlay !== false;\n const deleteAfterPlay = (_a = options.deleteAfterPlay) !== null && _a !== void 0 ? _a : false;\n try {\n await this.preload({\n assetId,\n assetPath: options.assetPath,\n volume: options.volume,\n isUrl: options.isUrl,\n });\n const cleanupHandler = async () => {\n try {\n await this.unload({ assetId });\n NativeAudioWeb.playOnceAssets.delete(assetId);\n if (deleteAfterPlay) {\n console.warn('[NativeAudio] deleteAfterPlay is not supported on web platform. File deletion is ignored.');\n }\n }\n catch (error) {\n console.error('[NativeAudio] Error during playOnce cleanup:', error);\n }\n };\n if (autoPlay) {\n await this.doPlay({ assetId, volume: options.volume }, false);\n }\n const currentAudio = this.getAudioAsset(assetId).audio;\n currentAudio.addEventListener('ended', () => {\n cleanupHandler().catch((error) => {\n console.error('[NativeAudio] Error during ended cleanup:', error);\n });\n }, { once: true });\n currentAudio.addEventListener('error', () => {\n cleanupHandler().catch((error) => {\n console.error('[NativeAudio] Error during error cleanup:', error);\n });\n }, { once: true });\n return { assetId };\n }\n catch (error) {\n try {\n await this.unload({ assetId });\n NativeAudioWeb.playOnceAssets.delete(assetId);\n }\n catch (_b) {\n // Ignore cleanup errors\n }\n throw error;\n }\n }\n onEnded(assetId) {\n this.logDebug(`Playback ended for assetId: ${assetId}`);\n this.notifyListeners('complete', { assetId });\n }\n async play(options) {\n this.logInfo(`Playing audio asset with options: ${JSON.stringify(options)}`);\n this.clearFadeOutToStopTimer(options.assetId);\n const { delay = 0 } = options;\n if (delay > 0) {\n const data = this.getAudioAssetData(options.assetId);\n data.startTimer = window.setTimeout(() => {\n this.doPlay(options).catch((error) => {\n this.logError(`Delayed play failed: ${String(error)}`);\n });\n data.startTimer = undefined;\n this.setAudioAssetData(options.assetId, data);\n }, delay * 1000);\n this.setAudioAssetData(options.assetId, data);\n return;\n }\n await this.doPlay(options);\n }\n async doPlay(options, recreateAudioElement = true) {\n const { assetId, time = 0 } = options;\n if (!NativeAudioWeb.AUDIO_PRELOAD_OPTIONS_MAP.has(assetId)) {\n throw `no asset for assetId \"${assetId}\" available. Call preload first!`;\n }\n if (recreateAudioElement) {\n const preloadOptions = NativeAudioWeb.AUDIO_PRELOAD_OPTIONS_MAP.get(assetId);\n await this.unload({ assetId });\n await this.preload(preloadOptions);\n }\n const audio = this.getAudioAsset(assetId).audio;\n audio.id = assetId;\n audio.loop = false;\n audio.currentTime = time;\n audio.addEventListener('ended', () => this.onEnded(assetId), {\n once: true,\n });\n const data = this.getAudioAssetData(assetId);\n if (typeof options.volume === 'number') {\n audio.volume = options.volume;\n data.volume = options.volume;\n this.setGainNodeVolume(audio, options.volume);\n }\n else if (typeof data.volume !== 'number') {\n data.volume = audio.volume;\n }\n await audio.play();\n this.startCurrentTimeUpdates(assetId);\n if (options.fadeIn) {\n this.logDebug(`Fading in audio asset with assetId: ${assetId}`);\n const fadeDuration = options.fadeInDuration || NativeAudioWeb.DEFAULT_FADE_DURATION_SEC;\n this.doFadeIn(audio, fadeDuration);\n }\n if (options.fadeOut && !Number.isNaN(audio.duration) && Number.isFinite(audio.duration)) {\n this.logDebug(`Scheduling fade out for audio asset with assetId: ${assetId}`);\n const fadeOutDuration = options.fadeOutDuration || NativeAudioWeb.DEFAULT_FADE_DURATION_SEC;\n const fadeOutStartTime = options.fadeOutStartTime || audio.duration - fadeOutDuration;\n data.fadeOut = true;\n data.fadeOutStartTime = fadeOutStartTime;\n data.fadeOutDuration = fadeOutDuration;\n }\n this.setAudioAssetData(assetId, data);\n }\n doFadeIn(audio, fadeDuration, targetVolume) {\n var _a;\n const data = this.getAudioAssetData(audio.id);\n this.setGainNodeVolume(audio, this.zeroVolume);\n const fadeToVolume = (_a = targetVolume !== null && targetVolume !== void 0 ? targetVolume : data.volume) !== null && _a !== void 0 ? _a : 1;\n this.linearRampGainNodeVolume(audio, fadeToVolume, fadeDuration);\n data.fadeInTimer = window.setTimeout(() => {\n data.fadeInTimer = undefined;\n this.setAudioAssetData(audio.id, data);\n }, fadeDuration * 1000);\n this.setAudioAssetData(audio.id, data);\n }\n doFadeOut(audio, fadeDuration) {\n this.linearRampGainNodeVolume(audio, this.zeroVolume, fadeDuration);\n }\n async loop(options) {\n this.logInfo(`Looping audio asset with options: ${JSON.stringify(options)}`);\n const audio = this.getAudioAsset(options.assetId).audio;\n this.reset(audio);\n audio.loop = true;\n this.startCurrentTimeUpdates(options.assetId);\n return audio.play();\n }\n async stop(options) {\n this.logInfo(`Stopping audio asset with options: ${JSON.stringify(options)}`);\n const audio = this.getAudioAsset(options.assetId).audio;\n const data = this.getAudioAssetData(options.assetId);\n this.clearFadeOutToStopTimer(options.assetId);\n this.cancelGainNodeRamp(audio);\n if (!audio.paused && options.fadeOut) {\n const fadeDuration = options.fadeOutDuration || NativeAudioWeb.DEFAULT_FADE_DURATION_SEC;\n this.doFadeOut(audio, fadeDuration);\n data.fadeOutToStopTimer = window.setTimeout(() => {\n this.doStop(audio, options);\n }, fadeDuration * 1000);\n this.setAudioAssetData(options.assetId, data);\n return;\n }\n this.doStop(audio, options);\n }\n doStop(audio, options) {\n audio.pause();\n this.onEnded(options.assetId);\n this.reset(audio);\n }\n reset(audio) {\n var _a;\n audio.currentTime = 0;\n for (const [assetId, asset] of NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.entries()) {\n if (asset.audio === audio) {\n this.stopCurrentTimeUpdates(assetId);\n this.clearFadeOutToStopTimer(assetId);\n this.clearStartTimer(assetId);\n this.cancelGainNodeRamp(audio);\n const data = this.getAudioAssetData(assetId);\n const initialVolume = (_a = data.volume) !== null && _a !== void 0 ? _a : 1;\n this.setGainNodeVolume(audio, initialVolume);\n this.setAudioAssetData(assetId, data);\n break;\n }\n }\n }\n clearFadeOutToStopTimer(assetId) {\n const data = this.getAudioAssetData(assetId);\n if (data.fadeOutToStopTimer) {\n clearTimeout(data.fadeOutToStopTimer);\n data.fadeOutToStopTimer = undefined;\n this.setAudioAssetData(assetId, data);\n }\n }\n clearStartTimer(assetId) {\n const data = this.getAudioAssetData(assetId);\n if (data.startTimer) {\n clearTimeout(data.startTimer);\n data.startTimer = undefined;\n this.setAudioAssetData(assetId, data);\n }\n }\n async unload(options) {\n this.logInfo(`Unloading audio asset with options: ${JSON.stringify(options)}`);\n const audio = this.getAudioAsset(options.assetId).audio;\n this.reset(audio);\n NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.delete(options.assetId);\n NativeAudioWeb.AUDIO_PRELOAD_OPTIONS_MAP.delete(options.assetId);\n NativeAudioWeb.AUDIO_DATA_MAP.delete(options.assetId);\n this.cleanupAudioContext(audio);\n }\n cleanupAudioContext(audio) {\n const gainNode = NativeAudioWeb.GAIN_NODE_MAP.get(audio);\n if (gainNode) {\n gainNode.disconnect();\n NativeAudioWeb.GAIN_NODE_MAP.delete(audio);\n }\n const sourceNode = NativeAudioWeb.MEDIA_ELEMENT_SOURCE_MAP.get(audio);\n if (sourceNode) {\n sourceNode.disconnect();\n NativeAudioWeb.MEDIA_ELEMENT_SOURCE_MAP.delete(audio);\n }\n const audioContext = NativeAudioWeb.AUDIO_CONTEXT_MAP.get(audio);\n if (audioContext) {\n audioContext.close().catch(() => {\n // no-op\n });\n NativeAudioWeb.AUDIO_CONTEXT_MAP.delete(audio);\n }\n }\n async setVolume(options) {\n this.logInfo(`Setting volume for audio asset with options: ${JSON.stringify(options)}`);\n if (typeof (options === null || options === void 0 ? void 0 : options.volume) !== 'number') {\n throw 'no volume provided';\n }\n const { volume, duration = 0 } = options;\n const data = this.getAudioAssetData(options.assetId);\n data.volume = volume;\n this.setAudioAssetData(options.assetId, data);\n const audio = this.getAudioAsset(options.assetId).audio;\n this.cancelGainNodeRamp(audio);\n if (duration > 0) {\n this.exponentialRampGainNodeVolume(audio, volume, duration);\n return;\n }\n audio.volume = volume;\n this.setGainNodeVolume(audio, volume);\n }\n async setRate(options) {\n this.logInfo(`Setting playback rate for audio asset with options: ${JSON.stringify(options)}`);\n if (typeof (options === null || options === void 0 ? void 0 : options.rate) !== 'number') {\n throw 'no rate provided';\n }\n const audio = this.getAudioAsset(options.assetId).audio;\n audio.playbackRate = options.rate;\n }\n async isPlaying(options) {\n const audio = this.getAudioAsset(options.assetId).audio;\n return { isPlaying: !audio.paused };\n }\n async clearCache() {\n this.logWarning('clearCache is not supported for web. No cache to clear.');\n }\n getAudioAsset(assetId) {\n this.checkAssetId(assetId);\n if (!NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.has(assetId)) {\n throw `no asset for assetId \"${assetId}\" available. Call preload first!`;\n }\n return NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID.get(assetId);\n }\n checkAssetId(assetId) {\n if (typeof assetId !== 'string') {\n throw 'assetId must be a string';\n }\n if (!(assetId === null || assetId === void 0 ? void 0 : assetId.length)) {\n throw 'no assetId provided';\n }\n }\n getOrCreateAudioContext(audio) {\n if (NativeAudioWeb.AUDIO_CONTEXT_MAP.has(audio)) {\n return NativeAudioWeb.AUDIO_CONTEXT_MAP.get(audio);\n }\n const audioContext = new AudioContext();\n NativeAudioWeb.AUDIO_CONTEXT_MAP.set(audio, audioContext);\n return audioContext;\n }\n getOrCreateMediaElementSource(audioContext, audio) {\n if (NativeAudioWeb.MEDIA_ELEMENT_SOURCE_MAP.has(audio)) {\n return NativeAudioWeb.MEDIA_ELEMENT_SOURCE_MAP.get(audio);\n }\n const sourceNode = audioContext.createMediaElementSource(audio);\n NativeAudioWeb.MEDIA_ELEMENT_SOURCE_MAP.set(audio, sourceNode);\n return sourceNode;\n }\n getOrCreateGainNode(audio, track) {\n const audioContext = this.getOrCreateAudioContext(audio);\n if (NativeAudioWeb.GAIN_NODE_MAP.has(audio)) {\n return NativeAudioWeb.GAIN_NODE_MAP.get(audio);\n }\n const gainNode = audioContext.createGain();\n track.connect(gainNode).connect(audioContext.destination);\n NativeAudioWeb.GAIN_NODE_MAP.set(audio, gainNode);\n return gainNode;\n }\n setGainNodeVolume(audio, volume, time) {\n const audioContext = this.getOrCreateAudioContext(audio);\n const track = this.getOrCreateMediaElementSource(audioContext, audio);\n const gainNode = this.getOrCreateGainNode(audio, track);\n if (time !== undefined) {\n gainNode.gain.setValueAtTime(volume, time);\n }\n else {\n gainNode.gain.setValueAtTime(volume, audioContext.currentTime);\n }\n }\n exponentialRampGainNodeVolume(audio, volume, duration) {\n const audioContext = this.getOrCreateAudioContext(audio);\n const track = this.getOrCreateMediaElementSource(audioContext, audio);\n const gainNode = this.getOrCreateGainNode(audio, track);\n const adjustedVolume = volume < this.zeroVolume ? this.zeroVolume : volume;\n gainNode.gain.exponentialRampToValueAtTime(adjustedVolume, audioContext.currentTime + duration);\n }\n linearRampGainNodeVolume(audio, volume, duration) {\n const audioContext = this.getOrCreateAudioContext(audio);\n const track = this.getOrCreateMediaElementSource(audioContext, audio);\n const gainNode = this.getOrCreateGainNode(audio, track);\n gainNode.gain.linearRampToValueAtTime(volume, audioContext.currentTime + duration);\n }\n cancelGainNodeRamp(audio) {\n const gainNode = NativeAudioWeb.GAIN_NODE_MAP.get(audio);\n if (gainNode) {\n gainNode.gain.cancelScheduledValues(0);\n }\n }\n startCurrentTimeUpdates(assetId) {\n this.stopCurrentTimeUpdates(assetId);\n const audio = this.getAudioAsset(assetId).audio;\n const intervalId = window.setInterval(() => {\n var _a;\n if (!audio.paused) {\n const currentTime = Math.round(audio.currentTime * 10) / 10;\n this.notifyListeners('currentTime', { assetId, currentTime });\n this.logDebug(`Current time update for assetId: ${assetId}, currentTime: ${currentTime}`);\n const data = this.getAudioAssetData(assetId);\n if (data.fadeOut && typeof data.fadeOutStartTime === 'number' && currentTime >= data.fadeOutStartTime) {\n this.cancelGainNodeRamp(audio);\n const fadeOutDuration = (_a = data.fadeOutDuration) !== null && _a !== void 0 ? _a : NativeAudioWeb.DEFAULT_FADE_DURATION_SEC;\n this.doFadeOut(audio, fadeOutDuration);\n data.fadeOut = false;\n this.setAudioAssetData(assetId, data);\n }\n }\n else {\n this.stopCurrentTimeUpdates(assetId);\n }\n }, NativeAudioWeb.CURRENT_TIME_UPDATE_INTERVAL);\n this.currentTimeIntervals.set(assetId, intervalId);\n }\n stopCurrentTimeUpdates(assetId) {\n if (assetId) {\n const intervalId = this.currentTimeIntervals.get(assetId);\n if (intervalId) {\n clearInterval(intervalId);\n this.currentTimeIntervals.delete(assetId);\n }\n return;\n }\n for (const intervalId of this.currentTimeIntervals.values()) {\n clearInterval(intervalId);\n }\n this.currentTimeIntervals.clear();\n }\n getAudioAssetData(assetId) {\n return NativeAudioWeb.AUDIO_DATA_MAP.get(assetId) || {};\n }\n setAudioAssetData(assetId, data) {\n const currentData = NativeAudioWeb.AUDIO_DATA_MAP.get(assetId) || {};\n const newData = Object.assign(Object.assign({}, currentData), data);\n NativeAudioWeb.AUDIO_DATA_MAP.set(assetId, newData);\n }\n logError(message) {\n if (!this.debugMode)\n return;\n console.error(`${NativeAudioWeb.LOG_TAG} Error: ${message}`);\n }\n logWarning(message) {\n if (!this.debugMode)\n return;\n console.warn(`${NativeAudioWeb.LOG_TAG} Warning: ${message}`);\n }\n logInfo(message) {\n if (!this.debugMode)\n return;\n console.info(`${NativeAudioWeb.LOG_TAG} Info: ${message}`);\n }\n logDebug(message) {\n if (!this.debugMode)\n return;\n console.debug(`${NativeAudioWeb.LOG_TAG} Debug: ${message}`);\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n async deinitPlugin() {\n for (const [assetId] of NativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID) {\n await this.unload({ assetId });\n }\n this.stopCurrentTimeUpdates();\n }\n}\nNativeAudioWeb.LOG_TAG = '[NativeAudioWeb]';\nNativeAudioWeb.FILE_LOCATION = '';\nNativeAudioWeb.DEFAULT_FADE_DURATION_SEC = 1;\nNativeAudioWeb.CURRENT_TIME_UPDATE_INTERVAL = 100;\nNativeAudioWeb.AUDIO_PRELOAD_OPTIONS_MAP = new Map();\nNativeAudioWeb.AUDIO_DATA_MAP = new Map();\nNativeAudioWeb.AUDIO_ASSET_BY_ASSET_ID = new Map();\nNativeAudioWeb.AUDIO_CONTEXT_MAP = new Map();\nNativeAudioWeb.MEDIA_ELEMENT_SOURCE_MAP = new Map();\nNativeAudioWeb.GAIN_NODE_MAP = new Map();\nNativeAudioWeb.playOnceAssets = new Set();\nconst NativeAudio = new NativeAudioWeb();\nexport { NativeAudio };\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}