@aliretail/react-materials-components
Version:
253 lines (207 loc) • 8.57 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.Upload = void 0;
var _button = _interopRequireDefault(require("@alifd/next/lib/button"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _upload = _interopRequireDefault(require("@alifd/next/lib/upload"));
var React = _interopRequireWildcard(require("react"));
var _next = require("@formily/next");
var _shared = require("@formily/shared");
var _shared2 = require("../shared");
var _Preview = _interopRequireDefault(require("./Preview"));
var _excluded = ["listType", "locale", "children"];
var _class, _temp;
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var UploadCard = _upload["default"].Card,
UploadDragger = _upload["default"].Dragger;
var exts = [{
ext: /\.docx?/i,
icon: '//img.alicdn.com/tfs/TB1n8jfr1uSBuNjy1XcXXcYjFXa-200-200.png'
}, {
ext: /\.pptx?/i,
icon: '//img.alicdn.com/tfs/TB1ItgWr_tYBeNjy1XdXXXXyVXa-200-200.png'
}, {
ext: /\.jpe?g/i,
icon: '//img.alicdn.com/tfs/TB1wrT5r9BYBeNjy0FeXXbnmFXa-200-200.png'
}, {
ext: /pdf/i,
icon: '//img.alicdn.com/tfs/TB1GwD8r9BYBeNjy0FeXXbnmFXa-200-200.png'
}, {
ext: /\.png/i,
icon: '//img.alicdn.com/tfs/TB1BHT5r9BYBeNjy0FeXXbnmFXa-200-200.png'
}, {
ext: /\.eps/i,
icon: '//img.alicdn.com/tfs/TB1G_iGrVOWBuNjy0FiXXXFxVXa-200-200.png'
}, {
ext: /\.ai/i,
icon: '//img.alicdn.com/tfs/TB1B2cVr_tYBeNjy1XdXXXXyVXa-200-200.png'
}, {
ext: /\.gif/i,
icon: '//img.alicdn.com/tfs/TB1DTiGrVOWBuNjy0FiXXXFxVXa-200-200.png'
}, {
ext: /\.svg/i,
icon: '//img.alicdn.com/tfs/TB1uUm9rY9YBuNjy0FgXXcxcXXa-200-200.png'
}, {
ext: /\.xlsx?/i,
icon: '//img.alicdn.com/tfs/TB1any1r1OSBuNjy0FdXXbDnVXa-200-200.png'
}, {
ext: /\.psd?/i,
icon: '//img.alicdn.com/tfs/TB1_nu1r1OSBuNjy0FdXXbDnVXa-200-200.png'
}, {
ext: /\.(wav|aif|aiff|au|mp1|mp2|mp3|ra|rm|ram|mid|rmi)/i,
icon: '//img.alicdn.com/tfs/TB1jPvwr49YBuNjy0FfXXXIsVXa-200-200.png'
}, {
ext: /\.(avi|wmv|mpg|mpeg|vob|dat|3gp|mp4|mkv|rm|rmvb|mov|flv)/i,
icon: '//img.alicdn.com/tfs/TB1FrT5r9BYBeNjy0FeXXbnmFXa-200-200.png'
}, {
ext: /\.(zip|rar|arj|z|gz|iso|jar|ace|tar|uue|dmg|pkg|lzh|cab)/i,
icon: '//img.alicdn.com/tfs/TB10jmfr29TBuNjy0FcXXbeiFXa-200-200.png'
}, {
ext: /\..+/i,
icon: '//img.alicdn.com/tfs/TB10.R4r3mTBuNjy1XbXXaMrVXa-200-200.png'
}];
var testOpts = function testOpts(ext, options) {
if (options && (0, _shared.isArr)(options.include)) {
return options.include.some(function (url) {
return ext.test(url);
});
}
if (options && (0, _shared.isArr)(options.exclude)) {
return !options.exclude.some(function (url) {
return ext.test(url);
});
}
return true;
};
var getImageByUrl = function getImageByUrl(url, options) {
for (var i = 0; i < exts.length; i++) {
if (exts[i].ext.test(url) && testOpts(exts[i].ext, options)) {
return exts[i].icon;
}
}
return url;
};
var normalizeFileList = function normalizeFileList(fileList) {
if (fileList && fileList.length) {
return fileList.map(function (file) {
return (0, _extends2["default"])({
name: file.name,
downloadURL: file.downloadURL || file.imgURL
}, file.response, {
imgURL: getImageByUrl(file.imgURL, {
exclude: ['.png', '.jpg', '.jpeg', '.gif']
})
});
});
}
return [];
}; // eslint-disable-next-line no-nested-ternary
var shallowClone = function shallowClone(val) {
return (0, _shared.isArr)(val) ? [].concat(val) : typeof val === 'object' ? (0, _extends2["default"])({}, val) : val;
};
var mapProps = function mapProps(props, fieldProps) {
(0, _shared2.mapStyledProps)(props, fieldProps);
if (props.readOnly || 'editable' in props && !props.editable) {
props.isPreview = true;
} // fusion的Upload组件需要value是一个对象
if (props.isPreview && typeof props.value === 'string') {
props.value = {
url: props.value
};
}
if (props.isImage) {
props.renderPreview = function () {
return /*#__PURE__*/React.createElement(_Preview["default"], {
value: props.value
});
};
}
};
var Upload = (0, _next.connect)({
getProps: mapProps
})((_temp = _class = /*#__PURE__*/function (_React$Component) {
(0, _inheritsLoose2["default"])(Uploader, _React$Component);
function Uploader() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
_this.state = {
value: (0, _shared.toArr)(_this.props.value)
};
_this.onChangeHandler = function (fileList) {
var onChange = _this.props.onChange;
fileList = (0, _shared.toArr)(fileList);
if (fileList.every(function (file) {
return file.state === 'done' || file.imgURL || file.downloadURL;
})) {
fileList = normalizeFileList(fileList);
_this.setState({
value: fileList
}, function () {
onChange(fileList.length > 0 ? fileList : undefined);
});
} else {
_this.setState({
value: fileList
});
}
};
return _this;
}
var _proto = Uploader.prototype;
_proto.componentDidUpdate = function componentDidUpdate(preProps) {
if (this.props.value && !(0, _shared.isEqual)(this.props.value, preProps.value)) {
this.setState({
value: this.props.value
});
}
};
_proto.render = function render() {
var _this$props = this.props,
listType = _this$props.listType,
locale = _this$props.locale,
children = _this$props.children,
others = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, _excluded);
if (listType.indexOf('card') > -1) {
return /*#__PURE__*/React.createElement(UploadCard, (0, _extends2["default"])({}, others, {
value: shallowClone(this.state.value),
onChange: this.onChangeHandler,
listType: "card"
}));
}
if (listType.indexOf('dragger') > -1) {
return (
/*#__PURE__*/
// @ts-ignore 感觉是 next 那边对于 Dragger 的 props 定义错了
React.createElement(UploadDragger, (0, _extends2["default"])({}, others, {
value: shallowClone(this.state.value),
onChange: this.onChangeHandler,
listType: listType.indexOf('image') > -1 ? 'image' : 'text'
}))
);
}
return /*#__PURE__*/React.createElement(_upload["default"], (0, _extends2["default"])({}, others, {
value: shallowClone(this.state.value),
onChange: this.onChangeHandler,
listType: listType
}), children || /*#__PURE__*/React.createElement(_button["default"], {
style: {
margin: '0 0 10px'
}
}, locale && locale.uploadText || '上传文件'));
};
return Uploader;
}(React.Component), _class.defaultProps = {
action: 'https://www.easy-mock.com/mock/5b713974309d0d7d107a74a3/alifd/upload',
listType: 'text',
multiple: true
}, _temp));
exports.Upload = Upload;
var _default = Upload;
exports["default"] = _default;