{"version":3,"file":"poodll_burntrosemediaskin.min.js","sources":["../src/poodll_burntrosemediaskin.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/utils_amd'], function ($, log, utils) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('PoodLL Burnt Rose Skin: initialising');\n\n    return {\n\n        instanceprops: null,\n        pmr: null,\n\n        //for making multiple instances\n        clone: function () {\n            return $.extend(true, {}, this);\n        },\n\n        init: function (ip, pmr, controlbarid) {\n            this.instanceprops = ip;\n            this.pmr = pmr;\n        },\n\n        fetch_instanceprops: function () {\n            return this.instanceprops;\n        },\n\n\n        onUploadSuccess: function (widgetid) {\n            log.debug('from poodllmediarecorder: uploadsuccess');\n            var controlbarid = 'filter_poodll_controlbar_' + widgetid;\n            $('#' + controlbarid + ' > .poodll_save-recording').hide();\n            $('#' + controlbarid + ' > .poodll_savedsuccessfully').show();\n        },\n\n        onUploadFailure: function (controlbarid) {\n            log.debug('from poodllmediarecorder: uploadfailure');\n        },\n\n        fetch_status_bar: function (skin) {\n            var status = '<div class=\"poodll_status_' + skin + '\" width=\"320\" height=\"50\">00:00:00</div>';\n            return status;\n        },\n\n        fetch_preview_audio: function (skin) {\n            var preview = '<audio class=\"poodll_preview_' + skin + ' hide\" controls playsinline=\"playsinline\" muted></audio>';\n            return preview;\n        },\n        fetch_preview_video: function (skin) {\n            var preview = '<video class=\"poodll_preview_' + skin + '\" width=\"320\" height=\"240\" playsinline=\"playsinline\" muted></video>';\n            return preview;\n        },\n        fetch_resource_audio: function (skin) {\n            var resourceplayer = '<audio class=\"poodll_resourceplayer_' + skin + ' hide\" playsinline=\"playsinline\" ></audio>';\n            return resourceplayer;\n        },\n        fetch_resource_video: function (skin) {\n            var resourceplayer = '<video class=\"poodll_resourceplayer_' + skin + ' hide\" playsinline=\"playsinline\"></video>';\n            return resourceplayer;\n        },\n\n        onMediaError: function (e) {\n            console.error('media error', e);\n        },\n\n        onMediaSuccess_video: function (controlbarid) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            ip.controlbar.stopbutton.attr('disabled', false);\n            ip.controlbar.pausebutton.attr('disabled', false);\n            ip.controlbar.savebutton.attr('disabled', false);\n        },\n\n        onMediaSuccess_audio: function (controlbarid) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            ip.controlbar.preview.attr('src', null);\n            ip.controlbar.stopbutton.attr('disabled', false);\n            ip.controlbar.pausebutton.attr('disabled', false);\n            ip.controlbar.savebutton.attr('disabled', false);\n        },\n\n        handle_timer_update: function (controlbarid) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            ip.controlbar.status.html(ip.timer.fetch_display_time());\n            if (ip.timer.seconds == 0 && ip.timer.initseconds > 0) {\n                ip.controlbar.stopbutton.click();\n            }\n        },\n\n        update_status: function (controlbarid) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            ip.controlbar.status.html(ip.timer.fetch_display_time());\n        },\n\n        //\n        // BURNTROSE SKIN\n        //\n        //\n\n        //set visuals for different states (ie recording or playing)\n        set_visual_mode: function (mode, controlbarid) {\n            var self = this;\n            var ip = this.fetch_instanceprops(controlbarid);\n\n            switch (mode) {\n\n                case 'recordmode':\n                    ip.controlbar.preview.addClass('poodll_recording');\n                    ip.controlbar.status.addClass('poodll_recording');\n                    if (ip.config.mediatype == 'audio') {\n                        ip.controlbar.preview.addClass('hide');\n                    }\n                    ip.controlbar.status.removeClass('hide');\n                    break;\n\n                case 'previewmode':\n                    ip.controlbar.preview.removeClass('poodll_recording');\n                    ip.controlbar.status.removeClass('poodll_recording');\n                    break;\n\n                case 'pausedmode':\n                    ip.controlbar.preview.removeClass('poodll_recording');\n                    ip.controlbar.status.removeClass('poodll_recording');\n                    break;\n            }\n\n        },\n\n\n        //insert the control bar and return it to be reused\n        insert_controlbar_audio: function (element, controlbarid, preview, resource) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            var skin_style = ip.config.media_skin_style;\n\n            var size_class = 'poodll_mediarecorder_size_auto';\n            switch (ip.config.size) {\n                case 'small':\n                    size_class = 'poodll_mediarecorder_size_small';\n                    break;\n                case 'big':\n                    size_class = 'poodll_mediarecorder_size_big';\n                    break;\n                case 'auto':\n                    size_class = 'poodll_mediarecorder_size_auto';\n            }\n\n            var controls = '<div class=\"poodll_mediarecorderbox_burntrose ' + skin_style + ' ' + size_class + '\" id=\"' + controlbarid + '\">';\n            var status = this.fetch_status_bar('burntrose');\n            controls += status,\n                controls += preview,\n                controls += '<span class=\"poodll_start-recording\" title=\"' + M.util.get_string('recui_record', 'filter_poodll') + '\"></span>';\n            controls += '<span class=\"poodll_stop-recording hide\" title=\"' + M.util.get_string('recui_stop', 'filter_poodll') + '\"></span>';\n            controls += '<span class=\"poodll_pause-recording hide\" title=\"' + M.util.get_string('recui_pause', 'filter_poodll') + '\"></span>';\n            controls += ' <span class=\"poodll_resume-recording hide\"title=\"' + M.util.get_string('recui_continue', 'filter_poodll') + '\" ></span>';\n            controls += ' <span class=\"poodll_play-recording\" ></span>';\n            controls += ' <span class=\"poodll_playsave hide\" title=\"' + M.util.get_string('recui_play', 'filter_poodll') + '\" ></span>';\n            controls += ' <span class=\"poodll_mic\" ></span>';\n            controls += ' <span class=\"poodll_recmic hide\" ></span>';\n            controls += ' <span class=\"poodll_resume_mic hide\" ></span>';\n            controls += '<span class=\"poodll_savebtn\" ></span>';\n            controls += '<span class=\"poodll_save-recording_burntrose hide\" title=\"' + M.util.get_string('recui_save', 'filter_poodll') + '\" ></span>';\n            controls += '<span class=\"poodll_savedsuccessfully hide\"></span>';\n            controls += '</div>';\n            $(element).prepend(controls);\n            var controlbar = {\n                status: $('#' + controlbarid + ' .poodll_status_burntrose'),\n                preview: $('#' + controlbarid + ' .poodll_preview_burntrose'),\n                startbutton: $('#' + controlbarid + ' .poodll_start-recording'),\n                stopbutton: $('#' + controlbarid + '  .poodll_stop-recording'),\n                pausebutton: $('#' + controlbarid + ' .poodll_pause-recording'),\n                resumebutton: $('#' + controlbarid + ' .poodll_resume-recording'),\n                play1: $('#' + controlbarid + ' .poodll_play-recording'),\n                playbutton: $('#' + controlbarid + ' > .poodll_playsave'),\n                save1: $('#' + controlbarid + ' .poodll_savebtn'),\n                savebutton: $('#' + controlbarid + ' .poodll_save-recording_burntrose'),\n                savesuccess: $('#' + controlbarid + ' .poodll_savedsuccessfully'),\n\n                playermic: $('#' + controlbarid + ' .poodll_mic'),\n                recordmic: $('#' + controlbarid + ' .poodll_recmic'),\n                resumemic: $('#' + controlbarid + ' .poodll_resume_mic')\n            };\n            return controlbar;\n        }, //end of fetch_control_bar_burntrose,\n\n        //insert the control bar and return it to be reused\n        insert_controlbar_video: function (element, controlbarid, preview, resource) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            var skin_style = ip.config.media_skin_style;\n\n            var size_class = 'poodll_mediarecorder_size_auto';\n            switch (ip.config.size) {\n                case 'small':\n                    size_class = 'poodll_mediarecorder_size_small';\n                    break;\n                case 'big':\n                    size_class = 'poodll_mediarecorder_size_big';\n                    break;\n                case 'auto':\n                    size_class = 'poodll_mediarecorder_size_auto';\n            }\n\n            var controls = '<div class=\"poodll_mediavideobox ' + skin_style + ' ' + size_class + '\" id=\"' + controlbarid + '\">';\n            var status = this.fetch_status_bar('burntrose');\n            controls += status,\n                controls += preview,\n                controls += '<div class=\"poodll_mediavideobox2\" id=\"' + controlbarid + '\">';\n            controls += '<span class=\"poodll_start-recording\" title=\"' + M.util.get_string('recui_record', 'filter_poodll') + '\"></span>';\n            controls += '<span class=\"poodll_stop-recording hide\" title=\"' + M.util.get_string('recui_stop', 'filter_poodll') + '\"></span>';\n            controls += '<span class=\"poodll_pause-recording hide\" title=\"' + M.util.get_string('recui_pause', 'filter_poodll') + '\" ></span>';\n            controls += ' <span class=\"poodll_resume-recording hide\" title=\"' + M.util.get_string('recui_continue', 'filter_poodll') + '\"></span>';\n            controls += ' <span class=\"poodll_play-recording\" ></span>';\n            controls += ' <span class=\"poodll_playsave hide\" title=\"' + M.util.get_string('recui_play', 'filter_poodll') + '\"></span>';\n            controls += ' <span class=\"poodll_mic hide\" ></span>';\n            controls += ' <span class=\"poodll_recmic hide\" ></span>';\n            controls += ' <span class=\"poodll_resume_mic hide\" ></span>';\n\n            controls += '<span class=\"poodll_savebtn \"title=\"' + M.util.get_string('recui_save', 'filter_poodll') + '\" ></span>';\n            controls += '<span class=\"poodll_save-recording_burntrose hide \"title=\"' + M.util.get_string('recui_save', 'filter_poodll') + '\" ></span>';\n            controls += '<span class=\"poodll_savedsuccessfully hide\" ></span>';\n            controls += '</div>';\n            controls += '</div>';\n\n\n            $(element).prepend(controls);\n            var controlbar = {\n                status: $('#' + controlbarid + ' > .poodll_status_burntrose'),\n                preview: $('#' + controlbarid + ' > .poodll_preview_burntrose'),\n                startbutton: $('#' + controlbarid + ' > .poodll_start-recording'),\n                stopbutton: $('#' + controlbarid + ' > .poodll_stop-recording'),\n                pausebutton: $('#' + controlbarid + ' > .poodll_pause-recording'),\n                resumebutton: $('#' + controlbarid + ' > .poodll_resume-recording'),\n                play1: $('#' + controlbarid + ' > .poodll_play-recording'),\n                playbutton: $('#' + controlbarid + ' > .poodll_playsave'),\n                save1: $('#' + controlbarid + ' > .poodll_savebtn'),\n                savebutton: $('#' + controlbarid + ' > .poodll_save-recording_burntrose'),\n                savesuccess: $('#' + controlbarid + ' > .poodll_savedsuccessfully'),\n\n                playermic: $('#' + controlbarid + '> .poodll_mic'),\n                recordmic: $('#' + controlbarid + '> .poodll_recmic'),\n                resumemic: $('#' + controlbarid + '> .poodll_resume_mic')\n            };\n            return controlbar;\n        }, //end of fetch_control_bar_video_burntrose\n\n        register_controlbar_events_video: function (onMediaSuccess, controlbarid) {\n            return this.register_controlbar_events_audio(onMediaSuccess, controlbarid);\n        },\n\n        register_controlbar_events_audio: function (onMediaSuccess, controlbarid) {\n            var self = this;\n            var pmr = this.pmr;\n            var ip = this.fetch_instanceprops(controlbarid);\n\n            ip.controlbar.startbutton.click(function () {\n                this.disabled = false;\n\n                //clear messages\n                $('#' + ip.config.widgetid + '_messages').text('');\n\n                pmr.do_start_audio(ip, onMediaSuccess);\n\n                ip.controlbar.playermic.hide();\n                ip.controlbar.recordmic.show();\n                ip.controlbar.playbutton.hide();\n                ip.controlbar.play1.hide();\n                ip.controlbar.pausebutton.show();\n                ip.controlbar.pausebutton.attr('disabled', false);\n\n                ip.controlbar.startbutton.hide();\n\n                ip.controlbar.stopbutton.show();\n                ip.controlbar.stopbutton.attr('disabled', false);\n\n                ip.controlbar.savebutton.hide();\n                ip.controlbar.savesuccess.hide();\n                ip.controlbar.save1.show();\n\n\n                self.set_visual_mode('recordmode', controlbarid);\n\n                //timer and status bar\n                //timer and status bar\n                ip.timer.reset();\n                ip.timer.start();\n                self.update_status(controlbarid);\n\n            });\n\n\n            ip.controlbar.stopbutton.click(function () {\n                this.disabled = false;\n\n                ip.controlbar.stopbutton.hide();\n\n                ip.controlbar.startbutton.show();\n                ip.controlbar.startbutton.attr('disabled', false);\n\n\n                //ip.controlbar.savebutton.removeClass('poodll_save-recording_burntrose');\n                //ip.controlbar.savebutton.addClass('poodll_savebtn');\n\n\n                ip.controlbar.resumebutton.hide();\n                ip.controlbar.pausebutton.hide();\n                ip.controlbar.play1.hide();\n                ip.controlbar.playbutton.show();\n\n                ip.controlbar.save1.hide();\n                ip.controlbar.savesuccess.hide();\n                ip.controlbar.savebutton.show();\n\n\n                ip.controlbar.resumemic.hide();\n                ip.controlbar.recordmic.hide();\n                ip.controlbar.playermic.show();\n\n\n                pmr.do_stop_audio(ip);\n                var preview = ip.controlbar.preview;\n                if (preview && preview.get(0)) {\n                    preview.get(0).pause();\n                }\n\n                //turn border black etc\n                self.set_visual_mode('previewmode', controlbarid);\n                //timer and status bar\n                ip.timer.stop()\n                self.update_status(controlbarid);\n\n\n                if (!ip.uploaded) {\n                    ip.controlbar.startbutton.attr('disabled', false);\n                }\n\n\n            });\n\n            ip.controlbar.pausebutton.click(function () {\n                this.disabled = true;\n                $(this).hide();\n                ip.controlbar.resumebutton.show();\n                pmr.do_pause_audio(ip);\n                ip.controlbar.resumebutton.attr('disabled', false);\n                self.set_visual_mode('pausedmode', controlbarid);\n\n                //timer and status bar\n                ip.timer.pause();\n                self.update_status(controlbarid);\n\n                ip.controlbar.recordmic.hide();\n                ip.controlbar.resumemic.show();\n            });\n\n            ip.controlbar.resumebutton.click(function () {\n                this.disabled = true;\n                $(this).hide();\n                ip.controlbar.pausebutton.show();\n                pmr.do_resume_audio(ip);\n                ip.controlbar.pausebutton.attr('disabled', false);\n                self.set_visual_mode('recordmode', controlbarid);\n\n                //timer and status bar\n                ip.timer.resume();\n                self.update_status(controlbarid);\n                ip.controlbar.resumemic.hide();\n                ip.controlbar.recordmic.show();\n            });\n\n            ip.controlbar.playbutton.click(function () {\n                this.disabled = false;\n                var preview = ip.controlbar.preview.get(0);\n\n                //if we are playing already, lets stop\n                if (preview.currentTime > 0 && !preview.paused) {\n                    preview.pause();\n                    preview.currentTime = 0;\n                    return;\n                }\n\n                pmr.do_play_audio(ip, preview);\n\n                ip.controlbar.startbutton.show();\n            });\n\n            ip.controlbar.savebutton.click(function () {\n                this.disabled = false;\n\n                if (ip.blobs && ip.blobs.length > 0) {\n                    pmr.do_save_audio(ip);\n                    ip.uploaded = true;\n                    ip.controlbar.startbutton.attr('disabled', true);\n                } else {\n                    ip.uploader.Output(M.util.get_string('recui_nothingtosaveerror', 'filter_poodll'));\n                }//end of if ip.blobs\t\t\n                //probably not necessary  ... but getting odd ajax errors occasionally\n                return false;\n            });//end of save recording\n\n            window.onbeforeunload = function () {\n                ip.controlbar.startbutton.attr('disabled', false);\n                var preview = ip.controlbar.preview;\n                if (preview && preview.get(0)) {\n                    preview.get(0).pause();\n                }\n            };\n        }//end of register_controlbar_events_burntrose\n\n    };//end of returned object\n});//total end\n\n\n\n"],"names":["define","$","log","utils","debug","instanceprops","pmr","clone","extend","this","init","ip","controlbarid","fetch_instanceprops","onUploadSuccess","widgetid","hide","show","onUploadFailure","fetch_status_bar","skin","fetch_preview_audio","fetch_preview_video","fetch_resource_audio","fetch_resource_video","onMediaError","e","console","error","onMediaSuccess_video","controlbar","stopbutton","attr","pausebutton","savebutton","onMediaSuccess_audio","preview","handle_timer_update","status","html","timer","fetch_display_time","seconds","initseconds","click","update_status","set_visual_mode","mode","addClass","config","mediatype","removeClass","insert_controlbar_audio","element","resource","skin_style","media_skin_style","size_class","size","controls","M","util","get_string","prepend","startbutton","resumebutton","play1","playbutton","save1","savesuccess","playermic","recordmic","resumemic","insert_controlbar_video","register_controlbar_events_video","onMediaSuccess","register_controlbar_events_audio","self","disabled","text","do_start_audio","reset","start","do_stop_audio","get","pause","stop","uploaded","do_pause_audio","do_resume_audio","resume","currentTime","paused","do_play_audio","blobs","length","do_save_audio","uploader","Output","window","onbeforeunload"],"mappings":"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"}