mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
102 lines (101 loc) • 4.87 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _ut = require("ut2");
var _utilHelpers = require("util-helpers");
var _classnames = _interopRequireDefault(require("classnames"));
var _dolyIcons = require("doly-icons");
var _antdMobile = require("antd-mobile");
var _MediaViewer = _interopRequireDefault(require("./MediaViewer"));
var _utils = require("./utils");
var _config = require("../../config");
require("./index.css");
var _excluded = ["file", "renderView", "unsupportedTipText", "iframeToolbar", "closeIcon", "imageRender", "renderFooter", "onClose"];
var prefixCls = "".concat(_config.prefixClass, "-file-viewer");
var BizFileViewer = function BizFileViewer(props) {
var file = props.file,
renderView = props.renderView,
customUnsupportedTipText = props.unsupportedTipText,
_props$iframeToolbar = props.iframeToolbar,
iframeToolbar = _props$iframeToolbar === void 0 ? false : _props$iframeToolbar,
closeIcon = props.closeIcon,
imageRender = props.imageRender,
_renderFooter = props.renderFooter,
onClose = props.onClose,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var fileInfo = (0, _react.useMemo)(function () {
return (0, _utils.transformUploadFile)(file);
}, [file]);
return /*#__PURE__*/_react.default.createElement(_antdMobile.ImageViewer, (0, _objectSpread2.default)((0, _objectSpread2.default)({
imageRender: fileInfo.fileType === 'image' ? imageRender : function () {
var view;
if (imageRender) {
view = imageRender.apply(void 0, arguments);
} else {
if (fileInfo.fileType === 'pdf') {
if ((0, _utils.isValidPdfUrl)(fileInfo.url)) {
view = /*#__PURE__*/_react.default.createElement("iframe", {
src: fileInfo.url + (iframeToolbar ? '' : '#toolbar=0'),
style: {
border: '0 none',
width: '75vw',
height: '80vh'
}
});
}
} else if (fileInfo.fileType === 'audio' || fileInfo.fileType === 'video') {
view = /*#__PURE__*/_react.default.createElement(_MediaViewer.default, {
url: fileInfo.url,
mediaType: fileInfo.fileType
});
}
if (typeof renderView === 'function') {
view = renderView(view, fileInfo);
}
if ((0, _ut.isNil)(view) || view === false) {
if (typeof customUnsupportedTipText === 'function') {
view = customUnsupportedTipText(fileInfo);
} else if (customUnsupportedTipText) {
view = customUnsupportedTipText;
} else {
view = /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(prefixCls, "-unsupported")
}, "\u8BE5\u6587\u4EF6\u4E0D\u652F\u6301\u9884\u89C8\uFF0C\u4F60\u53EF\u4EE5", /*#__PURE__*/_react.default.createElement("a", {
onClick: function onClick() {
return (0, _utilHelpers.download)(fileInfo.url, {
dataType: 'url',
fileName: fileInfo.name
});
}
}, "\u70B9\u51FB\u4E0B\u8F7D"), "\u540E\u67E5\u770B\u3002");
}
}
}
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)(prefixCls, (0, _defineProperty2.default)({}, "".concat(prefixCls, "-").concat(fileInfo.fileType), !!fileInfo.fileType))
}, view);
},
onClose: onClose
}, restProps), {}, {
image: fileInfo.url,
renderFooter: function renderFooter(image) {
var footerContent = _renderFooter === null || _renderFooter === void 0 ? void 0 : _renderFooter(image);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(prefixCls, "-preview-close"),
onClick: onClose
}, closeIcon || /*#__PURE__*/_react.default.createElement(_dolyIcons.XLg, null)), footerContent);
}
}));
};
BizFileViewer.getFileThumbUrl = _utils.getFileThumbUrl;
BizFileViewer.transformUploadFile = _utils.transformUploadFile;
BizFileViewer.supports = _utils.supports;
var _default = exports.default = BizFileViewer;