@seafile/seafile-editor 1.0.2 → 1.0.4
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 +2 -8
- package/dist/constants/hot-keys.js +1 -7
- package/dist/containers/article-info/index.js +24 -34
- package/dist/containers/custom/get-event-transfer.js +10 -16
- package/dist/containers/custom/set-event-transfer.js +10 -16
- package/dist/containers/hotkeys-helper/classify-hotkeys.js +20 -25
- package/dist/containers/hotkeys-helper/index.js +32 -35
- package/dist/containers/loading/index.js +11 -32
- package/dist/containers/outline/index.js +41 -51
- package/dist/containers/outline/outline-item.js +15 -21
- package/dist/editors/plain-markdown-editor/code-mirror.js +51 -75
- package/dist/editors/plain-markdown-editor/index.js +90 -107
- package/dist/editors/simple-slate-editor /index.js +43 -57
- package/dist/editors/simple-slate-editor /with-props-editor.js +4 -10
- package/dist/editors/slate-editor/editor-help/index.js +24 -37
- package/dist/editors/slate-editor/index.js +50 -64
- package/dist/editors/slate-editor/with-props-editor.js +4 -10
- package/dist/editors/slate-viewer/index.js +25 -31
- package/dist/extension/commons/element-popover/index.js +30 -55
- package/dist/extension/commons/index.js +3 -26
- package/dist/extension/commons/menu/index.js +4 -21
- package/dist/extension/commons/menu/menu-drop-down.js +50 -63
- package/dist/extension/commons/menu/menu-group.js +4 -11
- package/dist/extension/commons/menu/menu-item.js +25 -30
- package/dist/extension/commons/tooltip/index.js +14 -19
- package/dist/extension/constants/element-types.js +22 -28
- package/dist/extension/constants/index.js +15 -37
- package/dist/extension/constants/keyboard.js +3 -9
- package/dist/extension/constants/menus-config.js +118 -105
- package/dist/extension/core/index.js +3 -38
- package/dist/extension/core/queries/index.js +209 -304
- package/dist/extension/core/transforms/focus-editor.js +7 -13
- package/dist/extension/core/transforms/index.js +4 -49
- package/dist/extension/core/transforms/move-children.js +18 -25
- package/dist/extension/core/transforms/remove-node-children.js +8 -27
- package/dist/extension/core/transforms/replace-node-children.js +14 -19
- package/dist/extension/core/utils/index.js +36 -44
- package/dist/extension/editor.js +8 -15
- package/dist/extension/index.js +7 -48
- package/dist/extension/plugins/blockquote/helpers.js +38 -57
- package/dist/extension/plugins/blockquote/index.js +8 -15
- package/dist/extension/plugins/blockquote/menu/index.js +20 -25
- package/dist/extension/plugins/blockquote/plugin.js +35 -41
- package/dist/extension/plugins/blockquote/render-elem.js +9 -14
- package/dist/extension/plugins/check-list/helper.js +14 -24
- package/dist/extension/plugins/check-list/index.js +10 -17
- package/dist/extension/plugins/check-list/menu/index.js +21 -29
- package/dist/extension/plugins/check-list/plugin.js +24 -26
- package/dist/extension/plugins/check-list/render-elem.js +22 -28
- package/dist/extension/plugins/clear-format/helpers.js +25 -47
- package/dist/extension/plugins/clear-format/menu/index.js +22 -29
- package/dist/extension/plugins/code-block/helpers.js +74 -126
- package/dist/extension/plugins/code-block/index.js +10 -18
- package/dist/extension/plugins/code-block/menu/index.js +20 -27
- package/dist/extension/plugins/code-block/plugin.js +123 -144
- package/dist/extension/plugins/code-block/render-elem/constant.js +15 -11
- package/dist/extension/plugins/code-block/render-elem/index.js +30 -39
- package/dist/extension/plugins/code-block/render-elem/language-selector.js +19 -27
- package/dist/extension/plugins/formula/helper.js +39 -45
- package/dist/extension/plugins/formula/index.js +10 -17
- package/dist/extension/plugins/formula/menu/formula-modal.js +37 -52
- package/dist/extension/plugins/formula/menu/index.js +34 -50
- package/dist/extension/plugins/formula/plugin.js +12 -14
- package/dist/extension/plugins/formula/render-elem.js +27 -33
- package/dist/extension/plugins/header/helper.js +35 -48
- package/dist/extension/plugins/header/index.js +10 -17
- package/dist/extension/plugins/header/menu/index.js +52 -66
- package/dist/extension/plugins/header/plugin.js +72 -83
- package/dist/extension/plugins/header/render-elem.js +15 -20
- package/dist/extension/plugins/image/helper.js +28 -37
- package/dist/extension/plugins/image/index.js +10 -17
- package/dist/extension/plugins/image/menu/image-menu-dialog.js +31 -42
- package/dist/extension/plugins/image/menu/image-menu-popover.js +35 -67
- package/dist/extension/plugins/image/menu/index.js +24 -34
- package/dist/extension/plugins/image/plugin.js +18 -18
- package/dist/extension/plugins/image/render-element/image-previewer.js +32 -42
- package/dist/extension/plugins/image/render-element/index.js +58 -74
- package/dist/extension/plugins/index.js +18 -94
- package/dist/extension/plugins/link/helper.js +102 -139
- package/dist/extension/plugins/link/index.js +10 -17
- package/dist/extension/plugins/link/menu/index.js +46 -62
- package/dist/extension/plugins/link/menu/link-modal.js +67 -87
- package/dist/extension/plugins/link/plugin.js +52 -56
- package/dist/extension/plugins/link/render-elem/index.js +39 -54
- package/dist/extension/plugins/link/render-elem/link-popover.js +38 -42
- package/dist/extension/plugins/list/constant.js +2 -8
- package/dist/extension/plugins/list/helpers.js +40 -54
- package/dist/extension/plugins/list/index.js +10 -17
- package/dist/extension/plugins/list/menu/index.js +23 -33
- package/dist/extension/plugins/list/plugin/index.js +28 -31
- package/dist/extension/plugins/list/plugin/insert-break-list.js +9 -15
- package/dist/extension/plugins/list/plugin/insert-fragment-list.js +86 -109
- package/dist/extension/plugins/list/plugin/normalize-list.js +31 -42
- package/dist/extension/plugins/list/plugin/on-tab-handle.js +35 -34
- package/dist/extension/plugins/list/queries/index.js +22 -30
- package/dist/extension/plugins/list/render-elem/index.js +27 -27
- package/dist/extension/plugins/list/transforms/index.js +11 -75
- package/dist/extension/plugins/list/transforms/insert-list-item.js +38 -47
- package/dist/extension/plugins/list/transforms/move-list-item-down.js +22 -32
- package/dist/extension/plugins/list/transforms/move-list-item-up.js +45 -56
- package/dist/extension/plugins/list/transforms/move-list-items-to-list.js +25 -31
- package/dist/extension/plugins/list/transforms/move-list-items.js +37 -44
- package/dist/extension/plugins/list/transforms/normalize-list-item.js +57 -81
- package/dist/extension/plugins/list/transforms/normalize-nested-list.js +17 -26
- package/dist/extension/plugins/list/transforms/remove-first-list-item.js +12 -19
- package/dist/extension/plugins/list/transforms/transforms-to-list.js +60 -84
- package/dist/extension/plugins/list/transforms/unwrap-list.js +20 -29
- package/dist/extension/plugins/node-id/constants.js +9 -15
- package/dist/extension/plugins/node-id/helpers.js +33 -35
- package/dist/extension/plugins/node-id/index.js +4 -11
- package/dist/extension/plugins/node-id/with-node-id.js +18 -26
- package/dist/extension/plugins/paragraph/helper.js +7 -13
- package/dist/extension/plugins/paragraph/index.js +8 -15
- package/dist/extension/plugins/paragraph/plugin.js +25 -27
- package/dist/extension/plugins/paragraph/render-elem.js +9 -14
- package/dist/extension/plugins/table/constant.js +3 -9
- package/dist/extension/plugins/table/helper.js +133 -154
- package/dist/extension/plugins/table/index.js +11 -19
- package/dist/extension/plugins/table/menu/index.js +26 -38
- package/dist/extension/plugins/table/menu/table-operator.js +62 -77
- package/dist/extension/plugins/table/menu/table-size-selector.js +41 -62
- package/dist/extension/plugins/table/model.js +39 -41
- package/dist/extension/plugins/table/plugin.js +95 -102
- package/dist/extension/plugins/table/render-elem/context-menu.js +42 -65
- package/dist/extension/plugins/table/render-elem/index.js +85 -93
- package/dist/extension/plugins/table/table-operations.js +101 -118
- package/dist/extension/plugins/text-style/helpers.js +18 -28
- package/dist/extension/plugins/text-style/index.js +8 -15
- package/dist/extension/plugins/text-style/menu/index.js +19 -25
- package/dist/extension/plugins/text-style/plugin.js +16 -21
- package/dist/extension/plugins/text-style/render-elem.js +28 -33
- package/dist/extension/render/render-element.js +26 -47
- package/dist/extension/render/render-leaf.js +9 -18
- package/dist/extension/toolbar/header-toolbar/index.js +66 -84
- package/dist/extension/toolbar/index.js +2 -13
- package/dist/extension/toolbar/user-help/shortcut-dialog.js +108 -131
- package/dist/hooks/use-mathjax.js +9 -20
- package/dist/hooks/use-scroll-context.js +7 -12
- package/dist/hooks/use-selection-update.js +9 -21
- package/dist/index.js +9 -80
- package/dist/pages/markdown-editor.js +30 -43
- package/dist/pages/markdown-view.js +25 -37
- package/dist/pages/rich-markdown-editor.js +54 -67
- package/dist/pages/simple-editor.js +29 -42
- package/dist/slate-convert/html-to-slate/constants.js +26 -32
- package/dist/slate-convert/html-to-slate/helper.js +1 -7
- package/dist/slate-convert/html-to-slate/index.js +44 -51
- package/dist/slate-convert/html-to-slate/rules/blockquote.js +10 -15
- package/dist/slate-convert/html-to-slate/rules/check-list.js +10 -15
- package/dist/slate-convert/html-to-slate/rules/code-block.js +40 -51
- package/dist/slate-convert/html-to-slate/rules/header.js +11 -16
- package/dist/slate-convert/html-to-slate/rules/image.js +10 -15
- package/dist/slate-convert/html-to-slate/rules/index.js +11 -18
- package/dist/slate-convert/html-to-slate/rules/link.js +11 -16
- package/dist/slate-convert/html-to-slate/rules/list.js +21 -26
- package/dist/slate-convert/html-to-slate/rules/paragraph.js +10 -15
- package/dist/slate-convert/html-to-slate/rules/table.js +14 -19
- package/dist/slate-convert/html-to-slate/rules/text.js +14 -19
- package/dist/slate-convert/index.js +8 -34
- package/dist/slate-convert/md-to-html/index.js +26 -31
- package/dist/slate-convert/md-to-html/sanitize-schema.js +5 -12
- package/dist/slate-convert/md-to-slate/index.js +17 -23
- package/dist/slate-convert/md-to-slate/transform.js +183 -175
- package/dist/slate-convert/slate-to-md/index.js +14 -20
- package/dist/slate-convert/slate-to-md/transform.js +76 -87
- package/dist/utils/common.js +8 -15
- package/dist/utils/deserialize-html.js +118 -166
- package/dist/utils/dom-utils.js +18 -22
- package/dist/utils/event-bus.js +27 -47
- package/dist/utils/event-handler.js +29 -38
- package/dist/utils/object-utils.js +39 -62
- package/package.json +5 -4
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.INTERNAL_EVENTS = exports.EXTERNAL_EVENTS = void 0;
|
|
7
|
-
var INTERNAL_EVENTS = exports.INTERNAL_EVENTS = {
|
|
1
|
+
export const INTERNAL_EVENTS = {
|
|
8
2
|
ON_ARTICLE_INFO_TOGGLE: 'on_article_info_toggle',
|
|
9
3
|
ON_MOUSE_ENTER_BLOCK: 'on_mouse_enter_block',
|
|
10
4
|
ON_OPEN_LINK_POPOVER: 'on_open_link_popover',
|
|
11
5
|
ON_CLOSE_LINK_POPOVER: 'on_close_link_popover',
|
|
12
6
|
ON_OPEN_FORMULA_DIALOG: 'on_open_formula_dialog'
|
|
13
7
|
};
|
|
14
|
-
|
|
8
|
+
export const EXTERNAL_EVENTS = {
|
|
15
9
|
ON_HELP_INFO_TOGGLE: 'on_help_info_toggle'
|
|
16
10
|
};
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.HELPER_HOTKEYS = void 0;
|
|
7
|
-
var HELPER_HOTKEYS = exports.HELPER_HOTKEYS = [{
|
|
1
|
+
export const HELPER_HOTKEYS = [{
|
|
8
2
|
'Make_list': [['*/-', 'space']],
|
|
9
3
|
'Make_ordered_list': [['1.', 'space']],
|
|
10
4
|
'Insert_new_item': [['Enter']],
|
|
@@ -1,57 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = ArticleInfo;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _outline = _interopRequireDefault(require("../outline"));
|
|
12
|
-
var _slateReact = require("slate-react");
|
|
13
|
-
require("./style.css");
|
|
14
|
-
var TAB_TYPES = {
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
import Outline from '../outline';
|
|
3
|
+
import { useSlateStatic } from 'slate-react';
|
|
4
|
+
import './style.css';
|
|
5
|
+
const TAB_TYPES = {
|
|
15
6
|
OUTLINE: 'outline',
|
|
16
7
|
FILE_DETAIL: 'file_detail'
|
|
17
8
|
};
|
|
18
|
-
function ArticleInfo(_ref) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var onOutlineClick = (0, _react.useCallback)(function () {
|
|
9
|
+
export default function ArticleInfo(_ref) {
|
|
10
|
+
let {
|
|
11
|
+
children
|
|
12
|
+
} = _ref;
|
|
13
|
+
const editor = useSlateStatic();
|
|
14
|
+
const [activeTab, setActiveTab] = useState(TAB_TYPES.OUTLINE);
|
|
15
|
+
const onOutlineClick = useCallback(() => {
|
|
26
16
|
if (activeTab === TAB_TYPES.OUTLINE) return;
|
|
27
17
|
setActiveTab(TAB_TYPES.OUTLINE);
|
|
28
18
|
}, [activeTab]);
|
|
29
|
-
|
|
19
|
+
const onDetailClick = useCallback(() => {
|
|
30
20
|
if (activeTab === TAB_TYPES.FILE_DETAIL) return;
|
|
31
21
|
setActiveTab(TAB_TYPES.FILE_DETAIL);
|
|
32
22
|
}, [activeTab]);
|
|
33
23
|
console.log(children);
|
|
34
|
-
return /*#__PURE__*/
|
|
24
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
35
25
|
className: "sf-article-info-container"
|
|
36
|
-
}, /*#__PURE__*/
|
|
26
|
+
}, /*#__PURE__*/React.createElement("ul", {
|
|
37
27
|
className: "sf-article-info-nav nav"
|
|
38
|
-
}, /*#__PURE__*/
|
|
28
|
+
}, /*#__PURE__*/React.createElement("li", {
|
|
39
29
|
className: "nav-item"
|
|
40
|
-
}, /*#__PURE__*/
|
|
30
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
41
31
|
className: "nav-link ".concat(activeTab === TAB_TYPES.OUTLINE && 'active'),
|
|
42
32
|
onClick: onOutlineClick
|
|
43
|
-
}, /*#__PURE__*/
|
|
33
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
44
34
|
className: "iconfont icon-list-ul"
|
|
45
|
-
}))), /*#__PURE__*/
|
|
35
|
+
}))), /*#__PURE__*/React.createElement("li", {
|
|
46
36
|
className: "nav-item"
|
|
47
|
-
}, /*#__PURE__*/
|
|
37
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
48
38
|
className: "nav-link ".concat(activeTab === TAB_TYPES.FILE_DETAIL && 'active'),
|
|
49
39
|
onClick: onDetailClick
|
|
50
|
-
}, /*#__PURE__*/
|
|
40
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
51
41
|
className: 'iconfont icon-info-circle'
|
|
52
|
-
})))), /*#__PURE__*/
|
|
42
|
+
})))), /*#__PURE__*/React.createElement("div", {
|
|
53
43
|
className: "sf-article-info-content"
|
|
54
|
-
}, activeTab === TAB_TYPES.OUTLINE && /*#__PURE__*/
|
|
44
|
+
}, activeTab === TAB_TYPES.OUTLINE && /*#__PURE__*/React.createElement(Outline, {
|
|
55
45
|
editor: editor
|
|
56
|
-
}), activeTab === TAB_TYPES.FILE_DETAIL && /*#__PURE__*/
|
|
46
|
+
}), activeTab === TAB_TYPES.FILE_DETAIL && /*#__PURE__*/React.createElement(React.Fragment, null, children)));
|
|
57
47
|
}
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var getEventTransfer = function getEventTransfer(data) {
|
|
8
|
-
var fragmentString = data.getData('application/x-slate-fragment');
|
|
9
|
-
var textContent = data.getData('text') || data.getData('text/plain') || '';
|
|
10
|
-
var fragmentContent = fragmentString ? JSON.parse(decodeURIComponent(window.atob(fragmentString))) : null;
|
|
11
|
-
var htmlContent = data.getData('text/html') || '';
|
|
12
|
-
var hasRtfContent = data.types.includes('text/rtf');
|
|
1
|
+
const getEventTransfer = data => {
|
|
2
|
+
const fragmentString = data.getData('application/x-slate-fragment');
|
|
3
|
+
const textContent = data.getData('text') || data.getData('text/plain') || '';
|
|
4
|
+
let fragmentContent = fragmentString ? JSON.parse(decodeURIComponent(window.atob(fragmentString))) : null;
|
|
5
|
+
const htmlContent = data.getData('text/html') || '';
|
|
6
|
+
const hasRtfContent = data.types.includes('text/rtf');
|
|
13
7
|
|
|
14
8
|
/**
|
|
15
9
|
* compat old version slate: if clipboard content is old version slate fragment
|
|
16
10
|
* return html content
|
|
17
11
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
const files = data.files;
|
|
13
|
+
let type = 'text';
|
|
20
14
|
// Paste rtf format content which copied from PPT or Word or Excel as text to document
|
|
21
15
|
if (hasRtfContent) {
|
|
22
16
|
type = 'text';
|
|
@@ -31,8 +25,8 @@ var getEventTransfer = function getEventTransfer(data) {
|
|
|
31
25
|
text: textContent,
|
|
32
26
|
html: htmlContent,
|
|
33
27
|
fragment: fragmentContent,
|
|
34
|
-
type
|
|
28
|
+
type,
|
|
35
29
|
files: files
|
|
36
30
|
};
|
|
37
31
|
};
|
|
38
|
-
|
|
32
|
+
export default getEventTransfer;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _slate = require("slate");
|
|
8
|
-
var TRANSFER_TYPES = {
|
|
1
|
+
import { Node } from 'slate';
|
|
2
|
+
const TRANSFER_TYPES = {
|
|
9
3
|
fragment: 'application/x-slate-fragment',
|
|
10
4
|
html: 'text/html',
|
|
11
5
|
text: 'text/plain'
|
|
@@ -13,16 +7,16 @@ var TRANSFER_TYPES = {
|
|
|
13
7
|
|
|
14
8
|
// transform slate fragment and write to clipboard
|
|
15
9
|
function setEventTransfer(event, type, content) {
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
const mime = TRANSFER_TYPES[type];
|
|
11
|
+
const transfer = event.dataTransfer || event.clipboardData;
|
|
18
12
|
if (type === 'fragment') {
|
|
19
13
|
// use the same encoding as slate
|
|
20
|
-
|
|
14
|
+
const encodedContent = window.btoa(encodeURIComponent(JSON.stringify(content)));
|
|
21
15
|
transfer.setData(mime, encodedContent);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
content.forEach(
|
|
25
|
-
textItem =
|
|
16
|
+
let texts = '';
|
|
17
|
+
let textItem = '';
|
|
18
|
+
content.forEach(element => {
|
|
19
|
+
textItem = Node.string(element).replace(/\ufeff/, '');
|
|
26
20
|
texts += textItem + '\r\n';
|
|
27
21
|
});
|
|
28
22
|
transfer.setData('text', texts);
|
|
@@ -33,4 +27,4 @@ function setEventTransfer(event, type, content) {
|
|
|
33
27
|
transfer.setData('text', content);
|
|
34
28
|
}
|
|
35
29
|
}
|
|
36
|
-
|
|
30
|
+
export default setEventTransfer;
|
|
@@ -1,38 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
function ClassifyHotkeys(_ref) {
|
|
11
|
-
var title = _ref.title,
|
|
12
|
-
shortcutData = _ref.shortcutData,
|
|
13
|
-
shortcutDataNames = _ref.shortcutDataNames;
|
|
14
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { isMac } from '../../utils/common';
|
|
3
|
+
export default function ClassifyHotkeys(_ref) {
|
|
4
|
+
let {
|
|
5
|
+
title,
|
|
6
|
+
shortcutData,
|
|
7
|
+
shortcutDataNames
|
|
8
|
+
} = _ref;
|
|
9
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
15
10
|
className: "sf-editor-classify-hotkeys"
|
|
16
|
-
}, /*#__PURE__*/
|
|
11
|
+
}, /*#__PURE__*/React.createElement("h5", {
|
|
17
12
|
className: "hotkey-type"
|
|
18
|
-
}, title), /*#__PURE__*/
|
|
13
|
+
}, title), /*#__PURE__*/React.createElement("ul", {
|
|
19
14
|
className: "hotkey-list"
|
|
20
|
-
}, Object.keys(shortcutData).map(
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
}, Object.keys(shortcutData).map(key => {
|
|
16
|
+
const shortcutName = shortcutDataNames[key];
|
|
17
|
+
let hotkeys = shortcutData[key];
|
|
23
18
|
if (hotkeys.length !== 0) {
|
|
24
|
-
hotkeys = hotkeys.length > 1 &&
|
|
19
|
+
hotkeys = hotkeys.length > 1 && isMac() ? hotkeys[1] : hotkeys[0];
|
|
25
20
|
}
|
|
26
|
-
return /*#__PURE__*/
|
|
21
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
27
22
|
className: "hotkey-shortcuts",
|
|
28
23
|
key: shortcutName
|
|
29
|
-
}, /*#__PURE__*/
|
|
24
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
30
25
|
className: "hotkey-shortcuts-left"
|
|
31
|
-
}, shortcutName), /*#__PURE__*/
|
|
26
|
+
}, shortcutName), /*#__PURE__*/React.createElement("div", {
|
|
32
27
|
className: "hotkey-shortcuts-right"
|
|
33
|
-
}, hotkeys[0] && /*#__PURE__*/
|
|
28
|
+
}, hotkeys[0] && /*#__PURE__*/React.createElement("div", {
|
|
34
29
|
className: "key hotkey-first"
|
|
35
|
-
}, hotkeys[0]), hotkeys[1] && /*#__PURE__*/
|
|
30
|
+
}, hotkeys[0]), hotkeys[1] && /*#__PURE__*/React.createElement("div", {
|
|
36
31
|
className: "key hotkey-second"
|
|
37
32
|
}, hotkeys[1])));
|
|
38
33
|
})));
|
|
@@ -1,48 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _eventTypes = require("../../constants/event-types");
|
|
14
|
-
var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
|
|
15
|
-
require("./style.css");
|
|
16
|
-
function HotkeysHelper() {
|
|
17
|
-
var _useTranslation = (0, _reactI18next.useTranslation)(),
|
|
18
|
-
t = _useTranslation.t;
|
|
19
|
-
var useHelp = t('userHelp', {
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import ClassifyHotkeys from './classify-hotkeys';
|
|
4
|
+
import { HELPER_HOTKEYS } from '../../constants/hot-keys';
|
|
5
|
+
import { EXTERNAL_EVENTS } from '../../constants/event-types';
|
|
6
|
+
import EventBus from '../../utils/event-bus';
|
|
7
|
+
import './style.css';
|
|
8
|
+
export default function HotkeysHelper() {
|
|
9
|
+
const {
|
|
10
|
+
t
|
|
11
|
+
} = useTranslation();
|
|
12
|
+
const useHelp = t('userHelp', {
|
|
20
13
|
returnObjects: true
|
|
21
14
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
const {
|
|
16
|
+
title,
|
|
17
|
+
userHelpData
|
|
18
|
+
} = useHelp;
|
|
19
|
+
const onCloseClick = useCallback(() => {
|
|
20
|
+
const eventBus = EventBus.getInstance();
|
|
21
|
+
eventBus.dispatch(EXTERNAL_EVENTS.ON_HELP_INFO_TOGGLE, false);
|
|
27
22
|
}, []);
|
|
28
|
-
return /*#__PURE__*/
|
|
23
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
29
24
|
className: "sf-editor-helper"
|
|
30
|
-
}, /*#__PURE__*/
|
|
25
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
31
26
|
className: "sf-editor-helper__header"
|
|
32
|
-
}, /*#__PURE__*/
|
|
27
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
33
28
|
className: "title"
|
|
34
|
-
}, title), /*#__PURE__*/
|
|
29
|
+
}, title), /*#__PURE__*/React.createElement("div", {
|
|
35
30
|
className: "help-close",
|
|
36
31
|
onClick: onCloseClick
|
|
37
|
-
}, /*#__PURE__*/
|
|
32
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
38
33
|
className: "iconfont icon-times-circle"
|
|
39
|
-
}))), /*#__PURE__*/
|
|
34
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
40
35
|
className: "sf-editor-helper__content"
|
|
41
|
-
}, userHelpData.map(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
}, userHelpData.map((item, index) => {
|
|
37
|
+
const shortcutData = HELPER_HOTKEYS[index];
|
|
38
|
+
const {
|
|
39
|
+
shortcutType: title,
|
|
40
|
+
shortcutData: shortcutDataNames
|
|
41
|
+
} = item;
|
|
42
|
+
return /*#__PURE__*/React.createElement(ClassifyHotkeys, {
|
|
46
43
|
key: "use-hotkey-".concat(index),
|
|
47
44
|
title: title,
|
|
48
45
|
shortcutData: shortcutData,
|
|
@@ -1,33 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
|
|
11
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createSuper"));
|
|
12
|
-
var _react = _interopRequireDefault(require("react"));
|
|
13
|
-
require("./style.css");
|
|
14
|
-
var Loading = /*#__PURE__*/function (_React$Component) {
|
|
15
|
-
(0, _inherits2.default)(Loading, _React$Component);
|
|
16
|
-
var _super = (0, _createSuper2.default)(Loading);
|
|
17
|
-
function Loading() {
|
|
18
|
-
(0, _classCallCheck2.default)(this, Loading);
|
|
19
|
-
return _super.apply(this, arguments);
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './style.css';
|
|
3
|
+
class Loading extends React.Component {
|
|
4
|
+
render() {
|
|
5
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
6
|
+
className: "empty-loading-page"
|
|
7
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
8
|
+
className: "lds-ripple page-centered"
|
|
9
|
+
}, /*#__PURE__*/React.createElement("div", null), /*#__PURE__*/React.createElement("div", null)));
|
|
20
10
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
value: function render() {
|
|
24
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
25
|
-
className: "empty-loading-page"
|
|
26
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
27
|
-
className: "lds-ripple page-centered"
|
|
28
|
-
}, /*#__PURE__*/_react.default.createElement("div", null), /*#__PURE__*/_react.default.createElement("div", null)));
|
|
29
|
-
}
|
|
30
|
-
}]);
|
|
31
|
-
return Loading;
|
|
32
|
-
}(_react.default.Component);
|
|
33
|
-
var _default = exports.default = Loading;
|
|
11
|
+
}
|
|
12
|
+
export default Loading;
|
|
@@ -1,80 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _reactI18next = require("react-i18next");
|
|
12
|
-
var _outlineItem = _interopRequireDefault(require("./outline-item"));
|
|
13
|
-
var _useScrollContext = require("../../hooks/use-scroll-context");
|
|
14
|
-
require("./style.css");
|
|
15
|
-
var getHeaderList = function getHeaderList(children) {
|
|
16
|
-
var headerList = [];
|
|
17
|
-
children.forEach(function (node) {
|
|
1
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import OutlineItem from './outline-item';
|
|
4
|
+
import { useScrollContext } from '../../hooks/use-scroll-context';
|
|
5
|
+
import './style.css';
|
|
6
|
+
const getHeaderList = children => {
|
|
7
|
+
const headerList = [];
|
|
8
|
+
children.forEach(node => {
|
|
18
9
|
if (node.type === 'header2' || node.type === 'header3') {
|
|
19
10
|
headerList.push(node);
|
|
20
11
|
}
|
|
21
12
|
});
|
|
22
13
|
return headerList;
|
|
23
14
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
setActiveId = _useState4[1];
|
|
37
|
-
(0, _react.useEffect)(function () {
|
|
38
|
-
var headerList = getHeaderList(editor.children);
|
|
15
|
+
const Outline = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
editor
|
|
18
|
+
} = _ref;
|
|
19
|
+
const {
|
|
20
|
+
t
|
|
21
|
+
} = useTranslation();
|
|
22
|
+
const scrollRef = useScrollContext();
|
|
23
|
+
const [headerList, setHeaderList] = useState([]);
|
|
24
|
+
const [activeId, setActiveId] = useState('');
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const headerList = getHeaderList(editor.children);
|
|
39
27
|
setHeaderList(headerList);
|
|
40
28
|
}, [editor.children]);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
for (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
29
|
+
const handleScroll = useCallback(e => {
|
|
30
|
+
const scrollTop = scrollRef.current.scrollTop;
|
|
31
|
+
const styles = getComputedStyle(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current);
|
|
32
|
+
const paddingTop = parseInt(styles.paddingTop);
|
|
33
|
+
for (let i = 0; i < headerList.length; i++) {
|
|
34
|
+
const headerItem = headerList[i];
|
|
35
|
+
const dom = document.getElementById(headerItem.id);
|
|
36
|
+
const {
|
|
37
|
+
offsetTop,
|
|
38
|
+
offsetHeight
|
|
39
|
+
} = dom;
|
|
40
|
+
const styles = getComputedStyle(dom);
|
|
41
|
+
const marginTop = parseInt(styles.marginTop);
|
|
52
42
|
if (offsetTop + offsetHeight + marginTop > scrollTop - paddingTop) {
|
|
53
43
|
setActiveId(headerItem.id);
|
|
54
44
|
break;
|
|
55
45
|
}
|
|
56
46
|
}
|
|
57
47
|
}, [headerList, scrollRef]);
|
|
58
|
-
|
|
59
|
-
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
let observerRefValue = null;
|
|
60
50
|
if (scrollRef.current) {
|
|
61
51
|
scrollRef.current.addEventListener('scroll', handleScroll);
|
|
62
52
|
observerRefValue = scrollRef.current;
|
|
63
53
|
}
|
|
64
|
-
return
|
|
54
|
+
return () => {
|
|
65
55
|
observerRefValue.removeEventListener('scroll', handleScroll);
|
|
66
56
|
};
|
|
67
57
|
}, [handleScroll, scrollRef]);
|
|
68
|
-
return /*#__PURE__*/
|
|
58
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
69
59
|
className: "sf-editor-outline"
|
|
70
|
-
}, headerList.length === 0 && /*#__PURE__*/
|
|
60
|
+
}, headerList.length === 0 && /*#__PURE__*/React.createElement("div", {
|
|
71
61
|
className: "empty-container"
|
|
72
|
-
}, t('No_out_line')), headerList.length > 0 && headerList.map(
|
|
73
|
-
return /*#__PURE__*/
|
|
62
|
+
}, t('No_out_line')), headerList.length > 0 && headerList.map((node, index) => {
|
|
63
|
+
return /*#__PURE__*/React.createElement(OutlineItem, {
|
|
74
64
|
key: index,
|
|
75
65
|
node: node,
|
|
76
66
|
activeId: activeId
|
|
77
67
|
});
|
|
78
68
|
}));
|
|
79
69
|
};
|
|
80
|
-
|
|
70
|
+
export default Outline;
|
|
@@ -1,30 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var node = _ref.node,
|
|
13
|
-
activeId = _ref.activeId;
|
|
14
|
-
var onItemClick = (0, _react.useCallback)(function () {
|
|
15
|
-
var id = node.id;
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
const OutlineItem = _ref => {
|
|
4
|
+
let {
|
|
5
|
+
node,
|
|
6
|
+
activeId
|
|
7
|
+
} = _ref;
|
|
8
|
+
const onItemClick = useCallback(() => {
|
|
9
|
+
const {
|
|
10
|
+
id
|
|
11
|
+
} = node;
|
|
16
12
|
document.getElementById(id).scrollIntoView();
|
|
17
13
|
}, [node]);
|
|
18
|
-
|
|
14
|
+
const className = classNames({
|
|
19
15
|
'outline-h2': node.type === 'header2',
|
|
20
16
|
'outline-h3': node.type === 'header3',
|
|
21
17
|
'active': node.id === activeId
|
|
22
18
|
});
|
|
23
|
-
return /*#__PURE__*/
|
|
19
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
24
20
|
className: className,
|
|
25
21
|
onClick: onItemClick
|
|
26
|
-
}, node.children.map(
|
|
27
|
-
return child.text;
|
|
28
|
-
}).join(''));
|
|
22
|
+
}, node.children.map(child => child.text).join(''));
|
|
29
23
|
};
|
|
30
|
-
|
|
24
|
+
export default OutlineItem;
|