@vtx/components 3.1.18 → 3.1.20
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/lib/vtx-import2/Content.js +2 -2
- package/lib/vtx-import2/Content.js.map +1 -1
- package/lib/vtx-import2/ImportResult.js +7 -3
- package/lib/vtx-import2/ImportResult.js.map +1 -1
- package/lib/vtx-import2/index.js +75 -10
- package/lib/vtx-import2/index.js.map +1 -1
- package/lib/vtx-wang-editor/index.js +22 -18
- package/lib/vtx-wang-editor/index.js.map +1 -1
- package/lib/vtx-wang-editor/style/index.css +0 -10
- package/lib/vtx-wang-editor/style/index.less +0 -12
- package/lib/vtx-wang-editor/wangEditorUtil.js +72 -3
- package/lib/vtx-wang-editor/wangEditorUtil.js.map +1 -1
- package/package.json +2 -2
|
@@ -71,7 +71,7 @@ var Content = function Content(_ref) {
|
|
|
71
71
|
}, /*#__PURE__*/_react["default"].createElement("a", {
|
|
72
72
|
onClick: onClick,
|
|
73
73
|
className: "vtx-import2-text"
|
|
74
|
-
}, fileList.length === 0 ? '点击选择文件' : '重新选择文件'), _toConsumableArray(fileList).map(function (file) {
|
|
74
|
+
}, fileList.length === 0 ? '点击选择文件(支持excel格式)' : '重新选择文件'), _toConsumableArray(fileList).map(function (file) {
|
|
75
75
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
76
76
|
key: file.name,
|
|
77
77
|
className: "vtx-import2-file-item"
|
|
@@ -102,7 +102,7 @@ Content.propTypes = {
|
|
|
102
102
|
accept: _propTypes["default"].string,
|
|
103
103
|
fileKey: _propTypes["default"].string,
|
|
104
104
|
templateURL: _propTypes["default"].string,
|
|
105
|
-
fileList: _propTypes["default"].
|
|
105
|
+
fileList: _propTypes["default"].any,
|
|
106
106
|
setFileList: _propTypes["default"].func
|
|
107
107
|
};
|
|
108
108
|
var _default = Content;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Content.js","names":["Content","accept","fileKey","setFileList","fileList","templateURL","fileInputRef","useRef","onClick","current","click","onFileChange","files","onDeleteFileList","length","map","file","name","color","cursor","display","fileName","propTypes","PropTypes","string","
|
|
1
|
+
{"version":3,"file":"Content.js","names":["Content","accept","fileKey","setFileList","fileList","templateURL","fileInputRef","useRef","onClick","current","click","onFileChange","files","onDeleteFileList","length","map","file","name","color","cursor","display","fileName","propTypes","PropTypes","string","any","func"],"sources":["vtx-import2/Content.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useRef } from 'react';\r\nimport CloseCircleFilled from '@ant-design/icons/CloseCircleFilled';\r\nimport UploadSvg from './UploadSvg';\r\nimport DownloadSvg from './DownloadSvg';\r\nconst Content = ({ accept, fileKey, setFileList, fileList, templateURL }) => {\r\n const fileInputRef = useRef();\r\n const onClick = () => {\r\n fileInputRef.current && fileInputRef.current.click();\r\n };\r\n\r\n const onFileChange = () => {\r\n setFileList(fileInputRef.current.files);\r\n };\r\n\r\n const onDeleteFileList = () => {\r\n setFileList([]);\r\n };\r\n\r\n return (\r\n <div>\r\n <div className=\"vtx-import2-content-box\">\r\n <span className=\"vtx-import2-content-mark\">1</span>\r\n <DownloadSvg />\r\n <a className=\"vtx-import2-download\" href={templateURL}>\r\n 没有模板?点击此处下载\r\n </a>\r\n </div>\r\n <div className=\"vtx-import2-content-box\">\r\n <span className=\"vtx-import2-content-mark\">2</span>\r\n <UploadSvg />\r\n <div className=\"vtx-import2-file-list\">\r\n <a onClick={onClick} className=\"vtx-import2-text\">\r\n {fileList.length === 0 ? '点击选择文件(支持excel格式)' : '重新选择文件'}\r\n </a>\r\n {[...fileList].map(file => (\r\n <div key={file.name} className=\"vtx-import2-file-item\">\r\n <span className=\"vtx-import2-file-name\">{file.name}</span>\r\n <CloseCircleFilled\r\n fill=\"#c0c0c0\"\r\n onClick={onDeleteFileList}\r\n style={{ color: '#c0c0c0', cursor: 'pointer' }}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n <input\r\n type=\"file\"\r\n name={fileKey}\r\n accept={accept}\r\n ref={fileInputRef}\r\n style={{ display: 'none' }}\r\n onChange={onFileChange}\r\n value={fileList.length === 0 ? '' : fileList[0].fileName}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nContent.propTypes = {\r\n accept: PropTypes.string,\r\n fileKey: PropTypes.string,\r\n templateURL: PropTypes.string,\r\n fileList: PropTypes.any,\r\n setFileList: PropTypes.func,\r\n};\r\n\r\nexport default Content;\r\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;AACA,IAAMA,OAAO,GAAG,SAAVA,OAAU,OAA6D;EAAA,IAA1DC,MAA0D,QAA1DA,MAA0D;EAAA,IAAlDC,OAAkD,QAAlDA,OAAkD;EAAA,IAAzCC,WAAyC,QAAzCA,WAAyC;EAAA,IAA5BC,QAA4B,QAA5BA,QAA4B;EAAA,IAAlBC,WAAkB,QAAlBA,WAAkB;EACzE,IAAMC,YAAY,GAAG,IAAAC,aAAA,GAArB;;EACA,IAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;IAClBF,YAAY,CAACG,OAAb,IAAwBH,YAAY,CAACG,OAAb,CAAqBC,KAArB,EAAxB;EACH,CAFD;;EAIA,IAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;IACvBR,WAAW,CAACG,YAAY,CAACG,OAAb,CAAqBG,KAAtB,CAAX;EACH,CAFD;;EAIA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;IAC3BV,WAAW,CAAC,EAAD,CAAX;EACH,CAFD;;EAIA,oBACI,0DACI;IAAK,SAAS,EAAC;EAAf,gBACI;IAAM,SAAS,EAAC;EAAhB,OADJ,eAEI,gCAAC,uBAAD,OAFJ,eAGI;IAAG,SAAS,EAAC,sBAAb;IAAoC,IAAI,EAAEE;EAA1C,wEAHJ,CADJ,eAQI;IAAK,SAAS,EAAC;EAAf,gBACI;IAAM,SAAS,EAAC;EAAhB,OADJ,eAEI,gCAAC,qBAAD,OAFJ,eAGI;IAAK,SAAS,EAAC;EAAf,gBACI;IAAG,OAAO,EAAEG,OAAZ;IAAqB,SAAS,EAAC;EAA/B,GACKJ,QAAQ,CAACU,MAAT,KAAoB,CAApB,GAAwB,mBAAxB,GAA8C,QADnD,CADJ,EAIK,mBAAIV,QAAJ,EAAcW,GAAd,CAAkB,UAAAC,IAAI;IAAA,oBACnB;MAAK,GAAG,EAAEA,IAAI,CAACC,IAAf;MAAqB,SAAS,EAAC;IAA/B,gBACI;MAAM,SAAS,EAAC;IAAhB,GAAyCD,IAAI,CAACC,IAA9C,CADJ,eAEI,gCAAC,6BAAD;MACI,IAAI,EAAC,SADT;MAEI,OAAO,EAAEJ,gBAFb;MAGI,KAAK,EAAE;QAAEK,KAAK,EAAE,SAAT;QAAoBC,MAAM,EAAE;MAA5B;IAHX,EAFJ,CADmB;EAAA,CAAtB,CAJL,CAHJ,eAkBI;IACI,IAAI,EAAC,MADT;IAEI,IAAI,EAAEjB,OAFV;IAGI,MAAM,EAAED,MAHZ;IAII,GAAG,EAAEK,YAJT;IAKI,KAAK,EAAE;MAAEc,OAAO,EAAE;IAAX,CALX;IAMI,QAAQ,EAAET,YANd;IAOI,KAAK,EAAEP,QAAQ,CAACU,MAAT,KAAoB,CAApB,GAAwB,EAAxB,GAA6BV,QAAQ,CAAC,CAAD,CAAR,CAAYiB;EAPpD,EAlBJ,CARJ,CADJ;AAuCH,CArDD;;AAuDArB,OAAO,CAACsB,SAAR,GAAoB;EAChBrB,MAAM,EAAEsB,qBAAA,CAAUC,MADF;EAEhBtB,OAAO,EAAEqB,qBAAA,CAAUC,MAFH;EAGhBnB,WAAW,EAAEkB,qBAAA,CAAUC,MAHP;EAIhBpB,QAAQ,EAAEmB,qBAAA,CAAUE,GAJJ;EAKhBtB,WAAW,EAAEoB,qBAAA,CAAUG;AALP,CAApB;eAQe1B,O"}
|
|
@@ -17,7 +17,8 @@ var ImportResult = function ImportResult(_ref) {
|
|
|
17
17
|
var result = _ref.result,
|
|
18
18
|
errorFile = _ref.errorFile,
|
|
19
19
|
errorURL = _ref.errorURL,
|
|
20
|
-
errorDownloadName = _ref.errorDownloadName
|
|
20
|
+
errorDownloadName = _ref.errorDownloadName,
|
|
21
|
+
count = _ref.count;
|
|
21
22
|
var url = errorURL && errorFile && "".concat(errorURL, "?fileName=").concat(errorFile, "&downloadName=").concat(errorDownloadName || '');
|
|
22
23
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
23
24
|
className: "vtx-import2-result-warp"
|
|
@@ -28,7 +29,9 @@ var ImportResult = function ImportResult(_ref) {
|
|
|
28
29
|
}
|
|
29
30
|
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
30
31
|
className: "vtx-import2-result"
|
|
31
|
-
}, "\u5BFC\u5165\u6210\u529F")
|
|
32
|
+
}, "\u5BFC\u5165\u6210\u529F"), count !== null && /*#__PURE__*/_react["default"].createElement("span", {
|
|
33
|
+
className: "vtx-import2-result-success-tips"
|
|
34
|
+
}, "\u672C\u6B21\u5171\u8BA1", count, "\u6761\u6570\u636E")) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_icons.CloseCircleFilled, {
|
|
32
35
|
style: {
|
|
33
36
|
color: '#ff4d4f',
|
|
34
37
|
fontSize: '80px'
|
|
@@ -45,7 +48,8 @@ ImportResult.propTypes = {
|
|
|
45
48
|
result: _propTypes["default"].bool,
|
|
46
49
|
errorURL: _propTypes["default"].string,
|
|
47
50
|
errorFile: _propTypes["default"].string,
|
|
48
|
-
errorDownloadName: _propTypes["default"].string
|
|
51
|
+
errorDownloadName: _propTypes["default"].string,
|
|
52
|
+
count: _propTypes["default"].any
|
|
49
53
|
};
|
|
50
54
|
var _default = ImportResult;
|
|
51
55
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportResult.js","names":["ImportResult","result","errorFile","errorURL","errorDownloadName","url","color","fontSize","propTypes","PropTypes","bool","string"],"sources":["vtx-import2/ImportResult.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CheckCircleFilled, CloseCircleFilled } from '@ant-design/icons';\r\n\r\nconst ImportResult = ({ result, errorFile, errorURL, errorDownloadName }) => {\r\n const url =\r\n errorURL &&\r\n errorFile &&\r\n `${errorURL}?fileName=${errorFile}&downloadName=${errorDownloadName || ''}`;\r\n return (\r\n <div className=\"vtx-import2-result-warp\">\r\n {result ? (\r\n <>\r\n <CheckCircleFilled style={{ color: '#52C41A', fontSize: '80px' }} />\r\n <span className=\"vtx-import2-result\">导入成功</span>\r\n </>\r\n ) : (\r\n <>\r\n <CloseCircleFilled style={{ color: '#ff4d4f', fontSize: '80px' }} />\r\n <span className=\"vtx-import2-result\">导入失败</span>\r\n {url && (\r\n <a className=\"vtx-import2-result-error-tips\" href={url}>\r\n 下载文件,查看导入失败原因\r\n </a>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nImportResult.propTypes = {\r\n result: PropTypes.bool,\r\n errorURL: PropTypes.string,\r\n errorFile: PropTypes.string,\r\n errorDownloadName: PropTypes.string,\r\n};\r\n\r\nexport default ImportResult;\r\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,IAAMA,YAAY,GAAG,SAAfA,YAAe,
|
|
1
|
+
{"version":3,"file":"ImportResult.js","names":["ImportResult","result","errorFile","errorURL","errorDownloadName","count","url","color","fontSize","propTypes","PropTypes","bool","string","any"],"sources":["vtx-import2/ImportResult.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CheckCircleFilled, CloseCircleFilled } from '@ant-design/icons';\r\n\r\nconst ImportResult = ({ result, errorFile, errorURL, errorDownloadName, count }) => {\r\n const url =\r\n errorURL &&\r\n errorFile &&\r\n `${errorURL}?fileName=${errorFile}&downloadName=${errorDownloadName || ''}`;\r\n return (\r\n <div className=\"vtx-import2-result-warp\">\r\n {result ? (\r\n <>\r\n <CheckCircleFilled style={{ color: '#52C41A', fontSize: '80px' }} />\r\n <span className=\"vtx-import2-result\">导入成功</span>\r\n {count !== null && (\r\n <span className=\"vtx-import2-result-success-tips\">\r\n 本次共计{count}条数据\r\n </span>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n <CloseCircleFilled style={{ color: '#ff4d4f', fontSize: '80px' }} />\r\n <span className=\"vtx-import2-result\">导入失败</span>\r\n {url && (\r\n <a className=\"vtx-import2-result-error-tips\" href={url}>\r\n 下载文件,查看导入失败原因\r\n </a>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nImportResult.propTypes = {\r\n result: PropTypes.bool,\r\n errorURL: PropTypes.string,\r\n errorFile: PropTypes.string,\r\n errorDownloadName: PropTypes.string,\r\n count: PropTypes.any,\r\n};\r\n\r\nexport default ImportResult;\r\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,IAAMA,YAAY,GAAG,SAAfA,YAAe,OAA+D;EAAA,IAA5DC,MAA4D,QAA5DA,MAA4D;EAAA,IAApDC,SAAoD,QAApDA,SAAoD;EAAA,IAAzCC,QAAyC,QAAzCA,QAAyC;EAAA,IAA/BC,iBAA+B,QAA/BA,iBAA+B;EAAA,IAAZC,KAAY,QAAZA,KAAY;EAChF,IAAMC,GAAG,GACLH,QAAQ,IACRD,SADA,cAEGC,QAFH,uBAEwBD,SAFxB,2BAEkDE,iBAAiB,IAAI,EAFvE,CADJ;EAIA,oBACI;IAAK,SAAS,EAAC;EAAf,GACKH,MAAM,gBACH,+EACI,gCAAC,wBAAD;IAAmB,KAAK,EAAE;MAAEM,KAAK,EAAE,SAAT;MAAoBC,QAAQ,EAAE;IAA9B;EAA1B,EADJ,eAEI;IAAM,SAAS,EAAC;EAAhB,8BAFJ,EAGKH,KAAK,KAAK,IAAV,iBACG;IAAM,SAAS,EAAC;EAAhB,+BACSA,KADT,uBAJR,CADG,gBAWH,+EACI,gCAAC,wBAAD;IAAmB,KAAK,EAAE;MAAEE,KAAK,EAAE,SAAT;MAAoBC,QAAQ,EAAE;IAA9B;EAA1B,EADJ,eAEI;IAAM,SAAS,EAAC;EAAhB,8BAFJ,EAGKF,GAAG,iBACA;IAAG,SAAS,EAAC,+BAAb;IAA6C,IAAI,EAAEA;EAAnD,oFAJR,CAZR,CADJ;AAyBH,CA9BD;;AAgCAN,YAAY,CAACS,SAAb,GAAyB;EACrBR,MAAM,EAAES,qBAAA,CAAUC,IADG;EAErBR,QAAQ,EAAEO,qBAAA,CAAUE,MAFC;EAGrBV,SAAS,EAAEQ,qBAAA,CAAUE,MAHA;EAIrBR,iBAAiB,EAAEM,qBAAA,CAAUE,MAJR;EAKrBP,KAAK,EAAEK,qBAAA,CAAUG;AALI,CAAzB;eAQeb,Y"}
|
package/lib/vtx-import2/index.js
CHANGED
|
@@ -27,6 +27,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
27
27
|
|
|
28
28
|
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; }
|
|
29
29
|
|
|
30
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
31
|
+
|
|
32
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
33
|
+
|
|
34
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
35
|
+
|
|
36
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
37
|
+
|
|
30
38
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
31
39
|
|
|
32
40
|
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."); }
|
|
@@ -39,8 +47,12 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
39
47
|
|
|
40
48
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
41
49
|
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
function getFileName() {
|
|
51
|
+
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
52
|
+
var index = name.lastIndexOf('.');
|
|
53
|
+
var suffix = name.substring(index);
|
|
54
|
+
return name.substring(0, index) + '(错误文件)' + suffix;
|
|
55
|
+
}
|
|
44
56
|
|
|
45
57
|
var VtxImport2 = function VtxImport2(props) {
|
|
46
58
|
var visible = props.visible,
|
|
@@ -58,7 +70,8 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
58
70
|
var _useState = (0, _react.useState)(0),
|
|
59
71
|
_useState2 = _slicedToArray(_useState, 2),
|
|
60
72
|
status = _useState2[0],
|
|
61
|
-
setStatus = _useState2[1];
|
|
73
|
+
setStatus = _useState2[1]; // 0:首页,1:结果页
|
|
74
|
+
|
|
62
75
|
|
|
63
76
|
var _useState3 = (0, _react.useState)(false),
|
|
64
77
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
@@ -90,13 +103,39 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
90
103
|
uploading = _useState14[0],
|
|
91
104
|
setUploading = _useState14[1];
|
|
92
105
|
|
|
106
|
+
var _useState15 = (0, _react.useState)(0),
|
|
107
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
108
|
+
count = _useState16[0],
|
|
109
|
+
setCount = _useState16[1];
|
|
110
|
+
|
|
111
|
+
var fileInputRef = (0, _react.useRef)();
|
|
112
|
+
var fileName = (0, _react.useRef)('');
|
|
113
|
+
|
|
114
|
+
var _getUrlParam = (0, _utils.getUrlParam)(),
|
|
115
|
+
token = _getUrlParam.token;
|
|
116
|
+
|
|
117
|
+
if (!token) {
|
|
118
|
+
token = props.token;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
var newErrorDownloadName = errorDownloadName;
|
|
122
|
+
|
|
123
|
+
if (!errorDownloadName) {
|
|
124
|
+
newErrorDownloadName = fileName.current;
|
|
125
|
+
}
|
|
126
|
+
|
|
93
127
|
(0, _ahooks.useInterval)(function () {
|
|
94
128
|
if (countdown === 0) {
|
|
95
129
|
return close();
|
|
96
130
|
}
|
|
97
131
|
|
|
98
132
|
setCountdown(countdown - 1);
|
|
99
|
-
}, interval);
|
|
133
|
+
}, interval);
|
|
134
|
+
(0, _react.useEffect)(function () {
|
|
135
|
+
if (fileList.length !== 0) {
|
|
136
|
+
fileName.current = getFileName(fileList[0].name);
|
|
137
|
+
}
|
|
138
|
+
}, [fileList]); // 获取上传地址(拼接参数)
|
|
100
139
|
|
|
101
140
|
var getPostURL = function getPostURL() {
|
|
102
141
|
var postUrl = uploadURL;
|
|
@@ -124,8 +163,10 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
124
163
|
setResult(true);
|
|
125
164
|
setCountdown(5);
|
|
126
165
|
setInterval(1000);
|
|
166
|
+
setCount(parseData.data);
|
|
127
167
|
} else if (parseData.result === 1) {
|
|
128
168
|
setResult(false);
|
|
169
|
+
setFileList([]);
|
|
129
170
|
|
|
130
171
|
if (parseData.data) {
|
|
131
172
|
setErrorFile(parseData.data);
|
|
@@ -135,15 +176,18 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
135
176
|
}
|
|
136
177
|
};
|
|
137
178
|
|
|
138
|
-
var onUpload = function onUpload() {
|
|
139
|
-
|
|
179
|
+
var onUpload = function onUpload(_ref) {
|
|
180
|
+
var _ref$files = _ref.files,
|
|
181
|
+
files = _ref$files === void 0 ? fileList : _ref$files;
|
|
182
|
+
|
|
183
|
+
if (files.length === 0) {
|
|
140
184
|
return _antd.message.info('请选择需要上传的文件');
|
|
141
185
|
}
|
|
142
186
|
|
|
143
187
|
setUploading(true);
|
|
144
188
|
var postUrl = getPostURL();
|
|
145
189
|
var fmd = new FormData();
|
|
146
|
-
fmd.append(fileKey,
|
|
190
|
+
fmd.append(fileKey, files[0]);
|
|
147
191
|
var request = new XMLHttpRequest();
|
|
148
192
|
request.open('POST', postUrl);
|
|
149
193
|
request.setRequestHeader('Authorization', token ? "Bear ".concat(token) : '');
|
|
@@ -159,9 +203,18 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
159
203
|
};
|
|
160
204
|
|
|
161
205
|
var againUpload = function againUpload() {
|
|
162
|
-
setStatus(0);
|
|
163
206
|
setInterval(undefined);
|
|
164
207
|
setFileList([]);
|
|
208
|
+
fileInputRef.current && fileInputRef.current.click();
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
var onFileChange = function onFileChange() {
|
|
212
|
+
var fileList = _toConsumableArray(fileInputRef.current.files);
|
|
213
|
+
|
|
214
|
+
setFileList(fileList);
|
|
215
|
+
onUpload({
|
|
216
|
+
files: fileList
|
|
217
|
+
});
|
|
165
218
|
};
|
|
166
219
|
|
|
167
220
|
var modelProps = {
|
|
@@ -194,9 +247,20 @@ var VtxImport2 = function VtxImport2(props) {
|
|
|
194
247
|
templateURL: templateURL
|
|
195
248
|
}) : /*#__PURE__*/_react["default"].createElement(_ImportResult["default"], {
|
|
196
249
|
result: result,
|
|
250
|
+
count: count,
|
|
197
251
|
errorFile: errorFile,
|
|
198
252
|
errorURL: errorURL,
|
|
199
|
-
errorDownloadName:
|
|
253
|
+
errorDownloadName: newErrorDownloadName
|
|
254
|
+
}), /*#__PURE__*/_react["default"].createElement("input", {
|
|
255
|
+
type: "file",
|
|
256
|
+
name: fileKey,
|
|
257
|
+
accept: accept,
|
|
258
|
+
ref: fileInputRef,
|
|
259
|
+
style: {
|
|
260
|
+
display: 'none'
|
|
261
|
+
},
|
|
262
|
+
onChange: onFileChange,
|
|
263
|
+
value: fileList.length === 0 ? '' : fileList[0].fileName
|
|
200
264
|
}));
|
|
201
265
|
};
|
|
202
266
|
|
|
@@ -216,7 +280,8 @@ VtxImport2.propTypes = {
|
|
|
216
280
|
close: _propTypes["default"].func,
|
|
217
281
|
errorURL: _propTypes["default"].string,
|
|
218
282
|
errorDownloadName: _propTypes["default"].string,
|
|
219
|
-
afterUpload: _propTypes["default"].func
|
|
283
|
+
afterUpload: _propTypes["default"].func,
|
|
284
|
+
token: _propTypes["default"].string
|
|
220
285
|
};
|
|
221
286
|
var _default = VtxImport2;
|
|
222
287
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getUrlParam","token","VtxImport2","props","visible","close","title","accept","fileKey","uploadURL","postData","errorURL","templateURL","afterUpload","errorDownloadName","useState","status","setStatus","result","setResult","countdown","setCountdown","fileList","setFileList","undefined","interval","setInterval","errorFile","setErrorFile","uploading","setUploading","useInterval","getPostURL","postUrl","postArray","k","push","encodeURIComponent","length","join","dealResult","response","parseData","JSON","parse","data","message","error","msg","onUpload","info","fmd","FormData","append","request","XMLHttpRequest","open","setRequestHeader","onreadystatechange","e","target","readyState","send","againUpload","modelProps","width","maskClosable","footer","onCancel","defaultProps","propTypes","PropTypes","bool","string","object","func"],"sources":["vtx-import2/index.jsx"],"sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, message, Modal } from 'antd';\r\nimport Content from './Content';\r\nimport { useState } from 'react';\r\nimport ImportResult from './ImportResult';\r\nimport { useInterval } from 'ahooks';\r\nimport { getUrlParam } from '@vtx/utils';\r\n\r\nconst { token } = getUrlParam();\r\n\r\nconst VtxImport2 = props => {\r\n const {\r\n visible,\r\n close,\r\n title,\r\n accept,\r\n fileKey,\r\n uploadURL,\r\n postData,\r\n errorURL,\r\n templateURL,\r\n afterUpload,\r\n errorDownloadName,\r\n } = props;\r\n const [status, setStatus] = useState(0);\r\n const [result, setResult] = useState(false);\r\n const [countdown, setCountdown] = useState(5);\r\n const [fileList, setFileList] = useState([]);\r\n const [interval, setInterval] = useState(undefined);\r\n const [errorFile, setErrorFile] = useState('');\r\n const [uploading, setUploading] = useState(false);\r\n useInterval(() => {\r\n if (countdown === 0) {\r\n return close();\r\n }\r\n setCountdown(countdown - 1);\r\n }, interval);\r\n\r\n // 获取上传地址(拼接参数)\r\n const getPostURL = () => {\r\n const postUrl = uploadURL;\r\n const postArray = [];\r\n for (const k in postData) {\r\n if (postData[k] !== undefined && postData[k] !== null && postData[k] !== '') {\r\n postArray.push(`${k}=${encodeURIComponent(postData[k])}`);\r\n }\r\n }\r\n return postArray.length > 0 ? `${postUrl}?${postArray.join('&')}` : postUrl;\r\n };\r\n\r\n const dealResult = response => {\r\n setUploading(false);\r\n const parseData = JSON.parse(response);\r\n setStatus(1);\r\n if (typeof props.afterUpload === 'function') {\r\n afterUpload(parseData);\r\n }\r\n if (parseData.result === 0) {\r\n setResult(true);\r\n setCountdown(5);\r\n setInterval(1000);\r\n } else if (parseData.result === 1) {\r\n setResult(false);\r\n if (parseData.data) {\r\n setErrorFile(parseData.data);\r\n } else {\r\n message.error(parseData?.msg || '服务器异常');\r\n }\r\n }\r\n };\r\n\r\n const onUpload = () => {\r\n if (fileList.length === 0) {\r\n return message.info('请选择需要上传的文件');\r\n }\r\n setUploading(true);\r\n const postUrl = getPostURL();\r\n const fmd = new FormData();\r\n fmd.append(fileKey, fileList[0]);\r\n const request = new XMLHttpRequest();\r\n request.open('POST', postUrl);\r\n\r\n request.setRequestHeader('Authorization', token ? `Bear ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n dealResult(e.target.response);\r\n }\r\n };\r\n\r\n request.send(fmd);\r\n };\r\n\r\n const againUpload = () => {\r\n setStatus(0);\r\n setInterval(undefined);\r\n setFileList([]);\r\n };\r\n\r\n const modelProps = {\r\n visible,\r\n width: 392,\r\n maskClosable: false,\r\n footer: [\r\n <Button key=\"closeWindow\" onClick={close}>\r\n {`关闭${status === 1 && result ? '(' + countdown + ')' : ''}`}\r\n </Button>,\r\n (status === 0 || (status === 1 && !result)) && (\r\n <Button\r\n key=\"uploadSubmit\"\r\n type=\"primary\"\r\n loading={uploading}\r\n onClick={status === 0 ? onUpload : againUpload}\r\n >\r\n {status === 0 ? '上传' : result ? `导入(${countdown})` : '再次上传'}\r\n </Button>\r\n ),\r\n ],\r\n onCancel: close,\r\n title: (\r\n <div className=\"vtx-import2-modal-header-title\">\r\n <span className=\"vtx-import2-modal-header-text\">{title}</span>\r\n <span className=\"vtx-import2-modal-header-subtitle\">导入</span>\r\n </div>\r\n ),\r\n };\r\n return (\r\n <Modal {...modelProps}>\r\n {status === 0 ? (\r\n <Content\r\n fileList={fileList}\r\n setFileList={setFileList}\r\n accept={accept}\r\n fileKey={fileKey}\r\n templateURL={templateURL}\r\n />\r\n ) : (\r\n <ImportResult\r\n result={result}\r\n errorFile={errorFile}\r\n errorURL={errorURL}\r\n errorDownloadName={errorDownloadName}\r\n />\r\n )}\r\n </Modal>\r\n );\r\n};\r\n\r\nVtxImport2.defaultProps = {\r\n fileKey: 'file',\r\n accept:\r\n 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv',\r\n postData: {},\r\n};\r\n\r\nVtxImport2.propTypes = {\r\n visible: PropTypes.bool,\r\n templateURL: PropTypes.string,\r\n uploadURL: PropTypes.string,\r\n title: PropTypes.string,\r\n postData: PropTypes.object,\r\n fileKey: PropTypes.string,\r\n accept: PropTypes.string,\r\n close: PropTypes.func,\r\n errorURL: PropTypes.string,\r\n errorDownloadName: PropTypes.string,\r\n afterUpload: PropTypes.func,\r\n};\r\n\r\nexport default VtxImport2;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getFileName","name","index","lastIndexOf","suffix","substring","VtxImport2","props","visible","close","title","accept","fileKey","uploadURL","postData","errorURL","templateURL","afterUpload","errorDownloadName","useState","status","setStatus","result","setResult","countdown","setCountdown","fileList","setFileList","undefined","interval","setInterval","errorFile","setErrorFile","uploading","setUploading","count","setCount","fileInputRef","useRef","fileName","getUrlParam","token","newErrorDownloadName","current","useInterval","useEffect","length","getPostURL","postUrl","postArray","k","push","encodeURIComponent","join","dealResult","response","parseData","JSON","parse","data","message","error","msg","onUpload","files","info","fmd","FormData","append","request","XMLHttpRequest","open","setRequestHeader","onreadystatechange","e","target","readyState","send","againUpload","click","onFileChange","modelProps","width","maskClosable","footer","onCancel","display","defaultProps","propTypes","PropTypes","bool","string","object","func"],"sources":["vtx-import2/index.jsx"],"sourcesContent":["import React, { useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button, message, Modal } from 'antd';\r\nimport Content from './Content';\r\nimport { useState } from 'react';\r\nimport ImportResult from './ImportResult';\r\nimport { useInterval } from 'ahooks';\r\nimport { getUrlParam } from '@vtx/utils';\r\nimport { useEffect } from 'react';\r\n\r\nfunction getFileName(name = '') {\r\n const index = name.lastIndexOf('.');\r\n const suffix = name.substring(index);\r\n return name.substring(0, index) + '(错误文件)' + suffix;\r\n}\r\n\r\nconst VtxImport2 = props => {\r\n const {\r\n visible,\r\n close,\r\n title,\r\n accept,\r\n fileKey,\r\n uploadURL,\r\n postData,\r\n errorURL,\r\n templateURL,\r\n afterUpload,\r\n errorDownloadName,\r\n } = props;\r\n const [status, setStatus] = useState(0); // 0:首页,1:结果页\r\n const [result, setResult] = useState(false);\r\n const [countdown, setCountdown] = useState(5);\r\n const [fileList, setFileList] = useState([]);\r\n const [interval, setInterval] = useState(undefined);\r\n const [errorFile, setErrorFile] = useState('');\r\n const [uploading, setUploading] = useState(false);\r\n const [count, setCount] = useState(0);\r\n const fileInputRef = useRef();\r\n const fileName = useRef('');\r\n let { token } = getUrlParam();\r\n if (!token) {\r\n token = props.token;\r\n }\r\n let newErrorDownloadName = errorDownloadName;\r\n if (!errorDownloadName) {\r\n newErrorDownloadName = fileName.current;\r\n }\r\n useInterval(() => {\r\n if (countdown === 0) {\r\n return close();\r\n }\r\n setCountdown(countdown - 1);\r\n }, interval);\r\n\r\n useEffect(() => {\r\n if (fileList.length !== 0) {\r\n fileName.current = getFileName(fileList[0].name);\r\n }\r\n }, [fileList]);\r\n\r\n // 获取上传地址(拼接参数)\r\n const getPostURL = () => {\r\n const postUrl = uploadURL;\r\n const postArray = [];\r\n for (const k in postData) {\r\n if (postData[k] !== undefined && postData[k] !== null && postData[k] !== '') {\r\n postArray.push(`${k}=${encodeURIComponent(postData[k])}`);\r\n }\r\n }\r\n return postArray.length > 0 ? `${postUrl}?${postArray.join('&')}` : postUrl;\r\n };\r\n\r\n const dealResult = response => {\r\n setUploading(false);\r\n const parseData = JSON.parse(response);\r\n setStatus(1);\r\n if (typeof props.afterUpload === 'function') {\r\n afterUpload(parseData);\r\n }\r\n if (parseData.result === 0) {\r\n setResult(true);\r\n setCountdown(5);\r\n setInterval(1000);\r\n setCount(parseData.data);\r\n } else if (parseData.result === 1) {\r\n setResult(false);\r\n setFileList([]);\r\n if (parseData.data) {\r\n setErrorFile(parseData.data);\r\n } else {\r\n message.error(parseData?.msg || '服务器异常');\r\n }\r\n }\r\n };\r\n\r\n const onUpload = ({ files = fileList }) => {\r\n if (files.length === 0) {\r\n return message.info('请选择需要上传的文件');\r\n }\r\n setUploading(true);\r\n const postUrl = getPostURL();\r\n const fmd = new FormData();\r\n fmd.append(fileKey, files[0]);\r\n const request = new XMLHttpRequest();\r\n request.open('POST', postUrl);\r\n\r\n request.setRequestHeader('Authorization', token ? `Bear ${token}` : '');\r\n request.setRequestHeader('access_token', token ? `${token}` : '');\r\n request.onreadystatechange = e => {\r\n if (e.target.readyState == 4) {\r\n dealResult(e.target.response);\r\n }\r\n };\r\n\r\n request.send(fmd);\r\n };\r\n\r\n const againUpload = () => {\r\n setInterval(undefined);\r\n setFileList([]);\r\n fileInputRef.current && fileInputRef.current.click();\r\n };\r\n\r\n const onFileChange = () => {\r\n const fileList = [...fileInputRef.current.files];\r\n setFileList(fileList);\r\n onUpload({ files: fileList });\r\n };\r\n\r\n const modelProps = {\r\n visible,\r\n width: 392,\r\n maskClosable: false,\r\n footer: [\r\n <Button key=\"closeWindow\" onClick={close}>\r\n {`关闭${status === 1 && result ? '(' + countdown + ')' : ''}`}\r\n </Button>,\r\n (status === 0 || (status === 1 && !result)) && (\r\n <Button\r\n key=\"uploadSubmit\"\r\n type=\"primary\"\r\n loading={uploading}\r\n onClick={status === 0 ? onUpload : againUpload}\r\n >\r\n {status === 0 ? '上传' : result ? `导入(${countdown})` : '再次上传'}\r\n </Button>\r\n ),\r\n ],\r\n onCancel: close,\r\n title: (\r\n <div className=\"vtx-import2-modal-header-title\">\r\n <span className=\"vtx-import2-modal-header-text\">{title}</span>\r\n <span className=\"vtx-import2-modal-header-subtitle\">导入</span>\r\n </div>\r\n ),\r\n };\r\n return (\r\n <Modal {...modelProps}>\r\n {status === 0 ? (\r\n <Content\r\n fileList={fileList}\r\n setFileList={setFileList}\r\n accept={accept}\r\n fileKey={fileKey}\r\n templateURL={templateURL}\r\n />\r\n ) : (\r\n <ImportResult\r\n result={result}\r\n count={count}\r\n errorFile={errorFile}\r\n errorURL={errorURL}\r\n errorDownloadName={newErrorDownloadName}\r\n />\r\n )}\r\n <input\r\n type=\"file\"\r\n name={fileKey}\r\n accept={accept}\r\n ref={fileInputRef}\r\n style={{ display: 'none' }}\r\n onChange={onFileChange}\r\n value={fileList.length === 0 ? '' : fileList[0].fileName}\r\n />\r\n </Modal>\r\n );\r\n};\r\n\r\nVtxImport2.defaultProps = {\r\n fileKey: 'file',\r\n accept:\r\n 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,text/csv',\r\n postData: {},\r\n};\r\n\r\nVtxImport2.propTypes = {\r\n visible: PropTypes.bool,\r\n templateURL: PropTypes.string,\r\n uploadURL: PropTypes.string,\r\n title: PropTypes.string,\r\n postData: PropTypes.object,\r\n fileKey: PropTypes.string,\r\n accept: PropTypes.string,\r\n close: PropTypes.func,\r\n errorURL: PropTypes.string,\r\n errorDownloadName: PropTypes.string,\r\n afterUpload: PropTypes.func,\r\n token: PropTypes.string,\r\n};\r\n\r\nexport default VtxImport2;\r\n"],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ var _editor = require("@wangeditor/editor");
|
|
|
21
21
|
|
|
22
22
|
var _wangEditorUtil = require("./wangEditorUtil");
|
|
23
23
|
|
|
24
|
-
var _excluded = ["value", "onChange", "downloadUrl", "uploadUrl", "
|
|
24
|
+
var _excluded = ["value", "onChange", "downloadUrl", "uploadUrl", "placeholder", "height"];
|
|
25
25
|
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
27
|
|
|
@@ -29,6 +29,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
29
29
|
|
|
30
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
31
|
|
|
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
|
+
|
|
32
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; }
|
|
33
35
|
|
|
34
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); } }
|
|
@@ -57,15 +59,13 @@ _editor.Boot.registerModule(_pluginUploadAttachment["default"]); // 注册插件
|
|
|
57
59
|
|
|
58
60
|
_editor.Boot.registerPlugin(_wangEditorUtil.withEmptyHtml);
|
|
59
61
|
|
|
60
|
-
var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props
|
|
62
|
+
var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props) {
|
|
61
63
|
var value = props.value,
|
|
62
64
|
_onChange = props.onChange,
|
|
63
65
|
_props$downloadUrl = props.downloadUrl,
|
|
64
66
|
downloadUrl = _props$downloadUrl === void 0 ? '/cloudFile/common/downloadFile?id=' : _props$downloadUrl,
|
|
65
67
|
_props$uploadUrl = props.uploadUrl,
|
|
66
68
|
uploadUrl = _props$uploadUrl === void 0 ? '/cloudFile/common/uploadFile' : _props$uploadUrl,
|
|
67
|
-
_props$thumbnailUrl = props.thumbnailUrl,
|
|
68
|
-
thumbnailUrl = _props$thumbnailUrl === void 0 ? '/vortex/rest/cloud/np/file/downloadFileThumbnail?outputQuality=0.5&scale=0.2&id=' : _props$thumbnailUrl,
|
|
69
69
|
_props$placeholder = props.placeholder,
|
|
70
70
|
placeholder = _props$placeholder === void 0 ? '' : _props$placeholder,
|
|
71
71
|
_props$height = props.height,
|
|
@@ -91,7 +91,7 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
91
91
|
// 插入图片
|
|
92
92
|
uploadImage: {
|
|
93
93
|
server: uploadUrl,
|
|
94
|
-
|
|
94
|
+
// onSuccess(file, res) {},
|
|
95
95
|
customInsert: function customInsert(res, insertFn) {
|
|
96
96
|
// res 即服务端的返回结果
|
|
97
97
|
// 从 res 中找到 url alt href ,然后插入图片
|
|
@@ -107,7 +107,7 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
107
107
|
// 插入视频
|
|
108
108
|
uploadVideo: {
|
|
109
109
|
server: uploadUrl,
|
|
110
|
-
|
|
110
|
+
// onSuccess(file, res) {},
|
|
111
111
|
// 上传成功后,用户自定义插入文件
|
|
112
112
|
customInsert: function customInsert(res, insertFn) {
|
|
113
113
|
if (res.result == 0) {
|
|
@@ -122,7 +122,7 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
122
122
|
// 插入附件
|
|
123
123
|
uploadAttachment: {
|
|
124
124
|
server: uploadUrl,
|
|
125
|
-
|
|
125
|
+
// onSuccess(file, res) {},
|
|
126
126
|
// 上传成功后,用户自定义插入文件
|
|
127
127
|
customInsert: function customInsert(res, file, insertFn) {
|
|
128
128
|
if (res.result == 0) {
|
|
@@ -157,17 +157,18 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
157
157
|
rtf = event.clipboardData.getData('text/rtf'); // 该条件分支即表示要自定义word粘贴
|
|
158
158
|
|
|
159
159
|
if (!(html && rtf)) {
|
|
160
|
-
_context.next =
|
|
160
|
+
_context.next = 15;
|
|
161
161
|
break;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
// 列表缩进会超出边框,直接过滤掉
|
|
165
165
|
html = html.replace(/text\-indent:\-(.*?)pt/gi, ''); // 从html内容中查找粘贴内容中是否有图片元素,并返回img标签的属性src值的集合
|
|
166
166
|
|
|
167
|
-
imgSrcs = (0, _wangEditorUtil.findAllImgSrcsFromHtml)(html);
|
|
167
|
+
imgSrcs = (0, _wangEditorUtil.findAllImgSrcsFromHtml)(html);
|
|
168
|
+
html = (0, _wangEditorUtil.replaceAllSpanFontSize)(html); // 如果有图片
|
|
168
169
|
|
|
169
170
|
if (!(imgSrcs && Array.isArray(imgSrcs) && imgSrcs.length)) {
|
|
170
|
-
_context.next =
|
|
171
|
+
_context.next = 13;
|
|
171
172
|
break;
|
|
172
173
|
}
|
|
173
174
|
|
|
@@ -176,21 +177,21 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
176
177
|
rtfImageData = (0, _wangEditorUtil.extractImageDataFromRtf)(rtf);
|
|
177
178
|
|
|
178
179
|
if (!rtfImageData.length) {
|
|
179
|
-
_context.next =
|
|
180
|
+
_context.next = 13;
|
|
180
181
|
break;
|
|
181
182
|
}
|
|
182
183
|
|
|
183
|
-
_context.next =
|
|
184
|
+
_context.next = 12;
|
|
184
185
|
return (0, _wangEditorUtil.replaceImagesFileSourceWithInlineRepresentation)(html, imgSrcs, rtfImageData, true, uploadUrl, downloadUrl);
|
|
185
186
|
|
|
186
|
-
case
|
|
187
|
+
case 12:
|
|
187
188
|
html = _context.sent;
|
|
188
189
|
|
|
189
|
-
case
|
|
190
|
+
case 13:
|
|
190
191
|
editor.dangerouslyInsertHtml(html);
|
|
191
192
|
return _context.abrupt("return", false);
|
|
192
193
|
|
|
193
|
-
case
|
|
194
|
+
case 15:
|
|
194
195
|
case "end":
|
|
195
196
|
return _context.stop();
|
|
196
197
|
}
|
|
@@ -220,7 +221,7 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
220
221
|
editor: editor,
|
|
221
222
|
defaultConfig: toolbarConfig,
|
|
222
223
|
mode: "default"
|
|
223
|
-
}), /*#__PURE__*/_react["default"].createElement(_editorForReact.Editor, {
|
|
224
|
+
}), /*#__PURE__*/_react["default"].createElement(_editorForReact.Editor, _extends({
|
|
224
225
|
defaultConfig: editorConfig,
|
|
225
226
|
value: value,
|
|
226
227
|
onCreated: function onCreated(editor) {
|
|
@@ -234,12 +235,15 @@ var VtxWangeEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
234
235
|
style: {
|
|
235
236
|
height: height
|
|
236
237
|
}
|
|
237
|
-
}));
|
|
238
|
+
}, rest)));
|
|
238
239
|
});
|
|
239
240
|
VtxWangeEditor.propTypes = {
|
|
240
241
|
value: _propTypes["default"].string,
|
|
241
242
|
onChange: _propTypes["default"].func,
|
|
242
|
-
placeholder: _propTypes["default"].string
|
|
243
|
+
placeholder: _propTypes["default"].string,
|
|
244
|
+
downloadUrl: _propTypes["default"].string,
|
|
245
|
+
uploadUrl: _propTypes["default"].string,
|
|
246
|
+
height: _propTypes["default"].number
|
|
243
247
|
};
|
|
244
248
|
var _default = VtxWangeEditor;
|
|
245
249
|
exports["default"] = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Boot","registerModule","attachmentModule","registerPlugin","withEmptyHtml","VtxWangeEditor","forwardRef","props","ref","value","onChange","downloadUrl","uploadUrl","thumbnailUrl","placeholder","height","rest","useState","editor","setEditor","useEffect","destroy","editorConfig","MENU_CONF","uploadImage","server","onSuccess","file","res","customInsert","insertFn","result","data","map","item","id","fileName","Error","uploadVideo","uploadAttachment","hoverbarKeys","attachment","menuKeys","customPaste","event","preventDefault","html","clipboardData","getData","rtf","replace","imgSrcs","findAllImgSrcsFromHtml","Array","isArray","length","rtfImageData","extractImageDataFromRtf","replaceImagesFileSourceWithInlineRepresentation","dangerouslyInsertHtml","toolbarConfig","insertKeys","index","keys","getHtml","propTypes","PropTypes","string","func"],"sources":["vtx-wang-editor/index.jsx"],"sourcesContent":["import '@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} from './wangEditorUtil';\r\n\r\n// 注册插件 处理附件\r\nBoot.registerModule(attachmentModule);\r\n// 注册插件 处理为空的时候\r\nBoot.registerPlugin(withEmptyHtml);\r\n\r\nconst VtxWangeEditor = forwardRef((props, ref) => {\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 // 从html内容中查找粘贴内容中是否有图片元素,并返回img标签的属性src值的集合\r\n const imgSrcs = findAllImgSrcsFromHtml(html);\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\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 />\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};\r\n\r\nexport default VtxWangeEditor;\r\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\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 }\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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"}
|
|
@@ -8,13 +8,3 @@
|
|
|
8
8
|
height: 350px;
|
|
9
9
|
border-top: 1px solid #d9d9d9;
|
|
10
10
|
}
|
|
11
|
-
.vtx-wang-editor-html table tr:first-child td {
|
|
12
|
-
border-right-width: 3px;
|
|
13
|
-
}
|
|
14
|
-
.vtx-wang-editor-html table td {
|
|
15
|
-
border: 1px solid var(--w-e-textarea-border-color);
|
|
16
|
-
line-height: 1.5;
|
|
17
|
-
min-width: 30px;
|
|
18
|
-
padding: 3px 5px;
|
|
19
|
-
text-align: left;
|
|
20
|
-
}
|
|
@@ -9,16 +9,4 @@
|
|
|
9
9
|
height: 350px;
|
|
10
10
|
border-top: @border-width-base @border-style-base @border-color-base;
|
|
11
11
|
}
|
|
12
|
-
&-html {
|
|
13
|
-
table tr:first-child td {
|
|
14
|
-
border-right-width: 3px;
|
|
15
|
-
}
|
|
16
|
-
table td {
|
|
17
|
-
border: 1px solid var(--w-e-textarea-border-color);
|
|
18
|
-
line-height: 1.5;
|
|
19
|
-
min-width: 30px;
|
|
20
|
-
padding: 3px 5px;
|
|
21
|
-
text-align: left;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
12
|
}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.extractImageDataFromRtf = extractImageDataFromRtf;
|
|
9
9
|
exports.findAllImgSrcsFromHtml = findAllImgSrcsFromHtml;
|
|
10
|
+
exports.replaceAllSpanFontSize = replaceAllSpanFontSize;
|
|
10
11
|
exports.replaceImagesFileSourceWithInlineRepresentation = replaceImagesFileSourceWithInlineRepresentation;
|
|
11
12
|
exports.withEmptyHtml = withEmptyHtml;
|
|
12
13
|
|
|
@@ -22,6 +23,74 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
22
23
|
|
|
23
24
|
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; }
|
|
24
25
|
|
|
26
|
+
function replaceAllSpanFontSize(htmlData) {
|
|
27
|
+
var spanReg = /\<span([\s\S]+?)\<\/span\>/g;
|
|
28
|
+
var fontReg = /\<font([\s\S]+?)\<\/font\>/g;
|
|
29
|
+
var fontSizeReg = /font-size:([\s\S]+?)\;/g;
|
|
30
|
+
var spanArr = htmlData.match(spanReg); // 筛选出所有的span
|
|
31
|
+
|
|
32
|
+
if (!spanArr || Array.isArray(spanArr) && !spanArr.length) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var fontSizeReplaceList = {};
|
|
37
|
+
|
|
38
|
+
for (var i = 0; i < spanArr.length; i++) {
|
|
39
|
+
var fontArr = spanArr[i].match(fontReg);
|
|
40
|
+
|
|
41
|
+
if ((fontArr === null || fontArr === void 0 ? void 0 : fontArr.length) > 0) {
|
|
42
|
+
var fontSize = spanArr[i].match(fontSizeReg);
|
|
43
|
+
|
|
44
|
+
if ((fontSize === null || fontSize === void 0 ? void 0 : fontSize.length) > 0) {
|
|
45
|
+
var ptValue = fontSize[0].split(':')[1].replace(';', '');
|
|
46
|
+
|
|
47
|
+
if (ptValue.indexOf('pt') > -1) {
|
|
48
|
+
var value = toFontSize(parseInt(Number(ptValue.replace('pt', '')) / 0.75));
|
|
49
|
+
fontSizeReplaceList[fontSize[0]] = "font-size:".concat(value, "px;");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
for (var _i in fontSizeReplaceList) {
|
|
56
|
+
htmlData = htmlData.replaceAll(_i, fontSizeReplaceList[_i]);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return htmlData;
|
|
60
|
+
} // 判断字体在这个范围之内,不在这个范围之内 则不显示字体大小
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
function toFontSize(size) {
|
|
64
|
+
var result = size;
|
|
65
|
+
var sizeArr = [12, 13, 14, 15, 16, 19, 22, 24, 29, 32, 40, 48];
|
|
66
|
+
|
|
67
|
+
if (sizeArr.includes(size)) {
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (size < sizeArr[0]) {
|
|
72
|
+
return sizeArr[0];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (size > sizeArr[sizeArr.length - 1]) {
|
|
76
|
+
return sizeArr[sizeArr.length - 1];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
for (var i = 1; i < sizeArr.length; i++) {
|
|
80
|
+
if (size >= sizeArr[i - 1] && size <= sizeArr[i]) {
|
|
81
|
+
if (size - sizeArr[i - 1] < sizeArr[i] - size) {
|
|
82
|
+
result = sizeArr[i - 1];
|
|
83
|
+
} else {
|
|
84
|
+
result = sizeArr[i];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
|
|
25
94
|
function findAllImgSrcsFromHtml(htmlData) {
|
|
26
95
|
var imgReg = /<img.*?(?:>|\/>)/gi; //匹配图片中的img标签
|
|
27
96
|
|
|
@@ -214,9 +283,9 @@ function convertBase64UrlToBlob(dataurl) {
|
|
|
214
283
|
var _arr = arr[1].substring(0, arr[1].length - 2);
|
|
215
284
|
|
|
216
285
|
var mime = arr[0].match(/:(.*?);/)[1],
|
|
217
|
-
bstr = atob(_arr)
|
|
218
|
-
|
|
219
|
-
|
|
286
|
+
bstr = atob(_arr);
|
|
287
|
+
var n = bstr.length;
|
|
288
|
+
var u8arr = new Uint8Array(n);
|
|
220
289
|
|
|
221
290
|
while (n--) {
|
|
222
291
|
u8arr[n] = bstr.charCodeAt(n);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wangEditorUtil.js","names":["findAllImgSrcsFromHtml","htmlData","imgReg","srcReg","widthReg","heightReg","arr","match","Array","isArray","length","srcArr","i","src","width","height","push","url","img","withEmptyHtml","editor","getHtml","newEditor","isEmpty","extractImageDataFromRtf","rtfData","regexPictureHeader","regexPicture","RegExp","source","images","result","image","imageType","includes","hex","replace","type","replaceImagesFileSourceWithInlineRepresentation","imageSrcs","imagesHexSources","isBase64Data","uploadUrl","downloadUrl","newSrc","_convertHexToBase64","formData","FormData","blob","convertBase64UrlToBlob","imgName","split","slice","file","File","append","window","fetch","method","body","then","response","json","res","data","id","hexString","btoa","map","char","String","fromCharCode","parseInt","join","dataurl","_arr","substring","mime","bstr","atob","n","u8arr","Uint8Array","charCodeAt","Blob"],"sources":["vtx-wang-editor/wangEditorUtil.js"],"sourcesContent":["export function findAllImgSrcsFromHtml(htmlData) {\r\n let imgReg = /<img.*?(?:>|\\/>)/gi; //匹配图片中的img标签\r\n let srcReg = /src=[\\'\\\"]?([^\\'\\\"]*)[\\'\\\"]?/i; // 匹配图片中的src\r\n let widthReg = /width=[\\'\\\"]?([^\\'\\\"]*)[\\'\\\"]?/i; // 匹配图片中的width\r\n let heightReg = /height=[\\'\\\"]?([^\\'\\\"]*)[\\'\\\"]?/i; // 匹配图片中的height\r\n\r\n let arr = htmlData.match(imgReg); //筛选出所有的img\r\n if (!arr || (Array.isArray(arr) && !arr.length)) {\r\n return false;\r\n }\r\n\r\n let srcArr = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n let src = arr[i].match(srcReg);\r\n let width = arr[i].match(widthReg);\r\n let height = arr[i].match(heightReg);\r\n // 获取图片地址\r\n srcArr.push({\r\n width: width[1],\r\n height: height[1],\r\n url: src[1],\r\n img: arr[i],\r\n });\r\n }\r\n\r\n return srcArr;\r\n}\r\n// 处理为空的时候\r\nexport function withEmptyHtml(editor) {\r\n const { getHtml } = editor;\r\n const newEditor = editor;\r\n newEditor.getHtml = () => {\r\n if (newEditor.isEmpty()) {\r\n return '';\r\n }\r\n return getHtml();\r\n };\r\n\r\n return newEditor;\r\n}\r\n\r\nexport function extractImageDataFromRtf(rtfData) {\r\n if (!rtfData) {\r\n return [];\r\n }\r\n\r\n const regexPictureHeader = /{\\\\pict[\\s\\S]+?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)[\\s}]*/;\r\n const regexPicture = new RegExp(\r\n '(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}',\r\n 'g',\r\n );\r\n const images = rtfData.match(regexPicture);\r\n const result = [];\r\n\r\n if (images) {\r\n for (const image of images) {\r\n let imageType = false;\r\n\r\n if (image.includes('\\\\pngblip')) {\r\n imageType = 'image/png';\r\n } else if (image.includes('\\\\jpegblip')) {\r\n imageType = 'image/jpeg';\r\n }\r\n\r\n if (imageType) {\r\n result.push({\r\n hex: image.replace(regexPictureHeader, '').replace(/[^\\da-fA-F]/g, ''),\r\n type: imageType,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport async function replaceImagesFileSourceWithInlineRepresentation(\r\n htmlData,\r\n imageSrcs,\r\n imagesHexSources,\r\n isBase64Data = true,\r\n uploadUrl,\r\n downloadUrl,\r\n) {\r\n if (imageSrcs.length === imagesHexSources.length) {\r\n for (let i = 0; i < imageSrcs.length; i++) {\r\n const url = imageSrcs?.[i]?.url;\r\n const width = imageSrcs?.[i]?.width;\r\n const height = imageSrcs?.[i]?.height;\r\n const img = imageSrcs?.[i]?.img;\r\n const newSrc = isBase64Data\r\n ? `data:${imagesHexSources[i].type};base64,${_convertHexToBase64(\r\n imagesHexSources[i].hex,\r\n )}`\r\n : imagesHexSources[i];\r\n const formData = new FormData();\r\n let blob = convertBase64UrlToBlob(newSrc);\r\n let imgName = url.split('\\\\')?.slice(-1)?.[0] || 'image.jpg';\r\n let file = new File([blob], imgName);\r\n formData.append('file', file);\r\n const res = await window\r\n .fetch(uploadUrl, {\r\n method: 'POST',\r\n body: formData,\r\n })\r\n .then(function(response) {\r\n return response.json();\r\n });\r\n htmlData = htmlData.replace(\r\n img,\r\n `<img src=\"${downloadUrl}${res.data[0].id}\" style=\"width:${width}px;height:${height}px\"`,\r\n );\r\n }\r\n }\r\n return htmlData;\r\n}\r\n\r\nfunction _convertHexToBase64(hexString) {\r\n return btoa(\r\n hexString\r\n .match(/\\w{2}/g)\r\n .map(char => {\r\n return String.fromCharCode(parseInt(char, 16));\r\n })\r\n .join(''),\r\n );\r\n}\r\n\r\nfunction convertBase64UrlToBlob(dataurl) {\r\n var arr = dataurl.split(',');\r\n //注意base64的最后面中括号和引号是不转译的\r\n var _arr = arr[1].substring(0, arr[1].length - 2);\r\n var mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(_arr),\r\n n = bstr.length,\r\n u8arr = new Uint8Array(n);\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n return new Blob([u8arr], {\r\n type: mime,\r\n });\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wangEditorUtil.js","names":["replaceAllSpanFontSize","htmlData","spanReg","fontReg","fontSizeReg","spanArr","match","Array","isArray","length","fontSizeReplaceList","i","fontArr","fontSize","ptValue","split","replace","indexOf","value","toFontSize","parseInt","Number","replaceAll","size","result","sizeArr","includes","findAllImgSrcsFromHtml","imgReg","srcReg","widthReg","heightReg","arr","srcArr","src","width","height","push","url","img","withEmptyHtml","editor","getHtml","newEditor","isEmpty","extractImageDataFromRtf","rtfData","regexPictureHeader","regexPicture","RegExp","source","images","image","imageType","hex","type","replaceImagesFileSourceWithInlineRepresentation","imageSrcs","imagesHexSources","isBase64Data","uploadUrl","downloadUrl","newSrc","_convertHexToBase64","formData","FormData","blob","convertBase64UrlToBlob","imgName","slice","file","File","append","window","fetch","method","body","then","response","json","res","data","id","hexString","btoa","map","char","String","fromCharCode","join","dataurl","_arr","substring","mime","bstr","atob","n","u8arr","Uint8Array","charCodeAt","Blob"],"sources":["vtx-wang-editor/wangEditorUtil.js"],"sourcesContent":["export function replaceAllSpanFontSize(htmlData) {\r\n const spanReg = /\\<span([\\s\\S]+?)\\<\\/span\\>/g;\r\n const fontReg = /\\<font([\\s\\S]+?)\\<\\/font\\>/g;\r\n const fontSizeReg = /font-size:([\\s\\S]+?)\\;/g;\r\n\r\n let spanArr = htmlData.match(spanReg); // 筛选出所有的span\r\n if (!spanArr || (Array.isArray(spanArr) && !spanArr.length)) {\r\n return false;\r\n }\r\n let fontSizeReplaceList = {};\r\n for (let i = 0; i < spanArr.length; i++) {\r\n const fontArr = spanArr[i].match(fontReg);\r\n if (fontArr?.length > 0) {\r\n const fontSize = spanArr[i].match(fontSizeReg);\r\n if (fontSize?.length > 0) {\r\n const ptValue = fontSize[0].split(':')[1].replace(';', '');\r\n\r\n if (ptValue.indexOf('pt') > -1) {\r\n const value = toFontSize(parseInt(Number(ptValue.replace('pt', '')) / 0.75));\r\n fontSizeReplaceList[fontSize[0]] = `font-size:${value}px;`;\r\n }\r\n }\r\n }\r\n }\r\n for (let i in fontSizeReplaceList) {\r\n htmlData = htmlData.replaceAll(i, fontSizeReplaceList[i]);\r\n }\r\n return htmlData;\r\n}\r\n// 判断字体在这个范围之内,不在这个范围之内 则不显示字体大小\r\nfunction toFontSize(size) {\r\n let result = size;\r\n const sizeArr = [12, 13, 14, 15, 16, 19, 22, 24, 29, 32, 40, 48];\r\n if (sizeArr.includes(size)) {\r\n return result;\r\n }\r\n if (size < sizeArr[0]) {\r\n return sizeArr[0];\r\n }\r\n if (size > sizeArr[sizeArr.length - 1]) {\r\n return sizeArr[sizeArr.length - 1];\r\n }\r\n\r\n for (let i = 1; i < sizeArr.length; i++) {\r\n if (size >= sizeArr[i - 1] && size <= sizeArr[i]) {\r\n if (size - sizeArr[i - 1] < sizeArr[i] - size) {\r\n result = sizeArr[i - 1];\r\n } else {\r\n result = sizeArr[i];\r\n }\r\n break;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function findAllImgSrcsFromHtml(htmlData) {\r\n let imgReg = /<img.*?(?:>|\\/>)/gi; //匹配图片中的img标签\r\n let srcReg = /src=[\\'\\\"]?([^\\'\\\"]*)[\\'\\\"]?/i; // 匹配图片中的src\r\n let widthReg = /width=[\\'\\\"]?([^\\'\\\"]*)[\\'\\\"]?/i; // 匹配图片中的width\r\n let heightReg = /height=[\\'\\\"]?([^\\'\\\"]*)[\\'\\\"]?/i; // 匹配图片中的height\r\n\r\n let arr = htmlData.match(imgReg); //筛选出所有的img\r\n if (!arr || (Array.isArray(arr) && !arr.length)) {\r\n return false;\r\n }\r\n\r\n let srcArr = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n let src = arr[i].match(srcReg);\r\n let width = arr[i].match(widthReg);\r\n let height = arr[i].match(heightReg);\r\n // 获取图片地址\r\n srcArr.push({\r\n width: width[1],\r\n height: height[1],\r\n url: src[1],\r\n img: arr[i],\r\n });\r\n }\r\n\r\n return srcArr;\r\n}\r\n// 处理为空的时候\r\nexport function withEmptyHtml(editor) {\r\n const { getHtml } = editor;\r\n const newEditor = editor;\r\n newEditor.getHtml = () => {\r\n if (newEditor.isEmpty()) {\r\n return '';\r\n }\r\n return getHtml();\r\n };\r\n\r\n return newEditor;\r\n}\r\n\r\nexport function extractImageDataFromRtf(rtfData) {\r\n if (!rtfData) {\r\n return [];\r\n }\r\n\r\n const regexPictureHeader = /{\\\\pict[\\s\\S]+?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)[\\s}]*/;\r\n const regexPicture = new RegExp(\r\n '(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}',\r\n 'g',\r\n );\r\n const images = rtfData.match(regexPicture);\r\n const result = [];\r\n\r\n if (images) {\r\n for (const image of images) {\r\n let imageType = false;\r\n\r\n if (image.includes('\\\\pngblip')) {\r\n imageType = 'image/png';\r\n } else if (image.includes('\\\\jpegblip')) {\r\n imageType = 'image/jpeg';\r\n }\r\n\r\n if (imageType) {\r\n result.push({\r\n hex: image.replace(regexPictureHeader, '').replace(/[^\\da-fA-F]/g, ''),\r\n type: imageType,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport async function replaceImagesFileSourceWithInlineRepresentation(\r\n htmlData,\r\n imageSrcs,\r\n imagesHexSources,\r\n isBase64Data = true,\r\n uploadUrl,\r\n downloadUrl,\r\n) {\r\n if (imageSrcs.length === imagesHexSources.length) {\r\n for (let i = 0; i < imageSrcs.length; i++) {\r\n const url = imageSrcs?.[i]?.url;\r\n const width = imageSrcs?.[i]?.width;\r\n const height = imageSrcs?.[i]?.height;\r\n const img = imageSrcs?.[i]?.img;\r\n const newSrc = isBase64Data\r\n ? `data:${imagesHexSources[i].type};base64,${_convertHexToBase64(\r\n imagesHexSources[i].hex,\r\n )}`\r\n : imagesHexSources[i];\r\n const formData = new FormData();\r\n let blob = convertBase64UrlToBlob(newSrc);\r\n let imgName = url.split('\\\\')?.slice(-1)?.[0] || 'image.jpg';\r\n let file = new File([blob], imgName);\r\n formData.append('file', file);\r\n const res = await window\r\n .fetch(uploadUrl, {\r\n method: 'POST',\r\n body: formData,\r\n })\r\n .then(function (response) {\r\n return response.json();\r\n });\r\n htmlData = htmlData.replace(\r\n img,\r\n `<img src=\"${downloadUrl}${res.data[0].id}\" style=\"width:${width}px;height:${height}px\"`,\r\n );\r\n }\r\n }\r\n return htmlData;\r\n}\r\n\r\nfunction _convertHexToBase64(hexString) {\r\n return btoa(\r\n hexString\r\n .match(/\\w{2}/g)\r\n .map(char => {\r\n return String.fromCharCode(parseInt(char, 16));\r\n })\r\n .join(''),\r\n );\r\n}\r\n\r\nfunction convertBase64UrlToBlob(dataurl) {\r\n const arr = dataurl.split(',');\r\n //注意base64的最后面中括号和引号是不转译的\r\n const _arr = arr[1].substring(0, arr[1].length - 2);\r\n const mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(_arr);\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n return new Blob([u8arr], {\r\n type: mime,\r\n });\r\n}\r\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vtx/components",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.20",
|
|
4
4
|
"description": "React components for Vortex",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@ant-design/icons": "4.7.0",
|
|
56
|
-
"@vtx/map": "
|
|
56
|
+
"@vtx/map": "1.1.20",
|
|
57
57
|
"@vtx/utils": "latest",
|
|
58
58
|
"@wangeditor/editor": "^5.1.21",
|
|
59
59
|
"@wangeditor/editor-for-react": "^1.0.5",
|