{"version":3,"file":"util_dragdrop.min.js","sources":["../src/util_dragdrop.js"],"sourcesContent":["define(['jquery', 'core/log'], function ($, log) {\r\n    \"use strict\"; // jshint ;_;\r\n\r\n    log.debug('Poodll util drag drop: initialising');\r\n\r\n    return {\r\n\r\n        theelement: false,\r\n        uploadfunction: false,\r\n        uploader: false,\r\n        started: false,\r\n        filebutton: false,\r\n\r\n        init: function (element, uploadfunction, ip) {\r\n            this.theelement = element;\r\n            this.uploadfunction = uploadfunction;\r\n            this.uploader = ip.uploader;\r\n            this.filebutton = ip.controlbar.filebutton;\r\n\r\n            if (this.supports_dragdrop(element)) {\r\n                log.debug('registering drag drop');\r\n                this.register_dragdrop();\r\n                this.do_visuals();\r\n            } else {\r\n                log.debug('drag drop not supported');\r\n            }\r\n        },\r\n        //for making multiple instances\r\n        clone: function () {\r\n            return $.extend(true, {}, this);\r\n        },\r\n        supports_dragdrop: function (element) {\r\n            //it seems this works without jqueryui\r\n            return true;\r\n            //return ('draggable' in element) || ('ondragstart' in element && 'ondrop' in element)\r\n        },\r\n\r\n        do_visuals: function () {\r\n            this.theelement.addClass(\"poodll-can-do-drag-drop\");\r\n        },\r\n\r\n        turnoff_dragdrop: function () {\r\n            if (!this.theelement) {\r\n                return;\r\n            }\r\n            this.theelement.removeClass(\"poodll-can-do-drag-drop\");\r\n            this.theelement.removeClass('is-poodll-drag-over');\r\n            //replace events with a simple DD canceller (otherwise if we just remove them, and they DD they will leave the page)\r\n            this.theelement.off('drag dragstart dragend dragover dragenter dragleave drop');\r\n            this.theelement.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n            });\r\n        },\r\n\r\n        register_dragdrop: function () {\r\n\r\n            var that = this;\r\n\r\n            this.theelement.on('drag dragstart dragend dragover dragenter dragleave drop', function (e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                if (that.started) {\r\n                    return;\r\n                }\r\n            }).on('dragover dragenter', function () {\r\n                that.theelement.addClass('is-poodll-drag-over');\r\n            }).on('dragleave dragend drop', function () {\r\n                that.theelement.removeClass('is-poodll-drag-over');\r\n            }).on('drop', function (e) {\r\n                if (that.started) {\r\n                    return;\r\n                }\r\n\r\n                var files = e.originalEvent.dataTransfer.files;\r\n                that.uploadfunction(files, that.uploader);\r\n\r\n                //remove events\r\n                that.turnoff_dragdrop();\r\n                that.filebutton.off('change');\r\n                that.filebutton.attr('disabled', true);\r\n                that.started = true;\r\n\r\n            });\r\n        },\r\n\r\n    }\r\n});"],"names":["define","$","log","debug","theelement","uploadfunction","uploader","started","filebutton","init","element","ip","controlbar","this","supports_dragdrop","register_dragdrop","do_visuals","clone","extend","addClass","turnoff_dragdrop","removeClass","off","on","e","preventDefault","stopPropagation","that","files","originalEvent","dataTransfer","attr"],"mappings":"AAAAA,qCAAO,CAAC,SAAU,aAAa,SAAUC,EAAGC,YAGxCA,IAAIC,MAAM,uCAEH,CAEHC,YAAY,EACZC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EACTC,YAAY,EAEZC,KAAM,SAAUC,QAASL,eAAgBM,SAChCP,WAAaM,aACbL,eAAiBA,oBACjBC,SAAWK,GAAGL,cACdE,WAAaG,GAAGC,WAAWJ,WAE5BK,KAAKC,kBAAkBJ,UACvBR,IAAIC,MAAM,8BACLY,yBACAC,cAELd,IAAIC,MAAM,4BAIlBc,MAAO,kBACIhB,EAAEiB,QAAO,EAAM,GAAIL,OAE9BC,kBAAmB,SAAUJ,gBAElB,GAIXM,WAAY,gBACHZ,WAAWe,SAAS,4BAG7BC,iBAAkB,WACTP,KAAKT,kBAGLA,WAAWiB,YAAY,gCACvBjB,WAAWiB,YAAY,4BAEvBjB,WAAWkB,IAAI,iEACflB,WAAWmB,GAAG,4DAA4D,SAAUC,GACrFA,EAAEC,iBACFD,EAAEE,uBAIVX,kBAAmB,eAEXY,KAAOd,UAENT,WAAWmB,GAAG,4DAA4D,SAAUC,GACrFA,EAAEC,iBACFD,EAAEE,kBACEC,KAAKpB,WAGVgB,GAAG,sBAAsB,WACxBI,KAAKvB,WAAWe,SAAS,0BAC1BI,GAAG,0BAA0B,WAC5BI,KAAKvB,WAAWiB,YAAY,0BAC7BE,GAAG,QAAQ,SAAUC,OAChBG,KAAKpB,aAILqB,MAAQJ,EAAEK,cAAcC,aAAaF,MACzCD,KAAKtB,eAAeuB,MAAOD,KAAKrB,UAGhCqB,KAAKP,mBACLO,KAAKnB,WAAWc,IAAI,UACpBK,KAAKnB,WAAWuB,KAAK,YAAY,GACjCJ,KAAKpB,SAAU"}