{"version":3,"sources":["fraudio.js"],"names":["$","play_icon","pause_icon","audio_scrubbing","toggleAudio","audio","each","this","pause","data","html","paused","parent","find","play","calculateScrub","event","leftOffset","progress","offset","left","siblings","pageX","css","width","fn","fraudio","filter","$fraudio","replaceWith","clone","addClass","attr","click","closest","on","currentTime","duration","hasClass","document","offsetX","jQuery"],"mappings":"CAAA,SAAUA,GACT,IACCC,EAAY,2SACZC,EAAa,uYAgBbC,GAAkB,EAEnB,SAASC,EAAYC,GACpBL,EAAE,SAASM,KAAK,WACZC,MAAQF,GACVE,KAAKC,UAGPR,EAAEK,GAAOI,KAAK,iBAAkB,GAChCT,EAAE,iBAAiBU,KAAKT,GACrBI,EAAMM,QACRX,EAAEK,GAAOO,SACPC,KAAK,iBACLH,KAAKR,GACPG,EAAMS,QAENT,EAAMG,QAIR,SAASO,EAAeC,GACvB,IACKC,EACAC,EAFFf,IACEc,EAAad,EAAgBgB,SAASC,KACtCF,EAAWlB,EAAEG,EAAgBkB,SAAS,qBAAqB,IAC5DL,EAAMM,MAAQL,EAEhBC,EAASK,IAAI,QAAS,GACZP,EAAMM,MAAQL,EAAad,EAAgBqB,QAErDN,EAASK,IAAI,QAAS,QAGtBL,EAASK,IAAI,QAASP,EAAMM,MAAQL,IAKvCjB,EAAEyB,GAAGC,QAAU,WACdnB,KAAKoB,OAAO,SAASrB,KAAK,WAGzBsB,SAAW5B,EAvDZ,qrBAwDC4B,SAASf,KAAK,SAASgB,YAAY7B,EAAEO,MAAMuB,QAAQC,SAAS,wBAC5DH,SAASf,KAAK,kBAAkBH,KAAKV,EAAEO,MAAMyB,KAAK,eAClDJ,SAASf,KAAK,mBAAmBH,KAAKV,EAAEO,MAAMyB,KAAK,gBAEhDhC,EAAEO,MAAMyB,KAAK,cACfJ,SAASf,KAAK,SAASJ,KAAK,iBAAkB,GAC9CmB,SAASf,KAAK,iBAAiBH,KAAKR,IAIrC0B,SAASf,KAAK,iBAAiBoB,MAAM,WACpC7B,EAAYJ,EAAEO,MAAM2B,QAAQ,sBAAsBrB,KAAK,SAAS,MAGjEe,SAASf,KAAK,SAASsB,GAAG,aAAc,WACvC,IACKjB,EADDf,IACCe,EAAWlB,EAAEO,MAAMc,SAAS,qBAAqB,GACrDrB,EAAEkB,GAAUK,IAAI,QAAShB,KAAK6B,YAAc7B,KAAK8B,SAAW,IAAM,QAIpET,SAASf,KAAK,SAASsB,GAAG,QAAS,WAClCnC,EAAEO,MAAMK,SAASC,KAAK,iBAAiBH,KAAKT,KAG7C2B,SAASf,KAAK,2BAA2BsB,GAAG,YAAa,WACxD,IAAI9B,EAAQL,EAAEO,MAAMc,SAAS,SAAS,GAClCrB,EAAEK,GAAOI,KAAK,kBAGjBN,EAAkBH,EAAEO,MAFpBH,EAAYC,KAOXL,EAAEO,MAAMK,SAAS0B,SAAS,qBAE5BtC,EAAEO,MAAMK,SAASiB,YAAYD,UAE7B5B,EAAEO,MAAMsB,YAAYD,aAMvB5B,EAAEuC,UAAUJ,GAAG,YAAapB,GAC5Bf,EAAEuC,UAAUJ,GAAG,qBAAsB,SAASnB,GAC7C,IAIKX,EAJFF,IACFY,EAAeC,IAGXX,EAAQF,EAAgBkB,SAAS,SAAS,IACxCe,YAAcpB,EAAMwB,QAAUrC,EAAgBqB,QAAUnB,EAAMgC,SACpElC,GAAkB,KAIpBH,EAAE,WACDA,EAAE,YAAY0B,YAvHhB,CA0HGe","file":"fraudio.min.js","sourcesContent":["(function($) {\n\tvar \n\t\tplay_icon = '',\n\t\tpause_icon = '',\n\t\tplayer = \n\t\t'
\\\n\t\t\t\\\n\t\t\t
\\\n\t\t\t\t\\\n\t\t\t\t\t' + play_icon + '\\\n\t\t\t\t\\\n\t\t\t
\\\n\t\t\t
\\\n\t\t\t\t
\\\n\t\t\t\t
\\\n\t\t\t
\\\n\t\t\t
\\\n\t\t\t
\\\n\t\t
',\n\t\taudio_scrubbing = false;\n\t\n\tfunction toggleAudio(audio) {\n\t\t$('audio').each(function() {\n\t\t\tif(this != audio) {\n\t\t\t\tthis.pause();\n\t\t\t}\n\t\t})\n\t\t$(audio).data('played_already', 1);\n\t\t$('.fraudio-play').html(play_icon);\n\t\tif(audio.paused) {\n\t\t\t$(audio).parent()\n\t\t\t\t.find('.fraudio-play')\n\t\t\t\t.html(pause_icon);\n\t\t\taudio.play();\n\t\t} else {\n\t\t\taudio.pause();\n\t\t}\n\t}\n\t\n\tfunction calculateScrub(event) {\n\t\tif(audio_scrubbing) {\n\t\t\tvar leftOffset = audio_scrubbing.offset().left;\n\t\t\tvar progress = $(audio_scrubbing.siblings('.fraudio-progress')[0]);\n\t\t\tif(event.pageX < leftOffset) {\n\t\t\t\t// left of the scrubber\n\t\t\t\tprogress.css('width', 0);\n\t\t\t} else if (event.pageX > leftOffset + audio_scrubbing.width()) {\n\t\t\t\t// right of the scrubber\n\t\t\t\tprogress.css('width', '100%');\n\t\t\t} else {\n\t\t\t\t// somewhere inbetween the scrubber\n\t\t\t\tprogress.css('width', event.pageX - leftOffset);\n\t\t\t}\n\t\t}\n\t}\n\t\n\t$.fn.fraudio = function() {\n\t\tthis.filter('audio').each(function() {\n\t\t\t\n\t\t\t// create the player from the fraudio template\n\t\t\t$fraudio = $(player);\n\t\t\t$fraudio.find('audio').replaceWith($(this).clone().addClass('fraudio-initialized'));\n\t\t\t$fraudio.find('.fraudio-title').html($(this).attr('data-title'));\n\t\t\t$fraudio.find('.fraudio-artist').html($(this).attr('data-artist'));\n\t\t\t\n\t\t\tif($(this).attr('autoplay')) {\n\t\t\t\t$fraudio.find('audio').data('played_already', 1);\n\t\t\t\t$fraudio.find('.fraudio-play').html(pause_icon);\n\t\t\t}\n\t\t\t\n\t\t\t// attach events\n\t\t\t$fraudio.find('.fraudio-play').click(function() {\n\t\t\t\ttoggleAudio($(this).closest('.fraudio-container').find('audio')[0]);\n\t\t\t});\n\t\t\t\n\t\t\t$fraudio.find('audio').on('timeupdate', function() {\n\t\t\t\tif(!audio_scrubbing) {\n\t\t\t\t\tvar progress = $(this).siblings('.fraudio-progress')[0];\n\t\t\t\t\t$(progress).css('width', this.currentTime / this.duration * 100 + '%')\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t$fraudio.find('audio').on('ended', function() {\n\t\t\t\t$(this).parent().find('.fraudio-play').html(play_icon);\n\t\t\t});\n\t\t\t\n\t\t\t$fraudio.find('.fraudio-progress-click').on('mousedown', function() {\n\t\t\t\tvar audio = $(this).siblings('audio')[0];\n\t\t\t\tif(!$(audio).data('played_already')) {\n\t\t\t\t\ttoggleAudio(audio);\n\t\t\t\t} else {\n\t\t\t\t\taudio_scrubbing = $(this);\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\t// replace audio with the new player\n\t\t\tif($(this).parent().hasClass('fraudio-container')) {\n\t\t\t\t// already initialized\n\t\t\t\t$(this).parent().replaceWith($fraudio);\n\t\t\t} else {\n\t\t\t\t$(this).replaceWith($fraudio);\n\t\t\t}\n\t\t});\n\t}\n\t\n\t// attach events for tracking scrubbing\n\t$(document).on('mousemove', calculateScrub);\n\t$(document).on('mouseup mouseleave', function(event) {\n\t\tif(audio_scrubbing) {\n\t\t\tcalculateScrub(event);\n\t\t\t// they clicked on an audio scrubber, now they're releasing the click\n\t\t\t// when the mouse comes up, set the audio offset\n\t\t\tvar audio = audio_scrubbing.siblings('audio')[0];\n\t\t\taudio.currentTime = event.offsetX / audio_scrubbing.width() * audio.duration;\n\t\t\taudio_scrubbing = false;\n\t\t}\n\t});\n\t\n\t$(function() {\n\t\t$('.fraudio').fraudio();\n\t});\n\t\n})(jQuery);"]}