@seafile/sdoc-editor 0.1.20 → 0.1.21
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/assets/css/collaborator-popover.css +1 -0
- package/dist/basic-sdk/assets/css/outline.css +3 -3
- package/dist/basic-sdk/extension/constants/index.js +2 -1
- package/dist/basic-sdk/extension/plugins/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/markdown/index.js +5 -0
- package/dist/basic-sdk/extension/plugins/markdown/plugin.js +165 -0
- package/dist/config.js +16 -0
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
|
2
2
|
var _MENUS_CONFIG_MAP, _HEADER_TITLE_MAP;
|
|
3
3
|
// extension plugin
|
|
4
4
|
export var BLOCKQUOTE = 'blockquote';
|
|
5
|
-
export var BOLD = '
|
|
5
|
+
export var BOLD = 'bold';
|
|
6
6
|
export var ITALIC = 'italic';
|
|
7
7
|
export var HEADER = 'header';
|
|
8
8
|
export var HEADER1 = 'header1';
|
|
@@ -29,6 +29,7 @@ export var TABLE_ROW = 'table-row';
|
|
|
29
29
|
export var FORMULA = 'formula';
|
|
30
30
|
export var COLUMN = 'column';
|
|
31
31
|
export var TEXTSTYLE = 'text-style';
|
|
32
|
+
export var BOLD_ITALIC = 'bold-italic';
|
|
32
33
|
|
|
33
34
|
// menus config
|
|
34
35
|
export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CONFIG_MAP, BLOCKQUOTE, {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import MarkDownPlugin from './markdown';
|
|
1
2
|
import HeaderPlugin from './header';
|
|
2
3
|
import LinkPlugin from './link';
|
|
3
4
|
import BlockquotePlugin from './blockquote';
|
|
@@ -5,6 +6,6 @@ import ListPlugin from './list';
|
|
|
5
6
|
import CheckListPlugin from './check-list';
|
|
6
7
|
import TextPlugin from './text-style';
|
|
7
8
|
import CodeBlockPlugin from './code-block';
|
|
8
|
-
var Plugins = [HeaderPlugin, LinkPlugin, BlockquotePlugin, ListPlugin, CheckListPlugin, TextPlugin, CodeBlockPlugin];
|
|
9
|
+
var Plugins = [MarkDownPlugin, HeaderPlugin, LinkPlugin, BlockquotePlugin, ListPlugin, CheckListPlugin, TextPlugin, CodeBlockPlugin];
|
|
9
10
|
export default Plugins;
|
|
10
|
-
export { HeaderPlugin, LinkPlugin, BlockquotePlugin, ListPlugin, CheckListPlugin, TextPlugin, CodeBlockPlugin };
|
|
11
|
+
export { MarkDownPlugin, HeaderPlugin, LinkPlugin, BlockquotePlugin, ListPlugin, CheckListPlugin, TextPlugin, CodeBlockPlugin };
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import { Editor, Transforms, Range } from '@seafile/slate';
|
|
3
|
+
import { toggleList } from '../list/transforms';
|
|
4
|
+
import { getSelectedNodeByType } from '../../core';
|
|
5
|
+
import { HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, UNORDERED_LIST, BLOCKQUOTE, BOLD, ITALIC, BOLD_ITALIC } from '../../constants';
|
|
6
|
+
var KEY_TO_TYPE_FOR_SPACE = {
|
|
7
|
+
// Title shortcut
|
|
8
|
+
'#': HEADER1,
|
|
9
|
+
'##': HEADER2,
|
|
10
|
+
'###': HEADER3,
|
|
11
|
+
'####': HEADER4,
|
|
12
|
+
'#####': HEADER5,
|
|
13
|
+
'######': HEADER6,
|
|
14
|
+
// List shortcut
|
|
15
|
+
'*': UNORDERED_LIST,
|
|
16
|
+
'-': UNORDERED_LIST,
|
|
17
|
+
// Reference shortcut key
|
|
18
|
+
'>': BLOCKQUOTE
|
|
19
|
+
};
|
|
20
|
+
var KEY_TO_INLINE_TYPE_FOR_SPACE = {
|
|
21
|
+
// Inline shortcut keys
|
|
22
|
+
'**': BOLD,
|
|
23
|
+
'*': ITALIC,
|
|
24
|
+
'***': BOLD_ITALIC
|
|
25
|
+
};
|
|
26
|
+
var getBeforeText = function getBeforeText(editor) {
|
|
27
|
+
var selection = editor.selection;
|
|
28
|
+
if (selection == null) return {
|
|
29
|
+
beforeText: '',
|
|
30
|
+
range: null
|
|
31
|
+
};
|
|
32
|
+
var anchor = selection.anchor;
|
|
33
|
+
// Find the block element above the current text
|
|
34
|
+
var block = Editor.above(editor, {
|
|
35
|
+
match: function match(n) {
|
|
36
|
+
return Editor.isBlock(editor, n);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
if (block == null) return {
|
|
40
|
+
beforeText: '',
|
|
41
|
+
range: null
|
|
42
|
+
};
|
|
43
|
+
var blockPath = block[1];
|
|
44
|
+
var blockStart = Editor.start(editor, blockPath); // The starting position of the block element
|
|
45
|
+
var range = {
|
|
46
|
+
anchor: anchor,
|
|
47
|
+
focus: blockStart
|
|
48
|
+
};
|
|
49
|
+
var beforeText = Editor.string(editor, range) || '';
|
|
50
|
+
return {
|
|
51
|
+
beforeText: beforeText,
|
|
52
|
+
range: range
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
var withMarkDown = function withMarkDown(editor) {
|
|
56
|
+
var insertText = editor.insertText;
|
|
57
|
+
var newEditor = editor;
|
|
58
|
+
|
|
59
|
+
// When entering a space, convert markdown
|
|
60
|
+
newEditor.insertText = function (text) {
|
|
61
|
+
var selection = editor.selection;
|
|
62
|
+
if (selection == null) return insertText(text);
|
|
63
|
+
if (Range.isExpanded(selection)) return insertText(text);
|
|
64
|
+
if (getSelectedNodeByType(editor, 'paragraph') == null) return insertText(text); // It must be in paragraph
|
|
65
|
+
if (text !== ' ') return insertText(text); // The value must be an input space
|
|
66
|
+
|
|
67
|
+
// Gets the text before the space
|
|
68
|
+
var _getBeforeText = getBeforeText(editor),
|
|
69
|
+
beforeText = _getBeforeText.beforeText,
|
|
70
|
+
range = _getBeforeText.range;
|
|
71
|
+
if (!beforeText || !range) return insertText(text);
|
|
72
|
+
|
|
73
|
+
// Based on the keyword, find the type of element you want to convert
|
|
74
|
+
var type = KEY_TO_TYPE_FOR_SPACE[beforeText.trim()];
|
|
75
|
+
var boldType = KEY_TO_INLINE_TYPE_FOR_SPACE[beforeText.slice(-2)];
|
|
76
|
+
var italicType = KEY_TO_INLINE_TYPE_FOR_SPACE[beforeText.slice(-1)];
|
|
77
|
+
var italicAndBoldType = KEY_TO_INLINE_TYPE_FOR_SPACE[beforeText.slice(-3)];
|
|
78
|
+
if (!type && !boldType && !italicType && !italicAndBoldType) return insertText(text);
|
|
79
|
+
if (italicAndBoldType === BOLD_ITALIC) {
|
|
80
|
+
var restStr = beforeText === null || beforeText === void 0 ? void 0 : beforeText.slice(0, beforeText.length - 3);
|
|
81
|
+
var startOffset = restStr === null || restStr === void 0 ? void 0 : restStr.lastIndexOf('***');
|
|
82
|
+
var endOffset = (beforeText === null || beforeText === void 0 ? void 0 : beforeText.lastIndexOf('***')) + 3;
|
|
83
|
+
if (startOffset !== -3) {
|
|
84
|
+
Transforms.delete(editor, {
|
|
85
|
+
at: {
|
|
86
|
+
anchor: {
|
|
87
|
+
path: range.focus.path,
|
|
88
|
+
offset: startOffset
|
|
89
|
+
},
|
|
90
|
+
focus: _objectSpread({}, selection.focus)
|
|
91
|
+
},
|
|
92
|
+
voids: true
|
|
93
|
+
});
|
|
94
|
+
var newText = beforeText.slice(startOffset + 3, endOffset - 3);
|
|
95
|
+
Editor.addMark(editor, 'BOLD', true);
|
|
96
|
+
Editor.addMark(editor, 'ITALIC', true);
|
|
97
|
+
return insertText(newText);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (boldType === BOLD) {
|
|
101
|
+
var _restStr = beforeText.slice(0, beforeText.length - 2);
|
|
102
|
+
var _startOffset = _restStr.lastIndexOf('**');
|
|
103
|
+
var _endOffset = beforeText.lastIndexOf('**') + 2;
|
|
104
|
+
if (_startOffset === -1) {
|
|
105
|
+
return insertText(text);
|
|
106
|
+
}
|
|
107
|
+
Transforms.delete(editor, {
|
|
108
|
+
at: {
|
|
109
|
+
anchor: {
|
|
110
|
+
path: range.focus.path,
|
|
111
|
+
offset: _startOffset
|
|
112
|
+
},
|
|
113
|
+
focus: _objectSpread({}, selection.focus)
|
|
114
|
+
},
|
|
115
|
+
voids: true
|
|
116
|
+
});
|
|
117
|
+
var newType = boldType.toUpperCase();
|
|
118
|
+
var _newText = beforeText.slice(_startOffset + 2, _endOffset - 2);
|
|
119
|
+
Editor.addMark(editor, newType, true);
|
|
120
|
+
return insertText(_newText);
|
|
121
|
+
}
|
|
122
|
+
if (italicType === ITALIC) {
|
|
123
|
+
var _restStr2 = beforeText === null || beforeText === void 0 ? void 0 : beforeText.slice(0, beforeText.length - 1);
|
|
124
|
+
var _startOffset2 = _restStr2 === null || _restStr2 === void 0 ? void 0 : _restStr2.lastIndexOf('*');
|
|
125
|
+
var _endOffset2 = (beforeText === null || beforeText === void 0 ? void 0 : beforeText.lastIndexOf('*')) + 1;
|
|
126
|
+
if (_startOffset2 !== -1) {
|
|
127
|
+
Transforms.delete(editor, {
|
|
128
|
+
at: {
|
|
129
|
+
anchor: {
|
|
130
|
+
path: range.focus.path,
|
|
131
|
+
offset: _startOffset2
|
|
132
|
+
},
|
|
133
|
+
focus: _objectSpread({}, selection.focus)
|
|
134
|
+
},
|
|
135
|
+
voids: true
|
|
136
|
+
});
|
|
137
|
+
var _newType = italicType.toUpperCase();
|
|
138
|
+
var _newText2 = beforeText.slice(_startOffset2 + 1, _endOffset2 - 1);
|
|
139
|
+
Editor.addMark(editor, _newType, true);
|
|
140
|
+
return insertText(_newText2);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Delete element
|
|
145
|
+
Transforms.select(editor, range);
|
|
146
|
+
Transforms.delete(editor);
|
|
147
|
+
if (type === UNORDERED_LIST) {
|
|
148
|
+
toggleList(editor, type);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (type === BLOCKQUOTE) {
|
|
152
|
+
Transforms.setNodes(editor, {
|
|
153
|
+
type: type
|
|
154
|
+
}, {
|
|
155
|
+
mode: 'highest'
|
|
156
|
+
});
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
Transforms.setNodes(editor, {
|
|
160
|
+
type: type
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
return newEditor;
|
|
164
|
+
};
|
|
165
|
+
export default withMarkDown;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var serverConfig = {
|
|
2
|
+
//serviceUrl: "http://127.0.0.1:8000",
|
|
3
|
+
serviceUrl: "http://192.168.1.100:8000",
|
|
4
|
+
username: "lj@11.com",
|
|
5
|
+
password: "11",
|
|
6
|
+
repoID: "79d1fa93-4b5f-4d6c-8fb5-ad3958e1fa47",
|
|
7
|
+
userInfo: {
|
|
8
|
+
username: 'lj@11.com',
|
|
9
|
+
name: 'lj-',
|
|
10
|
+
contact_email: 'lj@11.com'
|
|
11
|
+
},
|
|
12
|
+
filePath: '/xxx.md',
|
|
13
|
+
fileName: 'xxx.md',
|
|
14
|
+
dirPath: '/'
|
|
15
|
+
};
|
|
16
|
+
export { serverConfig };
|