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 | }})(); |