UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

590 lines (589 loc) 41.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var theme_1 = require("../theme"); // import { autobind } from '../utils/helper' // import Modal from './Modal' var icons_1 = require("./icons"); var UnionImgContent_1 = (0, tslib_1.__importDefault)(require("./Lion/UnionImgContent")); var MediaShowList_1 = (0, tslib_1.__importDefault)(require("./Lion/MediaShowList")); var msgsub_1 = (0, tslib_1.__importDefault)(require("../renderers/Lion/utils/msgsub")); var react_rnd_1 = require("react-rnd"); var lodash_1 = require("lodash"); var DragModal_1 = (0, tslib_1.__importDefault)(require("./DragModal")); var icons_2 = require("@ant-design/icons"); var antd_1 = require("antd"); var react_pdf_1 = require("react-pdf"); var helper_1 = require("../utils/helper"); var shell_1 = require("../utils/shell"); var tools_1 = require("../utils/shell/tools"); var utils_1 = require("../renderers/Lion/utils/utils"); var dayjs_1 = (0, tslib_1.__importDefault)(require("dayjs")); react_pdf_1.pdfjs.GlobalWorkerOptions.workerSrc = "//cdnjs.cloudflare.com/ajax/libs/pdf.js/" + react_pdf_1.pdfjs.version + "/pdf.worker.js"; var getImgOriginWidthAndHeight = function (src) { return new Promise(function (res, rej) { // 创建一个新的 Image 对象 var img = document.createElement('img'); // 定义图片加载完成后的处理函数 img.onload = function () { // 获取图片的原始宽度和高度 var originalWidth = img.naturalWidth; var originalHeight = img.naturalHeight; res({ originalWidth: originalWidth, originalHeight: originalHeight }); }; // 设置图片的源 URL img.src = src; }); }; // 初始状态 var initState = { isOpened: false, index: -1, items: [], unionImgShow: false, unionSelecting: false, mediaListShow: true, imgRotate: 0, selectList: [], unionList: [], totalUnionList: [], selectUnionImgIndex: 0, }; // 弹窗最小的高度和宽度 同步设置 var toolHigh = 40; // const previewHeight = 64 + toolHigh; var previewHeight = 88 + toolHigh; var clientHalfHeight = document.documentElement.clientHeight / 2; var minHeight = clientHalfHeight - previewHeight; var minWidth = 600; // const defaultMove = { x: 0, y: 0 }; var ImageGallery = function (props) { var _a; var children = props.children; // const [states, setStates] = useState(initState); var _b = (0, react_1.useState)(false), visible = _b[0], setVisible = _b[1]; var pcPreviewRef = (0, react_1.useRef)(null); var _c = (0, react_1.useState)({}), previewInfo = _c[0], setPreviewInfo = _c[1]; /** events */ var handleImageEnlarge = function (info) { setPreviewInfo(info); setVisible(true); requestAnimationFrame(function () { var _a; (_a = pcPreviewRef.current) === null || _a === void 0 ? void 0 : _a.handleGetOriginSize(); }); }; var onClose = function () { setVisible(false); }; var handlePreviewKeydown = function (e) { var _a, _b, _c, _d; // 对应 ↑↓ var filesKeyCode = [38, 40]; // 对应 ←→ var pdfFileKeyCode = [37, 39]; var keyCode = e.keyCode; // 文件上下个切换 if (filesKeyCode.includes(keyCode)) { if (keyCode === 40) { (_a = pcPreviewRef.current) === null || _a === void 0 ? void 0 : _a.handleNext(); } else { (_b = pcPreviewRef.current) === null || _b === void 0 ? void 0 : _b.handlePrev(); } } // 文件预览左右按键实现 上下页切换 if (pdfFileKeyCode.includes(keyCode)) { if (keyCode === 39) { (_c = pcPreviewRef.current) === null || _c === void 0 ? void 0 : _c.handlePdfNext(); } else { (_d = pcPreviewRef.current) === null || _d === void 0 ? void 0 : _d.handlePdfPrev(); } } }; // resize计算高度 省的撑大 /** events - end*/ /** fileViewer */ var PcPreview = (0, react_1.forwardRef)(function (props, ref) { var _a, _b, _c, _d, _e, _f, _g, _h, _j; var _k = (0, react_1.useState)({}), selectedAttachment = _k[0], setSelectAttachment = _k[1]; var _l = (0, react_1.useState)([]), allAttachment = _l[0], setAllAttachment = _l[1]; var _m = (0, react_1.useState)(1), pageNumber = _m[0], setPageNumber = _m[1]; var _o = (0, react_1.useState)(1), scale = _o[0], setScale = _o[1]; var _p = (0, react_1.useState)(initState), states = _p[0], setStates = _p[1]; var _q = (0, react_1.useState)(1), pageIndex = _q[0], setPageIndex = _q[1]; // const [moveData, setMoveData] = useState(defaultMove); var _r = (0, react_1.useState)(), FileHigh = _r[0], setFileHigh = _r[1]; // const [FileWidth, setFileWidth] = useState(); var _s = (0, react_1.useState)(0), rotate = _s[0], setRotate = _s[1]; var previewRef = (0, react_1.useRef)(null); var dragRef = (0, react_1.useRef)(null); var previewTitleHigh = (0, react_1.useRef)(0); var _t = (0, react_1.useState)(false), dragging = _t[0], setDragging = _t[1]; var _u = (0, react_1.useState)('100%'), maxImgWidth = _u[0], setMaxImgWidth = _u[1]; var _v = (0, react_1.useState)({ width: '100%', height: '100%' }), previewImgInfo = _v[0], setPreviewImgInfo = _v[1]; var _w = (0, react_1.useState)(false), downloadLoading = _w[0], setDownloadLoading = _w[1]; var onWheel = (0, lodash_1.throttle)(function (e) { // e.preventDefault(); e.stopPropagation(); // 往下滚 缩小 if (e.deltaY > 0) { setScale(function (value) { return Number((value - 0.1 <= 0.1 ? 0.1 : value - 0.1).toFixed(1)); }); } // 往下滚 放大 else { setScale(function (value) { return Number(Number(value + 0.1).toFixed(1)); }); } }, 300); // const { previewAddr, fileName, baseUrl, selectedAttachment = {} } = props; (0, react_1.useImperativeHandle)(ref, function () { return ({ handleNext: handleNext, handlePrev: handlePrev, handlePdfNext: handlePdfNext, handlePdfPrev: handlePdfPrev, handleGetOriginSize: handleGetOriginSize }); }); var resizeEnd = (0, lodash_1.throttle)(function () { var _a, _b; var bodyHigh = ((_a = previewRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height) || 0; // 文件高度 = 整个Modal高度 - title高度 - 底部操作栏高度(文件名+文件列表(文件数量大于1才有)+ 底部工具栏) - padding等边距 var finalHeight = bodyHigh - (states.mediaListShow && ((_b = previewInfo === null || previewInfo === void 0 ? void 0 : previewInfo.list) === null || _b === void 0 ? void 0 : _b.length) > 1 ? previewHeight : toolHigh) - previewTitleHigh.current + 4; setScale(1); setRotate(0); setFileHigh(finalHeight); // setFileWidth(previewRef.current?.getBoundingClientRect().width || 0); }, 300); var previewRefFn = (0, react_1.useCallback)(function (e) { var _a; if (e) { // 找到content来进行计算 var contentDom = helper_1.domUtils.closest(e, '.ant-modal-content'); previewRef.current = contentDom; previewTitleHigh.current = ((_a = contentDom.querySelector('.ant-modal-header')) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height) || 0; } }, []); var handleResetMoveData = function () { var _a; // const previewContainer = document.querySelector('.file-drag-container') as HTMLDivElement; // previewContainer.style.transform = `translate(0, 0)`; (_a = dragRef.current) === null || _a === void 0 ? void 0 : _a.updatePosition({ x: 0, y: 0 }); setScale(1); setRotate(0); }; var handleUnionImgShow = function (show) { var selectList = states.selectList, items = states.items; // 分割为20一个的数组 var totalUnionList = (0, lodash_1.chunk)(selectList, 20); if (show) { if (selectList.length < 2) { msgsub_1.default._warning('请至少选择2张图片进行并图'); return; } // if (selectList.length > 20) { // MSG._warning('最多可选20张进行并图') // return // } var unionList_1 = items.filter(function (_, mediaIndex) { return totalUnionList[0].includes(mediaIndex); }); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { unionImgShow: show, unionList: unionList_1, totalUnionList: totalUnionList, selectUnionImgIndex: 0 })); }); } else { setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { unionImgShow: show, unionList: [], totalUnionList: [], selectUnionImgIndex: 0 })); }); requestAnimationFrame(function () { handleResetMoveData(); }); } }; // 切换缩略图列表是否展示 var handleToggleMediaListShow = function () { setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { mediaListShow: !data.mediaListShow })); }); }; // 并图勾选中 var handleUnionSelecting = function (show) { if (!states.mediaListShow) return; setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { unionSelecting: show })); }); }; // 多选 var handleMediaListSelect = function (index) { var unionSelecting = states.unionSelecting, _a = states.selectList, selectList = _a === void 0 ? [] : _a; if (unionSelecting) { var newSelectList_1 = (0, tslib_1.__spreadArray)([], selectList, true); if (newSelectList_1.includes(index)) { newSelectList_1 = newSelectList_1.filter(function (item) { return item !== index; }); } else { newSelectList_1.push(index); } setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { selectList: newSelectList_1 })); }); } else { if (index === states.index) return; setFileHigh(0); setSelectAttachment(function () { return allAttachment[index]; }); setPageIndex(index); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { index: index })); }); if (allAttachment[index]['isNotImg']) { resizeEnd(); } } }; //全选 var handleSelectAll = function (selectList) { // const selectList = states.items?.map((_, index) => index); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { selectList: selectList })); }); }; //反选 var handleSelectReverse = function (deSelectList) { setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { selectList: deSelectList })); }); }; // 切换到下一个文件 var handleNext = function () { var index = states.index, items = states.items, unionImgShow = states.unionImgShow, unionList = states.unionList, selectUnionImgIndex = states.selectUnionImgIndex, totalUnionList = states.totalUnionList; // 如果是并图模式 if (unionImgShow && (unionList === null || unionList === void 0 ? void 0 : unionList.length)) { if (selectUnionImgIndex >= totalUnionList.length - 1) return; var nextIndex_1 = selectUnionImgIndex + 1; var newUnionList_1 = items.filter(function (_, mediaIndex) { return totalUnionList[nextIndex_1].includes(mediaIndex); }); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { index: nextIndex_1, selectUnionImgIndex: nextIndex_1, unionList: newUnionList_1 })); }); } else { if (index >= items.length - 1) return; setFileHigh(0); var nextIndex_2 = index + 1; var matchItem = items[nextIndex_2]; setSelectAttachment(matchItem); setPageIndex(1); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { index: nextIndex_2 })); }); if (matchItem['isNotImg']) { resizeEnd(); } } }; // 切换到上一个文件 var handlePrev = function () { var index = states.index, items = states.items, unionImgShow = states.unionImgShow, unionList = states.unionList, selectUnionImgIndex = states.selectUnionImgIndex, totalUnionList = states.totalUnionList; // 如果是并图模式 if (unionImgShow && (unionList === null || unionList === void 0 ? void 0 : unionList.length)) { if (selectUnionImgIndex === 0) return; var prevIndex_1 = selectUnionImgIndex - 1; var newUnionList_2 = items.filter(function (_, mediaIndex) { return totalUnionList[prevIndex_1].includes(mediaIndex); }); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { index: prevIndex_1, selectUnionImgIndex: prevIndex_1, unionList: newUnionList_2 })); }); } else { if (index === 0) return; setFileHigh(0); var prevIndex_2 = index - 1; var matchItem = items[prevIndex_2]; setSelectAttachment(matchItem); setPageIndex(1); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { index: prevIndex_2 })); }); if (matchItem['isNotImg']) { resizeEnd(); } } }; // 切换到文件的下一页 var handlePdfNext = function () { return selectedAttachment.isNotImg && setPageIndex(function (index) { return index + 1 > pageNumber ? index : index + 1; }); }; // 切换到文件的上一页 var handlePdfPrev = function () { return selectedAttachment.isNotImg && setPageIndex(function (index) { return index - 1 === 0 ? index : index - 1; }); }; var handleGetOriginSize = function (isResetMaxWidth) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { handleResetMoveData(); // 获取原始尺寸 if (!selectedAttachment.isNotImg) { // 如果是显示原始尺寸 if (isResetMaxWidth) { setMaxImgWidth(undefined); setPreviewImgInfo({ width: undefined, height: undefined }); } setScale(1); } else { requestAnimationFrame(function () { resizeEnd(); }); } return [2 /*return*/]; }); }); }; // 适应图片大小 var handleSetImgMatch = function () { var _a, _b; // 如果是图片 if (!selectedAttachment.isNotImg) { setMaxImgWidth('100%'); var _c = (_a = previewRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect(), width = _c.width, height = _c.height; var finalHeight = height - (states.mediaListShow && ((_b = previewInfo === null || previewInfo === void 0 ? void 0 : previewInfo.list) === null || _b === void 0 ? void 0 : _b.length) > 1 ? previewHeight : toolHigh) - previewTitleHigh.current + 4; setFileHigh('auto'); setPreviewImgInfo({ width: Number(width) > 0 ? width + 'px' : undefined, height: Number(finalHeight) > 0 ? finalHeight + 'px' : undefined }); } else { resizeEnd(); } handleResetMoveData(); }; var handleImgLoad = function () { handleSetImgMatch(); // handleGetOriginSize(); }; (0, react_1.useEffect)(function () { var _a; if (previewInfo) { var _b = previewInfo.list, list_1 = _b === void 0 ? [] : _b, _c = previewInfo.index, index_1 = _c === void 0 ? 0 : _c, isNotImg = previewInfo.isNotImg; var matchItem = (_a = list_1 === null || list_1 === void 0 ? void 0 : list_1[index_1]) !== null && _a !== void 0 ? _a : {}; // handleSetAttachment(matchItem); setSelectAttachment(matchItem); setAllAttachment(list_1); setStates(function (data) { return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { items: list_1 !== null && list_1 !== void 0 ? list_1 : [], index: index_1 })); }); } // document.body.addEventListener(ResizeEvent.DIALOGRESIZEENDEVENT, resizeEnd); return function () { // document.body.removeEventListener(ResizeEvent.DIALOGRESIZEENDEVENT, resizeEnd); }; }, []); var currentItem = (0, react_1.useMemo)(function () { var _a, _b; return (_b = (_a = states.items) === null || _a === void 0 ? void 0 : _a[states.index]) !== null && _b !== void 0 ? _b : {}; }, [states.index]); // 生成className var genItemClassName = (0, react_1.useMemo)(function () { var items = states.items; // 是否所有都是图片 var isAllImg = items.every(function (item) { return !(item === null || item === void 0 ? void 0 : item.isNotImg); }); // 所有都是图片的话,左右就都显示,切换上下个图片, 有文件的话,图片就不显示切换,文件显示切换 // return isAllImg ? false : !items[index]?.isNotImg; // 如果当前是图片,且全部都是图片,但是就一张图片,就不显示左右箭头 var isMoreClassName = items.length > 1 ? [] : ['hidden']; var prevClassName = isAllImg ? isMoreClassName : []; var nextClassName = isAllImg ? isMoreClassName : []; // 如果当前是图片,且全部都是图片,但是如果是在第一个或者最后一个,则disable if (isAllImg) { if (states.index < 1) { prevClassName.push('hidden'); } else { prevClassName = prevClassName.filter(function (item) { return item !== 'hidden'; }); } if (states.index >= items.length - 1) { nextClassName.push('hidden'); } else { nextClassName = nextClassName.filter(function (item) { return item !== 'hidden'; }); } } else { var isNotImg = currentItem.isNotImg; // 如果是文件与图片混合的情况 // 如果当前是文件 if (isNotImg) { if (states.items.length > 1) { if (states.index < 1) { prevClassName.push('hidden'); } else { prevClassName = prevClassName.filter(function (item) { return item !== 'hidden'; }); } if (states.index >= items.length - 1 && pageIndex === pageNumber) { nextClassName.push('hidden'); } else { nextClassName = nextClassName.filter(function (item) { return item !== 'hidden'; }); } } else { if (pageIndex === 1) { prevClassName.push('hidden'); } else { prevClassName = prevClassName.filter(function (item) { return item !== 'hidden'; }); } if (pageIndex === pageNumber) { nextClassName.push('hidden'); } else { nextClassName = nextClassName.filter(function (item) { return item !== 'hidden'; }); } } } else { // 当前是图片,且在第一张或最后一张,就隐藏上一个/下一个按钮 if (states.index < 1) { prevClassName.push('hidden'); } else { prevClassName = prevClassName.filter(function (item) { return item !== 'hidden'; }); } if (states.index >= items.length - 1) { nextClassName.push('hidden'); } else { nextClassName = nextClassName.filter(function (item) { return item !== 'hidden'; }); } } } return { prev: prevClassName.join(' '), next: nextClassName.join(' '), }; }, [states.index, states.items, currentItem, pageIndex, pageNumber]); var handleFileToggle = function (index, type) { var isNotImg = currentItem.isNotImg; // 如果是文件,在非第一个文件,在第一页的时候,可以且到上一个文件,同理,在最后一页的时候,可以切到下一个文件 isNotImg ? (type === 'next' ? ((pageIndex === pageNumber && states.index < states.items.length - 1) ? handleNext() : handlePdfNext()) : ((pageIndex === 1 && states.index >= 1) ? handlePrev() : handlePdfPrev())) : (type === 'next' ? handleNext() : handlePrev()); }; // 渲染当前索引 var handleGenPreviewIndex = (0, react_1.useMemo)(function () { var _a; var items = states.items; var isAllImg = items.every(function (item) { return !(item === null || item === void 0 ? void 0 : item.isNotImg); }); return (react_1.default.createElement("div", { className: "preview-tools-item preview-tools-item-index" }, isAllImg ? react_1.default.createElement(react_1.default.Fragment, null, states.index + 1, "\u00A0/\u00A0", (_a = states.items) === null || _a === void 0 ? void 0 : _a.length) : react_1.default.createElement(react_1.default.Fragment, null, !currentItem.isNotImg ? react_1.default.createElement(react_1.default.Fragment, null, "1\u00A0/\u00A01") : (react_1.default.createElement(react_1.default.Fragment, null, " ", pageIndex, "\u00A0/\u00A0", pageNumber))))); }, [states.items, states.index, pageIndex, pageNumber, currentItem]); return (react_1.default.createElement("div", { className: "preview-body", ref: previewRefFn }, states.unionImgShow ? (react_1.default.createElement("div", { className: "preview-pdf-container", style: { display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' } }, (((_a = states.unionList) === null || _a === void 0 ? void 0 : _a.length) > 1) ? (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: "arrow-icon l " + (states.selectUnionImgIndex < 1 ? 'disabled' : ''), onClick: handlePrev }, react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_left", symbol: true })), react_1.default.createElement("div", { className: "arrow-icon r " + (states.selectUnionImgIndex >= states.totalUnionList.length - 1 ? 'disabled' : ''), onClick: handleNext }, react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_right", symbol: true })))) : null, react_1.default.createElement(UnionImgContent_1.default, { unionList: (_b = states.unionList) !== null && _b !== void 0 ? _b : [], handleUnionImgShow: handleUnionImgShow, onClose: onClose }))) : ( // 非并图模式,图片左右切换无效(先隐藏),文件左右切换为切换页码 react_1.default.createElement("div", { className: "preview-pdf-container", style: { display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%' }, onWheel: onWheel }, (((_c = states.items) === null || _c === void 0 ? void 0 : _c.length) >= 1) ? (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: "arrow-icon l " + genItemClassName['prev'], onClick: function () { return handleFileToggle(states.index, 'prev'); } }, react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_left", symbol: true })), react_1.default.createElement("div", { className: "arrow-icon r " + genItemClassName['next'], onClick: function () { return handleFileToggle(states.index, 'next'); } }, react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_right", symbol: true })))) : null, react_1.default.createElement("div", { className: 'preview-scroll-container', style: { minHeight: '100%' } }, react_1.default.createElement(react_rnd_1.Rnd, { ref: function (ref) { return dragRef.current = ref; }, enableResizing: false, bounds: undefined, className: 'file-drag-container', dragHandleClassName: "file-preview-handler", maxWidth: maxImgWidth, // default={{ x: undefined, y: undefined, width: 'auto', height: 'auto' }} style: { position: 'inherit', minHeight: minHeight }, onDragStart: function () { return setDragging(function () { return true; }); }, onDragStop: function () { return setDragging(function () { return false; }); }, enableUserSelectHack: false }, react_1.default.createElement("div", { className: "file-preview-handler", style: { transform: "scale(" + scale + ") rotate(" + rotate + "deg)" } }, !selectedAttachment.isNotImg ? (react_1.default.createElement(antd_1.Image, { style: { transformOrigin: 'center', pointerEvents: dragging ? 'none' : 'auto', maxWidth: previewImgInfo.width, maxHeight: previewImgInfo.height }, width: 'auto', height: FileHigh, src: selectedAttachment.originalSrc, preview: false, onLoad: handleImgLoad })) : (react_1.default.createElement(react_pdf_1.Document, { className: "preview-pdf", file: selectedAttachment.originalSrc, // file="http://localhost:8001/api/v1/download/EMAIL_ATTACH/1039928825930055791?chunk=0&previewAddr=true" // file="https://bwt.sanfu.com/saas/api/v1/download/EMAIL_ATTACH/1109110181199906965?chunk=0&previewAddr=true" // file="https://sasdev.sanfu.com/saas_dev/api/v1/download/FORM_ALL_FILE_ONE/988130820110438706?chunk=0&previewAddr=true" options: { cMapUrl: "https://unpkg.com/pdfjs-dist@" + react_pdf_1.pdfjs.version + "/cmaps/", cMapPacked: true }, error: react_1.default.createElement("span", { style: { color: 'black', fontSize: 18 } }, "\u65E0\u6CD5\u52A0\u8F7DPDF\u6587\u4EF6"), onLoadSuccess: function (data) { handleImgLoad(); setPageIndex(1); setPageNumber(data.numPages); }, onLoadError: function () { setPageIndex(1); setPageNumber(1); }, loading: react_1.default.createElement(antd_1.Spin, { style: { margin: 'auto' } }) }, react_1.default.createElement(react_pdf_1.Page, { key: (selectedAttachment === null || selectedAttachment === void 0 ? void 0 : selectedAttachment.title) + "-" + pageIndex, className: "preview-pdf-page", renderMode: 'svg', height: (0, utils_1.isPdf)((_d = selectedAttachment === null || selectedAttachment === void 0 ? void 0 : selectedAttachment.title) !== null && _d !== void 0 ? _d : '') ? (+(FileHigh !== null && FileHigh !== void 0 ? FileHigh : 0) * scale) : undefined, pageNumber: pageIndex, loading: react_1.default.createElement(antd_1.Spin, null) })))))))), !states.unionImgShow ? (react_1.default.createElement("div", { className: "preview-box-fileName " + (states.mediaListShow && states.items.length > 1 ? 'showList' : '') }, selectedAttachment.title)) : null, states.mediaListShow && !states.unionImgShow && states.items.length > 1 ? (react_1.default.createElement(MediaShowList_1.default, { mediaList: (_e = states.items) !== null && _e !== void 0 ? _e : [], currentIndex: states.index, mediaListShow: (_f = states.mediaListShow) !== null && _f !== void 0 ? _f : false, unionImgShow: states.unionImgShow, selectList: (_g = states.selectList) !== null && _g !== void 0 ? _g : [], unionSelecting: (_h = states.unionSelecting) !== null && _h !== void 0 ? _h : false, handleMediaListSelect: handleMediaListSelect, handleUnionImgShow: handleUnionImgShow, handleUnionSelecting: handleUnionSelecting, handleSelectAll: handleSelectAll, handleSelectReverse: handleSelectReverse })) : null, !states.unionImgShow ? (react_1.default.createElement("div", { className: "preview-tools" }, handleGenPreviewIndex, react_1.default.createElement(antd_1.Tooltip, { title: "\u4E0A\u4E00\u4E2A", placement: 'top' }, react_1.default.createElement(antd_1.Button, { className: "preview-tools-item " + (states.index < 1 ? 'disabled' : ''), type: "text", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_left", symbol: true }), onClick: handlePrev })), react_1.default.createElement(antd_1.Tooltip, { title: "\u4E0B\u4E00\u4E2A", placement: 'top' }, react_1.default.createElement(antd_1.Button, { className: "preview-tools-item " + (states.index >= ((_j = states.items) === null || _j === void 0 ? void 0 : _j.length) - 1 ? 'disabled' : ''), type: "text", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_right", symbol: true }), onClick: handleNext })), react_1.default.createElement(antd_1.Tooltip, { title: "\u5DE6\u8F6C", placement: 'top' }, react_1.default.createElement(antd_1.Button, { className: "preview-tools-item", type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage_turnleft", symbol: true }), onClick: function () { setRotate(function (rotate) { return rotate - 90; }); } })), react_1.default.createElement(antd_1.Tooltip, { title: "\u53F3\u8F6C", placement: 'top' }, react_1.default.createElement(antd_1.Button, { className: "preview-tools-item", type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage-turnright", symbol: true }), title: "\u53F3\u8F6C", onClick: function () { setRotate(function (rotate) { return rotate + 90; }); } })), react_1.default.createElement(antd_1.Tooltip, { title: "\u7F29\u5C0F", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage_turnsmall", symbol: true }), className: "preview-tools-item", onClick: function () { return setScale(function (value) { return Number(Number(value - 0.2 <= 0.2 ? 0.2 : value - 0.2).toFixed(1)); }); }, title: "\u7F29\u5C0F" })), react_1.default.createElement(antd_1.Tooltip, { title: "\u539F\u59CB\u5C3A\u5BF8", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage_turnreturn", symbol: true }), className: "preview-tools-item", onClick: function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/, handleGetOriginSize(true)]; }); }); } })), react_1.default.createElement(antd_1.Tooltip, { title: "\u653E\u5927", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage_turnlarge", symbol: true }), className: "preview-tools-item", onClick: function () { return setScale(function (value) { return Number(Number(value + 0.2).toFixed(1)); }); } })), react_1.default.createElement(antd_1.Tooltip, { title: "\u9002\u5E94\u56FE\u7247", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage_turnmarch", symbol: true }), className: "preview-tools-item", onClick: function () { return handleSetImgMatch(); } })), react_1.default.createElement(antd_1.Tooltip, { title: "\u4E0B\u8F7D", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", onClick: function (e) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var res; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: if (!shell_1.Shell.hasShell()) return [3 /*break*/, 2]; e.preventDefault(); return [4 /*yield*/, shell_1.Shell.download(selectedAttachment.originalSrc, selectedAttachment.title)]; case 1: res = _a.sent(); if (res.success) { msgsub_1.default._success('执行成功'); } else { msgsub_1.default._error(res.msg || 'download error'); } _a.label = 2; case 2: return [2 /*return*/]; } }); }); }, className: "preview-tools-item", href: selectedAttachment.downloadSrc, download: selectedAttachment.title, icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolimage_download", symbol: true }) })), react_1.default.createElement(antd_1.Tooltip, { title: "\u5168\u90E8\u4E0B\u8F7D", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", loading: downloadLoading, onClick: function (e) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var items, origin_1, fetchList, res, blob, fileName; var _a, _b, _c, _d; return (0, tslib_1.__generator)(this, function (_e) { switch (_e.label) { case 0: e.preventDefault(); antd_1.message.loading('下载中,请稍候...', 0); _e.label = 1; case 1: _e.trys.push([1, , 4, 5]); items = states.items; origin_1 = (_c = (_b = (_a = props.env) === null || _a === void 0 ? void 0 : _a.axiosInstance) === null || _b === void 0 ? void 0 : _b.defaults) === null || _c === void 0 ? void 0 : _c.baseURL; fetchList = items.map(function (item) { return ({ fileUrl: item.originalSrc.startsWith('http') ? item.originalSrc : origin_1 + item.originalSrc, fileName: item.title }); }); return [4 /*yield*/, ((_d = props.env) === null || _d === void 0 ? void 0 : _d.fetcher({ url: '/api/v1/batch/file/download', method: 'POST', data: fetchList, responseType: 'arraybuffer' }, {}))]; case 2: res = _e.sent(); blob = new Blob([res.data], { type: 'application/zip' }); fileName = 'File-' + (0, dayjs_1.default)().format('YYYYMMDDHHmmss') + '.zip'; return [4 /*yield*/, tools_1.tools.openDownloadDialog(blob, fileName)]; case 3: _e.sent(); return [3 /*break*/, 5]; case 4: antd_1.message.destroy(); setDownloadLoading(false); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }, className: "preview-tools-item", href: selectedAttachment.downloadSrc, download: selectedAttachment.title, icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooldownloadzip", className: "icon-download", symbol: true }) })), !selectedAttachment.isNotImg ? (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(antd_1.Tooltip, { title: "\u5E76\u56FE", placement: 'top' }, react_1.default.createElement(antd_1.Button, { type: "link", icon: react_1.default.createElement(icons_1.Icon, { icon: "#icon-toolmarchpic", symbol: true }), className: "preview-tools-item " + (states.unionSelecting ? 'checked' : '') + " " + (states.mediaListShow && states.items.length > 1 ? '' : 'disabled'), onClick: function () { return handleUnionSelecting(!states.unionSelecting); } })))) : null)) : null)); }); /** fileViewer - end */ return (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.cloneElement(children, { onImageEnlarge: handleImageEnlarge }), visible ? react_1.default.createElement(DragModal_1.default, { className: 'preview-modal', dialogVisible: visible, footer: null, mask: false, centered: true, fullHeightOnInit: true, width: "60%", keyHandle: handlePreviewKeydown, minHeight: minHeight, minWidth: minWidth, title: '\u6587\u4EF6\u9884\u89C8', maskClosable: false, closeIcon: react_1.default.createElement(icons_2.CloseOutlined, { className: "preview-close" }), destroyOnClose: true, getContainer: (_a = props.env) === null || _a === void 0 ? void 0 : _a.getTopModalContainer, resizeable: true, canClickBelowDom: true, setMaxSize: true, drag: true, transitionName: "", onCancel: function () { return onClose(); }, bounds: false, boundDirection: ['top'] }, react_1.default.createElement(PcPreview, (0, tslib_1.__assign)({ ref: function (ref) { return pcPreviewRef.current = ref; } }, props))) : null)); }; exports.default = (0, theme_1.themeable)(ImageGallery); //# sourceMappingURL=./components/ImageGallery.js.map