/* WebUploader 0.1.2 */ !(function (a, b) { var c, d = {}, e = function (a, b) { var c, d, e; if ('string' == typeof a) return h(a); for (c = [], d = a.length, e = 0; d > e; e++) c.push(h(a[e])); return b.apply(null, c); }, f = function (a, b, c) { 2 === arguments.length && ((c = b), (b = null)), e(b || [], function () { g(a, c, arguments); }); }, g = function (a, b, c) { var f, g = { exports: b }; 'function' == typeof b && (c.length || (c = [e, g.exports, g]), (f = b.apply(null, c)), void 0 !== f && (g.exports = f)), (d[a] = g.exports); }, h = function (b) { var c = d[b] || a[b]; if (!c) throw new Error('`' + b + '` is undefined'); return c; }, i = function (a) { var b, c, e, f, g, h; h = function (a) { return a && a.charAt(0).toUpperCase() + a.substr(1); }; for (b in d) if (((c = a), d.hasOwnProperty(b))) { for (e = b.split('/'), g = h(e.pop()); (f = h(e.shift())); ) (c[f] = c[f] || {}), (c = c[f]); c[g] = d[b]; } }, j = b(a, f, e); i(j), 'object' == typeof module && 'object' == typeof module.exports ? (module.exports = j) : 'function' == typeof define && define.amd ? define([], j) : ((c = a.WebUploader), (a.WebUploader = j), (a.WebUploader.noConflict = function () { a.WebUploader = c; })); })(this, function (a, b, c) { return ( b('dollar-third', [], function () { return a.jQuery || a.Zepto; }), b('dollar', ['dollar-third'], function (a) { return a; }), b('promise-third', ['dollar'], function (a) { return { Deferred: a.Deferred, when: a.when, isPromise: function (a) { return a && 'function' == typeof a.then; }, }; }), b('promise', ['promise-third'], function (a) { return a; }), b('base', ['dollar', 'promise'], function (b, c) { function d(a) { return function () { return h.apply(a, arguments); }; } function e(a, b) { return function () { return a.apply(b, arguments); }; } function f(a) { var b; return Object.create ? Object.create(a) : ((b = function () {}), (b.prototype = a), new b()); } var g = function () {}, h = Function.call; return { version: '0.1.2', $: b, Deferred: c.Deferred, isPromise: c.isPromise, when: c.when, browser: (function (a) { var b = {}, c = a.match(/WebKit\/([\d.]+)/), d = a.match(/Chrome\/([\d.]+)/) || a.match(/CriOS\/([\d.]+)/), e = a.match(/MSIE\s([\d\.]+)/) || a.match(/(?:trident)(?:.*rv:([\w.]+))?/i), f = a.match(/Firefox\/([\d.]+)/), g = a.match(/Safari\/([\d.]+)/), h = a.match(/OPR\/([\d.]+)/); return ( c && (b.webkit = parseFloat(c[1])), d && (b.chrome = parseFloat(d[1])), e && (b.ie = parseFloat(e[1])), f && (b.firefox = parseFloat(f[1])), g && (b.safari = parseFloat(g[1])), h && (b.opera = parseFloat(h[1])), b ); })(navigator.userAgent), os: (function (a) { var b = {}, c = a.match(/(?:Android);?[\s\/]+([\d.]+)?/), d = a.match(/(?:iPad|iPod|iPhone).*OS\s([\d_]+)/); return ( c && (b.android = parseFloat(c[1])), d && (b.ios = parseFloat(d[1].replace(/_/g, '.'))), b ); })(navigator.userAgent), inherits: function (a, c, d) { var e; return ( 'function' == typeof c ? ((e = c), (c = null)) : (e = c && c.hasOwnProperty('constructor') ? c.constructor : function () { return a.apply(this, arguments); }), b.extend(!0, e, a, d || {}), (e.__super__ = a.prototype), (e.prototype = f(a.prototype)), c && b.extend(!0, e.prototype, c), e ); }, noop: g, bindFn: e, log: (function () { return a.console ? e(console.log, console) : g; })(), nextTick: (function () { return function (a) { setTimeout(a, 1); }; })(), slice: d([].slice), guid: (function () { var a = 0; return function (b) { for (var c = (+new Date()).toString(32), d = 0; 5 > d; d++) c += Math.floor(65535 * Math.random()).toString(32); return (b || 'wu_') + c + (a++).toString(32); }; })(), formatSize: function (a, b, c) { var d; for (c = c || ['B', 'K', 'M', 'G', 'TB']; (d = c.shift()) && a > 1024; ) a /= 1024; return ('B' === d ? a : a.toFixed(b || 2)) + d; }, }; }), b('mediator', ['base'], function (a) { function b(a, b, c, d) { return f.grep(a, function (a) { return !( !a || (b && a.e !== b) || (c && a.cb !== c && a.cb._cb !== c) || (d && a.ctx !== d) ); }); } function c(a, b, c) { f.each((a || '').split(h), function (a, d) { c(d, b); }); } function d(a, b) { for (var c, d = !1, e = -1, f = a.length; ++e < f; ) if (((c = a[e]), c.cb.apply(c.ctx2, b) === !1)) { d = !0; break; } return !d; } var e, f = a.$, g = [].slice, h = /\s+/; return ( (e = { on: function (a, b, d) { var e, f = this; return b ? ((e = this._events || (this._events = [])), c(a, b, function (a, b) { var c = { e: a }; (c.cb = b), (c.ctx = d), (c.ctx2 = d || f), (c.id = e.length), e.push(c); }), this) : this; }, once: function (a, b, d) { var e = this; return b ? (c(a, b, function (a, b) { var c = function () { return e.off(a, c), b.apply(d || e, arguments); }; (c._cb = b), e.on(a, c, d); }), e) : e; }, off: function (a, d, e) { var g = this._events; return g ? a || d || e ? (c(a, d, function (a, c) { f.each(b(g, a, c, e), function () { delete g[this.id]; }); }), this) : ((this._events = []), this) : this; }, trigger: function (a) { var c, e, f; return this._events && a ? ((c = g.call(arguments, 1)), (e = b(this._events, a)), (f = b(this._events, 'all')), d(e, c) && d(f, arguments)) : this; }, }), f.extend( { installTo: function (a) { return f.extend(a, e); }, }, e, ) ); }), b('uploader', ['base', 'mediator'], function (a, b) { function c(a) { (this.options = d.extend(!0, {}, c.options, a)), this._init(this.options); } var d = a.$; return ( (c.options = {}), b.installTo(c.prototype), d.each( { upload: 'start-upload', stop: 'stop-upload', getFile: 'get-file', getFiles: 'get-files', addFile: 'add-file', addFiles: 'add-file', sort: 'sort-files', removeFile: 'remove-file', skipFile: 'skip-file', retry: 'retry', isInProgress: 'is-in-progress', makeThumb: 'make-thumb', getDimension: 'get-dimension', addButton: 'add-btn', getRuntimeType: 'get-runtime-type', refresh: 'refresh', disable: 'disable', enable: 'enable', reset: 'reset', }, function (a, b) { c.prototype[a] = function () { return this.request(b, arguments); }; }, ), d.extend(c.prototype, { state: 'pending', _init: function (a) { var b = this; b.request('init', a, function () { (b.state = 'ready'), b.trigger('ready'); }); }, option: function (a, b) { var c = this.options; return arguments.length > 1 ? void (d.isPlainObject(b) && d.isPlainObject(c[a]) ? d.extend(c[a], b) : (c[a] = b)) : a ? c[a] : c; }, getStats: function () { var a = this.request('get-stats'); return { successNum: a.numOfSuccess, cancelNum: a.numOfCancel, invalidNum: a.numOfInvalid, uploadFailNum: a.numOfUploadFailed, queueNum: a.numOfQueue, }; }, trigger: function (a) { var c = [].slice.call(arguments, 1), e = this.options, f = 'on' + a.substring(0, 1).toUpperCase() + a.substring(1); return b.trigger.apply(this, arguments) === !1 || (d.isFunction(e[f]) && e[f].apply(this, c) === !1) || (d.isFunction(this[f]) && this[f].apply(this, c) === !1) || b.trigger.apply(b, [this, a].concat(c)) === !1 ? !1 : !0; }, request: a.noop, }), (a.create = c.create = function (a) { return new c(a); }), (a.Uploader = c), c ); }), b('runtime/runtime', ['base', 'mediator'], function (a, b) { function c(b) { (this.options = d.extend({ container: document.body }, b)), (this.uid = a.guid('rt_')); } var d = a.$, e = {}, f = function (a) { for (var b in a) if (a.hasOwnProperty(b)) return b; return null; }; return ( d.extend(c.prototype, { getContainer: function () { var a, b, c = this.options; return this._container ? this._container : ((a = d(c.container || document.body)), (b = d(document.createElement('div'))), b.attr('id', 'rt_' + this.uid), b.css({ position: 'absolute', top: '0px', left: '0px', width: '1px', height: '1px', overflow: 'hidden', }), a.append(b), a.addClass('webuploader-container'), (this._container = b), b); }, init: a.noop, exec: a.noop, destroy: function () { this._container && this._container.parentNode.removeChild(this.__container), this.off(); }, }), (c.orders = 'html5,flash'), (c.addRuntime = function (a, b) { e[a] = b; }), (c.hasRuntime = function (a) { return !!(a ? e[a] : f(e)); }), (c.create = function (a, b) { var g, h; if ( ((b = b || c.orders), d.each(b.split(/\s*,\s*/g), function () { return e[this] ? ((g = this), !1) : void 0; }), (g = g || f(e)), !g) ) throw new Error('Runtime Error'); return (h = new e[g](a)); }), b.installTo(c.prototype), c ); }), b('runtime/client', ['base', 'mediator', 'runtime/runtime'], function (a, b, c) { function d(b, d) { var f, g = a.Deferred(); (this.uid = a.guid('client_')), (this.runtimeReady = function (a) { return g.done(a); }), (this.connectRuntime = function (b, h) { if (f) throw new Error('already connected!'); return ( g.done(h), 'string' == typeof b && e.get(b) && (f = e.get(b)), (f = f || e.get(null, d)), f ? (a.$.extend(f.options, b), f.__promise.then(g.resolve), f.__client++) : ((f = c.create(b, b.runtimeOrder)), (f.__promise = g.promise()), f.once('ready', g.resolve), f.init(), e.add(f), (f.__client = 1)), d && (f.__standalone = d), f ); }), (this.getRuntime = function () { return f; }), (this.disconnectRuntime = function () { f && (f.__client--, f.__client <= 0 && (e.remove(f), delete f.__promise, f.destroy()), (f = null)); }), (this.exec = function () { if (f) { var c = a.slice(arguments); return b && c.unshift(b), f.exec.apply(this, c); } }), (this.getRuid = function () { return f && f.uid; }), (this.destroy = (function (a) { return function () { a && a.apply(this, arguments), this.trigger('destroy'), this.off(), this.exec('destroy'), this.disconnectRuntime(); }; })(this.destroy)); } var e; return ( (e = (function () { var a = {}; return { add: function (b) { a[b.uid] = b; }, get: function (b, c) { var d; if (b) return a[b]; for (d in a) if (!c || !a[d].__standalone) return a[d]; return null; }, remove: function (b) { delete a[b.uid]; }, }; })()), b.installTo(d.prototype), d ); }), b('lib/dnd', ['base', 'mediator', 'runtime/client'], function (a, b, c) { function d(a) { (a = this.options = e.extend({}, d.options, a)), (a.container = e(a.container)), a.container.length && c.call(this, 'DragAndDrop'); } var e = a.$; return ( (d.options = { accept: null, disableGlobalDnd: !1 }), a.inherits(c, { constructor: d, init: function () { var a = this; a.connectRuntime(a.options, function () { a.exec('init'), a.trigger('ready'); }); }, destroy: function () { this.disconnectRuntime(); }, }), b.installTo(d.prototype), d ); }), b('widgets/widget', ['base', 'uploader'], function (a, b) { function c(a) { if (!a) return !1; var b = a.length, c = e.type(a); return 1 === a.nodeType && b ? !0 : 'array' === c || ('function' !== c && 'string' !== c && (0 === b || ('number' == typeof b && b > 0 && b - 1 in a))); } function d(a) { (this.owner = a), (this.options = a.options); } var e = a.$, f = b.prototype._init, g = {}, h = []; return ( e.extend(d.prototype, { init: a.noop, invoke: function (a, b) { var c = this.responseMap; return c && a in c && c[a] in this && e.isFunction(this[c[a]]) ? this[c[a]].apply(this, b) : g; }, request: function () { return this.owner.request.apply(this.owner, arguments); }, }), e.extend(b.prototype, { _init: function () { var a = this, b = (a._widgets = []); return ( e.each(h, function (c, d) { b.push(new d(a)); }), f.apply(a, arguments) ); }, request: function (b, d, e) { var f, h, i, j, k = 0, l = this._widgets, m = l.length, n = [], o = []; for (d = c(d) ? d : [d]; m > k; k++) (f = l[k]), (h = f.invoke(b, d)), h !== g && (a.isPromise(h) ? o.push(h) : n.push(h)); return e || o.length ? ((i = a.when.apply(a, o)), (j = i.pipe ? 'pipe' : 'then'), i[j](function () { var b = a.Deferred(), c = arguments; return ( setTimeout(function () { b.resolve.apply(b, c); }, 1), b.promise() ); })[j](e || a.noop)) : n[0]; }, }), (b.register = d.register = function (b, c) { var f, g = { init: 'init' }; return ( 1 === arguments.length ? ((c = b), (c.responseMap = g)) : (c.responseMap = e.extend(g, b)), (f = a.inherits(d, c)), h.push(f), f ); }), d ); }), b('widgets/filednd', ['base', 'uploader', 'lib/dnd', 'widgets/widget'], function (a, b, c) { var d = a.$; return ( (b.options.dnd = ''), b.register({ init: function (b) { if (b.dnd && 'html5' === this.request('predict-runtime-type')) { var e, f = this, g = a.Deferred(), h = d.extend( {}, { disableGlobalDnd: b.disableGlobalDnd, container: b.dnd, accept: b.accept }, ); return ( (e = new c(h)), e.once('ready', g.resolve), e.on('drop', function (a) { f.request('add-file', [a]); }), e.on('accept', function (a) { return f.owner.trigger('dndAccept', a); }), e.init(), g.promise() ); } }, }) ); }), b('lib/filepaste', ['base', 'mediator', 'runtime/client'], function (a, b, c) { function d(a) { (a = this.options = e.extend({}, a)), (a.container = e(a.container || document.body)), c.call(this, 'FilePaste'); } var e = a.$; return ( a.inherits(c, { constructor: d, init: function () { var a = this; a.connectRuntime(a.options, function () { a.exec('init'), a.trigger('ready'); }); }, destroy: function () { this.exec('destroy'), this.disconnectRuntime(), this.off(); }, }), b.installTo(d.prototype), d ); }), b( 'widgets/filepaste', ['base', 'uploader', 'lib/filepaste', 'widgets/widget'], function (a, b, c) { var d = a.$; return b.register({ init: function (b) { if (b.paste && 'html5' === this.request('predict-runtime-type')) { var e, f = this, g = a.Deferred(), h = d.extend({}, { container: b.paste, accept: b.accept }); return ( (e = new c(h)), e.once('ready', g.resolve), e.on('paste', function (a) { f.owner.request('add-file', [a]); }), e.init(), g.promise() ); } }, }); }, ), b('lib/blob', ['base', 'runtime/client'], function (a, b) { function c(a, c) { var d = this; (d.source = c), (d.ruid = a), b.call(d, 'Blob'), (this.uid = c.uid || this.uid), (this.type = c.type || ''), (this.size = c.size || 0), a && d.connectRuntime(a); } return ( a.inherits(b, { constructor: c, slice: function (a, b) { return this.exec('slice', a, b); }, getSource: function () { return this.source; }, }), c ); }), b('lib/file', ['base', 'lib/blob'], function (a, b) { function c(a, c) { var f; b.apply(this, arguments), (this.name = c.name || 'untitled' + d++), (f = e.exec(c.name) ? RegExp.$1.toLowerCase() : ''), !f && this.type && ((f = /\/(jpg|jpeg|png|gif|bmp)$/i.exec(this.type) ? RegExp.$1.toLowerCase() : ''), (this.name += '.' + f)), !this.type && ~'jpg,jpeg,png,gif,bmp'.indexOf(f) && (this.type = 'image/' + ('jpg' === f ? 'jpeg' : f)), (this.ext = f), (this.lastModifiedDate = c.lastModifiedDate || new Date().toLocaleString()); } var d = 1, e = /\.([^.]+)$/; return a.inherits(b, c); }), b('lib/filepicker', ['base', 'runtime/client', 'lib/file'], function (b, c, d) { function e(a) { if ( ((a = this.options = f.extend({}, e.options, a)), (a.container = f(a.id)), !a.container.length) ) throw new Error('按钮指定错误'); (a.innerHTML = a.innerHTML || a.label || a.container.html() || ''), (a.button = f(a.button || document.createElement('div'))), a.button.html(a.innerHTML), a.container.html(a.button), c.call(this, 'FilePicker', !0); } var f = b.$; return ( (e.options = { button: null, container: null, label: null, innerHTML: null, multiple: !0, accept: null, name: 'file', }), b.inherits(c, { constructor: e, init: function () { var b = this, c = b.options, e = c.button; e.addClass('webuploader-pick'), b.on('all', function (a) { var g; switch (a) { case 'mouseenter': e.addClass('webuploader-pick-hover'); break; case 'mouseleave': e.removeClass('webuploader-pick-hover'); break; case 'change': (g = b.exec('getFiles')), b.trigger( 'select', f.map(g, function (a) { return (a = new d(b.getRuid(), a)), (a._refer = c.container), a; }), c.container, ); } }), b.connectRuntime(c, function () { b.refresh(), b.exec('init', c), b.trigger('ready'); }), f(a).on('resize', function () { b.refresh(); }); }, refresh: function () { var a = this.getRuntime().getContainer(), b = this.options.button, c = b.outerWidth ? b.outerWidth() : b.width(), d = b.outerHeight ? b.outerHeight() : b.height(), e = b.offset(); c && d && a.css({ bottom: 'auto', right: 'auto', width: c + 'px', height: d + 'px' }).offset(e); }, enable: function () { var a = this.options.button; a.removeClass('webuploader-pick-disable'), this.refresh(); }, disable: function () { var a = this.options.button; this.getRuntime().getContainer().css({ top: '-99999px' }), a.addClass('webuploader-pick-disable'); }, destroy: function () { this.runtime && (this.exec('destroy'), this.disconnectRuntime()); }, }), e ); }), b( 'widgets/filepicker', ['base', 'uploader', 'lib/filepicker', 'widgets/widget'], function (a, b, c) { var d = a.$; return ( d.extend(b.options, { pick: null, accept: null }), b.register( { 'add-btn': 'addButton', refresh: 'refresh', disable: 'disable', enable: 'enable' }, { init: function (a) { return (this.pickers = []), a.pick && this.addButton(a.pick); }, refresh: function () { d.each(this.pickers, function () { this.refresh(); }); }, addButton: function (b) { var e, f, g, h = this, i = h.options, j = i.accept; if (b) return ( (g = a.Deferred()), d.isPlainObject(b) || (b = { id: b }), (e = d.extend({}, b, { accept: d.isPlainObject(j) ? [j] : j, swf: i.swf, runtimeOrder: i.runtimeOrder, })), (f = new c(e)), f.once('ready', g.resolve), f.on('select', function (a) { h.owner.request('add-file', [a]); }), f.init(), this.pickers.push(f), g.promise() ); }, disable: function () { d.each(this.pickers, function () { this.disable(); }); }, enable: function () { d.each(this.pickers, function () { this.enable(); }); }, }, ) ); }, ), b('lib/image', ['base', 'runtime/client', 'lib/blob'], function (a, b, c) { function d(a) { (this.options = e.extend({}, d.options, a)), b.call(this, 'Image'), this.on('load', function () { (this._info = this.exec('info')), (this._meta = this.exec('meta')); }); } var e = a.$; return ( (d.options = { quality: 90, crop: !1, preserveHeaders: !0, allowMagnify: !0 }), a.inherits(b, { constructor: d, info: function (a) { return a ? ((this._info = a), this) : this._info; }, meta: function (a) { return a ? ((this._meta = a), this) : this._meta; }, loadFromBlob: function (a) { var b = this, c = a.getRuid(); this.connectRuntime(c, function () { b.exec('init', b.options), b.exec('loadFromBlob', a); }); }, resize: function () { var b = a.slice(arguments); return this.exec.apply(this, ['resize'].concat(b)); }, getAsDataUrl: function (a) { return this.exec('getAsDataUrl', a); }, getAsBlob: function (a) { var b = this.exec('getAsBlob', a); return new c(this.getRuid(), b); }, }), d ); }), b('widgets/image', ['base', 'uploader', 'lib/image', 'widgets/widget'], function (a, b, c) { var d, e = a.$; return ( (d = (function (a) { var b = 0, c = [], d = function () { for (var d; c.length && a > b; ) (d = c.shift()), (b += d[0]), d[1](); }; return function (a, e, f) { c.push([e, f]), a.once('destroy', function () { (b -= e), setTimeout(d, 1); }), setTimeout(d, 1); }; })(5242880)), e.extend(b.options, { thumb: { width: 110, height: 110, quality: 70, allowMagnify: !0, crop: !0, preserveHeaders: !1, type: 'image/jpeg', }, compress: { width: 1600, height: 1600, quality: 90, allowMagnify: !1, crop: !1, preserveHeaders: !0, }, }), b.register( { 'make-thumb': 'makeThumb', 'before-send-file': 'compressImage' }, { makeThumb: function (a, b, f, g) { var h, i; return ( (a = this.request('get-file', a)), a.type.match(/^image/) ? ((h = e.extend({}, this.options.thumb)), e.isPlainObject(f) && ((h = e.extend(h, f)), (f = null)), (f = f || h.width), (g = g || h.height), (i = new c(h)), i.once('load', function () { (a._info = a._info || i.info()), (a._meta = a._meta || i.meta()), i.resize(f, g); }), i.once('complete', function () { b(!1, i.getAsDataUrl(h.type)), i.destroy(); }), i.once('error', function () { b(!0), i.destroy(); }), void d(i, a.source.size, function () { a._info && i.info(a._info), a._meta && i.meta(a._meta), i.loadFromBlob(a.source); })) : void b(!0) ); }, compressImage: function (b) { var d, f, g = this.options.compress || this.options.resize, h = (g && g.compressSize) || 307200; return ( (b = this.request('get-file', b)), !g || !~'image/jpeg,image/jpg'.indexOf(b.type) || b.size < h || b._compressed ? void 0 : ((g = e.extend({}, g)), (f = a.Deferred()), (d = new c(g)), f.always(function () { d.destroy(), (d = null); }), d.once('error', f.reject), d.once('load', function () { (b._info = b._info || d.info()), (b._meta = b._meta || d.meta()), d.resize(g.width, g.height); }), d.once('complete', function () { var a, c; try { (a = d.getAsBlob(g.type)), (c = b.size), a.size < c && ((b.source = a), (b.size = a.size), b.trigger('resize', a.size, c)), (b._compressed = !0), f.resolve(); } catch (e) { f.resolve(); } }), b._info && d.info(b._info), b._meta && d.meta(b._meta), d.loadFromBlob(b.source), f.promise()) ); }, }, ) ); }), b('file', ['base', 'mediator'], function (a, b) { function c() { return f + g++; } function d(a) { (this.name = a.name || 'Untitled'), (this.size = a.size || 0), (this.type = a.type || 'application'), (this.lastModifiedDate = a.lastModifiedDate || 1 * new Date()), (this.id = c()), (this.ext = h.exec(this.name) ? RegExp.$1 : ''), (this.statusText = ''), (i[this.id] = d.Status.INITED), (this.source = a), (this.loaded = 0), this.on('error', function (a) { this.setStatus(d.Status.ERROR, a); }); } var e = a.$, f = 'WU_FILE_', g = 0, h = /\.([^.]+)$/, i = {}; return ( e.extend(d.prototype, { setStatus: function (a, b) { var c = i[this.id]; 'undefined' != typeof b && (this.statusText = b), a !== c && ((i[this.id] = a), this.trigger('statuschange', a, c)); }, getStatus: function () { return i[this.id]; }, getSource: function () { return this.source; }, destory: function () { delete i[this.id]; }, }), b.installTo(d.prototype), (d.Status = { INITED: 'inited', QUEUED: 'queued', PROGRESS: 'progress', ERROR: 'error', COMPLETE: 'complete', CANCELLED: 'cancelled', INTERRUPT: 'interrupt', INVALID: 'invalid', }), d ); }), b('queue', ['base', 'mediator', 'file'], function (a, b, c) { function d() { (this.stats = { numOfQueue: 0, numOfSuccess: 0, numOfCancel: 0, numOfProgress: 0, numOfUploadFailed: 0, numOfInvalid: 0, }), (this._queue = []), (this._map = {}); } var e = a.$, f = c.Status; return ( e.extend(d.prototype, { append: function (a) { return this._queue.push(a), this._fileAdded(a), this; }, prepend: function (a) { return this._queue.unshift(a), this._fileAdded(a), this; }, getFile: function (a) { return 'string' != typeof a ? a : this._map[a]; }, fetch: function (a) { var b, c, d = this._queue.length; for (a = a || f.QUEUED, b = 0; d > b; b++) if (((c = this._queue[b]), a === c.getStatus())) return c; return null; }, sort: function (a) { 'function' == typeof a && this._queue.sort(a); }, getFiles: function () { for ( var a, b = [].slice.call(arguments, 0), c = [], d = 0, f = this._queue.length; f > d; d++ ) (a = this._queue[d]), (!b.length || ~e.inArray(a.getStatus(), b)) && c.push(a); return c; }, _fileAdded: function (a) { var b = this, c = this._map[a.id]; c || ((this._map[a.id] = a), a.on('statuschange', function (a, c) { b._onFileStatusChange(a, c); })), a.setStatus(f.QUEUED); }, _onFileStatusChange: function (a, b) { var c = this.stats; switch (b) { case f.PROGRESS: c.numOfProgress--; break; case f.QUEUED: c.numOfQueue--; break; case f.ERROR: c.numOfUploadFailed--; break; case f.INVALID: c.numOfInvalid--; } switch (a) { case f.QUEUED: c.numOfQueue++; break; case f.PROGRESS: c.numOfProgress++; break; case f.ERROR: c.numOfUploadFailed++; break; case f.COMPLETE: c.numOfSuccess++; break; case f.CANCELLED: c.numOfCancel++; break; case f.INVALID: c.numOfInvalid++; } }, }), b.installTo(d.prototype), d ); }), b( 'widgets/queue', ['base', 'uploader', 'queue', 'file', 'lib/file', 'runtime/client', 'widgets/widget'], function (a, b, c, d, e, f) { var g = a.$, h = /\.\w+$/, i = d.Status; return b.register( { 'sort-files': 'sortFiles', 'add-file': 'addFiles', 'get-file': 'getFile', 'fetch-file': 'fetchFile', 'get-stats': 'getStats', 'get-files': 'getFiles', 'remove-file': 'removeFile', retry: 'retry', reset: 'reset', 'accept-file': 'acceptFile', }, { init: function (b) { var d, e, h, i, j, k, l, m = this; if ((g.isPlainObject(b.accept) && (b.accept = [b.accept]), b.accept)) { for (j = [], h = 0, e = b.accept.length; e > h; h++) (i = b.accept[h].extensions), i && j.push(i); j.length && (k = '\\.' + j.join(',').replace(/,/g, '$|\\.').replace(/\*/g, '.*') + '$'), (m.accept = new RegExp(k, 'i')); } return ( (m.queue = new c()), (m.stats = m.queue.stats), 'html5' === this.request('predict-runtime-type') ? ((d = a.Deferred()), (l = new f('Placeholder')), l.connectRuntime({ runtimeOrder: 'html5' }, function () { (m._ruid = l.getRuid()), d.resolve(); }), d.promise()) : void 0 ); }, _wrapFile: function (a) { if (!(a instanceof d)) { if (!(a instanceof e)) { if (!this._ruid) throw new Error("Can't add external files."); a = new e(this._ruid, a); } a = new d(a); } return a; }, acceptFile: function (a) { var b = !a || a.size < 6 || (this.accept && h.exec(a.name) && !this.accept.test(a.name)); return !b; }, _addFile: function (a) { var b = this; return ( (a = b._wrapFile(a)), b.owner.trigger('beforeFileQueued', a) ? b.acceptFile(a) ? (b.queue.append(a), b.owner.trigger('fileQueued', a), a) : void b.owner.trigger('error', 'Q_TYPE_DENIED', a) : void 0 ); }, getFile: function (a) { return this.queue.getFile(a); }, addFiles: function (a) { var b = this; a.length || (a = [a]), (a = g.map(a, function (a) { return b._addFile(a); })), b.owner.trigger('filesQueued', a), b.options.auto && b.request('start-upload'); }, getStats: function () { return this.stats; }, removeFile: function (a) { var b = this; (a = a.id ? a : b.queue.getFile(a)), a.setStatus(i.CANCELLED), b.owner.trigger('fileDequeued', a); }, getFiles: function () { return this.queue.getFiles.apply(this.queue, arguments); }, fetchFile: function () { return this.queue.fetch.apply(this.queue, arguments); }, retry: function (a, b) { var c, d, e, f = this; if (a) return ( (a = a.id ? a : f.queue.getFile(a)), a.setStatus(i.QUEUED), void (b || f.request('start-upload')) ); for (c = f.queue.getFiles(i.ERROR), d = 0, e = c.length; e > d; d++) (a = c[d]), a.setStatus(i.QUEUED); f.request('start-upload'); }, sortFiles: function () { return this.queue.sort.apply(this.queue, arguments); }, reset: function () { (this.queue = new c()), (this.stats = this.queue.stats); }, }, ); }, ), b('widgets/runtime', ['uploader', 'runtime/runtime', 'widgets/widget'], function (a, b) { return ( (a.support = function () { return b.hasRuntime.apply(b, arguments); }), a.register( { 'predict-runtime-type': 'predictRuntmeType' }, { init: function () { if (!this.predictRuntmeType()) throw Error('Runtime Error'); }, predictRuntmeType: function () { var a, c, d = this.options.runtimeOrder || b.orders, e = this.type; if (!e) for (d = d.split(/\s*,\s*/g), a = 0, c = d.length; c > a; a++) if (b.hasRuntime(d[a])) { this.type = e = d[a]; break; } return e; }, }, ) ); }), b('lib/transport', ['base', 'runtime/client', 'mediator'], function (a, b, c) { function d(a) { var c = this; (a = c.options = e.extend(!0, {}, d.options, a || {})), b.call(this, 'Transport'), (this._blob = null), (this._formData = a.formData || {}), (this._headers = a.headers || {}), this.on('progress', this._timeout), this.on('load error', function () { c.trigger('progress', 1), clearTimeout(c._timer); }); } var e = a.$; return ( (d.options = { server: '', method: 'POST', withCredentials: !1, fileVal: 'file', timeout: 12e4, formData: {}, headers: {}, sendAsBinary: !1, }), e.extend(d.prototype, { appendBlob: function (a, b, c) { var d = this, e = d.options; d.getRuid() && d.disconnectRuntime(), d.connectRuntime(b.ruid, function () { d.exec('init'); }), (d._blob = b), (e.fileVal = a || e.fileVal), (e.filename = c || e.filename); }, append: function (a, b) { 'object' == typeof a ? e.extend(this._formData, a) : (this._formData[a] = b); }, setRequestHeader: function (a, b) { 'object' == typeof a ? e.extend(this._headers, a) : (this._headers[a] = b); }, send: function (a) { this.exec('send', a), this._timeout(); }, abort: function () { return clearTimeout(this._timer), this.exec('abort'); }, destroy: function () { this.trigger('destroy'), this.off(), this.exec('destroy'), this.disconnectRuntime(); }, getResponse: function () { return this.exec('getResponse'); }, getResponseAsJson: function () { return this.exec('getResponseAsJson'); }, getStatus: function () { return this.exec('getStatus'); }, _timeout: function () { var a = this, b = a.options.timeout; b && (clearTimeout(a._timer), (a._timer = setTimeout(function () { a.abort(), a.trigger('error', 'timeout'); }, b))); }, }), c.installTo(d.prototype), d ); }), b( 'widgets/upload', ['base', 'uploader', 'file', 'lib/transport', 'widgets/widget'], function (a, b, c, d) { function e(a, b) { for ( var c, d = [], e = a.source, f = e.size, g = b ? Math.ceil(f / b) : 1, h = 0, i = 0; g > i; ) (c = Math.min(b, f - h)), d.push({ file: a, start: h, end: b ? h + c : f, total: f, chunks: g, chunk: i++ }), (h += c); return ( (a.blocks = d.concat()), (a.remaning = d.length), { file: a, has: function () { return !!d.length; }, fetch: function () { return d.shift(); }, } ); } var f = a.$, g = a.isPromise, h = c.Status; f.extend(b.options, { prepareNextFile: !1, chunked: !1, chunkSize: 5242880, chunkRetry: 2, threads: 3, formData: null, }), b.register( { 'start-upload': 'start', 'stop-upload': 'stop', 'skip-file': 'skipFile', 'is-in-progress': 'isInProgress', }, { init: function () { var b = this.owner; (this.runing = !1), (this.pool = []), (this.pending = []), (this.remaning = 0), (this.__tick = a.bindFn(this._tick, this)), b.on('uploadComplete', function (a) { a.blocks && f.each(a.blocks, function (a, b) { b.transport && (b.transport.abort(), b.transport.destroy()), delete b.transport; }), delete a.blocks, delete a.remaning; }); }, start: function () { var b = this; f.each(b.request('get-files', h.INVALID), function () { b.request('remove-file', this); }), b.runing || ((b.runing = !0), f.each(b.pool, function (a, c) { var d = c.file; d.getStatus() === h.INTERRUPT && (d.setStatus(h.PROGRESS), (b._trigged = !1), c.transport && c.transport.send()); }), (b._trigged = !1), b.owner.trigger('startUpload'), a.nextTick(b.__tick)); }, stop: function (a) { var b = this; b.runing !== !1 && ((b.runing = !1), a && f.each(b.pool, function (a, b) { b.transport && b.transport.abort(), b.file.setStatus(h.INTERRUPT); }), b.owner.trigger('stopUpload')); }, isInProgress: function () { return !!this.runing; }, getStats: function () { return this.request('get-stats'); }, skipFile: function (a, b) { (a = this.request('get-file', a)), a.setStatus(b || h.COMPLETE), (a.skipped = !0), a.blocks && f.each(a.blocks, function (a, b) { var c = b.transport; c && (c.abort(), c.destroy(), delete b.transport); }), this.owner.trigger('uploadSkip', a); }, _tick: function () { var b, c, d = this, e = d.options; return d._promise ? d._promise.always(d.__tick) : void (d.pool.length < e.threads && (c = d._nextBlock()) ? ((d._trigged = !1), (b = function (b) { (d._promise = null), b && b.file && d._startSend(b), a.nextTick(d.__tick); }), (d._promise = g(c) ? c.always(b) : b(c))) : d.remaning || d.getStats().numOfQueue || ((d.runing = !1), d._trigged || a.nextTick(function () { d.owner.trigger('uploadFinished'); }), (d._trigged = !0))); }, _nextBlock: function () { var a, b, c = this, d = c._act, f = c.options; return d && d.has() && d.file.getStatus() === h.PROGRESS ? (f.prepareNextFile && !c.pending.length && c._prepareNextFile(), d.fetch()) : c.runing ? (!c.pending.length && c.getStats().numOfQueue && c._prepareNextFile(), (a = c.pending.shift()), (b = function (a) { return a ? ((d = e(a, f.chunked ? f.chunkSize : 0)), (c._act = d), d.fetch()) : null; }), g(a) ? a[a.pipe ? 'pipe' : 'then'](b) : b(a)) : void 0; }, _prepareNextFile: function () { var a, b = this, c = b.request('fetch-file'), d = b.pending; c && ((a = b.request('before-send-file', c, function () { return c.getStatus() === h.QUEUED ? (b.owner.trigger('uploadStart', c), c.setStatus(h.PROGRESS), c) : b._finishFile(c); })), a.done(function () { var b = f.inArray(a, d); ~b && d.splice(b, 1, c); }), a.fail(function (a) { c.setStatus(h.ERROR, a), b.owner.trigger('uploadError', c, a), b.owner.trigger('uploadComplete', c); }), d.push(a)); }, _popBlock: function (a) { var b = f.inArray(a, this.pool); this.pool.splice(b, 1), a.file.remaning--, this.remaning--; }, _startSend: function (b) { var c, d = this, e = b.file; d.pool.push(b), d.remaning++, (b.blob = 1 === b.chunks ? e.source : e.source.slice(b.start, b.end)), (c = d.request('before-send', b, function () { e.getStatus() === h.PROGRESS ? d._doSend(b) : (d._popBlock(b), a.nextTick(d.__tick)); })), c.fail(function () { 1 === e.remaning ? d._finishFile(e).always(function () { (b.percentage = 1), d._popBlock(b), d.owner.trigger('uploadComplete', e), a.nextTick(d.__tick); }) : ((b.percentage = 1), d._popBlock(b), a.nextTick(d.__tick)); }); }, _doSend: function (b) { var c, e, g = this, i = g.owner, j = g.options, k = b.file, l = new d(j), m = f.extend({}, j.formData), n = f.extend({}, j.headers); (b.transport = l), l.on('destroy', function () { delete b.transport, g._popBlock(b), a.nextTick(g.__tick); }), l.on('progress', function (a) { var c = 0, d = 0; (c = b.percentage = a), b.chunks > 1 && (f.each(k.blocks, function (a, b) { d += (b.percentage || 0) * (b.end - b.start); }), (c = d / k.size)), i.trigger('uploadProgress', k, c || 0); }), (c = function (a) { var c; return ( (e = l.getResponseAsJson() || {}), (e._raw = l.getResponse()), (c = function (b) { a = b; }), i.trigger('uploadAccept', b, e, c) || (a = a || 'server'), a ); }), l.on('error', function (a, d) { (b.retried = b.retried || 0), b.chunks > 1 && ~'http,abort'.indexOf(a) && b.retried < j.chunkRetry ? (b.retried++, l.send()) : (d || 'server' !== a || (a = c(a)), k.setStatus(h.ERROR, a), i.trigger('uploadError', k, a), i.trigger('uploadComplete', k)); }), l.on('load', function () { var a; return (a = c()) ? void l.trigger('error', a, !0) : void (1 === k.remaning ? g._finishFile(k, e) : l.destroy()); }), (m = f.extend(m, { id: k.id, name: k.name, type: k.type, lastModifiedDate: k.lastModifiedDate, size: k.size, })), b.chunks > 1 && f.extend(m, { chunks: b.chunks, chunk: b.chunk }), i.trigger('uploadBeforeSend', b, m, n), l.appendBlob(j.fileVal, b.blob, k.name), l.append(m), l.setRequestHeader(n), l.send(); }, _finishFile: function (a, b, c) { var d = this.owner; return d .request('after-send-file', arguments, function () { a.setStatus(h.COMPLETE), d.trigger('uploadSuccess', a, b, c); }) .fail(function (b) { a.getStatus() === h.PROGRESS && a.setStatus(h.ERROR, b), d.trigger('uploadError', a, b); }) .always(function () { d.trigger('uploadComplete', a); }); }, }, ); }, ), b('widgets/validator', ['base', 'uploader', 'file', 'widgets/widget'], function (a, b, c) { var d, e = a.$, f = {}; return ( (d = { addValidator: function (a, b) { f[a] = b; }, removeValidator: function (a) { delete f[a]; }, }), b.register({ init: function () { var a = this; e.each(f, function () { this.call(a.owner); }); }, }), d.addValidator('fileNumLimit', function () { var a = this, b = a.options, c = 0, d = b.fileNumLimit >> 0, e = !0; d && (a.on('beforeFileQueued', function (a) { return ( c >= d && e && ((e = !1), this.trigger('error', 'Q_EXCEED_NUM_LIMIT', d, a), setTimeout(function () { e = !0; }, 1)), c >= d ? !1 : !0 ); }), a.on('fileQueued', function () { c++; }), a.on('fileDequeued', function () { c--; }), a.on('uploadFinished', function () { c = 0; })); }), d.addValidator('fileSizeLimit', function () { var a = this, b = a.options, c = 0, d = b.fileSizeLimit >> 0, e = !0; d && (a.on('beforeFileQueued', function (a) { var b = c + a.size > d; return ( b && e && ((e = !1), this.trigger('error', 'Q_EXCEED_SIZE_LIMIT', d, a), setTimeout(function () { e = !0; }, 1)), b ? !1 : !0 ); }), a.on('fileQueued', function (a) { c += a.size; }), a.on('fileDequeued', function (a) { c -= a.size; }), a.on('uploadFinished', function () { c = 0; })); }), d.addValidator('fileSingleSizeLimit', function () { var a = this, b = a.options, d = b.fileSingleSizeLimit; d && a.on('beforeFileQueued', function (a) { return a.size > d ? (a.setStatus(c.Status.INVALID, 'exceed_size'), this.trigger('error', 'F_EXCEED_SIZE', a), !1) : void 0; }); }), d.addValidator('duplicate', function () { function a(a) { for (var b, c = 0, d = 0, e = a.length; e > d; d++) (b = a.charCodeAt(d)), (c = b + (c << 6) + (c << 16) - c); return c; } var b = this, c = b.options, d = {}; c.duplicate || (b.on('beforeFileQueued', function (b) { var c = b.__hash || (b.__hash = a(b.name + b.size + b.lastModifiedDate)); return d[c] ? (this.trigger('error', 'F_DUPLICATE', b), !1) : void 0; }), b.on('fileQueued', function (a) { var b = a.__hash; b && (d[b] = !0); }), b.on('fileDequeued', function (a) { var b = a.__hash; b && delete d[b]; })); }), d ); }), b('runtime/compbase', [], function () { function a(a, b) { (this.owner = a), (this.options = a.options), (this.getRuntime = function () { return b; }), (this.getRuid = function () { return b.uid; }), (this.trigger = function () { return a.trigger.apply(a, arguments); }); } return a; }), b('runtime/html5/runtime', ['base', 'runtime/runtime', 'runtime/compbase'], function (b, c, d) { function e() { var a = {}, d = this, e = this.destory; c.apply(d, arguments), (d.type = f), (d.exec = function (c, e) { var f, h = this, i = h.uid, j = b.slice(arguments, 2); return g[c] && ((f = a[i] = a[i] || new g[c](h, d)), f[e]) ? f[e].apply(f, j) : void 0; }), (d.destory = function () { return e && e.apply(this, arguments); }); } var f = 'html5', g = {}; return ( b.inherits(c, { constructor: e, init: function () { var a = this; setTimeout(function () { a.trigger('ready'); }, 1); }, }), (e.register = function (a, c) { var e = (g[a] = b.inherits(d, c)); return e; }), a.Blob && a.FileReader && a.DataView && c.addRuntime(f, e), e ); }), b('runtime/html5/blob', ['runtime/html5/runtime', 'lib/blob'], function (a, b) { return a.register('Blob', { slice: function (a, c) { var d = this.owner.source, e = d.slice || d.webkitSlice || d.mozSlice; return (d = e.call(d, a, c)), new b(this.getRuid(), d); }, }); }), b('runtime/html5/dnd', ['base', 'runtime/html5/runtime', 'lib/file'], function (a, b, c) { var d = a.$, e = 'webuploader-dnd-'; return b.register('DragAndDrop', { init: function () { var b = (this.elem = this.options.container); (this.dragEnterHandler = a.bindFn(this._dragEnterHandler, this)), (this.dragOverHandler = a.bindFn(this._dragOverHandler, this)), (this.dragLeaveHandler = a.bindFn(this._dragLeaveHandler, this)), (this.dropHandler = a.bindFn(this._dropHandler, this)), (this.dndOver = !1), b.on('dragenter', this.dragEnterHandler), b.on('dragover', this.dragOverHandler), b.on('dragleave', this.dragLeaveHandler), b.on('drop', this.dropHandler), this.options.disableGlobalDnd && (d(document).on('dragover', this.dragOverHandler), d(document).on('drop', this.dropHandler)); }, _dragEnterHandler: function (a) { var b, c = this, d = c._denied || !1; return ( (a = a.originalEvent || a), c.dndOver || ((c.dndOver = !0), (b = a.dataTransfer.items), b && b.length && (c._denied = d = !c.trigger('accept', b)), c.elem.addClass(e + 'over'), c.elem[d ? 'addClass' : 'removeClass'](e + 'denied')), (a.dataTransfer.dropEffect = d ? 'none' : 'copy'), !1 ); }, _dragOverHandler: function (a) { var b = this.elem.parent().get(0); return b && !d.contains(b, a.currentTarget) ? !1 : (clearTimeout(this._leaveTimer), this._dragEnterHandler.call(this, a), !1); }, _dragLeaveHandler: function () { var a, b = this; return ( (a = function () { (b.dndOver = !1), b.elem.removeClass(e + 'over ' + e + 'denied'); }), clearTimeout(b._leaveTimer), (b._leaveTimer = setTimeout(a, 100)), !1 ); }, _dropHandler: function (a) { var b = this, f = b.getRuid(), g = b.elem.parent().get(0); return g && !d.contains(g, a.currentTarget) ? !1 : (b._getTansferFiles(a, function (a) { b.trigger( 'drop', d.map(a, function (a) { return new c(f, a); }), ); }), (b.dndOver = !1), b.elem.removeClass(e + 'over'), !1); }, _getTansferFiles: function (b, c) { var d, e, f, g, h, i, j, k, l = [], m = []; for ( b = b.originalEvent || b, f = b.dataTransfer, d = f.items, e = f.files, k = !(!d || !d[0].webkitGetAsEntry), i = 0, j = e.length; j > i; i++ ) (g = e[i]), (h = d && d[i]), k && h.webkitGetAsEntry().isDirectory ? m.push(this._traverseDirectoryTree(h.webkitGetAsEntry(), l)) : l.push(g); a.when.apply(a, m).done(function () { l.length && c(l); }); }, _traverseDirectoryTree: function (b, c) { var d = a.Deferred(), e = this; return ( b.isFile ? b.file(function (a) { c.push(a), d.resolve(); }) : b.isDirectory && b.createReader().readEntries(function (b) { var f, g = b.length, h = [], i = []; for (f = 0; g > f; f++) h.push(e._traverseDirectoryTree(b[f], i)); a.when.apply(a, h).then(function () { c.push.apply(c, i), d.resolve(); }, d.reject); }), d.promise() ); }, destroy: function () { var a = this.elem; a.off('dragenter', this.dragEnterHandler), a.off('dragover', this.dragEnterHandler), a.off('dragleave', this.dragLeaveHandler), a.off('drop', this.dropHandler), this.options.disableGlobalDnd && (d(document).off('dragover', this.dragOverHandler), d(document).off('drop', this.dropHandler)); }, }); }), b('runtime/html5/filepaste', ['base', 'runtime/html5/runtime', 'lib/file'], function (a, b, c) { return b.register('FilePaste', { init: function () { var b, c, d, e, f = this.options, g = (this.elem = f.container), h = '.*'; if (f.accept) { for (b = [], c = 0, d = f.accept.length; d > c; c++) (e = f.accept[c].mimeTypes), e && b.push(e); b.length && ((h = b.join(',')), (h = h.replace(/,/g, '|').replace(/\*/g, '.*'))); } (this.accept = h = new RegExp(h, 'i')), (this.hander = a.bindFn(this._pasteHander, this)), g.on('paste', this.hander); }, _pasteHander: function (a) { var b, d, e, f, g, h = [], i = this.getRuid(); for (a = a.originalEvent || a, b = a.clipboardData.items, f = 0, g = b.length; g > f; f++) (d = b[f]), 'file' === d.kind && (e = d.getAsFile()) && h.push(new c(i, e)); h.length && (a.preventDefault(), a.stopPropagation(), this.trigger('paste', h)); }, destroy: function () { this.elem.off('paste', this.hander); }, }); }), b('runtime/html5/filepicker', ['base', 'runtime/html5/runtime'], function (a, b) { var c = a.$; return b.register('FilePicker', { init: function () { var a, b, d, e, f = this.getRuntime().getContainer(), g = this, h = g.owner, i = g.options, j = c(document.createElement('label')), k = c(document.createElement('input')); if ( (k.attr('type', 'file'), k.attr('name', i.name), k.addClass('webuploader-element-invisible'), j.on('click', function () { k.trigger('click'); }), j.css({ opacity: 0, width: '100%', height: '100%', display: 'block', cursor: 'pointer', background: '#ffffff', }), i.multiple && k.attr('multiple', 'multiple'), i.accept && i.accept.length > 0) ) { for (a = [], b = 0, d = i.accept.length; d > b; b++) a.push(i.accept[b].mimeTypes); k.attr('accept', a.join(',')); } f.append(k), f.append(j), (e = function (a) { h.trigger(a.type); }), k.on('change', function (a) { var b, d = arguments.callee; (g.files = a.target.files), (b = this.cloneNode(!0)), this.parentNode.replaceChild(b, this), k.off(), (k = c(b).on('change', d).on('mouseenter mouseleave', e)), h.trigger('change'); }), j.on('mouseenter mouseleave', e); }, getFiles: function () { return this.files; }, destroy: function () {}, }); }), b('runtime/html5/util', ['base'], function (b) { var c = (a.createObjectURL && a) || (a.URL && URL.revokeObjectURL && URL) || a.webkitURL, d = b.noop, e = d; return ( c && ((d = function () { return c.createObjectURL.apply(c, arguments); }), (e = function () { return c.revokeObjectURL.apply(c, arguments); })), { createObjectURL: d, revokeObjectURL: e, dataURL2Blob: function (a) { var b, c, d, e, f, g; for ( g = a.split(','), b = ~g[0].indexOf('base64') ? atob(g[1]) : decodeURIComponent(g[1]), d = new ArrayBuffer(b.length), c = new Uint8Array(d), e = 0; e < b.length; e++ ) c[e] = b.charCodeAt(e); return (f = g[0].split(':')[1].split(';')[0]), this.arrayBufferToBlob(d, f); }, dataURL2ArrayBuffer: function (a) { var b, c, d, e; for ( e = a.split(','), b = ~e[0].indexOf('base64') ? atob(e[1]) : decodeURIComponent(e[1]), c = new Uint8Array(b.length), d = 0; d < b.length; d++ ) c[d] = b.charCodeAt(d); return c.buffer; }, arrayBufferToBlob: function (b, c) { var d, e = a.BlobBuilder || a.WebKitBlobBuilder; return e ? ((d = new e()), d.append(b), d.getBlob(c)) : new Blob([b], c ? { type: c } : {}); }, canvasToDataUrl: function (a, b, c) { return a.toDataURL(b, c / 100); }, parseMeta: function (a, b) { b(!1, {}); }, updateImageHead: function (a) { return a; }, } ); }), b('runtime/html5/imagemeta', ['runtime/html5/util'], function (a) { var b; return ( (b = { parsers: { 65505: [] }, maxMetaDataSize: 262144, parse: function (a, b) { var c = this, d = new FileReader(); (d.onload = function () { b(!1, c._parse(this.result)), (d = d.onload = d.onerror = null); }), (d.onerror = function (a) { b(a.message), (d = d.onload = d.onerror = null); }), (a = a.slice(0, c.maxMetaDataSize)), d.readAsArrayBuffer(a.getSource()); }, _parse: function (a, c) { if (!(a.byteLength < 6)) { var d, e, f, g, h = new DataView(a), i = 2, j = h.byteLength - 4, k = i, l = {}; if (65496 === h.getUint16(0)) { for ( ; j > i && ((d = h.getUint16(i)), (d >= 65504 && 65519 >= d) || 65534 === d) && ((e = h.getUint16(i + 2) + 2), !(i + e > h.byteLength)); ) { if (((f = b.parsers[d]), !c && f)) for (g = 0; g < f.length; g += 1) f[g].call(b, h, i, e, l); (i += e), (k = i); } k > 6 && (l.imageHead = a.slice ? a.slice(2, k) : new Uint8Array(a).subarray(2, k)); } return l; } }, updateImageHead: function (a, b) { var c, d, e, f = this._parse(a, !0); return ( (e = 2), f.imageHead && (e = 2 + f.imageHead.byteLength), (d = a.slice ? a.slice(e) : new Uint8Array(a).subarray(e)), (c = new Uint8Array(b.byteLength + 2 + d.byteLength)), (c[0] = 255), (c[1] = 216), c.set(new Uint8Array(b), 2), c.set(new Uint8Array(d), b.byteLength + 2), c.buffer ); }, }), (a.parseMeta = function () { return b.parse.apply(b, arguments); }), (a.updateImageHead = function () { return b.updateImageHead.apply(b, arguments); }), b ); }), b('runtime/html5/imagemeta/exif', ['base', 'runtime/html5/imagemeta'], function (a, b) { var c = {}; return ( (c.ExifMap = function () { return this; }), (c.ExifMap.prototype.map = { Orientation: 274 }), (c.ExifMap.prototype.get = function (a) { return this[a] || this[this.map[a]]; }), (c.exifTagTypes = { 1: { getValue: function (a, b) { return a.getUint8(b); }, size: 1, }, 2: { getValue: function (a, b) { return String.fromCharCode(a.getUint8(b)); }, size: 1, ascii: !0, }, 3: { getValue: function (a, b, c) { return a.getUint16(b, c); }, size: 2, }, 4: { getValue: function (a, b, c) { return a.getUint32(b, c); }, size: 4, }, 5: { getValue: function (a, b, c) { return a.getUint32(b, c) / a.getUint32(b + 4, c); }, size: 8, }, 9: { getValue: function (a, b, c) { return a.getInt32(b, c); }, size: 4, }, 10: { getValue: function (a, b, c) { return a.getInt32(b, c) / a.getInt32(b + 4, c); }, size: 8, }, }), (c.exifTagTypes[7] = c.exifTagTypes[1]), (c.getExifValue = function (b, d, e, f, g, h) { var i, j, k, l, m, n, o = c.exifTagTypes[f]; if (!o) return void a.log('Invalid Exif data: Invalid tag type.'); if ( ((i = o.size * g), (j = i > 4 ? d + b.getUint32(e + 8, h) : e + 8), j + i > b.byteLength) ) return void a.log('Invalid Exif data: Invalid data offset.'); if (1 === g) return o.getValue(b, j, h); for (k = [], l = 0; g > l; l += 1) k[l] = o.getValue(b, j + l * o.size, h); if (o.ascii) { for (m = '', l = 0; l < k.length && ((n = k[l]), '\x00' !== n); l += 1) m += n; return m; } return k; }), (c.parseExifTag = function (a, b, d, e, f) { var g = a.getUint16(d, e); f.exif[g] = c.getExifValue(a, b, d, a.getUint16(d + 2, e), a.getUint32(d + 4, e), e); }), (c.parseExifTags = function (b, c, d, e, f) { var g, h, i; if (d + 6 > b.byteLength) return void a.log('Invalid Exif data: Invalid directory offset.'); if (((g = b.getUint16(d, e)), (h = d + 2 + 12 * g), h + 4 > b.byteLength)) return void a.log('Invalid Exif data: Invalid directory size.'); for (i = 0; g > i; i += 1) this.parseExifTag(b, c, d + 2 + 12 * i, e, f); return b.getUint32(h, e); }), (c.parseExifData = function (b, d, e, f) { var g, h, i = d + 10; if (1165519206 === b.getUint32(d + 4)) { if (i + 8 > b.byteLength) return void a.log('Invalid Exif data: Invalid segment size.'); if (0 !== b.getUint16(d + 8)) return void a.log('Invalid Exif data: Missing byte alignment offset.'); switch (b.getUint16(i)) { case 18761: g = !0; break; case 19789: g = !1; break; default: return void a.log('Invalid Exif data: Invalid byte alignment marker.'); } if (42 !== b.getUint16(i + 2, g)) return void a.log('Invalid Exif data: Missing TIFF marker.'); (h = b.getUint32(i + 4, g)), (f.exif = new c.ExifMap()), (h = c.parseExifTags(b, i, i + h, g, f)); } }), b.parsers[65505].push(c.parseExifData), c ); }), b( 'runtime/html5/image', ['base', 'runtime/html5/runtime', 'runtime/html5/util'], function (a, b, c) { var d = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D'; return b.register('Image', { modified: !1, init: function () { var a = this, b = new Image(); (b.onload = function () { (a._info = { type: a.type, width: this.width, height: this.height }), a._metas || 'image/jpeg' !== a.type ? a.owner.trigger('load') : c.parseMeta(a._blob, function (b, c) { (a._metas = c), a.owner.trigger('load'); }); }), (b.onerror = function () { a.owner.trigger('error'); }), (a._img = b); }, loadFromBlob: function (a) { var b = this, d = b._img; (b._blob = a), (b.type = a.type), (d.src = c.createObjectURL(a.getSource())), b.owner.once('load', function () { c.revokeObjectURL(d.src); }); }, resize: function (a, b) { var c = this._canvas || (this._canvas = document.createElement('canvas')); this._resize(this._img, c, a, b), (this._blob = null), (this.modified = !0), this.owner.trigger('complete'); }, getAsBlob: function (a) { var b, d = this._blob, e = this.options; if (((a = a || this.type), this.modified || this.type !== a)) { if (((b = this._canvas), 'image/jpeg' === a)) { if ( ((d = c.canvasToDataUrl(b, 'image/jpeg', e.quality)), e.preserveHeaders && this._metas && this._metas.imageHead) ) return ( (d = c.dataURL2ArrayBuffer(d)), (d = c.updateImageHead(d, this._metas.imageHead)), (d = c.arrayBufferToBlob(d, a)) ); } else d = c.canvasToDataUrl(b, a); d = c.dataURL2Blob(d); } return d; }, getAsDataUrl: function (a) { var b = this.options; return ( (a = a || this.type), 'image/jpeg' === a ? c.canvasToDataUrl(this._canvas, a, b.quality) : this._canvas.toDataURL(a) ); }, getOrientation: function () { return (this._metas && this._metas.exif && this._metas.exif.get('Orientation')) || 1; }, info: function (a) { return a ? ((this._info = a), this) : this._info; }, meta: function (a) { return a ? ((this._meta = a), this) : this._meta; }, destroy: function () { var a = this._canvas; (this._img.onload = null), a && (a.getContext('2d').clearRect(0, 0, a.width, a.height), (a.width = a.height = 0), (this._canvas = null)), (this._img.src = d), (this._img = this._blob = null); }, _resize: function (a, b, c, d) { var e, f, g, h, i, j = this.options, k = a.width, l = a.height, m = this.getOrientation(); ~[5, 6, 7, 8].indexOf(m) && ((c ^= d), (d ^= c), (c ^= d)), (e = Math[j.crop ? 'max' : 'min'](c / k, d / l)), j.allowMagnify || (e = Math.min(1, e)), (f = k * e), (g = l * e), j.crop ? ((b.width = c), (b.height = d)) : ((b.width = f), (b.height = g)), (h = (b.width - f) / 2), (i = (b.height - g) / 2), j.preserveHeaders || this._rotate2Orientaion(b, m), this._renderImageToCanvas(b, a, h, i, f, g); }, _rotate2Orientaion: function (a, b) { var c = a.width, d = a.height, e = a.getContext('2d'); switch (b) { case 5: case 6: case 7: case 8: (a.width = d), (a.height = c); } switch (b) { case 2: e.translate(c, 0), e.scale(-1, 1); break; case 3: e.translate(c, d), e.rotate(Math.PI); break; case 4: e.translate(0, d), e.scale(1, -1); break; case 5: e.rotate(0.5 * Math.PI), e.scale(1, -1); break; case 6: e.rotate(0.5 * Math.PI), e.translate(0, -d); break; case 7: e.rotate(0.5 * Math.PI), e.translate(c, -d), e.scale(-1, 1); break; case 8: e.rotate(-0.5 * Math.PI), e.translate(-c, 0); } }, _renderImageToCanvas: (function () { function b(a, b, c) { var d, e, f, g = document.createElement('canvas'), h = g.getContext('2d'), i = 0, j = c, k = c; for ( g.width = 1, g.height = c, h.drawImage(a, 0, 0), d = h.getImageData(0, 0, 1, c).data; k > i; ) (e = d[4 * (k - 1) + 3]), 0 === e ? (j = k) : (i = k), (k = (j + i) >> 1); return (f = k / c), 0 === f ? 1 : f; } function c(a) { var b, c, d = a.naturalWidth, e = a.naturalHeight; return d * e > 1048576 ? ((b = document.createElement('canvas')), (b.width = b.height = 1), (c = b.getContext('2d')), c.drawImage(a, -d + 1, 0), 0 === c.getImageData(0, 0, 1, 1).data[3]) : !1; } return a.os.ios ? a.os.ios >= 7 ? function (a, c, d, e, f, g) { var h = c.naturalWidth, i = c.naturalHeight, j = b(c, h, i); return a.getContext('2d').drawImage(c, 0, 0, h * j, i * j, d, e, f, g); } : function (a, d, e, f, g, h) { var i, j, k, l, m, n, o, p = d.naturalWidth, q = d.naturalHeight, r = a.getContext('2d'), s = c(d), t = 'image/jpeg' === this.type, u = 1024, v = 0, w = 0; for ( s && ((p /= 2), (q /= 2)), r.save(), i = document.createElement('canvas'), i.width = i.height = u, j = i.getContext('2d'), k = t ? b(d, p, q) : 1, l = Math.ceil((u * g) / p), m = Math.ceil((u * h) / q / k); q > v; ) { for (n = 0, o = 0; p > n; ) j.clearRect(0, 0, u, u), j.drawImage(d, -n, -v), r.drawImage(i, 0, 0, u, u, e + o, f + w, l, m), (n += u), (o += l); (v += u), (w += m); } r.restore(), (i = j = null); } : function (a, b, c, d, e, f) { a.getContext('2d').drawImage(b, c, d, e, f); }; })(), }); }, ), b('runtime/html5/transport', ['base', 'runtime/html5/runtime'], function (a, b) { var c = a.noop, d = a.$; return b.register('Transport', { init: function () { (this._status = 0), (this._response = null); }, send: function () { var b, c, e, f = this.owner, g = this.options, h = this._initAjax(), i = f._blob, j = g.server; g.sendAsBinary ? ((j += (/\?/.test(j) ? '&' : '?') + d.param(f._formData)), (c = i.getSource())) : ((b = new FormData()), d.each(f._formData, function (a, c) { b.append(a, c); }), b.append(g.fileVal, i.getSource(), g.filename || f._formData.name || '')), g.withCredentials && 'withCredentials' in h ? (h.open(g.method, j, !0), (h.withCredentials = !0)) : h.open(g.method, j), this._setRequestHeader(h, g.headers), c ? (h.overrideMimeType('application/octet-stream'), a.os.android ? ((e = new FileReader()), (e.onload = function () { h.send(this.result), (e = e.onload = null); }), e.readAsArrayBuffer(c)) : h.send(c)) : h.send(b); }, getResponse: function () { return this._response; }, getResponseAsJson: function () { return this._parseJson(this._response); }, getStatus: function () { return this._status; }, abort: function () { var a = this._xhr; a && ((a.upload.onprogress = c), (a.onreadystatechange = c), a.abort(), (this._xhr = a = null)); }, destroy: function () { this.abort(); }, _initAjax: function () { var a = this, b = new XMLHttpRequest(), d = this.options; return ( !d.withCredentials || 'withCredentials' in b || 'undefined' == typeof XDomainRequest || (b = new XDomainRequest()), (b.upload.onprogress = function (b) { var c = 0; return b.lengthComputable && (c = b.loaded / b.total), a.trigger('progress', c); }), (b.onreadystatechange = function () { return 4 === b.readyState ? ((b.upload.onprogress = c), (b.onreadystatechange = c), (a._xhr = null), (a._status = b.status), b.status >= 200 && b.status < 300 ? ((a._response = b.responseText), a.trigger('load')) : b.status >= 500 && b.status < 600 ? ((a._response = b.responseText), a.trigger('error', 'server')) : a.trigger('error', a._status ? 'http' : 'abort')) : void 0; }), (a._xhr = b), b ); }, _setRequestHeader: function (a, b) { d.each(b, function (b, c) { a.setRequestHeader(b, c); }); }, _parseJson: function (a) { var b; try { b = JSON.parse(a); } catch (c) { b = {}; } return b; }, }); }), b( 'preset/html5only', [ 'base', 'widgets/filednd', 'widgets/filepaste', 'widgets/filepicker', 'widgets/image', 'widgets/queue', 'widgets/runtime', 'widgets/upload', 'widgets/validator', 'runtime/html5/blob', 'runtime/html5/dnd', 'runtime/html5/filepaste', 'runtime/html5/filepicker', 'runtime/html5/imagemeta/exif', 'runtime/html5/image', 'runtime/html5/transport', ], function (a) { return a; }, ), b('webuploader', ['preset/html5only'], function (a) { return a; }), c('webuploader') ); });