diff --git a/README.md b/README.md
index 1aa484d..eb6bab0 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,9 @@
## Install
``` bash
- npm install vue-upload-component --save
+ npm install vue-upload-component@next --save
```
+
### CommonJS
```js
var FileUpload = require('vue-upload-component');
@@ -73,93 +74,119 @@ npm run build
```
-## $dispatch, methods
- addFileUpload
- removeFileUpload
+# Setting
- fileUploadProgress
- beforeFileUpload
+## Props
+``` html
+
+
```
-### Props
-``` html
-
-```
+
+### Props events
+``` js
+ events: {
+ add(file, component) {
+ console.log('add');
+ if (this.auto) {
+ component.active = true;
+ }
+ file.headers['X-Filename'] = encodeURIComponent(file.name)
+ file.data.finename = file.name
+
+ // file.putAction = 'xxx'
+ // file.postAction = 'xxx'
+ },
+ progress(file, component) {
+ console.log('progress ' + file.progress);
+ },
+ after(file, component) {
+ console.log('after');
+ },
+ before(file, component) {
+ console.log('before');
+ }
+ }
```
- title="Add upload files"
- name="post file name"
- drop="Boolean (true = $parent) or Element or Css Selector"
- extensions="Array or String or Regular" :post-action="./post.method"
+### Props files
+``` js
+ [
+ {
+ id: 'String', // Read only
+ name: 'filename String',
+ size: 'filesize Number', // -1 = html4
+ progress: 'progress String', // Read only
+ speed: "Speed Number", // Read only
+ active: 'active Boolean', // set active = fasle abort upload
+ error: 'error String', // Read only
+ success: 'success Boolean', // Read only
+ data: 'Response data Object or String', // Read only
+ putAction: 'String uri',
+ postAction: 'String uri',
+ timeout: "Number",
+ headers: {
+ "X-Csrf-Token": "xxxx",
+ },
+ data: {
+ "_csrf_token": "xxxxxx",
+ },
+
+ xhr: "False or XMLHttpRequest object", // html5
+ iframe: "False or Element object", // html4
+ file: "undefined or File object" // html5
+ el: "undefined or Input object"
+ }
+ ]
+```
- post-action="./post.method"
- put-action="./put.method"
- accept="accept"
- multiple="true or false"
- size="max Size"
+## data
+``` js
+ {
+ mode: 'html5', // html5 or html4
- timeout="3600000"
+ active: false, // set active = fasle abort upload
+ uploaded: true, // Read only
+
+ dropActive: false, // Read only
+ }
```
diff --git a/dist/example.js b/dist/example.js
index cc945c6..9616b0b 100644
--- a/dist/example.js
+++ b/dist/example.js
@@ -44,8 +44,7 @@
/* 0 */
/***/ function(module, exports, __webpack_require__) {
- __webpack_require__(37);
- module.exports = __webpack_require__(38);
+ module.exports = __webpack_require__(41);
/***/ },
@@ -59,26 +58,6 @@
/***/ },
/* 2 */
-/***/ function(module, exports) {
-
- var hasOwnProperty = {}.hasOwnProperty;
- module.exports = function(it, key){
- return hasOwnProperty.call(it, key);
- };
-
-/***/ },
-/* 3 */
-/***/ function(module, exports, __webpack_require__) {
-
- // to indexed object, toObject with fallback for non-array-like ES3 strings
- var IObject = __webpack_require__(51)
- , defined = __webpack_require__(15);
- module.exports = function(it){
- return IObject(defined(it));
- };
-
-/***/ },
-/* 4 */
/***/ function(module, exports, __webpack_require__) {
// Thank's IE8 for his funny defineProperty
@@ -87,28 +66,24 @@
});
/***/ },
-/* 5 */
-/***/ function(module, exports, __webpack_require__) {
+/* 3 */
+/***/ function(module, exports) {
- var dP = __webpack_require__(6)
- , createDesc = __webpack_require__(12);
- module.exports = __webpack_require__(4) ? function(object, key, value){
- return dP.f(object, key, createDesc(1, value));
- } : function(object, key, value){
- object[key] = value;
- return object;
+ var hasOwnProperty = {}.hasOwnProperty;
+ module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
};
/***/ },
-/* 6 */
+/* 4 */
/***/ function(module, exports, __webpack_require__) {
- var anObject = __webpack_require__(8)
- , IE8_DOM_DEFINE = __webpack_require__(30)
- , toPrimitive = __webpack_require__(24)
+ var anObject = __webpack_require__(11)
+ , IE8_DOM_DEFINE = __webpack_require__(31)
+ , toPrimitive = __webpack_require__(26)
, dP = Object.defineProperty;
- exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ exports.f = __webpack_require__(2) ? Object.defineProperty : function defineProperty(O, P, Attributes){
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
@@ -120,12 +95,36 @@
return O;
};
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
+ var IObject = __webpack_require__(32)
+ , defined = __webpack_require__(17);
+ module.exports = function(it){
+ return IObject(defined(it));
+ };
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(4)
+ , createDesc = __webpack_require__(15);
+ module.exports = __webpack_require__(2) ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+ } : function(object, key, value){
+ object[key] = value;
+ return object;
+ };
+
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
- var store = __webpack_require__(22)('wks')
- , uid = __webpack_require__(13)
+ var store = __webpack_require__(24)('wks')
+ , uid = __webpack_require__(16)
, Symbol = __webpack_require__(1).Symbol
, USE_SYMBOL = typeof Symbol == 'function';
@@ -138,13 +137,10 @@
/***/ },
/* 8 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ function(module, exports) {
- var isObject = __webpack_require__(10);
- module.exports = function(it){
- if(!isObject(it))throw TypeError(it + ' is not an object!');
- return it;
- };
+ var core = module.exports = {version: '2.4.0'};
+ if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
/***/ },
/* 9 */
@@ -160,26 +156,108 @@
/***/ },
/* 10 */
-/***/ function(module, exports) {
+/***/ function(module, exports, __webpack_require__) {
- module.exports = function(it){
- return typeof it === 'object' ? it !== null : typeof it === 'function';
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
+ var $keys = __webpack_require__(36)
+ , enumBugKeys = __webpack_require__(18);
+
+ module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
};
/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
- var $keys = __webpack_require__(35)
- , enumBugKeys = __webpack_require__(16);
-
- module.exports = Object.keys || function keys(O){
- return $keys(O, enumBugKeys);
+ var isObject = __webpack_require__(13);
+ module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
};
/***/ },
/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(1)
+ , core = __webpack_require__(8)
+ , ctx = __webpack_require__(55)
+ , hide = __webpack_require__(6)
+ , PROTOTYPE = 'prototype';
+
+ var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE]
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(a, b, c){
+ if(this instanceof C){
+ switch(arguments.length){
+ case 0: return new C;
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if(IS_PROTO){
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ }
+ }
+ };
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ $export.U = 64; // safe
+ $export.R = 128; // real proto method for `library`
+ module.exports = $export;
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
+
+/***/ },
+/* 14 */
+/***/ function(module, exports) {
+
+ exports.f = {}.propertyIsEnumerable;
+
+/***/ },
+/* 15 */
/***/ function(module, exports) {
module.exports = function(bitmap, value){
@@ -192,7 +270,7 @@
};
/***/ },
-/* 13 */
+/* 16 */
/***/ function(module, exports) {
var id = 0
@@ -202,14 +280,7 @@
};
/***/ },
-/* 14 */
-/***/ function(module, exports) {
-
- var core = module.exports = {version: '2.4.0'};
- if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
-
-/***/ },
-/* 15 */
+/* 17 */
/***/ function(module, exports) {
// 7.2.1 RequireObjectCoercible(argument)
@@ -219,38 +290,38 @@
};
/***/ },
-/* 16 */
+/* 18 */
/***/ function(module, exports) {
- // IE 8- don't enum bug keys
- module.exports = (
- 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+ // IE 8- don't enum bug keys
+ module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');
/***/ },
-/* 17 */
+/* 19 */
/***/ function(module, exports) {
module.exports = {};
/***/ },
-/* 18 */
+/* 20 */
/***/ function(module, exports) {
module.exports = true;
/***/ },
-/* 19 */
+/* 21 */
/***/ function(module, exports) {
- exports.f = {}.propertyIsEnumerable;
+ exports.f = Object.getOwnPropertySymbols;
/***/ },
-/* 20 */
+/* 22 */
/***/ function(module, exports, __webpack_require__) {
- var def = __webpack_require__(6).f
- , has = __webpack_require__(2)
+ var def = __webpack_require__(4).f
+ , has = __webpack_require__(3)
, TAG = __webpack_require__(7)('toStringTag');
module.exports = function(it, tag, stat){
@@ -258,17 +329,17 @@
};
/***/ },
-/* 21 */
+/* 23 */
/***/ function(module, exports, __webpack_require__) {
- var shared = __webpack_require__(22)('keys')
- , uid = __webpack_require__(13);
- module.exports = function(key){
- return shared[key] || (shared[key] = uid(key));
+ var shared = __webpack_require__(24)('keys')
+ , uid = __webpack_require__(16);
+ module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
};
/***/ },
-/* 22 */
+/* 24 */
/***/ function(module, exports, __webpack_require__) {
var global = __webpack_require__(1)
@@ -279,7 +350,7 @@
};
/***/ },
-/* 23 */
+/* 25 */
/***/ function(module, exports) {
// 7.1.4 ToInteger
@@ -290,11 +361,11 @@
};
/***/ },
-/* 24 */
+/* 26 */
/***/ function(module, exports, __webpack_require__) {
// 7.1.1 ToPrimitive(input [, PreferredType])
- var isObject = __webpack_require__(10);
+ var isObject = __webpack_require__(13);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function(it, S){
@@ -307,27 +378,27 @@
};
/***/ },
-/* 25 */
+/* 27 */
/***/ function(module, exports, __webpack_require__) {
- var global = __webpack_require__(1)
- , core = __webpack_require__(14)
- , LIBRARY = __webpack_require__(18)
- , wksExt = __webpack_require__(26)
- , defineProperty = __webpack_require__(6).f;
- module.exports = function(name){
- var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
- if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
+ var global = __webpack_require__(1)
+ , core = __webpack_require__(8)
+ , LIBRARY = __webpack_require__(20)
+ , wksExt = __webpack_require__(28)
+ , defineProperty = __webpack_require__(4).f;
+ module.exports = function(name){
+ var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
+ if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});
};
/***/ },
-/* 26 */
+/* 28 */
/***/ function(module, exports, __webpack_require__) {
exports.f = __webpack_require__(7);
/***/ },
-/* 27 */
+/* 29 */
/***/ function(module, exports) {
var toString = {}.toString;
@@ -337,10 +408,10 @@
};
/***/ },
-/* 28 */
+/* 30 */
/***/ function(module, exports, __webpack_require__) {
- var isObject = __webpack_require__(10)
+ var isObject = __webpack_require__(13)
, document = __webpack_require__(1).document
// in old IE typeof document.createElement is 'object'
, is = isObject(document) && isObject(document.createElement);
@@ -349,93 +420,37 @@
};
/***/ },
-/* 29 */
+/* 31 */
/***/ function(module, exports, __webpack_require__) {
- var global = __webpack_require__(1)
- , core = __webpack_require__(14)
- , ctx = __webpack_require__(48)
- , hide = __webpack_require__(5)
- , PROTOTYPE = 'prototype';
-
- var $export = function(type, name, source){
- var IS_FORCED = type & $export.F
- , IS_GLOBAL = type & $export.G
- , IS_STATIC = type & $export.S
- , IS_PROTO = type & $export.P
- , IS_BIND = type & $export.B
- , IS_WRAP = type & $export.W
- , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
- , expProto = exports[PROTOTYPE]
- , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
- , key, own, out;
- if(IS_GLOBAL)source = name;
- for(key in source){
- // contains in native
- own = !IS_FORCED && target && target[key] !== undefined;
- if(own && key in exports)continue;
- // export native or passed
- out = own ? target[key] : source[key];
- // prevent global pollution for namespaces
- exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
- // bind timers to global for call from export context
- : IS_BIND && own ? ctx(out, global)
- // wrap global constructors for prevent change them in library
- : IS_WRAP && target[key] == out ? (function(C){
- var F = function(a, b, c){
- if(this instanceof C){
- switch(arguments.length){
- case 0: return new C;
- case 1: return new C(a);
- case 2: return new C(a, b);
- } return new C(a, b, c);
- } return C.apply(this, arguments);
- };
- F[PROTOTYPE] = C[PROTOTYPE];
- return F;
- // make static versions for prototype methods
- })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
- // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
- if(IS_PROTO){
- (exports.virtual || (exports.virtual = {}))[key] = out;
- // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
- if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
- }
- }
- };
- // type bitmap
- $export.F = 1; // forced
- $export.G = 2; // global
- $export.S = 4; // static
- $export.P = 8; // proto
- $export.B = 16; // bind
- $export.W = 32; // wrap
- $export.U = 64; // safe
- $export.R = 128; // real proto method for `library`
- module.exports = $export;
+ module.exports = !__webpack_require__(2) && !__webpack_require__(9)(function(){
+ return Object.defineProperty(__webpack_require__(30)('div'), 'a', {get: function(){ return 7; }}).a != 7;
+ });
/***/ },
-/* 30 */
+/* 32 */
/***/ function(module, exports, __webpack_require__) {
- module.exports = !__webpack_require__(4) && !__webpack_require__(9)(function(){
- return Object.defineProperty(__webpack_require__(28)('div'), 'a', {get: function(){ return 7; }}).a != 7;
- });
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
+ var cof = __webpack_require__(29);
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+ };
/***/ },
-/* 31 */
+/* 33 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
- var LIBRARY = __webpack_require__(18)
- , $export = __webpack_require__(29)
- , redefine = __webpack_require__(36)
- , hide = __webpack_require__(5)
- , has = __webpack_require__(2)
- , Iterators = __webpack_require__(17)
- , $iterCreate = __webpack_require__(53)
- , setToStringTag = __webpack_require__(20)
- , getPrototypeOf = __webpack_require__(60)
+ var LIBRARY = __webpack_require__(20)
+ , $export = __webpack_require__(12)
+ , redefine = __webpack_require__(37)
+ , hide = __webpack_require__(6)
+ , has = __webpack_require__(3)
+ , Iterators = __webpack_require__(19)
+ , $iterCreate = __webpack_require__(59)
+ , setToStringTag = __webpack_require__(22)
+ , getPrototypeOf = __webpack_require__(67)
, ITERATOR = __webpack_require__(7)('iterator')
, BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
, FF_ITERATOR = '@@iterator'
@@ -498,11978 +513,9421 @@
};
/***/ },
-/* 32 */
+/* 34 */
/***/ function(module, exports, __webpack_require__) {
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
- var anObject = __webpack_require__(8)
- , dPs = __webpack_require__(57)
- , enumBugKeys = __webpack_require__(16)
- , IE_PROTO = __webpack_require__(21)('IE_PROTO')
- , Empty = function(){ /* empty */ }
- , PROTOTYPE = 'prototype';
-
- // Create object with fake `null` prototype: use iframe Object with cleared prototype
- var createDict = function(){
- // Thrash, waste and sodomy: IE GC bug
- var iframe = __webpack_require__(28)('iframe')
- , i = enumBugKeys.length
- , gt = '>'
- , iframeDocument;
- iframe.style.display = 'none';
- __webpack_require__(50).appendChild(iframe);
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
- // createDict = iframe.contentWindow.Object;
- // html.removeChild(iframe);
- iframeDocument = iframe.contentWindow.document;
- iframeDocument.open();
- iframeDocument.write(''
+ , iframeDocument;
+ iframe.style.display = 'none';
+ __webpack_require__(57).appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
+ iframeDocument.close();
+ createDict = iframeDocument.F;
+ while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
+ return createDict();
+ };
+
+ module.exports = Object.create || function create(O, Properties){
+ var result;
+ if(O !== null){
+ Empty[PROTOTYPE] = anObject(O);
+ result = new Empty;
+ Empty[PROTOTYPE] = null;
+ // add "__proto__" for Object.getPrototypeOf polyfill
+ result[IE_PROTO] = O;
+ } else result = createDict();
+ return Properties === undefined ? result : dPs(result, Properties);
};
+
/***/ },
-/* 33 */
+/* 35 */
/***/ function(module, exports, __webpack_require__) {
- // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
- var $keys = __webpack_require__(35)
- , hiddenKeys = __webpack_require__(16).concat('length', 'prototype');
-
- exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
- return $keys(O, hiddenKeys);
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+ var $keys = __webpack_require__(36)
+ , hiddenKeys = __webpack_require__(18).concat('length', 'prototype');
+
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
+ return $keys(O, hiddenKeys);
};
/***/ },
-/* 34 */
-/***/ function(module, exports) {
+/* 36 */
+/***/ function(module, exports, __webpack_require__) {
- exports.f = Object.getOwnPropertySymbols;
+ var has = __webpack_require__(3)
+ , toIObject = __webpack_require__(5)
+ , arrayIndexOf = __webpack_require__(54)(false)
+ , IE_PROTO = __webpack_require__(23)('IE_PROTO');
+
+ module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+ };
/***/ },
-/* 35 */
+/* 37 */
/***/ function(module, exports, __webpack_require__) {
- var has = __webpack_require__(2)
- , toIObject = __webpack_require__(3)
- , arrayIndexOf = __webpack_require__(47)(false)
- , IE_PROTO = __webpack_require__(21)('IE_PROTO');
-
- module.exports = function(object, names){
- var O = toIObject(object)
- , i = 0
- , result = []
- , key;
- for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
- // Don't enum bug & hidden keys
- while(names.length > i)if(has(O, key = names[i++])){
- ~arrayIndexOf(result, key) || result.push(key);
- }
- return result;
- };
+ module.exports = __webpack_require__(6);
/***/ },
-/* 36 */
+/* 38 */
/***/ function(module, exports, __webpack_require__) {
- module.exports = __webpack_require__(5);
+ // 7.1.13 ToObject(argument)
+ var defined = __webpack_require__(17);
+ module.exports = function(it){
+ return Object(defined(it));
+ };
/***/ },
-/* 37 */
+/* 39 */
/***/ function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {/*!
- * Vue.js v1.0.26
- * (c) 2016 Evan You
- * Released under the MIT License.
- */
'use strict';
- function set(obj, key, val) {
- if (hasOwn(obj, key)) {
- obj[key] = val;
- return;
- }
- if (obj._isVue) {
- set(obj._data, key, val);
- return;
- }
- var ob = obj.__ob__;
- if (!ob) {
- obj[key] = val;
- return;
- }
- ob.convert(key, val);
- ob.dep.notify();
- if (ob.vms) {
- var i = ob.vms.length;
- while (i--) {
- var vm = ob.vms[i];
- vm._proxy(key);
- vm._digest();
- }
- }
- return val;
- }
-
- /**
- * Delete a property and trigger change if necessary.
- *
- * @param {Object} obj
- * @param {String} key
- */
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
- function del(obj, key) {
- if (!hasOwn(obj, key)) {
- return;
- }
- delete obj[key];
- var ob = obj.__ob__;
- if (!ob) {
- if (obj._isVue) {
- delete obj._data[key];
- obj._digest();
- }
- return;
- }
- ob.dep.notify();
- if (ob.vms) {
- var i = ob.vms.length;
- while (i--) {
- var vm = ob.vms[i];
- vm._unproxy(key);
- vm._digest();
- }
- }
- }
+ var _typeof2 = __webpack_require__(47);
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- /**
- * Check whether the object has the property.
- *
- * @param {Object} obj
- * @param {String} key
- * @return {Boolean}
- */
+ var _typeof3 = _interopRequireDefault(_typeof2);
- function hasOwn(obj, key) {
- return hasOwnProperty.call(obj, key);
- }
+ var _assign = __webpack_require__(42);
- /**
- * Check if an expression is a literal value.
- *
- * @param {String} exp
- * @return {Boolean}
- */
+ var _assign2 = _interopRequireDefault(_assign);
- var literalValueRE = /^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/;
+ var _defineProperty2 = __webpack_require__(46);
- function isLiteral(exp) {
- return literalValueRE.test(exp);
- }
+ var _defineProperty3 = _interopRequireDefault(_defineProperty2);
- /**
- * Check if a string starts with $ or _
- *
- * @param {String} str
- * @return {Boolean}
- */
+ var _props;
- function isReserved(str) {
- var c = (str + '').charCodeAt(0);
- return c === 0x24 || c === 0x5F;
- }
+ var _InputFile = __webpack_require__(83);
- /**
- * Guard text output, make sure undefined outputs
- * empty string
- *
- * @param {*} value
- * @return {String}
- */
+ var _InputFile2 = _interopRequireDefault(_InputFile);
- function _toString(value) {
- return value == null ? '' : value.toString();
- }
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /**
- * Check and convert possible numeric strings to numbers
- * before setting back to data
- *
- * @param {*} value
- * @return {*|Number}
- */
+ exports.default = {
+ components: {
+ InputFile: _InputFile2.default
+ },
- function toNumber(value) {
- if (typeof value !== 'string') {
- return value;
- } else {
- var parsed = Number(value);
- return isNaN(parsed) ? value : parsed;
- }
- }
+ props: (_props = {
+ title: {
+ type: String,
+ default: 'Upload file'
+ },
+ name: {
+ type: String,
+ default: 'file'
+ },
+ drop: {
+ default: false
+ },
+ extensions: {
+ default: function _default() {
+ return [];
+ }
+ },
+ postAction: {
+ type: String
+ },
+ putAction: {
+ type: String
+ },
+ accept: {
+ type: String
+ },
+ multiple: {
+ type: Boolean
+ },
+ timeout: {
+ type: Number,
+ default: 0
+ },
+ size: {
+ type: Number
+ },
+ events: {
+ type: Object,
+ default: function _default() {}
+ },
- /**
- * Convert string boolean literals into real booleans.
- *
- * @param {*} value
- * @return {*|Boolean}
- */
+ headers: {
+ type: Object,
+ default: function _default() {}
+ },
+ data: {
+ type: Object,
+ default: function _default() {}
+ }
+ }, (0, _defineProperty3.default)(_props, 'drop', {
+ type: Boolean,
+ default: false
+ }), (0, _defineProperty3.default)(_props, 'files', {
+ type: Array,
+ default: function _default() {
+ return [];
+ }
+ }), _props),
- function toBoolean(value) {
- return value === 'true' ? true : value === 'false' ? false : value;
- }
+ data: function data() {
+ return {
+ mode: 'html5',
+ active: false,
+ uploaded: true,
+ dropActive: false
+ };
+ },
+ mounted: function mounted() {
+ var _this = this;
- /**
- * Strip quotes from a string
- *
- * @param {String} str
- * @return {String | false}
- */
+ var input = document.createElement('input');
+ input.type = 'file';
+ if (window.FormData && input.files) {
+ this.mode = 'html5';
+ } else {
+ this.mode = 'html4';
+ }
+ this._index = 0;
+ this._files = [];
+ this._dropActive = 0;
+ this._drop(this.drop);
+ this.$nextTick(function () {
+ _this._drop(_this.drop);
+ });
+ },
+ beforeDestroy: function beforeDestroy() {
+ this.active = false;
+ this.files = [];
+ },
+ render: function render(h) {
+ return h(
+ 'label',
+ { 'class': {
+ 'file-uploads': true,
+ 'file-uploads-html5': this.mode == 'html5',
+ 'file-uploads-html4': this.mode == 'html4'
+ } },
+ [h(
+ 'span',
+ null,
+ [this.title]
+ ), h(
+ 'input-file',
+ null,
+ []
+ )]
+ );
+ },
- function stripQuotes(str) {
- var a = str.charCodeAt(0);
- var b = str.charCodeAt(str.length - 1);
- return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;
- }
- /**
- * Camelize a hyphen-delmited string.
- *
- * @param {String} str
- * @return {String}
- */
+ watch: {
+ drop: function drop(value) {
+ this._drop(value);
+ },
+ files: function files(_files) {
+ var ids = [];
+ for (var i = 0; i < _files.length; i++) {
+ var file = _files[i];
+ if (!file.error && !file.success) {
+ this.uploaded = false;
+ }
+ ids.push(file.id);
+ }
- var camelizeRE = /-(\w)/g;
+ for (var id in this._files) {
+ if (ids.indexOf(id) != -1) {
+ continue;
+ }
+ var _file = this._files;
- function camelize(str) {
- return str.replace(camelizeRE, toUpper);
- }
+ _file.removed = true;
- function toUpper(_, c) {
- return c ? c.toUpperCase() : '';
- }
+ var xhr = _file.xhr;
+ if (xhr) {
+ try {
+ xhr.abort();
+ xhr.timeout = 1;
+ } catch (e) {}
+ }
- /**
- * Hyphenate a camelCase string.
- *
- * @param {String} str
- * @return {String}
- */
+ if (_file.iframe) {
+ _file.iframe.onabort({ type: 'abort' });
+ }
+ delete this._files[id];
+ this._uploadEvents('remove', _file);
+ }
+ this._index = 0;
+ },
+ active: function active(newValue, oldValue) {
+ if (newValue && !oldValue) {
+ this._fileUploads();
+ }
+ },
+ uploaded: function uploaded(_uploaded) {
+ if (_uploaded) {
+ this.active = false;
+ }
+ }
+ },
- var hyphenateRE = /([a-z\d])([A-Z])/g;
+ methods: {
+ clear: function clear() {
+ if (this.files.length) {
+ this.files.splice(0, this.files.length);
+ }
+ },
+ addFileUpload: function addFileUpload(file) {
+ this.uploaded = false;
+ var defaultFile = {
+ size: -1,
+ name: 'Filename',
+ progress: '0.00',
+ speed: 0,
+ active: false,
+ error: '',
+ success: false,
+ putAction: this.putAction,
+ postAction: this.postAction,
+ timeout: this.timeout,
+ data: (0, _assign2.default)({}, this.data),
+ headers: (0, _assign2.default)({}, this.headers),
+ response: {},
+
+ xhr: false,
+ iframe: false
+ };
- function hyphenate(str) {
- return str.replace(hyphenateRE, '$1-$2').toLowerCase();
- }
+ file = (0, _assign2.default)(defaultFile, file);
- /**
- * Converts hyphen/underscore/slash delimitered names into
- * camelized classNames.
- *
- * e.g. my-component => MyComponent
- * some_else => SomeElse
- * some/comp => SomeComp
- *
- * @param {String} str
- * @return {String}
- */
+ if (!file.id) {
+ file.id = Math.random().toString(36).substr(2);
+ }
- var classifyRE = /(?:^|[-_\/])(\w)/g;
+ if (!this.multiple) {
+ this.clear();
+ }
- function classify(str) {
- return str.replace(classifyRE, toUpper);
- }
+ file = this.files[this.files.push(file) - 1];
+ this._files[file.id] = file;
+ this._uploadEvents('add', file);
+ },
+ _uploadEvents: function _uploadEvents(name, file) {
+ this.events && this.events[name] && this.events[name](file, this);
+ },
+ _drop: function _drop(value) {
+ if (this.dropElement && this.mode === 'html5') {
+ try {
+ window.document.removeEventListener('dragenter', this._onDragenter, false);
+ window.document.removeEventListener('dragleave', this._onDragleave, false);
+ this.dropElement.removeEventListener('dragover', this._onDragover, false);
+ this.dropElement.removeEventListener('drop', this._onDrop, false);
+ } catch (e) {}
+ }
- /**
- * Simple bind, faster than native
- *
- * @param {Function} fn
- * @param {Object} ctx
- * @return {Function}
- */
+ if (!value) {
+ this.dropElement = false;
+ return;
+ }
- function bind(fn, ctx) {
- return function (a) {
- var l = arguments.length;
- return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);
- };
- }
+ if (typeof value == 'string') {
+ this.dropElement = document.querySelector(value) || this.$root.$el.querySelector(value);
+ } else if (typeof value == 'boolean') {
+ this.dropElement = this.$parent.$el;
+ } else {
+ this.dropElement = this.drop;
+ }
- /**
- * Convert an Array-like object to a real Array.
- *
- * @param {Array-like} list
- * @param {Number} [start] - start index
- * @return {Array}
- */
+ if (this.dropElement && this.mode === 'html5') {
+ window.document.addEventListener('dragenter', this._onDragenter, false);
+ window.document.addEventListener('dragleave', this._onDragleave, false);
+ this.dropElement.addEventListener('dragover', this._onDragover, false);
+ this.dropElement.addEventListener('drop', this._onDrop, false);
+ }
+ },
+ _onDragenter: function _onDragenter(e) {
+ this._dropActive++;
+ this.dropActive = !!this._dropActive;
+ e.preventDefault();
+ },
+ _onDragleave: function _onDragleave(e) {
+ e.preventDefault();
+ this._dropActive--;
+ if (e.target.nodeName == 'HTML' || e.screenX == 0 && e.screenY == 0) {
+ this.dropActive = !!this._dropActive;
+ }
+ },
+ _onDragover: function _onDragover(e) {
+ e.preventDefault();
+ },
+ _onDrop: function _onDrop(e) {
+ this._dropActive = 0;
+ this.dropActive = false;
+ e.preventDefault();
+ if (e.dataTransfer.files.length) {
+ for (var i = 0; i < e.dataTransfer.files.length; i++) {
+ var file = e.dataTransfer.files[i];
+ this.addFileUpload({ file: file, size: file.size, name: file.name });
+ if (!this.multiple) {
+ break;
+ }
+ }
+ }
+ },
+ _addInputFileElement: function _addInputFileElement(el) {
+ if (el.files) {
+ for (var i = 0; i < el.files.length; i++) {
+ var file = el.files[i];
+ this.addFileUpload({ size: file.size, name: file.name, file: file, el: el });
+ }
+ } else {
+ this.addFileUpload({ name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'), el: el });
+ }
- function toArray(list, start) {
- start = start || 0;
- var i = list.length - start;
- var ret = new Array(i);
- while (i--) {
- ret[i] = list[i + start];
- }
- return ret;
- }
+ var Component = this.$options.components.InputFile;
+ var inputFile = new Component({
+ parent: this,
+ el: el
+ });
+ },
+ _fileUploads: function _fileUploads() {
+ if (!this.active) {
+ return;
+ }
- /**
- * Mix properties into target object.
- *
- * @param {Object} to
- * @param {Object} from
- */
+ for (; this._index < this.files.length; this._index++) {
+ var file = this.files[this._index];
+ if (file.active || file.success || file.error) {
+ continue;
+ }
- function extend(to, from) {
- var keys = Object.keys(from);
- var i = keys.length;
- while (i--) {
- to[keys[i]] = from[keys[i]];
- }
- return to;
- }
+ if (this.size && this.size > 0 && file.size >= 0 && file.size > this.size) {
+ file.error = 'size';
+ continue;
+ }
- /**
- * Quick object check - this is primarily used to tell
- * Objects from primitive values when we know the value
- * is a JSON-compliant type.
- *
- * @param {*} obj
- * @return {Boolean}
- */
+ if (this.extensions && (this.extensions.length || typeof this.extensions.length == 'undefined')) {
+ var extensions = this.extensions;
+ if ((typeof extensions === 'undefined' ? 'undefined' : (0, _typeof3.default)(extensions)) == 'object' && extensions instanceof RegExp) {} else {
+ if (typeof extensions == 'string') {
+ extensions = extensions.split(',').map(function (value) {
+ return value.trim();
+ }).filter(function (value) {
+ return value;
+ });
+ }
+ extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i');
+ }
- function isObject(obj) {
- return obj !== null && typeof obj === 'object';
- }
+ if (file.name.search(extensions) == -1) {
+ file.error = 'extension';
+ continue;
+ }
+ }
- /**
- * Strict object type check. Only returns true
- * for plain JavaScript objects.
- *
- * @param {*} obj
- * @return {Boolean}
- */
+ if (this.mode == 'html5') {
+ if (file.putAction) {
+ this._fileUploadPut(file);
+ } else if (file.postAction) {
+ this._fileUploadHtml5(file);
+ } else {
+ file.error = 'not_support';
+ continue;
+ }
+ } else {
+ if (file.postAction) {
+ this._fileUploadHtml4(file);
+ } else {
+ file.error = 'not_support';
+ continue;
+ }
+ }
+ return;
+ }
- var toString = Object.prototype.toString;
- var OBJECT_STRING = '[object Object]';
+ this.active = false;
+ this.uploaded = true;
+ },
+ _fileUploadXhr: function _fileUploadXhr(xhr, file, data) {
+ var _self = this;
+ var complete = false;
- function isPlainObject(obj) {
- return toString.call(obj) === OBJECT_STRING;
- }
+ var speedTime = 0;
+ var speedLoaded = 0;
+ xhr.upload.onprogress = function (e) {
+ if (file.removed) {
+ xhr.abort();
+ return;
+ }
- /**
- * Array type check.
- *
- * @param {*} obj
- * @return {Boolean}
- */
+ if (!_self.active || !file.active) {
+ xhr.abort();
+ return;
+ }
- var isArray = Array.isArray;
+ if (e.lengthComputable) {
+ file.progress = (e.loaded / e.total * 100).toFixed(2);
+ var speedTime2 = Math.round(Date.now() / 1000);
+ if (speedTime2 != speedTime) {
+ file.speed = e.loaded - speedLoaded;
+ speedLoaded = e.loaded;
+ speedTime = speedTime2;
+ }
+ }
+ _self._uploadEvents('progress', file);
+ };
- /**
- * Define a property.
- *
- * @param {Object} obj
- * @param {String} key
- * @param {*} val
- * @param {Boolean} [enumerable]
- */
+ var callback = function callback(e) {
+ switch (e.type) {
+ case 'timeout':
+ file.error = 'timeout';
+ break;
+ case 'abort':
+ file.error = 'abort';
+ break;
+ case 'error':
+ if (!xhr.status) {
+ file.error = 'network';
+ } else if (xhr.status >= 500) {
+ file.error = 'server';
+ } else if (xhr.status >= 400) {
+ file.error = 'denied';
+ }
+ break;
+ default:
+ if (xhr.status >= 500) {
+ file.error = 'server';
+ } else if (xhr.status >= 400) {
+ file.error = 'denied';
+ } else {
+ file.progress = '100.00';
+ file.success = true;
+ }
+ }
+ file.active = false;
+ if (xhr.responseText) {
+ var contentType = xhr.getResponseHeader('Content-Type');
+ if (contentType && contentType.indexOf('/json') != -1) {
+ file.response = JSON.parse(xhr.responseText);
+ } else {
+ file.response = xhr.responseText;
+ }
+ }
- function def(obj, key, val, enumerable) {
- Object.defineProperty(obj, key, {
- value: val,
- enumerable: !!enumerable,
- writable: true,
- configurable: true
- });
- }
+ if (!complete) {
+ complete = true;
+ if (!file.removed) {
+ _self._uploadEvents('after', file);
+ }
+ setTimeout(function () {
+ _self._fileUploads();
+ }, 50);
+ }
+ };
- /**
- * Debounce a function so it only gets called after the
- * input stops arriving after the given wait period.
- *
- * @param {Function} func
- * @param {Number} wait
- * @return {Function} - the debounced function
- */
+ xhr.onload = callback;
+ xhr.onerror = callback;
+ xhr.onabort = callback;
+ xhr.ontimeout = callback;
- function _debounce(func, wait) {
- var timeout, args, context, timestamp, result;
- var later = function later() {
- var last = Date.now() - timestamp;
- if (last < wait && last >= 0) {
- timeout = setTimeout(later, wait - last);
- } else {
- timeout = null;
- result = func.apply(context, args);
- if (!timeout) context = args = null;
- }
- };
- return function () {
- context = this;
- args = arguments;
- timestamp = Date.now();
- if (!timeout) {
- timeout = setTimeout(later, wait);
- }
- return result;
- };
- }
+ if (file.timeout) {
+ xhr.timeout = file.timeout;
+ }
- /**
- * Manual indexOf because it's slightly faster than
- * native.
- *
- * @param {Array} arr
- * @param {*} obj
- */
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+ for (var key in file.headers) {
+ xhr.setRequestHeader(key, file.headers[key]);
+ }
- function indexOf(arr, obj) {
- var i = arr.length;
- while (i--) {
- if (arr[i] === obj) return i;
- }
- return -1;
- }
+ xhr.send(data);
+ file.active = true;
+ file.xhr = xhr;
- /**
- * Make a cancellable version of an async callback.
- *
- * @param {Function} fn
- * @return {Function}
- */
+ var interval = setInterval(function () {
+ if (!_self.active || !file.active || file.success || file.error) {
+ clearInterval(interval);
+ if (!file.success && !file.error) {
+ xhr.abort();
+ }
+ }
+ }, 100);
- function cancellable(fn) {
- var cb = function cb() {
- if (!cb.cancelled) {
- return fn.apply(this, arguments);
- }
- };
- cb.cancel = function () {
- cb.cancelled = true;
- };
- return cb;
- }
+ this._uploadEvents('before', file);
+ },
+ _fileUploadPut: function _fileUploadPut(file) {
+ var querys = (0, _assign2.default)({}, file.data);
+ var queryArray = [];
+ for (var key in querys) {
+ if (querys[key] !== null && typeof querys[key] !== 'undefined') {
+ queryArray.push(encodeURIComponent(key) + '=' + encodeURIComponent(querys[key]));
+ }
+ }
+ var queryString = queryArray.length ? (file.putAction.indexOf('?') == -1 ? '?' : '&') + queryArray.join('&') : '';
+ var xhr = new XMLHttpRequest();
+ xhr.open('PUT', file.putAction + queryString);
+ this._fileUploadXhr(xhr, file, file.file);
+ },
+ _fileUploadHtml5: function _fileUploadHtml5(file) {
+ var form = new window.FormData();
+ form.append(this.name, file.file);
+ for (var key in file.data) {
+ form.append(key, file.data[key]);
+ }
+ var xhr = new XMLHttpRequest();
+ xhr.open('POST', file.postAction);
+ this._fileUploadXhr(xhr, file, form);
+ },
+ _fileUploadHtml4: function _fileUploadHtml4(file) {
+ var _self = this;
+ var complete = false;
- /**
- * Check if two values are loosely equal - that is,
- * if they are plain objects, do they have the same shape?
- *
- * @param {*} a
- * @param {*} b
- * @return {Boolean}
- */
-
- function looseEqual(a, b) {
- /* eslint-disable eqeqeq */
- return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false);
- /* eslint-enable eqeqeq */
- }
-
- var hasProto = ('__proto__' in {});
-
- // Browser environment sniffing
- var inBrowser = typeof window !== 'undefined' && Object.prototype.toString.call(window) !== '[object Object]';
-
- // detect devtools
- var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+ var keydown = function keydown(e) {
+ if (e.keyCode == 27) {
+ e.preventDefault();
+ }
+ };
+ var iframe = document.createElement('iframe');
+ iframe.id = 'upload-iframe-' + file.id;
+ iframe.name = 'upload-iframe-' + file.id;
+ iframe.src = 'about:blank';
+ iframe.style = {
+ width: '1px',
+ height: '1px',
+ top: '-9999px',
+ left: '-9999px',
+ position: 'absolute',
+ marginTop: '-9999em'
+ };
- // UA sniffing for working around browser-specific quirks
- var UA = inBrowser && window.navigator.userAgent.toLowerCase();
- var isIE = UA && UA.indexOf('trident') > 0;
- var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
- var isAndroid = UA && UA.indexOf('android') > 0;
- var isIos = UA && /(iphone|ipad|ipod|ios)/i.test(UA);
- var iosVersionMatch = isIos && UA.match(/os ([\d_]+)/);
- var iosVersion = iosVersionMatch && iosVersionMatch[1].split('_');
-
- // detecting iOS UIWebView by indexedDB
- var hasMutationObserverBug = iosVersion && Number(iosVersion[0]) >= 9 && Number(iosVersion[1]) >= 3 && !window.indexedDB;
-
- var transitionProp = undefined;
- var transitionEndEvent = undefined;
- var animationProp = undefined;
- var animationEndEvent = undefined;
+ var form = document.createElement('form');
- // Transition property/event sniffing
- if (inBrowser && !isIE9) {
- var isWebkitTrans = window.ontransitionend === undefined && window.onwebkittransitionend !== undefined;
- var isWebkitAnim = window.onanimationend === undefined && window.onwebkitanimationend !== undefined;
- transitionProp = isWebkitTrans ? 'WebkitTransition' : 'transition';
- transitionEndEvent = isWebkitTrans ? 'webkitTransitionEnd' : 'transitionend';
- animationProp = isWebkitAnim ? 'WebkitAnimation' : 'animation';
- animationEndEvent = isWebkitAnim ? 'webkitAnimationEnd' : 'animationend';
- }
+ form.action = file.postAction;
- /**
- * Defer a task to execute it asynchronously. Ideally this
- * should be executed as a microtask, so we leverage
- * MutationObserver if it's available, and fallback to
- * setTimeout(0).
- *
- * @param {Function} cb
- * @param {Object} ctx
- */
+ form.name = 'upload-form-' + file.id;
- var nextTick = (function () {
- var callbacks = [];
- var pending = false;
- var timerFunc;
- function nextTickHandler() {
- pending = false;
- var copies = callbacks.slice(0);
- callbacks = [];
- for (var i = 0; i < copies.length; i++) {
- copies[i]();
- }
- }
+ form.setAttribute('method', 'POST');
+ form.setAttribute('target', 'upload-iframe-' + file.id);
+ form.setAttribute('enctype', 'multipart/form-data');
+ form.appendChild(file.el);
- /* istanbul ignore if */
- if (typeof MutationObserver !== 'undefined' && !hasMutationObserverBug) {
- var counter = 1;
- var observer = new MutationObserver(nextTickHandler);
- var textNode = document.createTextNode(counter);
- observer.observe(textNode, {
- characterData: true
- });
- timerFunc = function () {
- counter = (counter + 1) % 2;
- textNode.data = counter;
- };
- } else {
- // webpack attempts to inject a shim for setImmediate
- // if it is used as a global, so we have to work around that to
- // avoid bundling unnecessary code.
- var context = inBrowser ? window : typeof global !== 'undefined' ? global : {};
- timerFunc = context.setImmediate || setTimeout;
- }
- return function (cb, ctx) {
- var func = ctx ? function () {
- cb.call(ctx);
- } : cb;
- callbacks.push(func);
- if (pending) return;
- pending = true;
- timerFunc(nextTickHandler, 0);
- };
- })();
+ for (var key in file.data) {
+ var input = document.createElement('input');
+ input.type = 'hidden';
+ input.name = key;
+ input.value = file[key];
+ form.appendChild(input);
+ }
- var _Set = undefined;
- /* istanbul ignore if */
- if (typeof Set !== 'undefined' && Set.toString().match(/native code/)) {
- // use native Set when available.
- _Set = Set;
- } else {
- // a non-standard Set polyfill that only works with primitive keys.
- _Set = function () {
- this.set = Object.create(null);
- };
- _Set.prototype.has = function (key) {
- return this.set[key] !== undefined;
- };
- _Set.prototype.add = function (key) {
- this.set[key] = 1;
- };
- _Set.prototype.clear = function () {
- this.set = Object.create(null);
- };
- }
+ var getDocumentData = function getDocumentData() {
+ var doc;
+ try {
+ if (iframe.contentWindow) {
+ doc = iframe.contentWindow.document;
+ }
+ } catch (err) {}
+ if (!doc) {
+ try {
+ doc = iframe.contentDocument ? iframe.contentDocument : iframe.document;
+ } catch (err) {
+ doc = iframe.document;
+ }
+ }
+ if (doc && doc.body) {
+ return doc.body.innerHTML;
+ }
+ return null;
+ };
- function Cache(limit) {
- this.size = 0;
- this.limit = limit;
- this.head = this.tail = undefined;
- this._keymap = Object.create(null);
- }
+ var callback = function callback(e) {
+ switch (e.type) {
+ case 'abort':
+ file.error = 'abort';
+ break;
+ case 'error':
+ var data = getDocumentData();
+ if (file.error) {} else if (data === null) {
+ file.error = 'network';
+ } else {
+ file.error = 'denied';
+ }
+ break;
+ default:
+ var data = getDocumentData();
+ if (file.error) {} else if (data === null) {
+ file.error = 'network';
+ } else {
+ file.progress = '100.00';
+ file.success = true;
+ }
+ }
- var p = Cache.prototype;
+ file.active = false;
+ if (typeof data != "undefined") {
+ if (data && data.substr(0, 1) == '{' && data.substr(data.length - 1, 1) == '}') {
+ try {
+ data = JSON.parse(data);
+ } catch (err) {}
+ }
+ file.data = data;
+ }
+ if (!complete) {
+ complete = true;
+ document.body.removeEventListener('keydown', keydown);
+ document.body.removeEventListener('keydown', keydown);
+ iframe.parentNode && iframe.parentNode.removeChild(iframe);
+ if (!file.removed) {
+ _self._uploadEvents('after', file);
+ }
+ setTimeout(function () {
+ _self._fileUploads();
+ }, 50);
+ }
+ };
- /**
- * Put into the cache associated with .
- * Returns the entry which was removed to make room for
- * the new entry. Otherwise undefined is returned.
- * (i.e. if there was enough room already).
- *
- * @param {String} key
- * @param {*} value
- * @return {Entry|undefined}
- */
+ setTimeout(function () {
+ document.body.appendChild(iframe).appendChild(form).submit();
+ iframe.onload = callback;
+ iframe.onerror = callback;
+ iframe.onabort = callback;
- p.put = function (key, value) {
- var removed;
+ file.active = true;
+ file.iframe = iframe;
- var entry = this.get(key, true);
- if (!entry) {
- if (this.size === this.limit) {
- removed = this.shift();
- }
- entry = {
- key: key
- };
- this._keymap[key] = entry;
- if (this.tail) {
- this.tail.newer = entry;
- entry.older = this.tail;
- } else {
- this.head = entry;
+ document.body.addEventListener('keydown', keydown);
+ var interval = setInterval(function () {
+ if (!_self.active || !file.active || file.success || file.error) {
+ clearInterval(interval);
+ if (!file.success && !file.error) {
+ iframe.onabort({ type: 'abort' });
+ }
+ }
+ }, 50);
+ _self._uploadEvents('before', file);
+ }, 10);
}
- this.tail = entry;
- this.size++;
}
- entry.value = value;
-
- return removed;
};
+
+/***/ },
+/* 40 */
+/***/ function(module, exports) {
+
+ "use strict";
- /**
- * Purge the least recently used (oldest) entry from the
- * cache. Returns the removed entry or undefined if the
- * cache was empty.
- */
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.default = {
+ methods: {
+ change: function change(e) {
+ this.$destroy();
+ this.$parent._addInputFileElement(e.target);
+ }
+ },
- p.shift = function () {
- var entry = this.head;
- if (entry) {
- this.head = this.head.newer;
- this.head.older = undefined;
- entry.newer = entry.older = undefined;
- this._keymap[entry.key] = undefined;
- this.size--;
+ render: function render(h) {
+ var parent = this.$parent;
+ return h(
+ "input",
+ {
+ attrs: {
+ type: "file",
+ name: parent.name,
+ id: parent.id || parent.name,
+ accept: parent.accept,
+
+ multiple: parent.multiple && parent.mode == 'html5'
+ },
+ on: {
+ change: this.change
+ }
+ },
+ []
+ );
}
- return entry;
};
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
- /**
- * Get and register recent use of . Returns the value
- * associated with or undefined if not in cache.
- *
- * @param {String} key
- * @param {Boolean} returnEntry
- * @return {Entry|*}
- */
+ var _vue = __webpack_require__(86);
- p.get = function (key, returnEntry) {
- var entry = this._keymap[key];
- if (entry === undefined) return;
- if (entry === this.tail) {
- return returnEntry ? entry : entry.value;
- }
- // HEAD--------------TAIL
- // <.older .newer>
- // <--- add direction --
- // A B C E
- if (entry.newer) {
- if (entry === this.head) {
- this.head = entry.newer;
- }
- entry.newer.older = entry.older; // C <-- E.
- }
- if (entry.older) {
- entry.older.newer = entry.newer; // C. --> E
- }
- entry.newer = undefined; // D --x
- entry.older = this.tail; // D. --> E
- if (this.tail) {
- this.tail.newer = entry; // E. <-- D
- }
- this.tail = entry;
- return returnEntry ? entry : entry.value;
- };
+ var _vue2 = _interopRequireDefault(_vue);
- var cache$1 = new Cache(1000);
- var filterTokenRE = /[^\s'"]+|'[^']*'|"[^"]*"/g;
- var reservedArgRE = /^in$|^-?\d+/;
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /**
- * Parser state
- */
+ var FileUpload = __webpack_require__(82);
- var str;
- var dir;
- var c;
- var prev;
- var i;
- var l;
- var lastFilterIndex;
- var inSingle;
- var inDouble;
- var curly;
- var square;
- var paren;
- /**
- * Push a filter to the current directive object
- */
- function pushFilter() {
- var exp = str.slice(lastFilterIndex, i).trim();
- var filter;
- if (exp) {
- filter = {};
- var tokens = exp.match(filterTokenRE);
- filter.name = tokens[0];
- if (tokens.length > 1) {
- filter.args = tokens.slice(1).map(processFilterArg);
- }
- }
- if (filter) {
- (dir.filters = dir.filters || []).push(filter);
+ _vue2.default.config.silent = false;
+ _vue2.default.config.devtools = true;
+
+ _vue2.default.filter('formatSize', function (size) {
+ if (size > 1024 * 1024 * 1024 * 1024) {
+ return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB';
+ } else if (size > 1024 * 1024 * 1024) {
+ return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';
+ } else if (size > 1024 * 1024) {
+ return (size / 1024 / 1024).toFixed(2) + ' MB';
+ } else if (size > 1024) {
+ return (size / 1024).toFixed(2) + ' KB';
}
- lastFilterIndex = i + 1;
- }
+ return size.toString() + ' B';
+ });
- /**
- * Check if an argument is dynamic and strip quotes.
- *
- * @param {String} arg
- * @return {Object}
- */
+ new _vue2.default({
+ el: '#app',
+ components: {
+ FileUpload: FileUpload
+ },
+ data: {
+ accept: 'image/*',
+ size: 1024 * 1024 * 10,
+ multiple: true,
+ extensions: 'gif,jpg,png',
- function processFilterArg(arg) {
- if (reservedArgRE.test(arg)) {
- return {
- value: toNumber(arg),
- dynamic: false
- };
- } else {
- var stripped = stripQuotes(arg);
- var dynamic = stripped === arg;
- return {
- value: dynamic ? arg : stripped,
- dynamic: dynamic
- };
- }
- }
+ files: [],
+ upload: [],
+ title: 'Add upload files',
+ drop: true,
+ auto: false,
- /**
- * Parse a directive value and extract the expression
- * and its filters into a descriptor.
- *
- * Example:
- *
- * "a + 1 | uppercase" will yield:
- * {
- * expression: 'a + 1',
- * filters: [
- * { name: 'uppercase', args: null }
- * ]
- * }
- *
- * @param {String} s
- * @return {Object}
- */
+ name: 'file',
- function parseDirective(s) {
- var hit = cache$1.get(s);
- if (hit) {
- return hit;
- }
+ postAction: './post.php',
+ putAction: './put.php',
+
+ headers: {
+ "X-Csrf-Token": "xxxx"
+ },
- // reset parser state
- str = s;
- inSingle = inDouble = false;
- curly = square = paren = 0;
- lastFilterIndex = 0;
- dir = {};
+ data: {
+ "_csrf_token": "xxxxxx"
+ },
- for (i = 0, l = str.length; i < l; i++) {
- prev = c;
- c = str.charCodeAt(i);
- if (inSingle) {
- // check single quote
- if (c === 0x27 && prev !== 0x5C) inSingle = !inSingle;
- } else if (inDouble) {
- // check double quote
- if (c === 0x22 && prev !== 0x5C) inDouble = !inDouble;
- } else if (c === 0x7C && // pipe
- str.charCodeAt(i + 1) !== 0x7C && str.charCodeAt(i - 1) !== 0x7C) {
- if (dir.expression == null) {
- // first filter, end of expression
- lastFilterIndex = i + 1;
- dir.expression = str.slice(0, i).trim();
- } else {
- // already has filter
- pushFilter();
+ events: {
+ add: function add(file, component) {
+ console.log('add');
+ if (this.auto) {
+ component.active = true;
+ }
+ file.headers['X-Filename'] = encodeURIComponent(file.name);
+ file.data.finename = file.name;
+ },
+ progress: function progress(file, component) {
+ console.log('progress ' + file.progress);
+ },
+ after: function after(file, component) {
+ console.log('after');
+ },
+ before: function before(file, component) {
+ console.log('before');
}
- } else {
- switch (c) {
- case 0x22:
- inDouble = true;break; // "
- case 0x27:
- inSingle = true;break; // '
- case 0x28:
- paren++;break; // (
- case 0x29:
- paren--;break; // )
- case 0x5B:
- square++;break; // [
- case 0x5D:
- square--;break; // ]
- case 0x7B:
- curly++;break; // {
- case 0x7D:
- curly--;break; // }
- }
- }
- }
-
- if (dir.expression == null) {
- dir.expression = str.slice(0, i).trim();
- } else if (lastFilterIndex !== 0) {
- pushFilter();
- }
+ }
+ },
- cache$1.put(s, dir);
- return dir;
- }
+ mounted: function mounted() {
+ this.upload = this.$refs.upload.$data;
+ },
- var directive = Object.freeze({
- parseDirective: parseDirective
- });
- var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
- var cache = undefined;
- var tagRE = undefined;
- var htmlRE = undefined;
- /**
- * Escape a string so it can be used in a RegExp
- * constructor.
- *
- * @param {String} str
- */
-
- function escapeRegex(str) {
- return str.replace(regexEscapeRE, '\\$&');
- }
-
- function compileRegex() {
- var open = escapeRegex(config.delimiters[0]);
- var close = escapeRegex(config.delimiters[1]);
- var unsafeOpen = escapeRegex(config.unsafeDelimiters[0]);
- var unsafeClose = escapeRegex(config.unsafeDelimiters[1]);
- tagRE = new RegExp(unsafeOpen + '((?:.|\\n)+?)' + unsafeClose + '|' + open + '((?:.|\\n)+?)' + close, 'g');
- htmlRE = new RegExp('^' + unsafeOpen + '((?:.|\\n)+?)' + unsafeClose + '$');
- // reset cache
- cache = new Cache(1000);
- }
-
- /**
- * Parse a template text string into an array of tokens.
- *
- * @param {String} text
- * @return {Array