Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / ui / new_ui / ui / javascripts / dropzone.js @ ff9c77d4

History | View | Annotate | Download (54.8 kB)

1 182f3fe2 Olga Brani
;(function(){
2 182f3fe2 Olga Brani
3 182f3fe2 Olga Brani
/**
4 182f3fe2 Olga Brani
 * Require the given path.
5 182f3fe2 Olga Brani
 *
6 182f3fe2 Olga Brani
 * @param {String} path
7 182f3fe2 Olga Brani
 * @return {Object} exports
8 182f3fe2 Olga Brani
 * @api public
9 182f3fe2 Olga Brani
 */
10 182f3fe2 Olga Brani
11 182f3fe2 Olga Brani
function require(path, parent, orig) {
12 182f3fe2 Olga Brani
  var resolved = require.resolve(path);
13 182f3fe2 Olga Brani
14 182f3fe2 Olga Brani
  // lookup failed
15 182f3fe2 Olga Brani
  if (null == resolved) {
16 182f3fe2 Olga Brani
    orig = orig || path;
17 182f3fe2 Olga Brani
    parent = parent || 'root';
18 182f3fe2 Olga Brani
    var err = new Error('Failed to require "' + orig + '" from "' + parent + '"');
19 182f3fe2 Olga Brani
    err.path = orig;
20 182f3fe2 Olga Brani
    err.parent = parent;
21 182f3fe2 Olga Brani
    err.require = true;
22 182f3fe2 Olga Brani
    throw err;
23 182f3fe2 Olga Brani
  }
24 182f3fe2 Olga Brani
25 182f3fe2 Olga Brani
  var module = require.modules[resolved];
26 182f3fe2 Olga Brani
27 182f3fe2 Olga Brani
  // perform real require()
28 182f3fe2 Olga Brani
  // by invoking the module's
29 182f3fe2 Olga Brani
  // registered function
30 182f3fe2 Olga Brani
  if (!module.exports) {
31 182f3fe2 Olga Brani
    module.exports = {};
32 182f3fe2 Olga Brani
    module.client = module.component = true;
33 182f3fe2 Olga Brani
    module.call(this, module.exports, require.relative(resolved), module);
34 182f3fe2 Olga Brani
  }
35 182f3fe2 Olga Brani
36 182f3fe2 Olga Brani
  return module.exports;
37 182f3fe2 Olga Brani
}
38 182f3fe2 Olga Brani
39 182f3fe2 Olga Brani
/**
40 182f3fe2 Olga Brani
 * Registered modules.
41 182f3fe2 Olga Brani
 */
42 182f3fe2 Olga Brani
43 182f3fe2 Olga Brani
require.modules = {};
44 182f3fe2 Olga Brani
45 182f3fe2 Olga Brani
/**
46 182f3fe2 Olga Brani
 * Registered aliases.
47 182f3fe2 Olga Brani
 */
48 182f3fe2 Olga Brani
49 182f3fe2 Olga Brani
require.aliases = {};
50 182f3fe2 Olga Brani
51 182f3fe2 Olga Brani
/**
52 182f3fe2 Olga Brani
 * Resolve `path`.
53 182f3fe2 Olga Brani
 *
54 182f3fe2 Olga Brani
 * Lookup:
55 182f3fe2 Olga Brani
 *
56 182f3fe2 Olga Brani
 *   - PATH/index.js
57 182f3fe2 Olga Brani
 *   - PATH.js
58 182f3fe2 Olga Brani
 *   - PATH
59 182f3fe2 Olga Brani
 *
60 182f3fe2 Olga Brani
 * @param {String} path
61 182f3fe2 Olga Brani
 * @return {String} path or null
62 182f3fe2 Olga Brani
 * @api private
63 182f3fe2 Olga Brani
 */
64 182f3fe2 Olga Brani
65 182f3fe2 Olga Brani
require.resolve = function(path) {
66 182f3fe2 Olga Brani
  if (path.charAt(0) === '/') path = path.slice(1);
67 182f3fe2 Olga Brani
68 182f3fe2 Olga Brani
  var paths = [
69 182f3fe2 Olga Brani
    path,
70 182f3fe2 Olga Brani
    path + '.js',
71 182f3fe2 Olga Brani
    path + '.json',
72 182f3fe2 Olga Brani
    path + '/index.js',
73 182f3fe2 Olga Brani
    path + '/index.json'
74 182f3fe2 Olga Brani
  ];
75 182f3fe2 Olga Brani
76 182f3fe2 Olga Brani
  for (var i = 0; i < paths.length; i++) {
77 182f3fe2 Olga Brani
    var path = paths[i];
78 182f3fe2 Olga Brani
    if (require.modules.hasOwnProperty(path)) return path;
79 182f3fe2 Olga Brani
    if (require.aliases.hasOwnProperty(path)) return require.aliases[path];
80 182f3fe2 Olga Brani
  }
81 182f3fe2 Olga Brani
};
82 182f3fe2 Olga Brani
83 182f3fe2 Olga Brani
/**
84 182f3fe2 Olga Brani
 * Normalize `path` relative to the current path.
85 182f3fe2 Olga Brani
 *
86 182f3fe2 Olga Brani
 * @param {String} curr
87 182f3fe2 Olga Brani
 * @param {String} path
88 182f3fe2 Olga Brani
 * @return {String}
89 182f3fe2 Olga Brani
 * @api private
90 182f3fe2 Olga Brani
 */
91 182f3fe2 Olga Brani
92 182f3fe2 Olga Brani
require.normalize = function(curr, path) {
93 182f3fe2 Olga Brani
  var segs = [];
94 182f3fe2 Olga Brani
95 182f3fe2 Olga Brani
  if ('.' != path.charAt(0)) return path;
96 182f3fe2 Olga Brani
97 182f3fe2 Olga Brani
  curr = curr.split('/');
98 182f3fe2 Olga Brani
  path = path.split('/');
99 182f3fe2 Olga Brani
100 182f3fe2 Olga Brani
  for (var i = 0; i < path.length; ++i) {
101 182f3fe2 Olga Brani
    if ('..' == path[i]) {
102 182f3fe2 Olga Brani
      curr.pop();
103 182f3fe2 Olga Brani
    } else if ('.' != path[i] && '' != path[i]) {
104 182f3fe2 Olga Brani
      segs.push(path[i]);
105 182f3fe2 Olga Brani
    }
106 182f3fe2 Olga Brani
  }
107 182f3fe2 Olga Brani
108 182f3fe2 Olga Brani
  return curr.concat(segs).join('/');
109 182f3fe2 Olga Brani
};
110 182f3fe2 Olga Brani
111 182f3fe2 Olga Brani
/**
112 182f3fe2 Olga Brani
 * Register module at `path` with callback `definition`.
113 182f3fe2 Olga Brani
 *
114 182f3fe2 Olga Brani
 * @param {String} path
115 182f3fe2 Olga Brani
 * @param {Function} definition
116 182f3fe2 Olga Brani
 * @api private
117 182f3fe2 Olga Brani
 */
118 182f3fe2 Olga Brani
119 182f3fe2 Olga Brani
require.register = function(path, definition) {
120 182f3fe2 Olga Brani
  require.modules[path] = definition;
121 182f3fe2 Olga Brani
};
122 182f3fe2 Olga Brani
123 182f3fe2 Olga Brani
/**
124 182f3fe2 Olga Brani
 * Alias a module definition.
125 182f3fe2 Olga Brani
 *
126 182f3fe2 Olga Brani
 * @param {String} from
127 182f3fe2 Olga Brani
 * @param {String} to
128 182f3fe2 Olga Brani
 * @api private
129 182f3fe2 Olga Brani
 */
130 182f3fe2 Olga Brani
131 182f3fe2 Olga Brani
require.alias = function(from, to) {
132 182f3fe2 Olga Brani
  if (!require.modules.hasOwnProperty(from)) {
133 182f3fe2 Olga Brani
    throw new Error('Failed to alias "' + from + '", it does not exist');
134 182f3fe2 Olga Brani
  }
135 182f3fe2 Olga Brani
  require.aliases[to] = from;
136 182f3fe2 Olga Brani
};
137 182f3fe2 Olga Brani
138 182f3fe2 Olga Brani
/**
139 182f3fe2 Olga Brani
 * Return a require function relative to the `parent` path.
140 182f3fe2 Olga Brani
 *
141 182f3fe2 Olga Brani
 * @param {String} parent
142 182f3fe2 Olga Brani
 * @return {Function}
143 182f3fe2 Olga Brani
 * @api private
144 182f3fe2 Olga Brani
 */
145 182f3fe2 Olga Brani
146 182f3fe2 Olga Brani
require.relative = function(parent) {
147 182f3fe2 Olga Brani
  var p = require.normalize(parent, '..');
148 182f3fe2 Olga Brani
149 182f3fe2 Olga Brani
  /**
150 182f3fe2 Olga Brani
   * lastIndexOf helper.
151 182f3fe2 Olga Brani
   */
152 182f3fe2 Olga Brani
153 182f3fe2 Olga Brani
  function lastIndexOf(arr, obj) {
154 182f3fe2 Olga Brani
    var i = arr.length;
155 182f3fe2 Olga Brani
    while (i--) {
156 182f3fe2 Olga Brani
      if (arr[i] === obj) return i;
157 182f3fe2 Olga Brani
    }
158 182f3fe2 Olga Brani
    return -1;
159 182f3fe2 Olga Brani
  }
160 182f3fe2 Olga Brani
161 182f3fe2 Olga Brani
  /**
162 182f3fe2 Olga Brani
   * The relative require() itself.
163 182f3fe2 Olga Brani
   */
164 182f3fe2 Olga Brani
165 182f3fe2 Olga Brani
  function localRequire(path) {
166 182f3fe2 Olga Brani
    var resolved = localRequire.resolve(path);
167 182f3fe2 Olga Brani
    return require(resolved, parent, path);
168 182f3fe2 Olga Brani
  }
169 182f3fe2 Olga Brani
170 182f3fe2 Olga Brani
  /**
171 182f3fe2 Olga Brani
   * Resolve relative to the parent.
172 182f3fe2 Olga Brani
   */
173 182f3fe2 Olga Brani
174 182f3fe2 Olga Brani
  localRequire.resolve = function(path) {
175 182f3fe2 Olga Brani
    var c = path.charAt(0);
176 182f3fe2 Olga Brani
    if ('/' == c) return path.slice(1);
177 182f3fe2 Olga Brani
    if ('.' == c) return require.normalize(p, path);
178 182f3fe2 Olga Brani
179 182f3fe2 Olga Brani
    // resolve deps by returning
180 182f3fe2 Olga Brani
    // the dep in the nearest "deps"
181 182f3fe2 Olga Brani
    // directory
182 182f3fe2 Olga Brani
    var segs = parent.split('/');
183 182f3fe2 Olga Brani
    var i = lastIndexOf(segs, 'deps') + 1;
184 182f3fe2 Olga Brani
    if (!i) i = 0;
185 182f3fe2 Olga Brani
    path = segs.slice(0, i + 1).join('/') + '/deps/' + path;
186 182f3fe2 Olga Brani
    return path;
187 182f3fe2 Olga Brani
  };
188 182f3fe2 Olga Brani
189 182f3fe2 Olga Brani
  /**
190 182f3fe2 Olga Brani
   * Check if module is defined at `path`.
191 182f3fe2 Olga Brani
   */
192 182f3fe2 Olga Brani
193 182f3fe2 Olga Brani
  localRequire.exists = function(path) {
194 182f3fe2 Olga Brani
    return require.modules.hasOwnProperty(localRequire.resolve(path));
195 182f3fe2 Olga Brani
  };
196 182f3fe2 Olga Brani
197 182f3fe2 Olga Brani
  return localRequire;
198 182f3fe2 Olga Brani
};
199 182f3fe2 Olga Brani
require.register("component-emitter/index.js", function(exports, require, module){
200 182f3fe2 Olga Brani
201 182f3fe2 Olga Brani
/**
202 182f3fe2 Olga Brani
 * Expose `Emitter`.
203 182f3fe2 Olga Brani
 */
204 182f3fe2 Olga Brani
205 182f3fe2 Olga Brani
module.exports = Emitter;
206 182f3fe2 Olga Brani
207 182f3fe2 Olga Brani
/**
208 182f3fe2 Olga Brani
 * Initialize a new `Emitter`.
209 182f3fe2 Olga Brani
 *
210 182f3fe2 Olga Brani
 * @api public
211 182f3fe2 Olga Brani
 */
212 182f3fe2 Olga Brani
213 182f3fe2 Olga Brani
function Emitter(obj) {
214 182f3fe2 Olga Brani
  if (obj) return mixin(obj);
215 182f3fe2 Olga Brani
};
216 182f3fe2 Olga Brani
217 182f3fe2 Olga Brani
/**
218 182f3fe2 Olga Brani
 * Mixin the emitter properties.
219 182f3fe2 Olga Brani
 *
220 182f3fe2 Olga Brani
 * @param {Object} obj
221 182f3fe2 Olga Brani
 * @return {Object}
222 182f3fe2 Olga Brani
 * @api private
223 182f3fe2 Olga Brani
 */
224 182f3fe2 Olga Brani
225 182f3fe2 Olga Brani
function mixin(obj) {
226 182f3fe2 Olga Brani
  for (var key in Emitter.prototype) {
227 182f3fe2 Olga Brani
    obj[key] = Emitter.prototype[key];
228 182f3fe2 Olga Brani
  }
229 182f3fe2 Olga Brani
  return obj;
230 182f3fe2 Olga Brani
}
231 182f3fe2 Olga Brani
232 182f3fe2 Olga Brani
/**
233 182f3fe2 Olga Brani
 * Listen on the given `event` with `fn`.
234 182f3fe2 Olga Brani
 *
235 182f3fe2 Olga Brani
 * @param {String} event
236 182f3fe2 Olga Brani
 * @param {Function} fn
237 182f3fe2 Olga Brani
 * @return {Emitter}
238 182f3fe2 Olga Brani
 * @api public
239 182f3fe2 Olga Brani
 */
240 182f3fe2 Olga Brani
241 182f3fe2 Olga Brani
Emitter.prototype.on = function(event, fn){
242 182f3fe2 Olga Brani
  this._callbacks = this._callbacks || {};
243 182f3fe2 Olga Brani
  (this._callbacks[event] = this._callbacks[event] || [])
244 182f3fe2 Olga Brani
    .push(fn);
245 182f3fe2 Olga Brani
  return this;
246 182f3fe2 Olga Brani
};
247 182f3fe2 Olga Brani
248 182f3fe2 Olga Brani
/**
249 182f3fe2 Olga Brani
 * Adds an `event` listener that will be invoked a single
250 182f3fe2 Olga Brani
 * time then automatically removed.
251 182f3fe2 Olga Brani
 *
252 182f3fe2 Olga Brani
 * @param {String} event
253 182f3fe2 Olga Brani
 * @param {Function} fn
254 182f3fe2 Olga Brani
 * @return {Emitter}
255 182f3fe2 Olga Brani
 * @api public
256 182f3fe2 Olga Brani
 */
257 182f3fe2 Olga Brani
258 182f3fe2 Olga Brani
Emitter.prototype.once = function(event, fn){
259 182f3fe2 Olga Brani
  var self = this;
260 182f3fe2 Olga Brani
  this._callbacks = this._callbacks || {};
261 182f3fe2 Olga Brani
262 182f3fe2 Olga Brani
  function on() {
263 182f3fe2 Olga Brani
    self.off(event, on);
264 182f3fe2 Olga Brani
    fn.apply(this, arguments);
265 182f3fe2 Olga Brani
  }
266 182f3fe2 Olga Brani
267 182f3fe2 Olga Brani
  fn._off = on;
268 182f3fe2 Olga Brani
  this.on(event, on);
269 182f3fe2 Olga Brani
  return this;
270 182f3fe2 Olga Brani
};
271 182f3fe2 Olga Brani
272 182f3fe2 Olga Brani
/**
273 182f3fe2 Olga Brani
 * Remove the given callback for `event` or all
274 182f3fe2 Olga Brani
 * registered callbacks.
275 182f3fe2 Olga Brani
 *
276 182f3fe2 Olga Brani
 * @param {String} event
277 182f3fe2 Olga Brani
 * @param {Function} fn
278 182f3fe2 Olga Brani
 * @return {Emitter}
279 182f3fe2 Olga Brani
 * @api public
280 182f3fe2 Olga Brani
 */
281 182f3fe2 Olga Brani
282 182f3fe2 Olga Brani
Emitter.prototype.off =
283 182f3fe2 Olga Brani
Emitter.prototype.removeListener =
284 182f3fe2 Olga Brani
Emitter.prototype.removeAllListeners = function(event, fn){
285 182f3fe2 Olga Brani
  this._callbacks = this._callbacks || {};
286 182f3fe2 Olga Brani
  var callbacks = this._callbacks[event];
287 182f3fe2 Olga Brani
  if (!callbacks) return this;
288 182f3fe2 Olga Brani
289 182f3fe2 Olga Brani
  // remove all handlers
290 182f3fe2 Olga Brani
  if (1 == arguments.length) {
291 182f3fe2 Olga Brani
    delete this._callbacks[event];
292 182f3fe2 Olga Brani
    return this;
293 182f3fe2 Olga Brani
  }
294 182f3fe2 Olga Brani
295 182f3fe2 Olga Brani
  // remove specific handler
296 182f3fe2 Olga Brani
  var i = callbacks.indexOf(fn._off || fn);
297 182f3fe2 Olga Brani
  if (~i) callbacks.splice(i, 1);
298 182f3fe2 Olga Brani
  return this;
299 182f3fe2 Olga Brani
};
300 182f3fe2 Olga Brani
301 182f3fe2 Olga Brani
/**
302 182f3fe2 Olga Brani
 * Emit `event` with the given args.
303 182f3fe2 Olga Brani
 *
304 182f3fe2 Olga Brani
 * @param {String} event
305 182f3fe2 Olga Brani
 * @param {Mixed} ...
306 182f3fe2 Olga Brani
 * @return {Emitter}
307 182f3fe2 Olga Brani
 */
308 182f3fe2 Olga Brani
309 182f3fe2 Olga Brani
Emitter.prototype.emit = function(event){
310 182f3fe2 Olga Brani
  this._callbacks = this._callbacks || {};
311 182f3fe2 Olga Brani
  var args = [].slice.call(arguments, 1)
312 182f3fe2 Olga Brani
    , callbacks = this._callbacks[event];
313 182f3fe2 Olga Brani
314 182f3fe2 Olga Brani
  if (callbacks) {
315 182f3fe2 Olga Brani
    callbacks = callbacks.slice(0);
316 182f3fe2 Olga Brani
    for (var i = 0, len = callbacks.length; i < len; ++i) {
317 182f3fe2 Olga Brani
      callbacks[i].apply(this, args);
318 182f3fe2 Olga Brani
    }
319 182f3fe2 Olga Brani
  }
320 182f3fe2 Olga Brani
321 182f3fe2 Olga Brani
  return this;
322 182f3fe2 Olga Brani
};
323 182f3fe2 Olga Brani
324 182f3fe2 Olga Brani
/**
325 182f3fe2 Olga Brani
 * Return array of callbacks for `event`.
326 182f3fe2 Olga Brani
 *
327 182f3fe2 Olga Brani
 * @param {String} event
328 182f3fe2 Olga Brani
 * @return {Array}
329 182f3fe2 Olga Brani
 * @api public
330 182f3fe2 Olga Brani
 */
331 182f3fe2 Olga Brani
332 182f3fe2 Olga Brani
Emitter.prototype.listeners = function(event){
333 182f3fe2 Olga Brani
  this._callbacks = this._callbacks || {};
334 182f3fe2 Olga Brani
  return this._callbacks[event] || [];
335 182f3fe2 Olga Brani
};
336 182f3fe2 Olga Brani
337 182f3fe2 Olga Brani
/**
338 182f3fe2 Olga Brani
 * Check if this emitter has `event` handlers.
339 182f3fe2 Olga Brani
 *
340 182f3fe2 Olga Brani
 * @param {String} event
341 182f3fe2 Olga Brani
 * @return {Boolean}
342 182f3fe2 Olga Brani
 * @api public
343 182f3fe2 Olga Brani
 */
344 182f3fe2 Olga Brani
345 182f3fe2 Olga Brani
Emitter.prototype.hasListeners = function(event){
346 182f3fe2 Olga Brani
  return !! this.listeners(event).length;
347 182f3fe2 Olga Brani
};
348 182f3fe2 Olga Brani
349 182f3fe2 Olga Brani
});
350 182f3fe2 Olga Brani
require.register("dropzone/index.js", function(exports, require, module){
351 182f3fe2 Olga Brani
352 182f3fe2 Olga Brani
353 182f3fe2 Olga Brani
/**
354 182f3fe2 Olga Brani
 * Exposing dropzone
355 182f3fe2 Olga Brani
 */
356 182f3fe2 Olga Brani
module.exports = require("./lib/dropzone.js");
357 182f3fe2 Olga Brani
358 182f3fe2 Olga Brani
});
359 182f3fe2 Olga Brani
require.register("dropzone/lib/dropzone.js", function(exports, require, module){
360 182f3fe2 Olga Brani
/*
361 182f3fe2 Olga Brani
#
362 182f3fe2 Olga Brani
# More info at [www.dropzonejs.com](http://www.dropzonejs.com)
363 182f3fe2 Olga Brani
# 
364 182f3fe2 Olga Brani
# Copyright (c) 2012, Matias Meno  
365 182f3fe2 Olga Brani
# 
366 182f3fe2 Olga Brani
# Permission is hereby granted, free of charge, to any person obtaining a copy
367 182f3fe2 Olga Brani
# of this software and associated documentation files (the "Software"), to deal
368 182f3fe2 Olga Brani
# in the Software without restriction, including without limitation the rights
369 182f3fe2 Olga Brani
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
370 182f3fe2 Olga Brani
# copies of the Software, and to permit persons to whom the Software is
371 182f3fe2 Olga Brani
# furnished to do so, subject to the following conditions:
372 182f3fe2 Olga Brani
# 
373 182f3fe2 Olga Brani
# The above copyright notice and this permission notice shall be included in
374 182f3fe2 Olga Brani
# all copies or substantial portions of the Software.
375 182f3fe2 Olga Brani
# 
376 182f3fe2 Olga Brani
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
377 182f3fe2 Olga Brani
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
378 182f3fe2 Olga Brani
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
379 182f3fe2 Olga Brani
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
380 182f3fe2 Olga Brani
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
381 182f3fe2 Olga Brani
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
382 182f3fe2 Olga Brani
# THE SOFTWARE.
383 182f3fe2 Olga Brani
#
384 182f3fe2 Olga Brani
*/
385 182f3fe2 Olga Brani
386 182f3fe2 Olga Brani
387 182f3fe2 Olga Brani
(function() {
388 182f3fe2 Olga Brani
  var Dropzone, Em, camelize, contentLoaded, noop, without,
389 182f3fe2 Olga Brani
    __hasProp = {}.hasOwnProperty,
390 182f3fe2 Olga Brani
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
391 182f3fe2 Olga Brani
    __slice = [].slice;
392 182f3fe2 Olga Brani
393 182f3fe2 Olga Brani
  Em = typeof Emitter !== "undefined" && Emitter !== null ? Emitter : require("emitter");
394 182f3fe2 Olga Brani
395 182f3fe2 Olga Brani
  noop = function() {};
396 182f3fe2 Olga Brani
397 182f3fe2 Olga Brani
  Dropzone = (function(_super) {
398 182f3fe2 Olga Brani
    var extend;
399 182f3fe2 Olga Brani
400 182f3fe2 Olga Brani
    __extends(Dropzone, _super);
401 182f3fe2 Olga Brani
402 182f3fe2 Olga Brani
    /*
403 182f3fe2 Olga Brani
    This is a list of all available events you can register on a dropzone object.
404 182f3fe2 Olga Brani
    
405 182f3fe2 Olga Brani
    You can register an event handler like this:
406 182f3fe2 Olga Brani
    
407 182f3fe2 Olga Brani
        dropzone.on("dragEnter", function() { });
408 182f3fe2 Olga Brani
    */
409 182f3fe2 Olga Brani
410 182f3fe2 Olga Brani
411 182f3fe2 Olga Brani
    Dropzone.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "selectedfiles", "addedfile", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded"];
412 182f3fe2 Olga Brani
413 182f3fe2 Olga Brani
    Dropzone.prototype.defaultOptions = {
414 182f3fe2 Olga Brani
      url: 'http://www.torrentplease.com/dropzone.php',
415 182f3fe2 Olga Brani
      method: "post",
416 182f3fe2 Olga Brani
      withCredentials: false,
417 182f3fe2 Olga Brani
      parallelUploads: 2,
418 182f3fe2 Olga Brani
      uploadMultiple: false,
419 182f3fe2 Olga Brani
      maxFilesize: 256,
420 182f3fe2 Olga Brani
      paramName: "file",
421 182f3fe2 Olga Brani
      createImageThumbnails: true,
422 182f3fe2 Olga Brani
      maxThumbnailFilesize: 10,
423 182f3fe2 Olga Brani
      thumbnailWidth: 100,
424 182f3fe2 Olga Brani
      thumbnailHeight: 100,
425 182f3fe2 Olga Brani
      maxFiles: null,
426 182f3fe2 Olga Brani
      params: {},
427 182f3fe2 Olga Brani
      clickable: true,
428 182f3fe2 Olga Brani
      ignoreHiddenFiles: true,
429 182f3fe2 Olga Brani
      acceptedFiles: null,
430 182f3fe2 Olga Brani
      acceptedMimeTypes: null,
431 182f3fe2 Olga Brani
      autoProcessQueue: true,
432 182f3fe2 Olga Brani
      addRemoveLinks: true,
433 182f3fe2 Olga Brani
      previewsContainer: null,
434 182f3fe2 Olga Brani
      dictDefaultMessage: 'Drag and drop your files here',
435 182f3fe2 Olga Brani
      dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.",
436 182f3fe2 Olga Brani
      dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.",
437 182f3fe2 Olga Brani
      dictFileTooBig: "File is too big ({{filesize}}MB). Max filesize: {{maxFilesize}}MB.",
438 182f3fe2 Olga Brani
      dictInvalidFileType: "You can't upload files of this type.",
439 182f3fe2 Olga Brani
      dictResponseError: "Server responded with {{statusCode}} code.",
440 182f3fe2 Olga Brani
      dictCancelUpload: "Cancel upload",
441 182f3fe2 Olga Brani
      dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
442 846f5913 Olga Brani
      dictRemoveFile: "Remove file",
443 182f3fe2 Olga Brani
      dictRemoveFileConfirmation: null,
444 182f3fe2 Olga Brani
      dictMaxFilesExceeded: "You can only upload {{maxFiles}} files.",
445 182f3fe2 Olga Brani
      accept: function(file, done) {
446 182f3fe2 Olga Brani
        return done();
447 182f3fe2 Olga Brani
      },
448 182f3fe2 Olga Brani
      init: function() {
449 182f3fe2 Olga Brani
        return noop;
450 182f3fe2 Olga Brani
      },
451 182f3fe2 Olga Brani
      forceFallback: false,
452 182f3fe2 Olga Brani
      fallback: function() {
453 182f3fe2 Olga Brani
        var child, messageElement, span, _i, _len, _ref;
454 182f3fe2 Olga Brani
        this.element.className = "" + this.element.className + " dz-browser-not-supported";
455 182f3fe2 Olga Brani
        _ref = this.element.getElementsByTagName("div");
456 182f3fe2 Olga Brani
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
457 182f3fe2 Olga Brani
          child = _ref[_i];
458 182f3fe2 Olga Brani
          if (/(^| )dz-message($| )/.test(child.className)) {
459 182f3fe2 Olga Brani
            messageElement = child;
460 182f3fe2 Olga Brani
            child.className = "dz-message";
461 182f3fe2 Olga Brani
            continue;
462 182f3fe2 Olga Brani
          }
463 182f3fe2 Olga Brani
        }
464 182f3fe2 Olga Brani
        if (!messageElement) {
465 182f3fe2 Olga Brani
          messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>");
466 182f3fe2 Olga Brani
          this.element.appendChild(messageElement);
467 182f3fe2 Olga Brani
        }
468 182f3fe2 Olga Brani
        span = messageElement.getElementsByTagName("span")[0];
469 182f3fe2 Olga Brani
        if (span) {
470 182f3fe2 Olga Brani
          span.textContent = this.options.dictFallbackMessage;
471 182f3fe2 Olga Brani
        }
472 182f3fe2 Olga Brani
        return this.element.appendChild(this.getFallbackForm());
473 182f3fe2 Olga Brani
      },
474 182f3fe2 Olga Brani
      resize: function(file) {
475 182f3fe2 Olga Brani
        var info, srcRatio, trgRatio;
476 182f3fe2 Olga Brani
        info = {
477 182f3fe2 Olga Brani
          srcX: 0,
478 182f3fe2 Olga Brani
          srcY: 0,
479 182f3fe2 Olga Brani
          srcWidth: file.width,
480 182f3fe2 Olga Brani
          srcHeight: file.height
481 182f3fe2 Olga Brani
        };
482 182f3fe2 Olga Brani
        srcRatio = file.width / file.height;
483 182f3fe2 Olga Brani
        trgRatio = this.options.thumbnailWidth / this.options.thumbnailHeight;
484 182f3fe2 Olga Brani
        if (file.height < this.options.thumbnailHeight || file.width < this.options.thumbnailWidth) {
485 182f3fe2 Olga Brani
          info.trgHeight = info.srcHeight;
486 182f3fe2 Olga Brani
          info.trgWidth = info.srcWidth;
487 182f3fe2 Olga Brani
        } else {
488 182f3fe2 Olga Brani
          if (srcRatio > trgRatio) {
489 182f3fe2 Olga Brani
            info.srcHeight = file.height;
490 182f3fe2 Olga Brani
            info.srcWidth = info.srcHeight * trgRatio;
491 182f3fe2 Olga Brani
          } else {
492 182f3fe2 Olga Brani
            info.srcWidth = file.width;
493 182f3fe2 Olga Brani
            info.srcHeight = info.srcWidth / trgRatio;
494 182f3fe2 Olga Brani
          }
495 182f3fe2 Olga Brani
        }
496 182f3fe2 Olga Brani
        info.srcX = (file.width - info.srcWidth) / 2;
497 182f3fe2 Olga Brani
        info.srcY = (file.height - info.srcHeight) / 2;
498 182f3fe2 Olga Brani
        return info;
499 182f3fe2 Olga Brani
      },
500 182f3fe2 Olga Brani
      /*
501 182f3fe2 Olga Brani
      Those functions register themselves to the events on init and handle all
502 182f3fe2 Olga Brani
      the user interface specific stuff. Overwriting them won't break the upload
503 182f3fe2 Olga Brani
      but can break the way it's displayed.
504 182f3fe2 Olga Brani
      You can overwrite them if you don't like the default behavior. If you just
505 182f3fe2 Olga Brani
      want to add an additional event handler, register it on the dropzone object
506 182f3fe2 Olga Brani
      and don't overwrite those options.
507 182f3fe2 Olga Brani
      */
508 182f3fe2 Olga Brani
509 182f3fe2 Olga Brani
      drop: function(e) {
510 182f3fe2 Olga Brani
        return this.element.classList.remove("dz-drag-hover");
511 182f3fe2 Olga Brani
      },
512 182f3fe2 Olga Brani
      dragstart: noop,
513 182f3fe2 Olga Brani
      dragend: function(e) {
514 182f3fe2 Olga Brani
        return this.element.classList.remove("dz-drag-hover");
515 182f3fe2 Olga Brani
      },
516 182f3fe2 Olga Brani
      dragenter: function(e) {
517 182f3fe2 Olga Brani
        return this.element.classList.add("dz-drag-hover");
518 182f3fe2 Olga Brani
      },
519 182f3fe2 Olga Brani
      dragover: function(e) {
520 182f3fe2 Olga Brani
        return this.element.classList.add("dz-drag-hover");
521 182f3fe2 Olga Brani
      },
522 182f3fe2 Olga Brani
      dragleave: function(e) {
523 182f3fe2 Olga Brani
        return this.element.classList.remove("dz-drag-hover");
524 182f3fe2 Olga Brani
      },
525 182f3fe2 Olga Brani
      selectedfiles: function(files) {
526 182f3fe2 Olga Brani
        if (this.element === this.previewsContainer) {
527 182f3fe2 Olga Brani
          return this.element.classList.add("dz-started");
528 182f3fe2 Olga Brani
        }
529 182f3fe2 Olga Brani
      },
530 182f3fe2 Olga Brani
      reset: function() {
531 182f3fe2 Olga Brani
        return this.element.classList.remove("dz-started");
532 182f3fe2 Olga Brani
      },
533 182f3fe2 Olga Brani
      addedfile: function(file) {
534 182f3fe2 Olga Brani
        var _this = this;
535 182f3fe2 Olga Brani
        file.previewElement = Dropzone.createElement(this.options.previewTemplate);
536 182f3fe2 Olga Brani
        file.previewTemplate = file.previewElement;
537 182f3fe2 Olga Brani
        this.previewsContainer.appendChild(file.previewElement);
538 182f3fe2 Olga Brani
        file.previewElement.querySelector("[data-dz-name]").textContent = file.name;
539 182f3fe2 Olga Brani
        file.previewElement.querySelector("[data-dz-size]").innerHTML = this.filesize(file.size);
540 182f3fe2 Olga Brani
        if (this.options.addRemoveLinks) {
541 182f3fe2 Olga Brani
          file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\">" + this.options.dictRemoveFile + "</a>");
542 182f3fe2 Olga Brani
          file._removeLink.addEventListener("click", function(e) {
543 182f3fe2 Olga Brani
            e.preventDefault();
544 182f3fe2 Olga Brani
            e.stopPropagation();
545 182f3fe2 Olga Brani
            if (file.status === Dropzone.UPLOADING) {
546 182f3fe2 Olga Brani
              return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {
547 182f3fe2 Olga Brani
                return _this.removeFile(file);
548 182f3fe2 Olga Brani
              });
549 182f3fe2 Olga Brani
            } else {
550 182f3fe2 Olga Brani
              if (_this.options.dictRemoveFileConfirmation) {
551 182f3fe2 Olga Brani
                return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {
552 182f3fe2 Olga Brani
                  return _this.removeFile(file);
553 182f3fe2 Olga Brani
                });
554 182f3fe2 Olga Brani
              } else {
555 182f3fe2 Olga Brani
                return _this.removeFile(file);
556 182f3fe2 Olga Brani
              }
557 182f3fe2 Olga Brani
            }
558 182f3fe2 Olga Brani
          });
559 182f3fe2 Olga Brani
          file.previewElement.appendChild(file._removeLink);
560 182f3fe2 Olga Brani
        }
561 182f3fe2 Olga Brani
        return this._updateMaxFilesReachedClass();
562 182f3fe2 Olga Brani
      },
563 182f3fe2 Olga Brani
      removedfile: function(file) {
564 182f3fe2 Olga Brani
        var _ref;
565 182f3fe2 Olga Brani
        if ((_ref = file.previewElement) != null) {
566 182f3fe2 Olga Brani
          _ref.parentNode.removeChild(file.previewElement);
567 182f3fe2 Olga Brani
        }
568 182f3fe2 Olga Brani
        return this._updateMaxFilesReachedClass();
569 182f3fe2 Olga Brani
      },
570 182f3fe2 Olga Brani
      thumbnail: function(file, dataUrl) {
571 182f3fe2 Olga Brani
        var thumbnailElement;
572 182f3fe2 Olga Brani
        file.previewElement.classList.remove("dz-file-preview");
573 182f3fe2 Olga Brani
        file.previewElement.classList.add("dz-image-preview");
574 182f3fe2 Olga Brani
        thumbnailElement = file.previewElement.querySelector("[data-dz-thumbnail]");
575 182f3fe2 Olga Brani
        thumbnailElement.alt = file.name;
576 182f3fe2 Olga Brani
        return thumbnailElement.src = dataUrl;
577 182f3fe2 Olga Brani
      },
578 182f3fe2 Olga Brani
      error: function(file, message) {
579 182f3fe2 Olga Brani
        file.previewElement.classList.add("dz-error");
580 182f3fe2 Olga Brani
        return file.previewElement.querySelector("[data-dz-errormessage]").textContent = message;
581 182f3fe2 Olga Brani
      },
582 182f3fe2 Olga Brani
      errormultiple: noop,
583 182f3fe2 Olga Brani
      processing: function(file) {
584 182f3fe2 Olga Brani
        file.previewElement.classList.add("dz-processing");
585 182f3fe2 Olga Brani
        if (file._removeLink) {
586 182f3fe2 Olga Brani
          return file._removeLink.textContent = this.options.dictCancelUpload;
587 182f3fe2 Olga Brani
        }
588 182f3fe2 Olga Brani
      },
589 182f3fe2 Olga Brani
      processingmultiple: noop,
590 182f3fe2 Olga Brani
      uploadprogress: function(file, progress, bytesSent) {
591 182f3fe2 Olga Brani
        return file.previewElement.querySelector("[data-dz-uploadprogress]").style.width = "" + progress + "%";
592 182f3fe2 Olga Brani
      },
593 182f3fe2 Olga Brani
      totaluploadprogress: noop,
594 182f3fe2 Olga Brani
      sending: noop,
595 182f3fe2 Olga Brani
      sendingmultiple: noop,
596 182f3fe2 Olga Brani
      success: function(file) {
597 182f3fe2 Olga Brani
        return file.previewElement.classList.add("dz-success");
598 182f3fe2 Olga Brani
      },
599 182f3fe2 Olga Brani
      successmultiple: noop,
600 182f3fe2 Olga Brani
      canceled: function(file) {
601 182f3fe2 Olga Brani
        return this.emit("error", file, "Upload canceled.");
602 182f3fe2 Olga Brani
      },
603 182f3fe2 Olga Brani
      canceledmultiple: noop,
604 182f3fe2 Olga Brani
      complete: function(file) {
605 182f3fe2 Olga Brani
        if (file._removeLink) {
606 182f3fe2 Olga Brani
          return file._removeLink.textContent = this.options.dictRemoveFile;
607 182f3fe2 Olga Brani
        }
608 182f3fe2 Olga Brani
      },
609 182f3fe2 Olga Brani
      completemultiple: noop,
610 182f3fe2 Olga Brani
      maxfilesexceeded: noop,
611 846f5913 Olga Brani
      previewTemplate: "<li class=\"dz-preview dz-file-preview\">\n <div class=\"dz-filename name-col txt\"><span data-dz-name></span></div>\n    <div class=\"dz-size size-col\" data-dz-size></div>\n<div class=\"progress-bar \">\n<div class=\"progress-wrap\">\n<div class=\"progress dz-progress\"><span span class=\"meter dz-upload\" data-dz-uploadprogress></span></div></div></div>\n<div class=\"dz-success-mark\"><span>✔</span></div>\n  <div class=\"dz-error-mark\"><span>✘</span></div>\n  <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n</li>"
612 182f3fe2 Olga Brani
    };
613 182f3fe2 Olga Brani
614 182f3fe2 Olga Brani
    extend = function() {
615 182f3fe2 Olga Brani
      var key, object, objects, target, val, _i, _len;
616 182f3fe2 Olga Brani
      target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
617 182f3fe2 Olga Brani
      for (_i = 0, _len = objects.length; _i < _len; _i++) {
618 182f3fe2 Olga Brani
        object = objects[_i];
619 182f3fe2 Olga Brani
        for (key in object) {
620 182f3fe2 Olga Brani
          val = object[key];
621 182f3fe2 Olga Brani
          target[key] = val;
622 182f3fe2 Olga Brani
        }
623 182f3fe2 Olga Brani
      }
624 182f3fe2 Olga Brani
      return target;
625 182f3fe2 Olga Brani
    };
626 182f3fe2 Olga Brani
627 182f3fe2 Olga Brani
    function Dropzone(element, options) {
628 182f3fe2 Olga Brani
      var elementOptions, fallback, _ref;
629 182f3fe2 Olga Brani
      this.element = element;
630 182f3fe2 Olga Brani
      this.version = Dropzone.version;
631 182f3fe2 Olga Brani
      this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\n*/g, "");
632 182f3fe2 Olga Brani
      this.clickableElements = [];
633 182f3fe2 Olga Brani
      this.listeners = [];
634 182f3fe2 Olga Brani
      this.files = [];
635 182f3fe2 Olga Brani
      if (typeof this.element === "string") {
636 182f3fe2 Olga Brani
        this.element = document.querySelector(this.element);
637 182f3fe2 Olga Brani
      }
638 182f3fe2 Olga Brani
      if (!(this.element && (this.element.nodeType != null))) {
639 182f3fe2 Olga Brani
        throw new Error("Invalid dropzone element.");
640 182f3fe2 Olga Brani
      }
641 182f3fe2 Olga Brani
      if (this.element.dropzone) {
642 182f3fe2 Olga Brani
        throw new Error("Dropzone already attached.");
643 182f3fe2 Olga Brani
      }
644 182f3fe2 Olga Brani
      Dropzone.instances.push(this);
645 182f3fe2 Olga Brani
      element.dropzone = this;
646 182f3fe2 Olga Brani
      elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};
647 182f3fe2 Olga Brani
      this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});
648 182f3fe2 Olga Brani
      if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {
649 182f3fe2 Olga Brani
        return this.options.fallback.call(this);
650 182f3fe2 Olga Brani
      }
651 182f3fe2 Olga Brani
      if (this.options.url == null) {
652 182f3fe2 Olga Brani
        this.options.url = this.element.getAttribute("action");
653 182f3fe2 Olga Brani
      }
654 182f3fe2 Olga Brani
      if (!this.options.url) {
655 182f3fe2 Olga Brani
        throw new Error("No URL provided.");
656 182f3fe2 Olga Brani
      }
657 182f3fe2 Olga Brani
      if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {
658 182f3fe2 Olga Brani
        throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
659 182f3fe2 Olga Brani
      }
660 182f3fe2 Olga Brani
      if (this.options.acceptedMimeTypes) {
661 182f3fe2 Olga Brani
        this.options.acceptedFiles = this.options.acceptedMimeTypes;
662 182f3fe2 Olga Brani
        delete this.options.acceptedMimeTypes;
663 182f3fe2 Olga Brani
      }
664 182f3fe2 Olga Brani
      this.options.method = this.options.method.toUpperCase();
665 182f3fe2 Olga Brani
      if ((fallback = this.getExistingFallback()) && fallback.parentNode) {
666 182f3fe2 Olga Brani
        fallback.parentNode.removeChild(fallback);
667 182f3fe2 Olga Brani
      }
668 182f3fe2 Olga Brani
      if (this.options.previewsContainer) {
669 182f3fe2 Olga Brani
        this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, "previewsContainer");
670 182f3fe2 Olga Brani
      } else {
671 182f3fe2 Olga Brani
        this.previewsContainer = this.element;
672 182f3fe2 Olga Brani
      }
673 182f3fe2 Olga Brani
      if (this.options.clickable) {
674 182f3fe2 Olga Brani
        if (this.options.clickable === true) {
675 182f3fe2 Olga Brani
          this.clickableElements = [this.element];
676 182f3fe2 Olga Brani
        } else {
677 182f3fe2 Olga Brani
          this.clickableElements = Dropzone.getElements(this.options.clickable, "clickable");
678 182f3fe2 Olga Brani
        }
679 182f3fe2 Olga Brani
      }
680 182f3fe2 Olga Brani
      this.init();
681 182f3fe2 Olga Brani
    }
682 182f3fe2 Olga Brani
683 182f3fe2 Olga Brani
    Dropzone.prototype.getAcceptedFiles = function() {
684 182f3fe2 Olga Brani
      var file, _i, _len, _ref, _results;
685 182f3fe2 Olga Brani
      _ref = this.files;
686 182f3fe2 Olga Brani
      _results = [];
687 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
688 182f3fe2 Olga Brani
        file = _ref[_i];
689 182f3fe2 Olga Brani
        if (file.accepted) {
690 182f3fe2 Olga Brani
          _results.push(file);
691 182f3fe2 Olga Brani
        }
692 182f3fe2 Olga Brani
      }
693 182f3fe2 Olga Brani
      return _results;
694 182f3fe2 Olga Brani
    };
695 182f3fe2 Olga Brani
696 182f3fe2 Olga Brani
    Dropzone.prototype.getRejectedFiles = function() {
697 182f3fe2 Olga Brani
      var file, _i, _len, _ref, _results;
698 182f3fe2 Olga Brani
      _ref = this.files;
699 182f3fe2 Olga Brani
      _results = [];
700 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
701 182f3fe2 Olga Brani
        file = _ref[_i];
702 182f3fe2 Olga Brani
        if (!file.accepted) {
703 182f3fe2 Olga Brani
          _results.push(file);
704 182f3fe2 Olga Brani
        }
705 182f3fe2 Olga Brani
      }
706 182f3fe2 Olga Brani
      return _results;
707 182f3fe2 Olga Brani
    };
708 182f3fe2 Olga Brani
709 182f3fe2 Olga Brani
    Dropzone.prototype.getQueuedFiles = function() {
710 182f3fe2 Olga Brani
      var file, _i, _len, _ref, _results;
711 182f3fe2 Olga Brani
      _ref = this.files;
712 182f3fe2 Olga Brani
      _results = [];
713 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
714 182f3fe2 Olga Brani
        file = _ref[_i];
715 182f3fe2 Olga Brani
        if (file.status === Dropzone.QUEUED) {
716 182f3fe2 Olga Brani
          _results.push(file);
717 182f3fe2 Olga Brani
        }
718 182f3fe2 Olga Brani
      }
719 182f3fe2 Olga Brani
      return _results;
720 182f3fe2 Olga Brani
    };
721 182f3fe2 Olga Brani
722 182f3fe2 Olga Brani
    Dropzone.prototype.getUploadingFiles = function() {
723 182f3fe2 Olga Brani
      var file, _i, _len, _ref, _results;
724 182f3fe2 Olga Brani
      _ref = this.files;
725 182f3fe2 Olga Brani
      _results = [];
726 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
727 182f3fe2 Olga Brani
        file = _ref[_i];
728 182f3fe2 Olga Brani
        if (file.status === Dropzone.UPLOADING) {
729 182f3fe2 Olga Brani
          _results.push(file);
730 182f3fe2 Olga Brani
        }
731 182f3fe2 Olga Brani
      }
732 182f3fe2 Olga Brani
      return _results;
733 182f3fe2 Olga Brani
    };
734 182f3fe2 Olga Brani
735 182f3fe2 Olga Brani
    Dropzone.prototype.init = function() {
736 182f3fe2 Olga Brani
      var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1,
737 182f3fe2 Olga Brani
        _this = this;
738 182f3fe2 Olga Brani
      if (this.element.tagName === "form") {
739 182f3fe2 Olga Brani
        this.element.setAttribute("enctype", "multipart/form-data");
740 182f3fe2 Olga Brani
      }
741 182f3fe2 Olga Brani
      if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) {
742 182f3fe2 Olga Brani
        this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><span>" + this.options.dictDefaultMessage + "</span></div>"));
743 182f3fe2 Olga Brani
      }
744 182f3fe2 Olga Brani
      if (this.clickableElements.length) {
745 182f3fe2 Olga Brani
        setupHiddenFileInput = function() {
746 182f3fe2 Olga Brani
          if (_this.hiddenFileInput) {
747 182f3fe2 Olga Brani
            document.body.removeChild(_this.hiddenFileInput);
748 182f3fe2 Olga Brani
          }
749 182f3fe2 Olga Brani
          _this.hiddenFileInput = document.createElement("input");
750 182f3fe2 Olga Brani
          _this.hiddenFileInput.setAttribute("type", "file");
751 182f3fe2 Olga Brani
          _this.hiddenFileInput.setAttribute("multiple", "multiple");
752 182f3fe2 Olga Brani
          if (_this.options.acceptedFiles != null) {
753 182f3fe2 Olga Brani
            _this.hiddenFileInput.setAttribute("accept", _this.options.acceptedFiles);
754 182f3fe2 Olga Brani
          }
755 182f3fe2 Olga Brani
          _this.hiddenFileInput.style.visibility = "hidden";
756 182f3fe2 Olga Brani
          _this.hiddenFileInput.style.position = "absolute";
757 182f3fe2 Olga Brani
          _this.hiddenFileInput.style.top = "0";
758 182f3fe2 Olga Brani
          _this.hiddenFileInput.style.left = "0";
759 182f3fe2 Olga Brani
          _this.hiddenFileInput.style.height = "0";
760 182f3fe2 Olga Brani
          _this.hiddenFileInput.style.width = "0";
761 182f3fe2 Olga Brani
          document.body.appendChild(_this.hiddenFileInput);
762 182f3fe2 Olga Brani
          return _this.hiddenFileInput.addEventListener("change", function() {
763 182f3fe2 Olga Brani
            var files;
764 182f3fe2 Olga Brani
            files = _this.hiddenFileInput.files;
765 182f3fe2 Olga Brani
            if (files.length) {
766 182f3fe2 Olga Brani
              _this.emit("selectedfiles", files);
767 182f3fe2 Olga Brani
              _this.handleFiles(files);
768 182f3fe2 Olga Brani
            }
769 182f3fe2 Olga Brani
            return setupHiddenFileInput();
770 182f3fe2 Olga Brani
          });
771 182f3fe2 Olga Brani
        };
772 182f3fe2 Olga Brani
        setupHiddenFileInput();
773 182f3fe2 Olga Brani
      }
774 182f3fe2 Olga Brani
      this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;
775 182f3fe2 Olga Brani
      _ref1 = this.events;
776 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
777 182f3fe2 Olga Brani
        eventName = _ref1[_i];
778 182f3fe2 Olga Brani
        this.on(eventName, this.options[eventName]);
779 182f3fe2 Olga Brani
      }
780 182f3fe2 Olga Brani
      this.on("uploadprogress", function() {
781 182f3fe2 Olga Brani
        return _this.updateTotalUploadProgress();
782 182f3fe2 Olga Brani
      });
783 182f3fe2 Olga Brani
      this.on("removedfile", function() {
784 182f3fe2 Olga Brani
        return _this.updateTotalUploadProgress();
785 182f3fe2 Olga Brani
      });
786 182f3fe2 Olga Brani
      this.on("canceled", function(file) {
787 182f3fe2 Olga Brani
        return _this.emit("complete", file);
788 182f3fe2 Olga Brani
      });
789 182f3fe2 Olga Brani
      noPropagation = function(e) {
790 182f3fe2 Olga Brani
        e.stopPropagation();
791 182f3fe2 Olga Brani
        if (e.preventDefault) {
792 182f3fe2 Olga Brani
          return e.preventDefault();
793 182f3fe2 Olga Brani
        } else {
794 182f3fe2 Olga Brani
          return e.returnValue = false;
795 182f3fe2 Olga Brani
        }
796 182f3fe2 Olga Brani
      };
797 182f3fe2 Olga Brani
      this.listeners = [
798 182f3fe2 Olga Brani
        {
799 182f3fe2 Olga Brani
          element: this.element,
800 182f3fe2 Olga Brani
          events: {
801 182f3fe2 Olga Brani
            "dragstart": function(e) {
802 182f3fe2 Olga Brani
              return _this.emit("dragstart", e);
803 182f3fe2 Olga Brani
            },
804 182f3fe2 Olga Brani
            "dragenter": function(e) {
805 182f3fe2 Olga Brani
              noPropagation(e);
806 182f3fe2 Olga Brani
              return _this.emit("dragenter", e);
807 182f3fe2 Olga Brani
            },
808 182f3fe2 Olga Brani
            "dragover": function(e) {
809 182f3fe2 Olga Brani
              noPropagation(e);
810 182f3fe2 Olga Brani
              return _this.emit("dragover", e);
811 182f3fe2 Olga Brani
            },
812 182f3fe2 Olga Brani
            "dragleave": function(e) {
813 182f3fe2 Olga Brani
              return _this.emit("dragleave", e);
814 182f3fe2 Olga Brani
            },
815 182f3fe2 Olga Brani
            "drop": function(e) {
816 182f3fe2 Olga Brani
              noPropagation(e);
817 182f3fe2 Olga Brani
              return _this.drop(e);
818 182f3fe2 Olga Brani
            },
819 182f3fe2 Olga Brani
            "dragend": function(e) {
820 182f3fe2 Olga Brani
              return _this.emit("dragend", e);
821 182f3fe2 Olga Brani
            }
822 182f3fe2 Olga Brani
          }
823 182f3fe2 Olga Brani
        }
824 182f3fe2 Olga Brani
      ];
825 182f3fe2 Olga Brani
      this.clickableElements.forEach(function(clickableElement) {
826 182f3fe2 Olga Brani
        return _this.listeners.push({
827 182f3fe2 Olga Brani
          element: clickableElement,
828 182f3fe2 Olga Brani
          events: {
829 182f3fe2 Olga Brani
            "click": function(evt) {
830 182f3fe2 Olga Brani
              if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(".dz-message")))) {
831 182f3fe2 Olga Brani
                return _this.hiddenFileInput.click();
832 182f3fe2 Olga Brani
              }
833 182f3fe2 Olga Brani
            }
834 182f3fe2 Olga Brani
          }
835 182f3fe2 Olga Brani
        });
836 182f3fe2 Olga Brani
      });
837 182f3fe2 Olga Brani
      this.enable();
838 182f3fe2 Olga Brani
      return this.options.init.call(this);
839 182f3fe2 Olga Brani
    };
840 182f3fe2 Olga Brani
841 182f3fe2 Olga Brani
    Dropzone.prototype.destroy = function() {
842 182f3fe2 Olga Brani
      var _ref;
843 182f3fe2 Olga Brani
      this.disable();
844 182f3fe2 Olga Brani
      this.removeAllFiles(true);
845 182f3fe2 Olga Brani
      if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {
846 182f3fe2 Olga Brani
        this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);
847 182f3fe2 Olga Brani
        this.hiddenFileInput = null;
848 182f3fe2 Olga Brani
      }
849 182f3fe2 Olga Brani
      return delete this.element.dropzone;
850 182f3fe2 Olga Brani
    };
851 182f3fe2 Olga Brani
852 182f3fe2 Olga Brani
    Dropzone.prototype.updateTotalUploadProgress = function() {
853 182f3fe2 Olga Brani
      var acceptedFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;
854 182f3fe2 Olga Brani
      totalBytesSent = 0;
855 182f3fe2 Olga Brani
      totalBytes = 0;
856 182f3fe2 Olga Brani
      acceptedFiles = this.getAcceptedFiles();
857 182f3fe2 Olga Brani
      if (acceptedFiles.length) {
858 182f3fe2 Olga Brani
        _ref = this.getAcceptedFiles();
859 182f3fe2 Olga Brani
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
860 182f3fe2 Olga Brani
          file = _ref[_i];
861 182f3fe2 Olga Brani
          totalBytesSent += file.upload.bytesSent;
862 182f3fe2 Olga Brani
          totalBytes += file.upload.total;
863 182f3fe2 Olga Brani
        }
864 182f3fe2 Olga Brani
        totalUploadProgress = 100 * totalBytesSent / totalBytes;
865 182f3fe2 Olga Brani
      } else {
866 182f3fe2 Olga Brani
        totalUploadProgress = 100;
867 182f3fe2 Olga Brani
      }
868 182f3fe2 Olga Brani
      return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent);
869 182f3fe2 Olga Brani
    };
870 182f3fe2 Olga Brani
871 182f3fe2 Olga Brani
    Dropzone.prototype.getFallbackForm = function() {
872 182f3fe2 Olga Brani
      var existingFallback, fields, fieldsString, form;
873 182f3fe2 Olga Brani
      if (existingFallback = this.getExistingFallback()) {
874 182f3fe2 Olga Brani
        return existingFallback;
875 182f3fe2 Olga Brani
      }
876 182f3fe2 Olga Brani
      fieldsString = "<div class=\"dz-fallback\">";
877 182f3fe2 Olga Brani
      if (this.options.dictFallbackText) {
878 182f3fe2 Olga Brani
        fieldsString += "<p>" + this.options.dictFallbackText + "</p>";
879 182f3fe2 Olga Brani
      }
880 182f3fe2 Olga Brani
      fieldsString += "<input type=\"file\" name=\"" + this.options.paramName + (this.options.uploadMultiple ? "[]" : "") + "\" " + (this.options.uploadMultiple ? 'multiple="multiple"' : void 0) + " /><button type=\"submit\">Upload!</button></div>";
881 182f3fe2 Olga Brani
      fields = Dropzone.createElement(fieldsString);
882 182f3fe2 Olga Brani
      if (this.element.tagName !== "FORM") {
883 182f3fe2 Olga Brani
        form = Dropzone.createElement("<form action=\"" + this.options.url + "\" enctype=\"multipart/form-data\" method=\"" + this.options.method + "\"></form>");
884 182f3fe2 Olga Brani
        form.appendChild(fields);
885 182f3fe2 Olga Brani
      } else {
886 182f3fe2 Olga Brani
        this.element.setAttribute("enctype", "multipart/form-data");
887 182f3fe2 Olga Brani
        this.element.setAttribute("method", this.options.method);
888 182f3fe2 Olga Brani
      }
889 182f3fe2 Olga Brani
      return form != null ? form : fields;
890 182f3fe2 Olga Brani
    };
891 182f3fe2 Olga Brani
892 182f3fe2 Olga Brani
    Dropzone.prototype.getExistingFallback = function() {
893 182f3fe2 Olga Brani
      var fallback, getFallback, tagName, _i, _len, _ref;
894 182f3fe2 Olga Brani
      getFallback = function(elements) {
895 182f3fe2 Olga Brani
        var el, _i, _len;
896 182f3fe2 Olga Brani
        for (_i = 0, _len = elements.length; _i < _len; _i++) {
897 182f3fe2 Olga Brani
          el = elements[_i];
898 182f3fe2 Olga Brani
          if (/(^| )fallback($| )/.test(el.className)) {
899 182f3fe2 Olga Brani
            return el;
900 182f3fe2 Olga Brani
          }
901 182f3fe2 Olga Brani
        }
902 182f3fe2 Olga Brani
      };
903 182f3fe2 Olga Brani
      _ref = ["div", "form"];
904 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
905 182f3fe2 Olga Brani
        tagName = _ref[_i];
906 182f3fe2 Olga Brani
        if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {
907 182f3fe2 Olga Brani
          return fallback;
908 182f3fe2 Olga Brani
        }
909 182f3fe2 Olga Brani
      }
910 182f3fe2 Olga Brani
    };
911 182f3fe2 Olga Brani
912 182f3fe2 Olga Brani
    Dropzone.prototype.setupEventListeners = function() {
913 182f3fe2 Olga Brani
      var elementListeners, event, listener, _i, _len, _ref, _results;
914 182f3fe2 Olga Brani
      _ref = this.listeners;
915 182f3fe2 Olga Brani
      _results = [];
916 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
917 182f3fe2 Olga Brani
        elementListeners = _ref[_i];
918 182f3fe2 Olga Brani
        _results.push((function() {
919 182f3fe2 Olga Brani
          var _ref1, _results1;
920 182f3fe2 Olga Brani
          _ref1 = elementListeners.events;
921 182f3fe2 Olga Brani
          _results1 = [];
922 182f3fe2 Olga Brani
          for (event in _ref1) {
923 182f3fe2 Olga Brani
            listener = _ref1[event];
924 182f3fe2 Olga Brani
            _results1.push(elementListeners.element.addEventListener(event, listener, false));
925 182f3fe2 Olga Brani
          }
926 182f3fe2 Olga Brani
          return _results1;
927 182f3fe2 Olga Brani
        })());
928 182f3fe2 Olga Brani
      }
929 182f3fe2 Olga Brani
      return _results;
930 182f3fe2 Olga Brani
    };
931 182f3fe2 Olga Brani
932 182f3fe2 Olga Brani
    Dropzone.prototype.removeEventListeners = function() {
933 182f3fe2 Olga Brani
      var elementListeners, event, listener, _i, _len, _ref, _results;
934 182f3fe2 Olga Brani
      _ref = this.listeners;
935 182f3fe2 Olga Brani
      _results = [];
936 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
937 182f3fe2 Olga Brani
        elementListeners = _ref[_i];
938 182f3fe2 Olga Brani
        _results.push((function() {
939 182f3fe2 Olga Brani
          var _ref1, _results1;
940 182f3fe2 Olga Brani
          _ref1 = elementListeners.events;
941 182f3fe2 Olga Brani
          _results1 = [];
942 182f3fe2 Olga Brani
          for (event in _ref1) {
943 182f3fe2 Olga Brani
            listener = _ref1[event];
944 182f3fe2 Olga Brani
            _results1.push(elementListeners.element.removeEventListener(event, listener, false));
945 182f3fe2 Olga Brani
          }
946 182f3fe2 Olga Brani
          return _results1;
947 182f3fe2 Olga Brani
        })());
948 182f3fe2 Olga Brani
      }
949 182f3fe2 Olga Brani
      return _results;
950 182f3fe2 Olga Brani
    };
951 182f3fe2 Olga Brani
952 182f3fe2 Olga Brani
    Dropzone.prototype.disable = function() {
953 182f3fe2 Olga Brani
      var file, _i, _len, _ref, _results;
954 182f3fe2 Olga Brani
      this.clickableElements.forEach(function(element) {
955 182f3fe2 Olga Brani
        return element.classList.remove("dz-clickable");
956 182f3fe2 Olga Brani
      });
957 182f3fe2 Olga Brani
      this.removeEventListeners();
958 182f3fe2 Olga Brani
      _ref = this.files;
959 182f3fe2 Olga Brani
      _results = [];
960 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
961 182f3fe2 Olga Brani
        file = _ref[_i];
962 182f3fe2 Olga Brani
        _results.push(this.cancelUpload(file));
963 182f3fe2 Olga Brani
      }
964 182f3fe2 Olga Brani
      return _results;
965 182f3fe2 Olga Brani
    };
966 182f3fe2 Olga Brani
967 182f3fe2 Olga Brani
    Dropzone.prototype.enable = function() {
968 182f3fe2 Olga Brani
      this.clickableElements.forEach(function(element) {
969 182f3fe2 Olga Brani
        return element.classList.add("dz-clickable");
970 182f3fe2 Olga Brani
      });
971 182f3fe2 Olga Brani
      return this.setupEventListeners();
972 182f3fe2 Olga Brani
    };
973 182f3fe2 Olga Brani
974 182f3fe2 Olga Brani
    Dropzone.prototype.filesize = function(size) {
975 182f3fe2 Olga Brani
      var string;
976 182f3fe2 Olga Brani
      if (size >= 100000000000) {
977 182f3fe2 Olga Brani
        size = size / 100000000000;
978 182f3fe2 Olga Brani
        string = "TB";
979 182f3fe2 Olga Brani
      } else if (size >= 100000000) {
980 182f3fe2 Olga Brani
        size = size / 100000000;
981 182f3fe2 Olga Brani
        string = "GB";
982 182f3fe2 Olga Brani
      } else if (size >= 100000) {
983 182f3fe2 Olga Brani
        size = size / 100000;
984 182f3fe2 Olga Brani
        string = "MB";
985 182f3fe2 Olga Brani
      } else if (size >= 100) {
986 182f3fe2 Olga Brani
        size = size / 100;
987 182f3fe2 Olga Brani
        string = "KB";
988 182f3fe2 Olga Brani
      } else {
989 182f3fe2 Olga Brani
        size = size * 10;
990 182f3fe2 Olga Brani
        string = "b";
991 182f3fe2 Olga Brani
      }
992 846f5913 Olga Brani
      return "" + (Math.round(size) / 10) + "" + string;
993 182f3fe2 Olga Brani
    };
994 182f3fe2 Olga Brani
995 182f3fe2 Olga Brani
    Dropzone.prototype._updateMaxFilesReachedClass = function() {
996 182f3fe2 Olga Brani
      if (this.options.maxFiles && this.getAcceptedFiles().length >= this.options.maxFiles) {
997 182f3fe2 Olga Brani
        return this.element.classList.add("dz-max-files-reached");
998 182f3fe2 Olga Brani
      } else {
999 182f3fe2 Olga Brani
        return this.element.classList.remove("dz-max-files-reached");
1000 182f3fe2 Olga Brani
      }
1001 182f3fe2 Olga Brani
    };
1002 182f3fe2 Olga Brani
1003 182f3fe2 Olga Brani
    Dropzone.prototype.drop = function(e) {
1004 182f3fe2 Olga Brani
      var files, items;
1005 182f3fe2 Olga Brani
      if (!e.dataTransfer) {
1006 182f3fe2 Olga Brani
        return;
1007 182f3fe2 Olga Brani
      }
1008 182f3fe2 Olga Brani
      this.emit("drop", e);
1009 182f3fe2 Olga Brani
      files = e.dataTransfer.files;
1010 182f3fe2 Olga Brani
      this.emit("selectedfiles", files);
1011 182f3fe2 Olga Brani
      if (files.length) {
1012 182f3fe2 Olga Brani
        items = e.dataTransfer.items;
1013 182f3fe2 Olga Brani
        if (items && items.length && ((items[0].webkitGetAsEntry != null) || (items[0].getAsEntry != null))) {
1014 182f3fe2 Olga Brani
          this.handleItems(items);
1015 182f3fe2 Olga Brani
        } else {
1016 182f3fe2 Olga Brani
          this.handleFiles(files);
1017 182f3fe2 Olga Brani
        }
1018 182f3fe2 Olga Brani
      }
1019 182f3fe2 Olga Brani
    };
1020 182f3fe2 Olga Brani
1021 182f3fe2 Olga Brani
    Dropzone.prototype.handleFiles = function(files) {
1022 182f3fe2 Olga Brani
      var file, _i, _len, _results;
1023 182f3fe2 Olga Brani
      _results = [];
1024 182f3fe2 Olga Brani
      for (_i = 0, _len = files.length; _i < _len; _i++) {
1025 182f3fe2 Olga Brani
        file = files[_i];
1026 182f3fe2 Olga Brani
        _results.push(this.addFile(file));
1027 182f3fe2 Olga Brani
      }
1028 182f3fe2 Olga Brani
      return _results;
1029 182f3fe2 Olga Brani
    };
1030 182f3fe2 Olga Brani
1031 182f3fe2 Olga Brani
    Dropzone.prototype.handleItems = function(items) {
1032 182f3fe2 Olga Brani
      var entry, item, _i, _len;
1033 182f3fe2 Olga Brani
      for (_i = 0, _len = items.length; _i < _len; _i++) {
1034 182f3fe2 Olga Brani
        item = items[_i];
1035 182f3fe2 Olga Brani
        if (item.webkitGetAsEntry != null) {
1036 182f3fe2 Olga Brani
          entry = item.webkitGetAsEntry();
1037 182f3fe2 Olga Brani
          if (entry.isFile) {
1038 182f3fe2 Olga Brani
            this.addFile(item.getAsFile());
1039 182f3fe2 Olga Brani
          } else if (entry.isDirectory) {
1040 182f3fe2 Olga Brani
            this.addDirectory(entry, entry.name);
1041 182f3fe2 Olga Brani
          }
1042 182f3fe2 Olga Brani
        } else {
1043 182f3fe2 Olga Brani
          this.addFile(item.getAsFile());
1044 182f3fe2 Olga Brani
        }
1045 182f3fe2 Olga Brani
      }
1046 182f3fe2 Olga Brani
    };
1047 182f3fe2 Olga Brani
1048 182f3fe2 Olga Brani
    Dropzone.prototype.accept = function(file, done) {
1049 182f3fe2 Olga Brani
      if (file.size > this.options.maxFilesize * 1024 * 1024) {
1050 182f3fe2 Olga Brani
        return done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize));
1051 182f3fe2 Olga Brani
      } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {
1052 182f3fe2 Olga Brani
        return done(this.options.dictInvalidFileType);
1053 182f3fe2 Olga Brani
      } else if (this.options.maxFiles && this.getAcceptedFiles().length >= this.options.maxFiles) {
1054 182f3fe2 Olga Brani
        done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles));
1055 182f3fe2 Olga Brani
        return this.emit("maxfilesexceeded", file);
1056 182f3fe2 Olga Brani
      } else {
1057 182f3fe2 Olga Brani
        return this.options.accept.call(this, file, done);
1058 182f3fe2 Olga Brani
      }
1059 182f3fe2 Olga Brani
    };
1060 182f3fe2 Olga Brani
1061 182f3fe2 Olga Brani
    Dropzone.prototype.addFile = function(file) {
1062 182f3fe2 Olga Brani
      var _this = this;
1063 182f3fe2 Olga Brani
      file.upload = {
1064 182f3fe2 Olga Brani
        progress: 0,
1065 182f3fe2 Olga Brani
        total: file.size,
1066 182f3fe2 Olga Brani
        bytesSent: 0
1067 182f3fe2 Olga Brani
      };
1068 182f3fe2 Olga Brani
      this.files.push(file);
1069 182f3fe2 Olga Brani
      file.status = Dropzone.ADDED;
1070 182f3fe2 Olga Brani
      this.emit("addedfile", file);
1071 182f3fe2 Olga Brani
      if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {
1072 182f3fe2 Olga Brani
        this.createThumbnail(file);
1073 182f3fe2 Olga Brani
      }
1074 182f3fe2 Olga Brani
      return this.accept(file, function(error) {
1075 182f3fe2 Olga Brani
        if (error) {
1076 182f3fe2 Olga Brani
          file.accepted = false;
1077 182f3fe2 Olga Brani
          return _this._errorProcessing([file], error);
1078 182f3fe2 Olga Brani
        } else {
1079 182f3fe2 Olga Brani
          return _this.enqueueFile(file);
1080 182f3fe2 Olga Brani
        }
1081 182f3fe2 Olga Brani
      });
1082 182f3fe2 Olga Brani
    };
1083 182f3fe2 Olga Brani
1084 182f3fe2 Olga Brani
    Dropzone.prototype.enqueueFiles = function(files) {
1085 182f3fe2 Olga Brani
      var file, _i, _len;
1086 182f3fe2 Olga Brani
      for (_i = 0, _len = files.length; _i < _len; _i++) {
1087 182f3fe2 Olga Brani
        file = files[_i];
1088 182f3fe2 Olga Brani
        this.enqueueFile(file);
1089 182f3fe2 Olga Brani
      }
1090 182f3fe2 Olga Brani
      return null;
1091 182f3fe2 Olga Brani
    };
1092 182f3fe2 Olga Brani
1093 182f3fe2 Olga Brani
    Dropzone.prototype.enqueueFile = function(file) {
1094 182f3fe2 Olga Brani
      var _this = this;
1095 182f3fe2 Olga Brani
      file.accepted = true;
1096 182f3fe2 Olga Brani
      if (file.status === Dropzone.ADDED) {
1097 182f3fe2 Olga Brani
        file.status = Dropzone.QUEUED;
1098 182f3fe2 Olga Brani
        if (this.options.autoProcessQueue) {
1099 182f3fe2 Olga Brani
          return setTimeout((function() {
1100 182f3fe2 Olga Brani
            return _this.processQueue();
1101 182f3fe2 Olga Brani
          }), 1);
1102 182f3fe2 Olga Brani
        }
1103 182f3fe2 Olga Brani
      } else {
1104 182f3fe2 Olga Brani
        throw new Error("This file can't be queued because it has already been processed or was rejected.");
1105 182f3fe2 Olga Brani
      }
1106 182f3fe2 Olga Brani
    };
1107 182f3fe2 Olga Brani
1108 182f3fe2 Olga Brani
    Dropzone.prototype.addDirectory = function(entry, path) {
1109 182f3fe2 Olga Brani
      var dirReader, entriesReader,
1110 182f3fe2 Olga Brani
        _this = this;
1111 182f3fe2 Olga Brani
      dirReader = entry.createReader();
1112 182f3fe2 Olga Brani
      entriesReader = function(entries) {
1113 182f3fe2 Olga Brani
        var _i, _len;
1114 182f3fe2 Olga Brani
        for (_i = 0, _len = entries.length; _i < _len; _i++) {
1115 182f3fe2 Olga Brani
          entry = entries[_i];
1116 182f3fe2 Olga Brani
          if (entry.isFile) {
1117 182f3fe2 Olga Brani
            entry.file(function(file) {
1118 182f3fe2 Olga Brani
              if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {
1119 182f3fe2 Olga Brani
                return;
1120 182f3fe2 Olga Brani
              }
1121 182f3fe2 Olga Brani
              file.fullPath = "" + path + "/" + file.name;
1122 182f3fe2 Olga Brani
              return _this.addFile(file);
1123 182f3fe2 Olga Brani
            });
1124 182f3fe2 Olga Brani
          } else if (entry.isDirectory) {
1125 182f3fe2 Olga Brani
            _this.addDirectory(entry, "" + path + "/" + entry.name);
1126 182f3fe2 Olga Brani
          }
1127 182f3fe2 Olga Brani
        }
1128 182f3fe2 Olga Brani
      };
1129 182f3fe2 Olga Brani
      return dirReader.readEntries(entriesReader, function(error) {
1130 182f3fe2 Olga Brani
        return typeof console !== "undefined" && console !== null ? typeof console.log === "function" ? console.log(error) : void 0 : void 0;
1131 182f3fe2 Olga Brani
      });
1132 182f3fe2 Olga Brani
    };
1133 182f3fe2 Olga Brani
1134 182f3fe2 Olga Brani
    Dropzone.prototype.removeFile = function(file) {
1135 182f3fe2 Olga Brani
      if (file.status === Dropzone.UPLOADING) {
1136 182f3fe2 Olga Brani
        this.cancelUpload(file);
1137 182f3fe2 Olga Brani
      }
1138 182f3fe2 Olga Brani
      this.files = without(this.files, file);
1139 182f3fe2 Olga Brani
      this.emit("removedfile", file);
1140 182f3fe2 Olga Brani
      if (this.files.length === 0) {
1141 182f3fe2 Olga Brani
        return this.emit("reset");
1142 182f3fe2 Olga Brani
      }
1143 182f3fe2 Olga Brani
    };
1144 182f3fe2 Olga Brani
1145 182f3fe2 Olga Brani
    Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {
1146 182f3fe2 Olga Brani
      var file, _i, _len, _ref;
1147 182f3fe2 Olga Brani
      if (cancelIfNecessary == null) {
1148 182f3fe2 Olga Brani
        cancelIfNecessary = false;
1149 182f3fe2 Olga Brani
      }
1150 182f3fe2 Olga Brani
      _ref = this.files.slice();
1151 182f3fe2 Olga Brani
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
1152 182f3fe2 Olga Brani
        file = _ref[_i];
1153 182f3fe2 Olga Brani
        if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {
1154 182f3fe2 Olga Brani
          this.removeFile(file);
1155 182f3fe2 Olga Brani
        }
1156 182f3fe2 Olga Brani
      }
1157 182f3fe2 Olga Brani
      return null;
1158 182f3fe2 Olga Brani
    };
1159 182f3fe2 Olga Brani
1160 182f3fe2 Olga Brani
    Dropzone.prototype.createThumbnail = function(file) {
1161 182f3fe2 Olga Brani
      var fileReader,
1162 182f3fe2 Olga Brani
        _this = this;
1163 182f3fe2 Olga Brani
      fileReader = new FileReader;
1164 182f3fe2 Olga Brani
      fileReader.onload = function() {
1165 182f3fe2 Olga Brani
        var img;
1166 182f3fe2 Olga Brani
        img = new Image;
1167 182f3fe2 Olga Brani
        img.onload = function() {
1168 182f3fe2 Olga Brani
          var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;
1169 182f3fe2 Olga Brani
          file.width = img.width;
1170 182f3fe2 Olga Brani
          file.height = img.height;
1171 182f3fe2 Olga Brani
          resizeInfo = _this.options.resize.call(_this, file);
1172 182f3fe2 Olga Brani
          if (resizeInfo.trgWidth == null) {
1173 182f3fe2 Olga Brani
            resizeInfo.trgWidth = _this.options.thumbnailWidth;
1174 182f3fe2 Olga Brani
          }
1175 182f3fe2 Olga Brani
          if (resizeInfo.trgHeight == null) {
1176 182f3fe2 Olga Brani
            resizeInfo.trgHeight = _this.options.thumbnailHeight;
1177 182f3fe2 Olga Brani
          }
1178 182f3fe2 Olga Brani
          canvas = document.createElement("canvas");
1179 182f3fe2 Olga Brani
          ctx = canvas.getContext("2d");
1180 182f3fe2 Olga Brani
          canvas.width = resizeInfo.trgWidth;
1181 182f3fe2 Olga Brani
          canvas.height = resizeInfo.trgHeight;
1182 182f3fe2 Olga Brani
          ctx.drawImage(img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);
1183 182f3fe2 Olga Brani
          thumbnail = canvas.toDataURL("image/png");
1184 182f3fe2 Olga Brani
          return _this.emit("thumbnail", file, thumbnail);
1185 182f3fe2 Olga Brani
        };
1186 182f3fe2 Olga Brani
        return img.src = fileReader.result;
1187 182f3fe2 Olga Brani
      };
1188 182f3fe2 Olga Brani
      return fileReader.readAsDataURL(file);
1189 182f3fe2 Olga Brani
    };
1190 182f3fe2 Olga Brani
1191 182f3fe2 Olga Brani
    Dropzone.prototype.processQueue = function() {
1192 182f3fe2 Olga Brani
      var i, parallelUploads, processingLength, queuedFiles;
1193 182f3fe2 Olga Brani
      parallelUploads = this.options.parallelUploads;
1194 182f3fe2 Olga Brani
      processingLength = this.getUploadingFiles().length;
1195 182f3fe2 Olga Brani
      i = processingLength;
1196 182f3fe2 Olga Brani
      if (processingLength >= parallelUploads) {
1197 182f3fe2 Olga Brani
        return;
1198 182f3fe2 Olga Brani
      }
1199 182f3fe2 Olga Brani
      queuedFiles = this.getQueuedFiles();
1200 182f3fe2 Olga Brani
      if (!(queuedFiles.length > 0)) {
1201 182f3fe2 Olga Brani
        return;
1202 182f3fe2 Olga Brani
      }
1203 182f3fe2 Olga Brani
      if (this.options.uploadMultiple) {
1204 182f3fe2 Olga Brani
        return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));
1205 182f3fe2 Olga Brani
      } else {
1206 182f3fe2 Olga Brani
        while (i < parallelUploads) {
1207 182f3fe2 Olga Brani
          if (!queuedFiles.length) {
1208 182f3fe2 Olga Brani
            return;
1209 182f3fe2 Olga Brani
          }
1210 182f3fe2 Olga Brani
          this.processFile(queuedFiles.shift());
1211 182f3fe2 Olga Brani
          i++;
1212 182f3fe2 Olga Brani
        }
1213 182f3fe2 Olga Brani
      }
1214 182f3fe2 Olga Brani
    };
1215 182f3fe2 Olga Brani
1216 182f3fe2 Olga Brani
    Dropzone.prototype.processFile = function(file) {
1217 182f3fe2 Olga Brani
      return this.processFiles([file]);
1218 182f3fe2 Olga Brani
    };
1219 182f3fe2 Olga Brani
1220 182f3fe2 Olga Brani
    Dropzone.prototype.processFiles = function(files) {
1221 182f3fe2 Olga Brani
      var file, _i, _len;
1222 182f3fe2 Olga Brani
      for (_i = 0, _len = files.length; _i < _len; _i++) {
1223 182f3fe2 Olga Brani
        file = files[_i];
1224 182f3fe2 Olga Brani
        file.processing = true;
1225 182f3fe2 Olga Brani
        file.status = Dropzone.UPLOADING;
1226 182f3fe2 Olga Brani
        this.emit("processing", file);
1227 182f3fe2 Olga Brani
      }
1228 182f3fe2 Olga Brani
      if (this.options.uploadMultiple) {
1229 182f3fe2 Olga Brani
        this.emit("processingmultiple", files);
1230 182f3fe2 Olga Brani
      }
1231 182f3fe2 Olga Brani
      return this.uploadFiles(files);
1232 182f3fe2 Olga Brani
    };
1233 182f3fe2 Olga Brani
1234 182f3fe2 Olga Brani
    Dropzone.prototype._getFilesWithXhr = function(xhr) {
1235 182f3fe2 Olga Brani
      var file, files;
1236 182f3fe2 Olga Brani
      return files = (function() {
1237 182f3fe2 Olga Brani
        var _i, _len, _ref, _results;
1238 182f3fe2 Olga Brani
        _ref = this.files;
1239 182f3fe2 Olga Brani
        _results = [];
1240 182f3fe2 Olga Brani
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
1241 182f3fe2 Olga Brani
          file = _ref[_i];
1242 182f3fe2 Olga Brani
          if (file.xhr === xhr) {
1243 182f3fe2 Olga Brani
            _results.push(file);
1244 182f3fe2 Olga Brani
          }
1245 182f3fe2 Olga Brani
        }
1246 182f3fe2 Olga Brani
        return _results;
1247 182f3fe2 Olga Brani
      }).call(this);
1248 182f3fe2 Olga Brani
    };
1249 182f3fe2 Olga Brani
1250 182f3fe2 Olga Brani
    Dropzone.prototype.cancelUpload = function(file) {
1251 182f3fe2 Olga Brani
      var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;
1252 182f3fe2 Olga Brani
      if (file.status === Dropzone.UPLOADING) {
1253 182f3fe2 Olga Brani
        groupedFiles = this._getFilesWithXhr(file.xhr);
1254 182f3fe2 Olga Brani
        for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {
1255 182f3fe2 Olga Brani
          groupedFile = groupedFiles[_i];
1256 182f3fe2 Olga Brani
          groupedFile.status = Dropzone.CANCELED;
1257 182f3fe2 Olga Brani
        }
1258 182f3fe2 Olga Brani
        file.xhr.abort();
1259 182f3fe2 Olga Brani
        for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {
1260 182f3fe2 Olga Brani
          groupedFile = groupedFiles[_j];
1261 182f3fe2 Olga Brani
          this.emit("canceled", groupedFile);
1262 182f3fe2 Olga Brani
        }
1263 182f3fe2 Olga Brani
        if (this.options.uploadMultiple) {
1264 182f3fe2 Olga Brani
          this.emit("canceledmultiple", groupedFiles);
1265 182f3fe2 Olga Brani
        }
1266 182f3fe2 Olga Brani
      } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {
1267 182f3fe2 Olga Brani
        file.status = Dropzone.CANCELED;
1268 182f3fe2 Olga Brani
        this.emit("canceled", file);
1269 182f3fe2 Olga Brani
        if (this.options.uploadMultiple) {
1270 182f3fe2 Olga Brani
          this.emit("canceledmultiple", [file]);
1271 182f3fe2 Olga Brani
        }
1272 182f3fe2 Olga Brani
      }
1273 182f3fe2 Olga Brani
      if (this.options.autoProcessQueue) {
1274 182f3fe2 Olga Brani
        return this.processQueue();
1275 182f3fe2 Olga Brani
      }
1276 182f3fe2 Olga Brani
    };
1277 182f3fe2 Olga Brani
1278 182f3fe2 Olga Brani
    Dropzone.prototype.uploadFile = function(file) {
1279 182f3fe2 Olga Brani
      return this.uploadFiles([file]);
1280 182f3fe2 Olga Brani
    };
1281 182f3fe2 Olga Brani
1282 182f3fe2 Olga Brani
    Dropzone.prototype.uploadFiles = function(files) {
1283 182f3fe2 Olga Brani
      var file, formData, handleError, headerName, headerValue, headers, input, inputName, inputType, key, progressObj, response, updateProgress, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3,
1284 182f3fe2 Olga Brani
        _this = this;
1285 182f3fe2 Olga Brani
      xhr = new XMLHttpRequest();
1286 182f3fe2 Olga Brani
      for (_i = 0, _len = files.length; _i < _len; _i++) {
1287 182f3fe2 Olga Brani
        file = files[_i];
1288 182f3fe2 Olga Brani
        file.xhr = xhr;
1289 182f3fe2 Olga Brani
      }
1290 182f3fe2 Olga Brani
      xhr.open(this.options.method, this.options.url, true);
1291 182f3fe2 Olga Brani
      xhr.withCredentials = !!this.options.withCredentials;
1292 182f3fe2 Olga Brani
      response = null;
1293 182f3fe2 Olga Brani
      handleError = function() {
1294 182f3fe2 Olga Brani
        var _j, _len1, _results;
1295 182f3fe2 Olga Brani
        _results = [];
1296 182f3fe2 Olga Brani
        for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
1297 182f3fe2 Olga Brani
          file = files[_j];
1298 182f3fe2 Olga Brani
          _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr));
1299 182f3fe2 Olga Brani
        }
1300 182f3fe2 Olga Brani
        return _results;
1301 182f3fe2 Olga Brani
      };
1302 182f3fe2 Olga Brani
      updateProgress = function(e) {
1303 182f3fe2 Olga Brani
        var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;
1304 182f3fe2 Olga Brani
        if (e != null) {
1305 182f3fe2 Olga Brani
          progress = 100 * e.loaded / e.total;
1306 182f3fe2 Olga Brani
          for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
1307 182f3fe2 Olga Brani
            file = files[_j];
1308 182f3fe2 Olga Brani
            file.upload = {
1309 182f3fe2 Olga Brani
              progress: progress,
1310 182f3fe2 Olga Brani
              total: e.total,
1311 182f3fe2 Olga Brani
              bytesSent: e.loaded
1312 182f3fe2 Olga Brani
            };
1313 182f3fe2 Olga Brani
          }
1314 182f3fe2 Olga Brani
        } else {
1315 182f3fe2 Olga Brani
          allFilesFinished = true;
1316 182f3fe2 Olga Brani
          progress = 100;
1317 182f3fe2 Olga Brani
          for (_k = 0, _len2 = files.length; _k < _len2; _k++) {
1318 182f3fe2 Olga Brani
            file = files[_k];
1319 182f3fe2 Olga Brani
            if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {
1320 182f3fe2 Olga Brani
              allFilesFinished = false;
1321 182f3fe2 Olga Brani
            }
1322 182f3fe2 Olga Brani
            file.upload.progress = progress;
1323 182f3fe2 Olga Brani
            file.upload.bytesSent = file.upload.total;
1324 182f3fe2 Olga Brani
          }
1325 182f3fe2 Olga Brani
          if (allFilesFinished) {
1326 182f3fe2 Olga Brani
            return;
1327 182f3fe2 Olga Brani
          }
1328 182f3fe2 Olga Brani
        }
1329 182f3fe2 Olga Brani
        _results = [];
1330 182f3fe2 Olga Brani
        for (_l = 0, _len3 = files.length; _l < _len3; _l++) {
1331 182f3fe2 Olga Brani
          file = files[_l];
1332 182f3fe2 Olga Brani
          _results.push(_this.emit("uploadprogress", file, progress, file.upload.bytesSent));
1333 182f3fe2 Olga Brani
        }
1334 182f3fe2 Olga Brani
        return _results;
1335 182f3fe2 Olga Brani
      };
1336 182f3fe2 Olga Brani
      xhr.onload = function(e) {
1337 182f3fe2 Olga Brani
        var _ref;
1338 182f3fe2 Olga Brani
        if (files[0].status === Dropzone.CANCELED) {
1339 182f3fe2 Olga Brani
          return;
1340 182f3fe2 Olga Brani
        }
1341 182f3fe2 Olga Brani
        if (xhr.readyState !== 4) {
1342 182f3fe2 Olga Brani
          return;
1343 182f3fe2 Olga Brani
        }
1344 182f3fe2 Olga Brani
        response = xhr.responseText;
1345 182f3fe2 Olga Brani
        if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) {
1346 182f3fe2 Olga Brani
          try {
1347 182f3fe2 Olga Brani
            response = JSON.parse(response);
1348 182f3fe2 Olga Brani
          } catch (_error) {
1349 182f3fe2 Olga Brani
            e = _error;
1350 182f3fe2 Olga Brani
            response = "Invalid JSON response from server.";
1351 182f3fe2 Olga Brani
          }
1352 182f3fe2 Olga Brani
        }
1353 182f3fe2 Olga Brani
        updateProgress();
1354 182f3fe2 Olga Brani
        if (!((200 <= (_ref = xhr.status) && _ref < 300))) {
1355 182f3fe2 Olga Brani
          return handleError();
1356 182f3fe2 Olga Brani
        } else {
1357 182f3fe2 Olga Brani
          return _this._finished(files, response, e);
1358 182f3fe2 Olga Brani
        }
1359 182f3fe2 Olga Brani
      };
1360 182f3fe2 Olga Brani
      xhr.onerror = function() {
1361 182f3fe2 Olga Brani
        if (files[0].status === Dropzone.CANCELED) {
1362 182f3fe2 Olga Brani
          return;
1363 182f3fe2 Olga Brani
        }
1364 182f3fe2 Olga Brani
        return handleError();
1365 182f3fe2 Olga Brani
      };
1366 182f3fe2 Olga Brani
      progressObj = (_ref = xhr.upload) != null ? _ref : xhr;
1367 182f3fe2 Olga Brani
      progressObj.onprogress = updateProgress;
1368 182f3fe2 Olga Brani
      headers = {
1369 182f3fe2 Olga Brani
        "Accept": "application/json",
1370 182f3fe2 Olga Brani
        "Cache-Control": "no-cache",
1371 182f3fe2 Olga Brani
        "X-Requested-With": "XMLHttpRequest"
1372 182f3fe2 Olga Brani
      };
1373 182f3fe2 Olga Brani
      if (this.options.headers) {
1374 182f3fe2 Olga Brani
        extend(headers, this.options.headers);
1375 182f3fe2 Olga Brani
      }
1376 182f3fe2 Olga Brani
      for (headerName in headers) {
1377 182f3fe2 Olga Brani
        headerValue = headers[headerName];
1378 182f3fe2 Olga Brani
        xhr.setRequestHeader(headerName, headerValue);
1379 182f3fe2 Olga Brani
      }
1380 182f3fe2 Olga Brani
      formData = new FormData();
1381 182f3fe2 Olga Brani
      if (this.options.params) {
1382 182f3fe2 Olga Brani
        _ref1 = this.options.params;
1383 182f3fe2 Olga Brani
        for (key in _ref1) {
1384 182f3fe2 Olga Brani
          value = _ref1[key];
1385 182f3fe2 Olga Brani
          formData.append(key, value);
1386 182f3fe2 Olga Brani
        }
1387 182f3fe2 Olga Brani
      }
1388 182f3fe2 Olga Brani
      for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
1389 182f3fe2 Olga Brani
        file = files[_j];
1390 182f3fe2 Olga Brani
        this.emit("sending", file, xhr, formData);
1391 182f3fe2 Olga Brani
      }
1392 182f3fe2 Olga Brani
      if (this.options.uploadMultiple) {
1393 182f3fe2 Olga Brani
        this.emit("sendingmultiple", files, xhr, formData);
1394 182f3fe2 Olga Brani
      }
1395 182f3fe2 Olga Brani
      if (this.element.tagName === "FORM") {
1396 182f3fe2 Olga Brani
        _ref2 = this.element.querySelectorAll("input, textarea, select, button");
1397 182f3fe2 Olga Brani
        for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
1398 182f3fe2 Olga Brani
          input = _ref2[_k];
1399 182f3fe2 Olga Brani
          inputName = input.getAttribute("name");
1400 182f3fe2 Olga Brani
          inputType = input.getAttribute("type");
1401 182f3fe2 Olga Brani
          if (!inputType || ((_ref3 = inputType.toLowerCase()) !== "checkbox" && _ref3 !== "radio") || input.checked) {
1402 182f3fe2 Olga Brani
            formData.append(inputName, input.value);
1403 182f3fe2 Olga Brani
          }
1404 182f3fe2 Olga Brani
        }
1405 182f3fe2 Olga Brani
      }
1406 182f3fe2 Olga Brani
      for (_l = 0, _len3 = files.length; _l < _len3; _l++) {
1407 182f3fe2 Olga Brani
        file = files[_l];
1408 182f3fe2 Olga Brani
        formData.append("" + this.options.paramName + (this.options.uploadMultiple ? "[]" : ""), file, file.name);
1409 182f3fe2 Olga Brani
      }
1410 182f3fe2 Olga Brani
      return xhr.send(formData);
1411 182f3fe2 Olga Brani
    };
1412 182f3fe2 Olga Brani
1413 182f3fe2 Olga Brani
    Dropzone.prototype._finished = function(files, responseText, e) {
1414 182f3fe2 Olga Brani
      var file, _i, _len;
1415 182f3fe2 Olga Brani
      for (_i = 0, _len = files.length; _i < _len; _i++) {
1416 182f3fe2 Olga Brani
        file = files[_i];
1417 182f3fe2 Olga Brani
        file.status = Dropzone.SUCCESS;
1418 182f3fe2 Olga Brani
        this.emit("success", file, responseText, e);
1419 182f3fe2 Olga Brani
        this.emit("complete", file);
1420 182f3fe2 Olga Brani
      }
1421 182f3fe2 Olga Brani
      if (this.options.uploadMultiple) {
1422 182f3fe2 Olga Brani
        this.emit("successmultiple", files, responseText, e);
1423 182f3fe2 Olga Brani
        this.emit("completemultiple", files);
1424 182f3fe2 Olga Brani
      }
1425 182f3fe2 Olga Brani
      if (this.options.autoProcessQueue) {
1426 182f3fe2 Olga Brani
        return this.processQueue();
1427 182f3fe2 Olga Brani
      }
1428 182f3fe2 Olga Brani
    };
1429 182f3fe2 Olga Brani
1430 182f3fe2 Olga Brani
    Dropzone.prototype._errorProcessing = function(files, message, xhr) {
1431 182f3fe2 Olga Brani
      var file, _i, _len;
1432 182f3fe2 Olga Brani
      /*  
1433 182f3fe2 Olga Brani
      snf: In case of error, error message defaults to server response, i.e. the html page.
1434 182f3fe2 Olga Brani
      To overwrite it, var message='error message' was added
1435 182f3fe2 Olga Brani
      */
1436 182f3fe2 Olga Brani
      var message = 'error message';
1437 182f3fe2 Olga Brani
      for (_i = 0, _len = files.length; _i < _len; _i++) {
1438 182f3fe2 Olga Brani
        file = files[_i];
1439 182f3fe2 Olga Brani
        file.status = Dropzone.ERROR;
1440 182f3fe2 Olga Brani
        this.emit("error", file, message, xhr);
1441 182f3fe2 Olga Brani
        this.emit("complete", file);
1442 182f3fe2 Olga Brani
      }
1443 182f3fe2 Olga Brani
      if (this.options.uploadMultiple) {
1444 182f3fe2 Olga Brani
        this.emit("errormultiple", files, message, xhr);
1445 182f3fe2 Olga Brani
        this.emit("completemultiple", files);
1446 182f3fe2 Olga Brani
      }
1447 182f3fe2 Olga Brani
      if (this.options.autoProcessQueue) {
1448 182f3fe2 Olga Brani
        return this.processQueue();
1449 182f3fe2 Olga Brani
      }
1450 182f3fe2 Olga Brani
    };
1451 182f3fe2 Olga Brani
1452 182f3fe2 Olga Brani
    return Dropzone;
1453 182f3fe2 Olga Brani
1454 182f3fe2 Olga Brani
  })(Em);
1455 182f3fe2 Olga Brani
1456 182f3fe2 Olga Brani
  Dropzone.version = "3.7.1";
1457 182f3fe2 Olga Brani
1458 182f3fe2 Olga Brani
  Dropzone.options = {};
1459 182f3fe2 Olga Brani
1460 182f3fe2 Olga Brani
  Dropzone.optionsForElement = function(element) {
1461 182f3fe2 Olga Brani
    if (element.id) {
1462 182f3fe2 Olga Brani
      return Dropzone.options[camelize(element.id)];
1463 182f3fe2 Olga Brani
    } else {
1464 182f3fe2 Olga Brani
      return void 0;
1465 182f3fe2 Olga Brani
    }
1466 182f3fe2 Olga Brani
  };
1467 182f3fe2 Olga Brani
1468 182f3fe2 Olga Brani
  Dropzone.instances = [];
1469 182f3fe2 Olga Brani
1470 182f3fe2 Olga Brani
  Dropzone.forElement = function(element) {
1471 182f3fe2 Olga Brani
    if (typeof element === "string") {
1472 182f3fe2 Olga Brani
      element = document.querySelector(element);
1473 182f3fe2 Olga Brani
    }
1474 182f3fe2 Olga Brani
    if ((element != null ? element.dropzone : void 0) == null) {
1475 182f3fe2 Olga Brani
      throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
1476 182f3fe2 Olga Brani
    }
1477 182f3fe2 Olga Brani
    return element.dropzone;
1478 182f3fe2 Olga Brani
  };
1479 182f3fe2 Olga Brani
1480 182f3fe2 Olga Brani
  Dropzone.autoDiscover = true;
1481 182f3fe2 Olga Brani
1482 182f3fe2 Olga Brani
  Dropzone.discover = function() {
1483 182f3fe2 Olga Brani
    var checkElements, dropzone, dropzones, _i, _len, _results;
1484 182f3fe2 Olga Brani
    if (document.querySelectorAll) {
1485 182f3fe2 Olga Brani
      dropzones = document.querySelectorAll(".dropzone");
1486 182f3fe2 Olga Brani
    } else {
1487 182f3fe2 Olga Brani
      dropzones = [];
1488 182f3fe2 Olga Brani
      checkElements = function(elements) {
1489 182f3fe2 Olga Brani
        var el, _i, _len, _results;
1490 182f3fe2 Olga Brani
        _results = [];
1491 182f3fe2 Olga Brani
        for (_i = 0, _len = elements.length; _i < _len; _i++) {
1492 182f3fe2 Olga Brani
          el = elements[_i];
1493 182f3fe2 Olga Brani
          if (/(^| )dropzone($| )/.test(el.className)) {
1494 182f3fe2 Olga Brani
            _results.push(dropzones.push(el));
1495 182f3fe2 Olga Brani
          } else {
1496 182f3fe2 Olga Brani
            _results.push(void 0);
1497 182f3fe2 Olga Brani
          }
1498 182f3fe2 Olga Brani
        }
1499 182f3fe2 Olga Brani
        return _results;
1500 182f3fe2 Olga Brani
      };
1501 182f3fe2 Olga Brani
      checkElements(document.getElementsByTagName("div"));
1502 182f3fe2 Olga Brani
      checkElements(document.getElementsByTagName("form"));
1503 182f3fe2 Olga Brani
    }
1504 182f3fe2 Olga Brani
    _results = [];
1505 182f3fe2 Olga Brani
    for (_i = 0, _len = dropzones.length; _i < _len; _i++) {
1506 182f3fe2 Olga Brani
      dropzone = dropzones[_i];
1507 182f3fe2 Olga Brani
      if (Dropzone.optionsForElement(dropzone) !== false) {
1508 182f3fe2 Olga Brani
        _results.push(new Dropzone(dropzone));
1509 182f3fe2 Olga Brani
      } else {
1510 182f3fe2 Olga Brani
        _results.push(void 0);
1511 182f3fe2 Olga Brani
      }
1512 182f3fe2 Olga Brani
    }
1513 182f3fe2 Olga Brani
    return _results;
1514 182f3fe2 Olga Brani
  };
1515 182f3fe2 Olga Brani
1516 182f3fe2 Olga Brani
  Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\/12/i];
1517 182f3fe2 Olga Brani
1518 182f3fe2 Olga Brani
  Dropzone.isBrowserSupported = function() {
1519 182f3fe2 Olga Brani
    var capableBrowser, regex, _i, _len, _ref;
1520 182f3fe2 Olga Brani
    capableBrowser = true;
1521 182f3fe2 Olga Brani
    if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {
1522 182f3fe2 Olga Brani
      if (!("classList" in document.createElement("a"))) {
1523 182f3fe2 Olga Brani
        capableBrowser = false;
1524 182f3fe2 Olga Brani
      } else {
1525 182f3fe2 Olga Brani
        _ref = Dropzone.blacklistedBrowsers;
1526 182f3fe2 Olga Brani
        for (_i = 0, _len = _ref.length; _i < _len; _i++) {
1527 182f3fe2 Olga Brani
          regex = _ref[_i];
1528 182f3fe2 Olga Brani
          if (regex.test(navigator.userAgent)) {
1529 182f3fe2 Olga Brani
            capableBrowser = false;
1530 182f3fe2 Olga Brani
            continue;
1531 182f3fe2 Olga Brani
          }
1532 182f3fe2 Olga Brani
        }
1533 182f3fe2 Olga Brani
      }
1534 182f3fe2 Olga Brani
    } else {
1535 182f3fe2 Olga Brani
      capableBrowser = false;
1536 182f3fe2 Olga Brani
    }
1537 182f3fe2 Olga Brani
    return capableBrowser;
1538 182f3fe2 Olga Brani
  };
1539 182f3fe2 Olga Brani
1540 182f3fe2 Olga Brani
  without = function(list, rejectedItem) {
1541 182f3fe2 Olga Brani
    var item, _i, _len, _results;
1542 182f3fe2 Olga Brani
    _results = [];
1543 182f3fe2 Olga Brani
    for (_i = 0, _len = list.length; _i < _len; _i++) {
1544 182f3fe2 Olga Brani
      item = list[_i];
1545 182f3fe2 Olga Brani
      if (item !== rejectedItem) {
1546 182f3fe2 Olga Brani
        _results.push(item);
1547 182f3fe2 Olga Brani
      }
1548 182f3fe2 Olga Brani
    }
1549 182f3fe2 Olga Brani
    return _results;
1550 182f3fe2 Olga Brani
  };
1551 182f3fe2 Olga Brani
1552 182f3fe2 Olga Brani
  camelize = function(str) {
1553 182f3fe2 Olga Brani
    return str.replace(/[\-_](\w)/g, function(match) {
1554 182f3fe2 Olga Brani
      return match[1].toUpperCase();
1555 182f3fe2 Olga Brani
    });
1556 182f3fe2 Olga Brani
  };
1557 182f3fe2 Olga Brani
1558 182f3fe2 Olga Brani
  Dropzone.createElement = function(string) {
1559 182f3fe2 Olga Brani
    var div;
1560 182f3fe2 Olga Brani
    div = document.createElement("div");
1561 182f3fe2 Olga Brani
    div.innerHTML = string;
1562 182f3fe2 Olga Brani
    return div.childNodes[0];
1563 182f3fe2 Olga Brani
  };
1564 182f3fe2 Olga Brani
1565 182f3fe2 Olga Brani
  Dropzone.elementInside = function(element, container) {
1566 182f3fe2 Olga Brani
    if (element === container) {
1567 182f3fe2 Olga Brani
      return true;
1568 182f3fe2 Olga Brani
    }
1569 182f3fe2 Olga Brani
    while (element = element.parentNode) {
1570 182f3fe2 Olga Brani
      if (element === container) {
1571 182f3fe2 Olga Brani
        return true;
1572 182f3fe2 Olga Brani
      }
1573 182f3fe2 Olga Brani
    }
1574 182f3fe2 Olga Brani
    return false;
1575 182f3fe2 Olga Brani
  };
1576 182f3fe2 Olga Brani
1577 182f3fe2 Olga Brani
  Dropzone.getElement = function(el, name) {
1578 182f3fe2 Olga Brani
    var element;
1579 182f3fe2 Olga Brani
    if (typeof el === "string") {
1580 182f3fe2 Olga Brani
      element = document.querySelector(el);
1581 182f3fe2 Olga Brani
    } else if (el.nodeType != null) {
1582 182f3fe2 Olga Brani
      element = el;
1583 182f3fe2 Olga Brani
    }
1584 182f3fe2 Olga Brani
    if (element == null) {
1585 182f3fe2 Olga Brani
      throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector or a plain HTML element.");
1586 182f3fe2 Olga Brani
    }
1587 182f3fe2 Olga Brani
    return element;
1588 182f3fe2 Olga Brani
  };
1589 182f3fe2 Olga Brani
1590 182f3fe2 Olga Brani
  Dropzone.getElements = function(els, name) {
1591 182f3fe2 Olga Brani
    var e, el, elements, _i, _j, _len, _len1, _ref;
1592 182f3fe2 Olga Brani
    if (els instanceof Array) {
1593 182f3fe2 Olga Brani
      elements = [];
1594 182f3fe2 Olga Brani
      try {
1595 182f3fe2 Olga Brani
        for (_i = 0, _len = els.length; _i < _len; _i++) {
1596 182f3fe2 Olga Brani
          el = els[_i];
1597 182f3fe2 Olga Brani
          elements.push(this.getElement(el, name));
1598 182f3fe2 Olga Brani
        }
1599 182f3fe2 Olga Brani
      } catch (_error) {
1600 182f3fe2 Olga Brani
        e = _error;
1601 182f3fe2 Olga Brani
        elements = null;
1602 182f3fe2 Olga Brani
      }
1603 182f3fe2 Olga Brani
    } else if (typeof els === "string") {
1604 182f3fe2 Olga Brani
      elements = [];
1605 182f3fe2 Olga Brani
      _ref = document.querySelectorAll(els);
1606 182f3fe2 Olga Brani
      for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
1607 182f3fe2 Olga Brani
        el = _ref[_j];
1608 182f3fe2 Olga Brani
        elements.push(el);
1609 182f3fe2 Olga Brani
      }
1610 182f3fe2 Olga Brani
    } else if (els.nodeType != null) {
1611 182f3fe2 Olga Brani
      elements = [els];
1612 182f3fe2 Olga Brani
    }
1613 182f3fe2 Olga Brani
    if (!((elements != null) && elements.length)) {
1614 182f3fe2 Olga Brani
      throw new Error("Invalid `" + name + "` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");
1615 182f3fe2 Olga Brani
    }
1616 182f3fe2 Olga Brani
    return elements;
1617 182f3fe2 Olga Brani
  };
1618 182f3fe2 Olga Brani
1619 182f3fe2 Olga Brani
  Dropzone.confirm = function(question, accepted, rejected) {
1620 182f3fe2 Olga Brani
    if (window.confirm(question)) {
1621 182f3fe2 Olga Brani
      return accepted();
1622 182f3fe2 Olga Brani
    } else if (rejected != null) {
1623 182f3fe2 Olga Brani
      return rejected();
1624 182f3fe2 Olga Brani
    }
1625 182f3fe2 Olga Brani
  };
1626 182f3fe2 Olga Brani
1627 182f3fe2 Olga Brani
  Dropzone.isValidFile = function(file, acceptedFiles) {
1628 182f3fe2 Olga Brani
    var baseMimeType, mimeType, validType, _i, _len;
1629 182f3fe2 Olga Brani
    if (!acceptedFiles) {
1630 182f3fe2 Olga Brani
      return true;
1631 182f3fe2 Olga Brani
    }
1632 182f3fe2 Olga Brani
    acceptedFiles = acceptedFiles.split(",");
1633 182f3fe2 Olga Brani
    mimeType = file.type;
1634 182f3fe2 Olga Brani
    baseMimeType = mimeType.replace(/\/.*$/, "");
1635 182f3fe2 Olga Brani
    for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {
1636 182f3fe2 Olga Brani
      validType = acceptedFiles[_i];
1637 182f3fe2 Olga Brani
      validType = validType.trim();
1638 182f3fe2 Olga Brani
      if (validType.charAt(0) === ".") {
1639 182f3fe2 Olga Brani
        if (file.name.indexOf(validType, file.name.length - validType.length) !== -1) {
1640 182f3fe2 Olga Brani
          return true;
1641 182f3fe2 Olga Brani
        }
1642 182f3fe2 Olga Brani
      } else if (/\/\*$/.test(validType)) {
1643 182f3fe2 Olga Brani
        if (baseMimeType === validType.replace(/\/.*$/, "")) {
1644 182f3fe2 Olga Brani
          return true;
1645 182f3fe2 Olga Brani
        }
1646 182f3fe2 Olga Brani
      } else {
1647 182f3fe2 Olga Brani
        if (mimeType === validType) {
1648 182f3fe2 Olga Brani
          return true;
1649 182f3fe2 Olga Brani
        }
1650 182f3fe2 Olga Brani
      }
1651 182f3fe2 Olga Brani
    }
1652 182f3fe2 Olga Brani
    return false;
1653 182f3fe2 Olga Brani
  };
1654 182f3fe2 Olga Brani
1655 182f3fe2 Olga Brani
  if (typeof jQuery !== "undefined" && jQuery !== null) {
1656 182f3fe2 Olga Brani
    jQuery.fn.dropzone = function(options) {
1657 182f3fe2 Olga Brani
      return this.each(function() {
1658 182f3fe2 Olga Brani
        return new Dropzone(this, options);
1659 182f3fe2 Olga Brani
      });
1660 182f3fe2 Olga Brani
    };
1661 182f3fe2 Olga Brani
  }
1662 182f3fe2 Olga Brani
1663 182f3fe2 Olga Brani
  if (typeof module !== "undefined" && module !== null) {
1664 182f3fe2 Olga Brani
    module.exports = Dropzone;
1665 182f3fe2 Olga Brani
  } else {
1666 182f3fe2 Olga Brani
    window.Dropzone = Dropzone;
1667 182f3fe2 Olga Brani
  }
1668 182f3fe2 Olga Brani
1669 182f3fe2 Olga Brani
  Dropzone.ADDED = "added";
1670 182f3fe2 Olga Brani
1671 182f3fe2 Olga Brani
  Dropzone.QUEUED = "queued";
1672 182f3fe2 Olga Brani
1673 182f3fe2 Olga Brani
  Dropzone.ACCEPTED = Dropzone.QUEUED;
1674 182f3fe2 Olga Brani
1675 182f3fe2 Olga Brani
  Dropzone.UPLOADING = "uploading";
1676 182f3fe2 Olga Brani
1677 182f3fe2 Olga Brani
  Dropzone.PROCESSING = Dropzone.UPLOADING;
1678 182f3fe2 Olga Brani
1679 182f3fe2 Olga Brani
  Dropzone.CANCELED = "canceled";
1680 182f3fe2 Olga Brani
1681 182f3fe2 Olga Brani
  Dropzone.ERROR = "error";
1682 182f3fe2 Olga Brani
1683 182f3fe2 Olga Brani
  Dropzone.SUCCESS = "success";
1684 182f3fe2 Olga Brani
1685 182f3fe2 Olga Brani
  /*
1686 182f3fe2 Olga Brani
  # contentloaded.js
1687 182f3fe2 Olga Brani
  #
1688 182f3fe2 Olga Brani
  # Author: Diego Perini (diego.perini at gmail.com)
1689 182f3fe2 Olga Brani
  # Summary: cross-browser wrapper for DOMContentLoaded
1690 182f3fe2 Olga Brani
  # Updated: 20101020
1691 182f3fe2 Olga Brani
  # License: MIT
1692 182f3fe2 Olga Brani
  # Version: 1.2
1693 182f3fe2 Olga Brani
  #
1694 182f3fe2 Olga Brani
  # URL:
1695 182f3fe2 Olga Brani
  # http://javascript.nwbox.com/ContentLoaded/
1696 182f3fe2 Olga Brani
  # http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
1697 182f3fe2 Olga Brani
  */
1698 182f3fe2 Olga Brani
1699 182f3fe2 Olga Brani
1700 182f3fe2 Olga Brani
  contentLoaded = function(win, fn) {
1701 182f3fe2 Olga Brani
    var add, doc, done, init, poll, pre, rem, root, top;
1702 182f3fe2 Olga Brani
    done = false;
1703 182f3fe2 Olga Brani
    top = true;
1704 182f3fe2 Olga Brani
    doc = win.document;
1705 182f3fe2 Olga Brani
    root = doc.documentElement;
1706 182f3fe2 Olga Brani
    add = (doc.addEventListener ? "addEventListener" : "attachEvent");
1707 182f3fe2 Olga Brani
    rem = (doc.addEventListener ? "removeEventListener" : "detachEvent");
1708 182f3fe2 Olga Brani
    pre = (doc.addEventListener ? "" : "on");
1709 182f3fe2 Olga Brani
    init = function(e) {
1710 182f3fe2 Olga Brani
      if (e.type === "readystatechange" && doc.readyState !== "complete") {
1711 182f3fe2 Olga Brani
        return;
1712 182f3fe2 Olga Brani
      }
1713 182f3fe2 Olga Brani
      (e.type === "load" ? win : doc)[rem](pre + e.type, init, false);
1714 182f3fe2 Olga Brani
      if (!done && (done = true)) {
1715 182f3fe2 Olga Brani
        return fn.call(win, e.type || e);
1716 182f3fe2 Olga Brani
      }
1717 182f3fe2 Olga Brani
    };
1718 182f3fe2 Olga Brani
    poll = function() {
1719 182f3fe2 Olga Brani
      var e;
1720 182f3fe2 Olga Brani
      try {
1721 182f3fe2 Olga Brani
        root.doScroll("left");
1722 182f3fe2 Olga Brani
      } catch (_error) {
1723 182f3fe2 Olga Brani
        e = _error;
1724 182f3fe2 Olga Brani
        setTimeout(poll, 50);
1725 182f3fe2 Olga Brani
        return;
1726 182f3fe2 Olga Brani
      }
1727 182f3fe2 Olga Brani
      return init("poll");
1728 182f3fe2 Olga Brani
    };
1729 182f3fe2 Olga Brani
    if (doc.readyState !== "complete") {
1730 182f3fe2 Olga Brani
      if (doc.createEventObject && root.doScroll) {
1731 182f3fe2 Olga Brani
        try {
1732 182f3fe2 Olga Brani
          top = !win.frameElement;
1733 182f3fe2 Olga Brani
        } catch (_error) {}
1734 182f3fe2 Olga Brani
        if (top) {
1735 182f3fe2 Olga Brani
          poll();
1736 182f3fe2 Olga Brani
        }
1737 182f3fe2 Olga Brani
      }
1738 182f3fe2 Olga Brani
      doc[add](pre + "DOMContentLoaded", init, false);
1739 182f3fe2 Olga Brani
      doc[add](pre + "readystatechange", init, false);
1740 182f3fe2 Olga Brani
      return win[add](pre + "load", init, false);
1741 182f3fe2 Olga Brani
    }
1742 182f3fe2 Olga Brani
  };
1743 182f3fe2 Olga Brani
1744 182f3fe2 Olga Brani
  Dropzone._autoDiscoverFunction = function() {
1745 182f3fe2 Olga Brani
    if (Dropzone.autoDiscover) {
1746 182f3fe2 Olga Brani
      return Dropzone.discover();
1747 182f3fe2 Olga Brani
    }
1748 182f3fe2 Olga Brani
  };
1749 182f3fe2 Olga Brani
1750 182f3fe2 Olga Brani
  contentLoaded(window, Dropzone._autoDiscoverFunction);
1751 182f3fe2 Olga Brani
1752 182f3fe2 Olga Brani
}).call(this);
1753 182f3fe2 Olga Brani
1754 182f3fe2 Olga Brani
});
1755 182f3fe2 Olga Brani
require.alias("component-emitter/index.js", "dropzone/deps/emitter/index.js");
1756 182f3fe2 Olga Brani
require.alias("component-emitter/index.js", "emitter/index.js");
1757 182f3fe2 Olga Brani
if (typeof exports == "object") {
1758 182f3fe2 Olga Brani
  module.exports = require("dropzone");
1759 182f3fe2 Olga Brani
} else if (typeof define == "function" && define.amd) {
1760 182f3fe2 Olga Brani
  define(function(){ return require("dropzone"); });
1761 182f3fe2 Olga Brani
} else {
1762 182f3fe2 Olga Brani
  this["Dropzone"] = require("dropzone");
1763 182f3fe2 Olga Brani
}})();