@seafile/seafile-editor 2.0.25-beta → 2.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editors/inline-editor/index.js +8 -9
- package/dist/editors/inline-editor/with-props-editor.js +2 -0
- package/dist/extension/plugins/image/helper.js +16 -5
- package/dist/extension/plugins/image/menu/image-menu-popover.js +1 -1
- package/dist/extension/plugins/image/menu/index.js +1 -1
- package/dist/extension/plugins/image/plugin.js +18 -3
- package/dist/hooks/use-insert-image.js +0 -3
- package/dist/pages/longtext-inline-editor/index.js +6 -7
- package/dist/pages/longtext-inline-editor/normal-editor.js +8 -7
- package/dist/pages/simple-editor.js +3 -13
- package/package.json +1 -1
|
@@ -21,7 +21,7 @@ var _elementTypes = require("../../extension/constants/element-types");
|
|
|
21
21
|
var _useInsertImage = _interopRequireDefault(require("../../hooks/use-insert-image"));
|
|
22
22
|
require("./index.css");
|
|
23
23
|
const isMacOS = (0, _common.isMac)();
|
|
24
|
-
const InlineEditor =
|
|
24
|
+
const InlineEditor = _ref => {
|
|
25
25
|
let {
|
|
26
26
|
enableEdit,
|
|
27
27
|
value,
|
|
@@ -30,6 +30,8 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
30
30
|
columns,
|
|
31
31
|
onContentChanged,
|
|
32
32
|
isSupportFormula,
|
|
33
|
+
isSupportFileToLink,
|
|
34
|
+
isSupportMultipleFiles,
|
|
33
35
|
onExpandEditorToggle,
|
|
34
36
|
handelEnableEdit
|
|
35
37
|
} = _ref;
|
|
@@ -40,9 +42,11 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
40
42
|
return (0, _withPropsEditor.default)(baseEditor, {
|
|
41
43
|
editorApi,
|
|
42
44
|
onSave,
|
|
43
|
-
columns
|
|
45
|
+
columns,
|
|
46
|
+
isSupportMultipleFiles,
|
|
47
|
+
isSupportFileToLink
|
|
44
48
|
});
|
|
45
|
-
}, [columns, editorApi, onSave]);
|
|
49
|
+
}, [columns, isSupportFileToLink, isSupportMultipleFiles, editorApi, onSave]);
|
|
46
50
|
const eventProxy = (0, _react.useMemo)(() => {
|
|
47
51
|
return new _eventHandler.default(editor);
|
|
48
52
|
}, [editor]);
|
|
@@ -156,11 +160,6 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
156
160
|
};
|
|
157
161
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
158
162
|
}, []);
|
|
159
|
-
(0, _react.useImperativeHandle)(ref, () => {
|
|
160
|
-
return {
|
|
161
|
-
getEditor: () => editor
|
|
162
|
-
};
|
|
163
|
-
}, [editor]);
|
|
164
163
|
const onEditorClick = (0, _react.useCallback)(() => {
|
|
165
164
|
if (!enableEdit) {
|
|
166
165
|
focusRangeRef.current = editor.selection;
|
|
@@ -202,5 +201,5 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
202
201
|
onKeyDown: eventProxy.onKeyDown,
|
|
203
202
|
onCopy: eventProxy.onCopy
|
|
204
203
|
})))))));
|
|
205
|
-
}
|
|
204
|
+
};
|
|
206
205
|
var _default = exports.default = InlineEditor;
|
|
@@ -16,6 +16,8 @@ const withPropsEditor = function (editor) {
|
|
|
16
16
|
if (props.columns) {
|
|
17
17
|
newEditor.columns = props.columns;
|
|
18
18
|
}
|
|
19
|
+
newEditor.isSupportFileToLink = Boolean(props.isSupportFileToLink);
|
|
20
|
+
newEditor.isSupportMultipleFiles = Boolean(props.isSupportMultipleFiles);
|
|
19
21
|
newEditor.isInlineEditor = true;
|
|
20
22
|
return newEditor;
|
|
21
23
|
};
|
|
@@ -4,13 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateImage = exports.lazyLoadImage = exports.isMenuDisabled = exports.insertSeafileImage = exports.insertImage = exports.
|
|
7
|
+
exports.updateImage = exports.lazyLoadImage = exports.isMenuDisabled = exports.insertSeafileImage = exports.insertImage = exports.handleUpdateFile = exports.getImagesUrlList = void 0;
|
|
8
8
|
var _slate = require("slate");
|
|
9
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
10
|
var _helper = require("../header/helper");
|
|
11
11
|
var _elementTypes = require("../../constants/element-types");
|
|
12
12
|
var _core = require("../../core");
|
|
13
13
|
var _helpers = require("../code-block/helpers");
|
|
14
|
+
var _helper2 = require("../link/helper");
|
|
14
15
|
const isMenuDisabled = (editor, readonly) => {
|
|
15
16
|
if (readonly) return true;
|
|
16
17
|
const isHeader = (0, _helper.getHeaderType)(editor);
|
|
@@ -91,17 +92,27 @@ const getImagesUrlList = nodes => {
|
|
|
91
92
|
return list;
|
|
92
93
|
};
|
|
93
94
|
exports.getImagesUrlList = getImagesUrlList;
|
|
94
|
-
const
|
|
95
|
+
const handleUpdateFile = async (editor, file, insertPosition) => {
|
|
95
96
|
if (editor.api.uploadLocalImage) {
|
|
96
97
|
try {
|
|
97
|
-
const
|
|
98
|
-
|
|
98
|
+
const url = await editor.api.uploadLocalImage(file);
|
|
99
|
+
const title = file.name;
|
|
100
|
+
if (file.type.includes(_elementTypes.IMAGE)) {
|
|
101
|
+
insertImage(editor, url);
|
|
102
|
+
} else {
|
|
103
|
+
(0, _helper2.insertLink)({
|
|
104
|
+
editor,
|
|
105
|
+
url,
|
|
106
|
+
title,
|
|
107
|
+
insertPosition
|
|
108
|
+
});
|
|
109
|
+
}
|
|
99
110
|
} catch (error) {
|
|
100
111
|
console.log('error', error);
|
|
101
112
|
}
|
|
102
113
|
}
|
|
103
114
|
};
|
|
104
|
-
exports.
|
|
115
|
+
exports.handleUpdateFile = handleUpdateFile;
|
|
105
116
|
const lazyLoadImage = (url, resolve, reject) => {
|
|
106
117
|
if (!url) {
|
|
107
118
|
reject('img path is require');
|
|
@@ -37,7 +37,7 @@ const ImageMenuPopover = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
37
37
|
}, []);
|
|
38
38
|
const handleUploadLocalImage = (0, _react.useCallback)(async e => {
|
|
39
39
|
const file = e.target.files[0];
|
|
40
|
-
(0, _helper.
|
|
40
|
+
(0, _helper.handleUpdateFile)(editor, file);
|
|
41
41
|
handelClosePopover();
|
|
42
42
|
}, [editor, handelClosePopover]);
|
|
43
43
|
const onToggleImageDialog = (0, _react.useCallback)(() => {
|
|
@@ -37,7 +37,7 @@ const ImageMenu = _ref => {
|
|
|
37
37
|
const handleUploadLocalImage = (0, _react.useCallback)(async e => {
|
|
38
38
|
const file = e.target.files[0];
|
|
39
39
|
if (!file) return;
|
|
40
|
-
(0, _helper.
|
|
40
|
+
(0, _helper.handleUpdateFile)(editor, file);
|
|
41
41
|
e.target.value = null;
|
|
42
42
|
}, [editor]);
|
|
43
43
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
@@ -29,9 +29,24 @@ const withImages = editor => {
|
|
|
29
29
|
return isVoid(element);
|
|
30
30
|
};
|
|
31
31
|
newEditor.insertData = data => {
|
|
32
|
-
if (data.types && data.types.includes('Files') && data.files
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
if (data.types && data.types.includes('Files') && data.files) {
|
|
33
|
+
if (!newEditor.isSupportMultipleFiles) {
|
|
34
|
+
const file = data.files[0];
|
|
35
|
+
if (!file.type.includes(_elementTypes.IMAGE) && !newEditor.isSupportFileToLink) return;
|
|
36
|
+
(0, _helper.handleUpdateFile)(newEditor, file);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let files = [];
|
|
40
|
+
for (let i = 0; i < data.files.length; i++) {
|
|
41
|
+
const file = data.files[i];
|
|
42
|
+
if (!newEditor.isSupportFileToLink && !file.type.includes(_elementTypes.IMAGE)) continue;
|
|
43
|
+
files.push(file);
|
|
44
|
+
}
|
|
45
|
+
const hasImage = files.some(file => file.type.includes(_elementTypes.IMAGE));
|
|
46
|
+
for (let i = 0; i < files.length; i++) {
|
|
47
|
+
const file = files[i];
|
|
48
|
+
(0, _helper.handleUpdateFile)(newEditor, file, hasImage ? _constants.INSERT_POSITION.AFTER : _constants.INSERT_POSITION.CURRENT);
|
|
49
|
+
}
|
|
35
50
|
return;
|
|
36
51
|
}
|
|
37
52
|
return insertData(data);
|
|
@@ -19,7 +19,6 @@ const useSeafileUtils = editor => {
|
|
|
19
19
|
isImage,
|
|
20
20
|
selection
|
|
21
21
|
} = _ref;
|
|
22
|
-
console.log('insertImage');
|
|
23
22
|
if (isImage) {
|
|
24
23
|
(0, _helper.insertSeafileImage)({
|
|
25
24
|
editor,
|
|
@@ -28,7 +27,6 @@ const useSeafileUtils = editor => {
|
|
|
28
27
|
selection
|
|
29
28
|
});
|
|
30
29
|
} else {
|
|
31
|
-
console.log('insertSeafileLink');
|
|
32
30
|
(0, _helper2.insertSeafileLink)({
|
|
33
31
|
editor,
|
|
34
32
|
title,
|
|
@@ -37,7 +35,6 @@ const useSeafileUtils = editor => {
|
|
|
37
35
|
});
|
|
38
36
|
}
|
|
39
37
|
};
|
|
40
|
-
console.log('123232');
|
|
41
38
|
const eventBus = _eventBus.default.getInstance();
|
|
42
39
|
const subscribe = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.INSERT_IMAGE, insertImage);
|
|
43
40
|
return subscribe;
|
|
@@ -23,6 +23,8 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
23
23
|
value,
|
|
24
24
|
lang,
|
|
25
25
|
headerName,
|
|
26
|
+
isSupportFileToLink = false,
|
|
27
|
+
isSupportMultipleFiles = false,
|
|
26
28
|
onClick,
|
|
27
29
|
onSaveEditorValue,
|
|
28
30
|
editorApi
|
|
@@ -32,7 +34,6 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
32
34
|
text: value
|
|
33
35
|
} : value);
|
|
34
36
|
const longTextValueChangedRef = (0, _react.useRef)(false);
|
|
35
|
-
const editorRef = (0, _react.useRef)(null);
|
|
36
37
|
const {
|
|
37
38
|
isWindowsWechat
|
|
38
39
|
} = (0, _react.useMemo)(() => {
|
|
@@ -70,13 +71,11 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
70
71
|
}, [enableEdit, closeEditor]);
|
|
71
72
|
(0, _react.useImperativeHandle)(ref, () => {
|
|
72
73
|
return {
|
|
73
|
-
isWindowsWechat: isWindowsWechat,
|
|
74
74
|
enableEdit: enableEdit,
|
|
75
75
|
openEditor: openEditor,
|
|
76
|
-
closeEditor: closeEditor
|
|
77
|
-
getEditor: () => editorRef.current.getEditor()
|
|
76
|
+
closeEditor: closeEditor
|
|
78
77
|
};
|
|
79
|
-
}, [enableEdit, openEditor, closeEditor
|
|
78
|
+
}, [enableEdit, openEditor, closeEditor]);
|
|
80
79
|
const handelEnableEdit = (0, _react.useCallback)(() => {
|
|
81
80
|
onClick && onClick();
|
|
82
81
|
openEditor();
|
|
@@ -89,7 +88,6 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
89
88
|
}, isWindowsWechat ? /*#__PURE__*/_react.default.createElement(_fallbackEditor.default, {
|
|
90
89
|
enableEdit: enableEdit,
|
|
91
90
|
value: valueRef.current.text,
|
|
92
|
-
ref: editorRef,
|
|
93
91
|
onChange: onEditorValueChanged,
|
|
94
92
|
closeEditor: closeEditor
|
|
95
93
|
}) : /*#__PURE__*/_react.default.createElement(_normalEditor.default, {
|
|
@@ -101,7 +99,8 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
|
|
|
101
99
|
autoSave: autoSave,
|
|
102
100
|
saveDelay: saveDelay,
|
|
103
101
|
isCheckBrowser: isCheckBrowser,
|
|
104
|
-
|
|
102
|
+
isSupportFileToLink: isSupportFileToLink,
|
|
103
|
+
isSupportMultipleFiles: isSupportMultipleFiles,
|
|
105
104
|
editorApi: editorApi,
|
|
106
105
|
onSaveEditorValue: onSaveEditorValue,
|
|
107
106
|
onEditorValueChanged: onEditorValueChanged
|
|
@@ -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 =
|
|
16
|
+
const NormalEditor = _ref => {
|
|
17
17
|
let {
|
|
18
18
|
enableEdit,
|
|
19
19
|
handelEnableEdit,
|
|
@@ -23,6 +23,8 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
23
23
|
autoSave = true,
|
|
24
24
|
saveDelay = 60000,
|
|
25
25
|
isCheckBrowser = false,
|
|
26
|
+
isSupportFileToLink = false,
|
|
27
|
+
isSupportMultipleFiles = false,
|
|
26
28
|
editorApi,
|
|
27
29
|
onSaveEditorValue,
|
|
28
30
|
onEditorValueChanged
|
|
@@ -91,11 +93,6 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
91
93
|
timer && clearTimeout(timer);
|
|
92
94
|
};
|
|
93
95
|
}, [autoSave, saveDelay, handelAutoSave]);
|
|
94
|
-
(0, _react.useImperativeHandle)(ref, () => {
|
|
95
|
-
return {
|
|
96
|
-
getEditor: () => editorRef.current.getEditor()
|
|
97
|
-
};
|
|
98
|
-
}, [editorRef]);
|
|
99
96
|
if (!enableEdit && !valueRef.current.text) {
|
|
100
97
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
101
98
|
className: (0, _classnames.default)('sf-long-text-inline-editor-container', {
|
|
@@ -115,6 +112,8 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
115
112
|
ref: editorRef,
|
|
116
113
|
enableEdit: enableEdit,
|
|
117
114
|
isInline: true,
|
|
115
|
+
isSupportFileToLink: isSupportFileToLink,
|
|
116
|
+
isSupportMultipleFiles: isSupportMultipleFiles,
|
|
118
117
|
value: valueRef.current.text,
|
|
119
118
|
handelEnableEdit: handelEnableEdit,
|
|
120
119
|
onSave: handelAutoSave,
|
|
@@ -133,6 +132,8 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
133
132
|
})))), showExpandEditor && /*#__PURE__*/_react.default.createElement(_longtextEditorDialog.default, {
|
|
134
133
|
lang: lang,
|
|
135
134
|
readOnly: false,
|
|
135
|
+
isSupportFileToLink: isSupportFileToLink,
|
|
136
|
+
isSupportMultipleFiles: isSupportMultipleFiles,
|
|
136
137
|
headerName: headerName,
|
|
137
138
|
value: valueRef.current.text,
|
|
138
139
|
autoSave: autoSave,
|
|
@@ -143,5 +144,5 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
143
144
|
onEditorValueChanged: saveValue,
|
|
144
145
|
onCloseEditorDialog: onCloseEditorDialog
|
|
145
146
|
}));
|
|
146
|
-
}
|
|
147
|
+
};
|
|
147
148
|
var _default = exports.default = NormalEditor;
|
|
@@ -29,13 +29,8 @@ 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)(null);
|
|
33
32
|
(0, _react.useImperativeHandle)(ref, () => {
|
|
34
33
|
return {
|
|
35
|
-
getEditor: () => {
|
|
36
|
-
var _editorRef$current;
|
|
37
|
-
return (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getEditor();
|
|
38
|
-
},
|
|
39
34
|
getValue: () => {
|
|
40
35
|
const mdStringValue = (0, _slateConvert.slateToMdString)(richValue);
|
|
41
36
|
return mdStringValue;
|
|
@@ -44,7 +39,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
44
39
|
return richValue;
|
|
45
40
|
}
|
|
46
41
|
};
|
|
47
|
-
}, [richValue
|
|
42
|
+
}, [richValue]);
|
|
48
43
|
(0, _react.useEffect)(() => {
|
|
49
44
|
if (!isFetching) {
|
|
50
45
|
const richValue = (0, _slateConvert.mdStringToSlate)(value);
|
|
@@ -66,17 +61,12 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
66
61
|
onContentChanged: onContentChanged,
|
|
67
62
|
...otherProps
|
|
68
63
|
};
|
|
69
|
-
console.log(otherProps);
|
|
70
64
|
if (isFetching || isLoading || isLoadingMathJax) {
|
|
71
65
|
return /*#__PURE__*/_react.default.createElement(_loading.default, null);
|
|
72
66
|
}
|
|
73
67
|
if (isInline) {
|
|
74
|
-
return /*#__PURE__*/_react.default.createElement(_inlineEditor.default,
|
|
75
|
-
ref: editorRef
|
|
76
|
-
}));
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(_inlineEditor.default, props);
|
|
77
69
|
}
|
|
78
|
-
return /*#__PURE__*/_react.default.createElement(_simpleSlateEditor.default,
|
|
79
|
-
ref: editorRef
|
|
80
|
-
}));
|
|
70
|
+
return /*#__PURE__*/_react.default.createElement(_simpleSlateEditor.default, props);
|
|
81
71
|
});
|
|
82
72
|
var _default = exports.default = SimpleEditor;
|