UNPKG

6.48 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
9var _react = require('react');
10
11var _react2 = _interopRequireDefault(_react);
12
13var _AjaxUploader = require('./AjaxUploader');
14
15var _AjaxUploader2 = _interopRequireDefault(_AjaxUploader);
16
17var _IframeUploader = require('./IframeUploader');
18
19var _IframeUploader2 = _interopRequireDefault(_IframeUploader);
20
21var _propTypes = require('prop-types');
22
23var _propTypes2 = _interopRequireDefault(_propTypes);
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
26
27function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
28
29function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
30
31function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
32
33function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } /**
34 * This source code is quoted from rc-upload.
35 * homepage: https://github.com/react-component/upload
36 */
37
38
39function empty() {}
40
41var propTypes = {
42 component: _propTypes2["default"].string,
43 style: _propTypes2["default"].object,
44 clsPrefix: _propTypes2["default"].string,
45 action: _propTypes2["default"].string,
46 name: _propTypes2["default"].string,
47 multipart: _propTypes2["default"].bool,
48 onError: _propTypes2["default"].func,
49 onSuccess: _propTypes2["default"].func,
50 onProgress: _propTypes2["default"].func,
51 onStart: _propTypes2["default"].func,
52 data: _propTypes2["default"].oneOfType([_propTypes2["default"].object, _propTypes2["default"].func]),
53 headers: _propTypes2["default"].object,
54 accept: _propTypes2["default"].string,
55 multiple: _propTypes2["default"].bool,
56 disabled: _propTypes2["default"].bool,
57 beforeUpload: _propTypes2["default"].func,
58 customRequest: _propTypes2["default"].func,
59 onReady: _propTypes2["default"].func,
60 withCredentials: _propTypes2["default"].bool,
61 supportServerRender: _propTypes2["default"].bool
62};
63var defaultProps = {
64 component: 'span',
65 clsPrefix: 'u-upload',
66 data: {},
67 headers: {},
68 name: 'file',
69 multipart: false,
70 onProgress: empty,
71 onReady: empty,
72 onStart: empty,
73 onError: empty,
74 onSuccess: empty,
75 supportServerRender: false,
76 multiple: false,
77 beforeUpload: null,
78 customRequest: null,
79 withCredentials: false
80};
81
82var Upload = function (_Component) {
83 _inherits(Upload, _Component);
84
85 function Upload(props) {
86 _classCallCheck(this, Upload);
87
88 var _this = _possibleConstructorReturn(this, _Component.call(this, props));
89
90 _this.state = {
91 Component: null
92 };
93 _this.getComponent = _this.getComponent.bind(_this);
94 _this.abort = _this.abort.bind(_this);
95 return _this;
96 }
97
98 Upload.prototype.componentDidMount = function componentDidMount() {
99 if (this.props.supportServerRender) {
100 /* eslint react/no-did-mount-set-state:0 */
101 this.setState({
102 Component: this.getComponent()
103 }, this.props.onReady);
104 }
105 };
106
107 Upload.prototype.getComponent = function getComponent() {
108 return typeof FormData !== 'undefined' ? _AjaxUploader2["default"] : _IframeUploader2["default"];
109 };
110
111 Upload.prototype.abort = function abort(file) {
112 this.refs.inner.abort(file);
113 };
114
115 Upload.prototype.render = function render() {
116 if (this.props.supportServerRender) {
117 var _Component2 = this.state.Component;
118
119 if (_Component2) {
120 return _react2["default"].createElement(_Component2, _extends({}, this.props, { ref: 'inner' }));
121 }
122 return null;
123 }
124 var Component = this.getComponent();
125 return _react2["default"].createElement(Component, _extends({}, this.props, { ref: 'inner' }));
126 };
127
128 return Upload;
129}(_react.Component);
130
131;
132
133Upload.propTypes = propTypes;
134Upload.defaultProps = defaultProps;
135exports["default"] = Upload;
136module.exports = exports['default'];
\No newline at end of file