{"version":3,"file":"poodll_snapshotrecorder.min.js","sources":["../src/poodll_snapshotrecorder.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/utils_amd', 'filter_poodll/uploader', 'filter_poodll/webcam'], function ($, log, utils, uploader, Webcam) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('PoodLL Snapshot Recorder: initialising');\n\n    return {\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.imagefile = false;\n            props.htmlthings = '';\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            var iOS = utils.is_ios();\n            if (iOS) {\n                return false;\n            } else {\n                if (config.mediatype != 'snapshot') {\n                    return false;\n                }\n\n                log.debug('PoodLL Snapshot Recorder: supports this browser');\n                return true;\n            }\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            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\n\n            var htmlthings = {\n                camera: config.widgetid + '_poodll_snapshot_camera',\n                preview: config.widgetid + '_poodll_snapshot_preview',\n                snapbutton: config.widgetid + '_poodll_take-snapshot',\n                savebutton: config.widgetid + '_poodll_save-snapshot',\n                cancelbutton: config.widgetid + '_poodll_cancel-snapshot'\n            };\n            ip.htmlthings = htmlthings;\n\n\n            //html5 snapshot maker proper\n            //camera\n            var controls = '<div id=\"' + htmlthings.camera + '\" style=\"width:320px; height:240px;\"></div>';\n            //preview\n            controls += '<div id=\"' + htmlthings.preview + '\" class=\"hide\" style=\"width:320px; height:240px;\"></div>';\n            //snap button\n            controls += '<button type=\"button\" class=\"poodll_take-snapshot\" id=\"' + htmlthings.snapbutton + '\">' +\n                M.util.get_string('recui_takesnapshot', 'filter_poodll') +\n                '</button>';\n            //cancel button\n            controls += '<button type=\"button\" class=\"poodll_cancel-snapshot\" id=\"' + htmlthings.cancelbutton + '\">' +\n                M.util.get_string('recui_cancelsnapshot', 'filter_poodll') +\n                '</button>';\n            //save button\n            controls += '<button type=\"button\" class=\"poodll_save-recording\" id=\"' + htmlthings.savebutton + '\">' +\n                M.util.get_string('recui_save', 'filter_poodll') +\n                '</button>';\n            $(element).prepend(controls);\n        },\n\n        // handle image file uploads for Mobile\n        register_events: function (widgetid) {\n\n            var ip = this.fetch_instance_props(widgetid);\n            var config = ip.config;\n\n            Webcam.set('swfURL', M.cfg.wwwroot + '/filter/poodll/3rdparty/webcam/webcam.swf');\n            Webcam.attach('#' + ip.htmlthings.camera);\n\n            $('#' + ip.htmlthings.savebutton).on('click', function (e) {\n                if (ip.imagefile) {\n                    var mimetype = 'image/jpeg';\n                    var imageblob = ip.uploader.dataURItoBlob(ip.imagefile, mimetype);\n                    ip.uploader.uploadFile(imageblob, mimetype);\n                } else {\n                    ip.uploader.Output(M.util.get_string('recui_nothingtosaveerror', 'filter_poodll'));\n                }//end of if ip.imagefile\t\t\n            });\n\n            $('#' + ip.htmlthings.cancelbutton).on('click', function (e) {\n                ip.imagefile = false;\n                $('#' + ip.htmlthings.preview).addClass('hide').html('');\n                $('#' + ip.htmlthings.camera).removeClass('hide');\n            });\n\n            $('#' + ip.htmlthings.snapbutton).on('click', function (e) {\n                Webcam.snap(function (data_uri) {\n                    ip.imagefile = data_uri;\n                    $('#' + ip.htmlthings.preview).html('<img src=\"' + data_uri + '\"/>').removeClass('hide');\n                    $('#' + ip.htmlthings.camera).addClass('hide');\n                });\n            });\n\n        }\n    }//end of returned object\n});//total end\n"],"names":["define","$","log","utils","uploader","Webcam","debug","instanceprops","fetch_instance_props","widgetid","this","init_instance_props","props","supports_current_browser","config","is_ios","mediatype","embed","element","ip","clone","init","insert_controls","register_events","htmlthings","camera","preview","snapbutton","savebutton","cancelbutton","controls","M","util","get_string","prepend","set","cfg","wwwroot","attach","on","e","imagefile","imageblob","dataURItoBlob","uploadFile","Output","addClass","html","removeClass","snap","data_uri"],"mappings":"AACAA,+CAAO,CAAC,SAAU,WAAY,0BAA2B,yBAA0B,yBAAyB,SAAUC,EAAGC,IAAKC,MAAOC,SAAUC,eAI3IH,IAAII,MAAM,0CAEH,CAEHC,cAAe,GAEfC,qBAAsB,SAAUC,iBACrBC,KAAKH,cAAcE,WAG9BE,oBAAqB,SAAUF,cACvBG,MAAQ,CACZA,WAAkB,EAClBA,WAAmB,GACnBA,OAAe,KACfA,SAAiB,WACZL,cAAcE,UAAYG,OAInCC,yBAA0B,SAAUC,eACtBX,MAAMY,WAIY,YAApBD,OAAOE,YAIXd,IAAII,MAAM,oDACH,KAMfW,MAAO,SAAUC,QAASJ,aACjBH,oBAAoBG,OAAOL,cAC5BU,GAAKT,KAAKF,qBAAqBM,OAAOL,UAE1CU,GAAGL,OAASA,OAGZK,GAAGf,SAAWA,SAASgB,QACvBD,GAAGf,SAASiB,KAAKH,QAASJ,aAErBQ,gBAAgBJ,QAASJ,OAAOL,eAChCc,gBAAgBT,OAAOL,WAGhCa,gBAAiB,SAAUJ,QAAST,cAC5BU,GAAKT,KAAKF,qBAAqBC,UAI/BK,OAASK,GAAGL,OAGZU,WAAa,CACbC,OAAQX,OAAOL,SAAW,0BAC1BiB,QAASZ,OAAOL,SAAW,2BAC3BkB,WAAYb,OAAOL,SAAW,wBAC9BmB,WAAYd,OAAOL,SAAW,wBAC9BoB,aAAcf,OAAOL,SAAW,2BAEpCU,GAAGK,WAAaA,eAKZM,SAAW,YAAcN,WAAWC,OAAS,8CAEjDK,UAAY,YAAcN,WAAWE,QAAU,2DAE/CI,UAAY,0DAA4DN,WAAWG,WAAa,KAC5FI,EAAEC,KAAKC,WAAW,qBAAsB,iBACxC,YAEJH,UAAY,4DAA8DN,WAAWK,aAAe,KAChGE,EAAEC,KAAKC,WAAW,uBAAwB,iBAC1C,YAEJH,UAAY,2DAA6DN,WAAWI,WAAa,KAC7FG,EAAEC,KAAKC,WAAW,aAAc,iBAChC,YACJhC,EAAEiB,SAASgB,QAAQJ,WAIvBP,gBAAiB,SAAUd,cAEnBU,GAAKT,KAAKF,qBAAqBC,UACtBU,GAAGL,OAEhBT,OAAO8B,IAAI,SAAUJ,EAAEK,IAAIC,QAAU,6CACrChC,OAAOiC,OAAO,IAAMnB,GAAGK,WAAWC,QAElCxB,EAAE,IAAMkB,GAAGK,WAAWI,YAAYW,GAAG,SAAS,SAAUC,MAChDrB,GAAGsB,UAAW,KAEVC,UAAYvB,GAAGf,SAASuC,cAAcxB,GAAGsB,UAD9B,cAEftB,GAAGf,SAASwC,WAAWF,UAFR,mBAIfvB,GAAGf,SAASyC,OAAOd,EAAEC,KAAKC,WAAW,2BAA4B,qBAIzEhC,EAAE,IAAMkB,GAAGK,WAAWK,cAAcU,GAAG,SAAS,SAAUC,GACtDrB,GAAGsB,WAAY,EACfxC,EAAE,IAAMkB,GAAGK,WAAWE,SAASoB,SAAS,QAAQC,KAAK,IACrD9C,EAAE,IAAMkB,GAAGK,WAAWC,QAAQuB,YAAY,WAG9C/C,EAAE,IAAMkB,GAAGK,WAAWG,YAAYY,GAAG,SAAS,SAAUC,GACpDnC,OAAO4C,MAAK,SAAUC,UAClB/B,GAAGsB,UAAYS,SACfjD,EAAE,IAAMkB,GAAGK,WAAWE,SAASqB,KAAK,aAAeG,SAAW,OAAOF,YAAY,QACjF/C,EAAE,IAAMkB,GAAGK,WAAWC,QAAQqB,SAAS"}