@uiw/react-md-editor 3.3.6 → 3.3.8
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/README.md +2 -8
- package/dist/markdown-editor.css +3 -7
- package/lib/cjs/Context.js +2 -8
- package/lib/cjs/Editor.js +54 -86
- package/lib/cjs/commands/bold.js +5 -9
- package/lib/cjs/commands/code.js +5 -11
- package/lib/cjs/commands/comment.js +5 -7
- package/lib/cjs/commands/divider.js +1 -1
- package/lib/cjs/commands/fullscreen.js +1 -5
- package/lib/cjs/commands/group.js +3 -10
- package/lib/cjs/commands/hr.js +1 -4
- package/lib/cjs/commands/image.js +5 -9
- package/lib/cjs/commands/index.d.ts +11 -12
- package/lib/cjs/commands/index.js +52 -87
- package/lib/cjs/commands/italic.js +5 -9
- package/lib/cjs/commands/link.js +5 -9
- package/lib/cjs/commands/list.js +7 -11
- package/lib/cjs/commands/preview.js +2 -5
- package/lib/cjs/commands/quote.js +3 -6
- package/lib/cjs/commands/strikeThrough.js +5 -9
- package/lib/cjs/commands/title.js +1 -6
- package/lib/cjs/commands/title1.js +1 -6
- package/lib/cjs/commands/title2.js +1 -6
- package/lib/cjs/commands/title3.js +1 -6
- package/lib/cjs/commands/title4.js +1 -6
- package/lib/cjs/commands/title5.js +1 -6
- package/lib/cjs/commands/title6.js +1 -6
- package/lib/cjs/components/DragBar/index.js +3 -14
- package/lib/cjs/components/TextArea/Markdown.js +8 -20
- package/lib/cjs/components/TextArea/Textarea.js +17 -36
- package/lib/cjs/components/TextArea/handleKeyDown.js +1 -19
- package/lib/cjs/components/TextArea/index.js +11 -27
- package/lib/cjs/components/TextArea/shortcuts.js +1 -17
- package/lib/cjs/components/Toolbar/Child.js +9 -18
- package/lib/cjs/components/Toolbar/index.js +14 -34
- package/lib/cjs/index.js +2 -11
- package/lib/cjs/utils/InsertTextAtPosition.js +28 -33
- package/lib/cjs/utils/getSurroundingWord.js +9 -12
- package/lib/cjs/utils/index.js +1 -1
- package/lib/cjs/utils/markdownUtils.js +12 -23
- package/lib/esm/Context.js +1 -1
- package/lib/esm/Editor.js +54 -71
- package/lib/esm/commands/bold.js +5 -5
- package/lib/esm/commands/code.js +5 -7
- package/lib/esm/commands/comment.js +5 -5
- package/lib/esm/commands/divider.js +1 -1
- package/lib/esm/commands/fullscreen.js +1 -2
- package/lib/esm/commands/group.js +3 -5
- package/lib/esm/commands/hr.js +1 -1
- package/lib/esm/commands/image.js +5 -5
- package/lib/esm/commands/index.d.ts +11 -12
- package/lib/esm/commands/index.js +8 -18
- package/lib/esm/commands/italic.js +5 -5
- package/lib/esm/commands/link.js +5 -5
- package/lib/esm/commands/list.js +5 -5
- package/lib/esm/commands/preview.js +1 -1
- package/lib/esm/commands/quote.js +3 -2
- package/lib/esm/commands/strikeThrough.js +5 -5
- package/lib/esm/commands/title.js +1 -1
- package/lib/esm/commands/title1.js +1 -3
- package/lib/esm/commands/title2.js +1 -3
- package/lib/esm/commands/title3.js +1 -3
- package/lib/esm/commands/title4.js +1 -3
- package/lib/esm/commands/title5.js +1 -3
- package/lib/esm/commands/title6.js +1 -3
- package/lib/esm/components/DragBar/index.js +3 -12
- package/lib/esm/components/TextArea/Markdown.js +9 -13
- package/lib/esm/components/TextArea/Textarea.js +17 -20
- package/lib/esm/components/TextArea/handleKeyDown.js +2 -14
- package/lib/esm/components/TextArea/index.css +1 -2
- package/lib/esm/components/TextArea/index.js +11 -14
- package/lib/esm/components/TextArea/shortcuts.js +1 -14
- package/lib/esm/components/Toolbar/Child.js +9 -10
- package/lib/esm/components/Toolbar/index.css +2 -5
- package/lib/esm/components/Toolbar/index.js +14 -25
- package/lib/esm/index.js +1 -1
- package/lib/esm/utils/InsertTextAtPosition.js +28 -31
- package/lib/esm/utils/getSurroundingWord.js +9 -10
- package/lib/esm/utils/index.js +1 -1
- package/lib/esm/utils/markdownUtils.js +10 -16
- package/package.json +14 -66
- package/src/commands/index.ts +17 -13
- package/src/components/Toolbar/index.tsx +2 -4
|
@@ -1,83 +1,77 @@
|
|
|
1
1
|
import getSurroundingWord from './getSurroundingWord';
|
|
2
2
|
export function selectWord(_ref) {
|
|
3
3
|
var text = _ref.text,
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
selection = _ref.selection;
|
|
6
5
|
if (text && text.length && selection.start === selection.end) {
|
|
7
6
|
// the user is pointing to a word
|
|
8
7
|
return getSurroundingWord(text, selection.start);
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
return selection;
|
|
12
10
|
}
|
|
11
|
+
|
|
13
12
|
/**
|
|
14
13
|
* Gets the number of line-breaks that would have to be inserted before the given 'startPosition'
|
|
15
14
|
* to make sure there's an empty line between 'startPosition' and the previous text
|
|
16
15
|
*/
|
|
17
|
-
|
|
18
16
|
export function getBreaksNeededForEmptyLineBefore() {
|
|
19
17
|
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
20
18
|
var startPosition = arguments.length > 1 ? arguments[1] : undefined;
|
|
21
|
-
if (startPosition === 0) return 0;
|
|
19
|
+
if (startPosition === 0) return 0;
|
|
20
|
+
|
|
21
|
+
// rules:
|
|
22
22
|
// - If we're in the first line, no breaks are needed
|
|
23
23
|
// - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we
|
|
24
24
|
// may need to insert 0, 1 or 2 breaks
|
|
25
25
|
|
|
26
26
|
var neededBreaks = 2;
|
|
27
27
|
var isInFirstLine = true;
|
|
28
|
-
|
|
29
28
|
for (var i = startPosition - 1; i >= 0 && neededBreaks >= 0; i--) {
|
|
30
29
|
switch (text.charCodeAt(i)) {
|
|
31
30
|
case 32:
|
|
32
31
|
// blank space
|
|
33
32
|
continue;
|
|
34
|
-
|
|
35
33
|
case 10:
|
|
36
34
|
// line break
|
|
37
35
|
neededBreaks--;
|
|
38
36
|
isInFirstLine = false;
|
|
39
37
|
break;
|
|
40
|
-
|
|
41
38
|
default:
|
|
42
39
|
return neededBreaks;
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
|
-
|
|
46
42
|
return isInFirstLine ? 0 : neededBreaks;
|
|
47
43
|
}
|
|
44
|
+
|
|
48
45
|
/**
|
|
49
46
|
* Gets the number of line-breaks that would have to be inserted after the given 'startPosition'
|
|
50
47
|
* to make sure there's an empty line between 'startPosition' and the next text
|
|
51
48
|
*/
|
|
52
|
-
|
|
53
49
|
export function getBreaksNeededForEmptyLineAfter() {
|
|
54
50
|
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
55
51
|
var startPosition = arguments.length > 1 ? arguments[1] : undefined;
|
|
56
|
-
if (startPosition === text.length - 1) return 0;
|
|
52
|
+
if (startPosition === text.length - 1) return 0;
|
|
53
|
+
|
|
54
|
+
// rules:
|
|
57
55
|
// - If we're in the first line, no breaks are needed
|
|
58
56
|
// - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we
|
|
59
57
|
// may need to insert 0, 1 or 2 breaks
|
|
60
58
|
|
|
61
59
|
var neededBreaks = 2;
|
|
62
60
|
var isInLastLine = true;
|
|
63
|
-
|
|
64
61
|
for (var i = startPosition; i < text.length && neededBreaks >= 0; i++) {
|
|
65
62
|
switch (text.charCodeAt(i)) {
|
|
66
63
|
case 32:
|
|
67
64
|
continue;
|
|
68
|
-
|
|
69
65
|
case 10:
|
|
70
66
|
{
|
|
71
67
|
neededBreaks--;
|
|
72
68
|
isInLastLine = false;
|
|
73
69
|
break;
|
|
74
70
|
}
|
|
75
|
-
|
|
76
71
|
default:
|
|
77
72
|
return neededBreaks;
|
|
78
73
|
}
|
|
79
74
|
}
|
|
80
|
-
|
|
81
75
|
return isInLastLine ? 0 : neededBreaks;
|
|
82
76
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRTdXJyb3VuZGluZ1dvcmQiLCJzZWxlY3RXb3JkIiwidGV4dCIsInNlbGVjdGlvbiIsImxlbmd0aCIsInN0YXJ0IiwiZW5kIiwiZ2V0QnJlYWtzTmVlZGVkRm9yRW1wdHlMaW5lQmVmb3JlIiwic3RhcnRQb3NpdGlvbiIsIm5lZWRlZEJyZWFrcyIsImlzSW5GaXJzdExpbmUiLCJpIiwiY2hhckNvZGVBdCIsImdldEJyZWFrc05lZWRlZEZvckVtcHR5TGluZUFmdGVyIiwiaXNJbkxhc3RMaW5lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL21hcmtkb3duVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dFJhbmdlIH0gZnJvbSAnLi4vY29tbWFuZHMnO1xuaW1wb3J0IGdldFN1cnJvdW5kaW5nV29yZCBmcm9tICcuL2dldFN1cnJvdW5kaW5nV29yZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dFNlY3Rpb24ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHNlbGVjdGlvbjogVGV4dFJhbmdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0V29yZCh7IHRleHQsIHNlbGVjdGlvbiB9OiBUZXh0U2VjdGlvbik6IFRleHRSYW5nZSB7XG4gIGlmICh0ZXh0ICYmIHRleHQubGVuZ3RoICYmIHNlbGVjdGlvbi5zdGFydCA9PT0gc2VsZWN0aW9uLmVuZCkge1xuICAgIC8vIHRoZSB1c2VyIGlzIHBvaW50aW5nIHRvIGEgd29yZFxuICAgIHJldHVybiBnZXRTdXJyb3VuZGluZ1dvcmQodGV4dCwgc2VsZWN0aW9uLnN0YXJ0KTtcbiAgfVxuICByZXR1cm4gc2VsZWN0aW9uO1xufVxuXG4vKipcbiAqICBHZXRzIHRoZSBudW1iZXIgb2YgbGluZS1icmVha3MgdGhhdCB3b3VsZCBoYXZlIHRvIGJlIGluc2VydGVkIGJlZm9yZSB0aGUgZ2l2ZW4gJ3N0YXJ0UG9zaXRpb24nXG4gKiAgdG8gbWFrZSBzdXJlIHRoZXJlJ3MgYW4gZW1wdHkgbGluZSBiZXR3ZWVuICdzdGFydFBvc2l0aW9uJyBhbmQgdGhlIHByZXZpb3VzIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyZWFrc05lZWRlZEZvckVtcHR5TGluZUJlZm9yZSh0ZXh0ID0gJycsIHN0YXJ0UG9zaXRpb246IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChzdGFydFBvc2l0aW9uID09PSAwKSByZXR1cm4gMDtcblxuICAvLyBydWxlczpcbiAgLy8gLSBJZiB3ZSdyZSBpbiB0aGUgZmlyc3QgbGluZSwgbm8gYnJlYWtzIGFyZSBuZWVkZWRcbiAgLy8gLSBPdGhlcndpc2UgdGhlcmUgbXVzdCBiZSAyIGJyZWFrcyBiZWZvcmUgdGhlIHByZXZpb3VzIGNoYXJhY3Rlci4gRGVwZW5kaW5nIG9uIGhvdyBtYW55IGJyZWFrcyBleGlzdCBhbHJlYWR5LCB3ZVxuICAvLyAgICAgIG1heSBuZWVkIHRvIGluc2VydCAwLCAxIG9yIDIgYnJlYWtzXG5cbiAgbGV0IG5lZWRlZEJyZWFrcyA9IDI7XG4gIGxldCBpc0luRmlyc3RMaW5lID0gdHJ1ZTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0UG9zaXRpb24gLSAxOyBpID49IDAgJiYgbmVlZGVkQnJlYWtzID49IDA7IGktLSkge1xuICAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICBjYXNlIDMyOiAvLyBibGFuayBzcGFjZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGNhc2UgMTA6IC8vIGxpbmUgYnJlYWtcbiAgICAgICAgbmVlZGVkQnJlYWtzLS07XG4gICAgICAgIGlzSW5GaXJzdExpbmUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbmVlZGVkQnJlYWtzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaXNJbkZpcnN0TGluZSA/IDAgOiBuZWVkZWRCcmVha3M7XG59XG5cbi8qKlxuICogIEdldHMgdGhlIG51bWJlciBvZiBsaW5lLWJyZWFrcyB0aGF0IHdvdWxkIGhhdmUgdG8gYmUgaW5zZXJ0ZWQgYWZ0ZXIgdGhlIGdpdmVuICdzdGFydFBvc2l0aW9uJ1xuICogIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIGFuIGVtcHR5IGxpbmUgYmV0d2VlbiAnc3RhcnRQb3NpdGlvbicgYW5kIHRoZSBuZXh0IHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyZWFrc05lZWRlZEZvckVtcHR5TGluZUFmdGVyKHRleHQgPSAnJywgc3RhcnRQb3NpdGlvbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHN0YXJ0UG9zaXRpb24gPT09IHRleHQubGVuZ3RoIC0gMSkgcmV0dXJuIDA7XG5cbiAgLy8gcnVsZXM6XG4gIC8vIC0gSWYgd2UncmUgaW4gdGhlIGZpcnN0IGxpbmUsIG5vIGJyZWFrcyBhcmUgbmVlZGVkXG4gIC8vIC0gT3RoZXJ3aXNlIHRoZXJlIG11c3QgYmUgMiBicmVha3MgYmVmb3JlIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIuIERlcGVuZGluZyBvbiBob3cgbWFueSBicmVha3MgZXhpc3QgYWxyZWFkeSwgd2VcbiAgLy8gICAgICBtYXkgbmVlZCB0byBpbnNlcnQgMCwgMSBvciAyIGJyZWFrc1xuXG4gIGxldCBuZWVkZWRCcmVha3MgPSAyO1xuICBsZXQgaXNJbkxhc3RMaW5lID0gdHJ1ZTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0UG9zaXRpb247IGkgPCB0ZXh0Lmxlbmd0aCAmJiBuZWVkZWRCcmVha3MgPj0gMDsgaSsrKSB7XG4gICAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIGNhc2UgMzI6XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSAxMDoge1xuICAgICAgICBuZWVkZWRCcmVha3MtLTtcbiAgICAgICAgaXNJbkxhc3RMaW5lID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5lZWRlZEJyZWFrcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlzSW5MYXN0TGluZSA/IDAgOiBuZWVkZWRCcmVha3M7XG59XG4iXSwibWFwcGluZ3MiOiJBQUNBLE9BQU9BLGtCQUFrQixNQUFNLHNCQUFzQjtBQU9yRCxPQUFPLFNBQVNDLFVBQVUsT0FBOEM7RUFBQSxJQUEzQ0MsSUFBSSxRQUFKQSxJQUFJO0lBQUVDLFNBQVMsUUFBVEEsU0FBUztFQUMxQyxJQUFJRCxJQUFJLElBQUlBLElBQUksQ0FBQ0UsTUFBTSxJQUFJRCxTQUFTLENBQUNFLEtBQUssS0FBS0YsU0FBUyxDQUFDRyxHQUFHLEVBQUU7SUFDNUQ7SUFDQSxPQUFPTixrQkFBa0IsQ0FBQ0UsSUFBSSxFQUFFQyxTQUFTLENBQUNFLEtBQUssQ0FBQztFQUNsRDtFQUNBLE9BQU9GLFNBQVM7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLFNBQVNJLGlDQUFpQyxHQUEyQztFQUFBLElBQTFDTCxJQUFJLHVFQUFHLEVBQUU7RUFBQSxJQUFFTSxhQUFxQjtFQUNoRixJQUFJQSxhQUFhLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQzs7RUFFakM7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsSUFBSUMsWUFBWSxHQUFHLENBQUM7RUFDcEIsSUFBSUMsYUFBYSxHQUFHLElBQUk7RUFDeEIsS0FBSyxJQUFJQyxDQUFDLEdBQUdILGFBQWEsR0FBRyxDQUFDLEVBQUVHLENBQUMsSUFBSSxDQUFDLElBQUlGLFlBQVksSUFBSSxDQUFDLEVBQUVFLENBQUMsRUFBRSxFQUFFO0lBQ2hFLFFBQVFULElBQUksQ0FBQ1UsVUFBVSxDQUFDRCxDQUFDLENBQUM7TUFDeEIsS0FBSyxFQUFFO1FBQUU7UUFDUDtNQUNGLEtBQUssRUFBRTtRQUFFO1FBQ1BGLFlBQVksRUFBRTtRQUNkQyxhQUFhLEdBQUcsS0FBSztRQUNyQjtNQUNGO1FBQ0UsT0FBT0QsWUFBWTtJQUFDO0VBRTFCO0VBQ0EsT0FBT0MsYUFBYSxHQUFHLENBQUMsR0FBR0QsWUFBWTtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0ksZ0NBQWdDLEdBQTJDO0VBQUEsSUFBMUNYLElBQUksdUVBQUcsRUFBRTtFQUFBLElBQUVNLGFBQXFCO0VBQy9FLElBQUlBLGFBQWEsS0FBS04sSUFBSSxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQzs7RUFFL0M7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsSUFBSUssWUFBWSxHQUFHLENBQUM7RUFDcEIsSUFBSUssWUFBWSxHQUFHLElBQUk7RUFDdkIsS0FBSyxJQUFJSCxDQUFDLEdBQUdILGFBQWEsRUFBRUcsQ0FBQyxHQUFHVCxJQUFJLENBQUNFLE1BQU0sSUFBSUssWUFBWSxJQUFJLENBQUMsRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDckUsUUFBUVQsSUFBSSxDQUFDVSxVQUFVLENBQUNELENBQUMsQ0FBQztNQUN4QixLQUFLLEVBQUU7UUFDTDtNQUNGLEtBQUssRUFBRTtRQUFFO1VBQ1BGLFlBQVksRUFBRTtVQUNkSyxZQUFZLEdBQUcsS0FBSztVQUNwQjtRQUNGO01BQ0E7UUFDRSxPQUFPTCxZQUFZO0lBQUM7RUFFMUI7RUFDQSxPQUFPSyxZQUFZLEdBQUcsQ0FBQyxHQUFHTCxZQUFZO0FBQ3hDIn0=
|
package/package.json
CHANGED
|
@@ -1,33 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uiw/react-md-editor",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.8",
|
|
4
4
|
"description": "A markdown editor with preview, implemented with React.js and TypeScript.",
|
|
5
5
|
"homepage": "https://uiwjs.github.io/react-md-editor/",
|
|
6
6
|
"author": "kenny wang <wowohoo@qq.com>",
|
|
7
7
|
"main": "lib/cjs/index.js",
|
|
8
8
|
"module": "lib/esm/index.js",
|
|
9
9
|
"typings": "lib/cjs/index.d.ts",
|
|
10
|
-
"scripts": {
|
|
11
|
-
"prepare": "npm run build",
|
|
12
|
-
"test": "tsbb test --env=jsdom",
|
|
13
|
-
"coverage": "tsbb test --env=jsdom --coverage",
|
|
14
|
-
"released": "npm run build && npm run doc",
|
|
15
|
-
"doc": "kkt build --app-src ./website",
|
|
16
|
-
"start": "kkt start --app-src ./website",
|
|
17
|
-
"build": "npm run ts:build && npm run types:esm && npm run types:cjs && npm run css:build && npm run css:build:dist",
|
|
18
|
-
"watch": "npm run ts:watch & npm run types:watch & npm run css:watch",
|
|
19
|
-
"types:build": "tsbb types --sourceRoot src --target ESNEXT",
|
|
20
|
-
"types:watch": "npm run types:esm -- --watch & npm run types:cjs -- --watch",
|
|
21
|
-
"types:esm": "npm run types:build -- --outDir ../lib/esm",
|
|
22
|
-
"types:cjs": "npm run types:build -- --outDir ../lib/cjs",
|
|
23
|
-
"css:build": "compile-less -d src -o lib/esm",
|
|
24
|
-
"css:watch": "compile-less -d src -o lib/esm --watch",
|
|
25
|
-
"css:build:dist": "compile-less -d src --combine dist/markdown-editor.css --rm-global",
|
|
26
|
-
"ts:watch": "tsbb watch --env-name esm:dev --env-name cjs --target react",
|
|
27
|
-
"ts:build": "tsbb build --target react",
|
|
28
|
-
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
|
|
29
|
-
"map": "source-map-explorer build/static/js/*.js --html build/website-result.html"
|
|
30
|
-
},
|
|
31
10
|
"repository": {
|
|
32
11
|
"type": "git",
|
|
33
12
|
"url": "https://github.com/uiwjs/react-md-editor"
|
|
@@ -43,39 +22,34 @@
|
|
|
43
22
|
"react-dom": ">=16.8.0"
|
|
44
23
|
},
|
|
45
24
|
"devDependencies": {
|
|
46
|
-
"@kkt/less-modules": "6.
|
|
47
|
-
"@kkt/raw-modules": "6.
|
|
48
|
-
"@kkt/scope-plugin-options": "6.
|
|
25
|
+
"@kkt/less-modules": "6.10.4",
|
|
26
|
+
"@kkt/raw-modules": "6.10.4",
|
|
27
|
+
"@kkt/scope-plugin-options": "6.10.4",
|
|
49
28
|
"@types/katex": "0.11.0",
|
|
50
29
|
"@types/node": "14.14.36",
|
|
51
|
-
"@types/react": "17.0.
|
|
52
|
-
"@types/react-dom": "17.0.
|
|
30
|
+
"@types/react": "17.0.11",
|
|
31
|
+
"@types/react-dom": "17.0.8",
|
|
53
32
|
"@types/react-test-renderer": "17.0.1",
|
|
54
|
-
"@uiw/react-github-corners": "1.
|
|
33
|
+
"@uiw/react-github-corners": "1.4.0",
|
|
55
34
|
"@uiw/react-codesandbox": "1.1.0",
|
|
56
35
|
"@uiw/react-shields": "1.1.1",
|
|
57
|
-
"compile-less-cli": "1.
|
|
36
|
+
"compile-less-cli": "1.8.0",
|
|
58
37
|
"katex": "0.13.11",
|
|
59
|
-
"husky": "
|
|
60
|
-
"kkt": "6.
|
|
38
|
+
"husky": "6.0.0",
|
|
39
|
+
"kkt": "6.10.4",
|
|
61
40
|
"lint-staged": "11.0.0",
|
|
62
|
-
"prettier": "2.3.
|
|
41
|
+
"prettier": "2.3.1",
|
|
63
42
|
"react": "17.0.2",
|
|
64
43
|
"react-dom": "17.0.2",
|
|
65
44
|
"react-test-renderer": "17.0.2",
|
|
66
45
|
"source-map-explorer": "2.5.2",
|
|
67
|
-
"tsbb": "2.1
|
|
46
|
+
"tsbb": "2.2.1"
|
|
68
47
|
},
|
|
69
48
|
"dependencies": {
|
|
70
|
-
"@babel/runtime": "^7.14.
|
|
49
|
+
"@babel/runtime": "^7.14.6",
|
|
71
50
|
"@uiw/react-markdown-preview": "3.1.1",
|
|
72
51
|
"rehype": "11.0.0"
|
|
73
52
|
},
|
|
74
|
-
"husky": {
|
|
75
|
-
"hooks": {
|
|
76
|
-
"pre-commit": "lint-staged"
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
53
|
"keywords": [
|
|
80
54
|
"react",
|
|
81
55
|
"editor",
|
|
@@ -89,31 +63,5 @@
|
|
|
89
63
|
"uiw",
|
|
90
64
|
"uiwjs",
|
|
91
65
|
"code"
|
|
92
|
-
]
|
|
93
|
-
"lint-staged": {
|
|
94
|
-
"*.{js,jsx,less,md,json}": [
|
|
95
|
-
"prettier --write"
|
|
96
|
-
],
|
|
97
|
-
"*.ts?(x)": [
|
|
98
|
-
"prettier --parser=typescript --write"
|
|
99
|
-
]
|
|
100
|
-
},
|
|
101
|
-
"eslintConfig": {
|
|
102
|
-
"extends": [
|
|
103
|
-
"react-app",
|
|
104
|
-
"react-app/jest"
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
"browserslist": {
|
|
108
|
-
"production": [
|
|
109
|
-
">0.2%",
|
|
110
|
-
"not dead",
|
|
111
|
-
"not op_mini all"
|
|
112
|
-
],
|
|
113
|
-
"development": [
|
|
114
|
-
"last 1 chrome version",
|
|
115
|
-
"last 1 firefox version",
|
|
116
|
-
"last 1 safari version"
|
|
117
|
-
]
|
|
118
|
-
}
|
|
66
|
+
]
|
|
119
67
|
}
|
package/src/commands/index.ts
CHANGED
|
@@ -25,19 +25,22 @@ import { ContextStore, ExecuteCommandState } from '../Context';
|
|
|
25
25
|
export interface CommandOrchestrator {
|
|
26
26
|
executeCommand(command: ICommand): void;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
|
|
29
|
+
export interface ICommandChildHandle<T = string> extends ICommandBase<T> {
|
|
30
|
+
children?: (handle: {
|
|
31
|
+
close: () => void;
|
|
32
|
+
execute: () => void;
|
|
33
|
+
getState?: TextAreaCommandOrchestrator['getState'];
|
|
34
|
+
textApi?: TextAreaTextApi;
|
|
35
|
+
}) => React.ReactElement;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface ICommandChildCommands<T = string> extends ICommandBase<T> {
|
|
36
39
|
children?: Array<ICommand<T>>;
|
|
37
|
-
}
|
|
40
|
+
}
|
|
38
41
|
|
|
39
|
-
export
|
|
40
|
-
parent?: ICommand
|
|
42
|
+
export interface ICommandBase<T> {
|
|
43
|
+
parent?: ICommand<any>;
|
|
41
44
|
keyCommand?: string;
|
|
42
45
|
name?: string;
|
|
43
46
|
shortcuts?: string;
|
|
@@ -53,8 +56,9 @@ export type ICommand<T = string> = {
|
|
|
53
56
|
dispatch?: React.Dispatch<ContextStore>,
|
|
54
57
|
executeCommandState?: ExecuteCommandState,
|
|
55
58
|
) => void;
|
|
56
|
-
}
|
|
57
|
-
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type ICommand<T = string> = ICommandChildCommands<T> | ICommandChildHandle<T>;
|
|
58
62
|
|
|
59
63
|
export interface TextRange {
|
|
60
64
|
start: number;
|
|
@@ -60,7 +60,7 @@ export function ToolbarItems(props: IToolbarProps) {
|
|
|
60
60
|
const activeBtn =
|
|
61
61
|
(fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);
|
|
62
62
|
const childNode =
|
|
63
|
-
typeof item.children === 'function'
|
|
63
|
+
item.children && typeof item.children === 'function'
|
|
64
64
|
? item.children({
|
|
65
65
|
getState: () => commandOrchestrator!.getState(),
|
|
66
66
|
textApi: commandOrchestrator ? commandOrchestrator!.textApi : undefined,
|
|
@@ -92,9 +92,7 @@ export function ToolbarItems(props: IToolbarProps) {
|
|
|
92
92
|
groupName={item.groupName}
|
|
93
93
|
prefixCls={prefixCls}
|
|
94
94
|
children={childNode}
|
|
95
|
-
commands={
|
|
96
|
-
Array.isArray(item.children) && typeof item.children !== 'function' ? item.children : undefined
|
|
97
|
-
}
|
|
95
|
+
commands={Array.isArray(item.children) ? item.children : undefined}
|
|
98
96
|
/>
|
|
99
97
|
)}
|
|
100
98
|
</li>
|