{"version":3,"file":"audioplayer_minimal.min.js","sources":["../src/audioplayer_minimal.js"],"sourcesContent":["\ndefine(['jquery','core/log'], function($, log) {\n    var selectors ={\n        hiddenplayer: '_fpminimal_hiddenaudioplayer',\n        player: '_fpminimal_audioplayer',\n        ppbutton: '_fpminimal_audioplayer .fpminimal_audioplayer_play_button',\n        bar_front: '_fpminimal_audioplayer .fpminimal_audioplayer_bar_front',\n        backbutton: '_fpminimal_audioplayer .fpminimal_audioplayer_skip_button_back',\n        forwardbutton: '_fpminimal_audioplayer .fpminimal_audioplayer_skip_button_forward',\n        timedisplay: '_fpminimal_audioplayer .fpminimal_audioplayer_time'\n    }\n\n    var skipinterval =15;\n\n    var pr = {\n        init: function(opts){\n            this.hplayer = $(opts['player_element'])[0];\n            log.debug(opts['player_element']);\n            log.debug(opts['autoid']);\n            log.debug(opts);\n\n            //init can be called twice, why why\n            if($(this.hplayer).data('init')==1){\n                return;\n            }else{\n                $(this.hplayer).data('init',1);\n            }\n\n            this.vplayer= $('#' + opts['autoid'] + selectors.player);\n            this.ppbutton = $('#' + opts['autoid'] +selectors.ppbutton);\n            this.bar_front = $('#' + opts['autoid'] +selectors.bar_front);\n            this.backbutton = $('#' + opts['autoid'] +selectors.backbutton);\n            this.forwardbutton = $('#' + opts['autoid'] +selectors.forwardbutton);\n            this.timedisplay = $('#' + opts['autoid'] +selectors.timedisplay);\n\n            this.duration = this.hplayer.duration;\n            log.debug('duration is '+this.duration);\n\n            this.register_events();\n            this.update_time();\n        },\n        register_events: function(){\n            var that = this;\n            $(this.ppbutton).on('click',function(){\n                that.toggle_play();\n            });\n            $(this.backbutton).on('click',function(){\n                that.skip_back();\n            });\n            $(this.forwardbutton).on('click',function(){\n                that.skip_forward();\n            });\n            $(this.hplayer).on('timeupdate',function(){\n                that.update_time();\n            });\n            $(this.hplayer).on('ended',function(){\n                $(that.ppbutton).attr('data-state','ended');\n                //reset the time display\n                $(that.timedisplay).text(that.formatAudioTime(that.duration));\n            });\n            $(this.hplayer).on('pause play', function(e) {\n                if (e.currentTarget.paused) {\n                    $(that.ppbutton).attr('data-state','paused');\n                } else {\n                    $(that.ppbutton).attr('data-state','playing');\n                }\n            });\n            $(this.hplayer).on('loadeddata',function(){\n                console.log(\"loadeddata\", that.hplayer.duration);\n                if(that.hplayer.duration === Infinity){\n                    //blobs dont do duration very well, so if its infinity use the time we stashed when recording\n                    that.duration=$(that.hplayer).data('duration');\n                }else {\n                    that.duration = that.hplayer.duration;\n                }\n                $(that.ppbutton).attr('data-state','paused');\n                that.update_time();\n            });\n            $(this.hplayer).on('canplaythrough',function(){\n                //if we get the real duration here, set it\n                if(that.hplayer.duration !== Infinity) {\n                    that.duration = that.hplayer.duration;\n                }\n            });\n\n        },\n        toggle_play: function(){\n            var that = this;\n            if(this.hplayer.paused){\n                this.hplayer.muted=false;\n                console.log(this.hplayer);\n                this.hplayer.play().then(function(){\n                    log.debug('play promise resolved');\n                    $(that.ppbutton).attr('data-state','playing');\n                }).catch(function(e){\n                    log.debug(e,'play promise rejected');\n                });\n            }else{\n                this.hplayer.pause();\n                $(that.ppbutton).attr('data-state','paused');\n            }\n        },\n        update_time: function(){\n            //update the progress bar\n            var percent=0;\n            if(parseInt(this.duration) > 0){\n                percent = (this.hplayer.currentTime/this.duration)*100;\n                if(percent > 100){\n                    percent = 100;\n                }\n            }else{\n                this.duration=0;\n            }\n\n            $(this.bar_front).css('width', percent+'%');\n            //update the time display\n            switch(percent) {\n                case 0:\n                    $(this.timedisplay).text(this.formatAudioTime(this.duration));\n                    break;\n                case 100:\n                    $(this.timedisplay).text(this.formatAudioTime(this.duration));\n                    break;\n                default:\n                    $(this.timedisplay).text(this.formatAudioTime(this.hplayer.currentTime) + '/' + this.formatAudioTime(this.duration));\n            }\n\n\n            //handle back and forward buttons\n            if(this.hplayer.currentTime < skipinterval) {\n                $(this.backbutton).css('opacity', '50%');\n            }else{\n                $(this.backbutton).css('opacity', '100%');\n            }\n\n            if(this.hplayer.currentTime > (this.duration - skipinterval)) {\n                $(this.forwardbutton).css('opacity', '50%');\n            }else{\n                $(this.forwardbutton).css('opacity', '100%');\n            }\n        },\n        skip_back: function(){\n            if(this.hplayer.currentTime > skipinterval) {\n                this.hplayer.currentTime = this.hplayer.currentTime - skipinterval;\n            }else{\n                this.hplayer.currentTime = 0;\n            }\n        },\n        skip_forward: function(){\n            if(this.hplayer.currentTime < (this.duration - skipinterval)) {\n                this.hplayer.currentTime = this.hplayer.currentTime + skipinterval;\n            }else{\n                this.hplayer.currentTime = this.duration;\n            }\n        },\n        formatAudioTime: function (currentTime) {\n            const minutes = Math.floor(currentTime / 60);\n            const seconds = Math.floor(currentTime % 60);\n            const formattedTime = `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n            return formattedTime;\n        }\n\n    };\n\n    //init the player\n    return pr;\n});\n"],"names":["define","$","log","selectors","init","opts","hplayer","debug","this","data","vplayer","ppbutton","bar_front","backbutton","forwardbutton","timedisplay","duration","register_events","update_time","that","on","toggle_play","skip_back","skip_forward","attr","text","formatAudioTime","e","currentTarget","paused","console","Infinity","muted","play","then","catch","pause","percent","parseInt","currentTime","css","minutes","Math","floor","seconds","String","padStart"],"mappings":"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"}