diff --git a/README.md b/README.md
index f6d639c..902505b 100644
--- a/README.md
+++ b/README.md
@@ -1,248 +1,35 @@
# vue-upload-component
-> Vue.js file upload component, Support for multiple file uploads, progress, html4, ie9
-**Html4 does not support the progress bar, file size, accept, timeout, headers, response status code error of judgment**
-
-
-
-## Install
-
-``` bash
- npm install vue-upload-component --save
-```
-
-### HTML
-```html
-
-
-
-
- Vue-upload-component Test
-
-
-
-
-
- Upload file
-
-
-
-
-
-```
-
-### CommonJS
-```js
- var FileUpload = require('vue-upload-component');
- new Vue({
- template: 'Upload file',
- data: function() {
- return {
- files: []
- }
- },
- components: {
- FileUpload: FileUpload
- }
- })
-
-```
-
-### ES6
-```js
- import FileUpload from 'vue-upload-component'
- new Vue({
- template: 'Upload file',
- data() {
- return {
- files: []
- }
- },
- components: {
- FileUpload
- }
- })
-
-```
-
-
-### SSR (Server)
-```js
-import FileUpload from 'vue-upload-component/src'
-```
-
-#### webpack.config.js
-```js
-var nodeExternals = require('webpack-node-externals');
-{
- //.....
- externals: [
- nodeExternals({whitelist:[/^vue-upload-component/]})
- ]
- //.....
-}
-```
-
-## Examples
+> Vue.js file upload component
+ - [x] Multi-file upload
+ - [x] Upload directory
+ - [x] Drag and drop
+ - [x] Drag the directory
+ - [x] Upload multiple files at the same time
+ - [x] html4 (IE 9)
+ - [x] `PUT` method
+ - [x] Customize the filter
+ - [x] thumbnails
+
+
+> Vue.js 文件上传组建
+ - [x] 上传多文件
+ - [x] 上传目录
+ - [x] 拖拽
+ - [x] 拖拽目录
+ - [x] 多线程
+ - [x] html4(IE 9)
+ - [x] `PUT` 方法
+ - [x] 自定义过滤器
+ - [x] 缩略图
+
+# 演示 (Example)
https://lian-yue.github.io/vue-upload-component/
-https://github.com/lian-yue/vue-upload-component/tree/2.0/example/
-``` html
-
- Upload file
-
-
-
-```
-
-## Build Setup
-
-``` bash
-# install dependencies
-npm install
-
-# serve with hot reload at localhost:8080
-npm run dev
-
-# build for production with minification
-npm run build
-```
-
-
-
-# Setting
-
-
-## Props
-``` html
-
- Add Files
-
-```
-
-
-
-
-### Props value
-``` 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
- response: '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"
- }
- ]
-```
-
-
-
-
-
-## data
-``` js
- {
- mode: 'html5', // html5 or html4
-
- active: false, // set active = false abort upload
-
- uploaded: true, // Read only
-
- dropActive: false, // Read only
-
- destroy: false, // Read only Component destroy = true
- }
-```
+# 文档 (Documents)
+**[中文文档](https://github.com/lian-yue/vue-upload-component/tree/2.0/docs/zh-cn/README.md)**
-## methods
-````
- clear()
- get(id or file Object)
- add(window.File Object or object)
- update(id or file Object, data)
- remove(id or file Object)
-```
+**[English document](https://github.com/lian-yue/vue-upload-component/tree/2.0/docs/en/README.md)**
diff --git a/dist/example.js b/dist/example.js
index 3cef885..3736565 100644
--- a/dist/example.js
+++ b/dist/example.js
@@ -44,7 +44,7 @@
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
- module.exports = __webpack_require__(53);
+ module.exports = __webpack_require__(57);
/***/ }),
@@ -83,23 +83,44 @@
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
- var isObject = __webpack_require__(12);
+ var anObject = __webpack_require__(5)
+ , IE8_DOM_DEFINE = __webpack_require__(40)
+ , toPrimitive = __webpack_require__(32)
+ , dP = Object.defineProperty;
+
+ exports.f = __webpack_require__(6) ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+ };
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(14);
module.exports = function(it){
if(!isObject(it))throw TypeError(it + ' is not an object!');
return it;
};
/***/ }),
-/* 5 */
+/* 6 */
/***/ (function(module, exports, __webpack_require__) {
// Thank's IE8 for his funny defineProperty
- module.exports = !__webpack_require__(11)(function(){
+ module.exports = !__webpack_require__(13)(function(){
return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
});
/***/ }),
-/* 6 */
+/* 7 */
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
@@ -108,45 +129,24 @@
};
/***/ }),
-/* 7 */
+/* 8 */
/***/ (function(module, exports, __webpack_require__) {
- var dP = __webpack_require__(8)
- , createDesc = __webpack_require__(19);
- module.exports = __webpack_require__(5) ? function(object, key, value){
+ var dP = __webpack_require__(4)
+ , createDesc = __webpack_require__(17);
+ module.exports = __webpack_require__(6) ? function(object, key, value){
return dP.f(object, key, createDesc(1, value));
} : function(object, key, value){
object[key] = value;
return object;
};
-/***/ }),
-/* 8 */
-/***/ (function(module, exports, __webpack_require__) {
-
- var anObject = __webpack_require__(4)
- , IE8_DOM_DEFINE = __webpack_require__(37)
- , toPrimitive = __webpack_require__(30)
- , dP = Object.defineProperty;
-
- exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes){
- anObject(O);
- P = toPrimitive(P, true);
- anObject(Attributes);
- if(IE8_DOM_DEFINE)try {
- return dP(O, P, Attributes);
- } catch(e){ /* empty */ }
- if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
- if('value' in Attributes)O[P] = Attributes.value;
- return O;
- };
-
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
// to indexed object, toObject with fallback for non-array-like ES3 strings
- var IObject = __webpack_require__(38)
+ var IObject = __webpack_require__(41)
, defined = __webpack_require__(23);
module.exports = function(it){
return IObject(defined(it));
@@ -164,44 +164,6 @@
/***/ }),
/* 11 */
-/***/ (function(module, exports) {
-
- module.exports = function(exec){
- try {
- return !!exec();
- } catch(e){
- return true;
- }
- };
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
- module.exports = function(it){
- return typeof it === 'object' ? it !== null : typeof it === 'function';
- };
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports) {
-
- module.exports = {};
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
-
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
- var $keys = __webpack_require__(42)
- , enumBugKeys = __webpack_require__(25);
-
- module.exports = Object.keys || function keys(O){
- return $keys(O, enumBugKeys);
- };
-
-/***/ }),
-/* 15 */
/***/ (function(module, exports, __webpack_require__) {
// optional / simple context binding
@@ -226,13 +188,13 @@
};
/***/ }),
-/* 16 */
+/* 12 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2)
, core = __webpack_require__(3)
- , ctx = __webpack_require__(15)
- , hide = __webpack_require__(7)
+ , ctx = __webpack_require__(11)
+ , hide = __webpack_require__(8)
, PROTOTYPE = 'prototype';
var $export = function(type, name, source){
@@ -292,19 +254,45 @@
module.exports = $export;
/***/ }),
-/* 17 */
+/* 13 */
/***/ (function(module, exports) {
- module.exports = true;
+ module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+ };
/***/ }),
-/* 18 */
+/* 14 */
/***/ (function(module, exports) {
- exports.f = {}.propertyIsEnumerable;
+ module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
/***/ }),
-/* 19 */
+/* 15 */
+/***/ (function(module, exports) {
+
+ module.exports = {};
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
+ var $keys = __webpack_require__(48)
+ , enumBugKeys = __webpack_require__(25);
+
+ module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+ };
+
+/***/ }),
+/* 17 */
/***/ (function(module, exports) {
module.exports = function(bitmap, value){
@@ -316,12 +304,24 @@
};
};
+/***/ }),
+/* 18 */
+/***/ (function(module, exports) {
+
+ module.exports = true;
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports) {
+
+ exports.f = {}.propertyIsEnumerable;
+
/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {
- var def = __webpack_require__(8).f
- , has = __webpack_require__(6)
+ var def = __webpack_require__(4).f
+ , has = __webpack_require__(7)
, TAG = __webpack_require__(1)('toStringTag');
module.exports = function(it, tag, stat){
@@ -361,7 +361,7 @@
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
- var isObject = __webpack_require__(12)
+ var isObject = __webpack_require__(14)
, document = __webpack_require__(2).document
// in old IE typeof document.createElement is 'object'
, is = isObject(document) && isObject(document.createElement);
@@ -418,10 +418,31 @@
/***/ }),
/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // 7.1.15 ToLength
+ var toInteger = __webpack_require__(29)
+ , min = Math.min;
+ module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+ };
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // 7.1.13 ToObject(argument)
+ var defined = __webpack_require__(23);
+ module.exports = function(it){
+ return Object(defined(it));
+ };
+
+/***/ }),
+/* 32 */
/***/ (function(module, exports, __webpack_require__) {
// 7.1.1 ToPrimitive(input [, PreferredType])
- var isObject = __webpack_require__(12);
+ var isObject = __webpack_require__(14);
// 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){
@@ -434,27 +455,49 @@
};
/***/ }),
-/* 31 */
+/* 33 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(2)
, core = __webpack_require__(3)
- , LIBRARY = __webpack_require__(17)
- , wksExt = __webpack_require__(32)
- , defineProperty = __webpack_require__(8).f;
+ , LIBRARY = __webpack_require__(18)
+ , wksExt = __webpack_require__(34)
+ , 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)});
};
/***/ }),
-/* 32 */
+/* 34 */
/***/ (function(module, exports, __webpack_require__) {
exports.f = __webpack_require__(1);
/***/ }),
-/* 33 */
+/* 35 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $at = __webpack_require__(98)(true);
+
+ // 21.1.3.27 String.prototype[@@iterator]()
+ __webpack_require__(44)(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+ // 21.1.5.2.1 %StringIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+ });
+
+/***/ }),
+/* 36 */
/***/ (function(module, exports) {
// this module is a runtime utility for cleaner component module output and will
@@ -511,14 +554,14 @@
/***/ }),
-/* 34 */
+/* 37 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
- var _assign = __webpack_require__(60);
+ var _assign = __webpack_require__(65);
var _assign2 = _interopRequireDefault(_assign);
@@ -539,7 +582,7 @@
};
/***/ }),
-/* 35 */
+/* 38 */
/***/ (function(module, exports, __webpack_require__) {
// getting tag from 19.1.3.6 Object.prototype.toString()
@@ -567,21 +610,21 @@
};
/***/ }),
-/* 36 */
+/* 39 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(2).document && document.documentElement;
/***/ }),
-/* 37 */
+/* 40 */
/***/ (function(module, exports, __webpack_require__) {
- module.exports = !__webpack_require__(5) && !__webpack_require__(11)(function(){
+ module.exports = !__webpack_require__(6) && !__webpack_require__(13)(function(){
return Object.defineProperty(__webpack_require__(24)('div'), 'a', {get: function(){ return 7; }}).a != 7;
});
/***/ }),
-/* 38 */
+/* 41 */
/***/ (function(module, exports, __webpack_require__) {
// fallback for non-array-like ES3 and non-enumerable old V8 strings
@@ -591,19 +634,49 @@
};
/***/ }),
-/* 39 */
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // check on default Array iterator
+ var Iterators = __webpack_require__(15)
+ , ITERATOR = __webpack_require__(1)('iterator')
+ , ArrayProto = Array.prototype;
+
+ module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+ };
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // call something on iterator step with safe closing on error
+ var anObject = __webpack_require__(5);
+ module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+ };
+
+/***/ }),
+/* 44 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
- var LIBRARY = __webpack_require__(17)
- , $export = __webpack_require__(16)
- , redefine = __webpack_require__(43)
- , hide = __webpack_require__(7)
- , has = __webpack_require__(6)
- , Iterators = __webpack_require__(13)
- , $iterCreate = __webpack_require__(79)
+ var LIBRARY = __webpack_require__(18)
+ , $export = __webpack_require__(12)
+ , redefine = __webpack_require__(49)
+ , hide = __webpack_require__(8)
+ , has = __webpack_require__(7)
+ , Iterators = __webpack_require__(15)
+ , $iterCreate = __webpack_require__(85)
, setToStringTag = __webpack_require__(20)
- , getPrototypeOf = __webpack_require__(89)
+ , getPrototypeOf = __webpack_require__(94)
, ITERATOR = __webpack_require__(1)('iterator')
, BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
, FF_ITERATOR = '@@iterator'
@@ -666,12 +739,38 @@
};
/***/ }),
-/* 40 */
+/* 45 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var ITERATOR = __webpack_require__(1)('iterator')
+ , SAFE_CLOSING = false;
+
+ try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+ } catch(e){ /* empty */ }
+
+ module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ return {done: safe = true}; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+ };
+
+/***/ }),
+/* 46 */
/***/ (function(module, exports, __webpack_require__) {
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
- var anObject = __webpack_require__(4)
- , dPs = __webpack_require__(86)
+ var anObject = __webpack_require__(5)
+ , dPs = __webpack_require__(91)
, enumBugKeys = __webpack_require__(25)
, IE_PROTO = __webpack_require__(27)('IE_PROTO')
, Empty = function(){ /* empty */ }
@@ -686,7 +785,7 @@
, gt = '>'
, iframeDocument;
iframe.style.display = 'none';
- __webpack_require__(36).appendChild(iframe);
+ __webpack_require__(39).appendChild(iframe);
iframe.src = 'javascript:'; // eslint-disable-line no-script-url
// createDict = iframe.contentWindow.Object;
// html.removeChild(iframe);
@@ -713,11 +812,11 @@
/***/ }),
-/* 41 */
+/* 47 */
/***/ (function(module, exports, __webpack_require__) {
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
- var $keys = __webpack_require__(42)
+ var $keys = __webpack_require__(48)
, hiddenKeys = __webpack_require__(25).concat('length', 'prototype');
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
@@ -725,12 +824,12 @@
};
/***/ }),
-/* 42 */
+/* 48 */
/***/ (function(module, exports, __webpack_require__) {
- var has = __webpack_require__(6)
+ var has = __webpack_require__(7)
, toIObject = __webpack_require__(9)
- , arrayIndexOf = __webpack_require__(72)(false)
+ , arrayIndexOf = __webpack_require__(79)(false)
, IE_PROTO = __webpack_require__(27)('IE_PROTO');
module.exports = function(object, names){
@@ -747,18 +846,18 @@
};
/***/ }),
-/* 43 */
+/* 49 */
/***/ (function(module, exports, __webpack_require__) {
- module.exports = __webpack_require__(7);
+ module.exports = __webpack_require__(8);
/***/ }),
-/* 44 */
+/* 50 */
/***/ (function(module, exports, __webpack_require__) {
- var ctx = __webpack_require__(15)
- , invoke = __webpack_require__(75)
- , html = __webpack_require__(36)
+ var ctx = __webpack_require__(11)
+ , invoke = __webpack_require__(83)
+ , html = __webpack_require__(39)
, cel = __webpack_require__(24)
, global = __webpack_require__(2)
, process = global.process
@@ -833,62 +932,32 @@
};
/***/ }),
-/* 45 */
+/* 51 */
/***/ (function(module, exports, __webpack_require__) {
- // 7.1.15 ToLength
- var toInteger = __webpack_require__(29)
- , min = Math.min;
- module.exports = function(it){
- return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
- };
-
-/***/ }),
-/* 46 */
-/***/ (function(module, exports, __webpack_require__) {
-
- // 7.1.13 ToObject(argument)
- var defined = __webpack_require__(23);
- module.exports = function(it){
- return Object(defined(it));
+ var classof = __webpack_require__(38)
+ , ITERATOR = __webpack_require__(1)('iterator')
+ , Iterators = __webpack_require__(15);
+ module.exports = __webpack_require__(3).getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
};
/***/ }),
-/* 47 */
+/* 52 */
/***/ (function(module, exports) {
/***/ }),
-/* 48 */
-/***/ (function(module, exports, __webpack_require__) {
-
- 'use strict';
- var $at = __webpack_require__(93)(true);
-
- // 21.1.3.27 String.prototype[@@iterator]()
- __webpack_require__(39)(String, 'String', function(iterated){
- this._t = String(iterated); // target
- this._i = 0; // next index
- // 21.1.5.2.1 %StringIteratorPrototype%.next()
- }, function(){
- var O = this._t
- , index = this._i
- , point;
- if(index >= O.length)return {value: undefined, done: true};
- point = $at(O, index);
- this._i += point.length;
- return {value: point, done: false};
- });
-
-/***/ }),
-/* 49 */
+/* 53 */
/***/ (function(module, exports, __webpack_require__) {
- __webpack_require__(96);
+ __webpack_require__(101);
var global = __webpack_require__(2)
- , hide = __webpack_require__(7)
- , Iterators = __webpack_require__(13)
+ , hide = __webpack_require__(8)
+ , Iterators = __webpack_require__(15)
, TO_STRING_TAG = __webpack_require__(1)('toStringTag');
for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
@@ -900,7 +969,7 @@
}
/***/ }),
-/* 50 */
+/* 54 */
/***/ (function(module, exports) {
/*
@@ -956,7 +1025,7 @@
/***/ }),
-/* 51 */
+/* 55 */
/***/ (function(module, exports, __webpack_require__) {
/*
@@ -975,7 +1044,7 @@
) }
}
- var listToStyles = __webpack_require__(112)
+ var listToStyles = __webpack_require__(117)
/*
type StyleObject = {
@@ -1177,10522 +1246,3055 @@
/***/ }),
-/* 52 */
+/* 56 */
+/***/ (function(module, exports) {
+
+ module.exports = Vue;
+
+/***/ }),
+/* 57 */
/***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {/*!
- * Vue.js v2.2.6
- * (c) 2014-2017 Evan You
- * Released under the MIT License.
- */
'use strict';
- /* */
+ var _extends2 = __webpack_require__(37);
- /**
- * Convert a value to a string that is actually rendered.
- */
- function _toString (val) {
- return val == null
- ? ''
- : typeof val === 'object'
- ? JSON.stringify(val, null, 2)
- : String(val)
- }
+ var _extends3 = _interopRequireDefault(_extends2);
- /**
- * Convert a input value to a number for persistence.
- * If the conversion fails, return original string.
- */
- function toNumber (val) {
- var n = parseFloat(val);
- return isNaN(n) ? val : n
- }
+ var _vue = __webpack_require__(56);
- /**
- * Make a map and return a function for checking if a key
- * is in that map.
- */
- function makeMap (
- str,
- expectsLowerCase
- ) {
- var map = Object.create(null);
- var list = str.split(',');
- for (var i = 0; i < list.length; i++) {
- map[list[i]] = true;
- }
- return expectsLowerCase
- ? function (val) { return map[val.toLowerCase()]; }
- : function (val) { return map[val]; }
- }
+ var _vue2 = _interopRequireDefault(_vue);
- /**
- * Check if a tag is a built-in tag.
- */
- var isBuiltInTag = makeMap('slot,component', true);
+ var _Home = __webpack_require__(109);
- /**
- * Remove an item from an array
- */
- function remove (arr, item) {
- if (arr.length) {
- var index = arr.indexOf(item);
- if (index > -1) {
- return arr.splice(index, 1)
- }
- }
- }
+ var _Home2 = _interopRequireDefault(_Home);
- /**
- * Check whether the object has the property.
- */
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- function hasOwn (obj, key) {
- return hasOwnProperty.call(obj, key)
- }
+ var _store = __webpack_require__(58);
- /**
- * Check if value is primitive
- */
- function isPrimitive (value) {
- return typeof value === 'string' || typeof value === 'number'
- }
+ var _store2 = _interopRequireDefault(_store);
- /**
- * Create a cached version of a pure function.
- */
- function cached (fn) {
- var cache = Object.create(null);
- return (function cachedFn (str) {
- var hit = cache[str];
- return hit || (cache[str] = fn(str))
- })
- }
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /**
- * Camelize a hyphen-delimited string.
- */
- var camelizeRE = /-(\w)/g;
- var camelize = cached(function (str) {
- return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
- });
+ _vue2.default.config.silent = false;
+ _vue2.default.config.devtools = true;
- /**
- * Capitalize a string.
- */
- var capitalize = cached(function (str) {
- return str.charAt(0).toUpperCase() + str.slice(1)
+ _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';
+ }
+ return size.toString() + ' B';
});
- /**
- * Hyphenate a camelCase string.
- */
- var hyphenateRE = /([^-])([A-Z])/g;
- var hyphenate = cached(function (str) {
- return str
- .replace(hyphenateRE, '$1-$2')
- .replace(hyphenateRE, '$1-$2')
- .toLowerCase()
+ new _vue2.default((0, _extends3.default)({
+ store: _store2.default
+ }, _Home2.default)).$mount('#app');
+
+/***/ }),
+/* 58 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
});
- /**
- * Simple bind, faster than native
- */
- function bind (fn, ctx) {
- function boundFn (a) {
- var l = arguments.length;
- return l
- ? l > 1
- ? fn.apply(ctx, arguments)
- : fn.call(ctx, a)
- : fn.call(ctx)
- }
- // record original fn length
- boundFn._length = fn.length;
- return boundFn
- }
+ var _vue = __webpack_require__(56);
- /**
- * Convert an Array-like object to a real Array.
- */
- 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 _vue2 = _interopRequireDefault(_vue);
- /**
- * Mix properties into target object.
- */
- function extend (to, _from) {
- for (var key in _from) {
- to[key] = _from[key];
- }
- return to
- }
+ var _vuex = __webpack_require__(118);
- /**
- * Quick object check - this is primarily used to tell
- * Objects from primitive values when we know the value
- * is a JSON-compliant type.
- */
- function isObject (obj) {
- return obj !== null && typeof obj === 'object'
- }
+ var _vuex2 = _interopRequireDefault(_vuex);
- /**
- * Strict object type check. Only returns true
- * for plain JavaScript objects.
- */
- var toString = Object.prototype.toString;
- var OBJECT_STRING = '[object Object]';
- function isPlainObject (obj) {
- return toString.call(obj) === OBJECT_STRING
- }
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /**
- * Merge an Array of Objects into a single Object.
- */
- function toObject (arr) {
- var res = {};
- for (var i = 0; i < arr.length; i++) {
- if (arr[i]) {
- extend(res, arr[i]);
- }
+ var state = {
+ files: []
+ };
+
+ var mutations = {
+ updateFiles: function updateFiles(state, files) {
+ state.files = files;
}
- return res
- }
+ };
+ exports.default = new _vuex2.default.Store({
+ strict: true,
+ state: state,
+ mutations: mutations
+ });
+
+/***/ }),
+/* 59 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
- /**
- * Perform no operation.
- */
- function noop () {}
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
- /**
- * Always return false.
- */
- var no = function () { return false; };
+ var _src = __webpack_require__(62);
- /**
- * Return same value
- */
- var identity = function (_) { return _; };
+ var _src2 = _interopRequireDefault(_src);
- /**
- * Generate a static keys string from compiler modules.
- */
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+ exports.default = {
+ components: {
+ FileUpload: _src2.default
+ },
- /**
- * Check if two values are loosely equal - that is,
- * if they are plain objects, do they have the same shape?
- */
- function looseEqual (a, b) {
- var isObjectA = isObject(a);
- var isObjectB = isObject(b);
- if (isObjectA && isObjectB) {
- try {
- return JSON.stringify(a) === JSON.stringify(b)
- } catch (e) {
- // possible circular reference
- return a === b
- }
- } else if (!isObjectA && !isObjectB) {
- return String(a) === String(b)
- } else {
- return false
- }
- }
+ data: function data() {
+ return {
+ files: [],
+ accept: 'image/png,image/gif,image/jpeg,image/webp',
+ size: 1024 * 1024 * 10,
+ extensions: 'gif,jpg,jpeg,png,webp',
- function looseIndexOf (arr, val) {
- for (var i = 0; i < arr.length; i++) {
- if (looseEqual(arr[i], val)) { return i }
- }
- return -1
- }
- /**
- * Ensure a function is called only once.
- */
- function once (fn) {
- var called = false;
- return function () {
- if (!called) {
- called = true;
- fn();
- }
- }
- }
+ multiple: true,
+ directory: false,
+ drop: true,
+ dropDirectory: true,
+ thread: 3,
+ name: 'file',
- /* */
-
- var config = {
- /**
- * Option merge strategies (used in core/util/options)
- */
- optionMergeStrategies: Object.create(null),
-
- /**
- * Whether to suppress warnings.
- */
- silent: false,
-
- /**
- * Show production mode tip message on boot?
- */
- productionTip: ("production") !== 'production',
-
- /**
- * Whether to enable devtools
- */
- devtools: ("production") !== 'production',
-
- /**
- * Whether to record perf
- */
- performance: false,
-
- /**
- * Error handler for watcher errors
- */
- errorHandler: null,
-
- /**
- * Ignore certain custom elements
- */
- ignoredElements: [],
-
- /**
- * Custom user key aliases for v-on
- */
- keyCodes: Object.create(null),
-
- /**
- * Check if a tag is reserved so that it cannot be registered as a
- * component. This is platform-dependent and may be overwritten.
- */
- isReservedTag: no,
-
- /**
- * Check if a tag is an unknown element.
- * Platform-dependent.
- */
- isUnknownElement: no,
-
- /**
- * Get the namespace of an element
- */
- getTagNamespace: noop,
-
- /**
- * Parse the real tag name for the specific platform.
- */
- parsePlatformTagName: identity,
-
- /**
- * Check if an attribute must be bound using property, e.g. value
- * Platform-dependent.
- */
- mustUseProp: no,
-
- /**
- * List of asset types that a component can own.
- */
- _assetTypes: [
- 'component',
- 'directive',
- 'filter'
- ],
-
- /**
- * List of lifecycle hooks.
- */
- _lifecycleHooks: [
- 'beforeCreate',
- 'created',
- 'beforeMount',
- 'mounted',
- 'beforeUpdate',
- 'updated',
- 'beforeDestroy',
- 'destroyed',
- 'activated',
- 'deactivated'
- ],
-
- /**
- * Max circular updates allowed in a scheduler flush cycle.
- */
- _maxUpdateCount: 100
- };
+ postAction: './post.php',
+ putAction: './put.php',
- /* */
+ headers: {
+ "X-Csrf-Token": "xxxx"
+ },
- var emptyObject = Object.freeze({});
+ data: {
+ "_csrf_token": "xxxxxx"
+ },
- /**
- * Check if a string starts with $ or _
- */
- function isReserved (str) {
- var c = (str + '').charCodeAt(0);
- return c === 0x24 || c === 0x5F
- }
+ auto: false
- /**
- * Define a property.
- */
- function def (obj, key, val, enumerable) {
- Object.defineProperty(obj, key, {
- value: val,
- enumerable: !!enumerable,
- writable: true,
- configurable: true
- });
- }
+ };
+ },
- /**
- * Parse simple path.
- */
- var bailRE = /[^\w.$]/;
- function parsePath (path) {
- if (bailRE.test(path)) {
- return
- }
- var segments = path.split('.');
- return function (obj) {
- for (var i = 0; i < segments.length; i++) {
- if (!obj) { return }
- obj = obj[segments[i]];
- }
- return obj
- }
- }
- /* */
- /* globals MutationObserver */
-
- // can we use __proto__?
- var hasProto = '__proto__' in {};
-
- // Browser environment sniffing
- var inBrowser = typeof window !== 'undefined';
- var UA = inBrowser && window.navigator.userAgent.toLowerCase();
- var isIE = UA && /msie|trident/.test(UA);
- var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
- var isEdge = UA && UA.indexOf('edge/') > 0;
- var isAndroid = UA && UA.indexOf('android') > 0;
- var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
- var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
-
- // this needs to be lazy-evaled because vue may be required before
- // vue-server-renderer can set VUE_ENV
- var _isServer;
- var isServerRendering = function () {
- if (_isServer === undefined) {
- /* istanbul ignore if */
- if (!inBrowser && typeof global !== 'undefined') {
- // detect presence of vue-server-renderer and avoid
- // Webpack shimming the process
- _isServer = global['process'].env.VUE_ENV === 'server';
- } else {
- _isServer = false;
+ watch: {
+ auto: function auto(_auto) {
+ if (_auto && !this.$refs.upload.uploaded && !this.$refs.upload.active) {
+ this.$refs.upload.active = true;
+ }
}
- }
- return _isServer
- };
-
- // detect devtools
- var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
-
- /* istanbul ignore next */
- function isNative (Ctor) {
- return /native code/.test(Ctor.toString())
- }
+ },
- var hasSymbol =
- typeof Symbol !== 'undefined' && isNative(Symbol) &&
- typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
+ methods: {
+ addDirectory: function addDirectory() {
+ var _this = this;
- /**
- * Defer a task to execute it asynchronously.
- */
- var nextTick = (function () {
- var callbacks = [];
- var pending = false;
- var timerFunc;
-
- function nextTickHandler () {
- pending = false;
- var copies = callbacks.slice(0);
- callbacks.length = 0;
- for (var i = 0; i < copies.length; i++) {
- copies[i]();
- }
- }
+ if (!this.$refs.upload.features.directory) {
+ return;
+ }
+ this.$refs.upload.$el.onclick = null;
- // the nextTick behavior leverages the microtask queue, which can be accessed
- // via either native Promise.then or MutationObserver.
- // MutationObserver has wider support, however it is seriously bugged in
- // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
- // completely stops working after triggering a few times... so, if native
- // Promise is available, we will use it:
- /* istanbul ignore if */
- if (typeof Promise !== 'undefined' && isNative(Promise)) {
- var p = Promise.resolve();
- var logError = function (err) { console.error(err); };
- timerFunc = function () {
- p.then(nextTickHandler).catch(logError);
- // in problematic UIWebViews, Promise.then doesn't completely break, but
- // it can get stuck in a weird state where callbacks are pushed into the
- // microtask queue but the queue isn't being flushed, until the browser
- // needs to do some other work, e.g. handle a timer. Therefore we can
- // "force" the microtask queue to be flushed by adding an empty timer.
- if (isIOS) { setTimeout(noop); }
- };
- } else if (typeof MutationObserver !== 'undefined' && (
- isNative(MutationObserver) ||
- // PhantomJS and iOS 7.x
- MutationObserver.toString() === '[object MutationObserverConstructor]'
- )) {
- // use MutationObserver where native Promise is not available,
- // e.g. PhantomJS IE11, iOS7, Android 4.4
- var counter = 1;
- var observer = new MutationObserver(nextTickHandler);
- var textNode = document.createTextNode(String(counter));
- observer.observe(textNode, {
- characterData: true
- });
- timerFunc = function () {
- counter = (counter + 1) % 2;
- textNode.data = String(counter);
- };
- } else {
- // fallback to setTimeout
- /* istanbul ignore next */
- timerFunc = function () {
- setTimeout(nextTickHandler, 0);
- };
- }
+ this.directory = true;
+ this.$nextTick(function () {
+ _this.$refs.upload.$el.querySelector('input').click();
+ _this.$refs.upload.$el.onclick = function (e) {
+ e.preventDefault();
+ _this.directory = false;
+ _this.$refs.upload.$el.onclick = null;
+ _this.$nextTick(function () {
+ _this.$refs.upload.$el.querySelector('input').click();
+ });
+ };
+ });
+ },
+ inputFilter: function inputFilter(newFile, oldFile, prevent) {
+ if (newFile && !oldFile) {
+ if (/(\/|^)(Thumbs\.db|desktop\.ini|\..+)$/.test(newFile.name)) {
+ return prevent();
+ }
- return function queueNextTick (cb, ctx) {
- var _resolve;
- callbacks.push(function () {
- if (cb) { cb.call(ctx); }
- if (_resolve) { _resolve(ctx); }
- });
- if (!pending) {
- pending = true;
- timerFunc();
- }
- if (!cb && typeof Promise !== 'undefined') {
- return new Promise(function (resolve) {
- _resolve = resolve;
- })
- }
- }
- })();
-
- var _Set;
- /* istanbul ignore if */
- if (typeof Set !== 'undefined' && isNative(Set)) {
- // use native Set when available.
- _Set = Set;
- } else {
- // a non-standard Set polyfill that only works with primitive keys.
- _Set = (function () {
- function Set () {
- this.set = Object.create(null);
- }
- Set.prototype.has = function has (key) {
- return this.set[key] === true
- };
- Set.prototype.add = function add (key) {
- this.set[key] = true;
- };
- Set.prototype.clear = function clear () {
- this.set = Object.create(null);
- };
+ if (/\.(php5?|html?|jsx?)$/i.test(newFile.name)) {
+ return prevent();
+ }
- return Set;
- }());
- }
+ newFile.blob = '';
+ var URL = window.URL || window.webkitURL;
+ if (URL && URL.createObjectURL) {
+ newFile.blob = URL.createObjectURL(newFile.file);
+ }
+ }
+ },
+ inputFile: function inputFile(newFile, oldFile) {
+ if (newFile && oldFile) {
- var warn = noop;
- var tip = noop;
- var formatComponentName;
+ if (newFile.active && !oldFile.active) {
+ if (newFile.size >= 0 && newFile.size < 100 * 1024) {}
+ }
- if (false) {
- var hasConsole = typeof console !== 'undefined';
- var classifyRE = /(?:^|[-_])(\w)/g;
- var classify = function (str) { return str
- .replace(classifyRE, function (c) { return c.toUpperCase(); })
- .replace(/[-_]/g, ''); };
-
- warn = function (msg, vm) {
- if (hasConsole && (!config.silent)) {
- console.error("[Vue warn]: " + msg + " " + (
- vm ? formatLocation(formatComponentName(vm)) : ''
- ));
- }
- };
+ if (newFile.progress != oldFile.progress) {}
- tip = function (msg, vm) {
- if (hasConsole && (!config.silent)) {
- console.warn("[Vue tip]: " + msg + " " + (
- vm ? formatLocation(formatComponentName(vm)) : ''
- ));
- }
- };
+ if (newFile.error && !oldFile.error) {}
- formatComponentName = function (vm, includeFile) {
- if (vm.$root === vm) {
- return ''
- }
- var name = typeof vm === 'string'
- ? vm
- : typeof vm === 'function' && vm.options
- ? vm.options.name
- : vm._isVue
- ? vm.$options.name || vm.$options._componentTag
- : vm.name;
-
- var file = vm._isVue && vm.$options.__file;
- if (!name && file) {
- var match = file.match(/([^/\\]+)\.vue$/);
- name = match && match[1];
- }
+ if (newFile.success && !oldFile.success) {}
+ }
- return (
- (name ? ("<" + (classify(name)) + ">") : "") +
- (file && includeFile !== false ? (" at " + file) : '')
- )
- };
+ if (!newFile && oldFile) {}
- var formatLocation = function (str) {
- if (str === "") {
- str += " - use the \"name\" option for better debugging messages.";
+ if (newFile && !oldFile && this.auto && !this.$refs.upload.active) {
+ this.$refs.upload.active = true;
+ }
+ },
+ abort: function abort(file) {
+ this.$refs.upload.update(file, { active: false });
+ },
+ customError: function customError(file) {
+ this.$refs.upload.update(file, { error: 'custom' });
+ },
+ remove: function remove(file) {
+ this.$refs.upload.remove(file);
}
- return ("\n(found in " + str + ")")
- };
- }
+ }
+ };
+
+/***/ }),
+/* 60 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
- /* */
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ var _toConsumableArray2 = __webpack_require__(69);
- var uid$1 = 0;
+ var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
- /**
- * A dep is an observable that can have multiple
- * directives subscribing to it.
- */
- var Dep = function Dep () {
- this.id = uid$1++;
- this.subs = [];
- };
+ var _stringify = __webpack_require__(64);
- Dep.prototype.addSub = function addSub (sub) {
- this.subs.push(sub);
- };
+ var _stringify2 = _interopRequireDefault(_stringify);
- Dep.prototype.removeSub = function removeSub (sub) {
- remove(this.subs, sub);
- };
+ var _promise = __webpack_require__(66);
- Dep.prototype.depend = function depend () {
- if (Dep.target) {
- Dep.target.addDep(this);
- }
- };
+ var _promise2 = _interopRequireDefault(_promise);
- Dep.prototype.notify = function notify () {
- // stabilize the subscriber list first
- var subs = this.subs.slice();
- for (var i = 0, l = subs.length; i < l; i++) {
- subs[i].update();
- }
- };
+ var _extends2 = __webpack_require__(37);
- // the current target watcher being evaluated.
- // this is globally unique because there could be only one
- // watcher being evaluated at any time.
- Dep.target = null;
- var targetStack = [];
+ var _extends3 = _interopRequireDefault(_extends2);
- function pushTarget (_target) {
- if (Dep.target) { targetStack.push(Dep.target); }
- Dep.target = _target;
- }
+ var _typeof2 = __webpack_require__(70);
- function popTarget () {
- Dep.target = targetStack.pop();
- }
+ var _typeof3 = _interopRequireDefault(_typeof2);
- /*
- * not type checking this file because flow doesn't play well with
- * dynamically accessing methods on Array prototype
- */
+ var _InputFile = __webpack_require__(111);
- var arrayProto = Array.prototype;
- var arrayMethods = Object.create(arrayProto);[
- 'push',
- 'pop',
- 'shift',
- 'unshift',
- 'splice',
- 'sort',
- 'reverse'
- ]
- .forEach(function (method) {
- // cache original method
- var original = arrayProto[method];
- def(arrayMethods, method, function mutator () {
- var arguments$1 = arguments;
-
- // avoid leaking arguments:
- // http://jsperf.com/closure-with-arguments
- var i = arguments.length;
- var args = new Array(i);
- while (i--) {
- args[i] = arguments$1[i];
- }
- var result = original.apply(this, args);
- var ob = this.__ob__;
- var inserted;
- switch (method) {
- case 'push':
- inserted = args;
- break
- case 'unshift':
- inserted = args;
- break
- case 'splice':
- inserted = args.slice(2);
- break
- }
- if (inserted) { ob.observeArray(inserted); }
- // notify change
- ob.dep.notify();
- return result
- });
- });
+ var _InputFile2 = _interopRequireDefault(_InputFile);
- /* */
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
+ exports.default = {
+ components: {
+ InputFile: _InputFile2.default
+ },
+ props: {
+ inputId: {
+ type: String
+ },
- /**
- * By default, when a reactive property is set, the new value is
- * also converted to become reactive. However when passing down props,
- * we don't want to force conversion because the value may be a nested value
- * under a frozen data structure. Converting it would defeat the optimization.
- */
- var observerState = {
- shouldConvert: true,
- isSettingProps: false
- };
+ name: {
+ type: String,
+ default: 'file'
+ },
- /**
- * Observer class that are attached to each observed
- * object. Once attached, the observer converts target
- * object's property keys into getter/setters that
- * collect dependencies and dispatches updates.
- */
- var Observer = function Observer (value) {
- this.value = value;
- this.dep = new Dep();
- this.vmCount = 0;
- def(value, '__ob__', this);
- if (Array.isArray(value)) {
- var augment = hasProto
- ? protoAugment
- : copyAugment;
- augment(value, arrayMethods, arrayKeys);
- this.observeArray(value);
- } else {
- this.walk(value);
- }
- };
+ accept: {
+ type: String
+ },
- /**
- * Walk through each property and convert them into
- * getter/setters. This method should only be called when
- * value type is Object.
- */
- Observer.prototype.walk = function walk (obj) {
- var keys = Object.keys(obj);
- for (var i = 0; i < keys.length; i++) {
- defineReactive$$1(obj, keys[i], obj[keys[i]]);
- }
- };
+ multiple: {
+ type: Boolean
+ },
- /**
- * Observe a list of Array items.
- */
- Observer.prototype.observeArray = function observeArray (items) {
- for (var i = 0, l = items.length; i < l; i++) {
- observe(items[i]);
- }
- };
+ directory: {
+ type: Boolean
+ },
- // helpers
+ postAction: {
+ type: String
+ },
- /**
- * Augment an target Object or Array by intercepting
- * the prototype chain using __proto__
- */
- function protoAugment (target, src) {
- /* eslint-disable no-proto */
- target.__proto__ = src;
- /* eslint-enable no-proto */
- }
+ putAction: {
+ type: String
+ },
- /**
- * Augment an target Object or Array by defining
- * hidden properties.
- */
- /* istanbul ignore next */
- function copyAugment (target, src, keys) {
- for (var i = 0, l = keys.length; i < l; i++) {
- var key = keys[i];
- def(target, key, src[key]);
- }
- }
+ headers: {
+ type: Object,
+ default: Object
+ },
- /**
- * Attempt to create an observer instance for a value,
- * returns the new observer if successfully observed,
- * or the existing observer if the value already has one.
- */
- function observe (value, asRootData) {
- if (!isObject(value)) {
- return
- }
- var ob;
- if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
- ob = value.__ob__;
- } else if (
- observerState.shouldConvert &&
- !isServerRendering() &&
- (Array.isArray(value) || isPlainObject(value)) &&
- Object.isExtensible(value) &&
- !value._isVue
- ) {
- ob = new Observer(value);
- }
- if (asRootData && ob) {
- ob.vmCount++;
- }
- return ob
- }
+ data: {
+ type: Object,
+ default: Object
+ },
- /**
- * Define a reactive property on an Object.
- */
- function defineReactive$$1 (
- obj,
- key,
- val,
- customSetter
- ) {
- var dep = new Dep();
+ timeout: {
+ type: Number,
+ default: 0
+ },
- var property = Object.getOwnPropertyDescriptor(obj, key);
- if (property && property.configurable === false) {
- return
- }
+ drop: {
+ default: false
+ },
- // cater for pre-defined getter/setters
- var getter = property && property.get;
- var setter = property && property.set;
+ dropDirectory: {
+ type: Boolean,
+ default: true
+ },
- var childOb = observe(val);
- Object.defineProperty(obj, key, {
- enumerable: true,
- configurable: true,
- get: function reactiveGetter () {
- var value = getter ? getter.call(obj) : val;
- if (Dep.target) {
- dep.depend();
- if (childOb) {
- childOb.dep.depend();
- }
- if (Array.isArray(value)) {
- dependArray(value);
- }
- }
- return value
+ size: {
+ type: Number,
+ default: 0
},
- set: function reactiveSetter (newVal) {
- var value = getter ? getter.call(obj) : val;
- /* eslint-disable no-self-compare */
- if (newVal === value || (newVal !== newVal && value !== value)) {
- return
- }
- /* eslint-enable no-self-compare */
- if (false) {
- customSetter();
- }
- if (setter) {
- setter.call(obj, newVal);
- } else {
- val = newVal;
- }
- childOb = observe(newVal);
- dep.notify();
- }
- });
- }
- /**
- * Set a property on an object. Adds the new property and
- * triggers change notification if the property doesn't
- * already exist.
- */
- function set (target, key, val) {
- if (Array.isArray(target) && typeof key === 'number') {
- target.length = Math.max(target.length, key);
- target.splice(key, 1, val);
- return val
- }
- if (hasOwn(target, key)) {
- target[key] = val;
- return val
- }
- var ob = (target ).__ob__;
- if (target._isVue || (ob && ob.vmCount)) {
- ("production") !== 'production' && warn(
- 'Avoid adding reactive properties to a Vue instance or its root $data ' +
- 'at runtime - declare it upfront in the data option.'
- );
- return val
- }
- if (!ob) {
- target[key] = val;
- return val
- }
- defineReactive$$1(ob.value, key, val);
- ob.dep.notify();
- return val
- }
+ extensions: {
+ default: Array
+ },
- /**
- * Delete a property and trigger change if necessary.
- */
- function del (target, key) {
- if (Array.isArray(target) && typeof key === 'number') {
- target.splice(key, 1);
- return
- }
- var ob = (target ).__ob__;
- if (target._isVue || (ob && ob.vmCount)) {
- ("production") !== 'production' && warn(
- 'Avoid deleting properties on a Vue instance or its root $data ' +
- '- just set it to null.'
- );
- return
- }
- if (!hasOwn(target, key)) {
- return
- }
- delete target[key];
- if (!ob) {
- return
- }
- ob.dep.notify();
- }
+ value: {
+ type: Array,
+ default: Array
+ },
- /**
- * Collect dependencies on array elements when the array is touched, since
- * we cannot intercept array element access like property getters.
- */
- function dependArray (value) {
- for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
- e = value[i];
- e && e.__ob__ && e.__ob__.dep.depend();
- if (Array.isArray(e)) {
- dependArray(e);
+ thread: {
+ type: Number,
+ default: 1
}
- }
- }
+ },
- /* */
+ data: function data() {
+ return {
+ files: this.value,
+ features: {
+ html5: true,
+ directory: false,
+ drag: false
+ },
- /**
- * Option overwriting strategies are functions that handle
- * how to merge a parent option value and a child option
- * value into the final value.
- */
- var strats = config.optionMergeStrategies;
+ active: false,
+ dropActive: false,
- /**
- * Options with restrictions
- */
- if (false) {
- strats.el = strats.propsData = function (parent, child, vm, key) {
- if (!vm) {
- warn(
- "option \"" + key + "\" can only be used during instance " +
- 'creation with the `new` keyword.'
- );
- }
- return defaultStrat(parent, child)
- };
- }
+ uploading: 0,
- /**
- * Helper that recursively merges two data objects together.
- */
- function mergeData (to, from) {
- if (!from) { return to }
- var key, toVal, fromVal;
- var keys = Object.keys(from);
- for (var i = 0; i < keys.length; i++) {
- key = keys[i];
- toVal = to[key];
- fromVal = from[key];
- if (!hasOwn(to, key)) {
- set(to, key, fromVal);
- } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {
- mergeData(toVal, fromVal);
- }
- }
- return to
- }
+ destroy: false
+ };
+ },
+ mounted: function mounted() {
+ var input = document.createElement('input');
+ input.type = 'file';
+ input.multiple = true;
- /**
- * Data
- */
- strats.data = function (
- parentVal,
- childVal,
- vm
- ) {
- if (!vm) {
- // in a Vue.extend merge, both should be functions
- if (!childVal) {
- return parentVal
- }
- if (typeof childVal !== 'function') {
- ("production") !== 'production' && warn(
- 'The "data" option should be a function ' +
- 'that returns a per-instance value in component ' +
- 'definitions.',
- vm
- );
- return parentVal
- }
- if (!parentVal) {
- return childVal
- }
- // when parentVal & childVal are both present,
- // we need to return a function that returns the
- // merged result of both functions... no need to
- // check if parentVal is a function here because
- // it has to be a function to pass previous merges.
- return function mergedDataFn () {
- return mergeData(
- childVal.call(this),
- parentVal.call(this)
- )
- }
- } else if (parentVal || childVal) {
- return function mergedInstanceDataFn () {
- // instance merge
- var instanceData = typeof childVal === 'function'
- ? childVal.call(vm)
- : childVal;
- var defaultData = typeof parentVal === 'function'
- ? parentVal.call(vm)
- : undefined;
- if (instanceData) {
- return mergeData(instanceData, defaultData)
- } else {
- return defaultData
+ if (window.FormData && input.files) {
+ if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {
+ this.features.directory = true;
+ }
+
+ if (this.features.html5 && typeof input.ondrop !== 'undefined') {
+ this.features.drop = true;
}
+ } else {
+ this.features.html5 = false;
}
- }
- };
- /**
- * Hooks and props are merged as arrays.
- */
- function mergeHook (
- parentVal,
- childVal
- ) {
- return childVal
- ? parentVal
- ? parentVal.concat(childVal)
- : Array.isArray(childVal)
- ? childVal
- : [childVal]
- : parentVal
- }
+ this.maps = {};
- config._lifecycleHooks.forEach(function (hook) {
- strats[hook] = mergeHook;
- });
+ this.$nextTick(function () {
+ if (this.$parent) {
+ this.$parent.$forceUpdate();
+ }
- /**
- * Assets
- *
- * When a vm is present (instance creation), we need to do
- * a three-way merge between constructor options, instance
- * options and parent options.
- */
- function mergeAssets (parentVal, childVal) {
- var res = Object.create(parentVal || null);
- return childVal
- ? extend(res, childVal)
- : res
- }
+ this.watchDrop(this.drop);
+ });
+ },
+ beforeDestroy: function beforeDestroy() {
+ this.destroy = true;
- config._assetTypes.forEach(function (type) {
- strats[type + 's'] = mergeAssets;
- });
+ this.active = false;
+ },
- /**
- * Watchers.
- *
- * Watchers hashes should not overwrite one
- * another, so we merge them as arrays.
- */
- strats.watch = function (parentVal, childVal) {
- /* istanbul ignore if */
- if (!childVal) { return Object.create(parentVal || null) }
- if (!parentVal) { return childVal }
- var ret = {};
- extend(ret, parentVal);
- for (var key in childVal) {
- var parent = ret[key];
- var child = childVal[key];
- if (parent && !Array.isArray(parent)) {
- parent = [parent];
+
+ computed: {
+ uploaded: function uploaded() {
+ var file = void 0;
+ for (var i = 0; i < this.files.length; i++) {
+ file = this.files[i];
+ if (!file.error && !file.success) {
+ return false;
+ }
+ }
+ return true;
+ },
+ className: function className() {
+ return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined];
}
- ret[key] = parent
- ? parent.concat(child)
- : [child];
- }
- return ret
- };
+ },
- /**
- * Other object hashes.
- */
- strats.props =
- strats.methods =
- strats.computed = function (parentVal, childVal) {
- if (!childVal) { return Object.create(parentVal || null) }
- if (!parentVal) { return childVal }
- var ret = Object.create(null);
- extend(ret, parentVal);
- extend(ret, childVal);
- return ret
- };
+ watch: {
+ active: function active(_active) {
+ this.watchActive(_active);
+ },
+ dropActive: function dropActive() {
+ if (this.$parent) {
+ this.$parent.$forceUpdate();
+ }
+ },
+ drop: function drop(value) {
+ this.watchDrop(value);
+ },
+ value: function value(files) {
+ if (this.files === files) {
+ return;
+ }
- /**
- * Default strategy.
- */
- var defaultStrat = function (parentVal, childVal) {
- return childVal === undefined
- ? parentVal
- : childVal
- };
+ var oldFiles = this.files;
+ this.files = files;
- /**
- * Validate component names
- */
- function checkComponents (options) {
- for (var key in options.components) {
- var lower = key.toLowerCase();
- if (isBuiltInTag(lower) || config.isReservedTag(lower)) {
- warn(
- 'Do not use built-in or reserved HTML elements as component ' +
- 'id: ' + key
- );
- }
- }
- }
+ var oldMaps = this.maps;
- /**
- * Ensure all props option syntax are normalized into the
- * Object-based format.
- */
- function normalizeProps (options) {
- var props = options.props;
- if (!props) { return }
- var res = {};
- var i, val, name;
- if (Array.isArray(props)) {
- i = props.length;
- while (i--) {
- val = props[i];
- if (typeof val === 'string') {
- name = camelize(val);
- res[name] = { type: null };
- } else if (false) {
- warn('props must be strings when using array syntax.');
+ this.maps = {};
+ for (var i = 0; i < this.files.length; i++) {
+ var file = this.files[i];
+ this.maps[file.id] = file;
}
- }
- } else if (isPlainObject(props)) {
- for (var key in props) {
- val = props[key];
- name = camelize(key);
- res[name] = isPlainObject(val)
- ? val
- : { type: val };
- }
- }
- options.props = res;
- }
- /**
- * Normalize raw function directives into object format.
- */
- function normalizeDirectives (options) {
- var dirs = options.directives;
- if (dirs) {
- for (var key in dirs) {
- var def = dirs[key];
- if (typeof def === 'function') {
- dirs[key] = { bind: def, update: def };
+ for (var key in this.maps) {
+ var newFile = this.maps[key];
+ var oldFile = oldMaps[key];
+ if (newFile !== oldFile) {
+ this.emitFile(newFile, oldFile);
+ }
}
- }
- }
- }
- /**
- * Merge two option objects into a new one.
- * Core utility used in both instantiation and inheritance.
- */
- function mergeOptions (
- parent,
- child,
- vm
- ) {
- if (false) {
- checkComponents(child);
- }
- normalizeProps(child);
- normalizeDirectives(child);
- var extendsFrom = child.extends;
- if (extendsFrom) {
- parent = typeof extendsFrom === 'function'
- ? mergeOptions(parent, extendsFrom.options, vm)
- : mergeOptions(parent, extendsFrom, vm);
- }
- if (child.mixins) {
- for (var i = 0, l = child.mixins.length; i < l; i++) {
- var mixin = child.mixins[i];
- if (mixin.prototype instanceof Vue$2) {
- mixin = mixin.options;
+ for (var _key in oldMaps) {
+ if (!this.maps[_key]) {
+ this.emitFile(undefined, oldMaps[_key]);
+ }
}
- parent = mergeOptions(parent, mixin, vm);
}
- }
- var options = {};
- var key;
- for (key in parent) {
- mergeField(key);
- }
- for (key in child) {
- if (!hasOwn(parent, key)) {
- mergeField(key);
- }
- }
- function mergeField (key) {
- var strat = strats[key] || defaultStrat;
- options[key] = strat(parent[key], child[key], vm, key);
- }
- return options
- }
-
- /**
- * Resolve an asset.
- * This function is used because child instances need access
- * to assets defined in its ancestor chain.
- */
- function resolveAsset (
- options,
- type,
- id,
- warnMissing
- ) {
- /* istanbul ignore if */
- if (typeof id !== 'string') {
- return
- }
- var assets = options[type];
- // check local registration variations first
- if (hasOwn(assets, id)) { return assets[id] }
- var camelizedId = camelize(id);
- if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
- var PascalCaseId = capitalize(camelizedId);
- if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
- // fallback to prototype chain
- var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
- if (false) {
- warn(
- 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
- options
- );
- }
- return res
- }
-
- /* */
+ },
- function validateProp (
- key,
- propOptions,
- propsData,
- vm
- ) {
- var prop = propOptions[key];
- var absent = !hasOwn(propsData, key);
- var value = propsData[key];
- // handle boolean props
- if (isType(Boolean, prop.type)) {
- if (absent && !hasOwn(prop, 'default')) {
- value = false;
- } else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {
- value = true;
- }
- }
- // check default value
- if (value === undefined) {
- value = getPropDefaultValue(vm, prop, key);
- // since the default value is a fresh copy,
- // make sure to observe it.
- var prevShouldConvert = observerState.shouldConvert;
- observerState.shouldConvert = true;
- observe(value);
- observerState.shouldConvert = prevShouldConvert;
- }
- if (false) {
- assertProp(prop, key, value, vm, absent);
- }
- return value
- }
+ methods: {
+ clear: function clear() {
+ if (this.files.length) {
+ var files = this.files;
+ this.files = [];
- /**
- * Get the default value of a prop.
- */
- function getPropDefaultValue (vm, prop, key) {
- // no default, return undefined
- if (!hasOwn(prop, 'default')) {
- return undefined
- }
- var def = prop.default;
- // warn against non-factory defaults for Object & Array
- if (false) {
- warn(
- 'Invalid default value for prop "' + key + '": ' +
- 'Props with type Object/Array must use a factory function ' +
- 'to return the default value.',
- vm
- );
- }
- // the raw prop value was also undefined from previous render,
- // return previous default value to avoid unnecessary watcher trigger
- if (vm && vm.$options.propsData &&
- vm.$options.propsData[key] === undefined &&
- vm._props[key] !== undefined) {
- return vm._props[key]
- }
- // call factory function for non-Function types
- // a value is Function if its prototype is function even across different execution context
- return typeof def === 'function' && getType(prop.type) !== 'Function'
- ? def.call(vm)
- : def
- }
+ this.maps = {};
- /**
- * Assert whether a prop is valid.
- */
- function assertProp (
- prop,
- name,
- value,
- vm,
- absent
- ) {
- if (prop.required && absent) {
- warn(
- 'Missing required prop: "' + name + '"',
- vm
- );
- return
- }
- if (value == null && !prop.required) {
- return
- }
- var type = prop.type;
- var valid = !type || type === true;
- var expectedTypes = [];
- if (type) {
- if (!Array.isArray(type)) {
- type = [type];
- }
- for (var i = 0; i < type.length && !valid; i++) {
- var assertedType = assertType(value, type[i]);
- expectedTypes.push(assertedType.expectedType || '');
- valid = assertedType.valid;
- }
- }
- if (!valid) {
- warn(
- 'Invalid prop: type check failed for prop "' + name + '".' +
- ' Expected ' + expectedTypes.map(capitalize).join(', ') +
- ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',
- vm
- );
- return
- }
- var validator = prop.validator;
- if (validator) {
- if (!validator(value)) {
- warn(
- 'Invalid prop: custom validator check failed for prop "' + name + '".',
- vm
- );
- }
- }
- }
+ this.emitInput();
+ for (var i = 0; i < files.length; i++) {
+ this.emitFile(undefined, files[i]);
+ }
+ }
+ return true;
+ },
+ get: function get(id) {
+ if (!id) {
+ return false;
+ }
- /**
- * Assert the type of a value
- */
- function assertType (value, type) {
- var valid;
- var expectedType = getType(type);
- if (expectedType === 'String') {
- valid = typeof value === (expectedType = 'string');
- } else if (expectedType === 'Number') {
- valid = typeof value === (expectedType = 'number');
- } else if (expectedType === 'Boolean') {
- valid = typeof value === (expectedType = 'boolean');
- } else if (expectedType === 'Function') {
- valid = typeof value === (expectedType = 'function');
- } else if (expectedType === 'Object') {
- valid = isPlainObject(value);
- } else if (expectedType === 'Array') {
- valid = Array.isArray(value);
- } else {
- valid = value instanceof type;
- }
- return {
- valid: valid,
- expectedType: expectedType
- }
- }
+ if ((typeof id === 'undefined' ? 'undefined' : (0, _typeof3.default)(id)) === 'object') {
+ id = id.id;
+ }
- /**
- * Use function string name to check built-in types,
- * because a simple equality check will fail when running
- * across different vms / iframes.
- */
- function getType (fn) {
- var match = fn && fn.toString().match(/^\s*function (\w+)/);
- return match && match[1]
- }
+ return this.maps[id] || false;
+ },
+ add: function add(files, start) {
+ var isArray = files instanceof Array;
- function isType (type, fn) {
- if (!Array.isArray(fn)) {
- return getType(fn) === getType(type)
- }
- for (var i = 0, len = fn.length; i < len; i++) {
- if (getType(fn[i]) === getType(type)) {
- return true
- }
- }
- /* istanbul ignore next */
- return false
- }
+ if (!isArray) {
+ files = [files];
+ }
- function handleError (err, vm, info) {
- if (config.errorHandler) {
- config.errorHandler.call(null, err, vm, info);
- } else {
- if (false) {
- warn(("Error in " + info + ":"), vm);
- }
- /* istanbul ignore else */
- if (inBrowser && typeof console !== 'undefined') {
- console.error(err);
- } else {
- throw err
- }
- }
- }
+ var addFiles = [];
+ for (var i = 0; i < files.length; i++) {
+ var file = files[i];
+ if (this.features.html5 && file instanceof File) {
+ file = {
+ file: file,
+ size: file.size,
+ name: file.webkitRelativePath || file.relativePath || file.name,
+ type: file.type
+ };
+ }
+ file = (0, _extends3.default)({
+ size: -1,
+ name: 'Filename',
+ type: '',
+ active: false,
+ error: '',
+ success: false,
+ putAction: this.putAction,
+ postAction: this.postAction,
+ timeout: this.timeout
+ }, file, {
+ response: {},
+
+ progress: '0.00',
+ speed: 0 });
+
+ file.data = (0, _extends3.default)({}, this.data, file.data ? file.data : {});
+
+ file.headers = (0, _extends3.default)({}, this.headers, file.headers ? file.headers : {});
- /* not type checking this file because flow doesn't play well with Proxy */
+ if (!file.id) {
+ file.id = Math.random().toString(36).substr(2);
+ }
- var initProxy;
+ if (this.emitFilter(file, undefined)) {
+ continue;
+ }
- if (false) {
- var allowedGlobals = makeMap(
- 'Infinity,undefined,NaN,isFinite,isNaN,' +
- 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
- 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
- 'require' // for Webpack/Browserify
- );
-
- var warnNonPresent = function (target, key) {
- warn(
- "Property or method \"" + key + "\" is not defined on the instance but " +
- "referenced during render. Make sure to declare reactive data " +
- "properties in the data option.",
- target
- );
- };
+ addFiles.push(file);
- var hasProxy =
- typeof Proxy !== 'undefined' &&
- Proxy.toString().match(/native code/);
-
- if (hasProxy) {
- var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta');
- config.keyCodes = new Proxy(config.keyCodes, {
- set: function set (target, key, value) {
- if (isBuiltInModifier(key)) {
- warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
- return false
- } else {
- target[key] = value;
- return true
+ if (!this.multiple) {
+ break;
}
}
- });
- }
- var hasHandler = {
- has: function has (target, key) {
- var has = key in target;
- var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
- if (!has && !isAllowed) {
- warnNonPresent(target, key);
+ if (!addFiles.length) {
+ return false;
}
- return has || !isAllowed
- }
- };
- var getHandler = {
- get: function get (target, key) {
- if (typeof key === 'string' && !(key in target)) {
- warnNonPresent(target, key);
+ if (!this.multiple) {
+ this.clear();
}
- return target[key]
- }
- };
-
- initProxy = function initProxy (vm) {
- if (hasProxy) {
- // determine which proxy handler to use
- var options = vm.$options;
- var handlers = options.render && options.render._withStripped
- ? getHandler
- : hasHandler;
- vm._renderProxy = new Proxy(vm, handlers);
- } else {
- vm._renderProxy = vm;
- }
- };
- }
-
- var mark;
- var measure;
-
- if (false) {
- var perf = inBrowser && window.performance;
- /* istanbul ignore if */
- if (
- perf &&
- perf.mark &&
- perf.measure &&
- perf.clearMarks &&
- perf.clearMeasures
- ) {
- mark = function (tag) { return perf.mark(tag); };
- measure = function (name, startTag, endTag) {
- perf.measure(name, startTag, endTag);
- perf.clearMarks(startTag);
- perf.clearMarks(endTag);
- perf.clearMeasures(name);
- };
- }
- }
- /* */
-
- var VNode = function VNode (
- tag,
- data,
- children,
- text,
- elm,
- context,
- componentOptions
- ) {
- this.tag = tag;
- this.data = data;
- this.children = children;
- this.text = text;
- this.elm = elm;
- this.ns = undefined;
- this.context = context;
- this.functionalContext = undefined;
- this.key = data && data.key;
- this.componentOptions = componentOptions;
- this.componentInstance = undefined;
- this.parent = undefined;
- this.raw = false;
- this.isStatic = false;
- this.isRootInsert = true;
- this.isComment = false;
- this.isCloned = false;
- this.isOnce = false;
- };
+ var newFiles = void 0;
+ if (start) {
+ newFiles = addFiles.concat(this.files);
+ } else {
+ newFiles = this.files.concat(addFiles);
+ }
- var prototypeAccessors = { child: {} };
+ this.files = newFiles;
- // DEPRECATED: alias for componentInstance for backwards compat.
- /* istanbul ignore next */
- prototypeAccessors.child.get = function () {
- return this.componentInstance
- };
+ for (var _i = 0; _i < addFiles.length; _i++) {
+ var _file = addFiles[_i];
+ this.maps[_file.id] = _file;
+ }
- Object.defineProperties( VNode.prototype, prototypeAccessors );
+ this.emitInput();
+ for (var _i2 = 0; _i2 < addFiles.length; _i2++) {
+ this.emitFile(addFiles[_i2], undefined);
+ }
- var createEmptyVNode = function () {
- var node = new VNode();
- node.text = '';
- node.isComment = true;
- return node
- };
+ return isArray ? addFiles : addFiles[0];
+ },
+ remove: function remove(file) {
+ file = this.get(file);
+ if (file) {
+ if (this.emitFilter(undefined, file)) {
+ return false;
+ }
+ var files = this.files.concat([]);
+ var index = files.indexOf(file);
+ if (index === -1) {
+ console.error('remove', file);
+ return false;
+ }
+ files.splice(index, 1);
+ this.files = files;
- function createTextVNode (val) {
- return new VNode(undefined, undefined, undefined, String(val))
- }
+ delete this.maps[file.id];
- // optimized shallow clone
- // used for static nodes and slot nodes because they may be reused across
- // multiple renders, cloning them avoids errors when DOM manipulations rely
- // on their elm reference.
- function cloneVNode (vnode) {
- var cloned = new VNode(
- vnode.tag,
- vnode.data,
- vnode.children,
- vnode.text,
- vnode.elm,
- vnode.context,
- vnode.componentOptions
- );
- cloned.ns = vnode.ns;
- cloned.isStatic = vnode.isStatic;
- cloned.key = vnode.key;
- cloned.isCloned = true;
- return cloned
- }
+ this.emitInput();
+ this.emitFile(undefined, file);
+ }
+ return file;
+ },
+ update: function update(file, data) {
+ file = this.get(file);
+ if (file) {
+ var newFile = (0, _extends3.default)({}, file, data);
- function cloneVNodes (vnodes) {
- var len = vnodes.length;
- var res = new Array(len);
- for (var i = 0; i < len; i++) {
- res[i] = cloneVNode(vnodes[i]);
- }
- return res
- }
+ if (file.active && !newFile.active && !newFile.error && !newFile.success) {
+ newFile.error = 'abort';
+ }
- /* */
+ if (this.emitFilter(newFile, file)) {
+ return false;
+ }
- var normalizeEvent = cached(function (name) {
- var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
- name = once$$1 ? name.slice(1) : name;
- var capture = name.charAt(0) === '!';
- name = capture ? name.slice(1) : name;
- return {
- name: name,
- once: once$$1,
- capture: capture
- }
- });
+ var files = this.files.concat([]);
+ var index = files.indexOf(file);
+ if (index === -1) {
+ console.error('update', file);
+ return false;
+ }
+ files.splice(index, 1, newFile);
+ this.files = files;
- function createFnInvoker (fns) {
- function invoker () {
- var arguments$1 = arguments;
+ this.maps[file.id] = newFile;
- var fns = invoker.fns;
- if (Array.isArray(fns)) {
- for (var i = 0; i < fns.length; i++) {
- fns[i].apply(null, arguments$1);
+ this.emitInput();
+ this.emitFile(newFile, file);
+ return newFile;
}
- } else {
- // return handler return value for single handlers
- return fns.apply(null, arguments)
- }
- }
- invoker.fns = fns;
- return invoker
- }
-
- function updateListeners (
- on,
- oldOn,
- add,
- remove$$1,
- vm
- ) {
- var name, cur, old, event;
- for (name in on) {
- cur = on[name];
- old = oldOn[name];
- event = normalizeEvent(name);
- if (!cur) {
- ("production") !== 'production' && warn(
- "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
- vm
- );
- } else if (!old) {
- if (!cur.fns) {
- cur = on[name] = createFnInvoker(cur);
+ return false;
+ },
+ emitFilter: function emitFilter(newFile, oldFile) {
+ var isPrevent = false;
+ this.$emit('input-filter', newFile, oldFile, function () {
+ isPrevent = true;
+ return isPrevent;
+ });
+ return isPrevent;
+ },
+ emitFile: function emitFile(newFile, oldFile) {
+ this.$emit('input-file', newFile, oldFile);
+ if (newFile && newFile.active && (!oldFile || !oldFile.active)) {
+ this.uploading++;
+
+ this.$nextTick(function () {
+ var _this = this;
+
+ setTimeout(function () {
+ _this.upload(newFile).then(function () {
+ newFile = _this.get(newFile);
+ if (newFile) {
+ _this.update(newFile, { active: false, success: !newFile.error });
+ }
+ }).catch(function (e) {
+ _this.update(newFile, { active: false, success: false, error: e.code || e.error || e.message || e });
+ });
+ }, parseInt(Math.random() * 50 + 50));
+ });
+ } else if ((!newFile || !newFile.active) && oldFile && oldFile.active) {
+ this.uploading--;
}
- add(event.name, cur, event.once, event.capture);
- } else if (cur !== old) {
- old.fns = cur;
- on[name] = old;
- }
- }
- for (name in oldOn) {
- if (!on[name]) {
- event = normalizeEvent(name);
- remove$$1(event.name, oldOn[name], event.capture);
- }
- }
- }
- /* */
+ if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {
+ this.watchActive(true);
+ }
+ },
+ emitInput: function emitInput() {
+ this.$emit('input', this.files);
+ },
+ upload: function upload(file) {
+ if (!(file = this.get(file))) {
+ return _promise2.default.reject('not_exists');
+ }
- function mergeVNodeHook (def, hookKey, hook) {
- var invoker;
- var oldHook = def[hookKey];
+ if (file.error) {
+ return _promise2.default.reject(file.error);
+ }
- function wrappedHook () {
- hook.apply(this, arguments);
- // important: remove merged hook to ensure it's called only once
- // and prevent memory leak
- remove(invoker.fns, wrappedHook);
- }
+ if (file.success) {
+ return _promise2.default.resolve(file);
+ }
- if (!oldHook) {
- // no existing hook
- invoker = createFnInvoker([wrappedHook]);
- } else {
- /* istanbul ignore if */
- if (oldHook.fns && oldHook.merged) {
- // already a merged invoker
- invoker = oldHook;
- invoker.fns.push(wrappedHook);
- } else {
- // existing plain hook
- invoker = createFnInvoker([oldHook, wrappedHook]);
- }
- }
-
- invoker.merged = true;
- def[hookKey] = invoker;
- }
-
- /* */
-
- // The template compiler attempts to minimize the need for normalization by
- // statically analyzing the template at compile time.
- //
- // For plain HTML markup, normalization can be completely skipped because the
- // generated render function is guaranteed to return Array. There are
- // two cases where extra normalization is needed:
-
- // 1. When the children contains components - because a functional component
- // may return an Array instead of a single root. In this case, just a simple
- // normalization is needed - if any child is an Array, we flatten the whole
- // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
- // because functional components already normalize their own children.
- function simpleNormalizeChildren (children) {
- for (var i = 0; i < children.length; i++) {
- if (Array.isArray(children[i])) {
- return Array.prototype.concat.apply([], children)
- }
- }
- return children
- }
-
- // 2. When the children contains constructs that always generated nested Arrays,
- // e.g. , , v-for, or when the children is provided by user
- // with hand-written render functions / JSX. In such cases a full normalization
- // is needed to cater to all possible types of children values.
- function normalizeChildren (children) {
- return isPrimitive(children)
- ? [createTextVNode(children)]
- : Array.isArray(children)
- ? normalizeArrayChildren(children)
- : undefined
- }
+ var extensions = this.extensions;
+ if (extensions && (extensions.length || typeof extensions.length == 'undefined')) {
+ if ((typeof extensions === 'undefined' ? 'undefined' : (0, _typeof3.default)(extensions)) != 'object' || !(extensions instanceof RegExp)) {
+ 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');
+ }
+ if (file.name.search(extensions) === -1) {
+ return _promise2.default.reject('extension');
+ }
+ }
- function normalizeArrayChildren (children, nestedIndex) {
- var res = [];
- var i, c, last;
- for (i = 0; i < children.length; i++) {
- c = children[i];
- if (c == null || typeof c === 'boolean') { continue }
- last = res[res.length - 1];
- // nested
- if (Array.isArray(c)) {
- res.push.apply(res, normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i)));
- } else if (isPrimitive(c)) {
- if (last && last.text) {
- last.text += String(c);
- } else if (c !== '') {
- // convert primitive to vnode
- res.push(createTextVNode(c));
+ if (this.size > 0 && file.size >= 0 && file.size > this.size) {
+ return _promise2.default.reject('size');
}
- } else {
- if (c.text && last && last.text) {
- res[res.length - 1] = createTextVNode(last.text + c.text);
+
+ if (this.features.html5 && file.putAction) {
+ return this.uploadPut(file);
+ } else if (this.features.html5) {
+ return this.uploadHtml5(file);
} else {
- // default key for nested array children (likely generated by v-for)
- if (c.tag && c.key == null && nestedIndex != null) {
- c.key = "__vlist" + nestedIndex + "_" + i + "__";
+ return this.uploadHtml4(file);
+ }
+ },
+ uploadPut: function uploadPut(file) {
+ var querys = [];
+ var value = void 0;
+ for (var key in file.data) {
+ value = file.data[key];
+ if (value !== null && value !== undefined) {
+ querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
}
- res.push(c);
}
- }
- }
- return res
- }
+ var queryString = querys.length ? (file.putAction.indexOf('?') == -1 ? '?' : '&') + querys.join('&') : '';
+ var xhr = new XMLHttpRequest();
+ xhr.open('PUT', file.putAction + queryString);
+ return this.uploadXhr(xhr, file, file.file);
+ },
+ uploadHtml5: function uploadHtml5(file) {
+ var form = new window.FormData();
+ var value = void 0;
+ for (var key in file.data) {
+ value = file.data[key];
+ if (value && (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) === 'object' && typeof value.toString !== 'function') {
+ form.append(key, (0, _stringify2.default)(value));
+ } else if (value !== null && value !== undefined) {
+ form.append(key, value);
+ }
+ }
+ form.append(this.name, file.file);
+ var xhr = new XMLHttpRequest();
+ xhr.open('POST', file.postAction);
+ return this.uploadXhr(xhr, file, form);
+ },
+ uploadXhr: function uploadXhr(xhr, file, data) {
+ var _this2 = this;
- /* */
+ var speedTime = 0;
+ var speedLoaded = 0;
- function getFirstComponentChild (children) {
- return children && children.filter(function (c) { return c && c.componentOptions; })[0]
- }
+ xhr.upload.onprogress = function (e) {
+ if (!e.lengthComputable || !(file = _this2.get(file)) || !file.active) {
+ return;
+ }
- /* */
+ var speedTime2 = Math.round(Date.now() / 1000);
+ if (speedTime2 === speedTime) {
+ return;
+ }
+ speedTime = speedTime2;
- function initEvents (vm) {
- vm._events = Object.create(null);
- vm._hasHookEvent = false;
- // init parent attached events
- var listeners = vm.$options._parentListeners;
- if (listeners) {
- updateComponentListeners(vm, listeners);
- }
- }
+ file = _this2.update(file, {
+ progress: (e.loaded / e.total * 100).toFixed(2),
+ speed: e.loaded - speedLoaded
+ });
+ speedLoaded = e.loaded;
+ };
- var target;
+ var interval = setInterval(function () {
+ file = _this2.get(file);
+ if (file && !file.success && !file.error && file.active) {
+ return;
+ }
- function add (event, fn, once$$1) {
- if (once$$1) {
- target.$once(event, fn);
- } else {
- target.$on(event, fn);
- }
- }
+ if (interval) {
+ clearInterval(interval);
+ interval = false;
+ }
- function remove$1 (event, fn) {
- target.$off(event, fn);
- }
+ try {
+ xhr.abort();
+ xhr.timeout = 1;
+ } catch (e) {}
+ }, 100);
- function updateComponentListeners (
- vm,
- listeners,
- oldListeners
- ) {
- target = vm;
- updateListeners(listeners, oldListeners || {}, add, remove$1, vm);
- }
+ return new _promise2.default(function (resolve, reject) {
+ var complete = void 0;
+ var fn = function fn(e) {
+ if (complete) {
+ return;
+ }
+ complete = true;
+ if (interval) {
+ clearInterval(interval);
+ interval = false;
+ }
- function eventsMixin (Vue) {
- var hookRE = /^hook:/;
- Vue.prototype.$on = function (event, fn) {
- var this$1 = this;
+ file = _this2.get(file);
- var vm = this;
- if (Array.isArray(event)) {
- for (var i = 0, l = event.length; i < l; i++) {
- this$1.$on(event[i], fn);
- }
- } else {
- (vm._events[event] || (vm._events[event] = [])).push(fn);
- // optimize hook:event cost by using a boolean flag marked at registration
- // instead of a hash lookup
- if (hookRE.test(event)) {
- vm._hasHookEvent = true;
- }
- }
- return vm
- };
+ if (!file) {
+ return reject('not_exists');
+ }
- Vue.prototype.$once = function (event, fn) {
- var vm = this;
- function on () {
- vm.$off(event, on);
- fn.apply(vm, arguments);
- }
- on.fn = fn;
- vm.$on(event, on);
- return vm
- };
+ if (file.error) {
+ return reject(file.error);
+ }
- Vue.prototype.$off = function (event, fn) {
- var this$1 = this;
+ if (!file.active) {
+ return reject('abort');
+ }
- var vm = this;
- // all
- if (!arguments.length) {
- vm._events = Object.create(null);
- return vm
- }
- // array of events
- if (Array.isArray(event)) {
- for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
- this$1.$off(event[i$1], fn);
- }
- return vm
- }
- // specific event
- var cbs = vm._events[event];
- if (!cbs) {
- return vm
- }
- if (arguments.length === 1) {
- vm._events[event] = null;
- return vm
- }
- // specific handler
- var cb;
- var i = cbs.length;
- while (i--) {
- cb = cbs[i];
- if (cb === fn || cb.fn === fn) {
- cbs.splice(i, 1);
- break
- }
- }
- return vm
- };
+ if (file.success) {
+ return resolve(file);
+ }
- Vue.prototype.$emit = function (event) {
- var vm = this;
- if (false) {
- var lowerCaseEvent = event.toLowerCase();
- if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
- tip(
- "Event \"" + lowerCaseEvent + "\" is emitted in component " +
- (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
- "Note that HTML attributes are case-insensitive and you cannot use " +
- "v-on to listen to camelCase events when using in-DOM templates. " +
- "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
- );
- }
- }
- var cbs = vm._events[event];
- if (cbs) {
- cbs = cbs.length > 1 ? toArray(cbs) : cbs;
- var args = toArray(arguments, 1);
- for (var i = 0, l = cbs.length; i < l; i++) {
- cbs[i].apply(vm, args);
- }
- }
- return vm
- };
- }
+ var data = {};
- /* */
+ switch (e.type) {
+ case 'timeout':
+ case 'abort':
+ data.error = e.type;
+ break;
+ case 'error':
+ if (!xhr.status) {
+ data.error = 'network';
+ } else if (xhr.status >= 500) {
+ data.error = 'server';
+ } else if (xhr.status >= 400) {
+ data.error = 'denied';
+ }
+ break;
+ default:
+ if (xhr.status >= 500) {
+ data.error = 'server';
+ } else if (xhr.status >= 400) {
+ data.error = 'denied';
+ } else {
+ data.progress = '100.00';
+ }
+ }
- /**
- * Runtime helper for resolving raw children VNodes into a slot object.
- */
- function resolveSlots (
- children,
- context
- ) {
- var slots = {};
- if (!children) {
- return slots
- }
- var defaultSlot = [];
- var name, child;
- for (var i = 0, l = children.length; i < l; i++) {
- child = children[i];
- // named slots should only be respected if the vnode was rendered in the
- // same context.
- if ((child.context === context || child.functionalContext === context) &&
- child.data && (name = child.data.slot)) {
- var slot = (slots[name] || (slots[name] = []));
- if (child.tag === 'template') {
- slot.push.apply(slot, child.children);
- } else {
- slot.push(child);
- }
- } else {
- defaultSlot.push(child);
- }
- }
- // ignore whitespace
- if (!defaultSlot.every(isWhitespace)) {
- slots.default = defaultSlot;
- }
- return slots
- }
+ if (xhr.responseText) {
+ var contentType = xhr.getResponseHeader('Content-Type');
+ if (contentType && contentType.indexOf('/json') != -1) {
+ data.response = JSON.parse(xhr.responseText);
+ } else {
+ data.response = xhr.responseText;
+ }
+ }
- function isWhitespace (node) {
- return node.isComment || node.text === ' '
- }
+ file = _this2.update(file, data);
- function resolveScopedSlots (
- fns
- ) {
- var res = {};
- for (var i = 0; i < fns.length; i++) {
- res[fns[i][0]] = fns[i][1];
- }
- return res
- }
+ if (file.error) {
+ return reject(file.error);
+ }
- /* */
+ return resolve(file);
+ };
- var activeInstance = null;
+ xhr.onload = fn;
+ xhr.onerror = fn;
+ xhr.onabort = fn;
+ xhr.ontimeout = fn;
- function initLifecycle (vm) {
- var options = vm.$options;
+ if (file.timeout) {
+ xhr.timeout = file.timeout;
+ }
- // locate first non-abstract parent
- var parent = options.parent;
- if (parent && !options.abstract) {
- while (parent.$options.abstract && parent.$parent) {
- parent = parent.$parent;
- }
- parent.$children.push(vm);
- }
+ for (var key in file.headers) {
+ xhr.setRequestHeader(key, file.headers[key]);
+ }
- vm.$parent = parent;
- vm.$root = parent ? parent.$root : vm;
+ file = _this2.update(file, { xhr: xhr });
- vm.$children = [];
- vm.$refs = {};
+ xhr.send(data);
+ });
+ },
+ uploadHtml4: function uploadHtml4(file) {
+ var _this3 = this;
- vm._watcher = null;
- vm._inactive = null;
- vm._directInactive = false;
- vm._isMounted = false;
- vm._isDestroyed = false;
- vm._isBeingDestroyed = false;
- }
+ var onKeydown = function onKeydown(e) {
+ if (e.keyCode == 27) {
+ e.preventDefault();
+ }
+ };
- function lifecycleMixin (Vue) {
- Vue.prototype._update = function (vnode, hydrating) {
- var vm = this;
- if (vm._isMounted) {
- callHook(vm, 'beforeUpdate');
- }
- var prevEl = vm.$el;
- var prevVnode = vm._vnode;
- var prevActiveInstance = activeInstance;
- activeInstance = vm;
- vm._vnode = vnode;
- // Vue.prototype.__patch__ is injected in entry points
- // based on the rendering backend used.
- if (!prevVnode) {
- // initial render
- vm.$el = vm.__patch__(
- vm.$el, vnode, hydrating, false /* removeOnly */,
- vm.$options._parentElm,
- vm.$options._refElm
- );
- } else {
- // updates
- vm.$el = vm.__patch__(prevVnode, vnode);
- }
- activeInstance = prevActiveInstance;
- // update __vue__ reference
- if (prevEl) {
- prevEl.__vue__ = null;
- }
- if (vm.$el) {
- vm.$el.__vue__ = vm;
- }
- // if parent is an HOC, update its $el as well
- if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
- vm.$parent.$el = vm.$el;
- }
- // updated hook is called by the scheduler to ensure that children are
- // updated in a parent's updated hook.
- };
+ var iframe = document.createElement('iframe');
+ iframe.id = 'upload-iframe-' + file.id;
+ iframe.name = 'upload-iframe-' + file.id;
+ iframe.src = 'about:blank';
+ iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;');
- Vue.prototype.$forceUpdate = function () {
- var vm = this;
- if (vm._watcher) {
- vm._watcher.update();
- }
- };
+ var form = document.createElement('form');
- Vue.prototype.$destroy = function () {
- var vm = this;
- if (vm._isBeingDestroyed) {
- return
- }
- callHook(vm, 'beforeDestroy');
- vm._isBeingDestroyed = true;
- // remove self from parent
- var parent = vm.$parent;
- if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
- remove(parent.$children, vm);
- }
- // teardown watchers
- if (vm._watcher) {
- vm._watcher.teardown();
- }
- var i = vm._watchers.length;
- while (i--) {
- vm._watchers[i].teardown();
- }
- // remove reference from data ob
- // frozen object may not have observer.
- if (vm._data.__ob__) {
- vm._data.__ob__.vmCount--;
- }
- // call the last hook...
- vm._isDestroyed = true;
- // invoke destroy hooks on current rendered tree
- vm.__patch__(vm._vnode, null);
- // fire destroyed hook
- callHook(vm, 'destroyed');
- // turn off all instance listeners.
- vm.$off();
- // remove __vue__ reference
- if (vm.$el) {
- vm.$el.__vue__ = null;
- }
- // remove reference to DOM nodes (prevents leak)
- vm.$options._parentElm = vm.$options._refElm = null;
- };
- }
+ form.action = file.postAction;
- function mountComponent (
- vm,
- el,
- hydrating
- ) {
- vm.$el = el;
- if (!vm.$options.render) {
- vm.$options.render = createEmptyVNode;
- if (false) {
- /* istanbul ignore if */
- if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
- vm.$options.el || el) {
- warn(
- 'You are using the runtime-only build of Vue where the template ' +
- 'compiler is not available. Either pre-compile the templates into ' +
- 'render functions, or use the compiler-included build.',
- vm
- );
- } else {
- warn(
- 'Failed to mount component: template or render function not defined.',
- vm
- );
- }
- }
- }
- callHook(vm, 'beforeMount');
-
- var updateComponent;
- /* istanbul ignore if */
- if (false) {
- updateComponent = function () {
- var name = vm._name;
- var id = vm._uid;
- var startTag = "vue-perf-start:" + id;
- var endTag = "vue-perf-end:" + id;
-
- mark(startTag);
- var vnode = vm._render();
- mark(endTag);
- measure((name + " render"), startTag, endTag);
-
- mark(startTag);
- vm._update(vnode, hydrating);
- mark(endTag);
- measure((name + " patch"), startTag, endTag);
- };
- } else {
- updateComponent = function () {
- vm._update(vm._render(), hydrating);
- };
- }
+ form.name = 'upload-form-' + file.id;
- vm._watcher = new Watcher(vm, updateComponent, noop);
- hydrating = false;
+ form.setAttribute('method', 'POST');
+ form.setAttribute('target', 'upload-iframe-' + file.id);
+ form.setAttribute('enctype', 'multipart/form-data');
- // manually mounted instance, call mounted on self
- // mounted is called for render-created child components in its inserted hook
- if (vm.$vnode == null) {
- vm._isMounted = true;
- callHook(vm, 'mounted');
- }
- return vm
- }
+ var value;
+ var input;
+ for (var key in file.data) {
+ value = file.data[key];
+ if (value && (typeof value === 'undefined' ? 'undefined' : (0, _typeof3.default)(value)) == 'object' && typeof value.toString != 'function') {
+ value = (0, _stringify2.default)(value);
+ }
+ if (value !== null && value !== undefined) {
+ input = document.createElement('input');
+ input.type = 'hidden';
+ input.name = key;
+ form.appendChild(input);
+ }
+ }
+ form.appendChild(file.el);
- function updateChildComponent (
- vm,
- propsData,
- listeners,
- parentVnode,
- renderChildren
- ) {
- // determine whether component has slot children
- // we need to do this before overwriting $options._renderChildren
- var hasChildren = !!(
- renderChildren || // has new static slots
- vm.$options._renderChildren || // has old static slots
- parentVnode.data.scopedSlots || // has new scoped slots
- vm.$scopedSlots !== emptyObject // has old scoped slots
- );
-
- vm.$options._parentVnode = parentVnode;
- vm.$vnode = parentVnode; // update vm's placeholder node without re-render
- if (vm._vnode) { // update child tree's parent
- vm._vnode.parent = parentVnode;
- }
- vm.$options._renderChildren = renderChildren;
+ document.body.appendChild(iframe).appendChild(form);
- // update props
- if (propsData && vm.$options.props) {
- observerState.shouldConvert = false;
- if (false) {
- observerState.isSettingProps = true;
- }
- var props = vm._props;
- var propKeys = vm.$options._propKeys || [];
- for (var i = 0; i < propKeys.length; i++) {
- var key = propKeys[i];
- props[key] = validateProp(key, vm.$options.props, propsData, vm);
- }
- observerState.shouldConvert = true;
- if (false) {
- observerState.isSettingProps = false;
- }
- // keep a copy of raw propsData
- vm.$options.propsData = propsData;
- }
- // update listeners
- if (listeners) {
- var oldListeners = vm.$options._parentListeners;
- vm.$options._parentListeners = listeners;
- updateComponentListeners(vm, listeners, oldListeners);
- }
- // resolve slots + force update if has children
- if (hasChildren) {
- vm.$slots = resolveSlots(renderChildren, parentVnode.context);
- vm.$forceUpdate();
- }
- }
+ var getResponseData = function getResponseData() {
+ var doc = void 0;
+ 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 isInInactiveTree (vm) {
- while (vm && (vm = vm.$parent)) {
- if (vm._inactive) { return true }
- }
- return false
- }
+ return new _promise2.default(function (resolve, reject) {
+ setTimeout(function () {
+ if (!(file = _this3.update(file, { iframe: iframe }))) {
+ return reject('not_exists');
+ }
- function activateChildComponent (vm, direct) {
- if (direct) {
- vm._directInactive = false;
- if (isInInactiveTree(vm)) {
- return
- }
- } else if (vm._directInactive) {
- return
- }
- if (vm._inactive || vm._inactive == null) {
- vm._inactive = false;
- for (var i = 0; i < vm.$children.length; i++) {
- activateChildComponent(vm.$children[i]);
- }
- callHook(vm, 'activated');
- }
- }
+ var interval = setInterval(function () {
+ file = _this3.get(file);
+ if (file && !file.success && !file.error && file.active) {
+ return;
+ }
+ if (interval) {
+ clearInterval(interval);
+ interval = false;
+ }
- function deactivateChildComponent (vm, direct) {
- if (direct) {
- vm._directInactive = true;
- if (isInInactiveTree(vm)) {
- return
- }
- }
- if (!vm._inactive) {
- vm._inactive = true;
- for (var i = 0; i < vm.$children.length; i++) {
- deactivateChildComponent(vm.$children[i]);
- }
- callHook(vm, 'deactivated');
- }
- }
+ if (!file || file.error) {
+ iframe.onabort({ type: file ? 'abort' : 'not_exists' });
+ }
+ }, 100);
- function callHook (vm, hook) {
- var handlers = vm.$options[hook];
- if (handlers) {
- for (var i = 0, j = handlers.length; i < j; i++) {
- try {
- handlers[i].call(vm);
- } catch (e) {
- handleError(e, vm, (hook + " hook"));
- }
- }
- }
- if (vm._hasHookEvent) {
- vm.$emit('hook:' + hook);
- }
- }
+ var complete;
+ var fn = function fn(e) {
+ if (complete) {
+ return;
+ }
+ complete = true;
- /* */
+ if (interval) {
+ clearInterval(interval);
+ interval = false;
+ }
+ document.body.removeEventListener('keydown', onKeydown);
- var queue = [];
- var has = {};
- var circular = {};
- var waiting = false;
- var flushing = false;
- var index = 0;
+ file = _this3.get(file);
- /**
- * Reset the scheduler's state.
- */
- function resetSchedulerState () {
- queue.length = 0;
- has = {};
- if (false) {
- circular = {};
- }
- waiting = flushing = false;
- }
+ if (!file) {
+ return reject('not_exists');
+ }
- /**
- * Flush both queues and run the watchers.
- */
- function flushSchedulerQueue () {
- flushing = true;
- var watcher, id, vm;
-
- // Sort queue before flush.
- // This ensures that:
- // 1. Components are updated from parent to child. (because parent is always
- // created before the child)
- // 2. A component's user watchers are run before its render watcher (because
- // user watchers are created before the render watcher)
- // 3. If a component is destroyed during a parent component's watcher run,
- // its watchers can be skipped.
- queue.sort(function (a, b) { return a.id - b.id; });
-
- // do not cache length because more watchers might be pushed
- // as we run existing watchers
- for (index = 0; index < queue.length; index++) {
- watcher = queue[index];
- id = watcher.id;
- has[id] = null;
- watcher.run();
- // in dev build, check and stop circular updates.
- if (false) {
- circular[id] = (circular[id] || 0) + 1;
- if (circular[id] > config._maxUpdateCount) {
- warn(
- 'You may have an infinite update loop ' + (
- watcher.user
- ? ("in watcher with expression \"" + (watcher.expression) + "\"")
- : "in a component render function."
- ),
- watcher.vm
- );
- break
- }
- }
- }
+ if (file.error) {
+ return reject(file.error);
+ }
- // reset scheduler before updated hook called
- var oldQueue = queue.slice();
- resetSchedulerState();
-
- // call updated hooks
- index = oldQueue.length;
- while (index--) {
- watcher = oldQueue[index];
- vm = watcher.vm;
- if (vm._watcher === watcher && vm._isMounted) {
- callHook(vm, 'updated');
- }
- }
+ if (!file.active) {
+ return reject('abort');
+ }
- // devtool hook
- /* istanbul ignore if */
- if (devtools && config.devtools) {
- devtools.emit('flush');
- }
- }
+ if (file.success) {
+ return resolve(file);
+ }
- /**
- * Push a watcher into the watcher queue.
- * Jobs with duplicate IDs will be skipped unless it's
- * pushed when the queue is being flushed.
- */
- function queueWatcher (watcher) {
- var id = watcher.id;
- if (has[id] == null) {
- has[id] = true;
- if (!flushing) {
- queue.push(watcher);
- } else {
- // if already flushing, splice the watcher based on its id
- // if already past its id, it will be run next immediately.
- var i = queue.length - 1;
- while (i >= 0 && queue[i].id > watcher.id) {
- i--;
- }
- queue.splice(Math.max(i, index) + 1, 0, watcher);
- }
- // queue the flush
- if (!waiting) {
- waiting = true;
- nextTick(flushSchedulerQueue);
- }
- }
- }
+ var response = getResponseData();
+ var data = {};
+ switch (e.type) {
+ case 'abort':
+ data.error = 'abort';
+ break;
+ case 'error':
+ if (file.error) {
+ data.error = file.error;
+ } else if (response === null) {
+ data.error = 'network';
+ } else {
+ data.error = 'denied';
+ }
+ break;
+ default:
+ if (file.error) {
+ data.error = file.error;
+ } else if (data === null) {
+ data.error = 'network';
+ } else {
+ data.progress = '100.00';
+ }
+ }
- /* */
+ if (response !== null) {
+ if (response && response.substr(0, 1) == '{' && response.substr(response.length - 1, 1) == '}') {
+ try {
+ response = JSON.parse(response);
+ } catch (err) {}
+ }
+ data.response = response;
+ }
- var uid$2 = 0;
+ file = _this3.update(file, data);
- /**
- * A watcher parses an expression, collects dependencies,
- * and fires callback when the expression value changes.
- * This is used for both the $watch() api and directives.
- */
- var Watcher = function Watcher (
- vm,
- expOrFn,
- cb,
- options
- ) {
- this.vm = vm;
- vm._watchers.push(this);
- // options
- if (options) {
- this.deep = !!options.deep;
- this.user = !!options.user;
- this.lazy = !!options.lazy;
- this.sync = !!options.sync;
- } else {
- this.deep = this.user = this.lazy = this.sync = false;
- }
- this.cb = cb;
- this.id = ++uid$2; // uid for batching
- this.active = true;
- this.dirty = this.lazy; // for lazy watchers
- this.deps = [];
- this.newDeps = [];
- this.depIds = new _Set();
- this.newDepIds = new _Set();
- this.expression = false
- ? expOrFn.toString()
- : '';
- // parse expression for getter
- if (typeof expOrFn === 'function') {
- this.getter = expOrFn;
- } else {
- this.getter = parsePath(expOrFn);
- if (!this.getter) {
- this.getter = function () {};
- ("production") !== 'production' && warn(
- "Failed watching path: \"" + expOrFn + "\" " +
- 'Watcher only accepts simple dot-delimited paths. ' +
- 'For full control, use a function instead.',
- vm
- );
- }
- }
- this.value = this.lazy
- ? undefined
- : this.get();
- };
+ if (file.error) {
+ return reject(file.error);
+ }
- /**
- * Evaluate the getter, and re-collect dependencies.
- */
- Watcher.prototype.get = function get () {
- pushTarget(this);
- var value;
- var vm = this.vm;
- if (this.user) {
- try {
- value = this.getter.call(vm, vm);
- } catch (e) {
- handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
- }
- } else {
- value = this.getter.call(vm, vm);
- }
- // "touch" every property so they are all tracked as
- // dependencies for deep watching
- if (this.deep) {
- traverse(value);
- }
- popTarget();
- this.cleanupDeps();
- return value
- };
+ return resolve(file);
+ };
- /**
- * Add a dependency to this directive.
- */
- Watcher.prototype.addDep = function addDep (dep) {
- var id = dep.id;
- if (!this.newDepIds.has(id)) {
- this.newDepIds.add(id);
- this.newDeps.push(dep);
- if (!this.depIds.has(id)) {
- dep.addSub(this);
- }
- }
- };
+ iframe.onload = fn;
+ iframe.onerror = fn;
+ iframe.onabort = fn;
- /**
- * Clean up for dependency collection.
- */
- Watcher.prototype.cleanupDeps = function cleanupDeps () {
- var this$1 = this;
-
- var i = this.deps.length;
- while (i--) {
- var dep = this$1.deps[i];
- if (!this$1.newDepIds.has(dep.id)) {
- dep.removeSub(this$1);
- }
- }
- var tmp = this.depIds;
- this.depIds = this.newDepIds;
- this.newDepIds = tmp;
- this.newDepIds.clear();
- tmp = this.deps;
- this.deps = this.newDeps;
- this.newDeps = tmp;
- this.newDeps.length = 0;
- };
+ document.body.addEventListener('keydown', onKeydown);
- /**
- * Subscriber interface.
- * Will be called when a dependency changes.
- */
- Watcher.prototype.update = function update () {
- /* istanbul ignore else */
- if (this.lazy) {
- this.dirty = true;
- } else if (this.sync) {
- this.run();
- } else {
- queueWatcher(this);
- }
- };
+ form.submit();
+ }, 50);
+ }).then(function (res) {
+ iframe.parentNode && iframe.parentNode.removeChild(iframe);
+ return res;
+ }).catch(function (res) {
+ iframe.parentNode && iframe.parentNode.removeChild(iframe);
+ return res;
+ });
+ },
+ watchActive: function watchActive(active) {
+ var file;
+ var index = 0;
+ while (file = this.files[index]) {
+ index++;
+ if (active && !this.destroy) {
+ if (this.uploading >= this.thread || this.uploading && !this.features.html5) {
+ break;
+ }
+ if (!file.active && !file.error && !file.success) {
+ this.update(file, { active: true });
+ }
+ } else {
+ if (file.active) {
+ this.update(file, { active: false });
+ }
+ }
+ }
+ if (this.uploading === 0) {
+ this.active = false;
+ }
+ },
+ watchDrop: function watchDrop(el) {
+ if (!this.features.drop) {
+ return;
+ }
- /**
- * Scheduler job interface.
- * Will be called by the scheduler.
- */
- Watcher.prototype.run = function run () {
- if (this.active) {
- var value = this.get();
- if (
- value !== this.value ||
- // Deep watchers and watchers on Object/Arrays should fire even
- // when the value is the same, because the value may
- // have mutated.
- isObject(value) ||
- this.deep
- ) {
- // set new value
- var oldValue = this.value;
- this.value = value;
- if (this.user) {
+ if (this.dropElement) {
try {
- this.cb.call(this.vm, value, oldValue);
- } catch (e) {
- handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
- }
- } else {
- this.cb.call(this.vm, value, oldValue);
+ 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) {}
}
- }
- }
- };
- /**
- * Evaluate the value of the watcher.
- * This only gets called for lazy watchers.
- */
- Watcher.prototype.evaluate = function evaluate () {
- this.value = this.get();
- this.dirty = false;
- };
+ if (!el) {
+ el = false;
+ } else if (typeof el == 'string') {
+ el = document.querySelector(el) || this.$root.$el.querySelector(el);
+ } else if (el === true) {
+ el = this.$parent.$el;
+ }
- /**
- * Depend on all deps collected by this watcher.
- */
- Watcher.prototype.depend = function depend () {
- var this$1 = this;
+ this.dropElement = el;
- var i = this.deps.length;
- while (i--) {
- this$1.deps[i].depend();
- }
- };
+ if (this.dropElement) {
+ 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);
+ }
+ },
+ addInputFile: function addInputFile(el) {
+ var files = [];
+ if (el.files) {
+ for (var i = 0; i < el.files.length; i++) {
+ var file = el.files[i];
+ files.push({
+ size: file.size,
+ name: file.webkitRelativePath || file.relativePath || file.name,
+ type: file.type,
+ file: file,
+ el: el
+ });
+ }
+ } else {
+ files.push({
+ name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
+ el: el
+ });
+ }
- /**
- * Remove self from all dependencies' subscriber list.
- */
- Watcher.prototype.teardown = function teardown () {
- var this$1 = this;
-
- if (this.active) {
- // remove self from vm's watcher list
- // this is a somewhat expensive operation so we skip it
- // if the vm is being destroyed.
- if (!this.vm._isBeingDestroyed) {
- remove(this.vm._watchers, this);
- }
- var i = this.deps.length;
- while (i--) {
- this$1.deps[i].removeSub(this$1);
- }
- this.active = false;
- }
- };
+ this.add(files);
- /**
- * Recursively traverse an object to evoke all converted
- * getters, so that every nested property inside the object
- * is collected as a "deep" dependency.
- */
- var seenObjects = new _Set();
- function traverse (val) {
- seenObjects.clear();
- _traverse(val, seenObjects);
- }
+ var Component = this.$options.components.InputFile;
- function _traverse (val, seen) {
- var i, keys;
- var isA = Array.isArray(val);
- if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {
- return
- }
- if (val.__ob__) {
- var depId = val.__ob__.dep.id;
- if (seen.has(depId)) {
- return
- }
- seen.add(depId);
- }
- if (isA) {
- i = val.length;
- while (i--) { _traverse(val[i], seen); }
- } else {
- keys = Object.keys(val);
- i = keys.length;
- while (i--) { _traverse(val[keys[i]], seen); }
- }
- }
-
- /* */
-
- var sharedPropertyDefinition = {
- enumerable: true,
- configurable: true,
- get: noop,
- set: noop
- };
+ if (!Component._Ctor) {} else if (typeof Component._Ctor === 'function') {
+ Component = Component._Ctor;
+ } else {
+ Component = Component._Ctor[0];
+ }
- function proxy (target, sourceKey, key) {
- sharedPropertyDefinition.get = function proxyGetter () {
- return this[sourceKey][key]
- };
- sharedPropertyDefinition.set = function proxySetter (val) {
- this[sourceKey][key] = val;
- };
- Object.defineProperty(target, key, sharedPropertyDefinition);
- }
+ var inputFile = new Component({
+ parent: this,
+ el: el
+ });
+ },
+ getEntry: function getEntry(entry) {
+ var _this4 = this;
- function initState (vm) {
- vm._watchers = [];
- var opts = vm.$options;
- if (opts.props) { initProps(vm, opts.props); }
- if (opts.methods) { initMethods(vm, opts.methods); }
- if (opts.data) {
- initData(vm);
- } else {
- observe(vm._data = {}, true /* asRootData */);
- }
- if (opts.computed) { initComputed(vm, opts.computed); }
- if (opts.watch) { initWatch(vm, opts.watch); }
- }
+ var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- var isReservedProp = { key: 1, ref: 1, slot: 1 };
-
- function initProps (vm, propsOptions) {
- var propsData = vm.$options.propsData || {};
- var props = vm._props = {};
- // cache prop keys so that future props updates can iterate using Array
- // instead of dynamic object key enumeration.
- var keys = vm.$options._propKeys = [];
- var isRoot = !vm.$parent;
- // root instance props should be converted
- observerState.shouldConvert = isRoot;
- var loop = function ( key ) {
- keys.push(key);
- var value = validateProp(key, propsOptions, propsData, vm);
- /* istanbul ignore else */
- if (false) {
- if (isReservedProp[key]) {
- warn(
- ("\"" + key + "\" is a reserved attribute and cannot be used as component prop."),
- vm
- );
- }
- defineReactive$$1(props, key, value, function () {
- if (vm.$parent && !observerState.isSettingProps) {
- warn(
- "Avoid mutating a prop directly since the value will be " +
- "overwritten whenever the parent component re-renders. " +
- "Instead, use a data or computed property based on the prop's " +
- "value. Prop being mutated: \"" + key + "\"",
- vm
- );
+ return new _promise2.default(function (resolve, reject) {
+ if (entry.isFile) {
+ entry.file(function (file) {
+ resolve([{
+ size: file.size,
+ name: path + file.name,
+ type: file.type,
+ file: file
+ }]);
+ });
+ } else if (entry.isDirectory && _this4.dropDirectory) {
+ entry.createReader().readEntries(function (entries) {
+ var files = [];
+ var forEach = function forEach(i) {
+ if (!entries[i] || files.length && !_this4.multiple) {
+ return resolve(files);
+ }
+ _this4.getEntry(entries[i], path + entry.name + '/').then(function (results) {
+ files.push.apply(files, (0, _toConsumableArray3.default)(results));
+ forEach(i + 1);
+ });
+ };
+ forEach(0);
+ });
+ } else {
+ resolve([]);
}
});
- } else {
- defineReactive$$1(props, key, value);
- }
- // static props are already proxied on the component's prototype
- // during Vue.extend(). We only need to proxy props defined at
- // instantiation here.
- if (!(key in vm)) {
- proxy(vm, "_props", key);
- }
- };
-
- for (var key in propsOptions) loop( key );
- observerState.shouldConvert = true;
- }
-
- function initData (vm) {
- var data = vm.$options.data;
- data = vm._data = typeof data === 'function'
- ? getData(data, vm)
- : data || {};
- if (!isPlainObject(data)) {
- data = {};
- ("production") !== 'production' && warn(
- 'data functions should return an object:\n' +
- 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
- vm
- );
- }
- // proxy data on instance
- var keys = Object.keys(data);
- var props = vm.$options.props;
- var i = keys.length;
- while (i--) {
- if (props && hasOwn(props, keys[i])) {
- ("production") !== 'production' && warn(
- "The data property \"" + (keys[i]) + "\" is already declared as a prop. " +
- "Use prop default value instead.",
- vm
- );
- } else if (!isReserved(keys[i])) {
- proxy(vm, "_data", keys[i]);
- }
- }
- // observe data
- observe(data, true /* asRootData */);
- }
-
- function getData (data, vm) {
- try {
- return data.call(vm)
- } catch (e) {
- handleError(e, vm, "data()");
- return {}
- }
- }
-
- var computedWatcherOptions = { lazy: true };
-
- function initComputed (vm, computed) {
- var watchers = vm._computedWatchers = Object.create(null);
-
- for (var key in computed) {
- var userDef = computed[key];
- var getter = typeof userDef === 'function' ? userDef : userDef.get;
- if (false) {
- if (getter === undefined) {
- warn(
- ("No getter function has been defined for computed property \"" + key + "\"."),
- vm
- );
- getter = noop;
- }
- }
- // create internal watcher for the computed property.
- watchers[key] = new Watcher(vm, getter, noop, computedWatcherOptions);
-
- // component-defined computed properties are already defined on the
- // component prototype. We only need to define computed properties defined
- // at instantiation here.
- if (!(key in vm)) {
- defineComputed(vm, key, userDef);
- }
- }
- }
-
- function defineComputed (target, key, userDef) {
- if (typeof userDef === 'function') {
- sharedPropertyDefinition.get = createComputedGetter(key);
- sharedPropertyDefinition.set = noop;
- } else {
- sharedPropertyDefinition.get = userDef.get
- ? userDef.cache !== false
- ? createComputedGetter(key)
- : userDef.get
- : noop;
- sharedPropertyDefinition.set = userDef.set
- ? userDef.set
- : noop;
- }
- Object.defineProperty(target, key, sharedPropertyDefinition);
- }
-
- function createComputedGetter (key) {
- return function computedGetter () {
- var watcher = this._computedWatchers && this._computedWatchers[key];
- if (watcher) {
- if (watcher.dirty) {
- watcher.evaluate();
- }
- if (Dep.target) {
- watcher.depend();
- }
- return watcher.value
- }
- }
- }
-
- function initMethods (vm, methods) {
- var props = vm.$options.props;
- for (var key in methods) {
- vm[key] = methods[key] == null ? noop : bind(methods[key], vm);
- if (false) {
- if (methods[key] == null) {
- warn(
- "method \"" + key + "\" has an undefined value in the component definition. " +
- "Did you reference the function correctly?",
- vm
- );
- }
- if (props && hasOwn(props, key)) {
- warn(
- ("method \"" + key + "\" has already been defined as a prop."),
- vm
- );
+ },
+ onDragenter: function onDragenter(e) {
+ e.preventDefault();
+ if (!this.dropActive) {
+ this.dropActive = true;
}
- }
- }
- }
-
- function initWatch (vm, watch) {
- for (var key in watch) {
- var handler = watch[key];
- if (Array.isArray(handler)) {
- for (var i = 0; i < handler.length; i++) {
- createWatcher(vm, key, handler[i]);
+ },
+ onDragleave: function onDragleave(e) {
+ e.preventDefault();
+ if (e.target.nodeName === 'HTML' || e.screenX == 0 && e.screenY == 0 && e.screenY == 0 && !e.fromElement && e.offsetX < 0) {
+ this.dropActive = false;
}
- } else {
- createWatcher(vm, key, handler);
- }
- }
- }
-
- function createWatcher (vm, key, handler) {
- var options;
- if (isPlainObject(handler)) {
- options = handler;
- handler = handler.handler;
- }
- if (typeof handler === 'string') {
- handler = vm[handler];
- }
- vm.$watch(key, handler, options);
- }
-
- function stateMixin (Vue) {
- // flow somehow has problems with directly declared definition object
- // when using Object.defineProperty, so we have to procedurally build up
- // the object here.
- var dataDef = {};
- dataDef.get = function () { return this._data };
- var propsDef = {};
- propsDef.get = function () { return this._props };
- if (false) {
- dataDef.set = function (newData) {
- warn(
- 'Avoid replacing instance root $data. ' +
- 'Use nested data properties instead.',
- this
- );
- };
- propsDef.set = function () {
- warn("$props is readonly.", this);
- };
- }
- Object.defineProperty(Vue.prototype, '$data', dataDef);
- Object.defineProperty(Vue.prototype, '$props', propsDef);
-
- Vue.prototype.$set = set;
- Vue.prototype.$delete = del;
-
- Vue.prototype.$watch = function (
- expOrFn,
- cb,
- options
- ) {
- var vm = this;
- options = options || {};
- options.user = true;
- var watcher = new Watcher(vm, expOrFn, cb, options);
- if (options.immediate) {
- cb.call(vm, watcher.value);
- }
- return function unwatchFn () {
- watcher.teardown();
- }
- };
- }
+ },
+ onDragover: function onDragover(e) {
+ e.preventDefault();
+ },
+ onDrop: function onDrop(e) {
+ var _this5 = this;
- /* */
-
- // hooks to be invoked on component VNodes during patch
- var componentVNodeHooks = {
- init: function init (
- vnode,
- hydrating,
- parentElm,
- refElm
- ) {
- if (!vnode.componentInstance || vnode.componentInstance._isDestroyed) {
- var child = vnode.componentInstance = createComponentInstanceForVnode(
- vnode,
- activeInstance,
- parentElm,
- refElm
- );
- child.$mount(hydrating ? vnode.elm : undefined, hydrating);
- } else if (vnode.data.keepAlive) {
- // kept-alive components, treat as a patch
- var mountedNode = vnode; // work around flow
- componentVNodeHooks.prepatch(mountedNode, mountedNode);
- }
- },
+ e.preventDefault();
+ this.dropActive = false;
+ var dataTransfer = e.dataTransfer;
+ var files = [];
- prepatch: function prepatch (oldVnode, vnode) {
- var options = vnode.componentOptions;
- var child = vnode.componentInstance = oldVnode.componentInstance;
- updateChildComponent(
- child,
- options.propsData, // updated props
- options.listeners, // updated listeners
- vnode, // new parent vnode
- options.children // new children
- );
- },
+ if (dataTransfer.items && dataTransfer.items.length) {
+ var items = [];
+ for (var i = 0; i < dataTransfer.items.length; i++) {
+ var item = dataTransfer.items[i];
+ if (item.getAsEntry) {
+ item = item.getAsEntry();
+ } else if (item.webkitGetAsEntry) {
+ item = item.webkitGetAsEntry();
+ } else {
+ item = item.getAsFile();
+ }
+ items.push(item);
+ }
- insert: function insert (vnode) {
- if (!vnode.componentInstance._isMounted) {
- vnode.componentInstance._isMounted = true;
- callHook(vnode.componentInstance, 'mounted');
- }
- if (vnode.data.keepAlive) {
- activateChildComponent(vnode.componentInstance, true /* direct */);
- }
- },
+ var forEach = function forEach(i) {
+ var item = items[i];
- destroy: function destroy (vnode) {
- if (!vnode.componentInstance._isDestroyed) {
- if (!vnode.data.keepAlive) {
- vnode.componentInstance.$destroy();
- } else {
- deactivateChildComponent(vnode.componentInstance, true /* direct */);
+ if (!item || !_this5.multiple && files.length) {
+ return _this5.add(files);
+ }
+ _this5.getEntry(item).then(function (results) {
+ files.push.apply(files, (0, _toConsumableArray3.default)(results));
+ forEach(i + 1);
+ });
+ };
+ forEach(0);
+ } else if (dataTransfer.files.length) {
+ for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {
+ files.push(dataTransfer.files[_i3]);
+ if (!this.multiple) {
+ break;
+ }
+ }
+ this.add(files);
}
}
}
};
+
+/***/ }),
+/* 61 */
+/***/ (function(module, exports) {
+
+ "use strict";
- var hooksToMerge = Object.keys(componentVNodeHooks);
-
- function createComponent (
- Ctor,
- data,
- context,
- children,
- tag
- ) {
- if (!Ctor) {
- return
- }
-
- var baseCtor = context.$options._base;
- if (isObject(Ctor)) {
- Ctor = baseCtor.extend(Ctor);
- }
-
- if (typeof Ctor !== 'function') {
- if (false) {
- warn(("Invalid Component definition: " + (String(Ctor))), context);
- }
- return
- }
-
- // async component
- if (!Ctor.cid) {
- if (Ctor.resolved) {
- Ctor = Ctor.resolved;
- } else {
- Ctor = resolveAsyncComponent(Ctor, baseCtor, function () {
- // it's ok to queue this on every render because
- // $forceUpdate is buffered by the scheduler.
- context.$forceUpdate();
- });
- if (!Ctor) {
- // return nothing if this is indeed an async component
- // wait for the callback to trigger parent update.
- return
- }
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.default = {
+ methods: {
+ change: function change(e) {
+ this.$destroy();
+ this.$parent.addInputFile(e.target);
}
}
+ };
+
+/***/ }),
+/* 62 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
- // resolve constructor options in case global mixins are applied after
- // component constructor creation
- resolveConstructorOptions(Ctor);
-
- data = data || {};
-
- // transform component v-model data into props & events
- if (data.model) {
- transformModel(Ctor.options, data);
- }
-
- // extract props
- var propsData = extractProps(data, Ctor, tag);
+ module.exports = __webpack_require__(110);
+
+/***/ }),
+/* 63 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ module.exports = { "default": __webpack_require__(71), __esModule: true };
+
+/***/ }),
+/* 64 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ module.exports = { "default": __webpack_require__(72), __esModule: true };
+
+/***/ }),
+/* 65 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ module.exports = { "default": __webpack_require__(73), __esModule: true };
+
+/***/ }),
+/* 66 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ module.exports = { "default": __webpack_require__(74), __esModule: true };
+
+/***/ }),
+/* 67 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ module.exports = { "default": __webpack_require__(75), __esModule: true };
+
+/***/ }),
+/* 68 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ module.exports = { "default": __webpack_require__(76), __esModule: true };
+
+/***/ }),
+/* 69 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
- // functional component
- if (Ctor.options.functional) {
- return createFunctionalComponent(Ctor, propsData, data, context, children)
- }
+ exports.__esModule = true;
- // extract listeners, since these needs to be treated as
- // child component listeners instead of DOM listeners
- var listeners = data.on;
- // replace with listeners with .native modifier
- data.on = data.nativeOn;
+ var _from = __webpack_require__(63);
- if (Ctor.options.abstract) {
- // abstract components do not keep anything
- // other than props & listeners
- data = {};
- }
+ var _from2 = _interopRequireDefault(_from);
- // merge component management hooks onto the placeholder node
- mergeHooks(data);
-
- // return a placeholder vnode
- var name = Ctor.options.name || tag;
- var vnode = new VNode(
- ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
- data, undefined, undefined, undefined, context,
- { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }
- );
- return vnode
- }
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function createFunctionalComponent (
- Ctor,
- propsData,
- data,
- context,
- children
- ) {
- var props = {};
- var propOptions = Ctor.options.props;
- if (propOptions) {
- for (var key in propOptions) {
- props[key] = validateProp(key, propOptions, propsData);
+ exports.default = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
}
- }
- // ensure the createElement function in functional components
- // gets a unique context - this is necessary for correct named slot check
- var _context = Object.create(context);
- var h = function (a, b, c, d) { return createElement(_context, a, b, c, d, true); };
- var vnode = Ctor.options.render.call(null, h, {
- props: props,
- data: data,
- parent: context,
- children: children,
- slots: function () { return resolveSlots(children, context); }
- });
- if (vnode instanceof VNode) {
- vnode.functionalContext = context;
- if (data.slot) {
- (vnode.data || (vnode.data = {})).slot = data.slot;
- }
- }
- return vnode
- }
-
- function createComponentInstanceForVnode (
- vnode, // we know it's MountedComponentVNode but flow doesn't
- parent, // activeInstance in lifecycle state
- parentElm,
- refElm
- ) {
- var vnodeComponentOptions = vnode.componentOptions;
- var options = {
- _isComponent: true,
- parent: parent,
- propsData: vnodeComponentOptions.propsData,
- _componentTag: vnodeComponentOptions.tag,
- _parentVnode: vnode,
- _parentListeners: vnodeComponentOptions.listeners,
- _renderChildren: vnodeComponentOptions.children,
- _parentElm: parentElm || null,
- _refElm: refElm || null
- };
- // check inline-template render functions
- var inlineTemplate = vnode.data.inlineTemplate;
- if (inlineTemplate) {
- options.render = inlineTemplate.render;
- options.staticRenderFns = inlineTemplate.staticRenderFns;
- }
- return new vnodeComponentOptions.Ctor(options)
- }
- function resolveAsyncComponent (
- factory,
- baseCtor,
- cb
- ) {
- if (factory.requested) {
- // pool callbacks
- factory.pendingCallbacks.push(cb);
+ return arr2;
} else {
- factory.requested = true;
- var cbs = factory.pendingCallbacks = [cb];
- var sync = true;
-
- var resolve = function (res) {
- if (isObject(res)) {
- res = baseCtor.extend(res);
- }
- // cache resolved
- factory.resolved = res;
- // invoke callbacks only if this is not a synchronous resolve
- // (async resolves are shimmed as synchronous during SSR)
- if (!sync) {
- for (var i = 0, l = cbs.length; i < l; i++) {
- cbs[i](res);
- }
- }
- };
-
- var reject = function (reason) {
- ("production") !== 'production' && warn(
- "Failed to resolve async component: " + (String(factory)) +
- (reason ? ("\nReason: " + reason) : '')
- );
- };
+ return (0, _from2.default)(arr);
+ }
+ };
+
+/***/ }),
+/* 70 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
- var res = factory(resolve, reject);
+ exports.__esModule = true;
- // handle promise
- if (res && typeof res.then === 'function' && !factory.resolved) {
- res.then(resolve, reject);
- }
+ var _iterator = __webpack_require__(68);
- sync = false;
- // return in case resolved synchronously
- return factory.resolved
- }
- }
+ var _iterator2 = _interopRequireDefault(_iterator);
- function extractProps (data, Ctor, tag) {
- // we are only extracting raw values here.
- // validation and default values are handled in the child
- // component itself.
- var propOptions = Ctor.options.props;
- if (!propOptions) {
- return
- }
- var res = {};
- var attrs = data.attrs;
- var props = data.props;
- var domProps = data.domProps;
- if (attrs || props || domProps) {
- for (var key in propOptions) {
- var altKey = hyphenate(key);
- if (false) {
- var keyInLowerCase = key.toLowerCase();
- if (
- key !== keyInLowerCase &&
- attrs && attrs.hasOwnProperty(keyInLowerCase)
- ) {
- tip(
- "Prop \"" + keyInLowerCase + "\" is passed to component " +
- (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
- " \"" + key + "\". " +
- "Note that HTML attributes are case-insensitive and camelCased " +
- "props need to use their kebab-case equivalents when using in-DOM " +
- "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
- );
- }
- }
- checkProp(res, props, key, altKey, true) ||
- checkProp(res, attrs, key, altKey) ||
- checkProp(res, domProps, key, altKey);
- }
- }
- return res
- }
+ var _symbol = __webpack_require__(67);
- function checkProp (
- res,
- hash,
- key,
- altKey,
- preserve
- ) {
- if (hash) {
- if (hasOwn(hash, key)) {
- res[key] = hash[key];
- if (!preserve) {
- delete hash[key];
- }
- return true
- } else if (hasOwn(hash, altKey)) {
- res[key] = hash[altKey];
- if (!preserve) {
- delete hash[altKey];
- }
- return true
- }
- }
- return false
- }
+ var _symbol2 = _interopRequireDefault(_symbol);
- function mergeHooks (data) {
- if (!data.hook) {
- data.hook = {};
- }
- for (var i = 0; i < hooksToMerge.length; i++) {
- var key = hooksToMerge[i];
- var fromParent = data.hook[key];
- var ours = componentVNodeHooks[key];
- data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;
- }
- }
+ var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };
- function mergeHook$1 (one, two) {
- return function (a, b, c, d) {
- one(a, b, c, d);
- two(a, b, c, d);
- }
- }
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- // transform component v-model info (value and callback) into
- // prop and event handler respectively.
- function transformModel (options, data) {
- var prop = (options.model && options.model.prop) || 'value';
- var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;
- var on = data.on || (data.on = {});
- if (on[event]) {
- on[event] = [data.model.callback].concat(on[event]);
- } else {
- on[event] = data.model.callback;
- }
- }
-
- /* */
-
- var SIMPLE_NORMALIZE = 1;
- var ALWAYS_NORMALIZE = 2;
-
- // wrapper function for providing a more flexible interface
- // without getting yelled at by flow
- function createElement (
- context,
- tag,
- data,
- children,
- normalizationType,
- alwaysNormalize
- ) {
- if (Array.isArray(data) || isPrimitive(data)) {
- normalizationType = children;
- children = data;
- data = undefined;
- }
- if (alwaysNormalize) { normalizationType = ALWAYS_NORMALIZE; }
- return _createElement(context, tag, data, children, normalizationType)
- }
-
- function _createElement (
- context,
- tag,
- data,
- children,
- normalizationType
- ) {
- if (data && data.__ob__) {
- ("production") !== 'production' && warn(
- "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
- 'Always create fresh vnode data objects in each render!',
- context
- );
- return createEmptyVNode()
- }
- if (!tag) {
- // in case of component :is set to falsy value
- return createEmptyVNode()
- }
- // support single function children as default scoped slot
- if (Array.isArray(children) &&
- typeof children[0] === 'function') {
- data = data || {};
- data.scopedSlots = { default: children[0] };
- children.length = 0;
- }
- if (normalizationType === ALWAYS_NORMALIZE) {
- children = normalizeChildren(children);
- } else if (normalizationType === SIMPLE_NORMALIZE) {
- children = simpleNormalizeChildren(children);
- }
- var vnode, ns;
- if (typeof tag === 'string') {
- var Ctor;
- ns = config.getTagNamespace(tag);
- if (config.isReservedTag(tag)) {
- // platform built-in elements
- vnode = new VNode(
- config.parsePlatformTagName(tag), data, children,
- undefined, undefined, context
- );
- } else if ((Ctor = resolveAsset(context.$options, 'components', tag))) {
- // component
- vnode = createComponent(Ctor, data, context, children, tag);
- } else {
- // unknown or unlisted namespaced elements
- // check at runtime because it may get assigned a namespace when its
- // parent normalizes children
- vnode = new VNode(
- tag, data, children,
- undefined, undefined, context
- );
- }
- } else {
- // direct component options / constructor
- vnode = createComponent(tag, data, context, children);
- }
- if (vnode) {
- if (ns) { applyNS(vnode, ns); }
- return vnode
- } else {
- return createEmptyVNode()
- }
- }
-
- function applyNS (vnode, ns) {
- vnode.ns = ns;
- if (vnode.tag === 'foreignObject') {
- // use default namespace inside foreignObject
- return
- }
- if (vnode.children) {
- for (var i = 0, l = vnode.children.length; i < l; i++) {
- var child = vnode.children[i];
- if (child.tag && !child.ns) {
- applyNS(child, ns);
- }
- }
- }
- }
-
- /* */
-
- /**
- * Runtime helper for rendering v-for lists.
- */
- function renderList (
- val,
- render
- ) {
- var ret, i, l, keys, key;
- if (Array.isArray(val) || typeof val === 'string') {
- ret = new Array(val.length);
- for (i = 0, l = val.length; i < l; i++) {
- ret[i] = render(val[i], i);
- }
- } else if (typeof val === 'number') {
- ret = new Array(val);
- for (i = 0; i < val; i++) {
- ret[i] = render(i + 1, i);
- }
- } else if (isObject(val)) {
- keys = Object.keys(val);
- ret = new Array(keys.length);
- for (i = 0, l = keys.length; i < l; i++) {
- key = keys[i];
- ret[i] = render(val[key], key, i);
- }
- }
- return ret
- }
-
- /* */
-
- /**
- * Runtime helper for rendering
- */
- function renderSlot (
- name,
- fallback,
- props,
- bindObject
- ) {
- var scopedSlotFn = this.$scopedSlots[name];
- if (scopedSlotFn) { // scoped slot
- props = props || {};
- if (bindObject) {
- extend(props, bindObject);
- }
- return scopedSlotFn(props) || fallback
- } else {
- var slotNodes = this.$slots[name];
- // warn duplicate slot usage
- if (slotNodes && ("production") !== 'production') {
- slotNodes._rendered && warn(
- "Duplicate presence of slot \"" + name + "\" found in the same render tree " +
- "- this will likely cause render errors.",
- this
- );
- slotNodes._rendered = true;
- }
- return slotNodes || fallback
- }
- }
-
- /* */
-
- /**
- * Runtime helper for resolving filters
- */
- function resolveFilter (id) {
- return resolveAsset(this.$options, 'filters', id, true) || identity
- }
-
- /* */
-
- /**
- * Runtime helper for checking keyCodes from config.
- */
- function checkKeyCodes (
- eventKeyCode,
- key,
- builtInAlias
- ) {
- var keyCodes = config.keyCodes[key] || builtInAlias;
- if (Array.isArray(keyCodes)) {
- return keyCodes.indexOf(eventKeyCode) === -1
- } else {
- return keyCodes !== eventKeyCode
- }
- }
-
- /* */
-
- /**
- * Runtime helper for merging v-bind="object" into a VNode's data.
- */
- function bindObjectProps (
- data,
- tag,
- value,
- asProp
- ) {
- if (value) {
- if (!isObject(value)) {
- ("production") !== 'production' && warn(
- 'v-bind without argument expects an Object or Array value',
- this
- );
- } else {
- if (Array.isArray(value)) {
- value = toObject(value);
- }
- var hash;
- for (var key in value) {
- if (key === 'class' || key === 'style') {
- hash = data;
- } else {
- var type = data.attrs && data.attrs.type;
- hash = asProp || config.mustUseProp(tag, type, key)
- ? data.domProps || (data.domProps = {})
- : data.attrs || (data.attrs = {});
- }
- if (!(key in hash)) {
- hash[key] = value[key];
- }
- }
- }
- }
- return data
- }
-
- /* */
+ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
+ return typeof obj === "undefined" ? "undefined" : _typeof(obj);
+ } : function (obj) {
+ return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
+ };
+
+/***/ }),
+/* 71 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ __webpack_require__(35);
+ __webpack_require__(100);
+ module.exports = __webpack_require__(3).Array.from;
+
+/***/ }),
+/* 72 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var core = __webpack_require__(3)
+ , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+ module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+ return $JSON.stringify.apply($JSON, arguments);
+ };
+
+/***/ }),
+/* 73 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ __webpack_require__(102);
+ module.exports = __webpack_require__(3).Object.assign;
+
+/***/ }),
+/* 74 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ __webpack_require__(52);
+ __webpack_require__(35);
+ __webpack_require__(53);
+ __webpack_require__(103);
+ module.exports = __webpack_require__(3).Promise;
+
+/***/ }),
+/* 75 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ __webpack_require__(104);
+ __webpack_require__(52);
+ __webpack_require__(105);
+ __webpack_require__(106);
+ module.exports = __webpack_require__(3).Symbol;
+
+/***/ }),
+/* 76 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ __webpack_require__(35);
+ __webpack_require__(53);
+ module.exports = __webpack_require__(34).f('iterator');
+
+/***/ }),
+/* 77 */
+/***/ (function(module, exports) {
+
+ module.exports = function(){ /* empty */ };
+
+/***/ }),
+/* 78 */
+/***/ (function(module, exports) {
+
+ module.exports = function(it, Constructor, name, forbiddenField){
+ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+ };
+
+/***/ }),
+/* 79 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // false -> Array#indexOf
+ // true -> Array#includes
+ var toIObject = __webpack_require__(9)
+ , toLength = __webpack_require__(30)
+ , toIndex = __webpack_require__(99);
+ module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index || 0;
+ } return !IS_INCLUDES && -1;
+ };
+ };
+
+/***/ }),
+/* 80 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $defineProperty = __webpack_require__(4)
+ , createDesc = __webpack_require__(17);
- /**
- * Runtime helper for rendering static trees.
- */
- function renderStatic (
- index,
- isInFor
- ) {
- var tree = this._staticTrees[index];
- // if has already-rendered static tree and not inside v-for,
- // we can reuse the same tree by doing a shallow clone.
- if (tree && !isInFor) {
- return Array.isArray(tree)
- ? cloneVNodes(tree)
- : cloneVNode(tree)
+ module.exports = function(object, index, value){
+ if(index in object)$defineProperty.f(object, index, createDesc(0, value));
+ else object[index] = value;
+ };
+
+/***/ }),
+/* 81 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // all enumerable object keys, includes symbols
+ var getKeys = __webpack_require__(16)
+ , gOPS = __webpack_require__(26)
+ , pIE = __webpack_require__(19);
+ module.exports = function(it){
+ var result = getKeys(it)
+ , getSymbols = gOPS.f;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = pIE.f
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
+ } return result;
+ };
+
+/***/ }),
+/* 82 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(11)
+ , call = __webpack_require__(43)
+ , isArrayIter = __webpack_require__(42)
+ , anObject = __webpack_require__(5)
+ , toLength = __webpack_require__(30)
+ , getIterFn = __webpack_require__(51)
+ , BREAK = {}
+ , RETURN = {};
+ var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){
+ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator, result;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ if(result === BREAK || result === RETURN)return result;
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ result = call(iterator, f, step.value, entries);
+ if(result === BREAK || result === RETURN)return result;
}
- // otherwise, render a fresh tree.
- tree = this._staticTrees[index] =
- this.$options.staticRenderFns[index].call(this._renderProxy);
- markStatic(tree, ("__static__" + index), false);
- return tree
- }
+ };
+ exports.BREAK = BREAK;
+ exports.RETURN = RETURN;
+
+/***/ }),
+/* 83 */
+/***/ (function(module, exports) {
+
+ // fast apply, http://jsperf.lnkit.com/fast-apply/5
+ module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+ };
+
+/***/ }),
+/* 84 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // 7.2.2 IsArray(argument)
+ var cof = __webpack_require__(10);
+ module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+ };
+
+/***/ }),
+/* 85 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var create = __webpack_require__(46)
+ , descriptor = __webpack_require__(17)
+ , setToStringTag = __webpack_require__(20)
+ , IteratorPrototype = {};
- /**
- * Runtime helper for v-once.
- * Effectively it means marking the node as static with a unique key.
- */
- function markOnce (
- tree,
- index,
- key
- ) {
- markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
- return tree
- }
+ // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+ __webpack_require__(8)(IteratorPrototype, __webpack_require__(1)('iterator'), function(){ return this; });
- function markStatic (
- tree,
- key,
- isOnce
- ) {
- if (Array.isArray(tree)) {
- for (var i = 0; i < tree.length; i++) {
- if (tree[i] && typeof tree[i] !== 'string') {
- markStaticNode(tree[i], (key + "_" + i), isOnce);
- }
- }
- } else {
- markStaticNode(tree, key, isOnce);
- }
- }
-
- function markStaticNode (node, key, isOnce) {
- node.isStatic = true;
- node.key = key;
- node.isOnce = isOnce;
- }
-
- /* */
-
- function initRender (vm) {
- vm.$vnode = null; // the placeholder node in parent tree
- vm._vnode = null; // the root of the child tree
- vm._staticTrees = null;
- var parentVnode = vm.$options._parentVnode;
- var renderContext = parentVnode && parentVnode.context;
- vm.$slots = resolveSlots(vm.$options._renderChildren, renderContext);
- vm.$scopedSlots = emptyObject;
- // bind the createElement fn to this instance
- // so that we get proper render context inside it.
- // args order: tag, data, children, normalizationType, alwaysNormalize
- // internal version is used by render functions compiled from templates
- vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
- // normalization is always applied for the public version, used in
- // user-written render functions.
- vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
- }
-
- function renderMixin (Vue) {
- Vue.prototype.$nextTick = function (fn) {
- return nextTick(fn, this)
- };
-
- Vue.prototype._render = function () {
- var vm = this;
- var ref = vm.$options;
- var render = ref.render;
- var staticRenderFns = ref.staticRenderFns;
- var _parentVnode = ref._parentVnode;
-
- if (vm._isMounted) {
- // clone slot nodes on re-renders
- for (var key in vm.$slots) {
- vm.$slots[key] = cloneVNodes(vm.$slots[key]);
- }
- }
+ module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+ };
+
+/***/ }),
+/* 86 */
+/***/ (function(module, exports) {
+
+ module.exports = function(done, value){
+ return {value: value, done: !!done};
+ };
+
+/***/ }),
+/* 87 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(16)
+ , toIObject = __webpack_require__(9);
+ module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+ };
+
+/***/ }),
+/* 88 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var META = __webpack_require__(21)('meta')
+ , isObject = __webpack_require__(14)
+ , has = __webpack_require__(7)
+ , setDesc = __webpack_require__(4).f
+ , id = 0;
+ var isExtensible = Object.isExtensible || function(){
+ return true;
+ };
+ var FREEZE = !__webpack_require__(13)(function(){
+ return isExtensible(Object.preventExtensions({}));
+ });
+ var setMeta = function(it){
+ setDesc(it, META, {value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ }});
+ };
+ var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add metadata
+ if(!create)return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+ };
+ var getWeak = function(it, create){
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return true;
+ // not necessary to add metadata
+ if(!create)return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+ };
+ // add metadata on freeze-family methods calling
+ var onFreeze = function(it){
+ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
+ return it;
+ };
+ var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+ };
+
+/***/ }),
+/* 89 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , macrotask = __webpack_require__(50).set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = __webpack_require__(10)(process) == 'process';
- vm.$scopedSlots = (_parentVnode && _parentVnode.data.scopedSlots) || emptyObject;
+ module.exports = function(){
+ var head, last, notify;
- if (staticRenderFns && !vm._staticTrees) {
- vm._staticTrees = [];
- }
- // set parent vnode. this allows render functions to have access
- // to the data on the placeholder node.
- vm.$vnode = _parentVnode;
- // render self
- var vnode;
- try {
- vnode = render.call(vm._renderProxy, vm.$createElement);
- } catch (e) {
- handleError(e, vm, "render function");
- // return error render result,
- // or previous vnode to prevent render error causing blank component
- /* istanbul ignore else */
- if (false) {
- vnode = vm.$options.renderError
- ? vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e)
- : vm._vnode;
- } else {
- vnode = vm._vnode;
- }
- }
- // return empty vnode in case the render function errored out
- if (!(vnode instanceof VNode)) {
- if (false) {
- warn(
- 'Multiple root nodes returned from render function. Render function ' +
- 'should return a single root node.',
- vm
- );
+ var flush = function(){
+ var parent, fn;
+ if(isNode && (parent = process.domain))parent.exit();
+ while(head){
+ fn = head.fn;
+ head = head.next;
+ try {
+ fn();
+ } catch(e){
+ if(head)notify();
+ else last = undefined;
+ throw e;
}
- vnode = createEmptyVNode();
- }
- // set parent
- vnode.parent = _parentVnode;
- return vnode
+ } last = undefined;
+ if(parent)parent.enter();
};
- // internal render helpers.
- // these are exposed on the instance prototype to reduce generated render
- // code size.
- Vue.prototype._o = markOnce;
- Vue.prototype._n = toNumber;
- Vue.prototype._s = _toString;
- Vue.prototype._l = renderList;
- Vue.prototype._t = renderSlot;
- Vue.prototype._q = looseEqual;
- Vue.prototype._i = looseIndexOf;
- Vue.prototype._m = renderStatic;
- Vue.prototype._f = resolveFilter;
- Vue.prototype._k = checkKeyCodes;
- Vue.prototype._b = bindObjectProps;
- Vue.prototype._v = createTextVNode;
- Vue.prototype._e = createEmptyVNode;
- Vue.prototype._u = resolveScopedSlots;
- }
-
- /* */
-
- function initProvide (vm) {
- var provide = vm.$options.provide;
- if (provide) {
- vm._provided = typeof provide === 'function'
- ? provide.call(vm)
- : provide;
- }
- }
-
- function initInjections (vm) {
- var inject = vm.$options.inject;
- if (inject) {
- // inject is :any because flow is not smart enough to figure out cached
- // isArray here
- var isArray = Array.isArray(inject);
- var keys = isArray
- ? inject
- : hasSymbol
- ? Reflect.ownKeys(inject)
- : Object.keys(inject);
-
- var loop = function ( i ) {
- var key = keys[i];
- var provideKey = isArray ? key : inject[key];
- var source = vm;
- while (source) {
- if (source._provided && provideKey in source._provided) {
- /* istanbul ignore else */
- if (false) {
- defineReactive$$1(vm, key, source._provided[provideKey], function () {
- warn(
- "Avoid mutating an injected value directly since the changes will be " +
- "overwritten whenever the provided component re-renders. " +
- "injection being mutated: \"" + key + "\"",
- vm
- );
- });
- } else {
- defineReactive$$1(vm, key, source._provided[provideKey]);
- }
- break
- }
- source = source.$parent;
- }
+ // Node.js
+ if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+ // browsers with MutationObserver
+ } else if(Observer){
+ var toggle = true
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = !toggle;
+ };
+ // environments with maybe non-completely correct, but existent Promise
+ } else if(Promise && Promise.resolve){
+ var promise = Promise.resolve();
+ notify = function(){
+ promise.then(flush);
+ };
+ // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+ } else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
};
-
- for (var i = 0; i < keys.length; i++) loop( i );
}
- }
- /* */
-
- var uid = 0;
+ return function(fn){
+ var task = {fn: fn, next: undefined};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+ };
+ };
+
+/***/ }),
+/* 90 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 19.1.2.1 Object.assign(target, source, ...)
+ var getKeys = __webpack_require__(16)
+ , gOPS = __webpack_require__(26)
+ , pIE = __webpack_require__(19)
+ , toObject = __webpack_require__(31)
+ , IObject = __webpack_require__(41)
+ , $assign = Object.assign;
- function initMixin (Vue) {
- Vue.prototype._init = function (options) {
- var vm = this;
- // a uid
- vm._uid = uid++;
+ // should work with symbols and should have deterministic property order (V8 bug)
+ module.exports = !$assign || __webpack_require__(13)(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+ }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+ } : $assign;
+
+/***/ }),
+/* 91 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(4)
+ , anObject = __webpack_require__(5)
+ , getKeys = __webpack_require__(16);
- var startTag, endTag;
- /* istanbul ignore if */
- if (false) {
- startTag = "vue-perf-init:" + (vm._uid);
- endTag = "vue-perf-end:" + (vm._uid);
- mark(startTag);
- }
+ module.exports = __webpack_require__(6) ? Object.defineProperties : function defineProperties(O, Properties){
+ anObject(O);
+ var keys = getKeys(Properties)
+ , length = keys.length
+ , i = 0
+ , P;
+ while(length > i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+ };
+
+/***/ }),
+/* 92 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var pIE = __webpack_require__(19)
+ , createDesc = __webpack_require__(17)
+ , toIObject = __webpack_require__(9)
+ , toPrimitive = __webpack_require__(32)
+ , has = __webpack_require__(7)
+ , IE8_DOM_DEFINE = __webpack_require__(40)
+ , gOPD = Object.getOwnPropertyDescriptor;
- // a flag to avoid this being observed
- vm._isVue = true;
- // merge options
- if (options && options._isComponent) {
- // optimize internal component instantiation
- // since dynamic options merging is pretty slow, and none of the
- // internal component options needs special treatment.
- initInternalComponent(vm, options);
- } else {
- vm.$options = mergeOptions(
- resolveConstructorOptions(vm.constructor),
- options || {},
- vm
- );
- }
- /* istanbul ignore else */
- if (false) {
- initProxy(vm);
- } else {
- vm._renderProxy = vm;
- }
- // expose real self
- vm._self = vm;
- initLifecycle(vm);
- initEvents(vm);
- initRender(vm);
- callHook(vm, 'beforeCreate');
- initInjections(vm); // resolve injections before data/props
- initState(vm);
- initProvide(vm); // resolve provide after data/props
- callHook(vm, 'created');
-
- /* istanbul ignore if */
- if (false) {
- vm._name = formatComponentName(vm, false);
- mark(endTag);
- measure(((vm._name) + " init"), startTag, endTag);
- }
+ exports.f = __webpack_require__(6) ? gOPD : function getOwnPropertyDescriptor(O, P){
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if(IE8_DOM_DEFINE)try {
+ return gOPD(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
+ };
+
+/***/ }),
+/* 93 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+ var toIObject = __webpack_require__(9)
+ , gOPN = __webpack_require__(47).f
+ , toString = {}.toString;
- if (vm.$options.el) {
- vm.$mount(vm.$options.el);
- }
- };
- }
+ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
- function initInternalComponent (vm, options) {
- var opts = vm.$options = Object.create(vm.constructor.options);
- // doing this because it's faster than dynamic enumeration.
- opts.parent = options.parent;
- opts.propsData = options.propsData;
- opts._parentVnode = options._parentVnode;
- opts._parentListeners = options._parentListeners;
- opts._renderChildren = options._renderChildren;
- opts._componentTag = options._componentTag;
- opts._parentElm = options._parentElm;
- opts._refElm = options._refElm;
- if (options.render) {
- opts.render = options.render;
- opts.staticRenderFns = options.staticRenderFns;
- }
- }
-
- function resolveConstructorOptions (Ctor) {
- var options = Ctor.options;
- if (Ctor.super) {
- var superOptions = resolveConstructorOptions(Ctor.super);
- var cachedSuperOptions = Ctor.superOptions;
- if (superOptions !== cachedSuperOptions) {
- // super option changed,
- // need to resolve new options.
- Ctor.superOptions = superOptions;
- // check if there are any late-modified/attached options (#4976)
- var modifiedOptions = resolveModifiedOptions(Ctor);
- // update base extend options
- if (modifiedOptions) {
- extend(Ctor.extendOptions, modifiedOptions);
- }
- options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
- if (options.name) {
- options.components[options.name] = Ctor;
- }
- }
- }
- return options
- }
-
- function resolveModifiedOptions (Ctor) {
- var modified;
- var latest = Ctor.options;
- var sealed = Ctor.sealedOptions;
- for (var key in latest) {
- if (latest[key] !== sealed[key]) {
- if (!modified) { modified = {}; }
- modified[key] = dedupe(latest[key], sealed[key]);
- }
- }
- return modified
- }
-
- function dedupe (latest, sealed) {
- // compare latest and sealed to ensure lifecycle hooks won't be duplicated
- // between merges
- if (Array.isArray(latest)) {
- var res = [];
- sealed = Array.isArray(sealed) ? sealed : [sealed];
- for (var i = 0; i < latest.length; i++) {
- if (sealed.indexOf(latest[i]) < 0) {
- res.push(latest[i]);
- }
- }
- return res
- } else {
- return latest
- }
- }
-
- function Vue$2 (options) {
- if (false) {
- warn('Vue is a constructor and should be called with the `new` keyword');
- }
- this._init(options);
- }
-
- initMixin(Vue$2);
- stateMixin(Vue$2);
- eventsMixin(Vue$2);
- lifecycleMixin(Vue$2);
- renderMixin(Vue$2);
-
- /* */
-
- function initUse (Vue) {
- Vue.use = function (plugin) {
- /* istanbul ignore if */
- if (plugin.installed) {
- return
- }
- // additional parameters
- var args = toArray(arguments, 1);
- args.unshift(this);
- if (typeof plugin.install === 'function') {
- plugin.install.apply(plugin, args);
- } else if (typeof plugin === 'function') {
- plugin.apply(null, args);
- }
- plugin.installed = true;
- return this
- };
- }
-
- /* */
-
- function initMixin$1 (Vue) {
- Vue.mixin = function (mixin) {
- this.options = mergeOptions(this.options, mixin);
- };
- }
-
- /* */
-
- function initExtend (Vue) {
- /**
- * Each instance constructor, including Vue, has a unique
- * cid. This enables us to create wrapped "child
- * constructors" for prototypal inheritance and cache them.
- */
- Vue.cid = 0;
- var cid = 1;
-
- /**
- * Class inheritance
- */
- Vue.extend = function (extendOptions) {
- extendOptions = extendOptions || {};
- var Super = this;
- var SuperId = Super.cid;
- var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
- if (cachedCtors[SuperId]) {
- return cachedCtors[SuperId]
- }
-
- var name = extendOptions.name || Super.options.name;
- if (false) {
- if (!/^[a-zA-Z][\w-]*$/.test(name)) {
- warn(
- 'Invalid component name: "' + name + '". Component names ' +
- 'can only contain alphanumeric characters and the hyphen, ' +
- 'and must start with a letter.'
- );
- }
- }
-
- var Sub = function VueComponent (options) {
- this._init(options);
- };
- Sub.prototype = Object.create(Super.prototype);
- Sub.prototype.constructor = Sub;
- Sub.cid = cid++;
- Sub.options = mergeOptions(
- Super.options,
- extendOptions
- );
- Sub['super'] = Super;
-
- // For props and computed properties, we define the proxy getters on
- // the Vue instances at extension time, on the extended prototype. This
- // avoids Object.defineProperty calls for each instance created.
- if (Sub.options.props) {
- initProps$1(Sub);
- }
- if (Sub.options.computed) {
- initComputed$1(Sub);
- }
-
- // allow further extension/mixin/plugin usage
- Sub.extend = Super.extend;
- Sub.mixin = Super.mixin;
- Sub.use = Super.use;
-
- // create asset registers, so extended classes
- // can have their private assets too.
- config._assetTypes.forEach(function (type) {
- Sub[type] = Super[type];
- });
- // enable recursive self-lookup
- if (name) {
- Sub.options.components[name] = Sub;
- }
-
- // keep a reference to the super options at extension time.
- // later at instantiation we can check if Super's options have
- // been updated.
- Sub.superOptions = Super.options;
- Sub.extendOptions = extendOptions;
- Sub.sealedOptions = extend({}, Sub.options);
-
- // cache constructor
- cachedCtors[SuperId] = Sub;
- return Sub
- };
- }
-
- function initProps$1 (Comp) {
- var props = Comp.options.props;
- for (var key in props) {
- proxy(Comp.prototype, "_props", key);
- }
- }
-
- function initComputed$1 (Comp) {
- var computed = Comp.options.computed;
- for (var key in computed) {
- defineComputed(Comp.prototype, key, computed[key]);
- }
- }
-
- /* */
-
- function initAssetRegisters (Vue) {
- /**
- * Create asset registration methods.
- */
- config._assetTypes.forEach(function (type) {
- Vue[type] = function (
- id,
- definition
- ) {
- if (!definition) {
- return this.options[type + 's'][id]
- } else {
- /* istanbul ignore if */
- if (false) {
- if (type === 'component' && config.isReservedTag(id)) {
- warn(
- 'Do not use built-in or reserved HTML elements as component ' +
- 'id: ' + id
- );
- }
- }
- if (type === 'component' && isPlainObject(definition)) {
- definition.name = definition.name || id;
- definition = this.options._base.extend(definition);
- }
- if (type === 'directive' && typeof definition === 'function') {
- definition = { bind: definition, update: definition };
- }
- this.options[type + 's'][id] = definition;
- return definition
- }
- };
- });
- }
-
- /* */
-
- var patternTypes = [String, RegExp];
-
- function getComponentName (opts) {
- return opts && (opts.Ctor.options.name || opts.tag)
- }
-
- function matches (pattern, name) {
- if (typeof pattern === 'string') {
- return pattern.split(',').indexOf(name) > -1
- } else if (pattern instanceof RegExp) {
- return pattern.test(name)
- }
- /* istanbul ignore next */
- return false
- }
-
- function pruneCache (cache, filter) {
- for (var key in cache) {
- var cachedNode = cache[key];
- if (cachedNode) {
- var name = getComponentName(cachedNode.componentOptions);
- if (name && !filter(name)) {
- pruneCacheEntry(cachedNode);
- cache[key] = null;
- }
- }
- }
- }
-
- function pruneCacheEntry (vnode) {
- if (vnode) {
- if (!vnode.componentInstance._inactive) {
- callHook(vnode.componentInstance, 'deactivated');
- }
- vnode.componentInstance.$destroy();
- }
- }
-
- var KeepAlive = {
- name: 'keep-alive',
- abstract: true,
-
- props: {
- include: patternTypes,
- exclude: patternTypes
- },
-
- created: function created () {
- this.cache = Object.create(null);
- },
-
- destroyed: function destroyed () {
- var this$1 = this;
-
- for (var key in this$1.cache) {
- pruneCacheEntry(this$1.cache[key]);
- }
- },
-
- watch: {
- include: function include (val) {
- pruneCache(this.cache, function (name) { return matches(val, name); });
- },
- exclude: function exclude (val) {
- pruneCache(this.cache, function (name) { return !matches(val, name); });
- }
- },
-
- render: function render () {
- var vnode = getFirstComponentChild(this.$slots.default);
- var componentOptions = vnode && vnode.componentOptions;
- if (componentOptions) {
- // check pattern
- var name = getComponentName(componentOptions);
- if (name && (
- (this.include && !matches(this.include, name)) ||
- (this.exclude && matches(this.exclude, name))
- )) {
- return vnode
- }
- var key = vnode.key == null
- // same constructor may get registered as different local components
- // so cid alone is not enough (#3269)
- ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
- : vnode.key;
- if (this.cache[key]) {
- vnode.componentInstance = this.cache[key].componentInstance;
- } else {
- this.cache[key] = vnode;
- }
- vnode.data.keepAlive = true;
- }
- return vnode
- }
- };
-
- var builtInComponents = {
- KeepAlive: KeepAlive
- };
-
- /* */
-
- function initGlobalAPI (Vue) {
- // config
- var configDef = {};
- configDef.get = function () { return config; };
- if (false) {
- configDef.set = function () {
- warn(
- 'Do not replace the Vue.config object, set individual fields instead.'
- );
- };
- }
- Object.defineProperty(Vue, 'config', configDef);
-
- // exposed util methods.
- // NOTE: these are not considered part of the public API - avoid relying on
- // them unless you are aware of the risk.
- Vue.util = {
- warn: warn,
- extend: extend,
- mergeOptions: mergeOptions,
- defineReactive: defineReactive$$1
- };
-
- Vue.set = set;
- Vue.delete = del;
- Vue.nextTick = nextTick;
-
- Vue.options = Object.create(null);
- config._assetTypes.forEach(function (type) {
- Vue.options[type + 's'] = Object.create(null);
- });
-
- // this is used to identify the "base" constructor to extend all plain-object
- // components with in Weex's multi-instance scenarios.
- Vue.options._base = Vue;
-
- extend(Vue.options.components, builtInComponents);
-
- initUse(Vue);
- initMixin$1(Vue);
- initExtend(Vue);
- initAssetRegisters(Vue);
- }
-
- initGlobalAPI(Vue$2);
-
- Object.defineProperty(Vue$2.prototype, '$isServer', {
- get: isServerRendering
- });
-
- Vue$2.version = '2.2.6';
-
- /* */
-
- // attributes that should be using props for binding
- var acceptValue = makeMap('input,textarea,option,select');
- var mustUseProp = function (tag, type, attr) {
- return (
- (attr === 'value' && acceptValue(tag)) && type !== 'button' ||
- (attr === 'selected' && tag === 'option') ||
- (attr === 'checked' && tag === 'input') ||
- (attr === 'muted' && tag === 'video')
- )
- };
-
- var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
-
- var isBooleanAttr = makeMap(
- 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
- 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
- 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
- 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
- 'required,reversed,scoped,seamless,selected,sortable,translate,' +
- 'truespeed,typemustmatch,visible'
- );
-
- var xlinkNS = 'http://www.w3.org/1999/xlink';
-
- var isXlink = function (name) {
- return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
- };
-
- var getXlinkProp = function (name) {
- return isXlink(name) ? name.slice(6, name.length) : ''
- };
-
- var isFalsyAttrValue = function (val) {
- return val == null || val === false
- };
-
- /* */
-
- function genClassForVnode (vnode) {
- var data = vnode.data;
- var parentNode = vnode;
- var childNode = vnode;
- while (childNode.componentInstance) {
- childNode = childNode.componentInstance._vnode;
- if (childNode.data) {
- data = mergeClassData(childNode.data, data);
- }
- }
- while ((parentNode = parentNode.parent)) {
- if (parentNode.data) {
- data = mergeClassData(data, parentNode.data);
- }
- }
- return genClassFromData(data)
- }
-
- function mergeClassData (child, parent) {
- return {
- staticClass: concat(child.staticClass, parent.staticClass),
- class: child.class
- ? [child.class, parent.class]
- : parent.class
- }
- }
-
- function genClassFromData (data) {
- var dynamicClass = data.class;
- var staticClass = data.staticClass;
- if (staticClass || dynamicClass) {
- return concat(staticClass, stringifyClass(dynamicClass))
- }
- /* istanbul ignore next */
- return ''
- }
-
- function concat (a, b) {
- return a ? b ? (a + ' ' + b) : a : (b || '')
- }
-
- function stringifyClass (value) {
- var res = '';
- if (!value) {
- return res
- }
- if (typeof value === 'string') {
- return value
- }
- if (Array.isArray(value)) {
- var stringified;
- for (var i = 0, l = value.length; i < l; i++) {
- if (value[i]) {
- if ((stringified = stringifyClass(value[i]))) {
- res += stringified + ' ';
- }
- }
- }
- return res.slice(0, -1)
- }
- if (isObject(value)) {
- for (var key in value) {
- if (value[key]) { res += key + ' '; }
- }
- return res.slice(0, -1)
+ var getWindowNames = function(it){
+ try {
+ return gOPN(it);
+ } catch(e){
+ return windowNames.slice();
}
- /* istanbul ignore next */
- return res
- }
-
- /* */
-
- var namespaceMap = {
- svg: 'http://www.w3.org/2000/svg',
- math: 'http://www.w3.org/1998/Math/MathML'
};
- var isHTMLTag = makeMap(
- 'html,body,base,head,link,meta,style,title,' +
- 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
- 'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,' +
- 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
- 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
- 'embed,object,param,source,canvas,script,noscript,del,ins,' +
- 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
- 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
- 'output,progress,select,textarea,' +
- 'details,dialog,menu,menuitem,summary,' +
- 'content,element,shadow,template'
- );
-
- // this map is intentionally selective, only covering SVG elements that may
- // contain child elements.
- var isSVG = makeMap(
- 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
- 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
- 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
- true
- );
-
-
-
- var isReservedTag = function (tag) {
- return isHTMLTag(tag) || isSVG(tag)
- };
-
- function getTagNamespace (tag) {
- if (isSVG(tag)) {
- return 'svg'
- }
- // basic support for MathML
- // note it doesn't support other MathML elements being component roots
- if (tag === 'math') {
- return 'math'
- }
- }
-
- var unknownElementCache = Object.create(null);
- function isUnknownElement (tag) {
- /* istanbul ignore if */
- if (!inBrowser) {
- return true
- }
- if (isReservedTag(tag)) {
- return false
- }
- tag = tag.toLowerCase();
- /* istanbul ignore if */
- if (unknownElementCache[tag] != null) {
- return unknownElementCache[tag]
- }
- var el = document.createElement(tag);
- if (tag.indexOf('-') > -1) {
- // http://stackoverflow.com/a/28210364/1070244
- return (unknownElementCache[tag] = (
- el.constructor === window.HTMLUnknownElement ||
- el.constructor === window.HTMLElement
- ))
- } else {
- return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
- }
- }
-
- /* */
-
- /**
- * Query an element selector if it's not an element already.
- */
- function query (el) {
- if (typeof el === 'string') {
- var selected = document.querySelector(el);
- if (!selected) {
- ("production") !== 'production' && warn(
- 'Cannot find element: ' + el
- );
- return document.createElement('div')
- }
- return selected
- } else {
- return el
- }
- }
-
- /* */
-
- function createElement$1 (tagName, vnode) {
- var elm = document.createElement(tagName);
- if (tagName !== 'select') {
- return elm
- }
- // false or null will remove the attribute but undefined will not
- if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {
- elm.setAttribute('multiple', 'multiple');
- }
- return elm
- }
-
- function createElementNS (namespace, tagName) {
- return document.createElementNS(namespaceMap[namespace], tagName)
- }
-
- function createTextNode (text) {
- return document.createTextNode(text)
- }
-
- function createComment (text) {
- return document.createComment(text)
- }
-
- function insertBefore (parentNode, newNode, referenceNode) {
- parentNode.insertBefore(newNode, referenceNode);
- }
-
- function removeChild (node, child) {
- node.removeChild(child);
- }
-
- function appendChild (node, child) {
- node.appendChild(child);
- }
-
- function parentNode (node) {
- return node.parentNode
- }
-
- function nextSibling (node) {
- return node.nextSibling
- }
-
- function tagName (node) {
- return node.tagName
- }
-
- function setTextContent (node, text) {
- node.textContent = text;
- }
-
- function setAttribute (node, key, val) {
- node.setAttribute(key, val);
- }
-
-
- var nodeOps = Object.freeze({
- createElement: createElement$1,
- createElementNS: createElementNS,
- createTextNode: createTextNode,
- createComment: createComment,
- insertBefore: insertBefore,
- removeChild: removeChild,
- appendChild: appendChild,
- parentNode: parentNode,
- nextSibling: nextSibling,
- tagName: tagName,
- setTextContent: setTextContent,
- setAttribute: setAttribute
- });
-
- /* */
-
- var ref = {
- create: function create (_, vnode) {
- registerRef(vnode);
- },
- update: function update (oldVnode, vnode) {
- if (oldVnode.data.ref !== vnode.data.ref) {
- registerRef(oldVnode, true);
- registerRef(vnode);
- }
- },
- destroy: function destroy (vnode) {
- registerRef(vnode, true);
- }
+ module.exports.f = function getOwnPropertyNames(it){
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+ };
+
+
+/***/ }),
+/* 94 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+ var has = __webpack_require__(7)
+ , toObject = __webpack_require__(31)
+ , IE_PROTO = __webpack_require__(27)('IE_PROTO')
+ , ObjectProto = Object.prototype;
+
+ module.exports = Object.getPrototypeOf || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
};
-
- function registerRef (vnode, isRemoval) {
- var key = vnode.data.ref;
- if (!key) { return }
-
- var vm = vnode.context;
- var ref = vnode.componentInstance || vnode.elm;
- var refs = vm.$refs;
- if (isRemoval) {
- if (Array.isArray(refs[key])) {
- remove(refs[key], ref);
- } else if (refs[key] === ref) {
- refs[key] = undefined;
- }
- } else {
- if (vnode.data.refInFor) {
- if (Array.isArray(refs[key]) && refs[key].indexOf(ref) < 0) {
- refs[key].push(ref);
- } else {
- refs[key] = [ref];
- }
- } else {
- refs[key] = ref;
- }
- }
- }
-
- /**
- * Virtual DOM patching algorithm based on Snabbdom by
- * Simon Friis Vindum (@paldepind)
- * Licensed under the MIT License
- * https://github.com/paldepind/snabbdom/blob/master/LICENSE
- *
- * modified by Evan You (@yyx990803)
- *
-
- /*
- * Not type-checking this because this file is perf-critical and the cost
- * of making flow understand it is not worth it.
- */
-
- var emptyNode = new VNode('', {}, []);
-
- var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
-
- function isUndef (v) {
- return v === undefined || v === null
- }
-
- function isDef (v) {
- return v !== undefined && v !== null
- }
-
- function isTrue (v) {
- return v === true
- }
-
- function sameVnode (a, b) {
- return (
- a.key === b.key &&
- a.tag === b.tag &&
- a.isComment === b.isComment &&
- isDef(a.data) === isDef(b.data) &&
- sameInputType(a, b)
- )
- }
-
- // Some browsers do not support dynamically changing type for
- // so they need to be treated as different nodes
- function sameInputType (a, b) {
- if (a.tag !== 'input') { return true }
- var i;
- var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;
- var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
- return typeA === typeB
- }
-
- function createKeyToOldIdx (children, beginIdx, endIdx) {
- var i, key;
- var map = {};
- for (i = beginIdx; i <= endIdx; ++i) {
- key = children[i].key;
- if (isDef(key)) { map[key] = i; }
- }
- return map
- }
-
- function createPatchFunction (backend) {
- var i, j;
- var cbs = {};
-
- var modules = backend.modules;
- var nodeOps = backend.nodeOps;
-
- for (i = 0; i < hooks.length; ++i) {
- cbs[hooks[i]] = [];
- for (j = 0; j < modules.length; ++j) {
- if (isDef(modules[j][hooks[i]])) {
- cbs[hooks[i]].push(modules[j][hooks[i]]);
- }
- }
- }
-
- function emptyNodeAt (elm) {
- return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
- }
-
- function createRmCb (childElm, listeners) {
- function remove$$1 () {
- if (--remove$$1.listeners === 0) {
- removeNode(childElm);
- }
- }
- remove$$1.listeners = listeners;
- return remove$$1
- }
-
- function removeNode (el) {
- var parent = nodeOps.parentNode(el);
- // element may have already been removed due to v-html / v-text
- if (isDef(parent)) {
- nodeOps.removeChild(parent, el);
- }
- }
-
- var inPre = 0;
- function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {
- vnode.isRootInsert = !nested; // for transition enter check
- if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
- return
- }
-
- var data = vnode.data;
- var children = vnode.children;
- var tag = vnode.tag;
- if (isDef(tag)) {
- if (false) {
- if (data && data.pre) {
- inPre++;
- }
- if (
- !inPre &&
- !vnode.ns &&
- !(config.ignoredElements.length && config.ignoredElements.indexOf(tag) > -1) &&
- config.isUnknownElement(tag)
- ) {
- warn(
- 'Unknown custom element: <' + tag + '> - did you ' +
- 'register the component correctly? For recursive components, ' +
- 'make sure to provide the "name" option.',
- vnode.context
- );
- }
- }
- vnode.elm = vnode.ns
- ? nodeOps.createElementNS(vnode.ns, tag)
- : nodeOps.createElement(tag, vnode);
- setScope(vnode);
-
- /* istanbul ignore if */
- {
- createChildren(vnode, children, insertedVnodeQueue);
- if (isDef(data)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- }
- insert(parentElm, vnode.elm, refElm);
- }
-
- if (false) {
- inPre--;
- }
- } else if (isTrue(vnode.isComment)) {
- vnode.elm = nodeOps.createComment(vnode.text);
- insert(parentElm, vnode.elm, refElm);
- } else {
- vnode.elm = nodeOps.createTextNode(vnode.text);
- insert(parentElm, vnode.elm, refElm);
- }
- }
-
- function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
- var i = vnode.data;
- if (isDef(i)) {
- var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
- if (isDef(i = i.hook) && isDef(i = i.init)) {
- i(vnode, false /* hydrating */, parentElm, refElm);
- }
- // after calling the init hook, if the vnode is a child component
- // it should've created a child instance and mounted it. the child
- // component also has set the placeholder vnode's elm.
- // in that case we can just return the element and be done.
- if (isDef(vnode.componentInstance)) {
- initComponent(vnode, insertedVnodeQueue);
- if (isTrue(isReactivated)) {
- reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
- }
- return true
- }
- }
- }
-
- function initComponent (vnode, insertedVnodeQueue) {
- if (isDef(vnode.data.pendingInsert)) {
- insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
- }
- vnode.elm = vnode.componentInstance.$el;
- if (isPatchable(vnode)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- setScope(vnode);
- } else {
- // empty component root.
- // skip all element-related modules except for ref (#3455)
- registerRef(vnode);
- // make sure to invoke the insert hook
- insertedVnodeQueue.push(vnode);
- }
- }
-
- function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
- var i;
- // hack for #4339: a reactivated component with inner transition
- // does not trigger because the inner node's created hooks are not called
- // again. It's not ideal to involve module-specific logic in here but
- // there doesn't seem to be a better way to do it.
- var innerNode = vnode;
- while (innerNode.componentInstance) {
- innerNode = innerNode.componentInstance._vnode;
- if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
- for (i = 0; i < cbs.activate.length; ++i) {
- cbs.activate[i](emptyNode, innerNode);
- }
- insertedVnodeQueue.push(innerNode);
- break
- }
- }
- // unlike a newly created component,
- // a reactivated keep-alive component doesn't insert itself
- insert(parentElm, vnode.elm, refElm);
- }
-
- function insert (parent, elm, ref) {
- if (isDef(parent)) {
- if (isDef(ref)) {
- nodeOps.insertBefore(parent, elm, ref);
- } else {
- nodeOps.appendChild(parent, elm);
- }
- }
- }
-
- function createChildren (vnode, children, insertedVnodeQueue) {
- if (Array.isArray(children)) {
- for (var i = 0; i < children.length; ++i) {
- createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);
- }
- } else if (isPrimitive(vnode.text)) {
- nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));
- }
- }
-
- function isPatchable (vnode) {
- while (vnode.componentInstance) {
- vnode = vnode.componentInstance._vnode;
- }
- return isDef(vnode.tag)
- }
-
- function invokeCreateHooks (vnode, insertedVnodeQueue) {
- for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
- cbs.create[i$1](emptyNode, vnode);
- }
- i = vnode.data.hook; // Reuse variable
- if (isDef(i)) {
- if (isDef(i.create)) { i.create(emptyNode, vnode); }
- if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }
- }
- }
-
- // set scope id attribute for scoped CSS.
- // this is implemented as a special case to avoid the overhead
- // of going through the normal attribute patching process.
- function setScope (vnode) {
- var i;
- var ancestor = vnode;
- while (ancestor) {
- if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {
- nodeOps.setAttribute(vnode.elm, i, '');
- }
- ancestor = ancestor.parent;
- }
- // for slot content they should also get the scopeId from the host instance.
- if (isDef(i = activeInstance) &&
- i !== vnode.context &&
- isDef(i = i.$options._scopeId)) {
- nodeOps.setAttribute(vnode.elm, i, '');
- }
- }
-
- function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
- for (; startIdx <= endIdx; ++startIdx) {
- createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);
- }
- }
-
- function invokeDestroyHook (vnode) {
- var i, j;
- var data = vnode.data;
- if (isDef(data)) {
- if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
- for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
- }
- if (isDef(i = vnode.children)) {
- for (j = 0; j < vnode.children.length; ++j) {
- invokeDestroyHook(vnode.children[j]);
- }
- }
- }
-
- function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
- for (; startIdx <= endIdx; ++startIdx) {
- var ch = vnodes[startIdx];
- if (isDef(ch)) {
- if (isDef(ch.tag)) {
- removeAndInvokeRemoveHook(ch);
- invokeDestroyHook(ch);
- } else { // Text node
- removeNode(ch.elm);
- }
- }
- }
- }
-
- function removeAndInvokeRemoveHook (vnode, rm) {
- if (isDef(rm) || isDef(vnode.data)) {
- var listeners = cbs.remove.length + 1;
- if (isDef(rm)) {
- // we have a recursively passed down rm callback
- // increase the listeners count
- rm.listeners += listeners;
- } else {
- // directly removing
- rm = createRmCb(vnode.elm, listeners);
- }
- // recursively invoke hooks on child component root node
- if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
- removeAndInvokeRemoveHook(i, rm);
- }
- for (i = 0; i < cbs.remove.length; ++i) {
- cbs.remove[i](vnode, rm);
- }
- if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
- i(vnode, rm);
- } else {
- rm();
- }
- } else {
- removeNode(vnode.elm);
- }
- }
-
- function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
- var oldStartIdx = 0;
- var newStartIdx = 0;
- var oldEndIdx = oldCh.length - 1;
- var oldStartVnode = oldCh[0];
- var oldEndVnode = oldCh[oldEndIdx];
- var newEndIdx = newCh.length - 1;
- var newStartVnode = newCh[0];
- var newEndVnode = newCh[newEndIdx];
- var oldKeyToIdx, idxInOld, elmToMove, refElm;
-
- // removeOnly is a special flag used only by
- // to ensure removed elements stay in correct relative positions
- // during leaving transitions
- var canMove = !removeOnly;
-
- while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
- if (isUndef(oldStartVnode)) {
- oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
- } else if (isUndef(oldEndVnode)) {
- oldEndVnode = oldCh[--oldEndIdx];
- } else if (sameVnode(oldStartVnode, newStartVnode)) {
- patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
- oldStartVnode = oldCh[++oldStartIdx];
- newStartVnode = newCh[++newStartIdx];
- } else if (sameVnode(oldEndVnode, newEndVnode)) {
- patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
- oldEndVnode = oldCh[--oldEndIdx];
- newEndVnode = newCh[--newEndIdx];
- } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
- patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
- canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
- oldStartVnode = oldCh[++oldStartIdx];
- newEndVnode = newCh[--newEndIdx];
- } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
- patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
- canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
- oldEndVnode = oldCh[--oldEndIdx];
- newStartVnode = newCh[++newStartIdx];
- } else {
- if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
- idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null;
- if (isUndef(idxInOld)) { // New element
- createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);
- newStartVnode = newCh[++newStartIdx];
- } else {
- elmToMove = oldCh[idxInOld];
- /* istanbul ignore if */
- if (false) {
- warn(
- 'It seems there are duplicate keys that is causing an update error. ' +
- 'Make sure each v-for item has a unique key.'
- );
- }
- if (sameVnode(elmToMove, newStartVnode)) {
- patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);
- oldCh[idxInOld] = undefined;
- canMove && nodeOps.insertBefore(parentElm, newStartVnode.elm, oldStartVnode.elm);
- newStartVnode = newCh[++newStartIdx];
- } else {
- // same key but different element. treat as new element
- createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);
- newStartVnode = newCh[++newStartIdx];
- }
- }
- }
- }
- if (oldStartIdx > oldEndIdx) {
- refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
- addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
- } else if (newStartIdx > newEndIdx) {
- removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
- }
- }
-
- function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {
- if (oldVnode === vnode) {
- return
- }
- // reuse element for static trees.
- // note we only do this if the vnode is cloned -
- // if the new node is not cloned it means the render functions have been
- // reset by the hot-reload-api and we need to do a proper re-render.
- if (isTrue(vnode.isStatic) &&
- isTrue(oldVnode.isStatic) &&
- vnode.key === oldVnode.key &&
- (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {
- vnode.elm = oldVnode.elm;
- vnode.componentInstance = oldVnode.componentInstance;
- return
- }
- var i;
- var data = vnode.data;
- if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {
- i(oldVnode, vnode);
- }
- var elm = vnode.elm = oldVnode.elm;
- var oldCh = oldVnode.children;
- var ch = vnode.children;
- if (isDef(data) && isPatchable(vnode)) {
- for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
- if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
- }
- if (isUndef(vnode.text)) {
- if (isDef(oldCh) && isDef(ch)) {
- if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
- } else if (isDef(ch)) {
- if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
- addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
- } else if (isDef(oldCh)) {
- removeVnodes(elm, oldCh, 0, oldCh.length - 1);
- } else if (isDef(oldVnode.text)) {
- nodeOps.setTextContent(elm, '');
- }
- } else if (oldVnode.text !== vnode.text) {
- nodeOps.setTextContent(elm, vnode.text);
- }
- if (isDef(data)) {
- if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
- }
- }
-
- function invokeInsertHook (vnode, queue, initial) {
- // delay insert hooks for component root nodes, invoke them after the
- // element is really inserted
- if (isTrue(initial) && isDef(vnode.parent)) {
- vnode.parent.data.pendingInsert = queue;
- } else {
- for (var i = 0; i < queue.length; ++i) {
- queue[i].data.hook.insert(queue[i]);
- }
- }
- }
-
- var bailed = false;
- // list of modules that can skip create hook during hydration because they
- // are already rendered on the client or has no need for initialization
- var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');
-
- // Note: this is a browser-only function so we can assume elms are DOM nodes.
- function hydrate (elm, vnode, insertedVnodeQueue) {
- if (false) {
- if (!assertNodeMatch(elm, vnode)) {
- return false
- }
- }
- vnode.elm = elm;
- var tag = vnode.tag;
- var data = vnode.data;
- var children = vnode.children;
- if (isDef(data)) {
- if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
- if (isDef(i = vnode.componentInstance)) {
- // child component. it should have hydrated its own tree.
- initComponent(vnode, insertedVnodeQueue);
- return true
- }
- }
- if (isDef(tag)) {
- if (isDef(children)) {
- // empty element, allow client to pick up and populate children
- if (!elm.hasChildNodes()) {
- createChildren(vnode, children, insertedVnodeQueue);
- } else {
- var childrenMatch = true;
- var childNode = elm.firstChild;
- for (var i$1 = 0; i$1 < children.length; i$1++) {
- if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {
- childrenMatch = false;
- break
- }
- childNode = childNode.nextSibling;
- }
- // if childNode is not null, it means the actual childNodes list is
- // longer than the virtual children list.
- if (!childrenMatch || childNode) {
- if (false) {
- bailed = true;
- console.warn('Parent: ', elm);
- console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
- }
- return false
- }
- }
- }
- if (isDef(data)) {
- for (var key in data) {
- if (!isRenderedModule(key)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- break
- }
- }
- }
- } else if (elm.data !== vnode.text) {
- elm.data = vnode.text;
- }
- return true
- }
-
- function assertNodeMatch (node, vnode) {
- if (isDef(vnode.tag)) {
- return (
- vnode.tag.indexOf('vue-component') === 0 ||
- vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())
- )
- } else {
- return node.nodeType === (vnode.isComment ? 8 : 3)
- }
- }
-
- return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
- if (isUndef(vnode)) {
- if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }
- return
- }
-
- var isInitialPatch = false;
- var insertedVnodeQueue = [];
-
- if (isUndef(oldVnode)) {
- // empty mount (likely as component), create new root element
- isInitialPatch = true;
- createElm(vnode, insertedVnodeQueue, parentElm, refElm);
- } else {
- var isRealElement = isDef(oldVnode.nodeType);
- if (!isRealElement && sameVnode(oldVnode, vnode)) {
- // patch existing root node
- patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);
- } else {
- if (isRealElement) {
- // mounting to a real element
- // check if this is server-rendered content and if we can perform
- // a successful hydration.
- if (oldVnode.nodeType === 1 && oldVnode.hasAttribute('server-rendered')) {
- oldVnode.removeAttribute('server-rendered');
- hydrating = true;
- }
- if (isTrue(hydrating)) {
- if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
- invokeInsertHook(vnode, insertedVnodeQueue, true);
- return oldVnode
- } else if (false) {
- warn(
- 'The client-side rendered virtual DOM tree is not matching ' +
- 'server-rendered content. This is likely caused by incorrect ' +
- 'HTML markup, for example nesting block-level elements inside ' +
- ', or missing
. Bailing hydration and performing ' +
- 'full client-side render.'
- );
- }
- }
- // either not server-rendered, or hydration failed.
- // create an empty node and replace it
- oldVnode = emptyNodeAt(oldVnode);
- }
- // replacing existing element
- var oldElm = oldVnode.elm;
- var parentElm$1 = nodeOps.parentNode(oldElm);
- createElm(
- vnode,
- insertedVnodeQueue,
- // extremely rare edge case: do not insert if old element is in a
- // leaving transition. Only happens when combining transition +
- // keep-alive + HOCs. (#4590)
- oldElm._leaveCb ? null : parentElm$1,
- nodeOps.nextSibling(oldElm)
- );
-
- if (isDef(vnode.parent)) {
- // component root element replaced.
- // update parent placeholder node element, recursively
- var ancestor = vnode.parent;
- while (ancestor) {
- ancestor.elm = vnode.elm;
- ancestor = ancestor.parent;
- }
- if (isPatchable(vnode)) {
- for (var i = 0; i < cbs.create.length; ++i) {
- cbs.create[i](emptyNode, vnode.parent);
- }
- }
- }
-
- if (isDef(parentElm$1)) {
- removeVnodes(parentElm$1, [oldVnode], 0, 0);
- } else if (isDef(oldVnode.tag)) {
- invokeDestroyHook(oldVnode);
- }
- }
- }
-
- invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
- return vnode.elm
- }
- }
-
- /* */
-
- var directives = {
- create: updateDirectives,
- update: updateDirectives,
- destroy: function unbindDirectives (vnode) {
- updateDirectives(vnode, emptyNode);
- }
- };
-
- function updateDirectives (oldVnode, vnode) {
- if (oldVnode.data.directives || vnode.data.directives) {
- _update(oldVnode, vnode);
- }
- }
-
- function _update (oldVnode, vnode) {
- var isCreate = oldVnode === emptyNode;
- var isDestroy = vnode === emptyNode;
- var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
- var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
-
- var dirsWithInsert = [];
- var dirsWithPostpatch = [];
-
- var key, oldDir, dir;
- for (key in newDirs) {
- oldDir = oldDirs[key];
- dir = newDirs[key];
- if (!oldDir) {
- // new directive, bind
- callHook$1(dir, 'bind', vnode, oldVnode);
- if (dir.def && dir.def.inserted) {
- dirsWithInsert.push(dir);
- }
- } else {
- // existing directive, update
- dir.oldValue = oldDir.value;
- callHook$1(dir, 'update', vnode, oldVnode);
- if (dir.def && dir.def.componentUpdated) {
- dirsWithPostpatch.push(dir);
- }
- }
- }
-
- if (dirsWithInsert.length) {
- var callInsert = function () {
- for (var i = 0; i < dirsWithInsert.length; i++) {
- callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
- }
- };
- if (isCreate) {
- mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert);
- } else {
- callInsert();
- }
- }
-
- if (dirsWithPostpatch.length) {
- mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {
- for (var i = 0; i < dirsWithPostpatch.length; i++) {
- callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
- }
- });
- }
-
- if (!isCreate) {
- for (key in oldDirs) {
- if (!newDirs[key]) {
- // no longer present, unbind
- callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
- }
- }
- }
- }
-
- var emptyModifiers = Object.create(null);
-
- function normalizeDirectives$1 (
- dirs,
- vm
- ) {
- var res = Object.create(null);
- if (!dirs) {
- return res
- }
- var i, dir;
- for (i = 0; i < dirs.length; i++) {
- dir = dirs[i];
- if (!dir.modifiers) {
- dir.modifiers = emptyModifiers;
- }
- res[getRawDirName(dir)] = dir;
- dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
- }
- return res
- }
-
- function getRawDirName (dir) {
- return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
- }
-
- function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
- var fn = dir.def && dir.def[hook];
- if (fn) {
- fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
- }
- }
-
- var baseModules = [
- ref,
- directives
- ];
-
- /* */
-
- function updateAttrs (oldVnode, vnode) {
- if (!oldVnode.data.attrs && !vnode.data.attrs) {
- return
- }
- var key, cur, old;
- var elm = vnode.elm;
- var oldAttrs = oldVnode.data.attrs || {};
- var attrs = vnode.data.attrs || {};
- // clone observed objects, as the user probably wants to mutate it
- if (attrs.__ob__) {
- attrs = vnode.data.attrs = extend({}, attrs);
- }
-
- for (key in attrs) {
- cur = attrs[key];
- old = oldAttrs[key];
- if (old !== cur) {
- setAttr(elm, key, cur);
- }
- }
- // #4391: in IE9, setting type can reset value for input[type=radio]
- /* istanbul ignore if */
- if (isIE9 && attrs.value !== oldAttrs.value) {
- setAttr(elm, 'value', attrs.value);
- }
- for (key in oldAttrs) {
- if (attrs[key] == null) {
- if (isXlink(key)) {
- elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
- } else if (!isEnumeratedAttr(key)) {
- elm.removeAttribute(key);
- }
- }
- }
- }
-
- function setAttr (el, key, value) {
- if (isBooleanAttr(key)) {
- // set attribute for blank value
- // e.g.
- if (isFalsyAttrValue(value)) {
- el.removeAttribute(key);
- } else {
- el.setAttribute(key, key);
- }
- } else if (isEnumeratedAttr(key)) {
- el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');
- } else if (isXlink(key)) {
- if (isFalsyAttrValue(value)) {
- el.removeAttributeNS(xlinkNS, getXlinkProp(key));
- } else {
- el.setAttributeNS(xlinkNS, key, value);
- }
- } else {
- if (isFalsyAttrValue(value)) {
- el.removeAttribute(key);
- } else {
- el.setAttribute(key, value);
- }
- }
- }
-
- var attrs = {
- create: updateAttrs,
- update: updateAttrs
- };
-
- /* */
-
- function updateClass (oldVnode, vnode) {
- var el = vnode.elm;
- var data = vnode.data;
- var oldData = oldVnode.data;
- if (!data.staticClass && !data.class &&
- (!oldData || (!oldData.staticClass && !oldData.class))) {
- return
- }
-
- var cls = genClassForVnode(vnode);
-
- // handle transition classes
- var transitionClass = el._transitionClasses;
- if (transitionClass) {
- cls = concat(cls, stringifyClass(transitionClass));
- }
-
- // set the class
- if (cls !== el._prevClass) {
- el.setAttribute('class', cls);
- el._prevClass = cls;
- }
- }
-
- var klass = {
- create: updateClass,
- update: updateClass
- };
-
- /* */
-
- var validDivisionCharRE = /[\w).+\-_$\]]/;
-
-
-
- function wrapFilter (exp, filter) {
- var i = filter.indexOf('(');
- if (i < 0) {
- // _f: resolveFilter
- return ("_f(\"" + filter + "\")(" + exp + ")")
- } else {
- var name = filter.slice(0, i);
- var args = filter.slice(i + 1);
- return ("_f(\"" + name + "\")(" + exp + "," + args)
- }
- }
-
- /* */
-
- /* */
-
- /**
- * Cross-platform code generation for component v-model
- */
-
-
- /**
- * Cross-platform codegen helper for generating v-model value assignment code.
- */
-
-
- /**
- * parse directive model to do the array update transform. a[idx] = val => $$a.splice($$idx, 1, val)
- *
- * for loop possible cases:
- *
- * - test
- * - test[idx]
- * - test[test1[idx]]
- * - test["a"][idx]
- * - xxx.test[a[a].test1[idx]]
- * - test.xxx.a["asa"][test1[idx]]
- *
- */
-
- var str;
- var index$1;
-
- /* */
-
- // in some cases, the event used has to be determined at runtime
- // so we used some reserved tokens during compile.
- var RANGE_TOKEN = '__r';
- var CHECKBOX_RADIO_TOKEN = '__c';
-
- /* */
-
- // normalize v-model event tokens that can only be determined at runtime.
- // it's important to place the event as the first in the array because
- // the whole point is ensuring the v-model callback gets called before
- // user-attached handlers.
- function normalizeEvents (on) {
- var event;
- /* istanbul ignore if */
- if (on[RANGE_TOKEN]) {
- // IE input[type=range] only supports `change` event
- event = isIE ? 'change' : 'input';
- on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);
- delete on[RANGE_TOKEN];
- }
- if (on[CHECKBOX_RADIO_TOKEN]) {
- // Chrome fires microtasks in between click/change, leads to #4521
- event = isChrome ? 'click' : 'change';
- on[event] = [].concat(on[CHECKBOX_RADIO_TOKEN], on[event] || []);
- delete on[CHECKBOX_RADIO_TOKEN];
- }
- }
-
- var target$1;
-
- function add$1 (
- event,
- handler,
- once,
- capture
- ) {
- if (once) {
- var oldHandler = handler;
- var _target = target$1; // save current target element in closure
- handler = function (ev) {
- var res = arguments.length === 1
- ? oldHandler(ev)
- : oldHandler.apply(null, arguments);
- if (res !== null) {
- remove$2(event, handler, capture, _target);
- }
- };
- }
- target$1.addEventListener(event, handler, capture);
- }
-
- function remove$2 (
- event,
- handler,
- capture,
- _target
- ) {
- (_target || target$1).removeEventListener(event, handler, capture);
- }
-
- function updateDOMListeners (oldVnode, vnode) {
- if (!oldVnode.data.on && !vnode.data.on) {
- return
- }
- var on = vnode.data.on || {};
- var oldOn = oldVnode.data.on || {};
- target$1 = vnode.elm;
- normalizeEvents(on);
- updateListeners(on, oldOn, add$1, remove$2, vnode.context);
- }
-
- var events = {
- create: updateDOMListeners,
- update: updateDOMListeners
- };
-
- /* */
-
- function updateDOMProps (oldVnode, vnode) {
- if (!oldVnode.data.domProps && !vnode.data.domProps) {
- return
- }
- var key, cur;
- var elm = vnode.elm;
- var oldProps = oldVnode.data.domProps || {};
- var props = vnode.data.domProps || {};
- // clone observed objects, as the user probably wants to mutate it
- if (props.__ob__) {
- props = vnode.data.domProps = extend({}, props);
- }
-
- for (key in oldProps) {
- if (props[key] == null) {
- elm[key] = '';
- }
- }
- for (key in props) {
- cur = props[key];
- // ignore children if the node has textContent or innerHTML,
- // as these will throw away existing DOM nodes and cause removal errors
- // on subsequent patches (#3360)
- if (key === 'textContent' || key === 'innerHTML') {
- if (vnode.children) { vnode.children.length = 0; }
- if (cur === oldProps[key]) { continue }
- }
-
- if (key === 'value') {
- // store value as _value as well since
- // non-string values will be stringified
- elm._value = cur;
- // avoid resetting cursor position when value is the same
- var strCur = cur == null ? '' : String(cur);
- if (shouldUpdateValue(elm, vnode, strCur)) {
- elm.value = strCur;
- }
- } else {
- elm[key] = cur;
- }
- }
- }
-
- // check platforms/web/util/attrs.js acceptValue
-
-
- function shouldUpdateValue (
- elm,
- vnode,
- checkVal
- ) {
- return (!elm.composing && (
- vnode.tag === 'option' ||
- isDirty(elm, checkVal) ||
- isInputChanged(elm, checkVal)
- ))
- }
-
- function isDirty (elm, checkVal) {
- // return true when textbox (.number and .trim) loses focus and its value is not equal to the updated value
- return document.activeElement !== elm && elm.value !== checkVal
- }
-
- function isInputChanged (elm, newVal) {
- var value = elm.value;
- var modifiers = elm._vModifiers; // injected by v-model runtime
- if ((modifiers && modifiers.number) || elm.type === 'number') {
- return toNumber(value) !== toNumber(newVal)
- }
- if (modifiers && modifiers.trim) {
- return value.trim() !== newVal.trim()
- }
- return value !== newVal
- }
-
- var domProps = {
- create: updateDOMProps,
- update: updateDOMProps
- };
-
- /* */
-
- var parseStyleText = cached(function (cssText) {
- var res = {};
- var listDelimiter = /;(?![^(]*\))/g;
- var propertyDelimiter = /:(.+)/;
- cssText.split(listDelimiter).forEach(function (item) {
- if (item) {
- var tmp = item.split(propertyDelimiter);
- tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
- }
- });
- return res
- });
-
- // merge static and dynamic style data on the same vnode
- function normalizeStyleData (data) {
- var style = normalizeStyleBinding(data.style);
- // static style is pre-processed into an object during compilation
- // and is always a fresh object, so it's safe to merge into it
- return data.staticStyle
- ? extend(data.staticStyle, style)
- : style
- }
-
- // normalize possible array / string values into Object
- function normalizeStyleBinding (bindingStyle) {
- if (Array.isArray(bindingStyle)) {
- return toObject(bindingStyle)
- }
- if (typeof bindingStyle === 'string') {
- return parseStyleText(bindingStyle)
- }
- return bindingStyle
- }
-
- /**
- * parent component style should be after child's
- * so that parent component's style could override it
- */
- function getStyle (vnode, checkChild) {
- var res = {};
- var styleData;
-
- if (checkChild) {
- var childNode = vnode;
- while (childNode.componentInstance) {
- childNode = childNode.componentInstance._vnode;
- if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {
- extend(res, styleData);
- }
- }
- }
-
- if ((styleData = normalizeStyleData(vnode.data))) {
- extend(res, styleData);
- }
-
- var parentNode = vnode;
- while ((parentNode = parentNode.parent)) {
- if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
- extend(res, styleData);
- }
- }
- return res
- }
-
- /* */
-
- var cssVarRE = /^--/;
- var importantRE = /\s*!important$/;
- var setProp = function (el, name, val) {
- /* istanbul ignore if */
- if (cssVarRE.test(name)) {
- el.style.setProperty(name, val);
- } else if (importantRE.test(val)) {
- el.style.setProperty(name, val.replace(importantRE, ''), 'important');
- } else {
- el.style[normalize(name)] = val;
- }
- };
-
- var prefixes = ['Webkit', 'Moz', 'ms'];
-
- var testEl;
- var normalize = cached(function (prop) {
- testEl = testEl || document.createElement('div');
- prop = camelize(prop);
- if (prop !== 'filter' && (prop in testEl.style)) {
- return prop
- }
- var upper = prop.charAt(0).toUpperCase() + prop.slice(1);
- for (var i = 0; i < prefixes.length; i++) {
- var prefixed = prefixes[i] + upper;
- if (prefixed in testEl.style) {
- return prefixed
- }
- }
- });
-
- function updateStyle (oldVnode, vnode) {
- var data = vnode.data;
- var oldData = oldVnode.data;
-
- if (!data.staticStyle && !data.style &&
- !oldData.staticStyle && !oldData.style) {
- return
- }
-
- var cur, name;
- var el = vnode.elm;
- var oldStaticStyle = oldVnode.data.staticStyle;
- var oldStyleBinding = oldVnode.data.style || {};
-
- // if static style exists, stylebinding already merged into it when doing normalizeStyleData
- var oldStyle = oldStaticStyle || oldStyleBinding;
-
- var style = normalizeStyleBinding(vnode.data.style) || {};
-
- vnode.data.style = style.__ob__ ? extend({}, style) : style;
-
- var newStyle = getStyle(vnode, true);
-
- for (name in oldStyle) {
- if (newStyle[name] == null) {
- setProp(el, name, '');
- }
- }
- for (name in newStyle) {
- cur = newStyle[name];
- if (cur !== oldStyle[name]) {
- // ie9 setting to null has no effect, must use empty string
- setProp(el, name, cur == null ? '' : cur);
- }
- }
- }
-
- var style = {
- create: updateStyle,
- update: updateStyle
- };
-
- /* */
-
- /**
- * Add class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- function addClass (el, cls) {
- /* istanbul ignore if */
- if (!cls || !(cls = cls.trim())) {
- return
- }
-
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); });
- } else {
- el.classList.add(cls);
- }
- } else {
- var cur = " " + (el.getAttribute('class') || '') + " ";
- if (cur.indexOf(' ' + cls + ' ') < 0) {
- el.setAttribute('class', (cur + cls).trim());
- }
- }
- }
-
- /**
- * Remove class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- function removeClass (el, cls) {
- /* istanbul ignore if */
- if (!cls || !(cls = cls.trim())) {
- return
- }
-
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); });
- } else {
- el.classList.remove(cls);
- }
- } else {
- var cur = " " + (el.getAttribute('class') || '') + " ";
- var tar = ' ' + cls + ' ';
- while (cur.indexOf(tar) >= 0) {
- cur = cur.replace(tar, ' ');
- }
- el.setAttribute('class', cur.trim());
- }
- }
-
- /* */
-
- function resolveTransition (def$$1) {
- if (!def$$1) {
- return
- }
- /* istanbul ignore else */
- if (typeof def$$1 === 'object') {
- var res = {};
- if (def$$1.css !== false) {
- extend(res, autoCssTransition(def$$1.name || 'v'));
- }
- extend(res, def$$1);
- return res
- } else if (typeof def$$1 === 'string') {
- return autoCssTransition(def$$1)
- }
- }
-
- var autoCssTransition = cached(function (name) {
- return {
- enterClass: (name + "-enter"),
- enterToClass: (name + "-enter-to"),
- enterActiveClass: (name + "-enter-active"),
- leaveClass: (name + "-leave"),
- leaveToClass: (name + "-leave-to"),
- leaveActiveClass: (name + "-leave-active")
- }
- });
-
- var hasTransition = inBrowser && !isIE9;
- var TRANSITION = 'transition';
- var ANIMATION = 'animation';
-
- // Transition property/event sniffing
- var transitionProp = 'transition';
- var transitionEndEvent = 'transitionend';
- var animationProp = 'animation';
- var animationEndEvent = 'animationend';
- if (hasTransition) {
- /* istanbul ignore if */
- if (window.ontransitionend === undefined &&
- window.onwebkittransitionend !== undefined) {
- transitionProp = 'WebkitTransition';
- transitionEndEvent = 'webkitTransitionEnd';
- }
- if (window.onanimationend === undefined &&
- window.onwebkitanimationend !== undefined) {
- animationProp = 'WebkitAnimation';
- animationEndEvent = 'webkitAnimationEnd';
- }
- }
-
- // binding to window is necessary to make hot reload work in IE in strict mode
- var raf = inBrowser && window.requestAnimationFrame
- ? window.requestAnimationFrame.bind(window)
- : setTimeout;
-
- function nextFrame (fn) {
- raf(function () {
- raf(fn);
- });
- }
-
- function addTransitionClass (el, cls) {
- (el._transitionClasses || (el._transitionClasses = [])).push(cls);
- addClass(el, cls);
- }
-
- function removeTransitionClass (el, cls) {
- if (el._transitionClasses) {
- remove(el._transitionClasses, cls);
- }
- removeClass(el, cls);
- }
-
- function whenTransitionEnds (
- el,
- expectedType,
- cb
- ) {
- var ref = getTransitionInfo(el, expectedType);
- var type = ref.type;
- var timeout = ref.timeout;
- var propCount = ref.propCount;
- if (!type) { return cb() }
- var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
- var ended = 0;
- var end = function () {
- el.removeEventListener(event, onEnd);
- cb();
- };
- var onEnd = function (e) {
- if (e.target === el) {
- if (++ended >= propCount) {
- end();
- }
- }
- };
- setTimeout(function () {
- if (ended < propCount) {
- end();
- }
- }, timeout + 1);
- el.addEventListener(event, onEnd);
- }
-
- var transformRE = /\b(transform|all)(,|$)/;
-
- function getTransitionInfo (el, expectedType) {
- var styles = window.getComputedStyle(el);
- var transitionDelays = styles[transitionProp + 'Delay'].split(', ');
- var transitionDurations = styles[transitionProp + 'Duration'].split(', ');
- var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
- var animationDelays = styles[animationProp + 'Delay'].split(', ');
- var animationDurations = styles[animationProp + 'Duration'].split(', ');
- var animationTimeout = getTimeout(animationDelays, animationDurations);
-
- var type;
- var timeout = 0;
- var propCount = 0;
- /* istanbul ignore if */
- if (expectedType === TRANSITION) {
- if (transitionTimeout > 0) {
- type = TRANSITION;
- timeout = transitionTimeout;
- propCount = transitionDurations.length;
- }
- } else if (expectedType === ANIMATION) {
- if (animationTimeout > 0) {
- type = ANIMATION;
- timeout = animationTimeout;
- propCount = animationDurations.length;
- }
- } else {
- timeout = Math.max(transitionTimeout, animationTimeout);
- type = timeout > 0
- ? transitionTimeout > animationTimeout
- ? TRANSITION
- : ANIMATION
- : null;
- propCount = type
- ? type === TRANSITION
- ? transitionDurations.length
- : animationDurations.length
- : 0;
- }
- var hasTransform =
- type === TRANSITION &&
- transformRE.test(styles[transitionProp + 'Property']);
- return {
- type: type,
- timeout: timeout,
- propCount: propCount,
- hasTransform: hasTransform
- }
- }
-
- function getTimeout (delays, durations) {
- /* istanbul ignore next */
- while (delays.length < durations.length) {
- delays = delays.concat(delays);
- }
-
- return Math.max.apply(null, durations.map(function (d, i) {
- return toMs(d) + toMs(delays[i])
- }))
- }
-
- function toMs (s) {
- return Number(s.slice(0, -1)) * 1000
- }
-
- /* */
-
- function enter (vnode, toggleDisplay) {
- var el = vnode.elm;
-
- // call leave callback now
- if (el._leaveCb) {
- el._leaveCb.cancelled = true;
- el._leaveCb();
- }
-
- var data = resolveTransition(vnode.data.transition);
- if (!data) {
- return
- }
-
- /* istanbul ignore if */
- if (el._enterCb || el.nodeType !== 1) {
- return
- }
-
- var css = data.css;
- var type = data.type;
- var enterClass = data.enterClass;
- var enterToClass = data.enterToClass;
- var enterActiveClass = data.enterActiveClass;
- var appearClass = data.appearClass;
- var appearToClass = data.appearToClass;
- var appearActiveClass = data.appearActiveClass;
- var beforeEnter = data.beforeEnter;
- var enter = data.enter;
- var afterEnter = data.afterEnter;
- var enterCancelled = data.enterCancelled;
- var beforeAppear = data.beforeAppear;
- var appear = data.appear;
- var afterAppear = data.afterAppear;
- var appearCancelled = data.appearCancelled;
- var duration = data.duration;
-
- // activeInstance will always be the component managing this
- // transition. One edge case to check is when the is placed
- // as the root node of a child component. In that case we need to check
- // 's parent for appear check.
- var context = activeInstance;
- var transitionNode = activeInstance.$vnode;
- while (transitionNode && transitionNode.parent) {
- transitionNode = transitionNode.parent;
- context = transitionNode.context;
- }
-
- var isAppear = !context._isMounted || !vnode.isRootInsert;
-
- if (isAppear && !appear && appear !== '') {
- return
- }
-
- var startClass = isAppear && appearClass
- ? appearClass
- : enterClass;
- var activeClass = isAppear && appearActiveClass
- ? appearActiveClass
- : enterActiveClass;
- var toClass = isAppear && appearToClass
- ? appearToClass
- : enterToClass;
-
- var beforeEnterHook = isAppear
- ? (beforeAppear || beforeEnter)
- : beforeEnter;
- var enterHook = isAppear
- ? (typeof appear === 'function' ? appear : enter)
- : enter;
- var afterEnterHook = isAppear
- ? (afterAppear || afterEnter)
- : afterEnter;
- var enterCancelledHook = isAppear
- ? (appearCancelled || enterCancelled)
- : enterCancelled;
-
- var explicitEnterDuration = toNumber(
- isObject(duration)
- ? duration.enter
- : duration
- );
-
- if (false) {
- checkDuration(explicitEnterDuration, 'enter', vnode);
- }
-
- var expectsCSS = css !== false && !isIE9;
- var userWantsControl = getHookArgumentsLength(enterHook);
-
- var cb = el._enterCb = once(function () {
- if (expectsCSS) {
- removeTransitionClass(el, toClass);
- removeTransitionClass(el, activeClass);
- }
- if (cb.cancelled) {
- if (expectsCSS) {
- removeTransitionClass(el, startClass);
- }
- enterCancelledHook && enterCancelledHook(el);
- } else {
- afterEnterHook && afterEnterHook(el);
- }
- el._enterCb = null;
- });
-
- if (!vnode.data.show) {
- // remove pending leave element on enter by injecting an insert hook
- mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {
- var parent = el.parentNode;
- var pendingNode = parent && parent._pending && parent._pending[vnode.key];
- if (pendingNode &&
- pendingNode.tag === vnode.tag &&
- pendingNode.elm._leaveCb) {
- pendingNode.elm._leaveCb();
- }
- enterHook && enterHook(el, cb);
- });
- }
-
- // start enter transition
- beforeEnterHook && beforeEnterHook(el);
- if (expectsCSS) {
- addTransitionClass(el, startClass);
- addTransitionClass(el, activeClass);
- nextFrame(function () {
- addTransitionClass(el, toClass);
- removeTransitionClass(el, startClass);
- if (!cb.cancelled && !userWantsControl) {
- if (isValidDuration(explicitEnterDuration)) {
- setTimeout(cb, explicitEnterDuration);
- } else {
- whenTransitionEnds(el, type, cb);
- }
- }
- });
- }
-
- if (vnode.data.show) {
- toggleDisplay && toggleDisplay();
- enterHook && enterHook(el, cb);
- }
-
- if (!expectsCSS && !userWantsControl) {
- cb();
- }
- }
-
- function leave (vnode, rm) {
- var el = vnode.elm;
-
- // call enter callback now
- if (el._enterCb) {
- el._enterCb.cancelled = true;
- el._enterCb();
- }
-
- var data = resolveTransition(vnode.data.transition);
- if (!data) {
- return rm()
- }
-
- /* istanbul ignore if */
- if (el._leaveCb || el.nodeType !== 1) {
- return
- }
-
- var css = data.css;
- var type = data.type;
- var leaveClass = data.leaveClass;
- var leaveToClass = data.leaveToClass;
- var leaveActiveClass = data.leaveActiveClass;
- var beforeLeave = data.beforeLeave;
- var leave = data.leave;
- var afterLeave = data.afterLeave;
- var leaveCancelled = data.leaveCancelled;
- var delayLeave = data.delayLeave;
- var duration = data.duration;
-
- var expectsCSS = css !== false && !isIE9;
- var userWantsControl = getHookArgumentsLength(leave);
-
- var explicitLeaveDuration = toNumber(
- isObject(duration)
- ? duration.leave
- : duration
- );
-
- if (false) {
- checkDuration(explicitLeaveDuration, 'leave', vnode);
- }
-
- var cb = el._leaveCb = once(function () {
- if (el.parentNode && el.parentNode._pending) {
- el.parentNode._pending[vnode.key] = null;
- }
- if (expectsCSS) {
- removeTransitionClass(el, leaveToClass);
- removeTransitionClass(el, leaveActiveClass);
- }
- if (cb.cancelled) {
- if (expectsCSS) {
- removeTransitionClass(el, leaveClass);
- }
- leaveCancelled && leaveCancelled(el);
- } else {
- rm();
- afterLeave && afterLeave(el);
- }
- el._leaveCb = null;
- });
-
- if (delayLeave) {
- delayLeave(performLeave);
- } else {
- performLeave();
- }
-
- function performLeave () {
- // the delayed leave may have already been cancelled
- if (cb.cancelled) {
- return
- }
- // record leaving element
- if (!vnode.data.show) {
- (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode;
- }
- beforeLeave && beforeLeave(el);
- if (expectsCSS) {
- addTransitionClass(el, leaveClass);
- addTransitionClass(el, leaveActiveClass);
- nextFrame(function () {
- addTransitionClass(el, leaveToClass);
- removeTransitionClass(el, leaveClass);
- if (!cb.cancelled && !userWantsControl) {
- if (isValidDuration(explicitLeaveDuration)) {
- setTimeout(cb, explicitLeaveDuration);
- } else {
- whenTransitionEnds(el, type, cb);
- }
- }
- });
- }
- leave && leave(el, cb);
- if (!expectsCSS && !userWantsControl) {
- cb();
- }
- }
- }
-
- // only used in dev mode
- function checkDuration (val, name, vnode) {
- if (typeof val !== 'number') {
- warn(
- " explicit " + name + " duration is not a valid number - " +
- "got " + (JSON.stringify(val)) + ".",
- vnode.context
- );
- } else if (isNaN(val)) {
- warn(
- " explicit " + name + " duration is NaN - " +
- 'the duration expression might be incorrect.',
- vnode.context
- );
- }
- }
-
- function isValidDuration (val) {
- return typeof val === 'number' && !isNaN(val)
- }
-
- /**
- * Normalize a transition hook's argument length. The hook may be:
- * - a merged hook (invoker) with the original in .fns
- * - a wrapped component method (check ._length)
- * - a plain function (.length)
- */
- function getHookArgumentsLength (fn) {
- if (!fn) { return false }
- var invokerFns = fn.fns;
- if (invokerFns) {
- // invoker
- return getHookArgumentsLength(
- Array.isArray(invokerFns)
- ? invokerFns[0]
- : invokerFns
- )
- } else {
- return (fn._length || fn.length) > 1
- }
- }
-
- function _enter (_, vnode) {
- if (!vnode.data.show) {
- enter(vnode);
- }
- }
-
- var transition = inBrowser ? {
- create: _enter,
- activate: _enter,
- remove: function remove$$1 (vnode, rm) {
- /* istanbul ignore else */
- if (!vnode.data.show) {
- leave(vnode, rm);
- } else {
- rm();
- }
- }
- } : {};
-
- var platformModules = [
- attrs,
- klass,
- events,
- domProps,
- style,
- transition
- ];
-
- /* */
-
- // the directive module should be applied last, after all
- // built-in modules have been applied.
- var modules = platformModules.concat(baseModules);
-
- var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });
-
- /**
- * Not type checking this file because flow doesn't like attaching
- * properties to Elements.
- */
-
- /* istanbul ignore if */
- if (isIE9) {
- // http://www.matts411.com/post/internet-explorer-9-oninput/
- document.addEventListener('selectionchange', function () {
- var el = document.activeElement;
- if (el && el.vmodel) {
- trigger(el, 'input');
- }
- });
- }
-
- var model$1 = {
- inserted: function inserted (el, binding, vnode) {
- if (vnode.tag === 'select') {
- var cb = function () {
- setSelected(el, binding, vnode.context);
- };
- cb();
- /* istanbul ignore if */
- if (isIE || isEdge) {
- setTimeout(cb, 0);
- }
- } else if (vnode.tag === 'textarea' || el.type === 'text' || el.type === 'password') {
- el._vModifiers = binding.modifiers;
- if (!binding.modifiers.lazy) {
- if (!isAndroid) {
- el.addEventListener('compositionstart', onCompositionStart);
- el.addEventListener('compositionend', onCompositionEnd);
- }
- /* istanbul ignore if */
- if (isIE9) {
- el.vmodel = true;
- }
- }
- }
- },
- componentUpdated: function componentUpdated (el, binding, vnode) {
- if (vnode.tag === 'select') {
- setSelected(el, binding, vnode.context);
- // in case the options rendered by v-for have changed,
- // it's possible that the value is out-of-sync with the rendered options.
- // detect such cases and filter out values that no longer has a matching
- // option in the DOM.
- var needReset = el.multiple
- ? binding.value.some(function (v) { return hasNoMatchingOption(v, el.options); })
- : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, el.options);
- if (needReset) {
- trigger(el, 'change');
- }
- }
- }
- };
-
- function setSelected (el, binding, vm) {
- var value = binding.value;
- var isMultiple = el.multiple;
- if (isMultiple && !Array.isArray(value)) {
- ("production") !== 'production' && warn(
- "