{"version":3,"file":"poodll_uploadrecorder.min.js","sources":["../src/poodll_uploadrecorder.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/uploader'], function ($, log, uploader) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('PoodLL Upload Recorder: initialising');\n\n    return {\n\n        config: null,\n\n        instanceprops: [],\n\n        fetch_instance_props: function (widgetid) {\n            return this.instanceprops[widgetid];\n        },\n\n        init_instance_props: function (widgetid) {\n            var props = {};\n            props.config = null;\n            props.uploader = null;\n            this.instanceprops[widgetid] = props\n        },\n\n        // This recorder supports the current browser\n        supports_current_browser: function (config) {\n            return true;//or false\n        },\n\n        // Perform the embed of this recorder on the page\n        //into the element passed in. with config\n        embed: function (element, config) {\n            this.init_instance_props(config.widgetid);\n            var ip = this.fetch_instance_props(config.widgetid);\n            //set config\n            ip.config = config;\n\n            //set uploader\n            ip.uploader = uploader.clone();\n            ip.uploader.init(element, config);\n\n            //get form and evenets working\n            this.insert_controls(element, config.widgetid);\n            this.register_events(config.widgetid);\n        },\n\n        insert_controls: function (element, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n\n            //for now\n            var acceptmedia = '';\n            var config = ip.config;\n            switch (config.mediatype) {\n                case 'video':\n                    acceptmedia = '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            //html5 recorder proper\n            var controls = '<div class=\"p_btn_wrapper\">';\n\n            controls += '<input type=\"file\" id=\"' + config.widgetid + '_poodllfileselect\" name=\"poodllfileselect[]\" accept=\"' + acceptmedia + '\"/>';\n            controls += '<button type=\"button\" class=\"p_btn\">' + M.util.get_string('recui_recordorchoose', 'filter_poodll') + '</button>';\n            controls += '</div>';\n            $(element).prepend(controls);\n        },\n\n        // handle audio/video/image file uploads for Mobile\n        register_events: function (widgetid) {\n            var self = this;\n            $('#' + widgetid + '_poodllfileselect').on('change', function (e) {\n                    self.FileSelectHandler(e, widgetid);\n                }\n            );\n\n        },\n\n        // file selection\n        FileSelectHandler: function (e, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n\n            // fetch FileList object\n            var files = e.target.files || e.dataTransfer.files;\n\n            // process all File objects\n            for (var i = 0, file; file = files[i]; i++) {\n                //this.ParseFile(f,widgetid);\n                log.debug('filetype:' + file.type);\n                ip.uploader.uploadBlob(file, file.type);\n            }\n        },\n\n        // output file information\n        ParseFile: function (file, widgetid) {\n            var ip = this.fetch_instance_props(widgetid);\n\n            // start upload\n            var filedata = \"\";\n            var reader = new FileReader();\n            reader.onloadend = function (e) {\n                filedata = e.target.result;\n                ip.uploader.uploadFile(filedata, file.type);\n            };\n            log.debug('filetype:' + file.type);\n            reader.readAsDataURL(file);\n\n        }\n\n    }//end of returned object\n});//total end"],"names":["define","$","log","uploader","debug","config","instanceprops","fetch_instance_props","widgetid","this","init_instance_props","props","supports_current_browser","embed","element","ip","clone","init","insert_controls","register_events","acceptmedia","mediatype","test","navigator","userAgent","window","MSStream","controls","M","util","get_string","prepend","self","on","e","FileSelectHandler","file","files","target","dataTransfer","i","type","uploadBlob","ParseFile","filedata","reader","FileReader","onloadend","result","uploadFile","readAsDataURL"],"mappings":"AACAA,6CAAO,CAAC,SAAU,WAAY,2BAA2B,SAAUC,EAAGC,IAAKC,iBAIvED,IAAIE,MAAM,wCAEH,CAEHC,OAAQ,KAERC,cAAe,GAEfC,qBAAsB,SAAUC,iBACrBC,KAAKH,cAAcE,WAG9BE,oBAAqB,SAAUF,cACvBG,MAAQ,CACZA,OAAe,KACfA,SAAiB,WACZL,cAAcE,UAAYG,OAInCC,yBAA0B,SAAUP,eACzB,GAKXQ,MAAO,SAAUC,QAAST,aACjBK,oBAAoBL,OAAOG,cAC5BO,GAAKN,KAAKF,qBAAqBF,OAAOG,UAE1CO,GAAGV,OAASA,OAGZU,GAAGZ,SAAWA,SAASa,QACvBD,GAAGZ,SAASc,KAAKH,QAAST,aAGrBa,gBAAgBJ,QAAST,OAAOG,eAChCW,gBAAgBd,OAAOG,WAGhCU,gBAAiB,SAAUJ,QAASN,cAI5BY,YAAc,GACdf,OAJKI,KAAKF,qBAAqBC,UAInBH,cACRA,OAAOgB,eACN,QACDD,YAAc,oBAEb,eACA,QACDA,YAAc,cACb,QAGGA,YAFM,mBAAmBE,KAAKC,UAAUC,aAAeC,OAAOC,SAEhD,UAEA,kBAGlBN,YAAc,OAIlBO,SAAW,8BAEfA,UAAY,0BAA4BtB,OAAOG,SAAW,wDAA0DY,YAAc,MAClIO,UAAY,uCAAyCC,EAAEC,KAAKC,WAAW,uBAAwB,iBAAmB,YAClHH,UAAY,SACZ1B,EAAEa,SAASiB,QAAQJ,WAIvBR,gBAAiB,SAAUX,cACnBwB,KAAOvB,KACXR,EAAE,IAAMO,SAAW,qBAAqByB,GAAG,UAAU,SAAUC,GACvDF,KAAKG,kBAAkBD,EAAG1B,cAOtC2B,kBAAmB,SAAUD,EAAG1B,kBAOZ4B,KANZrB,GAAKN,KAAKF,qBAAqBC,UAG/B6B,MAAQH,EAAEI,OAAOD,OAASH,EAAEK,aAAaF,MAGpCG,EAAI,EAASJ,KAAOC,MAAMG,GAAIA,IAEnCtC,IAAIE,MAAM,YAAcgC,KAAKK,MAC7B1B,GAAGZ,SAASuC,WAAWN,KAAMA,KAAKK,OAK1CE,UAAW,SAAUP,KAAM5B,cACnBO,GAAKN,KAAKF,qBAAqBC,UAG/BoC,SAAW,GACXC,OAAS,IAAIC,WACjBD,OAAOE,UAAY,SAAUb,GACzBU,SAAWV,EAAEI,OAAOU,OACpBjC,GAAGZ,SAAS8C,WAAWL,SAAUR,KAAKK,OAE1CvC,IAAIE,MAAM,YAAcgC,KAAKK,MAC7BI,OAAOK,cAAcd"}