@seafile/seafile-editor 3.0.7 → 3.0.8-alpha.1
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/dist/constants/event-types.js +1 -0
- package/dist/containers/side-panel/article-info.js +22 -0
- package/dist/containers/side-panel/comment.js +22 -0
- package/dist/containers/{article-info → side-panel}/index.js +33 -27
- package/dist/containers/{article-info → side-panel}/style.css +4 -4
- package/dist/editors/slate-editor/editor-help/index.js +36 -10
- package/dist/extension/toolbar/header-toolbar/insert-toolbar/style.css +3 -2
- package/package.json +1 -1
- /package/dist/containers/{article-info → side-panel}/resize-width/index.css +0 -0
- /package/dist/containers/{article-info → side-panel}/resize-width/index.js +0 -0
|
@@ -18,6 +18,7 @@ const INTERNAL_EVENTS = exports.INTERNAL_EVENTS = {
|
|
|
18
18
|
const EXTERNAL_EVENTS = exports.EXTERNAL_EVENTS = {
|
|
19
19
|
ON_HELP_INFO_TOGGLE: 'on_help_info_toggle',
|
|
20
20
|
ON_ARTICLE_INFO_TOGGLE: 'on_article_info_toggle',
|
|
21
|
+
ON_COMMENT_PANEL_TOGGLE: 'on_comment_panel_toggle',
|
|
21
22
|
ON_LINK_CLICK: 'on_link_click',
|
|
22
23
|
ON_INSERT_IMAGE: 'on_insert_image',
|
|
23
24
|
INSERT_ATTACHMENTS: 'insert_attachments',
|
|
@@ -0,0 +1,22 @@
|
|
|
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 = _interopRequireDefault(require("react"));
|
|
9
|
+
var _ = _interopRequireDefault(require("."));
|
|
10
|
+
var _eventTypes = require("../../constants/event-types");
|
|
11
|
+
const ArticleInfo = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
isVisible
|
|
14
|
+
} = _ref;
|
|
15
|
+
return /*#__PURE__*/_react.default.createElement(_.default, {
|
|
16
|
+
isVisible: isVisible,
|
|
17
|
+
eventType: _eventTypes.EXTERNAL_EVENTS.ON_ARTICLE_INFO_TOGGLE,
|
|
18
|
+
storageKey: "panelWidth",
|
|
19
|
+
containerClassName: "sf-article-info-container"
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var _default = exports.default = ArticleInfo;
|
|
@@ -0,0 +1,22 @@
|
|
|
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 = _interopRequireDefault(require("react"));
|
|
9
|
+
var _ = _interopRequireDefault(require("."));
|
|
10
|
+
var _eventTypes = require("../../constants/event-types");
|
|
11
|
+
const CommentPanel = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
isVisible
|
|
14
|
+
} = _ref;
|
|
15
|
+
return /*#__PURE__*/_react.default.createElement(_.default, {
|
|
16
|
+
isVisible: isVisible,
|
|
17
|
+
eventType: _eventTypes.EXTERNAL_EVENTS.ON_COMMENT_PANEL_TOGGLE,
|
|
18
|
+
storageKey: "panelWidth",
|
|
19
|
+
containerClassName: "sf-comment-panel-container"
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var _default = exports.default = CommentPanel;
|
|
@@ -14,12 +14,15 @@ var _eventTypes = require("../../constants/event-types");
|
|
|
14
14
|
require("./style.css");
|
|
15
15
|
const MIN_PANEL_WIDTH = 360;
|
|
16
16
|
const MAX_PANEL_WIDTH = 620;
|
|
17
|
-
const
|
|
17
|
+
const SidePanel = _ref => {
|
|
18
18
|
let {
|
|
19
|
-
isVisible
|
|
19
|
+
isVisible,
|
|
20
|
+
eventType,
|
|
21
|
+
storageKey,
|
|
22
|
+
containerClassName
|
|
20
23
|
} = _ref;
|
|
21
24
|
const [width, setWidth] = (0, _react.useState)(MIN_PANEL_WIDTH);
|
|
22
|
-
const [
|
|
25
|
+
const [config, setConfig] = (0, _react.useState)({});
|
|
23
26
|
const containerWrapperStyle = (0, _react.useMemo)(() => {
|
|
24
27
|
const style = {
|
|
25
28
|
width,
|
|
@@ -33,48 +36,46 @@ const ArticleInfo = _ref => {
|
|
|
33
36
|
}
|
|
34
37
|
return style;
|
|
35
38
|
}, [width, isVisible]);
|
|
36
|
-
const resizeWidth = (0, _react.useCallback)(
|
|
37
|
-
if (
|
|
38
|
-
setWidth(
|
|
39
|
+
const resizeWidth = (0, _react.useCallback)(newWidth => {
|
|
40
|
+
if (newWidth >= MIN_PANEL_WIDTH && newWidth <= MAX_PANEL_WIDTH) {
|
|
41
|
+
setWidth(newWidth);
|
|
39
42
|
}
|
|
40
43
|
}, []);
|
|
41
|
-
const resizeWidthEnd = (0, _react.useCallback)(
|
|
44
|
+
const resizeWidthEnd = (0, _react.useCallback)(newWidth => {
|
|
42
45
|
const settings = JSON.parse(window.localStorage.getItem('sf-editor') || '{}');
|
|
43
46
|
window.localStorage.setItem('sf-editor', JSON.stringify((0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
|
|
44
|
-
|
|
47
|
+
[storageKey]: newWidth
|
|
45
48
|
})));
|
|
46
49
|
const eventBus = _eventBus.default.getInstance();
|
|
47
50
|
eventBus.dispatch(_eventTypes.INTERNAL_EVENTS.RESIZE_ARTICLE);
|
|
48
|
-
}, []);
|
|
51
|
+
}, [storageKey]);
|
|
49
52
|
(0, _react.useEffect)(() => {
|
|
50
|
-
const settings = JSON.parse(window.localStorage.getItem('sf-editor'
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
} = settings;
|
|
54
|
-
const width = Math.max(MIN_PANEL_WIDTH, Math.min(parseInt(panelWidth, 10) || MIN_PANEL_WIDTH, MAX_PANEL_WIDTH));
|
|
53
|
+
const settings = JSON.parse(window.localStorage.getItem('sf-editor') || '{}');
|
|
54
|
+
const storedWidth = settings[storageKey];
|
|
55
|
+
const width = Math.max(MIN_PANEL_WIDTH, Math.min(parseInt(storedWidth, 10) || MIN_PANEL_WIDTH, MAX_PANEL_WIDTH));
|
|
55
56
|
setWidth(width);
|
|
56
|
-
}, []);
|
|
57
|
-
const
|
|
58
|
-
|
|
57
|
+
}, [storageKey]);
|
|
58
|
+
const handleConfig = (0, _react.useCallback)(configData => {
|
|
59
|
+
setConfig(configData);
|
|
59
60
|
}, []);
|
|
60
61
|
(0, _react.useEffect)(() => {
|
|
61
62
|
const eventBus = _eventBus.default.getInstance();
|
|
62
|
-
const
|
|
63
|
+
const unsubscribePanel = eventBus.subscribe(eventType, handleConfig);
|
|
63
64
|
return () => {
|
|
64
|
-
|
|
65
|
+
unsubscribePanel();
|
|
65
66
|
};
|
|
66
67
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
68
|
}, []);
|
|
68
69
|
(0, _react.useEffect)(() => {
|
|
69
70
|
const eventBus = _eventBus.default.getInstance();
|
|
70
71
|
eventBus.dispatch(_eventTypes.INTERNAL_EVENTS.RESIZE_ARTICLE);
|
|
71
|
-
}, [isVisible,
|
|
72
|
+
}, [isVisible, config]);
|
|
72
73
|
const {
|
|
73
|
-
component:
|
|
74
|
-
props:
|
|
75
|
-
} =
|
|
74
|
+
component: panelComponent,
|
|
75
|
+
props: panelProps
|
|
76
|
+
} = config || {};
|
|
76
77
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
77
|
-
className: "sf-
|
|
78
|
+
className: "sf-panel-wrapper",
|
|
78
79
|
style: containerWrapperStyle
|
|
79
80
|
}, /*#__PURE__*/_react.default.createElement(_resizeWidth.default, {
|
|
80
81
|
minWidth: MIN_PANEL_WIDTH,
|
|
@@ -82,12 +83,17 @@ const ArticleInfo = _ref => {
|
|
|
82
83
|
resizeWidth: resizeWidth,
|
|
83
84
|
resizeWidthEnd: resizeWidthEnd
|
|
84
85
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
85
|
-
className: "sf-
|
|
86
|
+
className: "sf-panel-container ".concat(containerClassName),
|
|
86
87
|
style: {
|
|
87
88
|
width
|
|
88
89
|
}
|
|
89
|
-
},
|
|
90
|
+
}, panelComponent && panelProps && /*#__PURE__*/_react.default.createElement(panelComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, panelProps), {}, {
|
|
90
91
|
width
|
|
91
92
|
}))));
|
|
92
93
|
};
|
|
93
|
-
|
|
94
|
+
SidePanel.defaultProps = {
|
|
95
|
+
eventType: _eventTypes.EXTERNAL_EVENTS.ON_ARTICLE_INFO_TOGGLE,
|
|
96
|
+
storageKey: 'panelWidth',
|
|
97
|
+
containerClassName: 'sf-article-info-container'
|
|
98
|
+
};
|
|
99
|
+
var _default = exports.default = SidePanel;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.sf-
|
|
1
|
+
.sf-panel-wrapper {
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: row;
|
|
4
4
|
max-width: 620px;
|
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
height: 100%;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.sf-
|
|
10
|
+
.sf-panel-container {
|
|
11
11
|
height: 100%;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
.sf-
|
|
14
|
+
.sf-panel-container[style*="display: none"] {
|
|
15
15
|
opacity: 0;
|
|
16
16
|
pointer-events: none;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
.sf-
|
|
19
|
+
.sf-panel-container[style*="display: block"] {
|
|
20
20
|
opacity: 1;
|
|
21
21
|
pointer-events: auto;
|
|
22
22
|
}
|
|
@@ -11,7 +11,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
11
11
|
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
12
12
|
var _eventTypes = require("../../../constants/event-types");
|
|
13
13
|
var _hotkeysHelper = _interopRequireDefault(require("../../../containers/hotkeys-helper"));
|
|
14
|
-
var _articleInfo = _interopRequireDefault(require("../../../containers/article-info"));
|
|
14
|
+
var _articleInfo = _interopRequireDefault(require("../../../containers/side-panel/article-info"));
|
|
15
|
+
var _comment = _interopRequireDefault(require("../../../containers/side-panel/comment"));
|
|
15
16
|
require("./style.css");
|
|
16
17
|
function EditorHelp(_ref) {
|
|
17
18
|
let {
|
|
@@ -19,32 +20,57 @@ function EditorHelp(_ref) {
|
|
|
19
20
|
} = _ref;
|
|
20
21
|
const [isShowHelpInfo, setIsShowHelpInfo] = (0, _react.useState)(false);
|
|
21
22
|
const [isShowArticleInfo, setIsShowArticleInfo] = (0, _react.useState)(false);
|
|
22
|
-
const
|
|
23
|
-
|
|
23
|
+
const [isShowCommentPanel, setIsShowCommentPanel] = (0, _react.useState)(false);
|
|
24
|
+
const closeAllPanels = (0, _react.useCallback)(() => {
|
|
24
25
|
setIsShowHelpInfo(false);
|
|
25
|
-
}, []);
|
|
26
|
-
const updateHelpInfoState = (0, _react.useCallback)(state => {
|
|
27
|
-
setIsShowHelpInfo(state);
|
|
28
26
|
setIsShowArticleInfo(false);
|
|
27
|
+
setIsShowCommentPanel(false);
|
|
29
28
|
const eventBus = _eventBus.default.getInstance();
|
|
30
29
|
eventBus.dispatch(_eventTypes.INTERNAL_EVENTS.RESIZE_ARTICLE);
|
|
31
30
|
}, []);
|
|
31
|
+
const updateArticleInfoState = (0, _react.useCallback)(details => {
|
|
32
|
+
if (details === null) {
|
|
33
|
+
setIsShowArticleInfo(false);
|
|
34
|
+
} else {
|
|
35
|
+
closeAllPanels();
|
|
36
|
+
setIsShowArticleInfo(true);
|
|
37
|
+
}
|
|
38
|
+
}, [closeAllPanels]);
|
|
39
|
+
const updateHelpInfoState = (0, _react.useCallback)(state => {
|
|
40
|
+
if (isShowHelpInfo && state === false) {
|
|
41
|
+
setIsShowHelpInfo(false);
|
|
42
|
+
} else if (!isShowHelpInfo && state !== false) {
|
|
43
|
+
closeAllPanels();
|
|
44
|
+
setIsShowHelpInfo(true);
|
|
45
|
+
}
|
|
46
|
+
}, [isShowHelpInfo, closeAllPanels]);
|
|
47
|
+
const updateCommentPanelState = (0, _react.useCallback)(config => {
|
|
48
|
+
if (config === null) {
|
|
49
|
+
setIsShowCommentPanel(false);
|
|
50
|
+
} else {
|
|
51
|
+
closeAllPanels();
|
|
52
|
+
setIsShowCommentPanel(true);
|
|
53
|
+
}
|
|
54
|
+
}, [closeAllPanels]);
|
|
32
55
|
(0, _react.useEffect)(() => {
|
|
33
56
|
const eventBus = _eventBus.default.getInstance();
|
|
34
57
|
const unsubscribeArticleInfo = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.ON_ARTICLE_INFO_TOGGLE, updateArticleInfoState);
|
|
35
58
|
const unsubscribeHelpInfo = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.ON_HELP_INFO_TOGGLE, updateHelpInfoState);
|
|
59
|
+
const unsubscribeCommentPanel = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.ON_COMMENT_PANEL_TOGGLE, updateCommentPanelState);
|
|
36
60
|
return () => {
|
|
37
61
|
unsubscribeHelpInfo();
|
|
38
62
|
unsubscribeArticleInfo();
|
|
63
|
+
unsubscribeCommentPanel();
|
|
39
64
|
};
|
|
40
|
-
|
|
41
|
-
}, [updateArticleInfoState, updateHelpInfoState]);
|
|
65
|
+
}, [updateArticleInfoState, updateHelpInfoState, updateCommentPanelState]);
|
|
42
66
|
const containerClass = (0, _classnames.default)('sf-markdown-help-wrapper', {
|
|
43
|
-
'active': isShowArticleInfo || isShowHelpInfo
|
|
67
|
+
'active': isShowArticleInfo || isShowHelpInfo || isShowCommentPanel
|
|
44
68
|
});
|
|
45
69
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
46
70
|
className: containerClass
|
|
47
71
|
}, /*#__PURE__*/_react.default.createElement(_articleInfo.default, {
|
|
48
72
|
isVisible: isShowArticleInfo
|
|
49
|
-
}), isShowHelpInfo && /*#__PURE__*/_react.default.createElement(_hotkeysHelper.default, null)
|
|
73
|
+
}), isShowHelpInfo && /*#__PURE__*/_react.default.createElement(_hotkeysHelper.default, null), /*#__PURE__*/_react.default.createElement(_comment.default, {
|
|
74
|
+
isVisible: isShowCommentPanel
|
|
75
|
+
}));
|
|
50
76
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
.menu-group-item.sf-insert-toolbar-btn {
|
|
2
|
-
width:
|
|
2
|
+
width: 80px;
|
|
3
3
|
display: flex;
|
|
4
4
|
align-items: center;
|
|
5
5
|
justify-content: space-between;
|
|
@@ -50,7 +50,8 @@
|
|
|
50
50
|
font-size: 14px;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
.menu-group-item.sf-insert-toolbar-btn .md-arrow-down
|
|
53
|
+
.menu-group-item.sf-insert-toolbar-btn .md-arrow-down,
|
|
54
|
+
.menu-group-item.sf-insert-toolbar-btn .md-arrow-up {
|
|
54
55
|
font-size: 12px;
|
|
55
56
|
margin-right: 6px;
|
|
56
57
|
}
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|