@seafile/seafile-database 0.0.24 → 0.0.26

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.
Files changed (103) hide show
  1. package/dist/api/api.js +19 -21
  2. package/dist/assets/css/dropdown-menu.css +96 -0
  3. package/dist/assets/css/file-repo.css +3 -0
  4. package/dist/common/components/file-tag/index.js +2 -2
  5. package/dist/common/components/modal-portal.js +12 -0
  6. package/dist/common/utils/icon-utils.js +9 -2
  7. package/dist/common/utils/utils.js +28 -0
  8. package/dist/components/cell-editors/index.js +2 -2
  9. package/dist/components/cell-editors/multiple-select-editor/index.js +2 -2
  10. package/dist/components/cell-editors/single-select-editor/index.js +2 -2
  11. package/dist/components/cell-editors/tags-editor/index.js +1 -2
  12. package/dist/components/cell-formatter/creator.js +3 -2
  13. package/dist/components/context-menu/index.js +2 -2
  14. package/dist/components/data-process-setter/filter-setter.js +2 -3
  15. package/dist/components/data-process-setter/hide-column-setter.js +1 -1
  16. package/dist/components/data-process-setter/index.js +7 -0
  17. package/dist/components/data-process-setter/manage-setter.js +1 -2
  18. package/dist/components/data-process-setter/settings-setter.js +119 -0
  19. package/dist/components/data-process-setter/sort-setter.js +2 -2
  20. package/dist/components/data-process-setter/view-type-setter.js +53 -0
  21. package/dist/components/dialogs/custom-modal-header/index.css +34 -0
  22. package/dist/components/dialogs/custom-modal-header/index.js +34 -0
  23. package/dist/components/dialogs/insert-view-dialog.js +104 -0
  24. package/dist/components/hover-menu/index.css +85 -0
  25. package/dist/components/hover-menu/index.js +107 -0
  26. package/dist/components/icons/arrow-down-icon.js +19 -0
  27. package/dist/components/icons/arrow-right-icon.js +29 -0
  28. package/dist/components/icons/arrow-up-icon.js +19 -0
  29. package/dist/components/icons/card-icon.js +28 -0
  30. package/dist/components/icons/close-icon.js +23 -0
  31. package/dist/components/icons/index.js +23 -1
  32. package/dist/components/icons/set-up-icon.js +22 -0
  33. package/dist/components/icons/table-icon.js +19 -0
  34. package/dist/components/image-previewer/_hooks/metadata-details.js +1 -1
  35. package/dist/components/image-previewer/_hooks/metadata-status.js +2 -2
  36. package/dist/components/image-previewer/image-detail/index.js +1 -1
  37. package/dist/components/image-previewer/index.js +2 -2
  38. package/dist/components/popover/groupbys-popover/index.js +5 -5
  39. package/dist/components/popover/index.js +7 -0
  40. package/dist/components/popover/settings-popover/field-display-settings/field-item.js +110 -0
  41. package/dist/components/popover/settings-popover/field-display-settings/index.css +135 -0
  42. package/dist/components/popover/settings-popover/field-display-settings/index.js +119 -0
  43. package/dist/components/popover/settings-popover/index.css +52 -0
  44. package/dist/components/popover/settings-popover/index.js +99 -0
  45. package/dist/components/popover/sort-popover/index.js +1 -1
  46. package/dist/components/popover/view-type-popover/index.css +51 -0
  47. package/dist/components/popover/view-type-popover/index.js +64 -0
  48. package/dist/components/searcher/index.js +3 -3
  49. package/dist/components/view-toolbar/card-view-toolbar/index.js +89 -0
  50. package/dist/components/view-toolbar/index.css +54 -1
  51. package/dist/components/view-toolbar/index.js +40 -48
  52. package/dist/components/view-toolbar/rows-toolbar/index.js +2 -2
  53. package/dist/components/view-toolbar/table-view-toolbar/index.js +1 -1
  54. package/dist/components/view-toolbar/view-items/index.css +55 -0
  55. package/dist/components/view-toolbar/view-items/index.js +98 -0
  56. package/dist/components/view-toolbar/view-items/views-popover.js +80 -0
  57. package/dist/constants/event-bus-type.js +3 -1
  58. package/dist/constants/view/index.js +44 -2
  59. package/dist/context.js +60 -35
  60. package/dist/file-view-base.js +44 -0
  61. package/dist/file-view.js +140 -0
  62. package/dist/global-settings.js +3 -1
  63. package/dist/hooks/collaborators.js +9 -3
  64. package/dist/hooks/file-view-context.js +95 -0
  65. package/dist/hooks/index.js +14 -14
  66. package/dist/hooks/metadata.js +51 -47
  67. package/dist/hooks/tagsData.js +8 -2
  68. package/dist/hooks/view-context.js +69 -0
  69. package/dist/index.js +3 -3
  70. package/dist/locale/en.js +11 -1
  71. package/dist/locale/zh_CN.js +6 -1
  72. package/dist/store/data-processor.js +1 -0
  73. package/dist/store/index.js +8 -6
  74. package/dist/store/operations/apply.js +1 -1
  75. package/dist/store/server-operator.js +20 -7
  76. package/dist/views/card/card-items/card-item/formatter.js +45 -0
  77. package/dist/views/card/card-items/card-item/index.css +234 -0
  78. package/dist/views/card/card-items/card-item/index.js +206 -0
  79. package/dist/views/card/card-items/index.css +31 -0
  80. package/dist/views/card/card-items/index.js +189 -0
  81. package/dist/views/card/context-menu/index.js +165 -0
  82. package/dist/views/card/index.js +64 -0
  83. package/dist/views/card/settings/index.css +68 -0
  84. package/dist/views/card/settings/index.js +143 -0
  85. package/dist/views/index.js +5 -3
  86. package/dist/views/table/editors/editor-container/index.js +2 -2
  87. package/dist/views/table/formatters/file-name.js +3 -3
  88. package/dist/views/table/index.js +2 -3
  89. package/dist/views/table/table-main/index.js +2 -2
  90. package/dist/views/table/table-main/rows/row/cell/formatter.js +2 -2
  91. package/dist/views/table/table-main/rows/row/cell/index.js +2 -2
  92. package/dist/views/table/table-main/rows-header/cell/dropdown-menu/index.js +1 -1
  93. package/dist/views/table/table-main/rows-header/cell/index.js +1 -1
  94. package/dist/views/table/table-main/rows-header/index.js +2 -2
  95. package/package.json +3 -2
  96. package/dist/components/view-toolbar/views/all-views/index.css +0 -85
  97. package/dist/components/view-toolbar/views/all-views/index.js +0 -165
  98. package/dist/components/view-toolbar/views/index.css +0 -22
  99. package/dist/components/view-toolbar/views/index.js +0 -215
  100. package/dist/components/view-toolbar/views/view-item/index.css +0 -83
  101. package/dist/components/view-toolbar/views/view-item/index.js +0 -159
  102. package/dist/database.js +0 -53
  103. package/dist/hooks/viewsData.js +0 -114
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -12,11 +13,13 @@ var _exportNames = {
12
13
  VIEW_TYPE: true,
13
14
  FACE_RECOGNITION_VIEW_ID: true,
14
15
  VIEW_TYPE_ICON: true,
16
+ VIEW_TYPE_OPTIONS: true,
15
17
  VIEW_TYPE_DEFAULT_BASIC_FILTER: true,
16
18
  VIEW_TYPE_DEFAULT_SORTS: true,
17
19
  VIEW_SORT_COLUMN_RULES: true,
18
20
  VIEW_FIRST_SORT_COLUMN_RULES: true,
19
21
  KANBAN_SETTINGS_KEYS: true,
22
+ CARD_SETTINGS_KEYS: true,
20
23
  VIEW_DEFAULT_SETTINGS: true,
21
24
  VIEW_PROPERTY_KEYS: true,
22
25
  VIEW_INCOMPATIBLE_PROPERTIES: true,
@@ -24,7 +27,9 @@ var _exportNames = {
24
27
  VIEW_TOOL: true,
25
28
  VIEW_TOOLS: true
26
29
  };
27
- exports.VIEW_TYPE_ICON = exports.VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPES_SUPPORT_SHOW_DETAIL = exports.VIEW_TYPE = exports.VIEW_TOOLS = exports.VIEW_TOOL = exports.VIEW_SORT_COLUMN_RULES = exports.VIEW_PROPERTY_KEYS = exports.VIEW_INCOMPATIBLE_PROPERTIES = exports.VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_DEFAULT_SETTINGS = exports.VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_FOLDER = exports.TREE_NODE_LEFT_INDENT = exports.METADATA_VIEWS_KEY = exports.METADATA_VIEWS_DRAG_DATA_KEY = exports.KANBAN_SETTINGS_KEYS = exports.FACE_RECOGNITION_VIEW_ID = void 0;
30
+ exports.VIEW_TYPE_OPTIONS = exports.VIEW_TYPE_ICON = exports.VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPES_SUPPORT_SHOW_DETAIL = exports.VIEW_TYPE = exports.VIEW_TOOLS = exports.VIEW_TOOL = exports.VIEW_SORT_COLUMN_RULES = exports.VIEW_PROPERTY_KEYS = exports.VIEW_INCOMPATIBLE_PROPERTIES = exports.VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_DEFAULT_SETTINGS = exports.VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_FOLDER = exports.TREE_NODE_LEFT_INDENT = exports.METADATA_VIEWS_KEY = exports.METADATA_VIEWS_DRAG_DATA_KEY = exports.KANBAN_SETTINGS_KEYS = exports.FACE_RECOGNITION_VIEW_ID = exports.CARD_SETTINGS_KEYS = void 0;
31
+ var _translate = _interopRequireDefault(require("../../lang/translate"));
32
+ var _column = require("../column");
28
33
  var _filter = require("../filter");
29
34
  var _sort = require("../sort");
30
35
  var _gallery = require("./gallery");
@@ -71,7 +76,8 @@ const VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_VIEW = 'view';
71
76
  const VIEW_TYPE = exports.VIEW_TYPE = {
72
77
  TABLE: 'table',
73
78
  GALLERY: 'gallery',
74
- KANBAN: 'kanban'
79
+ KANBAN: 'kanban',
80
+ CARD: 'card'
75
81
  };
76
82
  const FACE_RECOGNITION_VIEW_ID = exports.FACE_RECOGNITION_VIEW_ID = '_face_recognition';
77
83
  const VIEW_TYPE_ICON = exports.VIEW_TYPE_ICON = {
@@ -79,6 +85,15 @@ const VIEW_TYPE_ICON = exports.VIEW_TYPE_ICON = {
79
85
  [VIEW_TYPE.GALLERY]: 'gallery',
80
86
  [VIEW_TYPE.KANBAN]: 'kanban'
81
87
  };
88
+ const VIEW_TYPE_OPTIONS = exports.VIEW_TYPE_OPTIONS = [{
89
+ name: _translate.default.gettext('Table view'),
90
+ value: VIEW_TYPE.TABLE,
91
+ icon: 'table'
92
+ }, {
93
+ name: _translate.default.gettext('Card view'),
94
+ value: VIEW_TYPE.CARD,
95
+ icon: 'card'
96
+ }];
82
97
  const VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER = {
83
98
  [VIEW_TYPE.TABLE]: [{
84
99
  column_key: '_is_dir',
@@ -93,6 +108,19 @@ const VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER =
93
108
  filter_predicate: _filter.FILTER_PREDICATE_TYPE.HAS_ANY_OF,
94
109
  filter_term: []
95
110
  }],
111
+ [VIEW_TYPE.CARD]: [{
112
+ column_key: _column.PRIVATE_COLUMN_KEY.IS_DIR,
113
+ filter_predicate: _filter.FILTER_PREDICATE_TYPE.IS,
114
+ filter_term: 'file'
115
+ }, {
116
+ column_key: _column.PRIVATE_COLUMN_KEY.FILE_TYPE,
117
+ filter_predicate: _filter.FILTER_PREDICATE_TYPE.IS_ANY_OF,
118
+ filter_term: []
119
+ }, {
120
+ column_key: _column.PRIVATE_COLUMN_KEY.TAGS,
121
+ filter_predicate: _filter.FILTER_PREDICATE_TYPE.HAS_ALL_OF,
122
+ filter_term: []
123
+ }],
96
124
  [VIEW_TYPE.GALLERY]: [],
97
125
  [VIEW_TYPE.KANBAN]: []
98
126
  };
@@ -103,11 +131,13 @@ const VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_SORTS = {
103
131
  };
104
132
  const VIEW_SORT_COLUMN_RULES = exports.VIEW_SORT_COLUMN_RULES = {
105
133
  [VIEW_TYPE.TABLE]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able,
134
+ [VIEW_TYPE.CARD]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
106
135
  [VIEW_TYPE.GALLERY]: column => _sort.GALLERY_SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able,
107
136
  [VIEW_TYPE.KANBAN]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able
108
137
  };
109
138
  const VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_FIRST_SORT_COLUMN_RULES = {
110
139
  [VIEW_TYPE.TABLE]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
140
+ [VIEW_TYPE.CARD]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
111
141
  [VIEW_TYPE.GALLERY]: column => _sort.GALLERY_FIRST_SORT_COLUMN_OPTIONS.includes(column.type),
112
142
  [VIEW_TYPE.KANBAN]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type)
113
143
  };
@@ -119,6 +149,12 @@ const KANBAN_SETTINGS_KEYS = exports.KANBAN_SETTINGS_KEYS = {
119
149
  TEXT_WRAP: 'text_wrap',
120
150
  COLUMNS: 'columns' // display and order
121
151
  };
152
+ const CARD_SETTINGS_KEYS = exports.CARD_SETTINGS_KEYS = {
153
+ HIDE_EMPTY_VALUE: 'hide_empty_value',
154
+ SHOW_COLUMN_NAME: 'show_column_name',
155
+ TEXT_WRAP: 'text_wrap',
156
+ COLUMNS: 'columns' // display and order
157
+ };
122
158
  const VIEW_DEFAULT_SETTINGS = exports.VIEW_DEFAULT_SETTINGS = {
123
159
  [VIEW_TYPE.TABLE]: {},
124
160
  [VIEW_TYPE.GALLERY]: {},
@@ -129,6 +165,12 @@ const VIEW_DEFAULT_SETTINGS = exports.VIEW_DEFAULT_SETTINGS = {
129
165
  [KANBAN_SETTINGS_KEYS.SHOW_COLUMN_NAME]: false,
130
166
  [KANBAN_SETTINGS_KEYS.TEXT_WRAP]: false,
131
167
  [KANBAN_SETTINGS_KEYS.COLUMNS]: []
168
+ },
169
+ [VIEW_TYPE.CARD]: {
170
+ [CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE]: false,
171
+ [CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME]: false,
172
+ [CARD_SETTINGS_KEYS.TEXT_WRAP]: false,
173
+ [CARD_SETTINGS_KEYS.COLUMNS]: []
132
174
  }
133
175
  };
134
176
  const VIEW_PROPERTY_KEYS = exports.VIEW_PROPERTY_KEYS = {
package/dist/context.js CHANGED
@@ -25,13 +25,13 @@ class Context {
25
25
  let isViewComputedOnServer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
26
26
  (0, _defineProperty2.default)(this, "initLocalStorage", settings => {
27
27
  const {
28
- repoID,
29
28
  view_data
30
29
  } = settings;
31
30
  const {
32
- view_id: viewID
31
+ wiki_id: wikiID,
32
+ file_view_id: fileViewID
33
33
  } = view_data;
34
- const localStorageName = `sf-metadata-${repoID}-${viewID}`;
34
+ const localStorageName = `sf-metadata-${wikiID}-${fileViewID}`;
35
35
  const localStorage = new _localStorage.default(localStorageName);
36
36
  return localStorage;
37
37
  });
@@ -43,6 +43,9 @@ class Context {
43
43
  this.localStorage = null;
44
44
  this.isViewComputedOnServer = true;
45
45
  });
46
+ (0, _defineProperty2.default)(this, "initViewSettings", () => {
47
+ // todo;
48
+ });
46
49
  (0, _defineProperty2.default)(this, "getViewSetting", function (key) {
47
50
  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
48
51
  if (_this.settings[key] === false) return _this.settings[key];
@@ -52,6 +55,27 @@ class Context {
52
55
  const viewData = this.settings['view_data'];
53
56
  return viewData.view_id;
54
57
  });
58
+ (0, _defineProperty2.default)(this, "addRepoSetting", repo => {
59
+ if (!repo) {
60
+ throw new Error('repo is not exist');
61
+ }
62
+ this.settings['repoInfo'] = repo;
63
+ this.settings['repoID'] = repo.repo_id;
64
+ this.settings['permission'] = repo.permission;
65
+ });
66
+ (0, _defineProperty2.default)(this, "getFileRepoInfo", () => {
67
+ if (!this.api) return null;
68
+ const view_data = this.settings['view_data'];
69
+ const {
70
+ wiki_id,
71
+ file_view_id
72
+ } = view_data;
73
+ return this.api.getFileRepoInfo(wiki_id, file_view_id);
74
+ });
75
+ (0, _defineProperty2.default)(this, "getRepo", repoID => {
76
+ if (!this.api) return null;
77
+ return this.api.getRepo(repoID);
78
+ });
55
79
  (0, _defineProperty2.default)(this, "getCollaborators", () => {
56
80
  if (!this.api) return null;
57
81
  const {
@@ -66,25 +90,48 @@ class Context {
66
90
  } = this.settings;
67
91
  return this.api.getTags(repoID);
68
92
  });
69
- // view
70
- (0, _defineProperty2.default)(this, "getViews", () => {
71
- return this.api.getViews();
72
- });
73
- (0, _defineProperty2.default)(this, "getView", viewId => {
93
+ // metadata
94
+ (0, _defineProperty2.default)(this, "getMetadata", params => {
74
95
  if (!this.api) return null;
75
96
  const {
76
97
  view_data
77
98
  } = this.settings;
78
- return this.api.getView(view_data);
99
+ const {
100
+ wiki_id,
101
+ file_view_id
102
+ } = view_data;
103
+ const newParams = {
104
+ ...params,
105
+ wiki_id,
106
+ file_view_id
107
+ };
108
+ return this.api.getMetadata(newParams);
79
109
  });
80
- // metadata
81
- (0, _defineProperty2.default)(this, "getMetadata", params => {
110
+ // view
111
+ (0, _defineProperty2.default)(this, "getView", () => {
82
112
  if (!this.api) return null;
83
113
  const {
84
114
  view_data
85
115
  } = this.settings;
86
- params['view_data'] = view_data;
87
- return this.api.getMetadata(params);
116
+ return this.api.getView({
117
+ ...view_data
118
+ });
119
+ });
120
+ (0, _defineProperty2.default)(this, "modifyView", (viewId, viewData) => {
121
+ const {
122
+ view_data
123
+ } = this.settings;
124
+ const {
125
+ wiki_id,
126
+ file_view_id
127
+ } = view_data;
128
+ return this.api.modifyView(wiki_id, file_view_id, viewData);
129
+ });
130
+ (0, _defineProperty2.default)(this, "moveView", (sourceViewID, targetViewID) => {
131
+ return this.api.moveView(sourceViewID, targetViewID);
132
+ });
133
+ (0, _defineProperty2.default)(this, "duplicateView", viewID => {
134
+ return this.api.duplicateView(viewID);
88
135
  });
89
136
  (0, _defineProperty2.default)(this, "getPermission", () => {
90
137
  return this.permission;
@@ -297,28 +344,6 @@ class Context {
297
344
  });
298
345
  return Promise.all(deletedRows);
299
346
  });
300
- // view
301
- (0, _defineProperty2.default)(this, "insertView", (name, viewData) => {
302
- return this.api.insertView(name, viewData);
303
- });
304
- (0, _defineProperty2.default)(this, "deleteView", viewID => {
305
- return this.api.deleteView(viewID);
306
- });
307
- (0, _defineProperty2.default)(this, "modifyView", (viewId, viewData) => {
308
- const {
309
- view_data
310
- } = this.settings;
311
- const {
312
- wiki_id
313
- } = view_data;
314
- return this.api.modifyView(wiki_id, viewId, viewData);
315
- });
316
- (0, _defineProperty2.default)(this, "moveView", (sourceViewID, targetViewID) => {
317
- return this.api.moveView(sourceViewID, targetViewID);
318
- });
319
- (0, _defineProperty2.default)(this, "duplicateView", viewID => {
320
- return this.api.duplicateView(viewID);
321
- });
322
347
  (0, _defineProperty2.default)(this, "getRowsByIds", () => {
323
348
  // todo
324
349
  });
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _components = require("./common/components");
12
+ var _hooks = require("./hooks");
13
+ var _views = _interopRequireDefault(require("./views"));
14
+ const FileViewBase = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
15
+ let {
16
+ settings,
17
+ fixedColumnCount
18
+ } = _ref;
19
+ const {
20
+ isLoading
21
+ } = (0, _hooks.useMetadata)();
22
+ const style = (0, _react.useMemo)(() => {
23
+ const {
24
+ width,
25
+ height
26
+ } = settings.view_data;
27
+ if (width && height) {
28
+ return {
29
+ width: width - 4,
30
+ // border
31
+ height: height - 4 // border
32
+ };
33
+ }
34
+ return null;
35
+ }, [settings.view_data]);
36
+ return /*#__PURE__*/_react.default.createElement("div", {
37
+ ref: ref,
38
+ className: (0, _classnames.default)('sea-metadata'),
39
+ style: style
40
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isLoading && /*#__PURE__*/_react.default.createElement(_components.CenteredLoading, null), !isLoading && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_views.default, {
41
+ fixedColumnCount: fixedColumnCount
42
+ }))));
43
+ });
44
+ var _default = exports.default = FileViewBase;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _hoverMenu = _interopRequireDefault(require("./components/hover-menu"));
11
+ var _fileViewBase = _interopRequireDefault(require("./file-view-base"));
12
+ var _globalSettings = _interopRequireDefault(require("./global-settings"));
13
+ var _hooks = require("./hooks");
14
+ var _translate = _interopRequireDefault(require("./lang/translate"));
15
+ const FileView = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
16
+ let {
17
+ scrollRef,
18
+ settings,
19
+ fixedColumnCount = 1,
20
+ readOnly
21
+ } = _ref;
22
+ const fileViewRef = (0, _react.useRef)(null);
23
+ const fileBaseRef = (0, _react.useRef)(null);
24
+ const [isShowMenu, setIsShowMenu] = (0, _react.useState)(false);
25
+ const [menuPosition, setMenuPosition] = (0, _react.useState)({});
26
+ (0, _react.useEffect)(() => {
27
+ _translate.default.initTranslate(settings);
28
+ _globalSettings.default.initSettings(settings);
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ }, []);
31
+ (0, _react.useImperativeHandle)(ref, () => ({
32
+ getFileBaseElement: () => fileBaseRef.current,
33
+ fileBaseRef: fileBaseRef
34
+ }), []);
35
+ const setPosition = (0, _react.useCallback)(() => {
36
+ if (fileViewRef.current) {
37
+ const {
38
+ top,
39
+ left
40
+ } = fileViewRef.current.getBoundingClientRect();
41
+ setMenuPosition({
42
+ top: top - 42,
43
+ left: left - 3
44
+ });
45
+ }
46
+ }, []);
47
+ const onBaseContainerClick = (0, _react.useCallback)(e => {
48
+ setPosition();
49
+ setIsShowMenu(true);
50
+ }, [setPosition]);
51
+ const handleScroll = (0, _react.useCallback)(e => {
52
+ if (readOnly) return;
53
+ if (!isShowMenu) return;
54
+ setIsShowMenu(false);
55
+ }, [isShowMenu, readOnly]);
56
+ (0, _react.useEffect)(() => {
57
+ if (readOnly) return;
58
+ let observerRefValue = null;
59
+ if (scrollRef && scrollRef.current) {
60
+ scrollRef.current.addEventListener('scroll', handleScroll);
61
+ observerRefValue = scrollRef.current;
62
+ }
63
+ return () => {
64
+ observerRefValue && observerRefValue.removeEventListener('scroll', handleScroll);
65
+ };
66
+ }, [handleScroll, readOnly, scrollRef]);
67
+ (0, _react.useEffect)(() => {
68
+ const onHideMenu = event => {
69
+ const toolbarElement = document.getElementById('sdoc-metadata-hover-menu-container');
70
+ if (toolbarElement && toolbarElement.contains(event.target)) {
71
+ return;
72
+ }
73
+ // view type
74
+ const viewTypePopoverElement = document.querySelector('.sea-metadata-view-type-popover');
75
+ if (viewTypePopoverElement && viewTypePopoverElement.contains(event.target)) {
76
+ return;
77
+ }
78
+
79
+ // sort
80
+ const sortPopoverElement = document.querySelector('.sea-metadata-sort-popover');
81
+ if (sortPopoverElement && sortPopoverElement.contains(event.target)) {
82
+ return;
83
+ }
84
+
85
+ // filter
86
+ const filterPopoverElement = document.querySelector('.sea-metadata-filter-popover');
87
+ if (filterPopoverElement && filterPopoverElement.contains(event.target)) {
88
+ return;
89
+ }
90
+
91
+ // hidden column
92
+ const groupbysPopoverElement = document.querySelector('.sea-metadata-groupbys-popover');
93
+ if (groupbysPopoverElement && groupbysPopoverElement.contains(event.target)) {
94
+ return;
95
+ }
96
+
97
+ // hidden column
98
+ const hiddenPopoverElement = document.querySelector('.sea-metadata-hide-columns-popover');
99
+ if (hiddenPopoverElement && hiddenPopoverElement.contains(event.target)) {
100
+ return;
101
+ }
102
+
103
+ // settings
104
+ const settingsPopoverElement = document.querySelector('.sea-metadata-settings-popover');
105
+ if (settingsPopoverElement && settingsPopoverElement.contains(event.target)) {
106
+ return;
107
+ }
108
+
109
+ // settings
110
+ const fieldDisplayPopoverElement = document.querySelector('.sea-metadata-field-display-popover');
111
+ if (fieldDisplayPopoverElement && fieldDisplayPopoverElement.contains(event.target)) {
112
+ return;
113
+ }
114
+ if (fileViewRef.current && fileViewRef.current.contains(event.target)) {
115
+ return;
116
+ }
117
+ setIsShowMenu(false);
118
+ };
119
+ document.addEventListener('click', onHideMenu, true);
120
+ return () => {
121
+ document.removeEventListener('click', onHideMenu, true);
122
+ };
123
+ }, []);
124
+ return /*#__PURE__*/_react.default.createElement(_hooks.FileViewContextProvider, {
125
+ settings: settings
126
+ }, /*#__PURE__*/_react.default.createElement(_hooks.ViewContextProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.CollaboratorsProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.TagsDataProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.TypesDataProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.SelectedRowsProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.MetadataProvider, null, /*#__PURE__*/_react.default.createElement("div", {
127
+ ref: fileViewRef,
128
+ className: "sdoc-file-view-base-container",
129
+ onClick: onBaseContainerClick
130
+ }, /*#__PURE__*/_react.default.createElement(_fileViewBase.default, {
131
+ ref: fileBaseRef,
132
+ settings: settings,
133
+ fixedColumnCount: fixedColumnCount
134
+ }), isShowMenu && /*#__PURE__*/_react.default.createElement(_hoverMenu.default, {
135
+ fixedColumnCount: fixedColumnCount,
136
+ viewData: settings.view_data,
137
+ menuPosition: menuPosition
138
+ })))))))));
139
+ });
140
+ var _default = exports.default = FileView;
@@ -29,7 +29,9 @@ class GlobalSettings {
29
29
  lang: settings.lang,
30
30
  thumbnailSizeForOriginal: settings.thumbnailSizeForOriginal,
31
31
  thumbnailDefaultSize: settings.thumbnailDefaultSize,
32
- isDevelopment: settings.isDevelopment
32
+ isDevelopment: settings.isDevelopment,
33
+ enableThumbnailServer: settings.enableThumbnailServer,
34
+ enableSeadoc: settings.enableSeadoc
33
35
  };
34
36
  }
35
37
  static getSetting(key) {
@@ -7,11 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.useCollaborators = exports.CollaboratorsProvider = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
+ var _components = require("../common/components");
10
11
  var _globalSettings = _interopRequireDefault(require("../global-settings"));
11
12
  var _user = _interopRequireDefault(require("../models/user"));
12
13
  var _validate = require("../utils/validate");
13
14
  var _userService = _interopRequireDefault(require("../utils/user-service"));
14
- var _appContext = require("./app-context");
15
+ var _fileViewContext = require("./file-view-context");
15
16
  /* eslint-disable react/prop-types */
16
17
 
17
18
  const CollaboratorsContext = /*#__PURE__*/_react.default.createContext(null);
@@ -21,7 +22,7 @@ const CollaboratorsProvider = _ref => {
21
22
  } = _ref;
22
23
  const {
23
24
  context
24
- } = (0, _appContext.useAppContext)();
25
+ } = (0, _fileViewContext.useFileViewContext)();
25
26
  const [isLoading, setIsLoading] = (0, _react.useState)(true);
26
27
  const [collaboratorsCache, setCollaboratorsCache] = (0, _react.useState)({});
27
28
  const [collaborators, setCollaborators] = (0, _react.useState)([]);
@@ -72,6 +73,11 @@ const CollaboratorsProvider = _ref => {
72
73
  }
73
74
  return null;
74
75
  }, [collaborators, collaboratorsCache, updateCollaboratorsCache]);
76
+ if (isLoading) {
77
+ return /*#__PURE__*/_react.default.createElement("div", {
78
+ className: 'sea-metadata'
79
+ }, /*#__PURE__*/_react.default.createElement(_components.CenteredLoading, null));
80
+ }
75
81
  return /*#__PURE__*/_react.default.createElement(CollaboratorsContext.Provider, {
76
82
  value: {
77
83
  collaborators,
@@ -80,7 +86,7 @@ const CollaboratorsProvider = _ref => {
80
86
  getCollaborator,
81
87
  queryUser
82
88
  }
83
- }, isLoading && null, !isLoading && children);
89
+ }, children);
84
90
  };
85
91
  exports.CollaboratorsProvider = CollaboratorsProvider;
86
92
  const useCollaborators = () => {
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useFileViewContext = exports.FileViewContextProvider = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _jsCookie = _interopRequireDefault(require("js-cookie"));
11
+ var _api = _interopRequireDefault(require("../api/api"));
12
+ var _components = require("../common/components");
13
+ var _eventBus = _interopRequireDefault(require("../common/utils/event-bus"));
14
+ var _context = _interopRequireDefault(require("../context"));
15
+ /* eslint-disable react/prop-types */
16
+
17
+ const FileViewContext = /*#__PURE__*/_react.default.createContext(null);
18
+ const initAPI = settings => {
19
+ return new Promise((resolve, reject) => {
20
+ const seafileAPI = new _api.default();
21
+ const {
22
+ isDevelopment
23
+ } = settings;
24
+ if (isDevelopment) {
25
+ const {
26
+ serviceUrl: server,
27
+ username,
28
+ password
29
+ } = settings;
30
+ seafileAPI.init({
31
+ server,
32
+ username,
33
+ password
34
+ });
35
+ seafileAPI.login().then(res => {
36
+ resolve(seafileAPI);
37
+ });
38
+ } else {
39
+ const {
40
+ siteRoot
41
+ } = settings;
42
+ const xcsrfHeaders = _jsCookie.default.get('sfcsrftoken');
43
+ seafileAPI.initForSeahubUsage({
44
+ siteRoot,
45
+ xcsrfHeaders
46
+ });
47
+ resolve(seafileAPI);
48
+ }
49
+ });
50
+ };
51
+ const FileViewContextProvider = _ref => {
52
+ let {
53
+ settings,
54
+ children
55
+ } = _ref;
56
+ const [isInit, setIsInit] = (0, _react.useState)(true);
57
+ const [context, setContext] = (0, _react.useState)(null);
58
+ const [fileRepo, setFileRepo] = (0, _react.useState)(null);
59
+ (0, _react.useEffect)(() => {
60
+ const initContext = async () => {
61
+ const eventBus = new _eventBus.default();
62
+ const api = await initAPI(settings);
63
+ const context = new _context.default(settings, eventBus, api);
64
+ const result = await context.getFileRepoInfo();
65
+ const {
66
+ file_view
67
+ } = result.data;
68
+ setContext(context);
69
+ setFileRepo(file_view);
70
+ setIsInit(false);
71
+ };
72
+ initContext();
73
+ // eslint-disable-next-line react-hooks/exhaustive-deps
74
+ }, []);
75
+ if (isInit) {
76
+ return /*#__PURE__*/_react.default.createElement("div", {
77
+ className: 'sea-metadata'
78
+ }, /*#__PURE__*/_react.default.createElement(_components.CenteredLoading, null));
79
+ }
80
+ return /*#__PURE__*/_react.default.createElement(FileViewContext.Provider, {
81
+ value: {
82
+ context,
83
+ fileRepo
84
+ }
85
+ }, children);
86
+ };
87
+ exports.FileViewContextProvider = FileViewContextProvider;
88
+ const useFileViewContext = () => {
89
+ const context = (0, _react.useContext)(FileViewContext);
90
+ if (!context) {
91
+ throw new Error('\'AppContext\' is null');
92
+ }
93
+ return context;
94
+ };
95
+ exports.useFileViewContext = useFileViewContext;
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "AppContextProvider", {
6
+ Object.defineProperty(exports, "CollaboratorsProvider", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _appContext.AppContextProvider;
9
+ return _collaborators.CollaboratorsProvider;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "CollaboratorsProvider", {
12
+ Object.defineProperty(exports, "FileViewContextProvider", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _collaborators.CollaboratorsProvider;
15
+ return _fileViewContext.FileViewContextProvider;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "MetadataProvider", {
@@ -39,22 +39,22 @@ Object.defineProperty(exports, "TypesDataProvider", {
39
39
  return _typesData.TypesDataProvider;
40
40
  }
41
41
  });
42
- Object.defineProperty(exports, "ViewsDataProvider", {
42
+ Object.defineProperty(exports, "ViewContextProvider", {
43
43
  enumerable: true,
44
44
  get: function () {
45
- return _viewsData.ViewsDataProvider;
45
+ return _viewContext.ViewContextProvider;
46
46
  }
47
47
  });
48
- Object.defineProperty(exports, "useAppContext", {
48
+ Object.defineProperty(exports, "useCollaborators", {
49
49
  enumerable: true,
50
50
  get: function () {
51
- return _appContext.useAppContext;
51
+ return _collaborators.useCollaborators;
52
52
  }
53
53
  });
54
- Object.defineProperty(exports, "useCollaborators", {
54
+ Object.defineProperty(exports, "useFileViewContext", {
55
55
  enumerable: true,
56
56
  get: function () {
57
- return _collaborators.useCollaborators;
57
+ return _fileViewContext.useFileViewContext;
58
58
  }
59
59
  });
60
60
  Object.defineProperty(exports, "useMetadata", {
@@ -81,16 +81,16 @@ Object.defineProperty(exports, "useTypesData", {
81
81
  return _typesData.useTypesData;
82
82
  }
83
83
  });
84
- Object.defineProperty(exports, "useViewsData", {
84
+ Object.defineProperty(exports, "useViewContext", {
85
85
  enumerable: true,
86
86
  get: function () {
87
- return _viewsData.useViewsData;
87
+ return _viewContext.useViewContext;
88
88
  }
89
89
  });
90
90
  var _collaborators = require("./collaborators");
91
91
  var _metadata = require("./metadata");
92
92
  var _tagsData = require("./tagsData");
93
- var _viewsData = require("./viewsData");
94
93
  var _typesData = require("./typesData");
95
94
  var _selectedRows = require("./selected-rows.js");
96
- var _appContext = require("./app-context");
95
+ var _viewContext = require("./view-context");
96
+ var _fileViewContext = require("./file-view-context");