UNPKG

36.7 kBJavaScriptView Raw
1module.exports =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // define getter function for harmony exports
38/******/ __webpack_require__.d = function(exports, name, getter) {
39/******/ if(!__webpack_require__.o(exports, name)) {
40/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
41/******/ }
42/******/ };
43/******/
44/******/ // define __esModule on exports
45/******/ __webpack_require__.r = function(exports) {
46/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
47/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
48/******/ }
49/******/ Object.defineProperty(exports, '__esModule', { value: true });
50/******/ };
51/******/
52/******/ // create a fake namespace object
53/******/ // mode & 1: value is a module id, require it
54/******/ // mode & 2: merge all properties of value into the ns
55/******/ // mode & 4: return value when already ns object
56/******/ // mode & 8|1: behave like require
57/******/ __webpack_require__.t = function(value, mode) {
58/******/ if(mode & 1) value = __webpack_require__(value);
59/******/ if(mode & 8) return value;
60/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
61/******/ var ns = Object.create(null);
62/******/ __webpack_require__.r(ns);
63/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
64/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
65/******/ return ns;
66/******/ };
67/******/
68/******/ // getDefaultExport function for compatibility with non-harmony modules
69/******/ __webpack_require__.n = function(module) {
70/******/ var getter = module && module.__esModule ?
71/******/ function getDefault() { return module['default']; } :
72/******/ function getModuleExports() { return module; };
73/******/ __webpack_require__.d(getter, 'a', getter);
74/******/ return getter;
75/******/ };
76/******/
77/******/ // Object.prototype.hasOwnProperty.call
78/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
79/******/
80/******/ // __webpack_public_path__
81/******/ __webpack_require__.p = "/dist/";
82/******/
83/******/
84/******/ // Load entry module and return exports
85/******/ return __webpack_require__(__webpack_require__.s = 56);
86/******/ })
87/************************************************************************/
88/******/ ({
89
90/***/ 0:
91/***/ (function(module, __webpack_exports__, __webpack_require__) {
92
93"use strict";
94/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
95/* globals __VUE_SSR_CONTEXT__ */
96
97// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
98// This module is a runtime utility for cleaner component module output and will
99// be included in the final webpack user bundle.
100
101function normalizeComponent (
102 scriptExports,
103 render,
104 staticRenderFns,
105 functionalTemplate,
106 injectStyles,
107 scopeId,
108 moduleIdentifier, /* server only */
109 shadowMode /* vue-cli only */
110) {
111 // Vue.extend constructor export interop
112 var options = typeof scriptExports === 'function'
113 ? scriptExports.options
114 : scriptExports
115
116 // render functions
117 if (render) {
118 options.render = render
119 options.staticRenderFns = staticRenderFns
120 options._compiled = true
121 }
122
123 // functional template
124 if (functionalTemplate) {
125 options.functional = true
126 }
127
128 // scopedId
129 if (scopeId) {
130 options._scopeId = 'data-v-' + scopeId
131 }
132
133 var hook
134 if (moduleIdentifier) { // server build
135 hook = function (context) {
136 // 2.3 injection
137 context =
138 context || // cached call
139 (this.$vnode && this.$vnode.ssrContext) || // stateful
140 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
141 // 2.2 with runInNewContext: true
142 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
143 context = __VUE_SSR_CONTEXT__
144 }
145 // inject component styles
146 if (injectStyles) {
147 injectStyles.call(this, context)
148 }
149 // register component module identifier for async chunk inferrence
150 if (context && context._registeredComponents) {
151 context._registeredComponents.add(moduleIdentifier)
152 }
153 }
154 // used by ssr in case component is cached and beforeCreate
155 // never gets called
156 options._ssrRegister = hook
157 } else if (injectStyles) {
158 hook = shadowMode
159 ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
160 : injectStyles
161 }
162
163 if (hook) {
164 if (options.functional) {
165 // for template-only hot-reload because in that case the render fn doesn't
166 // go through the normalizer
167 options._injectStyles = hook
168 // register for functioal component in vue file
169 var originalRender = options.render
170 options.render = function renderWithStyleInjection (h, context) {
171 hook.call(context)
172 return originalRender(h, context)
173 }
174 } else {
175 // inject component registration as beforeCreate hook
176 var existing = options.beforeCreate
177 options.beforeCreate = existing
178 ? [].concat(existing, hook)
179 : [hook]
180 }
181 }
182
183 return {
184 exports: scriptExports,
185 options: options
186 }
187}
188
189
190/***/ }),
191
192/***/ 11:
193/***/ (function(module, exports) {
194
195module.exports = require("element-ui/lib/mixins/migrating");
196
197/***/ }),
198
199/***/ 26:
200/***/ (function(module, exports) {
201
202module.exports = require("babel-helper-vue-jsx-merge-props");
203
204/***/ }),
205
206/***/ 41:
207/***/ (function(module, exports) {
208
209module.exports = require("element-ui/lib/progress");
210
211/***/ }),
212
213/***/ 56:
214/***/ (function(module, __webpack_exports__, __webpack_require__) {
215
216"use strict";
217__webpack_require__.r(__webpack_exports__);
218
219// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-list.vue?vue&type=template&id=173fedf5&
220var upload_listvue_type_template_id_173fedf5_render = function() {
221 var _vm = this
222 var _h = _vm.$createElement
223 var _c = _vm._self._c || _h
224 return _c(
225 "transition-group",
226 {
227 class: [
228 "el-upload-list",
229 "el-upload-list--" + _vm.listType,
230 { "is-disabled": _vm.disabled }
231 ],
232 attrs: { tag: "ul", name: "el-list" }
233 },
234 _vm._l(_vm.files, function(file) {
235 return _c(
236 "li",
237 {
238 key: file.uid,
239 class: [
240 "el-upload-list__item",
241 "is-" + file.status,
242 _vm.focusing ? "focusing" : ""
243 ],
244 attrs: { tabindex: "0" },
245 on: {
246 keydown: function($event) {
247 if (
248 !("button" in $event) &&
249 _vm._k($event.keyCode, "delete", [8, 46], $event.key, [
250 "Backspace",
251 "Delete",
252 "Del"
253 ])
254 ) {
255 return null
256 }
257 !_vm.disabled && _vm.$emit("remove", file)
258 },
259 focus: function($event) {
260 _vm.focusing = true
261 },
262 blur: function($event) {
263 _vm.focusing = false
264 },
265 click: function($event) {
266 _vm.focusing = false
267 }
268 }
269 },
270 [
271 _vm._t(
272 "default",
273 [
274 file.status !== "uploading" &&
275 ["picture-card", "picture"].indexOf(_vm.listType) > -1
276 ? _c("img", {
277 staticClass: "el-upload-list__item-thumbnail",
278 attrs: { src: file.url, alt: "" }
279 })
280 : _vm._e(),
281 _c(
282 "a",
283 {
284 staticClass: "el-upload-list__item-name",
285 on: {
286 click: function($event) {
287 _vm.handleClick(file)
288 }
289 }
290 },
291 [
292 _c("i", { staticClass: "el-icon-document" }),
293 _vm._v(_vm._s(file.name) + "\n ")
294 ]
295 ),
296 _c(
297 "label",
298 { staticClass: "el-upload-list__item-status-label" },
299 [
300 _c("i", {
301 class: {
302 "el-icon-upload-success": true,
303 "el-icon-circle-check": _vm.listType === "text",
304 "el-icon-check":
305 ["picture-card", "picture"].indexOf(_vm.listType) > -1
306 }
307 })
308 ]
309 ),
310 !_vm.disabled
311 ? _c("i", {
312 staticClass: "el-icon-close",
313 on: {
314 click: function($event) {
315 _vm.$emit("remove", file)
316 }
317 }
318 })
319 : _vm._e(),
320 !_vm.disabled
321 ? _c("i", { staticClass: "el-icon-close-tip" }, [
322 _vm._v(_vm._s(_vm.t("el.upload.deleteTip")))
323 ])
324 : _vm._e(),
325 file.status === "uploading"
326 ? _c("el-progress", {
327 attrs: {
328 type: _vm.listType === "picture-card" ? "circle" : "line",
329 "stroke-width": _vm.listType === "picture-card" ? 6 : 2,
330 percentage: _vm.parsePercentage(file.percentage)
331 }
332 })
333 : _vm._e(),
334 _vm.listType === "picture-card"
335 ? _c("span", { staticClass: "el-upload-list__item-actions" }, [
336 _vm.handlePreview && _vm.listType === "picture-card"
337 ? _c(
338 "span",
339 {
340 staticClass: "el-upload-list__item-preview",
341 on: {
342 click: function($event) {
343 _vm.handlePreview(file)
344 }
345 }
346 },
347 [_c("i", { staticClass: "el-icon-zoom-in" })]
348 )
349 : _vm._e(),
350 !_vm.disabled
351 ? _c(
352 "span",
353 {
354 staticClass: "el-upload-list__item-delete",
355 on: {
356 click: function($event) {
357 _vm.$emit("remove", file)
358 }
359 }
360 },
361 [_c("i", { staticClass: "el-icon-delete" })]
362 )
363 : _vm._e()
364 ])
365 : _vm._e()
366 ],
367 { file: file }
368 )
369 ],
370 2
371 )
372 }),
373 0
374 )
375}
376var staticRenderFns = []
377upload_listvue_type_template_id_173fedf5_render._withStripped = true
378
379
380// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue?vue&type=template&id=173fedf5&
381
382// EXTERNAL MODULE: external "element-ui/lib/mixins/locale"
383var locale_ = __webpack_require__(6);
384var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
385
386// EXTERNAL MODULE: external "element-ui/lib/progress"
387var progress_ = __webpack_require__(41);
388var progress_default = /*#__PURE__*/__webpack_require__.n(progress_);
389
390// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-list.vue?vue&type=script&lang=js&
391//
392//
393//
394//
395//
396//
397//
398//
399//
400//
401//
402//
403//
404//
405//
406//
407//
408//
409//
410//
411//
412//
413//
414//
415//
416//
417//
418//
419//
420//
421//
422//
423//
424//
425//
426//
427//
428//
429//
430//
431//
432//
433//
434//
435//
436//
437//
438//
439//
440//
441//
442//
443//
444//
445//
446//
447//
448//
449//
450//
451//
452//
453//
454//
455
456
457
458
459/* harmony default export */ var upload_listvue_type_script_lang_js_ = ({
460
461 name: 'ElUploadList',
462
463 mixins: [locale_default.a],
464
465 data: function data() {
466 return {
467 focusing: false
468 };
469 },
470
471 components: { ElProgress: progress_default.a },
472
473 props: {
474 files: {
475 type: Array,
476 default: function _default() {
477 return [];
478 }
479 },
480 disabled: {
481 type: Boolean,
482 default: false
483 },
484 handlePreview: Function,
485 listType: String
486 },
487 methods: {
488 parsePercentage: function parsePercentage(val) {
489 return parseInt(val, 10);
490 },
491 handleClick: function handleClick(file) {
492 this.handlePreview && this.handlePreview(file);
493 }
494 }
495});
496// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue?vue&type=script&lang=js&
497 /* harmony default export */ var src_upload_listvue_type_script_lang_js_ = (upload_listvue_type_script_lang_js_);
498// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
499var componentNormalizer = __webpack_require__(0);
500
501// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue
502
503
504
505
506
507/* normalize component */
508
509var component = Object(componentNormalizer["a" /* default */])(
510 src_upload_listvue_type_script_lang_js_,
511 upload_listvue_type_template_id_173fedf5_render,
512 staticRenderFns,
513 false,
514 null,
515 null,
516 null
517
518)
519
520/* hot reload */
521if (false) { var api; }
522component.options.__file = "packages/upload/src/upload-list.vue"
523/* harmony default export */ var upload_list = (component.exports);
524// EXTERNAL MODULE: external "babel-helper-vue-jsx-merge-props"
525var external_babel_helper_vue_jsx_merge_props_ = __webpack_require__(26);
526var external_babel_helper_vue_jsx_merge_props_default = /*#__PURE__*/__webpack_require__.n(external_babel_helper_vue_jsx_merge_props_);
527
528// CONCATENATED MODULE: ./packages/upload/src/ajax.js
529function getError(action, option, xhr) {
530 var msg = void 0;
531 if (xhr.response) {
532 msg = '' + (xhr.response.error || xhr.response);
533 } else if (xhr.responseText) {
534 msg = '' + xhr.responseText;
535 } else {
536 msg = 'fail to post ' + action + ' ' + xhr.status;
537 }
538
539 var err = new Error(msg);
540 err.status = xhr.status;
541 err.method = 'post';
542 err.url = action;
543 return err;
544}
545
546function getBody(xhr) {
547 var text = xhr.responseText || xhr.response;
548 if (!text) {
549 return text;
550 }
551
552 try {
553 return JSON.parse(text);
554 } catch (e) {
555 return text;
556 }
557}
558
559function upload(option) {
560 if (typeof XMLHttpRequest === 'undefined') {
561 return;
562 }
563
564 var xhr = new XMLHttpRequest();
565 var action = option.action;
566
567 if (xhr.upload) {
568 xhr.upload.onprogress = function progress(e) {
569 if (e.total > 0) {
570 e.percent = e.loaded / e.total * 100;
571 }
572 option.onProgress(e);
573 };
574 }
575
576 var formData = new FormData();
577
578 if (option.data) {
579 Object.keys(option.data).forEach(function (key) {
580 formData.append(key, option.data[key]);
581 });
582 }
583
584 formData.append(option.filename, option.file, option.file.name);
585
586 xhr.onerror = function error(e) {
587 option.onError(e);
588 };
589
590 xhr.onload = function onload() {
591 if (xhr.status < 200 || xhr.status >= 300) {
592 return option.onError(getError(action, option, xhr));
593 }
594
595 option.onSuccess(getBody(xhr));
596 };
597
598 xhr.open('post', action, true);
599
600 if (option.withCredentials && 'withCredentials' in xhr) {
601 xhr.withCredentials = true;
602 }
603
604 var headers = option.headers || {};
605
606 for (var item in headers) {
607 if (headers.hasOwnProperty(item) && headers[item] !== null) {
608 xhr.setRequestHeader(item, headers[item]);
609 }
610 }
611 xhr.send(formData);
612 return xhr;
613}
614// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-dragger.vue?vue&type=template&id=7ebbf219&
615var upload_draggervue_type_template_id_7ebbf219_render = function() {
616 var _vm = this
617 var _h = _vm.$createElement
618 var _c = _vm._self._c || _h
619 return _c(
620 "div",
621 {
622 staticClass: "el-upload-dragger",
623 class: {
624 "is-dragover": _vm.dragover
625 },
626 on: {
627 drop: function($event) {
628 $event.preventDefault()
629 return _vm.onDrop($event)
630 },
631 dragover: function($event) {
632 $event.preventDefault()
633 return _vm.onDragover($event)
634 },
635 dragleave: function($event) {
636 $event.preventDefault()
637 _vm.dragover = false
638 }
639 }
640 },
641 [_vm._t("default")],
642 2
643 )
644}
645var upload_draggervue_type_template_id_7ebbf219_staticRenderFns = []
646upload_draggervue_type_template_id_7ebbf219_render._withStripped = true
647
648
649// CONCATENATED MODULE: ./packages/upload/src/upload-dragger.vue?vue&type=template&id=7ebbf219&
650
651// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload-dragger.vue?vue&type=script&lang=js&
652//
653//
654//
655//
656//
657//
658//
659//
660//
661//
662//
663//
664//
665
666/* harmony default export */ var upload_draggervue_type_script_lang_js_ = ({
667 name: 'ElUploadDrag',
668 props: {
669 disabled: Boolean
670 },
671 inject: {
672 uploader: {
673 default: ''
674 }
675 },
676 data: function data() {
677 return {
678 dragover: false
679 };
680 },
681
682 methods: {
683 onDragover: function onDragover() {
684 if (!this.disabled) {
685 this.dragover = true;
686 }
687 },
688 onDrop: function onDrop(e) {
689 if (this.disabled || !this.uploader) return;
690 var accept = this.uploader.accept;
691 this.dragover = false;
692 if (!accept) {
693 this.$emit('file', e.dataTransfer.files);
694 return;
695 }
696 this.$emit('file', [].slice.call(e.dataTransfer.files).filter(function (file) {
697 var type = file.type,
698 name = file.name;
699
700 var extension = name.indexOf('.') > -1 ? '.' + name.split('.').pop() : '';
701 var baseType = type.replace(/\/.*$/, '');
702 return accept.split(',').map(function (type) {
703 return type.trim();
704 }).filter(function (type) {
705 return type;
706 }).some(function (acceptedType) {
707 if (/\..+$/.test(acceptedType)) {
708 return extension === acceptedType;
709 }
710 if (/\/\*$/.test(acceptedType)) {
711 return baseType === acceptedType.replace(/\/\*$/, '');
712 }
713 if (/^[^\/]+\/[^\/]+$/.test(acceptedType)) {
714 return type === acceptedType;
715 }
716 return false;
717 });
718 }));
719 }
720 }
721});
722// CONCATENATED MODULE: ./packages/upload/src/upload-dragger.vue?vue&type=script&lang=js&
723 /* harmony default export */ var src_upload_draggervue_type_script_lang_js_ = (upload_draggervue_type_script_lang_js_);
724// CONCATENATED MODULE: ./packages/upload/src/upload-dragger.vue
725
726
727
728
729
730/* normalize component */
731
732var upload_dragger_component = Object(componentNormalizer["a" /* default */])(
733 src_upload_draggervue_type_script_lang_js_,
734 upload_draggervue_type_template_id_7ebbf219_render,
735 upload_draggervue_type_template_id_7ebbf219_staticRenderFns,
736 false,
737 null,
738 null,
739 null
740
741)
742
743/* hot reload */
744if (false) { var upload_dragger_api; }
745upload_dragger_component.options.__file = "packages/upload/src/upload-dragger.vue"
746/* harmony default export */ var upload_dragger = (upload_dragger_component.exports);
747// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/upload.vue?vue&type=script&lang=js&
748
749
750
751
752
753/* harmony default export */ var uploadvue_type_script_lang_js_ = ({
754 inject: ['uploader'],
755 components: {
756 UploadDragger: upload_dragger
757 },
758 props: {
759 type: String,
760 action: {
761 type: String,
762 required: true
763 },
764 name: {
765 type: String,
766 default: 'file'
767 },
768 data: Object,
769 headers: Object,
770 withCredentials: Boolean,
771 multiple: Boolean,
772 accept: String,
773 onStart: Function,
774 onProgress: Function,
775 onSuccess: Function,
776 onError: Function,
777 beforeUpload: Function,
778 drag: Boolean,
779 onPreview: {
780 type: Function,
781 default: function _default() {}
782 },
783 onRemove: {
784 type: Function,
785 default: function _default() {}
786 },
787 fileList: Array,
788 autoUpload: Boolean,
789 listType: String,
790 httpRequest: {
791 type: Function,
792 default: upload
793 },
794 disabled: Boolean,
795 limit: Number,
796 onExceed: Function
797 },
798
799 data: function data() {
800 return {
801 mouseover: false,
802 reqs: {}
803 };
804 },
805
806
807 methods: {
808 isImage: function isImage(str) {
809 return str.indexOf('image') !== -1;
810 },
811 handleChange: function handleChange(ev) {
812 var files = ev.target.files;
813
814 if (!files) return;
815 this.uploadFiles(files);
816 },
817 uploadFiles: function uploadFiles(files) {
818 var _this = this;
819
820 if (this.limit && this.fileList.length + files.length > this.limit) {
821 this.onExceed && this.onExceed(files, this.fileList);
822 return;
823 }
824
825 var postFiles = Array.prototype.slice.call(files);
826 if (!this.multiple) {
827 postFiles = postFiles.slice(0, 1);
828 }
829
830 if (postFiles.length === 0) {
831 return;
832 }
833
834 postFiles.forEach(function (rawFile) {
835 _this.onStart(rawFile);
836 if (_this.autoUpload) _this.upload(rawFile);
837 });
838 },
839 upload: function upload(rawFile) {
840 var _this2 = this;
841
842 this.$refs.input.value = null;
843
844 if (!this.beforeUpload) {
845 return this.post(rawFile);
846 }
847
848 var before = this.beforeUpload(rawFile);
849 if (before && before.then) {
850 before.then(function (processedFile) {
851 var fileType = Object.prototype.toString.call(processedFile);
852
853 if (fileType === '[object File]' || fileType === '[object Blob]') {
854 if (fileType === '[object Blob]') {
855 processedFile = new File([processedFile], rawFile.name, {
856 type: rawFile.type
857 });
858 }
859 for (var p in rawFile) {
860 if (rawFile.hasOwnProperty(p)) {
861 processedFile[p] = rawFile[p];
862 }
863 }
864 _this2.post(processedFile);
865 } else {
866 _this2.post(rawFile);
867 }
868 }, function () {
869 _this2.onRemove(null, rawFile);
870 });
871 } else if (before !== false) {
872 this.post(rawFile);
873 } else {
874 this.onRemove(null, rawFile);
875 }
876 },
877 abort: function abort(file) {
878 var reqs = this.reqs;
879
880 if (file) {
881 var uid = file;
882 if (file.uid) uid = file.uid;
883 if (reqs[uid]) {
884 reqs[uid].abort();
885 }
886 } else {
887 Object.keys(reqs).forEach(function (uid) {
888 if (reqs[uid]) reqs[uid].abort();
889 delete reqs[uid];
890 });
891 }
892 },
893 post: function post(rawFile) {
894 var _this3 = this;
895
896 var uid = rawFile.uid;
897
898 var options = {
899 headers: this.headers,
900 withCredentials: this.withCredentials,
901 file: rawFile,
902 data: this.data,
903 filename: this.name,
904 action: this.action,
905 onProgress: function onProgress(e) {
906 _this3.onProgress(e, rawFile);
907 },
908 onSuccess: function onSuccess(res) {
909 _this3.onSuccess(res, rawFile);
910 delete _this3.reqs[uid];
911 },
912 onError: function onError(err) {
913 _this3.onError(err, rawFile);
914 delete _this3.reqs[uid];
915 }
916 };
917 var req = this.httpRequest(options);
918 this.reqs[uid] = req;
919 if (req && req.then) {
920 req.then(options.onSuccess, options.onError);
921 }
922 },
923 handleClick: function handleClick() {
924 if (!this.disabled) {
925 this.$refs.input.value = null;
926 this.$refs.input.click();
927 }
928 },
929 handleKeydown: function handleKeydown(e) {
930 if (e.target !== e.currentTarget) return;
931 if (e.keyCode === 13 || e.keyCode === 32) {
932 this.handleClick();
933 }
934 }
935 },
936
937 render: function render(h) {
938 var handleClick = this.handleClick,
939 drag = this.drag,
940 name = this.name,
941 handleChange = this.handleChange,
942 multiple = this.multiple,
943 accept = this.accept,
944 listType = this.listType,
945 uploadFiles = this.uploadFiles,
946 disabled = this.disabled,
947 handleKeydown = this.handleKeydown;
948
949 var data = {
950 class: {
951 'el-upload': true
952 },
953 on: {
954 click: handleClick,
955 keydown: handleKeydown
956 }
957 };
958 data.class['el-upload--' + listType] = true;
959 return h(
960 'div',
961 external_babel_helper_vue_jsx_merge_props_default()([data, {
962 attrs: { tabindex: '0' }
963 }]),
964 [drag ? h(
965 'upload-dragger',
966 {
967 attrs: { disabled: disabled },
968 on: {
969 'file': uploadFiles
970 }
971 },
972 [this.$slots.default]
973 ) : this.$slots.default, h('input', { 'class': 'el-upload__input', attrs: { type: 'file', name: name, multiple: multiple, accept: accept },
974 ref: 'input', on: {
975 'change': handleChange
976 }
977 })]
978 );
979 }
980});
981// CONCATENATED MODULE: ./packages/upload/src/upload.vue?vue&type=script&lang=js&
982 /* harmony default export */ var src_uploadvue_type_script_lang_js_ = (uploadvue_type_script_lang_js_);
983// CONCATENATED MODULE: ./packages/upload/src/upload.vue
984var upload_render, upload_staticRenderFns
985
986
987
988
989/* normalize component */
990
991var upload_component = Object(componentNormalizer["a" /* default */])(
992 src_uploadvue_type_script_lang_js_,
993 upload_render,
994 upload_staticRenderFns,
995 false,
996 null,
997 null,
998 null
999
1000)
1001
1002/* hot reload */
1003if (false) { var upload_api; }
1004upload_component.options.__file = "packages/upload/src/upload.vue"
1005/* harmony default export */ var src_upload = (upload_component.exports);
1006// EXTERNAL MODULE: external "element-ui/lib/mixins/migrating"
1007var migrating_ = __webpack_require__(11);
1008var migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);
1009
1010// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/upload/src/index.vue?vue&type=script&lang=js&
1011
1012
1013
1014
1015
1016
1017function noop() {}
1018
1019/* harmony default export */ var srcvue_type_script_lang_js_ = ({
1020 name: 'ElUpload',
1021
1022 mixins: [migrating_default.a],
1023
1024 components: {
1025 ElProgress: progress_default.a,
1026 UploadList: upload_list,
1027 Upload: src_upload
1028 },
1029
1030 provide: function provide() {
1031 return {
1032 uploader: this
1033 };
1034 },
1035
1036
1037 inject: {
1038 elForm: {
1039 default: ''
1040 }
1041 },
1042
1043 props: {
1044 action: {
1045 type: String,
1046 required: true
1047 },
1048 headers: {
1049 type: Object,
1050 default: function _default() {
1051 return {};
1052 }
1053 },
1054 data: Object,
1055 multiple: Boolean,
1056 name: {
1057 type: String,
1058 default: 'file'
1059 },
1060 drag: Boolean,
1061 dragger: Boolean,
1062 withCredentials: Boolean,
1063 showFileList: {
1064 type: Boolean,
1065 default: true
1066 },
1067 accept: String,
1068 type: {
1069 type: String,
1070 default: 'select'
1071 },
1072 beforeUpload: Function,
1073 beforeRemove: Function,
1074 onRemove: {
1075 type: Function,
1076 default: noop
1077 },
1078 onChange: {
1079 type: Function,
1080 default: noop
1081 },
1082 onPreview: {
1083 type: Function
1084 },
1085 onSuccess: {
1086 type: Function,
1087 default: noop
1088 },
1089 onProgress: {
1090 type: Function,
1091 default: noop
1092 },
1093 onError: {
1094 type: Function,
1095 default: noop
1096 },
1097 fileList: {
1098 type: Array,
1099 default: function _default() {
1100 return [];
1101 }
1102 },
1103 autoUpload: {
1104 type: Boolean,
1105 default: true
1106 },
1107 listType: {
1108 type: String,
1109 default: 'text' // text,picture,picture-card
1110 },
1111 httpRequest: Function,
1112 disabled: Boolean,
1113 limit: Number,
1114 onExceed: {
1115 type: Function,
1116 default: noop
1117 }
1118 },
1119
1120 data: function data() {
1121 return {
1122 uploadFiles: [],
1123 dragOver: false,
1124 draging: false,
1125 tempIndex: 1
1126 };
1127 },
1128
1129
1130 computed: {
1131 uploadDisabled: function uploadDisabled() {
1132 return this.disabled || (this.elForm || {}).disabled;
1133 }
1134 },
1135
1136 watch: {
1137 listType: function listType(type) {
1138 if (type === 'picture-card' || type === 'picture') {
1139 this.uploadFiles = this.uploadFiles.map(function (file) {
1140 if (!file.url && file.raw) {
1141 try {
1142 file.url = URL.createObjectURL(file.raw);
1143 } catch (err) {
1144 console.error('[Element Error][Upload]', err);
1145 }
1146 }
1147 return file;
1148 });
1149 }
1150 },
1151
1152 fileList: {
1153 immediate: true,
1154 handler: function handler(fileList) {
1155 var _this = this;
1156
1157 this.uploadFiles = fileList.map(function (item) {
1158 item.uid = item.uid || Date.now() + _this.tempIndex++;
1159 item.status = item.status || 'success';
1160 return item;
1161 });
1162 }
1163 }
1164 },
1165
1166 methods: {
1167 handleStart: function handleStart(rawFile) {
1168 rawFile.uid = Date.now() + this.tempIndex++;
1169 var file = {
1170 status: 'ready',
1171 name: rawFile.name,
1172 size: rawFile.size,
1173 percentage: 0,
1174 uid: rawFile.uid,
1175 raw: rawFile
1176 };
1177
1178 if (this.listType === 'picture-card' || this.listType === 'picture') {
1179 try {
1180 file.url = URL.createObjectURL(rawFile);
1181 } catch (err) {
1182 console.error('[Element Error][Upload]', err);
1183 return;
1184 }
1185 }
1186
1187 this.uploadFiles.push(file);
1188 this.onChange(file, this.uploadFiles);
1189 },
1190 handleProgress: function handleProgress(ev, rawFile) {
1191 var file = this.getFile(rawFile);
1192 this.onProgress(ev, file, this.uploadFiles);
1193 file.status = 'uploading';
1194 file.percentage = ev.percent || 0;
1195 },
1196 handleSuccess: function handleSuccess(res, rawFile) {
1197 var file = this.getFile(rawFile);
1198
1199 if (file) {
1200 file.status = 'success';
1201 file.response = res;
1202
1203 this.onSuccess(res, file, this.uploadFiles);
1204 this.onChange(file, this.uploadFiles);
1205 }
1206 },
1207 handleError: function handleError(err, rawFile) {
1208 var file = this.getFile(rawFile);
1209 var fileList = this.uploadFiles;
1210
1211 file.status = 'fail';
1212
1213 fileList.splice(fileList.indexOf(file), 1);
1214
1215 this.onError(err, file, this.uploadFiles);
1216 this.onChange(file, this.uploadFiles);
1217 },
1218 handleRemove: function handleRemove(file, raw) {
1219 var _this2 = this;
1220
1221 if (raw) {
1222 file = this.getFile(raw);
1223 }
1224 var doRemove = function doRemove() {
1225 _this2.abort(file);
1226 var fileList = _this2.uploadFiles;
1227 fileList.splice(fileList.indexOf(file), 1);
1228 _this2.onRemove(file, fileList);
1229 };
1230
1231 if (!this.beforeRemove) {
1232 doRemove();
1233 } else if (typeof this.beforeRemove === 'function') {
1234 var before = this.beforeRemove(file, this.uploadFiles);
1235 if (before && before.then) {
1236 before.then(function () {
1237 doRemove();
1238 }, noop);
1239 } else if (before !== false) {
1240 doRemove();
1241 }
1242 }
1243 },
1244 getFile: function getFile(rawFile) {
1245 var fileList = this.uploadFiles;
1246 var target = void 0;
1247 fileList.every(function (item) {
1248 target = rawFile.uid === item.uid ? item : null;
1249 return !target;
1250 });
1251 return target;
1252 },
1253 abort: function abort(file) {
1254 this.$refs['upload-inner'].abort(file);
1255 },
1256 clearFiles: function clearFiles() {
1257 this.uploadFiles = [];
1258 },
1259 submit: function submit() {
1260 var _this3 = this;
1261
1262 this.uploadFiles.filter(function (file) {
1263 return file.status === 'ready';
1264 }).forEach(function (file) {
1265 _this3.$refs['upload-inner'].upload(file.raw);
1266 });
1267 },
1268 getMigratingConfig: function getMigratingConfig() {
1269 return {
1270 props: {
1271 'default-file-list': 'default-file-list is renamed to file-list.',
1272 'show-upload-list': 'show-upload-list is renamed to show-file-list.',
1273 'thumbnail-mode': 'thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan'
1274 }
1275 };
1276 }
1277 },
1278
1279 beforeDestroy: function beforeDestroy() {
1280 this.uploadFiles.forEach(function (file) {
1281 if (file.url && file.url.indexOf('blob:') === 0) {
1282 URL.revokeObjectURL(file.url);
1283 }
1284 });
1285 },
1286 render: function render(h) {
1287 var _this4 = this;
1288
1289 var uploadList = void 0;
1290
1291 if (this.showFileList) {
1292 uploadList = h(
1293 upload_list,
1294 {
1295 attrs: {
1296 disabled: this.uploadDisabled,
1297 listType: this.listType,
1298 files: this.uploadFiles,
1299
1300 handlePreview: this.onPreview },
1301 on: {
1302 'remove': this.handleRemove
1303 }
1304 },
1305 [function (props) {
1306 if (_this4.$scopedSlots.file) {
1307 return _this4.$scopedSlots.file({
1308 file: props.file
1309 });
1310 }
1311 }]
1312 );
1313 }
1314
1315 var uploadData = {
1316 props: {
1317 type: this.type,
1318 drag: this.drag,
1319 action: this.action,
1320 multiple: this.multiple,
1321 'before-upload': this.beforeUpload,
1322 'with-credentials': this.withCredentials,
1323 headers: this.headers,
1324 name: this.name,
1325 data: this.data,
1326 accept: this.accept,
1327 fileList: this.uploadFiles,
1328 autoUpload: this.autoUpload,
1329 listType: this.listType,
1330 disabled: this.uploadDisabled,
1331 limit: this.limit,
1332 'on-exceed': this.onExceed,
1333 'on-start': this.handleStart,
1334 'on-progress': this.handleProgress,
1335 'on-success': this.handleSuccess,
1336 'on-error': this.handleError,
1337 'on-preview': this.onPreview,
1338 'on-remove': this.handleRemove,
1339 'http-request': this.httpRequest
1340 },
1341 ref: 'upload-inner'
1342 };
1343
1344 var trigger = this.$slots.trigger || this.$slots.default;
1345 var uploadComponent = h(
1346 'upload',
1347 uploadData,
1348 [trigger]
1349 );
1350
1351 return h('div', [this.listType === 'picture-card' ? uploadList : '', this.$slots.trigger ? [uploadComponent, this.$slots.default] : uploadComponent, this.$slots.tip, this.listType !== 'picture-card' ? uploadList : '']);
1352 }
1353});
1354// CONCATENATED MODULE: ./packages/upload/src/index.vue?vue&type=script&lang=js&
1355 /* harmony default export */ var upload_srcvue_type_script_lang_js_ = (srcvue_type_script_lang_js_);
1356// CONCATENATED MODULE: ./packages/upload/src/index.vue
1357var src_render, src_staticRenderFns
1358
1359
1360
1361
1362/* normalize component */
1363
1364var src_component = Object(componentNormalizer["a" /* default */])(
1365 upload_srcvue_type_script_lang_js_,
1366 src_render,
1367 src_staticRenderFns,
1368 false,
1369 null,
1370 null,
1371 null
1372
1373)
1374
1375/* hot reload */
1376if (false) { var src_api; }
1377src_component.options.__file = "packages/upload/src/index.vue"
1378/* harmony default export */ var src = (src_component.exports);
1379// CONCATENATED MODULE: ./packages/upload/index.js
1380
1381
1382/* istanbul ignore next */
1383src.install = function (Vue) {
1384 Vue.component(src.name, src);
1385};
1386
1387/* harmony default export */ var packages_upload = __webpack_exports__["default"] = (src);
1388
1389/***/ }),
1390
1391/***/ 6:
1392/***/ (function(module, exports) {
1393
1394module.exports = require("element-ui/lib/mixins/locale");
1395
1396/***/ })
1397
1398/******/ });
\No newline at end of file