{"version":3,"file":"poodll_uploadmediaskin.min.js","sources":["../src/poodll_uploadmediaskin.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/utils_amd', 'filter_poodll/upskin_radial', 'filter_poodll/util_dragdrop'],\n    function ($,  log, utils, upskin_radial, dd) {\n\n        \"use strict\"; // jshint ;_;\n\n        log.debug('PoodLL Upload Media skin: initialising');\n\n        return {\n\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) {\n                this.instanceprops = ip;\n                this.pmr = pmr;\n            },\n\n\n            fetch_status_bar: function (skinname) {\n                var status = '';\n                return status;\n            },\n\n            fetch_preview_audio: function (skinname) {\n                var preview = '';\n                return preview;\n            },\n            fetch_preview_video: function (skinname) {\n                var preview = '';\n                return preview;\n            },\n            fetch_resource_audio: function (skinname) {\n                var resourceplayer = '';\n                return resourceplayer;\n            },\n            fetch_resource_video: function (skinname) {\n                var resourceplayer = '';\n                return resourceplayer;\n            },\n\n            fetch_uploader_skin: function (controlbarid, element) {\n                var ip = this.fetch_instance_props();\n                var upskin = upskin_radial.clone();\n                upskin.init(ip.config, element, ip.controlbar.uploadcanvas, ip.controlbar.uploadmessages);\n                upskin.setDrawParam('lineWidth', 2);\n                upskin.setDrawParam('font', '14px Arial');\n                return upskin;\n            },\n            handle_timer_update: function (controlbarid) {\n                //do nothing\n            },\n            onUploadSuccess: function (controlbarid) {\n                $('#' + controlbarid + ' > .poodll_save-recording').hide();\n                $('#' + controlbarid + ' > .poodll_savedsuccessfully').show();\n            },\n\n            onUploadFailure: function (controlbarid) {\n                return;\n            },\n            onMediaSuccess_video: function (controlbarid) {\n                //this should never be called\n            },\n\n            onMediaSuccess_audio: function (controlbarid) {\n                //this should never be called\n            },\n\n            //insert the control bar and return it to be reused\n            insert_controlbar_video: function (element, controlbarid, preview, resource) {\n                var controlbar = this.prepare_controlbar(element, controlbarid, preview, resource, 'video');\n                return controlbar;\n            },\n            //insert the control bar and return it to be reused\n            insert_controlbar_audio: function (element, controlbarid, preview, resource) {\n                var controlbar = this.prepare_controlbar(element, controlbarid, preview, resource, 'audio');\n                return controlbar;\n            },\n            register_controlbar_events_video: function (onMediaSuccess, controlbarid) {\n                return this.register_events(controlbarid);\n            },\n\n            register_controlbar_events_audio: function (onMediaSuccess, controlbarid) {\n                return this.register_events(controlbarid);\n            },\n\n            fetch_instance_props: function () {\n                return this.instanceprops;\n            },\n\n            prepare_controlbar: function (element, controlbarid, preview, resource, mediatype) {\n                var ip = this.fetch_instance_props();\n\n                //what media are we accepting and how to display that\n                var acceptmedia = '';\n                switch (mediatype) {\n                    case 'video':\n                        acceptmedia = 'video/webm,video/ogg,video/mp4,video/x-m4v,video/*';\n                        break;\n                    case 'snapshot':\n                    case 'image':\n                        acceptmedia = 'image/*';\n                    case 'audio':\n                        var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n                        if (iOS) {\n                            acceptmedia = 'video/*';\n                        } else {\n                            acceptmedia = 'audio/*';\n                        }\n                    default:\n                        acceptmedia = '';\n                }\n\n                //strings for UI\n                if (utils.is_ios() || utils.is_android()) {\n                    var ss_chooselabel = M.util.get_string('recui_recordorchoose', 'filter_poodll');\n                } else {\n                    var ss_chooselabel = M.util.get_string('recui_choosefile', 'filter_poodll');\n                }\n\n                //styles and classes\n                var skin_style = ip.config.media_skin_style;\n                var recorder_class = mediatype == 'video' ? 'poodll_mediarecorder_video' : 'poodll_mediarecorder_audio';\n                var size_class = 'poodll_mediarecorder_size_auto';\n\n                //the controls (all the html)\n                var controls = '<div class=\"poodll_mediarecorderholder_upload '\n                    + recorder_class + '\" id=\"holder_' + controlbarid + '\">';\n\n                controls += '<div class=\"poodll_mediarecorderbox_upload\" id=\"' + controlbarid + '\">';\n                controls += ip.errordialog.fetch_dialogue_box();\n                controls += '<div class=\"style-holder ' + skin_style + '\">';\n\n                if (mediatype == 'audio') {\n                    var canvaswidth = 250;\n                    var canvasheight = 50;\n                } else {\n                    var canvaswidth = 130;\n                    var canvasheight = 210;\n                }\n                //we keep the canvas same height as video, but narrowe so the radial stays under the timer (we center it with CSS)\n                controls += '<div class=\"poodll_mediarecorder_uploadcanvas_cont_upload\"><canvas id=\"' + controlbarid + '_uploadcanvas\" width=\"' + canvaswidth + '\" height=\"'\n                    + canvasheight + '\" class=\"poodll_mediarecorder_uploadcanvas_upload\"></canvas></div>';\n                //upload button/s proper\n                controls += '<div class=\"p_btn_wrapper\">';\n                controls += '<input type=\"file\" id=\"' + controlbarid + '_poodllfileselect\" name=\"poodllfileselect[]\" accept=\"' + acceptmedia + '\"/>';\n                controls += '<button type=\"button\" id=\"' + controlbarid + '_p_btn\" class=\"p_btn\">' + ss_chooselabel + '</button>';\n                controls += '</div>';\n\n                controls += '<div class=\"poodll_uploadmessages_once\"></div>';\n\n                controls += '</div></div></div>';\n\n                //put the html on the page\n                $(element).prepend(controls);\n\n\n                //get a handle on the controls and return the collection\n                var controlbar = {\n                    errorsdialog: $('#' + controlbarid + ' .poodll_dialogue_box_errors'),\n                    filebutton: $('#' + controlbarid + '_poodllfileselect'),\n                    startbutton: $('#' + controlbarid + '_p_btn'),\n                    uploadcanvas: $('#' + controlbarid + '_uploadcanvas'),\n                    uploadmessages: $('#' + controlbarid + ' .poodll_uploadmessages_once'),\n                };\n\n                //settings and error dialogs\n                //They use the same dialog and just fill it with diofferent stuff\n                //settings is on 'this' because it is shown from skkn events, but errors are from pmr stuff\n                ip.errordialog.set_dialogue_box(controlbar.errorsdialog);\n                return controlbar;\n            },\n\n\n            // handle audio/video/image file uploads for Mobile\n            register_events: function (controlbarid) {\n                var self = this;\n                var pmr = this.pmr;\n                var ip = this.fetch_instance_props();\n\n                // so we enable messages to API client and timer\n                ip.config.hermes.enable();\n\n\n                ip.controlbar.filebutton.on('change', function (e) {\n                    // fetch Files and pass to upload\n                    var files = e.target.files || e.dataTransfer.files;\n                    self.FileSelectHandler(files, ip.uploader);\n\n                    //remove drag and drop and button events\n                    dd.turnoff_dragdrop();\n\n                    //turn off the button\n                    ip.controlbar.filebutton.off('change');\n                    ip.controlbar.filebutton.attr('disabled', true);\n                });\n\n                dd.init(ip.controlbar.uploadcanvas, this.FileSelectHandler, ip);\n            },\n\n            // file selection\n            FileSelectHandler: function (files, uploader) {\n\n                // process all File objects\n                for (var i = 0, file; file = files[i]; i++) {\n                    log.debug('filetype:' + file.type);\n                    uploader.uploadBlob(file, file.type);\n                }\n\n            }\n        }//end of returned object\n\n\n    });//total end"],"names":["define","$","log","utils","upskin_radial","dd","debug","instanceprops","pmr","clone","extend","this","init","ip","fetch_status_bar","skinname","fetch_preview_audio","fetch_preview_video","fetch_resource_audio","fetch_resource_video","fetch_uploader_skin","controlbarid","element","fetch_instance_props","upskin","config","controlbar","uploadcanvas","uploadmessages","setDrawParam","handle_timer_update","onUploadSuccess","hide","show","onUploadFailure","onMediaSuccess_video","onMediaSuccess_audio","insert_controlbar_video","preview","resource","prepare_controlbar","insert_controlbar_audio","register_controlbar_events_video","onMediaSuccess","register_events","register_controlbar_events_audio","mediatype","acceptmedia","test","navigator","userAgent","window","MSStream","is_ios","is_android","ss_chooselabel","M","util","get_string","skin_style","media_skin_style","controls","errordialog","fetch_dialogue_box","canvaswidth","canvasheight","prepend","errorsdialog","filebutton","startbutton","set_dialogue_box","self","hermes","enable","on","e","files","target","dataTransfer","FileSelectHandler","uploader","turnoff_dragdrop","off","attr","file","i","type","uploadBlob"],"mappings":"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"}