dtable-ui-component 6.0.24 → 6.0.25-alpha.2
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.
|
@@ -10,46 +10,104 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
var _FileItemFormatter = _interopRequireDefault(require("../FileItemFormatter"));
|
|
12
12
|
require("./index.css");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
const FileFormatter = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
isSample = false,
|
|
16
|
+
value = [],
|
|
17
|
+
containerClassName = '',
|
|
18
|
+
renderItem,
|
|
19
|
+
isSupportOpenFile = false,
|
|
20
|
+
server,
|
|
21
|
+
workspaceID,
|
|
22
|
+
dtableUuid
|
|
23
|
+
} = _ref;
|
|
24
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const [largeImageIndex, setLargeImageIndex] = (0, _react.useState)(-1);
|
|
28
|
+
const [fileImageUrlList, setFileImageUrlList] = (0, _react.useState)([]);
|
|
29
|
+
const getFileItemImageUrlList = (0, _react.useCallback)(value => {
|
|
30
|
+
let newFileImageUrlList = [];
|
|
31
|
+
value.forEach(fileItem => {
|
|
32
|
+
const {
|
|
33
|
+
url,
|
|
34
|
+
name
|
|
35
|
+
} = fileItem;
|
|
36
|
+
let assetFileIndex = typeof url === 'string' ? url.indexOf('/asset') : -1;
|
|
37
|
+
if (assetFileIndex > -1) {
|
|
38
|
+
const isImage = imageCheck(name);
|
|
39
|
+
if (isImage) {
|
|
40
|
+
newFileImageUrlList.push(url);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
setFileImageUrlList(newFileImageUrlList);
|
|
45
|
+
}, []);
|
|
46
|
+
(0, _react.useEffect)(() => {
|
|
47
|
+
if (!isSupportOpenFile) return;
|
|
48
|
+
getFileItemImageUrlList(value);
|
|
49
|
+
}, [value, getFileItemImageUrlList]);
|
|
50
|
+
const showLargeImage = (0, _react.useCallback)(imageIndex => {
|
|
51
|
+
setLargeImageIndex(imageIndex);
|
|
52
|
+
}, []);
|
|
53
|
+
const openFile = (0, _react.useCallback)(fileItem => {
|
|
54
|
+
if (!isSupportOpenFile || !server || !workspaceID || !dtableUuid) return;
|
|
55
|
+
let openFileUrl = fileItem.url;
|
|
56
|
+
const imageIndex = fileImageUrlList.indexOf(openFileUrl);
|
|
57
|
+
if (imageIndex > -1) {
|
|
58
|
+
showLargeImage(imageIndex);
|
|
59
|
+
return;
|
|
23
60
|
}
|
|
24
|
-
let
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}, /*#__PURE__*/_react.default.createElement(_FileItemFormatter.default, {
|
|
30
|
-
file: item
|
|
31
|
-
}), value.length !== 1 && /*#__PURE__*/_react.default.createElement("span", {
|
|
32
|
-
className: "file-item-count"
|
|
33
|
-
}, "+".concat(value.length)));
|
|
61
|
+
let previewerUrl;
|
|
62
|
+
let assetFileIndex = openFileUrl.indexOf('/asset');
|
|
63
|
+
if (assetFileIndex > -1) {
|
|
64
|
+
previewerUrl = openFileUrl.replace('/asset', '/asset-preview');
|
|
65
|
+
window.open(previewerUrl, '_blank');
|
|
34
66
|
}
|
|
67
|
+
}, [fileImageUrlList, showLargeImage]);
|
|
68
|
+
const moveNext = (0, _react.useCallback)(() => {
|
|
69
|
+
setLargeImageIndex(prevIndex => (prevIndex + 1) % fileImageUrlList.length);
|
|
70
|
+
}, [fileImageUrlList]);
|
|
71
|
+
const movePrev = (0, _react.useCallback)(() => {
|
|
72
|
+
setLargeImageIndex(prevIndex => (prevIndex + fileImageUrlList.length - 1) % fileImageUrlList.length);
|
|
73
|
+
}, [fileImageUrlList]);
|
|
74
|
+
const hideLargeImage = (0, _react.useCallback)(() => {
|
|
75
|
+
setLargeImageIndex(-1);
|
|
76
|
+
}, []);
|
|
77
|
+
const className = (0, _classnames.default)('dtable-ui cell-formatter-container file-formatter', containerClassName);
|
|
78
|
+
if (isSample) {
|
|
79
|
+
const item = value[0];
|
|
35
80
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
36
81
|
className: className
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
key: index
|
|
43
|
-
}, renderItem(dom));
|
|
44
|
-
return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
45
|
-
key: index
|
|
46
|
-
}, dom);
|
|
47
|
-
}));
|
|
82
|
+
}, /*#__PURE__*/_react.default.createElement(_FileItemFormatter.default, {
|
|
83
|
+
file: item
|
|
84
|
+
}), value.length !== 1 && /*#__PURE__*/_react.default.createElement("span", {
|
|
85
|
+
className: "file-item-count"
|
|
86
|
+
}, "+".concat(value.length)));
|
|
48
87
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
};
|
|
88
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
89
|
+
className: className
|
|
90
|
+
}, value.map((item, index) => {
|
|
91
|
+
const dom = /*#__PURE__*/_react.default.createElement(_FileItemFormatter.default, {
|
|
92
|
+
openFile: openFile,
|
|
93
|
+
file: item
|
|
94
|
+
});
|
|
95
|
+
if (renderItem) return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
96
|
+
key: index
|
|
97
|
+
}, renderItem(dom));
|
|
98
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
99
|
+
key: index
|
|
100
|
+
}, dom);
|
|
101
|
+
}), largeImageIndex > -1 && /*#__PURE__*/_react.default.createElement(ImagePreviewerLightbox, {
|
|
102
|
+
server: server,
|
|
103
|
+
workspaceID: workspaceID,
|
|
104
|
+
dtableUuid: dtableUuid,
|
|
105
|
+
readOnly: true,
|
|
106
|
+
imageItems: fileImageUrlList,
|
|
107
|
+
imageIndex: largeImageIndex,
|
|
108
|
+
closeImagePopup: hideLargeImage,
|
|
109
|
+
moveToPrevImage: movePrev,
|
|
110
|
+
moveToNextImage: moveNext
|
|
111
|
+
}));
|
|
112
|
+
};
|
|
113
|
+
var _default = exports.default = FileFormatter;
|
|
@@ -10,13 +10,15 @@ var _url = require("../utils/url");
|
|
|
10
10
|
const FileItemFormatter = _ref => {
|
|
11
11
|
let {
|
|
12
12
|
file,
|
|
13
|
-
config
|
|
13
|
+
config,
|
|
14
|
+
openFile
|
|
14
15
|
} = _ref;
|
|
15
16
|
const {
|
|
16
17
|
fileIconUrl,
|
|
17
18
|
isImage
|
|
18
19
|
} = (0, _url.getFileThumbnailInfo)(file, config);
|
|
19
20
|
return /*#__PURE__*/_react.default.createElement("img", {
|
|
21
|
+
onClick: () => openFile && openFile(file),
|
|
20
22
|
className: "file-item-icon ".concat(isImage ? 'img' : ''),
|
|
21
23
|
src: fileIconUrl,
|
|
22
24
|
alt: (file === null || file === void 0 ? void 0 : file.name) || ''
|