{"version":3,"file":"drawingboard_amd.min.js","sources":["../src/drawingboard_amd.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log', 'filter_poodll/utils_amd', 'filter_poodll/uploader', 'filter_poodll/drawingboard'], function ($, log, utils, uploader, DrawingBoard) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('Filter PoodLL: drawingboard.js initialising');\n\n    return {\n\n        instanceprops: [],\n\n\n        // handle drawingboard whiteboard saves for Moodle\n        loaddrawingboard: function (opts) {\n\n            //pick up opts from html\n            var theid = '#amdopts_' + opts['recorderid'];\n            var optscontrol = $(theid).get(0);\n            if (optscontrol) {\n                opts = JSON.parse(optscontrol.value);\n                if (opts['bgimage']) {\n                    var erasercolor = 'transparent';\n                } else {\n                    var erasercolor = 'background';\n                    opts['bgimage'] = '#FFF';\n                }\n\n                this.config = opts;\n                $(theid).remove();\n            }\n\n\n            // load the whiteboard and save the canvas reference\n            var element = '#' + opts['recorderid'] + 'drawing-board-id';\n            var db = new DrawingBoard.Board(opts['recorderid'] + '_drawing-board-id', {\n                recorderid: opts['recorderid'],\n                size: 3,\n                background: opts['bgimage'],\n                controls: ['Color',\n                    {Size: {type: 'auto'}},\n                    {DrawingMode: {filler: false, eraser: true, pencil: true}},\n                    'Navigation'\n                ],\n                droppable: true,\n                webStorage: false,\n                enlargeYourContainer: true,\n                eraserColor: erasercolor\n            });\n            opts.db = db;\n\n\n            //restore previous drawing if any\n            //restore vectordata\n            var vectordata = opts['vectordata'];\n            if (vectordata) {\n                //dont do anything if its not JSON (ie it coule be from LC)\n                if (vectordata.indexOf('{\"shapes\"') != 0 && vectordata.indexOf('{\"colors\"') != 0) {\n                    db.history = Y.JSON.parse(vectordata);\n                    db.setImg(db.history.values[db.history.position - 1]);\n                }\n            }\n\n            //init uploader\n            opts.uploader = uploader.clone();\n            opts.uploader.init(element, opts);\n\n            //store opts in instance props, cos this is a singleton\n            this.instanceprops[opts['recorderid']] = opts;\n\n            //register the draw and save events that we need to handle\n            this.registerEvents(opts['recorderid']);\n\n        },\n\n        registerEvents: function (recid) {\n            //register events. if autosave we need to do more.\n            var opts = this.instanceprops[recid];\n            if (opts['autosave']) {\n                //autosave, clear messages and save callbacks on start drawing\n                var doStartDrawing = function () {\n                    var m = document.getElementById(recid + '_messages');\n                    if (m) {\n                        m.innerHTML = 'File has not been saved.';\n                        var savebutton = document.getElementById(recid + '_btn_upload_whiteboard');\n                        savebutton.disabled = false;\n                        var th = utils.timeouthandles[recid];\n                        if (th) {\n                            clearTimeout(th);\n                        }\n                        utils.timeouthandles[recid] = setTimeout(\n                            function () {\n                                utils.WhiteboardUploadHandler(recid, opts.db, opts, opts.uploader);\n                            },\n                            opts['autosave']);\n                    }\n                }//end of start drawing function\n\n                //autosave, clear previous callbacks,set new save callbacks on stop drawing\n                var doStopDrawing = function () {\n                    var m = document.getElementById(recid + '_messages');\n                    if (m) {\n                        var th = utils.timeouthandles[recid];\n                        if (th) {\n                            clearTimeout(th);\n                        }\n                        utils.timeouthandles[recid] = setTimeout(\n                            function () {\n                                utils.WhiteboardUploadHandler(recid, opts.db, opts, opts.uploader);\n                            },\n                            opts['autosave']);\n                    }\n                }//end of stop drawing function\n\n                //autosave, clear previous callbacks,set new save callbacks on stop drawing\n                opts.db.ev.bind('board:startDrawing', doStartDrawing);\n                opts.db.ev.bind('board:stopDrawing', doStopDrawing);\n                opts.db.ev.bind('board:reset', doStopDrawing);\n                opts.db.ev.bind('historyNavigation', doStopDrawing);\n\n\n            } else {\n                var doStopDrawing = function () {\n                    var m = document.getElementById(recid + '_messages');\n                    if (m) {\n                        m.innerHTML = 'File has not been saved.';\n                    }\n                }//end of stop drawing function\n                opts.db.ev.bind('board:stopDrawing', doStopDrawing);\n            }\n\n            //set up the upload/save button\n            var uploadbuttonstring = '#' + recid + '_btn_upload_whiteboard';\n            var uploadbutton = $(uploadbuttonstring);\n            if (uploadbutton) {\n                if (opts.autosave) {\n                    uploadbutton.click(function () {\n                        utils.WhiteboardUploadHandler(recid, opts.db, opts, opts.uploader);\n                    });\n                } else {\n                    uploadbutton.click(\n                        function () {\n                            var cvs = utils.getCvs(recid, opts.db, opts);\n                            utils.pokeVectorData(recid, opts.db, opts);\n                            opts.uploader.uploadFile(cvs.toDataURL(), 'image/png');\n                        });\n                }\n            }//end of if upload button\n        } //end of reg events\n    }\n});"],"names":["define","$","log","utils","uploader","DrawingBoard","debug","instanceprops","loaddrawingboard","opts","theid","optscontrol","get","JSON","parse","value","erasercolor","config","remove","element","db","Board","recorderid","size","background","controls","Size","type","DrawingMode","filler","eraser","pencil","droppable","webStorage","enlargeYourContainer","eraserColor","vectordata","indexOf","history","Y","setImg","values","position","clone","init","registerEvents","recid","this","doStopDrawing","document","getElementById","th","timeouthandles","clearTimeout","setTimeout","WhiteboardUploadHandler","ev","bind","m","innerHTML","disabled","uploadbutton","autosave","click","cvs","getCvs","pokeVectorData","uploadFile","toDataURL"],"mappings":"AACAA,wCAAO,CAAC,SAAU,WAAY,0BAA2B,yBAA0B,+BAA+B,SAAUC,EAAGC,IAAKC,MAAOC,SAAUC,qBAIjJH,IAAII,MAAM,+CAEH,CAEHC,cAAe,GAIfC,iBAAkB,SAAUC,UAGpBC,MAAQ,YAAcD,KAAI,WAC1BE,YAAcV,EAAES,OAAOE,IAAI,MAC3BD,YAAa,KACbF,KAAOI,KAAKC,MAAMH,YAAYI,QACtB,YACAC,YAAc,kBACf,CACCA,YAAc,aAClBP,KAAI,QAAc,YAGjBQ,OAASR,KACdR,EAAES,OAAOQ,aAKTC,QAAU,IAAMV,KAAI,WAAiB,mBACrCW,GAAK,IAAIf,aAAagB,MAAMZ,KAAI,WAAiB,oBAAqB,CACtEa,WAAYb,KAAI,WAChBc,KAAM,EACNC,WAAYf,KAAI,QAChBgB,SAAU,CAAC,QACP,CAACC,KAAM,CAACC,KAAM,SACd,CAACC,YAAa,CAACC,QAAQ,EAAOC,QAAQ,EAAMC,QAAQ,IACpD,cAEJC,WAAW,EACXC,YAAY,EACZC,sBAAsB,EACtBC,YAAanB,cAEjBP,KAAKW,GAAKA,OAKNgB,WAAa3B,KAAI,WACjB2B,YAEuC,GAAnCA,WAAWC,QAAQ,cAAwD,GAAnCD,WAAWC,QAAQ,eAC3DjB,GAAGkB,QAAUC,EAAE1B,KAAKC,MAAMsB,YAC1BhB,GAAGoB,OAAOpB,GAAGkB,QAAQG,OAAOrB,GAAGkB,QAAQI,SAAW,KAK1DjC,KAAKL,SAAWA,SAASuC,QACzBlC,KAAKL,SAASwC,KAAKzB,QAASV,WAGvBF,cAAcE,KAAI,YAAkBA,UAGpCoC,eAAepC,KAAI,aAI5BoC,eAAgB,SAAUC,WAElBrC,KAAOsC,KAAKxC,cAAcuC,UAC1BrC,KAAI,SAAc,KAqBduC,cAAgB,cACRC,SAASC,eAAeJ,MAAQ,aACjC,KACCK,GAAKhD,MAAMiD,eAAeN,OAC1BK,IACAE,aAAaF,IAEjBhD,MAAMiD,eAAeN,OAASQ,YAC1B,WACInD,MAAMoD,wBAAwBT,MAAOrC,KAAKW,GAAIX,KAAMA,KAAKL,YAE7DK,KAAI,YAKhBA,KAAKW,GAAGoC,GAAGC,KAAK,sBAnCK,eACbC,EAAIT,SAASC,eAAeJ,MAAQ,gBACpCY,EAAG,CACHA,EAAEC,UAAY,2BACGV,SAASC,eAAeJ,MAAQ,0BACtCc,UAAW,MAClBT,GAAKhD,MAAMiD,eAAeN,OAC1BK,IACAE,aAAaF,IAEjBhD,MAAMiD,eAAeN,OAASQ,YAC1B,WACInD,MAAMoD,wBAAwBT,MAAOrC,KAAKW,GAAIX,KAAMA,KAAKL,YAE7DK,KAAI,cAsBhBA,KAAKW,GAAGoC,GAAGC,KAAK,oBAAqBT,eACrCvC,KAAKW,GAAGoC,GAAGC,KAAK,cAAeT,eAC/BvC,KAAKW,GAAGoC,GAAGC,KAAK,oBAAqBT,mBAGlC,CACCA,cAAgB,eACZU,EAAIT,SAASC,eAAeJ,MAAQ,aACpCY,IACAA,EAAEC,UAAY,6BAGtBlD,KAAKW,GAAGoC,GAAGC,KAAK,oBAAqBT,mBAKrCa,aAAe5D,EADM,IAAM6C,MAAQ,0BAEnCe,eACIpD,KAAKqD,SACLD,aAAaE,OAAM,WACf5D,MAAMoD,wBAAwBT,MAAOrC,KAAKW,GAAIX,KAAMA,KAAKL,aAG7DyD,aAAaE,OACT,eACQC,IAAM7D,MAAM8D,OAAOnB,MAAOrC,KAAKW,GAAIX,MACvCN,MAAM+D,eAAepB,MAAOrC,KAAKW,GAAIX,MACrCA,KAAKL,SAAS+D,WAAWH,IAAII,YAAa"}