Socket
Socket
Sign inDemoInstall

@cher-ami/audio-manager

Package Overview
Dependencies
Maintainers
5
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cher-ami/audio-manager - npm Package Compare versions

Comparing version 0.1.1 to 0.1.2

2

dist/AudioManager.d.ts

@@ -5,3 +5,3 @@ import { TDeferredPromise } from "@wbe/deferred-promise";

*/
export declare const MUTE_AUDIO_SIGNAL: import("@solid-js/signal").IStateSignal<boolean, any>;
export declare const MUTE_AUDIO_SIGNAL: import("@zouloux/signal").IStateSignal<boolean, any>;
/**

@@ -8,0 +8,0 @@ * Declare types for audio options

@@ -1,2 +0,2 @@

import{StateSignal as i}from"@solid-js/signal";import{deferredPromise as o}from"@wbe/deferred-promise";import t from"@wbe/debug";import{gsap as e}from"gsap";import{useState as n,useEffect as s}from"react";function a(){return a=Object.assign||function(i){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(i[e]=t[e])}return i},a.apply(this,arguments)}var u=t("AudioManager"),r=i(!1),d=/*#__PURE__*/function(){function i(i,t){var e=this;this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=function(){u("canplay"),e.canplayPromise.resolve(),e.isLoading=!1,e.isLoaded=!0},this.handleEnded=function(){u("ended"),e.isPlaying=!1,e.options.loop&&e.play()},this.handleMuteAll=function(i){i?e.mute():e.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=a({},{volume:1,loop:!1},t),u("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=o(),this.load(),this.initEvent()}var t=i.prototype;return t.load=function(){var i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)},t.initEvent=function(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),r.on(this.handleMuteAll))},t.play=function(){try{var i=this;return u("play",i.options),Promise.resolve(i.canplayPromise.promise).then(function(){"suspended"===i.audioCtx.state&&i.audioCtx.resume(),i.isPlaying?u("play > is already playIn, return"):(i.$audio.play(),i.isPlaying=!0)})}catch(i){return Promise.reject(i)}},t.pause=function(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)},t.stop=function(){u("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1},t.replay=function(){u("replay"),this.stop(),this.play()},t.mute=function(){u("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)},t.unmute=function(){u("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)},t.enableLoop=function(){u("loop"),this.options.loop=!0},t.disableLoop=function(){u("disable loop"),this.options.loop=!1},t.pan=function(i){u("pan",i),this.panner.pan.value=i},t.fade=function(i,o,t,e){void 0===t&&(t=1),void 0===e&&(e="none");try{var n=this;return u("fade >",i,o,n.options),n.isPlaying||n.play(),Promise.resolve(n.processVolume(i,o,t,e)).then(function(){u("fade ended!",n.$audio.volume)})}catch(i){return Promise.reject(i)}},t.fadeIn=function(i,o){void 0===i&&(i=1),void 0===o&&(o="none");try{var t=this;return u("fadeIn"),t.play(),Promise.resolve(t.processVolume(0,t.options.volume,i,o)).then(function(){u("fadeIn ended!")})}catch(i){return Promise.reject(i)}},t.fadeOut=function(i,o){void 0===i&&(i=1),void 0===o&&(o="none");try{return u("fadeOut"),Promise.resolve(this.processVolume(this.options.volume,0,i,o)).then(function(){u("fadeOut ended!")})}catch(i){return Promise.reject(i)}},t.destroy=function(){var i;u("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,r.off(this.handleMuteAll)},t.processVolume=function(i,o,t,n){var s=this;void 0===t&&(t=1),void 0===n&&(n="none");var a=Math.max(0,Math.min(i,1)),r=Math.max(0,Math.min(o,1));return new Promise(function(i){e.fromTo(s.$audio,{volume:s._volumeIsInProcess?s.$audio.volume:a},{volume:r,overwrite:!0,ease:n,duration:t,onUpdate:function(){s._volumeIsInProcess=!0,u("this.$audio.volume",s.$audio.volume)},onComplete:function(){s._volumeIsInProcess=!1,i()}})})},i}(),l=function(i,o,t){void 0===t&&(t=[]);var e=n(null),a=e[0],u=e[1];return s(function(){var t=new d(i,o);return u(t),function(){t.destroy()}},t),a};export{d as AudioManager,l as useAudio};
import{StateSignal as i}from"@zouloux/signal";import{deferredPromise as o}from"@wbe/deferred-promise";import t from"@wbe/debug";import{gsap as e}from"gsap";import{useState as n,useEffect as s}from"react";function a(){return a=Object.assign||function(i){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(i[e]=t[e])}return i},a.apply(this,arguments)}var u=t("AudioManager"),r=i(!1),d=/*#__PURE__*/function(){function i(i,t){var e=this;this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=function(){u("canplay"),e.canplayPromise.resolve(),e.isLoading=!1,e.isLoaded=!0},this.handleEnded=function(){u("ended"),e.isPlaying=!1,e.options.loop&&e.play()},this.handleMuteAll=function(i){i?e.mute():e.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=a({},{volume:1,loop:!1},t),u("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=o(),this.load(),this.initEvent()}var t=i.prototype;return t.load=function(){var i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)},t.initEvent=function(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),r.add(this.handleMuteAll))},t.play=function(){try{var i=this;return u("play",i.options),Promise.resolve(i.canplayPromise.promise).then(function(){"suspended"===i.audioCtx.state&&i.audioCtx.resume(),i.isPlaying?u("play > is already playIn, return"):(i.$audio.play(),i.isPlaying=!0)})}catch(i){return Promise.reject(i)}},t.pause=function(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)},t.stop=function(){u("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1},t.replay=function(){u("replay"),this.stop(),this.play()},t.mute=function(){u("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)},t.unmute=function(){u("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)},t.enableLoop=function(){u("loop"),this.options.loop=!0},t.disableLoop=function(){u("disable loop"),this.options.loop=!1},t.pan=function(i){u("pan",i),this.panner.pan.value=i},t.fade=function(i,o,t,e){void 0===t&&(t=1),void 0===e&&(e="none");try{var n=this;return u("fade >",i,o,n.options),n.isPlaying||n.play(),Promise.resolve(n.processVolume(i,o,t,e)).then(function(){u("fade ended!",n.$audio.volume)})}catch(i){return Promise.reject(i)}},t.fadeIn=function(i,o){void 0===i&&(i=1),void 0===o&&(o="none");try{var t=this;return u("fadeIn"),t.play(),Promise.resolve(t.processVolume(0,t.options.volume,i,o)).then(function(){u("fadeIn ended!")})}catch(i){return Promise.reject(i)}},t.fadeOut=function(i,o){void 0===i&&(i=1),void 0===o&&(o="none");try{return u("fadeOut"),Promise.resolve(this.processVolume(this.options.volume,0,i,o)).then(function(){u("fadeOut ended!")})}catch(i){return Promise.reject(i)}},t.destroy=function(){var i;u("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,r.remove(this.handleMuteAll)},t.processVolume=function(i,o,t,n){var s=this;void 0===t&&(t=1),void 0===n&&(n="none");var a=Math.max(0,Math.min(i,1)),r=Math.max(0,Math.min(o,1));return new Promise(function(i){e.fromTo(s.$audio,{volume:s._volumeIsInProcess?s.$audio.volume:a},{volume:r,overwrite:!0,ease:n,duration:t,onUpdate:function(){s._volumeIsInProcess=!0,u("this.$audio.volume",s.$audio.volume)},onComplete:function(){s._volumeIsInProcess=!1,i()}})})},i}(),l=function(i,o,t){void 0===t&&(t=[]);var e=n(null),a=e[0],u=e[1];return s(function(){var t=new d(i,o);return u(t),function(){t.destroy()}},t),a};export{d as AudioManager,l as useAudio};
//# sourceMappingURL=index.esm.js.map

@@ -1,2 +0,2 @@

var i=require("@solid-js/signal"),e=require("@wbe/deferred-promise"),t=require("@wbe/debug"),o=require("gsap"),n=require("react");function s(i){return i&&"object"==typeof i&&"default"in i?i:{default:i}}function a(){return a=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[o]=t[o])}return i},a.apply(this,arguments)}var u=/*#__PURE__*/s(t).default("AudioManager"),r=i.StateSignal(!1),d=/*#__PURE__*/function(){function i(i,t){var o=this;this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=function(){u("canplay"),o.canplayPromise.resolve(),o.isLoading=!1,o.isLoaded=!0},this.handleEnded=function(){u("ended"),o.isPlaying=!1,o.options.loop&&o.play()},this.handleMuteAll=function(i){i?o.mute():o.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=a({},{volume:1,loop:!1},t),u("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=e.deferredPromise(),this.load(),this.initEvent()}var t=i.prototype;return t.load=function(){var i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)},t.initEvent=function(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),r.on(this.handleMuteAll))},t.play=function(){try{var i=this;return u("play",i.options),Promise.resolve(i.canplayPromise.promise).then(function(){"suspended"===i.audioCtx.state&&i.audioCtx.resume(),i.isPlaying?u("play > is already playIn, return"):(i.$audio.play(),i.isPlaying=!0)})}catch(i){return Promise.reject(i)}},t.pause=function(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)},t.stop=function(){u("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1},t.replay=function(){u("replay"),this.stop(),this.play()},t.mute=function(){u("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)},t.unmute=function(){u("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)},t.enableLoop=function(){u("loop"),this.options.loop=!0},t.disableLoop=function(){u("disable loop"),this.options.loop=!1},t.pan=function(i){u("pan",i),this.panner.pan.value=i},t.fade=function(i,e,t,o){void 0===t&&(t=1),void 0===o&&(o="none");try{var n=this;return u("fade >",i,e,n.options),n.isPlaying||n.play(),Promise.resolve(n.processVolume(i,e,t,o)).then(function(){u("fade ended!",n.$audio.volume)})}catch(i){return Promise.reject(i)}},t.fadeIn=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{var t=this;return u("fadeIn"),t.play(),Promise.resolve(t.processVolume(0,t.options.volume,i,e)).then(function(){u("fadeIn ended!")})}catch(i){return Promise.reject(i)}},t.fadeOut=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{return u("fadeOut"),Promise.resolve(this.processVolume(this.options.volume,0,i,e)).then(function(){u("fadeOut ended!")})}catch(i){return Promise.reject(i)}},t.destroy=function(){var i;u("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,r.off(this.handleMuteAll)},t.processVolume=function(i,e,t,n){var s=this;void 0===t&&(t=1),void 0===n&&(n="none");var a=Math.max(0,Math.min(i,1)),r=Math.max(0,Math.min(e,1));return new Promise(function(i){o.gsap.fromTo(s.$audio,{volume:s._volumeIsInProcess?s.$audio.volume:a},{volume:r,overwrite:!0,ease:n,duration:t,onUpdate:function(){s._volumeIsInProcess=!0,u("this.$audio.volume",s.$audio.volume)},onComplete:function(){s._volumeIsInProcess=!1,i()}})})},i}();exports.AudioManager=d,exports.useAudio=function(i,e,t){void 0===t&&(t=[]);var o=n.useState(null),s=o[0],a=o[1];return n.useEffect(function(){var t=new d(i,e);return a(t),function(){t.destroy()}},t),s};
var i=require("@zouloux/signal"),e=require("@wbe/deferred-promise"),t=require("@wbe/debug"),o=require("gsap"),n=require("react");function s(i){return i&&"object"==typeof i&&"default"in i?i:{default:i}}function a(){return a=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[o]=t[o])}return i},a.apply(this,arguments)}var u=/*#__PURE__*/s(t).default("AudioManager"),r=i.StateSignal(!1),d=/*#__PURE__*/function(){function i(i,t){var o=this;this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=function(){u("canplay"),o.canplayPromise.resolve(),o.isLoading=!1,o.isLoaded=!0},this.handleEnded=function(){u("ended"),o.isPlaying=!1,o.options.loop&&o.play()},this.handleMuteAll=function(i){i?o.mute():o.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=a({},{volume:1,loop:!1},t),u("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=e.deferredPromise(),this.load(),this.initEvent()}var t=i.prototype;return t.load=function(){var i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)},t.initEvent=function(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),r.add(this.handleMuteAll))},t.play=function(){try{var i=this;return u("play",i.options),Promise.resolve(i.canplayPromise.promise).then(function(){"suspended"===i.audioCtx.state&&i.audioCtx.resume(),i.isPlaying?u("play > is already playIn, return"):(i.$audio.play(),i.isPlaying=!0)})}catch(i){return Promise.reject(i)}},t.pause=function(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)},t.stop=function(){u("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1},t.replay=function(){u("replay"),this.stop(),this.play()},t.mute=function(){u("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)},t.unmute=function(){u("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)},t.enableLoop=function(){u("loop"),this.options.loop=!0},t.disableLoop=function(){u("disable loop"),this.options.loop=!1},t.pan=function(i){u("pan",i),this.panner.pan.value=i},t.fade=function(i,e,t,o){void 0===t&&(t=1),void 0===o&&(o="none");try{var n=this;return u("fade >",i,e,n.options),n.isPlaying||n.play(),Promise.resolve(n.processVolume(i,e,t,o)).then(function(){u("fade ended!",n.$audio.volume)})}catch(i){return Promise.reject(i)}},t.fadeIn=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{var t=this;return u("fadeIn"),t.play(),Promise.resolve(t.processVolume(0,t.options.volume,i,e)).then(function(){u("fadeIn ended!")})}catch(i){return Promise.reject(i)}},t.fadeOut=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{return u("fadeOut"),Promise.resolve(this.processVolume(this.options.volume,0,i,e)).then(function(){u("fadeOut ended!")})}catch(i){return Promise.reject(i)}},t.destroy=function(){var i;u("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,r.remove(this.handleMuteAll)},t.processVolume=function(i,e,t,n){var s=this;void 0===t&&(t=1),void 0===n&&(n="none");var a=Math.max(0,Math.min(i,1)),r=Math.max(0,Math.min(e,1));return new Promise(function(i){o.gsap.fromTo(s.$audio,{volume:s._volumeIsInProcess?s.$audio.volume:a},{volume:r,overwrite:!0,ease:n,duration:t,onUpdate:function(){s._volumeIsInProcess=!0,u("this.$audio.volume",s.$audio.volume)},onComplete:function(){s._volumeIsInProcess=!1,i()}})})},i}();exports.AudioManager=d,exports.useAudio=function(i,e,t){void 0===t&&(t=[]);var o=n.useState(null),s=o[0],a=o[1];return n.useEffect(function(){var t=new d(i,e);return a(t),function(){t.destroy()}},t),s};
//# sourceMappingURL=index.js.map

@@ -1,2 +0,2 @@

import{StateSignal as i}from"@solid-js/signal";import{deferredPromise as t}from"@wbe/deferred-promise";import s from"@wbe/debug";import{gsap as o}from"gsap";import{useState as e,useEffect as a}from"react";function n(){return n=Object.assign||function(i){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(i[o]=s[o])}return i},n.apply(this,arguments)}const d=s("AudioManager"),h=i(!1);class u{constructor(i,s){this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=()=>{d("canplay"),this.canplayPromise.resolve(),this.isLoading=!1,this.isLoaded=!0},this.handleEnded=()=>{d("ended"),this.isPlaying=!1,this.options.loop&&this.play()},this.handleMuteAll=i=>{i?this.mute():this.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=n({},{volume:1,loop:!1},s),d("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=t(),this.load(),this.initEvent()}load(){const i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)}initEvent(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),h.on(this.handleMuteAll))}async play(){d("play",this.options),await this.canplayPromise.promise,"suspended"===this.audioCtx.state&&this.audioCtx.resume(),this.isPlaying?d("play > is already playIn, return"):(this.$audio.play(),this.isPlaying=!0)}pause(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)}stop(){d("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1}replay(){d("replay"),this.stop(),this.play()}mute(){d("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)}unmute(){d("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)}enableLoop(){d("loop"),this.options.loop=!0}disableLoop(){d("disable loop"),this.options.loop=!1}pan(i){d("pan",i),this.panner.pan.value=i}async fade(i,t,s=1,o="none"){d("fade >",i,t,this.options),this.isPlaying||this.play(),await this.processVolume(i,t,s,o),d("fade ended!",this.$audio.volume)}async fadeIn(i=1,t="none"){d("fadeIn"),this.play(),await this.processVolume(0,this.options.volume,i,t),d("fadeIn ended!")}async fadeOut(i=1,t="none"){d("fadeOut"),await this.processVolume(this.options.volume,0,i,t),d("fadeOut ended!")}destroy(){var i;d("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,h.off(this.handleMuteAll)}processVolume(i,t,s=1,e="none"){const a=Math.max(0,Math.min(i,1)),n=Math.max(0,Math.min(t,1));return new Promise(i=>{o.fromTo(this.$audio,{volume:this._volumeIsInProcess?this.$audio.volume:a},{volume:n,overwrite:!0,ease:e,duration:s,onUpdate:()=>{this._volumeIsInProcess=!0,d("this.$audio.volume",this.$audio.volume)},onComplete:()=>{this._volumeIsInProcess=!1,i()}})})}}const l=(i,t,s=[])=>{const[o,n]=e(null);return a(()=>{const s=new u(i,t);return n(s),()=>{s.destroy()}},s),o};export{u as AudioManager,l as useAudio};
import{StateSignal as i}from"@zouloux/signal";import{deferredPromise as t}from"@wbe/deferred-promise";import s from"@wbe/debug";import{gsap as o}from"gsap";import{useState as e,useEffect as a}from"react";function n(){return n=Object.assign||function(i){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var o in s)Object.prototype.hasOwnProperty.call(s,o)&&(i[o]=s[o])}return i},n.apply(this,arguments)}const d=s("AudioManager"),h=i(!1);class u{constructor(i,s){this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=()=>{d("canplay"),this.canplayPromise.resolve(),this.isLoading=!1,this.isLoaded=!0},this.handleEnded=()=>{d("ended"),this.isPlaying=!1,this.options.loop&&this.play()},this.handleMuteAll=i=>{i?this.mute():this.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=n({},{volume:1,loop:!1},s),d("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=t(),this.load(),this.initEvent()}load(){const i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)}initEvent(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),h.add(this.handleMuteAll))}async play(){d("play",this.options),await this.canplayPromise.promise,"suspended"===this.audioCtx.state&&this.audioCtx.resume(),this.isPlaying?d("play > is already playIn, return"):(this.$audio.play(),this.isPlaying=!0)}pause(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)}stop(){d("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1}replay(){d("replay"),this.stop(),this.play()}mute(){d("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)}unmute(){d("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)}enableLoop(){d("loop"),this.options.loop=!0}disableLoop(){d("disable loop"),this.options.loop=!1}pan(i){d("pan",i),this.panner.pan.value=i}async fade(i,t,s=1,o="none"){d("fade >",i,t,this.options),this.isPlaying||this.play(),await this.processVolume(i,t,s,o),d("fade ended!",this.$audio.volume)}async fadeIn(i=1,t="none"){d("fadeIn"),this.play(),await this.processVolume(0,this.options.volume,i,t),d("fadeIn ended!")}async fadeOut(i=1,t="none"){d("fadeOut"),await this.processVolume(this.options.volume,0,i,t),d("fadeOut ended!")}destroy(){var i;d("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,h.remove(this.handleMuteAll)}processVolume(i,t,s=1,e="none"){const a=Math.max(0,Math.min(i,1)),n=Math.max(0,Math.min(t,1));return new Promise(i=>{o.fromTo(this.$audio,{volume:this._volumeIsInProcess?this.$audio.volume:a},{volume:n,overwrite:!0,ease:e,duration:s,onUpdate:()=>{this._volumeIsInProcess=!0,d("this.$audio.volume",this.$audio.volume)},onComplete:()=>{this._volumeIsInProcess=!1,i()}})})}}const l=(i,t,s=[])=>{const[o,n]=e(null);return a(()=>{const s=new u(i,t);return n(s),()=>{s.destroy()}},s),o};export{u as AudioManager,l as useAudio};
//# sourceMappingURL=index.modern.js.map

@@ -1,2 +0,2 @@

!function(i,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@solid-js/signal"),require("@wbe/deferred-promise"),require("@wbe/debug"),require("gsap"),require("react")):"function"==typeof define&&define.amd?define(["exports","@solid-js/signal","@wbe/deferred-promise","@wbe/debug","gsap","react"],e):e((i||self).audioManager={},i.signal,i.deferredPromise,i.debug,i.gsap,i.react)}(this,function(i,e,t,o,n,s){function a(i){return i&&"object"==typeof i&&"default"in i?i:{default:i}}function u(){return u=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[o]=t[o])}return i},u.apply(this,arguments)}var d=/*#__PURE__*/a(o).default("AudioManager"),r=e.StateSignal(!1),l=/*#__PURE__*/function(){function i(i,e){var o=this;this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=function(){d("canplay"),o.canplayPromise.resolve(),o.isLoading=!1,o.isLoaded=!0},this.handleEnded=function(){d("ended"),o.isPlaying=!1,o.options.loop&&o.play()},this.handleMuteAll=function(i){i?o.mute():o.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=u({},{volume:1,loop:!1},e),d("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=t.deferredPromise(),this.load(),this.initEvent()}var e=i.prototype;return e.load=function(){var i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)},e.initEvent=function(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),r.on(this.handleMuteAll))},e.play=function(){try{var i=this;return d("play",i.options),Promise.resolve(i.canplayPromise.promise).then(function(){"suspended"===i.audioCtx.state&&i.audioCtx.resume(),i.isPlaying?d("play > is already playIn, return"):(i.$audio.play(),i.isPlaying=!0)})}catch(i){return Promise.reject(i)}},e.pause=function(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)},e.stop=function(){d("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1},e.replay=function(){d("replay"),this.stop(),this.play()},e.mute=function(){d("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)},e.unmute=function(){d("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)},e.enableLoop=function(){d("loop"),this.options.loop=!0},e.disableLoop=function(){d("disable loop"),this.options.loop=!1},e.pan=function(i){d("pan",i),this.panner.pan.value=i},e.fade=function(i,e,t,o){void 0===t&&(t=1),void 0===o&&(o="none");try{var n=this;return d("fade >",i,e,n.options),n.isPlaying||n.play(),Promise.resolve(n.processVolume(i,e,t,o)).then(function(){d("fade ended!",n.$audio.volume)})}catch(i){return Promise.reject(i)}},e.fadeIn=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{var t=this;return d("fadeIn"),t.play(),Promise.resolve(t.processVolume(0,t.options.volume,i,e)).then(function(){d("fadeIn ended!")})}catch(i){return Promise.reject(i)}},e.fadeOut=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{return d("fadeOut"),Promise.resolve(this.processVolume(this.options.volume,0,i,e)).then(function(){d("fadeOut ended!")})}catch(i){return Promise.reject(i)}},e.destroy=function(){var i;d("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,r.off(this.handleMuteAll)},e.processVolume=function(i,e,t,o){var s=this;void 0===t&&(t=1),void 0===o&&(o="none");var a=Math.max(0,Math.min(i,1)),u=Math.max(0,Math.min(e,1));return new Promise(function(i){n.gsap.fromTo(s.$audio,{volume:s._volumeIsInProcess?s.$audio.volume:a},{volume:u,overwrite:!0,ease:o,duration:t,onUpdate:function(){s._volumeIsInProcess=!0,d("this.$audio.volume",s.$audio.volume)},onComplete:function(){s._volumeIsInProcess=!1,i()}})})},i}();i.AudioManager=l,i.useAudio=function(i,e,t){void 0===t&&(t=[]);var o=s.useState(null),n=o[0],a=o[1];return s.useEffect(function(){var t=new l(i,e);return a(t),function(){t.destroy()}},t),n}});
!function(i,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@zouloux/signal"),require("@wbe/deferred-promise"),require("@wbe/debug"),require("gsap"),require("react")):"function"==typeof define&&define.amd?define(["exports","@zouloux/signal","@wbe/deferred-promise","@wbe/debug","gsap","react"],e):e((i||self).audioManager={},i.signal,i.deferredPromise,i.debug,i.gsap,i.react)}(this,function(i,e,t,o,n,s){function a(i){return i&&"object"==typeof i&&"default"in i?i:{default:i}}function u(){return u=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(i[o]=t[o])}return i},u.apply(this,arguments)}var d=/*#__PURE__*/a(o).default("AudioManager"),r=e.StateSignal(!1),l=/*#__PURE__*/function(){function i(i,e){var o=this;this.audioFileUrl=void 0,this.options=void 0,this.audioCtx=void 0,this.panner=void 0,this.listener=void 0,this.$audio=void 0,this.track=void 0,this.isLoading=void 0,this.isLoaded=void 0,this.isPlaying=void 0,this.isMuted=void 0,this.canplayPromise=void 0,this.handleCanplay=function(){d("canplay"),o.canplayPromise.resolve(),o.isLoading=!1,o.isLoaded=!0},this.handleEnded=function(){d("ended"),o.isPlaying=!1,o.options.loop&&o.play()},this.handleMuteAll=function(i){i?o.mute():o.unmute()},this._volumeIsInProcess=void 0,this.audioFileUrl=i,this.options=u({},{volume:1,loop:!1},e),d("options",this.options),this.isPlaying=!1,this.isLoading=!0,this.isLoaded=!1,this.isMuted=!1,this.canplayPromise=t.deferredPromise(),this.load(),this.initEvent()}var e=i.prototype;return e.load=function(){var i=window.AudioContext||window.webkitAudioContext;this.audioCtx=new i,this.panner=new StereoPannerNode(this.audioCtx,{pan:0}),this.$audio=new Audio(this.audioFileUrl),this.track=this.audioCtx.createMediaElementSource(this.$audio),this.track.connect(this.panner).connect(this.audioCtx.destination)},e.initEvent=function(){this.$audio&&(this.$audio.addEventListener("canplay",this.handleCanplay),this.$audio.addEventListener("ended",this.handleEnded),r.add(this.handleMuteAll))},e.play=function(){try{var i=this;return d("play",i.options),Promise.resolve(i.canplayPromise.promise).then(function(){"suspended"===i.audioCtx.state&&i.audioCtx.resume(),i.isPlaying?d("play > is already playIn, return"):(i.$audio.play(),i.isPlaying=!0)})}catch(i){return Promise.reject(i)}},e.pause=function(){this.isPlaying&&(this.$audio.pause(),this.isPlaying=!1)},e.stop=function(){d("stop"),this.$audio.pause(),this.$audio.currentTime=0,this.isPlaying=!1},e.replay=function(){d("replay"),this.stop(),this.play()},e.mute=function(){d("mute",this.$audio.volume),this.isMuted||(this.$audio.volume=0,this.isMuted=!0)},e.unmute=function(){d("unmute",this.$audio.volume),this.isMuted&&(this.$audio.volume=this.options.volume,this.isMuted=!1)},e.enableLoop=function(){d("loop"),this.options.loop=!0},e.disableLoop=function(){d("disable loop"),this.options.loop=!1},e.pan=function(i){d("pan",i),this.panner.pan.value=i},e.fade=function(i,e,t,o){void 0===t&&(t=1),void 0===o&&(o="none");try{var n=this;return d("fade >",i,e,n.options),n.isPlaying||n.play(),Promise.resolve(n.processVolume(i,e,t,o)).then(function(){d("fade ended!",n.$audio.volume)})}catch(i){return Promise.reject(i)}},e.fadeIn=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{var t=this;return d("fadeIn"),t.play(),Promise.resolve(t.processVolume(0,t.options.volume,i,e)).then(function(){d("fadeIn ended!")})}catch(i){return Promise.reject(i)}},e.fadeOut=function(i,e){void 0===i&&(i=1),void 0===e&&(e="none");try{return d("fadeOut"),Promise.resolve(this.processVolume(this.options.volume,0,i,e)).then(function(){d("fadeOut ended!")})}catch(i){return Promise.reject(i)}},e.destroy=function(){var i;d("destroy"),this.pause(),null==(i=this.track)||i.disconnect(),this.$audio=null,r.remove(this.handleMuteAll)},e.processVolume=function(i,e,t,o){var s=this;void 0===t&&(t=1),void 0===o&&(o="none");var a=Math.max(0,Math.min(i,1)),u=Math.max(0,Math.min(e,1));return new Promise(function(i){n.gsap.fromTo(s.$audio,{volume:s._volumeIsInProcess?s.$audio.volume:a},{volume:u,overwrite:!0,ease:o,duration:t,onUpdate:function(){s._volumeIsInProcess=!0,d("this.$audio.volume",s.$audio.volume)},onComplete:function(){s._volumeIsInProcess=!1,i()}})})},i}();i.AudioManager=l,i.useAudio=function(i,e,t){void 0===t&&(t=[]);var o=s.useState(null),n=o[0],a=o[1];return s.useEffect(function(){var t=new l(i,e);return a(t),function(){t.destroy()}},t),n}});
//# sourceMappingURL=index.umd.js.map
{
"name": "@cher-ami/audio-manager",
"description": "A simple web audio manager",
"version": "0.1.1",
"version": "0.1.2",
"author": "cher-ami",

@@ -42,3 +42,3 @@ "license": "MIT",

"@wbe/deferred-promise": "^2.4.0",
"@solid-js/signal": "^1.0.2"
"@zouloux/signal": "^0.2.4"
},

@@ -45,0 +45,0 @@ "peerDependencies": {

@@ -1,1 +0,279 @@

# audio manager
# Audio manager
A simple web audio manager for the browser.
## Dependencies
- [@wbe/debug](https://www.npmjs.com/package/@wbe/debug)
- [@wbe/deferred-promise](https://www.npmjs.com/package/@wbe/)
- [@zouloux/signal](https://www.npmjs.com/package/@zouloux/signal)
- [gsap](https://greensock.com/gsap/)
## Installation
```shell
npm install @cher-ami/audio-manager
```
## Usage
Create new AudioManager instance:
```js
import { AudioManager } from "@cher-ami/audio-manager"
const sound = new AudioManager("sound.mp3")
sound.play()
sound.pause()
sound.stop()
sound.replay()
sound.mute()
sound.unmute()
sound.enableLoop()
sound.disableLoop()
sound.pan()
sound.fade()
sound.fadeIn()
sound.fadeOut()
sound.destroy()
```
Multiples instances can be created together:
```js
import { AudioManager } from "@cher-ami/audio-manager"
const sound1 = new AudioManager("sound.mp3")
const sound2 = new AudioManager("sound.mp3")
sound1.play()
sound2.play()
// ...
```
## API
### AudioManager
```ts
AudioManager(audioFileUrl: string, options: {
volume?: number;
loop?: boolean;
})
```
### play
`play():Promise<void>`
Play the sound.
```js
// await sound is loaded before playing it and continue
await sound.play()
```
### pause
`pause(): void`
Pause the sound.
```js
sound.pause()
```
### stop
`stop(): void`
Stop the sound. It will be reset to the beginning.
```js
sound.stop()
```
### replay
`replay(): void`
Will simply stop and play the sound.
```js
sound.replay()
```
### mute
`mute(): void`
Mute the sound.
```js
sound.mute()
```
### unmute
`unmute(): void`
Unmute the sound if he is muted.
```js
sound.unmute()
```
### enableLoop
`enableLoop(): void`
During the sound is playing, enable looping on it.
```js
sound.enableLoop()
```
### disableLoop
`disableLoop(): void`
During the sound is playing, disable looping on it.
```js
sound.disableLoop()
```
### pan
`pan(vPan: number): void`
Used to place the sound on a device supporting stereo sound.
If using -1 to 1 range. -1 would be far left & 1 far right.
```js
sound.pan(-1) // left
sound.pan(0) // center
sound.pan(1) // right
```
### fade
`fade(from: number, to: number, duration = 1, ease = "none"): Promise<any>`
Process fade between 2 points:
- `from` 1 = 100%, 0 = 0%
- `to` 1 = 100%, 0 = 0%
- `duration`: default is `1`
- `ease`: default is `none`, this is gsap easing string.
```js
// fade from 0% to 60% of the volume
this.fade(0, 0.6)
// also you can wait for the fade to finish
await this.fade(0, 0.6)
// ... do sothing after fade
```
### fadeIn
`fadeIn(duration = 1, ease = "none"): Promise<any>`
FadeIn from the current volum to 100%.
```js
this.fadeIn()
// or
await this.fadeIn()
```
### fadeOut
`fadeOut(duration = 1, ease = "none"): Promise<any>`
FadeOut from the current volum to 0%.
```js
this.fadeOut()
// or
await this.fadeOut()
```
### destroy
`destroy(): void`
Destroy current instance
```js
this.destroy()
```
## Golbal mute
It's possible to mute all the paying sounds with global event emitter.
```js
import { MUTE_AUDIO_SIGNAL } from "@cher-ami/audio-manager"
// mute all sounds
MUTE_AUDIO_SIGNAL.dispatch(true)
// unmute all sounds
MUTE_AUDIO_SIGNAL.dispatch(false)
```
## React usage
Audio manager come with react hooks to use it in react components.
### useAudio
```js
const App = () => {
// create audio manager instance with useAudio
const sound = useAudio("audio.mp3", { loop: true, volume: 0.5 })
// use API in handlers
return (
<div>
<button onClick={sound.play}>Play</button>
<button onClick={sound.pause}>Pause</button>
</div>
)
}
```
### useMuteAllAudio
Mute all sounds with `useMuteAllAudio`
```js
const [isMuted, setIsMuted] = useMuteAllAudio()
useEffect(() => {
// do something when isMuted state change
}, [isMuted])
// use API in handlers
return (
<div>
<button onClick={setIsMuted(true)}>mute</button>
<button onClick={setIsMuted(false)}>unmute</button>
</div>
)
```
## Example
Start example
```shell
npm run dev:example
```
## Credits
cher-ami

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc