@cher-ami/audio-manager
Advanced tools
Comparing version 0.1.2 to 0.1.3
@@ -34,3 +34,3 @@ import { TDeferredPromise } from "@wbe/deferred-promise"; | ||
canplayPromise: TDeferredPromise<void>; | ||
constructor(audioFileUrl: string, options: { | ||
constructor(audioFileUrl: string, options?: { | ||
volume?: number; | ||
@@ -37,0 +37,0 @@ loop?: boolean; |
@@ -1,2 +0,2 @@ | ||
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}; | ||
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?Object.assign.bind():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.$audio.crossOrigin="anonymous",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("@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}}); | ||
!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?Object.assign.bind():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;void 0===e&&(e={}),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.$audio.crossOrigin="anonymous",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.2", | ||
"version": "0.1.3", | ||
"author": "cher-ami", | ||
"license": "MIT", | ||
"types": "dist/index.d.ts", | ||
"source": "src/index.ts", | ||
"main": "./dist/index.js", | ||
"exports": { | ||
"require": "./dist/index.cjs", | ||
"default": "./dist/index.modern.js" | ||
}, | ||
"main": "./dist/index.cjs", | ||
"module": "./dist/index.module.js", | ||
"unpkg": "./dist/index.umd.js", | ||
"sideEffects": false, | ||
@@ -15,2 +20,3 @@ "repository": { | ||
}, | ||
"type": "module", | ||
"keywords": [ | ||
@@ -36,3 +42,3 @@ "audio", | ||
"limit": "2 kB", | ||
"path": "dist/index.js" | ||
"path": "dist/index.module.js" | ||
} | ||
@@ -42,3 +48,3 @@ ], | ||
"@wbe/debug": "^1.0.0", | ||
"gsap": "^3.10.3", | ||
"gsap": "^3.11.0", | ||
"@wbe/deferred-promise": "^2.4.0", | ||
@@ -52,13 +58,13 @@ "@zouloux/signal": "^0.2.4" | ||
"devDependencies": { | ||
"microbundle": "^0.14.2", | ||
"@size-limit/file": "^7.0.8", | ||
"@types/node": "^17.0.23", | ||
"@types/react": "^18.0.2", | ||
"@types/react-dom": "^18.0.0", | ||
"@vitejs/plugin-react": "^1.3.0", | ||
"less": "^4.1.2", | ||
"prettier": "^2.6.2", | ||
"typescript": "^4.6.3", | ||
"vite": "^2.9.1" | ||
"microbundle": "^0.15.1", | ||
"@size-limit/file": "^8.0.1", | ||
"@types/node": "^18.7.9", | ||
"@types/react": "^18.0.17", | ||
"@types/react-dom": "^18.0.6", | ||
"@vitejs/plugin-react": "^2.0.1", | ||
"less": "^4.1.3", | ||
"prettier": "^2.7.1", | ||
"typescript": "^4.7.4", | ||
"vite": "^3.0.9" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
80026
164
0
Yes
Updatedgsap@^3.11.0