UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

191 lines (184 loc) 5.59 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classnames = _interopRequireDefault(require("classnames")); var _react = _interopRequireWildcard(require("react")); var _iconFont = _interopRequireDefault(require("../../icon-font")); var _image = _interopRequireDefault(require("../../image")); const renderThumb = file => { switch (file.fileExtension) { case '': return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-folder-fill" }); case 'jpeg': case 'png': case 'jpg': return /*#__PURE__*/_react.default.createElement("div", { className: "lm_upload_item_thumb_error" }, /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-image" }), /*#__PURE__*/_react.default.createElement("div", { className: "lm_upload_item_name" }, file.realFileName)); case 'mp4': case 'm2v': case 'mkv': case 'ogm': case 'webm': return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-video" }); case 'doc': case 'docx': return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-file-word" }); case 'ppt': case 'pptx': return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-file-ppt" }); case 'xls': case 'xlsx': return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-file-excel" }); case 'pdf': return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-file-pdf" }); default: return /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-file-text" }); } }; // 图片列表项 const PictureItem = ({ file, index, instance, listeners }) => { const { dispatch, disabled, readOnly, size, remove, preview, getFileFields, showMaster, getFileList, onChange, locale } = instance; const [isError, setIsError] = (0, _react.useState)(false); // 文件信息重组 获取文件名称 => 截取后缀文件名 const resetFile = (0, _react.useMemo)(() => { const fileParams = getFileFields(file); const { realFileName, fileName, filename } = fileParams; const fileExtension = (realFileName || fileName || filename).replace(/.*\./, '')?.toLowerCase(); return { ...fileParams, fileExtension, isMain: !!file?.isMain }; }, [getFileFields, file]); // 预览小图 const thumbUrl = (0, _react.useMemo)(() => `${resetFile.url}?x-oss-process=image/resize,w_${size}`, [resetFile.url, size]); // 根据文件名后缀判断 const isImg = (0, _react.useMemo)(() => { return ['jpg', 'jpeg', 'png', 'gif', 'bmp'].includes(resetFile.fileExtension); }, [resetFile]); // 重置尺寸大小 const resetSize = (0, _react.useMemo)(() => { const width = size - 16; const padding = size > 60 ? 8 : 4; const fontSize = size > 60 ? 16 : 12; return { width, padding, fontSize }; }, [size]); const handlePreview = () => { preview?.(file); dispatch({ type: 'changePreview', preview: { visible: true, index } }); }; /** 设为主图 */ const checkMain = e => { e.stopPropagation(); if (!resetFile?.isMain) { const newFileList = getFileList()?.map(item => { return { ...item, isMain: item.fileName === resetFile.fileName }; })?.sort((a, b) => { return a.isMain ? -1 : 1; })?.map((item, index) => { return { ...item, seq: index }; }); console.log('newFileList', newFileList); dispatch({ type: 'changeFileList', fileList: newFileList }); onChange?.({ file: resetFile, fileList: newFileList }); } }; return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ className: (0, _classnames.default)('lm_upload_item', 'lm_upload_item_card', isError && 'lm_upload_item_error'), style: { height: size, width: size } }, listeners || {}), /*#__PURE__*/_react.default.createElement("div", { className: "lm_upload_item_thumb", onClick: handlePreview }, isError || !isImg ? renderThumb(resetFile) : /*#__PURE__*/_react.default.createElement(_image.default, { width: resetSize.width, height: resetSize.width, preview: false, src: thumbUrl, onError: () => setIsError(true) })), !readOnly && !disabled && /*#__PURE__*/_react.default.createElement("div", { className: "action_delete", onClick: () => { remove(file); } }, /*#__PURE__*/_react.default.createElement(_iconFont.default, { type: "lm-icon-a-shidia1qingchu", style: { fontSize: resetSize.fontSize } })), showMaster && /*#__PURE__*/_react.default.createElement("div", { onClick: checkMain, className: (0, _classnames.default)('check_main', resetFile?.isMain && 'active') }, locale.main)); }; var _default = PictureItem; exports.default = _default;