@seafile/seafile-database 0.0.21 → 0.0.23

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 (78) hide show
  1. package/dist/api/api.js +21 -27
  2. package/dist/common/components/file-tag/index.js +2 -2
  3. package/dist/common/utils/icon-utils.js +2 -9
  4. package/dist/common/utils/utils.js +0 -28
  5. package/dist/components/cell-editors/index.js +2 -2
  6. package/dist/components/cell-editors/multiple-select-editor/index.js +2 -2
  7. package/dist/components/cell-editors/single-select-editor/index.js +2 -2
  8. package/dist/components/cell-editors/tags-editor/index.js +2 -1
  9. package/dist/components/context-menu/index.js +2 -2
  10. package/dist/components/data-process-setter/filter-setter.js +2 -1
  11. package/dist/components/data-process-setter/manage-setter.js +2 -1
  12. package/dist/components/data-process-setter/sort-setter.js +2 -2
  13. package/dist/components/icons/index.js +1 -14
  14. package/dist/components/image-previewer/_hooks/metadata-details.js +1 -1
  15. package/dist/components/image-previewer/_hooks/metadata-status.js +2 -2
  16. package/dist/components/image-previewer/image-detail/index.js +1 -1
  17. package/dist/components/image-previewer/index.js +2 -2
  18. package/dist/components/popover/groupbys-popover/index.js +5 -5
  19. package/dist/components/searcher/index.js +3 -3
  20. package/dist/components/view-toolbar/index.css +1 -54
  21. package/dist/components/view-toolbar/index.js +48 -40
  22. package/dist/components/view-toolbar/rows-toolbar/index.js +2 -2
  23. package/dist/components/view-toolbar/table-view-toolbar/index.js +1 -1
  24. package/dist/components/view-toolbar/views/all-views/index.css +85 -0
  25. package/dist/components/view-toolbar/views/all-views/index.js +165 -0
  26. package/dist/components/view-toolbar/views/index.css +22 -0
  27. package/dist/components/view-toolbar/views/index.js +215 -0
  28. package/dist/components/view-toolbar/views/view-item/index.css +83 -0
  29. package/dist/components/view-toolbar/views/view-item/index.js +159 -0
  30. package/dist/constants/event-bus-type.js +1 -3
  31. package/dist/constants/view/index.js +2 -32
  32. package/dist/context.js +34 -79
  33. package/dist/database.js +18 -11
  34. package/dist/global-settings.js +1 -3
  35. package/dist/hooks/{file-repo-context.js → app-context.js} +20 -25
  36. package/dist/hooks/collaborators.js +3 -9
  37. package/dist/hooks/index.js +14 -14
  38. package/dist/hooks/metadata.js +47 -45
  39. package/dist/hooks/tagsData.js +2 -8
  40. package/dist/hooks/viewsData.js +114 -0
  41. package/dist/index.js +3 -3
  42. package/dist/locale/en.js +1 -6
  43. package/dist/locale/zh_CN.js +1 -6
  44. package/dist/store/data-processor.js +0 -1
  45. package/dist/views/index.js +3 -5
  46. package/dist/views/table/editors/editor-container/index.js +2 -2
  47. package/dist/views/table/formatters/file-name.js +3 -3
  48. package/dist/views/table/index.js +3 -2
  49. package/dist/views/table/table-main/index.js +2 -2
  50. package/dist/views/table/table-main/rows/row/cell/formatter.js +2 -2
  51. package/dist/views/table/table-main/rows/row/cell/index.js +2 -2
  52. package/dist/views/table/table-main/rows-header/cell/dropdown-menu/index.js +1 -1
  53. package/dist/views/table/table-main/rows-header/cell/index.js +1 -1
  54. package/dist/views/table/table-main/rows-header/index.js +2 -2
  55. package/package.json +1 -1
  56. package/dist/assets/css/dropdown-menu.css +0 -96
  57. package/dist/components/dialogs/custom-modal-header/index.css +0 -34
  58. package/dist/components/dialogs/custom-modal-header/index.js +0 -34
  59. package/dist/components/dialogs/insert-view-dialog.js +0 -104
  60. package/dist/components/icons/arrow-down-icon.js +0 -19
  61. package/dist/components/icons/arrow-up-icon.js +0 -19
  62. package/dist/components/icons/close-icon.js +0 -23
  63. package/dist/components/icons/set-up-icon.js +0 -22
  64. package/dist/components/view-toolbar/card-view-toolbar/index.js +0 -89
  65. package/dist/components/view-toolbar/view-items/index.css +0 -55
  66. package/dist/components/view-toolbar/view-items/index.js +0 -98
  67. package/dist/components/view-toolbar/view-items/views-popover.js +0 -80
  68. package/dist/file-base.js +0 -31
  69. package/dist/hooks/file-view-context.js +0 -69
  70. package/dist/views/card/card-items/card-item/formatter.js +0 -45
  71. package/dist/views/card/card-items/card-item/index.css +0 -234
  72. package/dist/views/card/card-items/card-item/index.js +0 -206
  73. package/dist/views/card/card-items/index.css +0 -31
  74. package/dist/views/card/card-items/index.js +0 -189
  75. package/dist/views/card/context-menu/index.js +0 -165
  76. package/dist/views/card/index.js +0 -64
  77. package/dist/views/card/settings/index.css +0 -68
  78. package/dist/views/card/settings/index.js +0 -143
@@ -0,0 +1,83 @@
1
+ .sea-metadata-views .sea-metadata-view-container {
2
+ padding: 0 12px;
3
+ display: flex;
4
+ align-items: center;
5
+ height: 100%;
6
+ flex-shrink: 0;
7
+ position: relative;
8
+ }
9
+
10
+ .sea-metadata-views .sea-metadata-view-container:first-child {
11
+ padding-left: 0;
12
+ }
13
+
14
+ .sea-metadata-views .sea-metadata-view-next-position-before::before,
15
+ .sea-metadata-views .sea-metadata-view-next-position-after::after {
16
+ content: '';
17
+ border: 1px solid #555;
18
+ border-radius: 1px;
19
+ position: absolute;
20
+ top: 4px;
21
+ bottom: 4px;
22
+ }
23
+
24
+ .sea-metadata-views .sea-metadata-view-next-position-before::before {
25
+ left: 0;
26
+ }
27
+
28
+ .sea-metadata-views .sea-metadata-view-next-position-after::after {
29
+ right: -2px;
30
+ }
31
+
32
+ .sea-metadata-views .sea-metadata-view-item {
33
+ height: 100%;
34
+ display: flex;
35
+ align-items: center;
36
+ gap: 4px;
37
+ cursor: pointer;
38
+ flex-shrink: 0;
39
+ }
40
+
41
+ .sea-metadata-views .sea-metadata-view-item.disabled {
42
+ cursor: default;
43
+ }
44
+
45
+ .sea-metadata-views .sea-metadata-view-item.active {
46
+ color: #ED7109;
47
+ position: relative;
48
+ transition: color .3;
49
+ }
50
+
51
+ .sea-metadata-views .sea-metadata-view-item.active::before {
52
+ content: '';
53
+ position: absolute;
54
+ bottom: 0;
55
+ left: 0;
56
+ width: 100%;
57
+ height: 2px;
58
+ background-color: #ED7109;
59
+ }
60
+
61
+ .sea-metadata-views .sea-metadata-view-item-operation-down {
62
+ height: 12px;
63
+ width: 12px;
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ }
68
+
69
+ .sea-metadata-view-dropdown-menu {
70
+ display: block;
71
+ }
72
+
73
+ .sea-metadata-view-dropdown-menu .dropdown-item .sea-qa-icon-svg {
74
+ margin-right: 10px;
75
+ height: 14px;
76
+ width: 14px;
77
+ color: #666;
78
+ margin-top: -2px;
79
+ }
80
+
81
+ .sea-metadata-view-dropdown-menu .dropdown-item:hover .sea-qa-icon-svg {
82
+ color: #FFF;
83
+ }
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = require("react");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _clickOutside = _interopRequireDefault(require("../../../../common/components/click-outside"));
11
+ var _commonOperationConfirmationDialog = _interopRequireDefault(require("../../../../common/components/common-operation-confirmation-dialog"));
12
+ var _modalPortal = _interopRequireDefault(require("../../../../common/components/modal-portal"));
13
+ var _typeDetection = require("../../../../common/utils/type-detection");
14
+ var _icons = _interopRequireDefault(require("../../../icons"));
15
+ var _translate = _interopRequireDefault(require("../../../../lang/translate"));
16
+ require("./index.css");
17
+ const ViewItem = _ref => {
18
+ let {
19
+ view,
20
+ isSelect,
21
+ modifyAble,
22
+ deleteAble,
23
+ moveAble,
24
+ duplicateAble,
25
+ onSelect,
26
+ onModify,
27
+ onMove,
28
+ onDelete,
29
+ onDuplicate
30
+ } = _ref;
31
+ const [isShowDropdownMenu, setIsShowDropdownMenu] = (0, _react.useState)(false);
32
+ const [dropRelativePosition, setDropRelativePosition] = (0, _react.useState)('');
33
+ const [isShowDeleteConfirmationDialog, setIsShowDeleteConfirmationDialog] = (0, _react.useState)(false);
34
+ const containerRef = (0, _react.useRef)(null);
35
+ const viewRef = (0, _react.useRef)(null);
36
+ const menuStyle = (0, _react.useRef)({});
37
+ const enteredCounter = (0, _react.useRef)(0);
38
+ const onDragStart = (0, _react.useCallback)(event => {
39
+ event.stopPropagation();
40
+ event.dataTransfer.setDragImage(containerRef.current, 10, 10);
41
+ event.dataTransfer.effectAllowed = 'move';
42
+ event.dataTransfer.setData('text/plain', view._id);
43
+ }, [view]);
44
+ const onDragEnter = (0, _react.useCallback)(event => {
45
+ event.stopPropagation();
46
+ enteredCounter.current = enteredCounter.current + 1;
47
+ }, []);
48
+ const onDragOver = (0, _react.useCallback)(event => {
49
+ if (event.dataTransfer.dropEffect === 'copy') return;
50
+ event.stopPropagation();
51
+ event.preventDefault();
52
+ event.dataTransfer.dropEffect = 'move';
53
+ const dropRelativePosition = event.nativeEvent.offsetX <= event.target.clientWidth / 2 ? 'before' : 'after';
54
+ setDropRelativePosition(dropRelativePosition);
55
+ }, []);
56
+ const onDragLeave = (0, _react.useCallback)(event => {
57
+ event.stopPropagation();
58
+ enteredCounter.current = enteredCounter.current - 1;
59
+ if (!enteredCounter.current === 0) return;
60
+ setDropRelativePosition('');
61
+ }, []);
62
+ const onDrop = (0, _react.useCallback)(event => {
63
+ event.stopPropagation();
64
+ event.preventDefault();
65
+ enteredCounter.current = 0;
66
+ const moveViewID = event.dataTransfer.getData('text/plain');
67
+ const {
68
+ _id
69
+ } = view;
70
+ if (moveViewID !== _id) {
71
+ onMove && onMove(moveViewID, _id, dropRelativePosition);
72
+ }
73
+ setDropRelativePosition('');
74
+ }, [view, dropRelativePosition, onMove]);
75
+ const openDropdownMenu = (0, _react.useCallback)(() => {
76
+ const {
77
+ left,
78
+ bottom
79
+ } = viewRef.current.getBoundingClientRect();
80
+ menuStyle.current = {
81
+ left,
82
+ top: bottom
83
+ };
84
+ setIsShowDropdownMenu(true);
85
+ }, []);
86
+ const closeDropdown = (0, _react.useCallback)(() => {
87
+ setIsShowDropdownMenu(false);
88
+ }, []);
89
+ const openDeleteConfirmationDialog = (0, _react.useCallback)(() => {
90
+ setIsShowDropdownMenu(false);
91
+ setIsShowDeleteConfirmationDialog(true);
92
+ }, []);
93
+ const closeDeleteConfirmationDialog = (0, _react.useCallback)(() => {
94
+ setIsShowDeleteConfirmationDialog(false);
95
+ }, []);
96
+ const handleModify = (0, _react.useCallback)(() => {
97
+ setIsShowDropdownMenu(false);
98
+ onModify && onModify();
99
+ }, [onModify]);
100
+ const handleDuplicate = (0, _react.useCallback)(() => {
101
+ setIsShowDropdownMenu(false);
102
+ onDuplicate && onDuplicate(view._id);
103
+ }, [view, onDuplicate]);
104
+ const props = moveAble ? {
105
+ onDragStart,
106
+ onDragEnter,
107
+ onDragOver,
108
+ onDragLeave,
109
+ onDrop,
110
+ draggable: 'true'
111
+ } : {};
112
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", Object.assign({
113
+ className: (0, _classnames.default)('sea-metadata-view-container', {
114
+ 'sea-metadata-view-next-position-before': dropRelativePosition === 'before',
115
+ 'sea-metadata-view-next-position-after': dropRelativePosition === 'after'
116
+ }),
117
+ ref: containerRef
118
+ }, props), /*#__PURE__*/React.createElement("div", {
119
+ className: (0, _classnames.default)('sea-metadata-view-item', {
120
+ 'active': isSelect,
121
+ 'disabled': !(0, _typeDetection.isFunction)(onSelect)
122
+ }),
123
+ onClick: () => onSelect && onSelect(view._id),
124
+ key: view._id,
125
+ ref: viewRef
126
+ }, view.name, isSelect && /*#__PURE__*/React.createElement("div", {
127
+ className: "sea-metadata-view-item-operation-down",
128
+ onClick: openDropdownMenu
129
+ }, /*#__PURE__*/React.createElement(_icons.default, {
130
+ symbol: "down"
131
+ })))), isShowDeleteConfirmationDialog && /*#__PURE__*/React.createElement(_commonOperationConfirmationDialog.default, {
132
+ toggleDialog: closeDeleteConfirmationDialog,
133
+ title: _translate.default.gettext('Delete view'),
134
+ message: _translate.default.gettext('Are you sure you want to delete view {placeholder} ?').replace('{placeholder}', `<b>${view.name}</b>`),
135
+ confirmBtnText: _translate.default.gettext('Delete'),
136
+ executeOperation: () => onDelete(view._id)
137
+ }), isShowDropdownMenu && /*#__PURE__*/React.createElement(_modalPortal.default, null, /*#__PURE__*/React.createElement(_clickOutside.default, {
138
+ onClickOutside: closeDropdown
139
+ }, /*#__PURE__*/React.createElement("div", {
140
+ className: "sea-qa-dropdown-menu dropdown-menu position-fixed sea-metadata-view-dropdown-menu",
141
+ style: menuStyle.current
142
+ }, modifyAble && /*#__PURE__*/React.createElement("button", {
143
+ onClick: handleModify,
144
+ className: "dropdown-item sea-qa-dropdown-item"
145
+ }, /*#__PURE__*/React.createElement(_icons.default, {
146
+ symbol: "rename"
147
+ }), _translate.default.gettext('Rename view')), duplicateAble && /*#__PURE__*/React.createElement("button", {
148
+ onClick: handleDuplicate,
149
+ className: "dropdown-item sea-qa-dropdown-item"
150
+ }, /*#__PURE__*/React.createElement(_icons.default, {
151
+ symbol: "copy"
152
+ }), _translate.default.gettext('Duplicate view')), deleteAble && /*#__PURE__*/React.createElement("button", {
153
+ onClick: openDeleteConfirmationDialog,
154
+ className: "dropdown-item sea-qa-dropdown-item"
155
+ }, /*#__PURE__*/React.createElement(_icons.default, {
156
+ symbol: "delete"
157
+ }), _translate.default.gettext('Delete view'))))));
158
+ };
159
+ var _default = exports.default = ViewItem;
@@ -66,7 +66,5 @@ const EVENT_BUS_TYPE = exports.EVENT_BUS_TYPE = {
66
66
  START_SEARCH_ROWS: 'start_search_rows',
67
67
  CLEAR_SEARCH_ROWS: 'clear_search_rows',
68
68
  RE_SEARCH_ROWS: 're_search_rows',
69
- DISPLAY_SORTS: 'display_sorts',
70
- // card
71
- UPDATE_SELECTED_RECORD_IDS: 'update_selected_record_ids'
69
+ DISPLAY_SORTS: 'display_sorts'
72
70
  };
@@ -17,7 +17,6 @@ var _exportNames = {
17
17
  VIEW_SORT_COLUMN_RULES: true,
18
18
  VIEW_FIRST_SORT_COLUMN_RULES: true,
19
19
  KANBAN_SETTINGS_KEYS: true,
20
- CARD_SETTINGS_KEYS: true,
21
20
  VIEW_DEFAULT_SETTINGS: true,
22
21
  VIEW_PROPERTY_KEYS: true,
23
22
  VIEW_INCOMPATIBLE_PROPERTIES: true,
@@ -25,8 +24,7 @@ var _exportNames = {
25
24
  VIEW_TOOL: true,
26
25
  VIEW_TOOLS: true
27
26
  };
28
- 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;
29
- var _column = require("../column");
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
28
  var _filter = require("../filter");
31
29
  var _sort = require("../sort");
32
30
  var _gallery = require("./gallery");
@@ -73,8 +71,7 @@ const VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_VIEW = 'view';
73
71
  const VIEW_TYPE = exports.VIEW_TYPE = {
74
72
  TABLE: 'table',
75
73
  GALLERY: 'gallery',
76
- KANBAN: 'kanban',
77
- CARD: 'card'
74
+ KANBAN: 'kanban'
78
75
  };
79
76
  const FACE_RECOGNITION_VIEW_ID = exports.FACE_RECOGNITION_VIEW_ID = '_face_recognition';
80
77
  const VIEW_TYPE_ICON = exports.VIEW_TYPE_ICON = {
@@ -96,19 +93,6 @@ const VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER =
96
93
  filter_predicate: _filter.FILTER_PREDICATE_TYPE.HAS_ANY_OF,
97
94
  filter_term: []
98
95
  }],
99
- [VIEW_TYPE.CARD]: [{
100
- column_key: _column.PRIVATE_COLUMN_KEY.IS_DIR,
101
- filter_predicate: _filter.FILTER_PREDICATE_TYPE.IS,
102
- filter_term: 'file'
103
- }, {
104
- column_key: _column.PRIVATE_COLUMN_KEY.FILE_TYPE,
105
- filter_predicate: _filter.FILTER_PREDICATE_TYPE.IS_ANY_OF,
106
- filter_term: []
107
- }, {
108
- column_key: _column.PRIVATE_COLUMN_KEY.TAGS,
109
- filter_predicate: _filter.FILTER_PREDICATE_TYPE.HAS_ALL_OF,
110
- filter_term: []
111
- }],
112
96
  [VIEW_TYPE.GALLERY]: [],
113
97
  [VIEW_TYPE.KANBAN]: []
114
98
  };
@@ -119,13 +103,11 @@ const VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_SORTS = {
119
103
  };
120
104
  const VIEW_SORT_COLUMN_RULES = exports.VIEW_SORT_COLUMN_RULES = {
121
105
  [VIEW_TYPE.TABLE]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able,
122
- [VIEW_TYPE.CARD]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
123
106
  [VIEW_TYPE.GALLERY]: column => _sort.GALLERY_SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able,
124
107
  [VIEW_TYPE.KANBAN]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able
125
108
  };
126
109
  const VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_FIRST_SORT_COLUMN_RULES = {
127
110
  [VIEW_TYPE.TABLE]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
128
- [VIEW_TYPE.CARD]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
129
111
  [VIEW_TYPE.GALLERY]: column => _sort.GALLERY_FIRST_SORT_COLUMN_OPTIONS.includes(column.type),
130
112
  [VIEW_TYPE.KANBAN]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type)
131
113
  };
@@ -137,12 +119,6 @@ const KANBAN_SETTINGS_KEYS = exports.KANBAN_SETTINGS_KEYS = {
137
119
  TEXT_WRAP: 'text_wrap',
138
120
  COLUMNS: 'columns' // display and order
139
121
  };
140
- const CARD_SETTINGS_KEYS = exports.CARD_SETTINGS_KEYS = {
141
- HIDE_EMPTY_VALUE: 'hide_empty_value',
142
- SHOW_COLUMN_NAME: 'show_column_name',
143
- TEXT_WRAP: 'text_wrap',
144
- COLUMNS: 'columns' // display and order
145
- };
146
122
  const VIEW_DEFAULT_SETTINGS = exports.VIEW_DEFAULT_SETTINGS = {
147
123
  [VIEW_TYPE.TABLE]: {},
148
124
  [VIEW_TYPE.GALLERY]: {},
@@ -153,12 +129,6 @@ const VIEW_DEFAULT_SETTINGS = exports.VIEW_DEFAULT_SETTINGS = {
153
129
  [KANBAN_SETTINGS_KEYS.SHOW_COLUMN_NAME]: false,
154
130
  [KANBAN_SETTINGS_KEYS.TEXT_WRAP]: false,
155
131
  [KANBAN_SETTINGS_KEYS.COLUMNS]: []
156
- },
157
- [VIEW_TYPE.CARD]: {
158
- [CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE]: false,
159
- [CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME]: false,
160
- [CARD_SETTINGS_KEYS.TEXT_WRAP]: false,
161
- [CARD_SETTINGS_KEYS.COLUMNS]: []
162
132
  }
163
133
  };
164
134
  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,
28
29
  view_data
29
30
  } = settings;
30
31
  const {
31
- wiki_id: wikiID,
32
- file_repo_id: fileRepoID
32
+ view_id: viewID
33
33
  } = view_data;
34
- const localStorageName = `sf-metadata-${wikiID}-${fileRepoID}`;
34
+ const localStorageName = `sf-metadata-${repoID}-${viewID}`;
35
35
  const localStorage = new _localStorage.default(localStorageName);
36
36
  return localStorage;
37
37
  });
@@ -43,9 +43,6 @@ class Context {
43
43
  this.localStorage = null;
44
44
  this.isViewComputedOnServer = true;
45
45
  });
46
- (0, _defineProperty2.default)(this, "initViewSettings", () => {
47
- // todo;
48
- });
49
46
  (0, _defineProperty2.default)(this, "getViewSetting", function (key) {
50
47
  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
51
48
  if (_this.settings[key] === false) return _this.settings[key];
@@ -55,33 +52,6 @@ class Context {
55
52
  const viewData = this.settings['view_data'];
56
53
  return viewData.view_id;
57
54
  });
58
- (0, _defineProperty2.default)(this, "addFileRepoIdSetting", fileRepoId => {
59
- if (!fileRepoId) {
60
- throw new Error('fileRepoId is not exist');
61
- }
62
- this.settings['fileRepoId'] = fileRepoId;
63
- });
64
- (0, _defineProperty2.default)(this, "addRepoSetting", repo => {
65
- if (!repo) {
66
- throw new Error('fileRepoId is not exist');
67
- }
68
- this.settings['repoInfo'] = repo;
69
- this.settings['repoID'] = repo.repo_id;
70
- this.settings['permission'] = repo.permission;
71
- });
72
- (0, _defineProperty2.default)(this, "getFileRepoInfo", () => {
73
- if (!this.api) return null;
74
- const view_data = this.settings['view_data'];
75
- const {
76
- wiki_id,
77
- file_repo_id
78
- } = view_data;
79
- return this.api.getFileRepoInfo(wiki_id, file_repo_id);
80
- });
81
- (0, _defineProperty2.default)(this, "getRepo", repoID => {
82
- if (!this.api) return null;
83
- return this.api.getRepo(repoID);
84
- });
85
55
  (0, _defineProperty2.default)(this, "getCollaborators", () => {
86
56
  if (!this.api) return null;
87
57
  const {
@@ -96,62 +66,25 @@ class Context {
96
66
  } = this.settings;
97
67
  return this.api.getTags(repoID);
98
68
  });
99
- // metadata
100
- (0, _defineProperty2.default)(this, "getMetadata", params => {
101
- if (!this.api) return null;
102
- const {
103
- view_data
104
- } = this.settings;
105
- const {
106
- wiki_id,
107
- file_repo_id
108
- } = view_data;
109
- const newParams = {
110
- ...params,
111
- wiki_id,
112
- file_repo_id
113
- };
114
- return this.api.getMetadata(newParams);
115
- });
116
69
  // view
70
+ (0, _defineProperty2.default)(this, "getViews", () => {
71
+ return this.api.getViews();
72
+ });
117
73
  (0, _defineProperty2.default)(this, "getView", viewId => {
118
74
  if (!this.api) return null;
119
75
  const {
120
76
  view_data
121
77
  } = this.settings;
122
- return this.api.getView({
123
- ...view_data,
124
- view_id: viewId
125
- });
126
- });
127
- (0, _defineProperty2.default)(this, "insertView", viewData => {
128
- const {
129
- view_data
130
- } = this.settings;
131
- const {
132
- wiki_id,
133
- file_repo_id
134
- } = view_data;
135
- return this.api.insertView(wiki_id, file_repo_id, viewData);
136
- });
137
- (0, _defineProperty2.default)(this, "deleteView", viewID => {
138
- return this.api.deleteView(viewID);
78
+ return this.api.getView(view_data);
139
79
  });
140
- (0, _defineProperty2.default)(this, "modifyView", (viewId, viewData) => {
80
+ // metadata
81
+ (0, _defineProperty2.default)(this, "getMetadata", params => {
82
+ if (!this.api) return null;
141
83
  const {
142
84
  view_data
143
85
  } = this.settings;
144
- const {
145
- wiki_id,
146
- file_repo_id
147
- } = view_data;
148
- return this.api.modifyView(wiki_id, file_repo_id, viewId, viewData);
149
- });
150
- (0, _defineProperty2.default)(this, "moveView", (sourceViewID, targetViewID) => {
151
- return this.api.moveView(sourceViewID, targetViewID);
152
- });
153
- (0, _defineProperty2.default)(this, "duplicateView", viewID => {
154
- return this.api.duplicateView(viewID);
86
+ params['view_data'] = view_data;
87
+ return this.api.getMetadata(params);
155
88
  });
156
89
  (0, _defineProperty2.default)(this, "getPermission", () => {
157
90
  return this.permission;
@@ -364,6 +297,28 @@ class Context {
364
297
  });
365
298
  return Promise.all(deletedRows);
366
299
  });
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
+ });
367
322
  (0, _defineProperty2.default)(this, "getRowsByIds", () => {
368
323
  // todo
369
324
  });
package/dist/database.js CHANGED
@@ -8,18 +8,22 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
- var _components = require("./common/components");
12
11
  var _viewToolbar = _interopRequireDefault(require("./components/view-toolbar"));
12
+ var _globalSettings = _interopRequireDefault(require("./global-settings"));
13
13
  var _hooks = require("./hooks");
14
+ var _appContext = require("./hooks/app-context");
15
+ var _translate = _interopRequireDefault(require("./lang/translate"));
14
16
  var _views = _interopRequireDefault(require("./views"));
15
- const Database = _ref => {
17
+ const Database = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
16
18
  let {
17
19
  settings,
18
- fixedColumnCount
20
+ fixedColumnCount = 1
19
21
  } = _ref;
20
- const {
21
- isLoading
22
- } = (0, _hooks.useMetadata)();
22
+ (0, _react.useEffect)(() => {
23
+ _translate.default.initTranslate(settings);
24
+ _globalSettings.default.initSettings(settings);
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ }, []);
23
27
  const style = (0, _react.useMemo)(() => {
24
28
  const {
25
29
  width,
@@ -34,13 +38,16 @@ const Database = _ref => {
34
38
  }
35
39
  return null;
36
40
  }, [settings.view_data]);
37
- return /*#__PURE__*/_react.default.createElement("div", {
41
+ return /*#__PURE__*/_react.default.createElement(_appContext.AppContextProvider, {
42
+ settings: settings
43
+ }, /*#__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", {
38
44
  className: (0, _classnames.default)('sea-metadata'),
39
- style: style
45
+ style: style,
46
+ ref: ref
40
47
  }, /*#__PURE__*/_react.default.createElement(_viewToolbar.default, {
41
48
  fixedColumnCount: fixedColumnCount
42
- }), /*#__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, {
49
+ }), /*#__PURE__*/_react.default.createElement(_views.default, {
43
50
  fixedColumnCount: fixedColumnCount
44
- }))));
45
- };
51
+ }))))))));
52
+ });
46
53
  var _default = exports.default = Database;
@@ -29,9 +29,7 @@ class GlobalSettings {
29
29
  lang: settings.lang,
30
30
  thumbnailSizeForOriginal: settings.thumbnailSizeForOriginal,
31
31
  thumbnailDefaultSize: settings.thumbnailDefaultSize,
32
- isDevelopment: settings.isDevelopment,
33
- enableThumbnailServer: settings.enableThumbnailServer,
34
- enableSeadoc: settings.enableSeadoc
32
+ isDevelopment: settings.isDevelopment
35
33
  };
36
34
  }
37
35
  static getSetting(key) {
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.useFileRepoContext = exports.FileRepoContextProvider = void 0;
8
+ exports.useAppContext = exports.AppContextProvider = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _jsCookie = _interopRequireDefault(require("js-cookie"));
11
11
  var _api = _interopRequireDefault(require("../api/api"));
@@ -14,7 +14,7 @@ var _eventBus = _interopRequireDefault(require("../common/utils/event-bus"));
14
14
  var _context = _interopRequireDefault(require("../context"));
15
15
  /* eslint-disable react/prop-types */
16
16
 
17
- const FileRepoContext = /*#__PURE__*/_react.default.createContext(null);
17
+ const AppContext = /*#__PURE__*/_react.default.createContext(null);
18
18
  const initAPI = settings => {
19
19
  return new Promise((resolve, reject) => {
20
20
  const seafileAPI = new _api.default();
@@ -48,34 +48,30 @@ const initAPI = settings => {
48
48
  }
49
49
  });
50
50
  };
51
- const FileRepoContextProvider = _ref => {
51
+ const AppContextProvider = _ref => {
52
52
  let {
53
53
  settings,
54
54
  children
55
55
  } = _ref;
56
56
  const [isInit, setIsInit] = (0, _react.useState)(true);
57
57
  const [context, setContext] = (0, _react.useState)(null);
58
- const [fileRepo, setFileRepo] = (0, _react.useState)(null);
59
58
  (0, _react.useEffect)(() => {
60
59
  const initContext = async () => {
61
60
  const eventBus = new _eventBus.default();
62
61
  const api = await initAPI(settings);
63
- // const { repoID } = settings;
64
- // const res = await api.getRepoInfo(repoID);
65
- // const repo = res.data;
66
- // const newSettings = {
67
- // ...settings,
68
- // permission: repo.permission, // TODO
69
- // repoInfo: repo,
70
- // };
71
- const context = new _context.default(settings, eventBus, api);
72
- const result = await context.getFileRepoInfo();
73
62
  const {
74
- file_repo
75
- } = result.data;
76
- context.addFileRepoIdSetting(file_repo.id);
63
+ repoID
64
+ } = settings;
65
+ const res = await api.getRepoInfo(repoID);
66
+ const repo = res.data;
67
+ const newSettings = {
68
+ ...settings,
69
+ permission: repo.permission,
70
+ // TODO
71
+ repoInfo: repo
72
+ };
73
+ const context = new _context.default(newSettings, eventBus, api);
77
74
  setContext(context);
78
- setFileRepo(file_repo);
79
75
  setIsInit(false);
80
76
  };
81
77
  initContext();
@@ -86,19 +82,18 @@ const FileRepoContextProvider = _ref => {
86
82
  className: 'sea-metadata'
87
83
  }, /*#__PURE__*/_react.default.createElement(_components.CenteredLoading, null));
88
84
  }
89
- return /*#__PURE__*/_react.default.createElement(FileRepoContext.Provider, {
85
+ return /*#__PURE__*/_react.default.createElement(AppContext.Provider, {
90
86
  value: {
91
- context,
92
- fileRepo
87
+ context
93
88
  }
94
89
  }, children);
95
90
  };
96
- exports.FileRepoContextProvider = FileRepoContextProvider;
97
- const useFileRepoContext = () => {
98
- const context = (0, _react.useContext)(FileRepoContext);
91
+ exports.AppContextProvider = AppContextProvider;
92
+ const useAppContext = () => {
93
+ const context = (0, _react.useContext)(AppContext);
99
94
  if (!context) {
100
95
  throw new Error('\'AppContext\' is null');
101
96
  }
102
97
  return context;
103
98
  };
104
- exports.useFileRepoContext = useFileRepoContext;
99
+ exports.useAppContext = useAppContext;