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
- class FileFormatter extends _react.default.PureComponent {
14
- render() {
15
- let {
16
- isSample,
17
- value,
18
- containerClassName,
19
- renderItem
20
- } = this.props;
21
- if (!Array.isArray(value) || value.length === 0) {
22
- return null;
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 className = (0, _classnames.default)('dtable-ui cell-formatter-container file-formatter', containerClassName);
25
- if (isSample) {
26
- let item = value[0];
27
- return /*#__PURE__*/_react.default.createElement("div", {
28
- className: className
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
- }, value.map((item, index) => {
38
- const dom = /*#__PURE__*/_react.default.createElement(_FileItemFormatter.default, {
39
- file: item
40
- });
41
- if (renderItem) return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
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
- exports.default = FileFormatter;
51
- FileFormatter.defaultProps = {
52
- isSample: false,
53
- value: [],
54
- containerClassName: ''
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) || ''
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-ui-component",
3
- "version": "6.0.24",
3
+ "version": "6.0.25-alpha.2",
4
4
  "main": "./lib/index.js",
5
5
  "dependencies": {
6
6
  "@seafile/react-image-lightbox": "4.0.2",