@seafile/seafile-editor 2.0.30 → 2.0.31-beta
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 -1
- package/dist/editors/inline-editor/index.js +12 -7
- package/dist/editors/slate-editor/index.js +5 -2
- package/dist/extension/editor.js +3 -1
- package/dist/hooks/{use-insert-image.js → use-attachments.js} +5 -4
- package/dist/pages/longtext-inline-editor/fallback-editor.js +14 -4
- package/dist/pages/longtext-inline-editor/index.js +7 -2
- package/dist/pages/longtext-inline-editor/normal-editor.js +11 -2
- package/dist/pages/markdown-editor.js +2 -0
- package/dist/pages/simple-editor.js +11 -4
- package/package.json +1 -1
|
@@ -20,6 +20,6 @@ const EXTERNAL_EVENTS = exports.EXTERNAL_EVENTS = {
|
|
|
20
20
|
ON_ARTICLE_INFO_TOGGLE: 'on_article_info_toggle',
|
|
21
21
|
ON_LINK_CLICK: 'on_link_click',
|
|
22
22
|
ON_INSERT_IMAGE: 'on_insert_image',
|
|
23
|
-
|
|
23
|
+
INSERT_ATTACHMENTS: 'insert_attachments',
|
|
24
24
|
CLEAR_ARTICLE: 'clear_article'
|
|
25
25
|
};
|
|
@@ -18,10 +18,10 @@ var _core = require("../../extension/core");
|
|
|
18
18
|
var _common = require("../../utils/common");
|
|
19
19
|
var _eventTypes = require("../../constants/event-types");
|
|
20
20
|
var _elementTypes = require("../../extension/constants/element-types");
|
|
21
|
-
var
|
|
21
|
+
var _useAttachments = _interopRequireDefault(require("../../hooks/use-attachments"));
|
|
22
22
|
require("./index.css");
|
|
23
23
|
const isMacOS = (0, _common.isMac)();
|
|
24
|
-
const InlineEditor = _ref => {
|
|
24
|
+
const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
25
25
|
let {
|
|
26
26
|
enableEdit,
|
|
27
27
|
value,
|
|
@@ -50,7 +50,7 @@ const InlineEditor = _ref => {
|
|
|
50
50
|
const eventProxy = (0, _react.useMemo)(() => {
|
|
51
51
|
return new _eventHandler.default(editor);
|
|
52
52
|
}, [editor]);
|
|
53
|
-
(0,
|
|
53
|
+
(0, _useAttachments.default)(editor);
|
|
54
54
|
const decorate = (0, _extension.useHighlight)(editor);
|
|
55
55
|
const onChange = (0, _react.useCallback)(value => {
|
|
56
56
|
setSlateValue(value);
|
|
@@ -129,7 +129,8 @@ const InlineEditor = _ref => {
|
|
|
129
129
|
};
|
|
130
130
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
131
131
|
}, []);
|
|
132
|
-
const handleClear = (0, _react.useCallback)(
|
|
132
|
+
const handleClear = (0, _react.useCallback)(editorId => {
|
|
133
|
+
if (editorId !== editor._id) return;
|
|
133
134
|
editor.children = [{
|
|
134
135
|
type: _elementTypes.PARAGRAPH,
|
|
135
136
|
id: _slugid.default.nice(),
|
|
@@ -158,8 +159,12 @@ const InlineEditor = _ref => {
|
|
|
158
159
|
return () => {
|
|
159
160
|
clearSubscribe();
|
|
160
161
|
};
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
}, [handleClear]);
|
|
163
|
+
(0, _react.useImperativeHandle)(ref, () => {
|
|
164
|
+
return {
|
|
165
|
+
getEditor: () => editor
|
|
166
|
+
};
|
|
167
|
+
}, [editor]);
|
|
163
168
|
const onEditorClick = (0, _react.useCallback)(() => {
|
|
164
169
|
if (!enableEdit) {
|
|
165
170
|
focusRangeRef.current = editor.selection;
|
|
@@ -201,5 +206,5 @@ const InlineEditor = _ref => {
|
|
|
201
206
|
onKeyDown: eventProxy.onKeyDown,
|
|
202
207
|
onCopy: eventProxy.onCopy
|
|
203
208
|
})))))));
|
|
204
|
-
};
|
|
209
|
+
});
|
|
205
210
|
var _default = exports.default = InlineEditor;
|
|
@@ -16,7 +16,7 @@ var _withPropsEditor = _interopRequireDefault(require("./with-props-editor"));
|
|
|
16
16
|
var _editorHelp = _interopRequireDefault(require("./editor-help"));
|
|
17
17
|
var _core = require("../../extension/core");
|
|
18
18
|
var _useScrollContext = require("../../hooks/use-scroll-context");
|
|
19
|
-
var
|
|
19
|
+
var _useAttachments = _interopRequireDefault(require("../../hooks/use-attachments"));
|
|
20
20
|
var _common = require("../../utils/common");
|
|
21
21
|
var _outline = _interopRequireDefault(require("../../containers/outline"));
|
|
22
22
|
var _useContainerStyle = _interopRequireDefault(require("../../hooks/use-container-style"));
|
|
@@ -28,6 +28,7 @@ function SlateEditor(_ref) {
|
|
|
28
28
|
editorApi,
|
|
29
29
|
onSave,
|
|
30
30
|
onContentChanged,
|
|
31
|
+
isReadonly,
|
|
31
32
|
isSupportFormula,
|
|
32
33
|
isSupportInsertSeafileImage,
|
|
33
34
|
children
|
|
@@ -44,7 +45,7 @@ function SlateEditor(_ref) {
|
|
|
44
45
|
const eventProxy = (0, _react.useMemo)(() => {
|
|
45
46
|
return new _eventHandler.default(editor);
|
|
46
47
|
}, [editor]);
|
|
47
|
-
(0,
|
|
48
|
+
(0, _useAttachments.default)(editor);
|
|
48
49
|
const decorate = (0, _extension.useHighlight)(editor);
|
|
49
50
|
const onChange = (0, _react.useCallback)(value => {
|
|
50
51
|
setSlateValue(value);
|
|
@@ -111,6 +112,7 @@ function SlateEditor(_ref) {
|
|
|
111
112
|
className: `sf-slate-editor-container ${_common.isMobile && 'mobile'}`
|
|
112
113
|
}, /*#__PURE__*/_react.default.createElement(_extension.Toolbar, {
|
|
113
114
|
editor: editor,
|
|
115
|
+
readonly: isReadonly,
|
|
114
116
|
isRichEditor: true,
|
|
115
117
|
isSupportFormula: isSupportFormula,
|
|
116
118
|
isSupportInsertSeafileImage: isSupportInsertSeafileImage
|
|
@@ -138,6 +140,7 @@ function SlateEditor(_ref) {
|
|
|
138
140
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
139
141
|
className: "article"
|
|
140
142
|
}, /*#__PURE__*/_react.default.createElement(_extension.SetNodeToDecorations, null), /*#__PURE__*/_react.default.createElement(_slateReact.Editable, {
|
|
143
|
+
readOnly: isReadonly,
|
|
141
144
|
decorate: decorate,
|
|
142
145
|
renderElement: _extension.renderElement,
|
|
143
146
|
renderLeaf: _extension.renderLeaf,
|
package/dist/extension/editor.js
CHANGED
|
@@ -8,13 +8,14 @@ exports.inlineEditor = exports.createSlateEditor = exports.baseEditor = void 0;
|
|
|
8
8
|
var _slate = require("slate");
|
|
9
9
|
var _slateHistory = require("slate-history");
|
|
10
10
|
var _slateReact = require("slate-react");
|
|
11
|
-
var _plugins = _interopRequireDefault(require("./plugins"));
|
|
12
11
|
var _slugid = require("slugid");
|
|
12
|
+
var _plugins = _interopRequireDefault(require("./plugins"));
|
|
13
13
|
const baseEditor = exports.baseEditor = _plugins.default.reduce((editor, pluginItem) => {
|
|
14
14
|
const withPlugin = pluginItem.editorPlugin;
|
|
15
15
|
if (withPlugin) {
|
|
16
16
|
return withPlugin(editor);
|
|
17
17
|
}
|
|
18
|
+
editor._id = (0, _slugid.nice)();
|
|
18
19
|
return editor;
|
|
19
20
|
}, (0, _slateHistory.withHistory)((0, _slateReact.withReact)((0, _slate.createEditor)())));
|
|
20
21
|
const inlineEditor = () => {
|
|
@@ -25,6 +26,7 @@ const inlineEditor = () => {
|
|
|
25
26
|
}
|
|
26
27
|
return editor;
|
|
27
28
|
}, (0, _slateHistory.withHistory)((0, _slateReact.withReact)((0, _slate.createEditor)())));
|
|
29
|
+
editor._id = (0, _slugid.nice)();
|
|
28
30
|
return editor;
|
|
29
31
|
};
|
|
30
32
|
exports.inlineEditor = inlineEditor;
|
|
@@ -10,15 +10,16 @@ var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
|
|
|
10
10
|
var _eventTypes = require("../constants/event-types");
|
|
11
11
|
var _helper = require("../extension/plugins/image/helper");
|
|
12
12
|
var _helper2 = require("../extension/plugins/link/helper");
|
|
13
|
-
const
|
|
13
|
+
const useAttachments = editor => {
|
|
14
14
|
(0, _react.useEffect)(() => {
|
|
15
|
-
const insertImage = _ref => {
|
|
15
|
+
const insertImage = (editorId, _ref) => {
|
|
16
16
|
let {
|
|
17
17
|
title,
|
|
18
18
|
url,
|
|
19
19
|
isImage,
|
|
20
20
|
selection = editor.selection
|
|
21
21
|
} = _ref;
|
|
22
|
+
if (editorId !== editor._id) return;
|
|
22
23
|
if (isImage) {
|
|
23
24
|
(0, _helper.insertSeafileImage)({
|
|
24
25
|
editor,
|
|
@@ -36,8 +37,8 @@ const useSeafileUtils = editor => {
|
|
|
36
37
|
}
|
|
37
38
|
};
|
|
38
39
|
const eventBus = _eventBus.default.getInstance();
|
|
39
|
-
const subscribe = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.
|
|
40
|
+
const subscribe = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.INSERT_ATTACHMENTS, insertImage);
|
|
40
41
|
return subscribe;
|
|
41
42
|
}, [editor]);
|
|
42
43
|
};
|
|
43
|
-
var _default = exports.default =
|
|
44
|
+
var _default = exports.default = useAttachments;
|
|
@@ -8,9 +8,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _isHotkey = _interopRequireDefault(require("is-hotkey"));
|
|
11
|
+
var _slugid = require("slugid");
|
|
11
12
|
var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
|
|
12
13
|
var _eventTypes = require("../../constants/event-types");
|
|
13
|
-
const FallbackEditor = _ref => {
|
|
14
|
+
const FallbackEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
14
15
|
let {
|
|
15
16
|
enableEdit,
|
|
16
17
|
value: propsValue,
|
|
@@ -20,16 +21,20 @@ const FallbackEditor = _ref => {
|
|
|
20
21
|
const [value, setValue] = (0, _react.useState)(propsValue);
|
|
21
22
|
const showEditorRef = (0, _react.useRef)(false);
|
|
22
23
|
const inputRef = (0, _react.useRef)(null);
|
|
24
|
+
const editor = (0, _react.useMemo)(() => ({
|
|
25
|
+
_id: (0, _slugid.nice)(4)
|
|
26
|
+
}), []);
|
|
23
27
|
(0, _react.useEffect)(() => {
|
|
24
28
|
if (enableEdit === showEditorRef.current) return;
|
|
25
29
|
if (enableEdit && !showEditorRef.current) {
|
|
26
30
|
setTimeout(() => inputRef.current.focus());
|
|
27
31
|
}
|
|
28
32
|
}, [enableEdit]);
|
|
29
|
-
const handleClear = (0, _react.useCallback)(
|
|
33
|
+
const handleClear = (0, _react.useCallback)(editorId => {
|
|
34
|
+
if (editorId !== editor._id) return;
|
|
30
35
|
setValue('');
|
|
31
36
|
inputRef.current.focus();
|
|
32
|
-
}, []);
|
|
37
|
+
}, [editor]);
|
|
33
38
|
(0, _react.useEffect)(() => {
|
|
34
39
|
const eventBus = _eventBus.default.getInstance();
|
|
35
40
|
const clearSubscribe = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.CLEAR_ARTICLE, handleClear);
|
|
@@ -71,6 +76,11 @@ const FallbackEditor = _ref => {
|
|
|
71
76
|
images: []
|
|
72
77
|
});
|
|
73
78
|
}, [value, propsOnChange]);
|
|
79
|
+
(0, _react.useImperativeHandle)(ref, () => {
|
|
80
|
+
return {
|
|
81
|
+
getEditor: () => editor
|
|
82
|
+
};
|
|
83
|
+
}, [editor]);
|
|
74
84
|
return /*#__PURE__*/_react.default.createElement("textarea", {
|
|
75
85
|
className: "form-control sf-long-text-inline-fallback-editor-container",
|
|
76
86
|
ref: inputRef,
|
|
@@ -81,5 +91,5 @@ const FallbackEditor = _ref => {
|
|
|
81
91
|
onPaste: onPaste,
|
|
82
92
|
onCut: onCut
|
|
83
93
|
});
|
|
84
|
-
};
|
|
94
|
+
});
|
|
85
95
|
var _default = exports.default = FallbackEditor;
|
|
@@ -34,6 +34,7 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
34
34
|
text: value
|
|
35
35
|
} : value);
|
|
36
36
|
const longTextValueChangedRef = (0, _react.useRef)(false);
|
|
37
|
+
const editorRef = (0, _react.useRef)(null);
|
|
37
38
|
const {
|
|
38
39
|
isWindowsWechat
|
|
39
40
|
} = (0, _react.useMemo)(() => {
|
|
@@ -70,12 +71,14 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
70
71
|
}
|
|
71
72
|
}, [enableEdit, closeEditor]);
|
|
72
73
|
(0, _react.useImperativeHandle)(ref, () => {
|
|
74
|
+
var _editorRef$current;
|
|
73
75
|
return {
|
|
74
76
|
enableEdit: enableEdit,
|
|
75
77
|
openEditor: openEditor,
|
|
76
|
-
closeEditor: closeEditor
|
|
78
|
+
closeEditor: closeEditor,
|
|
79
|
+
getEditor: ((_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getEditor) || (() => null)
|
|
77
80
|
};
|
|
78
|
-
}, [enableEdit, openEditor, closeEditor]);
|
|
81
|
+
}, [enableEdit, openEditor, closeEditor, editorRef]);
|
|
79
82
|
const handelEnableEdit = (0, _react.useCallback)(() => {
|
|
80
83
|
onClick && onClick();
|
|
81
84
|
openEditor();
|
|
@@ -86,11 +89,13 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
86
89
|
className: "w-100",
|
|
87
90
|
onKeyDown: onHotKey
|
|
88
91
|
}, isWindowsWechat ? /*#__PURE__*/_react.default.createElement(_fallbackEditor.default, {
|
|
92
|
+
ref: editorRef,
|
|
89
93
|
enableEdit: enableEdit,
|
|
90
94
|
value: valueRef.current.text,
|
|
91
95
|
onChange: onEditorValueChanged,
|
|
92
96
|
closeEditor: closeEditor
|
|
93
97
|
}) : /*#__PURE__*/_react.default.createElement(_normalEditor.default, {
|
|
98
|
+
ref: editorRef,
|
|
94
99
|
enableEdit: enableEdit,
|
|
95
100
|
handelEnableEdit: handelEnableEdit,
|
|
96
101
|
lang: lang,
|
|
@@ -13,7 +13,7 @@ var _getPreviewContent = _interopRequireDefault(require("../../utils/get-preview
|
|
|
13
13
|
var _markdownPreview = _interopRequireDefault(require("../markdown-preview"));
|
|
14
14
|
var _longtextEditorDialog = _interopRequireDefault(require("../longtext-editor-dialog"));
|
|
15
15
|
var _slateConvert = require("../../slate-convert");
|
|
16
|
-
const NormalEditor = _ref => {
|
|
16
|
+
const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
17
17
|
let {
|
|
18
18
|
enableEdit,
|
|
19
19
|
handelEnableEdit,
|
|
@@ -93,6 +93,15 @@ const NormalEditor = _ref => {
|
|
|
93
93
|
timer && clearTimeout(timer);
|
|
94
94
|
};
|
|
95
95
|
}, [autoSave, saveDelay, handelAutoSave]);
|
|
96
|
+
(0, _react.useImperativeHandle)(ref, () => {
|
|
97
|
+
return {
|
|
98
|
+
getEditor: () => {
|
|
99
|
+
var _editorRef$current, _editorRef$current2;
|
|
100
|
+
const editor = ((_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getEditor) && ((_editorRef$current2 = editorRef.current) === null || _editorRef$current2 === void 0 ? void 0 : _editorRef$current2.getEditor());
|
|
101
|
+
return editor || null;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}, [editorRef]);
|
|
96
105
|
if (!enableEdit && !valueRef.current.text) {
|
|
97
106
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
98
107
|
className: (0, _classnames.default)('sf-long-text-inline-editor-container', {
|
|
@@ -144,5 +153,5 @@ const NormalEditor = _ref => {
|
|
|
144
153
|
onEditorValueChanged: saveValue,
|
|
145
154
|
onCloseEditorDialog: onCloseEditorDialog
|
|
146
155
|
}));
|
|
147
|
-
};
|
|
156
|
+
});
|
|
148
157
|
var _default = exports.default = NormalEditor;
|
|
@@ -14,6 +14,7 @@ var _slateEditor = _interopRequireDefault(require("../editors/slate-editor"));
|
|
|
14
14
|
var _core = require("../extension/core");
|
|
15
15
|
const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
16
16
|
let {
|
|
17
|
+
isReadonly = false,
|
|
17
18
|
isFetching,
|
|
18
19
|
value,
|
|
19
20
|
initValue,
|
|
@@ -53,6 +54,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
53
54
|
propsOnContentChanged && propsOnContentChanged();
|
|
54
55
|
}, [propsOnContentChanged]);
|
|
55
56
|
const props = {
|
|
57
|
+
isReadonly: isReadonly,
|
|
56
58
|
isSupportFormula: !!mathJaxSource,
|
|
57
59
|
isSupportInsertSeafileImage,
|
|
58
60
|
value: richValue,
|
|
@@ -29,7 +29,9 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
29
29
|
const {
|
|
30
30
|
isLoadingMathJax
|
|
31
31
|
} = (0, _useMathjax.default)(mathJaxSource);
|
|
32
|
+
const editorRef = (0, _react.useRef)();
|
|
32
33
|
(0, _react.useImperativeHandle)(ref, () => {
|
|
34
|
+
var _editorRef$current;
|
|
33
35
|
return {
|
|
34
36
|
getValue: () => {
|
|
35
37
|
const mdStringValue = (0, _slateConvert.slateToMdString)(richValue);
|
|
@@ -37,9 +39,10 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
37
39
|
},
|
|
38
40
|
getSlateValue: () => {
|
|
39
41
|
return richValue;
|
|
40
|
-
}
|
|
42
|
+
},
|
|
43
|
+
getEditor: ((_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getEditor) || (() => null)
|
|
41
44
|
};
|
|
42
|
-
}, [richValue]);
|
|
45
|
+
}, [richValue, editorRef]);
|
|
43
46
|
(0, _react.useEffect)(() => {
|
|
44
47
|
if (!isFetching) {
|
|
45
48
|
const richValue = (0, _slateConvert.mdStringToSlate)(value);
|
|
@@ -65,8 +68,12 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
65
68
|
return /*#__PURE__*/_react.default.createElement(_loading.default, null);
|
|
66
69
|
}
|
|
67
70
|
if (isInline) {
|
|
68
|
-
return /*#__PURE__*/_react.default.createElement(_inlineEditor.default, props
|
|
71
|
+
return /*#__PURE__*/_react.default.createElement(_inlineEditor.default, Object.assign({}, props, {
|
|
72
|
+
ref: editorRef
|
|
73
|
+
}));
|
|
69
74
|
}
|
|
70
|
-
return /*#__PURE__*/_react.default.createElement(_simpleSlateEditor.default, props
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_simpleSlateEditor.default, Object.assign({}, props, {
|
|
76
|
+
ref: editorRef
|
|
77
|
+
}));
|
|
71
78
|
});
|
|
72
79
|
var _default = exports.default = SimpleEditor;
|