@vtx/components 3.1.30 → 3.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1325 -0
- package/lib/_util/filterSpecialCharacters.js +43 -54
- package/lib/_util/filterSpecialCharacters.js.map +1 -1
- package/lib/_util/getComponentProps.js +3 -0
- package/lib/_util/getComponentProps.js.map +1 -1
- package/lib/_util/getUrlParam.js +6 -0
- package/lib/_util/getUrlParam.js.map +1 -1
- package/lib/_util/isFunction.js +1 -0
- package/lib/_util/isFunction.js.map +1 -1
- package/lib/_util/isObject.js +1 -0
- package/lib/_util/isObject.js.map +1 -1
- package/lib/_util/useColSize.js +10 -1
- package/lib/_util/useColSize.js.map +1 -1
- package/lib/_util/useInterval.js +3 -0
- package/lib/_util/useInterval.js.map +1 -1
- package/lib/_util/useSet.js +32 -14
- package/lib/_util/useSet.js.map +1 -1
- package/lib/config.js.map +1 -1
- package/lib/index.js +26 -0
- package/lib/index.js.map +1 -1
- package/lib/vtx-color-picker/index.js +21 -5
- package/lib/vtx-color-picker/index.js.map +1 -1
- package/lib/vtx-color-picker/style/css.js +2 -0
- package/lib/vtx-color-picker/style/css.js.map +1 -1
- package/lib/vtx-color-picker/style/index.js +2 -0
- package/lib/vtx-color-picker/style/index.js.map +1 -1
- package/lib/vtx-combogrid/Combogrid.js +74 -34
- package/lib/vtx-combogrid/Combogrid.js.map +1 -1
- package/lib/vtx-combogrid/index.js +45 -20
- package/lib/vtx-combogrid/index.js.map +1 -1
- package/lib/vtx-combogrid/style/css.js +7 -0
- package/lib/vtx-combogrid/style/css.js.map +1 -1
- package/lib/vtx-combogrid/style/index.js +7 -0
- package/lib/vtx-combogrid/style/index.js.map +1 -1
- package/lib/vtx-datagrid/Alert.js +11 -3
- package/lib/vtx-datagrid/Alert.js.map +1 -1
- package/lib/vtx-datagrid/ColumnSetting.js +44 -19
- package/lib/vtx-datagrid/ColumnSetting.js.map +1 -1
- package/lib/vtx-datagrid/ResizeableTitle.js +13 -2
- package/lib/vtx-datagrid/ResizeableTitle.js.map +1 -1
- package/lib/vtx-datagrid/index.js +142 -77
- package/lib/vtx-datagrid/index.js.map +1 -1
- package/lib/vtx-datagrid/renderColumnButtons.js +35 -5
- package/lib/vtx-datagrid/renderColumnButtons.js.map +1 -1
- package/lib/vtx-datagrid/style/css.js +10 -0
- package/lib/vtx-datagrid/style/css.js.map +1 -1
- package/lib/vtx-datagrid/style/index.css +0 -3
- package/lib/vtx-datagrid/style/index.js +10 -0
- package/lib/vtx-datagrid/style/index.js.map +1 -1
- package/lib/vtx-datagrid/style/index.less +1 -1
- package/lib/vtx-date-picker/QdatePicker.js +46 -16
- package/lib/vtx-date-picker/QdatePicker.js.map +1 -1
- package/lib/vtx-date-picker/generatePicker.js +47 -6
- package/lib/vtx-date-picker/generatePicker.js.map +1 -1
- package/lib/vtx-date-picker/index.js +5 -0
- package/lib/vtx-date-picker/index.js.map +1 -1
- package/lib/vtx-date-picker/style/css.js +1 -0
- package/lib/vtx-date-picker/style/css.js.map +1 -1
- package/lib/vtx-date-picker/style/index.js +1 -0
- package/lib/vtx-date-picker/style/index.js.map +1 -1
- package/lib/vtx-editor/index.js +23 -5
- package/lib/vtx-editor/index.js.map +1 -1
- package/lib/vtx-editor/style/css.js +1 -0
- package/lib/vtx-editor/style/css.js.map +1 -1
- package/lib/vtx-editor/style/index.js +1 -0
- package/lib/vtx-editor/style/index.js.map +1 -1
- package/lib/vtx-ellipsis-text/index.js +20 -6
- package/lib/vtx-ellipsis-text/index.js.map +1 -1
- package/lib/vtx-ellipsis-text/style/css.js +1 -0
- package/lib/vtx-ellipsis-text/style/css.js.map +1 -1
- package/lib/vtx-ellipsis-text/style/index.js +1 -0
- package/lib/vtx-ellipsis-text/style/index.js.map +1 -1
- package/lib/vtx-export/index.js +58 -25
- package/lib/vtx-export/index.js.map +1 -1
- package/lib/vtx-export/style/css.js +5 -0
- package/lib/vtx-export/style/css.js.map +1 -1
- package/lib/vtx-export/style/index.js +5 -0
- package/lib/vtx-export/style/index.js.map +1 -1
- package/lib/vtx-form-layout/Card.js +26 -5
- package/lib/vtx-form-layout/Card.js.map +1 -1
- package/lib/vtx-form-layout/Divider.js +8 -0
- package/lib/vtx-form-layout/Divider.js.map +1 -1
- package/lib/vtx-form-layout/FormItem.js +30 -8
- package/lib/vtx-form-layout/FormItem.js.map +1 -1
- package/lib/vtx-form-layout/Pane.js +7 -2
- package/lib/vtx-form-layout/Pane.js.map +1 -1
- package/lib/vtx-form-layout/Row.js +6 -0
- package/lib/vtx-form-layout/Row.js.map +1 -1
- package/lib/vtx-form-layout/context.js +2 -0
- package/lib/vtx-form-layout/context.js.map +1 -1
- package/lib/vtx-form-layout/index.js +22 -8
- package/lib/vtx-form-layout/index.js.map +1 -1
- package/lib/vtx-form-layout/style/css.js +7 -0
- package/lib/vtx-form-layout/style/css.js.map +1 -1
- package/lib/vtx-form-layout/style/index.js +7 -0
- package/lib/vtx-form-layout/style/index.js.map +1 -1
- package/lib/vtx-image/Image.js +98 -59
- package/lib/vtx-image/Image.js.map +1 -1
- package/lib/vtx-image/Preview.js +51 -20
- package/lib/vtx-image/Preview.js.map +1 -1
- package/lib/vtx-image/PreviewGroup.js +40 -11
- package/lib/vtx-image/PreviewGroup.js.map +1 -1
- package/lib/vtx-image/index.js +6 -0
- package/lib/vtx-image/index.js.map +1 -1
- package/lib/vtx-image/style/css.js +1 -0
- package/lib/vtx-image/style/css.js.map +1 -1
- package/lib/vtx-image/style/index.css +19 -0
- package/lib/vtx-image/style/index.js +1 -0
- package/lib/vtx-image/style/index.js.map +1 -1
- package/lib/vtx-image/style/index.less +76 -63
- package/lib/vtx-import/index.js +72 -37
- package/lib/vtx-import/index.js.map +1 -1
- package/lib/vtx-import/result.js +24 -7
- package/lib/vtx-import/result.js.map +1 -1
- package/lib/vtx-import/style/css.js +3 -0
- package/lib/vtx-import/style/css.js.map +1 -1
- package/lib/vtx-import/style/index.js +3 -0
- package/lib/vtx-import/style/index.js.map +1 -1
- package/lib/vtx-import2/CheckResult.js +6 -0
- package/lib/vtx-import2/CheckResult.js.map +1 -1
- package/lib/vtx-import2/Content.js +25 -4
- package/lib/vtx-import2/Content.js.map +1 -1
- package/lib/vtx-import2/DownloadSvg.js +4 -0
- package/lib/vtx-import2/DownloadSvg.js.map +1 -1
- package/lib/vtx-import2/ImportResult.js +11 -5
- package/lib/vtx-import2/ImportResult.js.map +1 -1
- package/lib/vtx-import2/UploadSvg.js +4 -0
- package/lib/vtx-import2/UploadSvg.js.map +1 -1
- package/lib/vtx-import2/index.js +92 -38
- package/lib/vtx-import2/index.js.map +1 -1
- package/lib/vtx-import2/style/css.js +3 -0
- package/lib/vtx-import2/style/css.js.map +1 -1
- package/lib/vtx-import2/style/index.js +3 -0
- package/lib/vtx-import2/style/index.js.map +1 -1
- package/lib/vtx-input/TextArea.js +22 -6
- package/lib/vtx-input/TextArea.js.map +1 -1
- package/lib/vtx-input/index.js +37 -11
- package/lib/vtx-input/index.js.map +1 -1
- package/lib/vtx-input/style/css.js +1 -0
- package/lib/vtx-input/style/css.js.map +1 -1
- package/lib/vtx-input/style/index.js +1 -0
- package/lib/vtx-input/style/index.js.map +1 -1
- package/lib/vtx-input/useLength.js +16 -4
- package/lib/vtx-input/useLength.js.map +1 -1
- package/lib/vtx-modal/Title.js +6 -1
- package/lib/vtx-modal/Title.js.map +1 -1
- package/lib/vtx-modal/index.js +70 -30
- package/lib/vtx-modal/index.js.map +1 -1
- package/lib/vtx-modal/style/css.js +1 -0
- package/lib/vtx-modal/style/css.js.map +1 -1
- package/lib/vtx-modal/style/index.js +1 -0
- package/lib/vtx-modal/style/index.js.map +1 -1
- package/lib/vtx-page-layout/Basic.js +6 -2
- package/lib/vtx-page-layout/Basic.js.map +1 -1
- package/lib/vtx-page-layout/Content.js +19 -7
- package/lib/vtx-page-layout/Content.js.map +1 -1
- package/lib/vtx-page-layout/Pane.js +10 -2
- package/lib/vtx-page-layout/Pane.js.map +1 -1
- package/lib/vtx-page-layout/TableLayout.js +47 -17
- package/lib/vtx-page-layout/TableLayout.js.map +1 -1
- package/lib/vtx-page-layout/TableWrap.js +15 -3
- package/lib/vtx-page-layout/TableWrap.js.map +1 -1
- package/lib/vtx-page-layout/container.js +34 -4
- package/lib/vtx-page-layout/container.js.map +1 -1
- package/lib/vtx-page-layout/index.js +8 -0
- package/lib/vtx-page-layout/index.js.map +1 -1
- package/lib/vtx-rps-frame/index.js +44 -21
- package/lib/vtx-rps-frame/index.js.map +1 -1
- package/lib/vtx-scrollable-row/index.js +57 -19
- package/lib/vtx-scrollable-row/index.js.map +1 -1
- package/lib/vtx-search/VtxCol.js +21 -0
- package/lib/vtx-search/VtxCol.js.map +1 -1
- package/lib/vtx-search/VtxRow.js +12 -6
- package/lib/vtx-search/VtxRow.js.map +1 -1
- package/lib/vtx-search/index.js +93 -40
- package/lib/vtx-search/index.js.map +1 -1
- package/lib/vtx-search/style/css.js +4 -0
- package/lib/vtx-search/style/css.js.map +1 -1
- package/lib/vtx-search/style/index.js +4 -0
- package/lib/vtx-search/style/index.js.map +1 -1
- package/lib/vtx-search-map-input/index.js +73 -42
- package/lib/vtx-search-map-input/index.js.map +1 -1
- package/lib/vtx-search-map-input/style/css.js +2 -0
- package/lib/vtx-search-map-input/style/css.js.map +1 -1
- package/lib/vtx-search-map-input/style/index.js +2 -0
- package/lib/vtx-search-map-input/style/index.js.map +1 -1
- package/lib/vtx-select/index.js +65 -20
- package/lib/vtx-select/index.js.map +1 -1
- package/lib/vtx-select/style/css.js +8 -0
- package/lib/vtx-select/style/css.js.map +1 -1
- package/lib/vtx-select/style/index.js +8 -0
- package/lib/vtx-select/style/index.js.map +1 -1
- package/lib/vtx-signature/index.js +28 -14
- package/lib/vtx-signature/index.js.map +1 -1
- package/lib/vtx-signature/style/css.js +2 -0
- package/lib/vtx-signature/style/css.js.map +1 -1
- package/lib/vtx-signature/style/index.js +2 -0
- package/lib/vtx-signature/style/index.js.map +1 -1
- package/lib/vtx-split-pane/Pane.js +14 -2
- package/lib/vtx-split-pane/Pane.js.map +1 -1
- package/lib/vtx-split-pane/Resizer.js +29 -9
- package/lib/vtx-split-pane/Resizer.js.map +1 -1
- package/lib/vtx-split-pane/SplitPane.js +94 -39
- package/lib/vtx-split-pane/SplitPane.js.map +1 -1
- package/lib/vtx-split-pane/index.js +4 -0
- package/lib/vtx-split-pane/index.js.map +1 -1
- package/lib/vtx-split-pane/style/css.js +3 -0
- package/lib/vtx-split-pane/style/css.js.map +1 -1
- package/lib/vtx-split-pane/style/index.js +3 -0
- package/lib/vtx-split-pane/style/index.js.map +1 -1
- package/lib/vtx-statistics-column/Back.js +7 -1
- package/lib/vtx-statistics-column/Back.js.map +1 -1
- package/lib/vtx-statistics-column/Item.js +22 -5
- package/lib/vtx-statistics-column/Item.js.map +1 -1
- package/lib/vtx-statistics-column/Total.js +22 -5
- package/lib/vtx-statistics-column/Total.js.map +1 -1
- package/lib/vtx-statistics-column/context.js +2 -0
- package/lib/vtx-statistics-column/context.js.map +1 -1
- package/lib/vtx-statistics-column/index.js +16 -0
- package/lib/vtx-statistics-column/index.js.map +1 -1
- package/lib/vtx-time-picker/index.js +16 -3
- package/lib/vtx-time-picker/index.js.map +1 -1
- package/lib/vtx-upload/FilePreview.js +28 -9
- package/lib/vtx-upload/FilePreview.js.map +1 -1
- package/lib/vtx-upload/index.js +138 -67
- package/lib/vtx-upload/index.js.map +1 -1
- package/lib/vtx-upload/style/css.js +5 -0
- package/lib/vtx-upload/style/css.js.map +1 -1
- package/lib/vtx-upload/style/index.js +5 -0
- package/lib/vtx-upload/style/index.js.map +1 -1
- package/lib/vtx-wang-editor/index.js +66 -27
- package/lib/vtx-wang-editor/index.js.map +1 -1
- package/lib/vtx-wang-editor/style/css.js +1 -0
- package/lib/vtx-wang-editor/style/css.js.map +1 -1
- package/lib/vtx-wang-editor/style/index.js +1 -0
- package/lib/vtx-wang-editor/style/index.js.map +1 -1
- package/lib/vtx-wang-editor/wangEditorUtil.js +88 -30
- package/lib/vtx-wang-editor/wangEditorUtil.js.map +1 -1
- package/lib/vtx-ztree/index.js +101 -49
- package/lib/vtx-ztree/index.js.map +1 -1
- package/lib/vtx-ztree/style/css.js +1 -0
- package/lib/vtx-ztree/style/css.js.map +1 -1
- package/lib/vtx-ztree/style/index.js +1 -0
- package/lib/vtx-ztree/style/index.js.map +1 -1
- package/lib/vtx-ztree-select/index.js +99 -43
- package/lib/vtx-ztree-select/index.js.map +1 -1
- package/lib/vtx-ztree-select/style/css.js +3 -0
- package/lib/vtx-ztree-select/style/css.js.map +1 -1
- package/lib/vtx-ztree-select/style/index.js +3 -0
- package/lib/vtx-ztree-select/style/index.js.map +1 -1
- package/package.json +126 -126
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["debouncedMessage","debounce","msg","message","error","initVPrev","type","name","url","downloadUrl","visible","initUrl","action","thumbnailUrl","rejectTypes","Dragger","Upload","VtxUpload","forwardRef","props","ref","isDragger","draggerConfig","accept","mode","viewMode","showUploadList","customizedButton","listType","onSuccess","onError","onRemove","maxFileSize","beforeUpload","maxNum","flag","rest","useThumbnail","undefined","useState","fileList","setFileList","imageViewer","setImageViewer","imageList","setImageList","imageCt","setImageCt","useSetState","vPrev","setVPrev","joinToken","str","indexOf","replace","getUrlParam","window","flsPrefix","useEffect","getSynFileList","Array","isArray","imagelist","map","file","push","Viewer","getConfig","token","config","headers","Authorization","onChange","info","response","result","errMsg","flt","pop","status","vtxId","data","length","id","newFileList","newFile","thumbUrl","filter","item","uid","afterFileList","limit","size","pointIndex","lastIndexOf","fileType","substring","includes","onPreview","downloadFile","fileName","handlePreview","showRemoveIcon","imageIndex","update","view","processedFileList","index","console","img","maxWidth","maxHeight","marginTop","marginBottom","mainText","subText","fontSize","color","display","ins","propTypes","PropTypes","bool","object","string","node","previewUrl","func","number","array"],"sources":["vtx-upload/index.jsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef } from 'react';\nimport useSetState from 'ahooks/es/useSetState';\nimport PropTypes from 'prop-types';\nimport Viewer from 'viewerjs';\nimport Upload from 'antd/lib/upload';\nimport Button from 'antd/lib/button';\nimport InboxOutlined from '@ant-design/icons/InboxOutlined';\nimport PlusOutlined from '@ant-design/icons/PlusOutlined';\nimport UploadOutlined from '@ant-design/icons/UploadOutlined';\nimport message from 'antd/lib/message';\nimport downloadFile from '@vtx/utils/lib/downloadFile';\nimport debounce from 'lodash.debounce';\nimport Prev from './FilePreview';\nimport getUrlParam from '../_util/getUrlParam';\n\nconst debouncedMessage = debounce(msg => {\n message.error(msg);\n}, 500);\n\n//文件预览\nconst initVPrev = {\n type: '', //video or file\n name: '',\n url: '',\n downloadUrl: '',\n visible: false,\n};\n\nconst initUrl = {\n action: '/cloudFile/common/uploadFile',\n downloadUrl: '/cloudFile/common/downloadFile?id=',\n thumbnailUrl:\n '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\n //previewUrl: '/onlinePreview',\n};\n//禁止上传的文件类型\nconst rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];\n\nconst Dragger = Upload.Dragger;\nconst VtxUpload = forwardRef((props, ref) => {\n const {\n isDragger = false, //是否拖拽模式\n draggerConfig = {}, //拖动配置\n accept, //接受上传的文件类型\n mode = 'multiple', //单文件模式or多文件模式\n viewMode, //是否查看模式(隐藏上传按钮)\n showUploadList, //是否展示文件列表\n customizedButton, //自定义上传文字描述\n listType = 'text', //上传列表的样式\n onSuccess, //上传成功\n onError, //上传失败\n onRemove, //删除\n maxFileSize = 5 * 1024 * 1024, //文件大小限制,默认最大5M\n beforeUpload, //上传前回调\n maxNum, //最多上传的文件数量\n flag, //同步数据标记\n ...rest\n } = props;\n // 是否使用缩略图\n const useThumbnail =\n (props.useThumbnail === undefined ? true : props.useThumbnail) &&\n (listType == 'picture' || listType == 'picture-card');\n\n const [fileList, setFileList] = useState([]); //初始化文件列表\n const [imageViewer, setImageViewer] = useState(null); //图片预览\n const [imageList, setImageList] = useState([]);\n const [imageCt, setImageCt] = useState(null);\n const [vPrev, setVPrev] = useSetState(initVPrev); //文件预览相关\n\n // 参数中拼接token\n function joinToken(str) {\n if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {\n return str.replace('?', `?token=${getUrlParam('token') || ''}&`);\n } else if (str.indexOf('?') === -1) {\n return str + `?token=${getUrlParam('token') || ''}`;\n }\n return str;\n }\n\n const url = {\n action: props.action || initUrl.action,\n downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),\n thumbnailUrl: joinToken(window?.flsPrefix ? `${window.flsPrefix}${initUrl.thumbnailUrl}` : `${props.thumbnailUrl || initUrl.thumbnailUrl}`),\n //previewUrl: props.previewUrl || initUrl.previewUrl,\n };\n const { action, downloadUrl, thumbnailUrl } = url;\n\n useEffect(() => {\n setFileList(getSynFileList(props) || []);\n }, [flag]);\n\n useEffect(() => {\n if (Array.isArray(fileList)) {\n // 只有图片的才可以预览,这边需要判断是否是图片\n const imagelist = [];\n // 只能通过后缀来判断\n fileList.map(file => {\n if (file.type?.indexOf('image') > -1) {\n imagelist.push(file);\n }\n });\n setImageList(imagelist);\n }\n }, [fileList]);\n\n useEffect(() => {\n if (imageCt) {\n setImageViewer(new Viewer(imageCt, {}));\n }\n }, [imageCt]);\n\n const getConfig = () => {\n let token = getUrlParam('token') || '';\n let config = {\n ...rest,\n accept,\n action,\n fileList: fileList,\n listType,\n showUploadList,\n headers: {\n Authorization: token ? `Bearer ${token}` : '',\n ...rest.headers,\n },\n onChange(info) {\n setFileList(info.fileList);\n if (info.file.response && info.file.response.result === 1) {\n message.error(info.file.response.errMsg || '上传失败!');\n let flt = [...fileList];\n flt.pop();\n setFileList(flt);\n return;\n }\n // 此处根据后台返回的数据结构取得文件ID\n if (info.file.status !== 'uploading' && info.file.status !== 'removed') {\n let vtxId =\n info.file.response &&\n Array.isArray(info.file.response.data) &&\n info.file.response.data.length > 0\n ? info.file.response.data[0].id\n : undefined;\n let newFileList = info.fileList;\n let newFile = vtxId\n ? {\n ...info.file,\n id: vtxId,\n url: downloadUrl + vtxId,\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\n }\n : {\n ...info.file,\n };\n newFileList = info.fileList\n .filter(item => {\n // 有vtxId代表上传成功,有item.id代表之前上传成功的\n if (vtxId || item.id) return true;\n return false;\n })\n .map(item => {\n if (item.uid == info.file.uid) {\n return {\n ...item,\n id: vtxId,\n url: downloadUrl + vtxId,\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\n };\n }\n return item;\n });\n\n if (mode == 'single') {\n setFileList([newFile]);\n } else {\n setFileList(newFileList);\n }\n // 更新组件状态\n // if (mode == 'single' && info.file.status === 'done') {\n // setFileList([newFile]);\n // } else {\n // setFileList(newFileList);\n // }\n\n // 触发外部方法\n if (info.file.status === 'done') {\n if (typeof onSuccess == 'function') {\n onSuccess(newFile);\n }\n } else if (info.file.status === 'error') {\n if (typeof onError == 'function') {\n onError(info.file);\n }\n }\n }\n },\n onRemove(file) {\n if (typeof onRemove == 'function') {\n return onRemove(file);\n }\n },\n beforeUpload(file, afterFileList) {\n //限制文件大小\n if (maxFileSize && typeof maxFileSize === 'number') {\n const limit = file.size < maxFileSize;\n if (!limit) {\n message.error(`请上传${maxFileSize / 1024 / 1024}M以内的文件`);\n return false;\n }\n }\n //限制不允许上传的文件类型(通过文件名后缀)\n let pointIndex = file.name ? file.name.lastIndexOf('.') : -1;\n if (pointIndex > -1) {\n let fileType = file.name.substring(pointIndex);\n if (rejectTypes.includes(fileType)) {\n message.error('不支持该文件类型');\n return false;\n }\n }\n // 多选限制文件数量\n if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {\n // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传\n debouncedMessage(`最多上传${maxNum}个`);\n return false;\n }\n\n if (typeof beforeUpload === 'function') {\n return beforeUpload(file, afterFileList);\n }\n return true;\n },\n };\n\n if (props.onPreview && typeof props.onPreview === 'function') {\n config.onPreview = props.onPreview;\n } else {\n config.onPreview = file => {\n if (!file.type) {\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\n } else if (file.type?.indexOf('image') > -1) {\n handlePreview(file);\n } else if (file.type?.indexOf('video') > -1) {\n // 视频\n setVPrev({\n type: 'video',\n name: file.name || '视频预览',\n url: downloadUrl + file.id,\n downloadUrl: downloadUrl + file.id,\n visible: true,\n });\n } else {\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\n }\n\n // TODO 暂无好的文件预览服务,等后续完善,只提供下载\n // else if (\n // file.type == 'application/PDF' ||\n // file.type == 'application/vnd.ms-excel' ||\n // file.type ==\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\n // file.type == 'application/msword' ||\n // file.type ==\n // 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n // ) {\n // let url = '';\n // if (props.previewUrl) {\n // url = `${props.previewUrl}?id=${file.id}&fileName=${file.name}`;\n // } else {\n // url = `http://183.215.89.162:8012/onlinePreview?url=http://183.136.177.108:8003/cloudFile/common/downloadFile${encodeURIComponent(\n // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\\s*/g, ''),\n // )}`;\n // }\n\n // setVPrev({\n // type: 'file',\n // name: file.name || '文件预览',\n // url: url,\n // downloadUrl: downloadUrl + file.id,\n // visible: true,\n // });\n // }\n };\n }\n\n // viewMode\n if (viewMode) {\n config.showUploadList = { showRemoveIcon: false };\n }\n\n return config;\n };\n\n const handlePreview = file => {\n const imageIndex = imageList.map(item => item.id).indexOf(file.id);\n if (imageIndex == -1) return;\n imageViewer.update();\n imageViewer.view(imageIndex);\n };\n\n const getSynFileList = props => {\n let processedFileList = props.fileList || [];\n // 单文件模式只取第一个\n if (props.mode == 'single' && processedFileList.length > 1) {\n processedFileList = [processedFileList[0]];\n }\n processedFileList = processedFileList.map((item, index) => {\n // 将外部传入的简易文件数组处理成为组件需要的数组结构\n if (item.name === undefined || item.id === undefined) {\n // eslint-disable-next-line no-console\n console.error('文件列表的name和id属性不能为空');\n }\n return {\n ...item,\n uid: -1 - index,\n status: 'done',\n url: item.url || downloadUrl + item.id,\n thumbUrl: useThumbnail ? item.thumbUrl || thumbnailUrl + item.id : undefined,\n };\n });\n return processedFileList;\n };\n return (\n <>\n {isDragger ? (\n <Dragger {...getConfig()} ref={ref}>\n {draggerConfig?.img ? (\n <img\n src={draggerConfig.img}\n alt=\"\"\n style={{\n maxWidth: 100,\n maxHeight: 100,\n marginTop: '3%',\n marginBottom: '5%',\n }}\n />\n ) : (\n <p className=\"ant-upload-drag-icon\">\n <InboxOutlined />\n </p>\n )}\n <p className=\"ant-upload-text\">{draggerConfig?.mainText || '点击或拖拽上传'}</p>\n <p className=\"ant-upload-hint\">\n {draggerConfig?.subText || '支持上传word,excel,png...'}\n </p>\n </Dragger>\n ) : (\n <Upload {...getConfig()} ref={ref}>\n {viewMode || fileList.length >= maxNum\n ? null\n : customizedButton ||\n (listType == 'picture-card' ? (\n <div>\n <PlusOutlined style={{ fontSize: '28px', color: '#999' }} />\n <div className=\"ant-upload-text\">上传</div>\n </div>\n ) : (\n <Button>\n <UploadOutlined />\n 上传\n </Button>\n ))}\n </Upload>\n )}\n <div style={{ display: 'none' }}>\n <ul\n ref={ins => {\n if (ins) setImageCt(ins);\n }}\n >\n {imageList\n .filter(item => item.type && item.type?.indexOf('image') > -1)\n .map((item, index) => (\n <li key={item.uid}>\n <img\n src={item.url || downloadUrl + item.id}\n alt={item.name || `picture-${index + 1}`}\n />\n </li>\n ))}\n </ul>\n </div>\n {/* 视频预览 */}\n <Prev onCancel={() => setVPrev(initVPrev)} {...vPrev} />\n </>\n );\n});\n\nVtxUpload.propTypes = {\n isDragger: PropTypes.bool,\n draggerConfig: PropTypes.object,\n accept: PropTypes.string,\n mode: PropTypes.string,\n viewMode: PropTypes.bool,\n showUploadList: PropTypes.bool,\n customizedButton: PropTypes.node,\n listType: PropTypes.string,\n action: PropTypes.string,\n downloadUrl: PropTypes.string,\n thumbnailUrl: PropTypes.string,\n previewUrl: PropTypes.string,\n onSuccess: PropTypes.func,\n onError: PropTypes.func,\n onRemove: PropTypes.func,\n onPreview: PropTypes.func,\n maxFileSize: PropTypes.number,\n beforeUpload: PropTypes.func,\n maxNum: PropTypes.number,\n fileList: PropTypes.array,\n flag: PropTypes.number,\n useThumbnail: PropTypes.bool,\n};\nexport default VtxUpload;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["debouncedMessage","debounce","msg","message","error","initVPrev","type","name","url","downloadUrl","visible","initUrl","action","thumbnailUrl","rejectTypes","Dragger","Upload","VtxUpload","forwardRef","props","ref","isDragger","draggerConfig","accept","mode","viewMode","showUploadList","customizedButton","listType","onSuccess","onError","onRemove","maxFileSize","beforeUpload","maxNum","flag","rest","useThumbnail","undefined","useState","fileList","setFileList","imageViewer","setImageViewer","imageList","setImageList","imageCt","setImageCt","useSetState","vPrev","setVPrev","joinToken","str","indexOf","replace","getUrlParam","window","flsPrefix","useEffect","getSynFileList","Array","isArray","imagelist","map","file","push","Viewer","getConfig","token","config","headers","Authorization","onChange","info","response","result","errMsg","flt","pop","status","vtxId","data","length","id","newFileList","newFile","thumbUrl","filter","item","uid","afterFileList","limit","size","pointIndex","lastIndexOf","fileType","substring","includes","onPreview","downloadFile","fileName","handlePreview","showRemoveIcon","imageIndex","update","view","processedFileList","index","console","img","maxWidth","maxHeight","marginTop","marginBottom","mainText","subText","fontSize","color","display","ins","propTypes","PropTypes","bool","object","string","node","previewUrl","func","number","array"],"sources":["vtx-upload/index.jsx"],"sourcesContent":["import React, { useState, useEffect, forwardRef } from 'react';\r\nimport useSetState from 'ahooks/es/useSetState';\r\nimport PropTypes from 'prop-types';\r\nimport Viewer from 'viewerjs';\r\nimport Upload from 'antd/lib/upload';\r\nimport Button from 'antd/lib/button';\r\nimport InboxOutlined from '@ant-design/icons/InboxOutlined';\r\nimport PlusOutlined from '@ant-design/icons/PlusOutlined';\r\nimport UploadOutlined from '@ant-design/icons/UploadOutlined';\r\nimport message from 'antd/lib/message';\r\nimport downloadFile from '@vtx/utils/lib/downloadFile';\r\nimport debounce from 'lodash.debounce';\r\nimport Prev from './FilePreview';\r\nimport getUrlParam from '../_util/getUrlParam';\r\n\r\nconst debouncedMessage = debounce(msg => {\r\n message.error(msg);\r\n}, 500);\r\n\r\n//文件预览\r\nconst initVPrev = {\r\n type: '', //video or file\r\n name: '',\r\n url: '',\r\n downloadUrl: '',\r\n visible: false,\r\n};\r\n\r\nconst initUrl = {\r\n action: '/cloudFile/common/uploadFile',\r\n downloadUrl: '/cloudFile/common/downloadFile?id=',\r\n thumbnailUrl:\r\n '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\r\n //previewUrl: '/onlinePreview',\r\n};\r\n//禁止上传的文件类型\r\nconst rejectTypes = ['.asp', '.aspx', '.jsp', '.exe', '.cgi', '.asa', '.cer', '.cdx', '.hta'];\r\n\r\nconst Dragger = Upload.Dragger;\r\nconst VtxUpload = forwardRef((props, ref) => {\r\n const {\r\n isDragger = false, //是否拖拽模式\r\n draggerConfig = {}, //拖动配置\r\n accept, //接受上传的文件类型\r\n mode = 'multiple', //单文件模式or多文件模式\r\n viewMode, //是否查看模式(隐藏上传按钮)\r\n showUploadList, //是否展示文件列表\r\n customizedButton, //自定义上传文字描述\r\n listType = 'text', //上传列表的样式\r\n onSuccess, //上传成功\r\n onError, //上传失败\r\n onRemove, //删除\r\n maxFileSize = 5 * 1024 * 1024, //文件大小限制,默认最大5M\r\n beforeUpload, //上传前回调\r\n maxNum, //最多上传的文件数量\r\n flag, //同步数据标记\r\n ...rest\r\n } = props;\r\n // 是否使用缩略图\r\n const useThumbnail =\r\n (props.useThumbnail === undefined ? true : props.useThumbnail) &&\r\n (listType == 'picture' || listType == 'picture-card');\r\n\r\n const [fileList, setFileList] = useState([]); //初始化文件列表\r\n const [imageViewer, setImageViewer] = useState(null); //图片预览\r\n const [imageList, setImageList] = useState([]);\r\n const [imageCt, setImageCt] = useState(null);\r\n const [vPrev, setVPrev] = useSetState(initVPrev); //文件预览相关\r\n\r\n // 参数中拼接token\r\n function joinToken(str) {\r\n if (str.indexOf('token=') === -1 && str.indexOf('?') > -1) {\r\n return str.replace('?', `?token=${getUrlParam('token') || ''}&`);\r\n } else if (str.indexOf('?') === -1) {\r\n return str + `?token=${getUrlParam('token') || ''}`;\r\n }\r\n return str;\r\n }\r\n\r\n const url = {\r\n action: props.action || initUrl.action,\r\n downloadUrl: joinToken(props.downloadUrl || initUrl.downloadUrl),\r\n thumbnailUrl: joinToken(window?.flsPrefix ? `${window.flsPrefix}${initUrl.thumbnailUrl}` : `${props.thumbnailUrl || initUrl.thumbnailUrl}`),\r\n //previewUrl: props.previewUrl || initUrl.previewUrl,\r\n };\r\n const { action, downloadUrl, thumbnailUrl } = url;\r\n\r\n useEffect(() => {\r\n setFileList(getSynFileList(props) || []);\r\n }, [flag]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(fileList)) {\r\n // 只有图片的才可以预览,这边需要判断是否是图片\r\n const imagelist = [];\r\n // 只能通过后缀来判断\r\n fileList.map(file => {\r\n if (file.type?.indexOf('image') > -1) {\r\n imagelist.push(file);\r\n }\r\n });\r\n setImageList(imagelist);\r\n }\r\n }, [fileList]);\r\n\r\n useEffect(() => {\r\n if (imageCt) {\r\n setImageViewer(new Viewer(imageCt, {}));\r\n }\r\n }, [imageCt]);\r\n\r\n const getConfig = () => {\r\n let token = getUrlParam('token') || '';\r\n let config = {\r\n ...rest,\r\n accept,\r\n action,\r\n fileList: fileList,\r\n listType,\r\n showUploadList,\r\n headers: {\r\n Authorization: token ? `Bearer ${token}` : '',\r\n ...rest.headers,\r\n },\r\n onChange(info) {\r\n setFileList(info.fileList);\r\n if (info.file.response && info.file.response.result === 1) {\r\n message.error(info.file.response.errMsg || '上传失败!');\r\n let flt = [...fileList];\r\n flt.pop();\r\n setFileList(flt);\r\n return;\r\n }\r\n // 此处根据后台返回的数据结构取得文件ID\r\n if (info.file.status !== 'uploading' && info.file.status !== 'removed') {\r\n let vtxId =\r\n info.file.response &&\r\n Array.isArray(info.file.response.data) &&\r\n info.file.response.data.length > 0\r\n ? info.file.response.data[0].id\r\n : undefined;\r\n let newFileList = info.fileList;\r\n let newFile = vtxId\r\n ? {\r\n ...info.file,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n }\r\n : {\r\n ...info.file,\r\n };\r\n newFileList = info.fileList\r\n .filter(item => {\r\n // 有vtxId代表上传成功,有item.id代表之前上传成功的\r\n if (vtxId || item.id) return true;\r\n return false;\r\n })\r\n .map(item => {\r\n if (item.uid == info.file.uid) {\r\n return {\r\n ...item,\r\n id: vtxId,\r\n url: downloadUrl + vtxId,\r\n thumbUrl: useThumbnail ? thumbnailUrl + vtxId : undefined,\r\n };\r\n }\r\n return item;\r\n });\r\n\r\n if (mode == 'single') {\r\n setFileList([newFile]);\r\n } else {\r\n setFileList(newFileList);\r\n }\r\n // 更新组件状态\r\n // if (mode == 'single' && info.file.status === 'done') {\r\n // setFileList([newFile]);\r\n // } else {\r\n // setFileList(newFileList);\r\n // }\r\n\r\n // 触发外部方法\r\n if (info.file.status === 'done') {\r\n if (typeof onSuccess == 'function') {\r\n onSuccess(newFile);\r\n }\r\n } else if (info.file.status === 'error') {\r\n if (typeof onError == 'function') {\r\n onError(info.file);\r\n }\r\n }\r\n }\r\n },\r\n onRemove(file) {\r\n if (typeof onRemove == 'function') {\r\n return onRemove(file);\r\n }\r\n },\r\n beforeUpload(file, afterFileList) {\r\n //限制文件大小\r\n if (maxFileSize && typeof maxFileSize === 'number') {\r\n const limit = file.size < maxFileSize;\r\n if (!limit) {\r\n message.error(`请上传${maxFileSize / 1024 / 1024}M以内的文件`);\r\n return false;\r\n }\r\n }\r\n //限制不允许上传的文件类型(通过文件名后缀)\r\n let pointIndex = file.name ? file.name.lastIndexOf('.') : -1;\r\n if (pointIndex > -1) {\r\n let fileType = file.name.substring(pointIndex);\r\n if (rejectTypes.includes(fileType)) {\r\n message.error('不支持该文件类型');\r\n return false;\r\n }\r\n }\r\n // 多选限制文件数量\r\n if (typeof maxNum === 'number' && afterFileList.length + fileList.length > maxNum) {\r\n // 减少提示错误次数, 思路,防抖 这边有个问题 就是防抖的这个方法 return fasle 不上传\r\n debouncedMessage(`最多上传${maxNum}个`);\r\n return false;\r\n }\r\n\r\n if (typeof beforeUpload === 'function') {\r\n return beforeUpload(file, afterFileList);\r\n }\r\n return true;\r\n },\r\n };\r\n\r\n if (props.onPreview && typeof props.onPreview === 'function') {\r\n config.onPreview = props.onPreview;\r\n } else {\r\n config.onPreview = file => {\r\n if (!file.type) {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n } else if (file.type?.indexOf('image') > -1) {\r\n handlePreview(file);\r\n } else if (file.type?.indexOf('video') > -1) {\r\n // 视频\r\n setVPrev({\r\n type: 'video',\r\n name: file.name || '视频预览',\r\n url: downloadUrl + file.id,\r\n downloadUrl: downloadUrl + file.id,\r\n visible: true,\r\n });\r\n } else {\r\n downloadFile(downloadUrl + file.id, { fileName: file.name }, 'blob');\r\n }\r\n\r\n // TODO 暂无好的文件预览服务,等后续完善,只提供下载\r\n // else if (\r\n // file.type == 'application/PDF' ||\r\n // file.type == 'application/vnd.ms-excel' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n // file.type == 'application/msword' ||\r\n // file.type ==\r\n // 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\r\n // ) {\r\n // let url = '';\r\n // if (props.previewUrl) {\r\n // url = `${props.previewUrl}?id=${file.id}&fileName=${file.name}`;\r\n // } else {\r\n // url = `http://183.215.89.162:8012/onlinePreview?url=http://183.136.177.108:8003/cloudFile/common/downloadFile${encodeURIComponent(\r\n // '?id=' + file.id + '&fullfilename=' + file.name.replace(/\\s*/g, ''),\r\n // )}`;\r\n // }\r\n\r\n // setVPrev({\r\n // type: 'file',\r\n // name: file.name || '文件预览',\r\n // url: url,\r\n // downloadUrl: downloadUrl + file.id,\r\n // visible: true,\r\n // });\r\n // }\r\n };\r\n }\r\n\r\n // viewMode\r\n if (viewMode) {\r\n config.showUploadList = { showRemoveIcon: false };\r\n }\r\n\r\n return config;\r\n };\r\n\r\n const handlePreview = file => {\r\n const imageIndex = imageList.map(item => item.id).indexOf(file.id);\r\n if (imageIndex == -1) return;\r\n imageViewer.update();\r\n imageViewer.view(imageIndex);\r\n };\r\n\r\n const getSynFileList = props => {\r\n let processedFileList = props.fileList || [];\r\n // 单文件模式只取第一个\r\n if (props.mode == 'single' && processedFileList.length > 1) {\r\n processedFileList = [processedFileList[0]];\r\n }\r\n processedFileList = processedFileList.map((item, index) => {\r\n // 将外部传入的简易文件数组处理成为组件需要的数组结构\r\n if (item.name === undefined || item.id === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.error('文件列表的name和id属性不能为空');\r\n }\r\n return {\r\n ...item,\r\n uid: -1 - index,\r\n status: 'done',\r\n url: item.url || downloadUrl + item.id,\r\n thumbUrl: useThumbnail ? item.thumbUrl || thumbnailUrl + item.id : undefined,\r\n };\r\n });\r\n return processedFileList;\r\n };\r\n return (\r\n <>\r\n {isDragger ? (\r\n <Dragger {...getConfig()} ref={ref}>\r\n {draggerConfig?.img ? (\r\n <img\r\n src={draggerConfig.img}\r\n alt=\"\"\r\n style={{\r\n maxWidth: 100,\r\n maxHeight: 100,\r\n marginTop: '3%',\r\n marginBottom: '5%',\r\n }}\r\n />\r\n ) : (\r\n <p className=\"ant-upload-drag-icon\">\r\n <InboxOutlined />\r\n </p>\r\n )}\r\n <p className=\"ant-upload-text\">{draggerConfig?.mainText || '点击或拖拽上传'}</p>\r\n <p className=\"ant-upload-hint\">\r\n {draggerConfig?.subText || '支持上传word,excel,png...'}\r\n </p>\r\n </Dragger>\r\n ) : (\r\n <Upload {...getConfig()} ref={ref}>\r\n {viewMode || fileList.length >= maxNum\r\n ? null\r\n : customizedButton ||\r\n (listType == 'picture-card' ? (\r\n <div>\r\n <PlusOutlined style={{ fontSize: '28px', color: '#999' }} />\r\n <div className=\"ant-upload-text\">上传</div>\r\n </div>\r\n ) : (\r\n <Button>\r\n <UploadOutlined />\r\n 上传\r\n </Button>\r\n ))}\r\n </Upload>\r\n )}\r\n <div style={{ display: 'none' }}>\r\n <ul\r\n ref={ins => {\r\n if (ins) setImageCt(ins);\r\n }}\r\n >\r\n {imageList\r\n .filter(item => item.type && item.type?.indexOf('image') > -1)\r\n .map((item, index) => (\r\n <li key={item.uid}>\r\n <img\r\n src={item.url || downloadUrl + item.id}\r\n alt={item.name || `picture-${index + 1}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n {/* 视频预览 */}\r\n <Prev onCancel={() => setVPrev(initVPrev)} {...vPrev} />\r\n </>\r\n );\r\n});\r\n\r\nVtxUpload.propTypes = {\r\n isDragger: PropTypes.bool,\r\n draggerConfig: PropTypes.object,\r\n accept: PropTypes.string,\r\n mode: PropTypes.string,\r\n viewMode: PropTypes.bool,\r\n showUploadList: PropTypes.bool,\r\n customizedButton: PropTypes.node,\r\n listType: PropTypes.string,\r\n action: PropTypes.string,\r\n downloadUrl: PropTypes.string,\r\n thumbnailUrl: PropTypes.string,\r\n previewUrl: PropTypes.string,\r\n onSuccess: PropTypes.func,\r\n onError: PropTypes.func,\r\n onRemove: PropTypes.func,\r\n onPreview: PropTypes.func,\r\n maxFileSize: PropTypes.number,\r\n beforeUpload: PropTypes.func,\r\n maxNum: PropTypes.number,\r\n fileList: PropTypes.array,\r\n flag: PropTypes.number,\r\n useThumbnail: PropTypes.bool,\r\n};\r\nexport default VtxUpload;\r\n"],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("antd/lib/upload/style/css");
|
|
4
|
+
|
|
4
5
|
require("antd/lib/button/style/css");
|
|
6
|
+
|
|
5
7
|
require("antd/lib/message/style/css");
|
|
8
|
+
|
|
6
9
|
require("antd/lib/modal/style/css");
|
|
10
|
+
|
|
7
11
|
require("viewerjs/dist/viewer.css");
|
|
12
|
+
|
|
8
13
|
require("./index.css");
|
|
9
14
|
//# sourceMappingURL=css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.js","names":[],"sources":["vtx-upload/style/index.js"],"sourcesContent":["import 'antd/lib/upload/style';\nimport 'antd/lib/button/style';\nimport 'antd/lib/message/style';\nimport 'antd/lib/modal/style';\nimport 'antd/lib/button/style';\nimport 'viewerjs/dist/viewer.css';\nimport './index.less';\n"],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"css.js","names":[],"sources":["vtx-upload/style/index.js"],"sourcesContent":["import 'antd/lib/upload/style';\nimport 'antd/lib/button/style';\nimport 'antd/lib/message/style';\nimport 'antd/lib/modal/style';\nimport 'antd/lib/button/style';\nimport 'viewerjs/dist/viewer.css';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("antd/lib/upload/style");
|
|
4
|
+
|
|
4
5
|
require("antd/lib/button/style");
|
|
6
|
+
|
|
5
7
|
require("antd/lib/message/style");
|
|
8
|
+
|
|
6
9
|
require("antd/lib/modal/style");
|
|
10
|
+
|
|
7
11
|
require("viewerjs/dist/viewer.css");
|
|
12
|
+
|
|
8
13
|
require("./index.less");
|
|
9
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["vtx-upload/style/index.js"],"sourcesContent":["import 'antd/lib/upload/style';\nimport 'antd/lib/button/style';\nimport 'antd/lib/message/style';\nimport 'antd/lib/modal/style';\nimport 'antd/lib/button/style';\nimport 'viewerjs/dist/viewer.css';\nimport './index.less';\n"],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["vtx-upload/style/index.js"],"sourcesContent":["import 'antd/lib/upload/style';\nimport 'antd/lib/button/style';\nimport 'antd/lib/message/style';\nimport 'antd/lib/modal/style';\nimport 'antd/lib/button/style';\nimport 'viewerjs/dist/viewer.css';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA"}
|
|
@@ -1,63 +1,91 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports["default"] = void 0;
|
|
9
|
+
|
|
8
10
|
require("@wangeditor/editor/dist/css/style.css");
|
|
11
|
+
|
|
9
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
10
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
11
16
|
var _editorForReact = require("@wangeditor/editor-for-react");
|
|
17
|
+
|
|
12
18
|
var _pluginUploadAttachment = _interopRequireDefault(require("@wangeditor/plugin-upload-attachment"));
|
|
19
|
+
|
|
13
20
|
var _editor = require("@wangeditor/editor");
|
|
21
|
+
|
|
14
22
|
var _wangEditorUtil = require("./wangEditorUtil");
|
|
23
|
+
|
|
15
24
|
var _excluded = ["value", "onChange", "downloadUrl", "uploadUrl", "placeholder", "height"];
|
|
25
|
+
|
|
16
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
|
+
|
|
17
28
|
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); }
|
|
29
|
+
|
|
18
30
|
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; }
|
|
31
|
+
|
|
19
32
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }
|
|
33
|
+
|
|
20
34
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
35
|
+
|
|
21
36
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
37
|
+
|
|
22
38
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
39
|
+
|
|
23
40
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
41
|
+
|
|
24
42
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
43
|
+
|
|
25
44
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
45
|
+
|
|
26
46
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
47
|
+
|
|
27
48
|
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
49
|
+
|
|
28
50
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
51
|
+
|
|
29
52
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
53
|
+
|
|
30
54
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
55
|
+
|
|
31
56
|
// 注册插件 处理附件
|
|
32
|
-
_editor.Boot.registerModule(_pluginUploadAttachment["default"]);
|
|
33
|
-
|
|
57
|
+
_editor.Boot.registerModule(_pluginUploadAttachment["default"]); // 注册插件 处理为空的时候
|
|
58
|
+
|
|
59
|
+
|
|
34
60
|
_editor.Boot.registerPlugin(_wangEditorUtil.withEmptyHtml);
|
|
61
|
+
|
|
35
62
|
var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props) {
|
|
36
63
|
var value = props.value,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
64
|
+
_onChange = props.onChange,
|
|
65
|
+
_props$downloadUrl = props.downloadUrl,
|
|
66
|
+
downloadUrl = _props$downloadUrl === void 0 ? '/cloudFile/common/downloadFile?id=' : _props$downloadUrl,
|
|
67
|
+
_props$uploadUrl = props.uploadUrl,
|
|
68
|
+
uploadUrl = _props$uploadUrl === void 0 ? '/cloudFile/common/uploadFile' : _props$uploadUrl,
|
|
69
|
+
_props$placeholder = props.placeholder,
|
|
70
|
+
placeholder = _props$placeholder === void 0 ? '' : _props$placeholder,
|
|
71
|
+
_props$height = props.height,
|
|
72
|
+
height = _props$height === void 0 ? 350 : _props$height,
|
|
73
|
+
rest = _objectWithoutProperties(props, _excluded);
|
|
74
|
+
|
|
47
75
|
var _useState = (0, _react.useState)(null),
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
76
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
77
|
+
editor = _useState2[0],
|
|
78
|
+
setEditor = _useState2[1]; // 及时销毁 editor ,重要!
|
|
79
|
+
|
|
51
80
|
|
|
52
|
-
// 及时销毁 editor ,重要!
|
|
53
81
|
(0, _react.useEffect)(function () {
|
|
54
82
|
return function () {
|
|
55
83
|
if (editor == null) return;
|
|
56
84
|
editor.destroy();
|
|
57
85
|
setEditor(null);
|
|
58
86
|
};
|
|
59
|
-
}, [editor]);
|
|
60
|
-
|
|
87
|
+
}, [editor]); // 编辑器配置
|
|
88
|
+
|
|
61
89
|
var editorConfig = {
|
|
62
90
|
MENU_CONF: {
|
|
63
91
|
// 插入图片
|
|
@@ -112,9 +140,9 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props) {
|
|
|
112
140
|
hoverbarKeys: {
|
|
113
141
|
attachment: {
|
|
114
142
|
menuKeys: ['downloadAttachment'] // “下载附件”菜单
|
|
143
|
+
|
|
115
144
|
}
|
|
116
145
|
},
|
|
117
|
-
|
|
118
146
|
customPaste: function () {
|
|
119
147
|
var _customPaste = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(editor, event) {
|
|
120
148
|
var html, rtf, imgSrcs, rtfImageData;
|
|
@@ -122,47 +150,56 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props) {
|
|
|
122
150
|
while (1) {
|
|
123
151
|
switch (_context.prev = _context.next) {
|
|
124
152
|
case 0:
|
|
125
|
-
event.preventDefault();
|
|
126
|
-
|
|
153
|
+
event.preventDefault(); // 获取粘贴的html部分(??没错粘贴word时候,一部分内容就是html),该部分包含了图片img标签
|
|
154
|
+
|
|
127
155
|
html = event.clipboardData.getData('text/html'); // 获取rtf数据(从word、wps复制粘贴时有),复制粘贴过程中图片的数据就保存在rtf中
|
|
156
|
+
|
|
128
157
|
rtf = event.clipboardData.getData('text/rtf'); // 该条件分支即表示要自定义word粘贴
|
|
158
|
+
|
|
129
159
|
if (!(html && rtf)) {
|
|
130
160
|
_context.next = 17;
|
|
131
161
|
break;
|
|
132
162
|
}
|
|
163
|
+
|
|
133
164
|
// 列表缩进会超出边框,直接过滤掉
|
|
134
|
-
html = html.replace(/text\-indent:\-(.*?)pt/gi, '');
|
|
165
|
+
html = html.replace(/text\-indent:\-(.*?)pt/gi, ''); // 从html内容中查找粘贴内容中是否有图片元素,并返回img标签的属性src值的集合
|
|
135
166
|
|
|
136
|
-
// 从html内容中查找粘贴内容中是否有图片元素,并返回img标签的属性src值的集合
|
|
137
167
|
imgSrcs = (0, _wangEditorUtil.findAllImgSrcsFromHtml)(html);
|
|
138
|
-
html = (0, _wangEditorUtil.replaceAllSpanFontSize)(html);
|
|
168
|
+
html = (0, _wangEditorUtil.replaceAllSpanFontSize)(html); // 如果有图片
|
|
139
169
|
|
|
140
|
-
// 如果有图片
|
|
141
170
|
if (!(imgSrcs && Array.isArray(imgSrcs) && imgSrcs.length)) {
|
|
142
171
|
_context.next = 13;
|
|
143
172
|
break;
|
|
144
173
|
}
|
|
174
|
+
|
|
145
175
|
// 从rtf内容中查找图片数据
|
|
146
176
|
// 从rtf内容中查找图片数据
|
|
147
177
|
rtfImageData = (0, _wangEditorUtil.extractImageDataFromRtf)(rtf);
|
|
178
|
+
|
|
148
179
|
if (!rtfImageData.length) {
|
|
149
180
|
_context.next = 13;
|
|
150
181
|
break;
|
|
151
182
|
}
|
|
183
|
+
|
|
152
184
|
_context.next = 12;
|
|
153
185
|
return (0, _wangEditorUtil.replaceImagesFileSourceWithInlineRepresentation)(html, imgSrcs, rtfImageData, true, uploadUrl, downloadUrl);
|
|
186
|
+
|
|
154
187
|
case 12:
|
|
155
188
|
html = _context.sent;
|
|
189
|
+
|
|
156
190
|
case 13:
|
|
157
191
|
editor.dangerouslyInsertHtml(html);
|
|
158
192
|
return _context.abrupt("return", false);
|
|
193
|
+
|
|
159
194
|
case 17:
|
|
160
195
|
if (!html) {
|
|
161
196
|
_context.next = 20;
|
|
162
197
|
break;
|
|
163
198
|
}
|
|
199
|
+
|
|
164
200
|
editor.dangerouslyInsertHtml(html);
|
|
165
201
|
return _context.abrupt("return", false);
|
|
202
|
+
|
|
166
203
|
case 20:
|
|
167
204
|
case "end":
|
|
168
205
|
return _context.stop();
|
|
@@ -170,13 +207,15 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props) {
|
|
|
170
207
|
}
|
|
171
208
|
}, _callee);
|
|
172
209
|
}));
|
|
210
|
+
|
|
173
211
|
function customPaste(_x, _x2) {
|
|
174
212
|
return _customPaste.apply(this, arguments);
|
|
175
213
|
}
|
|
214
|
+
|
|
176
215
|
return customPaste;
|
|
177
216
|
}()
|
|
178
|
-
};
|
|
179
|
-
|
|
217
|
+
}; // 工具栏配置
|
|
218
|
+
|
|
180
219
|
var toolbarConfig = {
|
|
181
220
|
insertKeys: {
|
|
182
221
|
// 自定义插入的位置
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Boot","registerModule","attachmentModule","registerPlugin","withEmptyHtml","VtxWangeEditor","forwardRef","props","value","onChange","downloadUrl","uploadUrl","placeholder","height","rest","useState","editor","setEditor","useEffect","destroy","editorConfig","MENU_CONF","uploadImage","server","customInsert","res","insertFn","result","data","map","item","id","fileName","Error","uploadVideo","uploadAttachment","file","hoverbarKeys","attachment","menuKeys","customPaste","event","preventDefault","html","clipboardData","getData","rtf","replace","imgSrcs","findAllImgSrcsFromHtml","replaceAllSpanFontSize","Array","isArray","length","rtfImageData","extractImageDataFromRtf","replaceImagesFileSourceWithInlineRepresentation","dangerouslyInsertHtml","toolbarConfig","insertKeys","index","keys","getHtml","propTypes","PropTypes","string","func","number"],"sources":["vtx-wang-editor/index.jsx"],"sourcesContent":["/*eslint-disable*/\nimport '@wangeditor/editor/dist/css/style.css';\nimport React, { forwardRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Editor, Toolbar } from '@wangeditor/editor-for-react';\nimport attachmentModule from '@wangeditor/plugin-upload-attachment';\nimport { Boot } from '@wangeditor/editor';\nimport {\n withEmptyHtml,\n findAllImgSrcsFromHtml,\n extractImageDataFromRtf,\n replaceImagesFileSourceWithInlineRepresentation,\n replaceAllSpanFontSize,\n} from './wangEditorUtil';\n\n// 注册插件 处理附件\nBoot.registerModule(attachmentModule);\n// 注册插件 处理为空的时候\nBoot.registerPlugin(withEmptyHtml);\n\nconst VtxWangeEditor = forwardRef(props => {\n const {\n value,\n onChange,\n downloadUrl = '/cloudFile/common/downloadFile?id=',\n uploadUrl = '/cloudFile/common/uploadFile',\n // thumbnailUrl = '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\n placeholder = '',\n height = 350,\n ...rest\n } = props;\n const [editor, setEditor] = useState(null);\n\n // 及时销毁 editor ,重要!\n useEffect(() => {\n return () => {\n if (editor == null) return;\n editor.destroy();\n setEditor(null);\n };\n }, [editor]);\n // 编辑器配置\n const editorConfig = {\n MENU_CONF: {\n // 插入图片\n uploadImage: {\n server: uploadUrl,\n // onSuccess(file, res) {},\n customInsert(res, insertFn) {\n // res 即服务端的返回结果\n // 从 res 中找到 url alt href ,然后插入图片\n if (res.result == 0) {\n res.data.map(item => {\n insertFn(`${downloadUrl}${item.id}`, item.fileName);\n });\n } else {\n throw new Error(`插入图片失败`);\n }\n },\n },\n // 插入视频\n uploadVideo: {\n server: uploadUrl,\n // onSuccess(file, res) {},\n // 上传成功后,用户自定义插入文件\n customInsert(res, insertFn) {\n if (res.result == 0) {\n res.data.map(item => {\n insertFn(`${downloadUrl}${item.id}`, item.fileName);\n });\n } else {\n throw new Error(`插入视频失败`);\n }\n },\n },\n // 插入附件\n uploadAttachment: {\n server: uploadUrl,\n // onSuccess(file, res) {},\n // 上传成功后,用户自定义插入文件\n customInsert(res, file, insertFn) {\n if (res.result == 0) {\n res.data.map(item => {\n insertFn(item.fileName, `${downloadUrl}${item.id}`);\n });\n } else {\n throw new Error(`插入附件失败`);\n }\n },\n },\n },\n placeholder,\n // 在编辑器中,点击选中“附件”节点时,要弹出的菜单\n hoverbarKeys: {\n attachment: {\n menuKeys: ['downloadAttachment'], // “下载附件”菜单\n },\n },\n customPaste: async (editor, event) => {\n event.preventDefault();\n // 获取粘贴的html部分(??没错粘贴word时候,一部分内容就是html),该部分包含了图片img标签\n let html = event.clipboardData.getData('text/html');\n // 获取rtf数据(从word、wps复制粘贴时有),复制粘贴过程中图片的数据就保存在rtf中\n const rtf = event.clipboardData.getData('text/rtf');\n // 该条件分支即表示要自定义word粘贴\n if (html && rtf) {\n // 列表缩进会超出边框,直接过滤掉\n html = html.replace(/text\\-indent:\\-(.*?)pt/gi, '');\n\n // 从html内容中查找粘贴内容中是否有图片元素,并返回img标签的属性src值的集合\n const imgSrcs = findAllImgSrcsFromHtml(html);\n\n html = replaceAllSpanFontSize(html);\n\n // 如果有图片\n if (imgSrcs && Array.isArray(imgSrcs) && imgSrcs.length) {\n // 从rtf内容中查找图片数据\n\n // 从rtf内容中查找图片数据\n const rtfImageData = extractImageDataFromRtf(rtf);\n\n if (rtfImageData.length) {\n html = await replaceImagesFileSourceWithInlineRepresentation(\n html,\n imgSrcs,\n rtfImageData,\n true,\n uploadUrl,\n downloadUrl,\n );\n }\n }\n editor.dangerouslyInsertHtml(html);\n return false;\n } else if (html) {\n editor.dangerouslyInsertHtml(html);\n return false;\n }\n },\n };\n // 工具栏配置\n const toolbarConfig = {\n insertKeys: {\n // 自定义插入的位置\n index: 24,\n // “上传附件”菜单\n keys: ['uploadAttachment'],\n },\n };\n return (\n <div className=\"vtx-wang-editor\">\n <Toolbar editor={editor} defaultConfig={toolbarConfig} mode=\"default\" />\n <Editor\n defaultConfig={editorConfig}\n value={value}\n onCreated={editor => {\n setEditor(editor);\n }}\n onChange={editor => {\n onChange(editor.getHtml());\n }}\n mode=\"default\"\n className={'vtx-wang-editor-content'}\n style={{ height }}\n {...rest}\n />\n </div>\n );\n});\n\nVtxWangeEditor.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n downloadUrl: PropTypes.string,\n uploadUrl: PropTypes.string,\n height: PropTypes.number,\n};\n\nexport default VtxWangeEditor;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Boot","registerModule","attachmentModule","registerPlugin","withEmptyHtml","VtxWangeEditor","forwardRef","props","value","onChange","downloadUrl","uploadUrl","placeholder","height","rest","useState","editor","setEditor","useEffect","destroy","editorConfig","MENU_CONF","uploadImage","server","customInsert","res","insertFn","result","data","map","item","id","fileName","Error","uploadVideo","uploadAttachment","file","hoverbarKeys","attachment","menuKeys","customPaste","event","preventDefault","html","clipboardData","getData","rtf","replace","imgSrcs","findAllImgSrcsFromHtml","replaceAllSpanFontSize","Array","isArray","length","rtfImageData","extractImageDataFromRtf","replaceImagesFileSourceWithInlineRepresentation","dangerouslyInsertHtml","toolbarConfig","insertKeys","index","keys","getHtml","propTypes","PropTypes","string","func","number"],"sources":["vtx-wang-editor/index.jsx"],"sourcesContent":["/*eslint-disable*/\r\nimport '@wangeditor/editor/dist/css/style.css';\r\nimport React, { forwardRef, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Editor, Toolbar } from '@wangeditor/editor-for-react';\r\nimport attachmentModule from '@wangeditor/plugin-upload-attachment';\r\nimport { Boot } from '@wangeditor/editor';\r\nimport {\r\n withEmptyHtml,\r\n findAllImgSrcsFromHtml,\r\n extractImageDataFromRtf,\r\n replaceImagesFileSourceWithInlineRepresentation,\r\n replaceAllSpanFontSize,\r\n} from './wangEditorUtil';\r\n\r\n// 注册插件 处理附件\r\nBoot.registerModule(attachmentModule);\r\n// 注册插件 处理为空的时候\r\nBoot.registerPlugin(withEmptyHtml);\r\n\r\nconst VtxWangeEditor = forwardRef(props => {\r\n const {\r\n value,\r\n onChange,\r\n downloadUrl = '/cloudFile/common/downloadFile?id=',\r\n uploadUrl = '/cloudFile/common/uploadFile',\r\n // thumbnailUrl = '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=',\r\n placeholder = '',\r\n height = 350,\r\n ...rest\r\n } = props;\r\n const [editor, setEditor] = useState(null);\r\n\r\n // 及时销毁 editor ,重要!\r\n useEffect(() => {\r\n return () => {\r\n if (editor == null) return;\r\n editor.destroy();\r\n setEditor(null);\r\n };\r\n }, [editor]);\r\n // 编辑器配置\r\n const editorConfig = {\r\n MENU_CONF: {\r\n // 插入图片\r\n uploadImage: {\r\n server: uploadUrl,\r\n // onSuccess(file, res) {},\r\n customInsert(res, insertFn) {\r\n // res 即服务端的返回结果\r\n // 从 res 中找到 url alt href ,然后插入图片\r\n if (res.result == 0) {\r\n res.data.map(item => {\r\n insertFn(`${downloadUrl}${item.id}`, item.fileName);\r\n });\r\n } else {\r\n throw new Error(`插入图片失败`);\r\n }\r\n },\r\n },\r\n // 插入视频\r\n uploadVideo: {\r\n server: uploadUrl,\r\n // onSuccess(file, res) {},\r\n // 上传成功后,用户自定义插入文件\r\n customInsert(res, insertFn) {\r\n if (res.result == 0) {\r\n res.data.map(item => {\r\n insertFn(`${downloadUrl}${item.id}`, item.fileName);\r\n });\r\n } else {\r\n throw new Error(`插入视频失败`);\r\n }\r\n },\r\n },\r\n // 插入附件\r\n uploadAttachment: {\r\n server: uploadUrl,\r\n // onSuccess(file, res) {},\r\n // 上传成功后,用户自定义插入文件\r\n customInsert(res, file, insertFn) {\r\n if (res.result == 0) {\r\n res.data.map(item => {\r\n insertFn(item.fileName, `${downloadUrl}${item.id}`);\r\n });\r\n } else {\r\n throw new Error(`插入附件失败`);\r\n }\r\n },\r\n },\r\n },\r\n placeholder,\r\n // 在编辑器中,点击选中“附件”节点时,要弹出的菜单\r\n hoverbarKeys: {\r\n attachment: {\r\n menuKeys: ['downloadAttachment'], // “下载附件”菜单\r\n },\r\n },\r\n customPaste: async (editor, event) => {\r\n event.preventDefault();\r\n // 获取粘贴的html部分(??没错粘贴word时候,一部分内容就是html),该部分包含了图片img标签\r\n let html = event.clipboardData.getData('text/html');\r\n // 获取rtf数据(从word、wps复制粘贴时有),复制粘贴过程中图片的数据就保存在rtf中\r\n const rtf = event.clipboardData.getData('text/rtf');\r\n // 该条件分支即表示要自定义word粘贴\r\n if (html && rtf) {\r\n // 列表缩进会超出边框,直接过滤掉\r\n html = html.replace(/text\\-indent:\\-(.*?)pt/gi, '');\r\n\r\n // 从html内容中查找粘贴内容中是否有图片元素,并返回img标签的属性src值的集合\r\n const imgSrcs = findAllImgSrcsFromHtml(html);\r\n\r\n html = replaceAllSpanFontSize(html);\r\n\r\n // 如果有图片\r\n if (imgSrcs && Array.isArray(imgSrcs) && imgSrcs.length) {\r\n // 从rtf内容中查找图片数据\r\n\r\n // 从rtf内容中查找图片数据\r\n const rtfImageData = extractImageDataFromRtf(rtf);\r\n\r\n if (rtfImageData.length) {\r\n html = await replaceImagesFileSourceWithInlineRepresentation(\r\n html,\r\n imgSrcs,\r\n rtfImageData,\r\n true,\r\n uploadUrl,\r\n downloadUrl,\r\n );\r\n }\r\n }\r\n editor.dangerouslyInsertHtml(html);\r\n return false;\r\n } else if (html) {\r\n editor.dangerouslyInsertHtml(html);\r\n return false;\r\n }\r\n },\r\n };\r\n // 工具栏配置\r\n const toolbarConfig = {\r\n insertKeys: {\r\n // 自定义插入的位置\r\n index: 24,\r\n // “上传附件”菜单\r\n keys: ['uploadAttachment'],\r\n },\r\n };\r\n return (\r\n <div className=\"vtx-wang-editor\">\r\n <Toolbar editor={editor} defaultConfig={toolbarConfig} mode=\"default\" />\r\n <Editor\r\n defaultConfig={editorConfig}\r\n value={value}\r\n onCreated={editor => {\r\n setEditor(editor);\r\n }}\r\n onChange={editor => {\r\n onChange(editor.getHtml());\r\n }}\r\n mode=\"default\"\r\n className={'vtx-wang-editor-content'}\r\n style={{ height }}\r\n {...rest}\r\n />\r\n </div>\r\n );\r\n});\r\n\r\nVtxWangeEditor.propTypes = {\r\n value: PropTypes.string,\r\n onChange: PropTypes.func,\r\n placeholder: PropTypes.string,\r\n downloadUrl: PropTypes.string,\r\n uploadUrl: PropTypes.string,\r\n height: PropTypes.number,\r\n};\r\n\r\nexport default VtxWangeEditor;\r\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.js","names":[],"sources":["vtx-wang-editor/style/index.js"],"sourcesContent":["import '@wangeditor/editor/dist/css/style.css';\nimport './index.less';\n"],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"css.js","names":[],"sources":["vtx-wang-editor/style/index.js"],"sourcesContent":["import '@wangeditor/editor/dist/css/style.css';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["vtx-wang-editor/style/index.js"],"sourcesContent":["import '@wangeditor/editor/dist/css/style.css';\nimport './index.less';\n"],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["vtx-wang-editor/style/index.js"],"sourcesContent":["import '@wangeditor/editor/dist/css/style.css';\nimport './index.less';\n"],"mappings":";;AAAA;;AACA"}
|