@uiw/react-md-editor 3.19.0 → 3.19.1
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/mdeditor.js +1559 -1578
- package/dist/mdeditor.min.js +1 -1
- package/esm/Context.js.map +1 -1
- package/esm/Editor.js +43 -67
- package/esm/Editor.js.map +1 -1
- package/esm/commands/bold.js +4 -4
- package/esm/commands/bold.js.map +1 -1
- package/esm/commands/code.js +4 -6
- package/esm/commands/code.js.map +1 -1
- package/esm/commands/comment.js +4 -4
- package/esm/commands/comment.js.map +1 -1
- package/esm/commands/divider.js.map +1 -1
- package/esm/commands/fullscreen.js +3 -4
- package/esm/commands/fullscreen.js.map +2 -2
- package/esm/commands/group.js +2 -4
- package/esm/commands/group.js.map +1 -1
- package/esm/commands/hr.js.map +1 -1
- package/esm/commands/image.js +4 -4
- package/esm/commands/image.js.map +1 -1
- package/esm/commands/index.d.ts +2 -2
- package/esm/commands/index.js +6 -17
- package/esm/commands/index.js.map +3 -2
- package/esm/commands/italic.js +4 -4
- package/esm/commands/italic.js.map +1 -1
- package/esm/commands/link.js +4 -4
- package/esm/commands/link.js.map +1 -1
- package/esm/commands/list.js +4 -4
- package/esm/commands/list.js.map +1 -1
- package/esm/commands/preview.js +21 -3
- package/esm/commands/preview.js.map +7 -2
- package/esm/commands/quote.js +2 -1
- package/esm/commands/quote.js.map +1 -1
- package/esm/commands/strikeThrough.js +4 -4
- package/esm/commands/strikeThrough.js.map +1 -1
- package/esm/commands/title.js.map +1 -1
- package/esm/commands/title1.js.map +1 -1
- package/esm/commands/title2.js.map +1 -1
- package/esm/commands/title3.js.map +1 -1
- package/esm/commands/title4.js.map +1 -1
- package/esm/commands/title5.js.map +1 -1
- package/esm/commands/title6.js.map +1 -1
- package/esm/components/DragBar/index.js +2 -9
- package/esm/components/DragBar/index.js.map +1 -1
- package/esm/components/TextArea/Markdown.js +2 -7
- package/esm/components/TextArea/Markdown.js.map +1 -1
- package/esm/components/TextArea/Textarea.js +8 -11
- package/esm/components/TextArea/Textarea.js.map +1 -1
- package/esm/components/TextArea/handleKeyDown.js +2 -16
- package/esm/components/TextArea/handleKeyDown.js.map +1 -1
- package/esm/components/TextArea/index.js +11 -15
- package/esm/components/TextArea/index.js.map +1 -1
- package/esm/components/TextArea/shortcuts.js +1 -17
- package/esm/components/TextArea/shortcuts.js.map +2 -2
- package/esm/components/Toolbar/Child.js +2 -1
- package/esm/components/Toolbar/Child.js.map +1 -1
- package/esm/components/Toolbar/index.js +2 -12
- package/esm/components/Toolbar/index.js.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/utils/InsertTextAtPosition.js +28 -34
- package/esm/utils/InsertTextAtPosition.js.map +1 -1
- package/esm/utils/markdownUtils.js +14 -23
- package/esm/utils/markdownUtils.js.map +1 -1
- package/lib/Context.js +0 -6
- package/lib/Context.js.map +1 -1
- package/lib/Editor.js +74 -114
- package/lib/Editor.js.map +1 -1
- package/lib/commands/bold.js +4 -9
- package/lib/commands/bold.js.map +1 -1
- package/lib/commands/code.js +4 -11
- package/lib/commands/code.js.map +1 -1
- package/lib/commands/comment.js +4 -7
- package/lib/commands/comment.js.map +1 -1
- package/lib/commands/divider.js.map +1 -1
- package/lib/commands/fullscreen.js +3 -8
- package/lib/commands/fullscreen.js.map +2 -2
- package/lib/commands/group.js +2 -10
- package/lib/commands/group.js.map +1 -1
- package/lib/commands/hr.js +0 -4
- package/lib/commands/hr.js.map +1 -1
- package/lib/commands/image.js +4 -9
- package/lib/commands/image.js.map +1 -1
- package/lib/commands/index.d.ts +2 -2
- package/lib/commands/index.js +4 -41
- package/lib/commands/index.js.map +3 -2
- package/lib/commands/italic.js +4 -9
- package/lib/commands/italic.js.map +1 -1
- package/lib/commands/link.js +4 -9
- package/lib/commands/link.js.map +1 -1
- package/lib/commands/list.js +4 -10
- package/lib/commands/list.js.map +1 -1
- package/lib/commands/preview.js +21 -7
- package/lib/commands/preview.js.map +7 -2
- package/lib/commands/quote.js +2 -6
- package/lib/commands/quote.js.map +1 -1
- package/lib/commands/strikeThrough.js +4 -9
- package/lib/commands/strikeThrough.js.map +1 -1
- package/lib/commands/title.js +0 -6
- package/lib/commands/title.js.map +1 -1
- package/lib/commands/title1.js +0 -5
- package/lib/commands/title1.js.map +1 -1
- package/lib/commands/title2.js +0 -5
- package/lib/commands/title2.js.map +1 -1
- package/lib/commands/title3.js +0 -5
- package/lib/commands/title3.js.map +1 -1
- package/lib/commands/title4.js +0 -5
- package/lib/commands/title4.js.map +1 -1
- package/lib/commands/title5.js +0 -5
- package/lib/commands/title5.js.map +1 -1
- package/lib/commands/title6.js +0 -5
- package/lib/commands/title6.js.map +1 -1
- package/lib/components/DragBar/index.js +4 -15
- package/lib/components/DragBar/index.js.map +1 -1
- package/lib/components/TextArea/Markdown.js +6 -22
- package/lib/components/TextArea/Markdown.js.map +1 -1
- package/lib/components/TextArea/Textarea.js +15 -36
- package/lib/components/TextArea/Textarea.js.map +1 -1
- package/lib/components/TextArea/handleKeyDown.js +1 -18
- package/lib/components/TextArea/handleKeyDown.js.map +1 -1
- package/lib/components/TextArea/index.js +15 -37
- package/lib/components/TextArea/index.js.map +1 -1
- package/lib/components/TextArea/shortcuts.js +1 -17
- package/lib/components/TextArea/shortcuts.js.map +2 -2
- package/lib/components/Toolbar/Child.js +8 -18
- package/lib/components/Toolbar/Child.js.map +1 -1
- package/lib/components/Toolbar/index.js +14 -36
- package/lib/components/Toolbar/index.js.map +1 -1
- package/lib/index.js +0 -9
- package/lib/index.js.map +1 -1
- package/lib/utils/InsertTextAtPosition.js +28 -37
- package/lib/utils/InsertTextAtPosition.js.map +1 -1
- package/lib/utils/markdownUtils.js +17 -28
- package/lib/utils/markdownUtils.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/fullscreen.tsx +3 -2
- package/src/commands/index.ts +3 -1
- package/src/commands/preview.tsx +35 -4
- package/src/components/TextArea/shortcuts.ts +2 -2
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"sourcesContent": [
|
|
30
30
|
"import * as React from 'react';\nimport { insertAtLineStart } from '../utils/InsertTextAtPosition';\nimport { ICommand, TextState, TextAreaTextApi } from './';\n\nexport const title5: ICommand = {\n name: 'title5',\n keyCommand: 'title5',\n shortcuts: 'ctrlcmd+5',\n value: 'title5',\n buttonProps: { 'aria-label': 'Insert title5 (ctrl + 5)', title: 'Insert title5 (ctrl + 5)' },\n icon: <div style={{ fontSize: 12, textAlign: 'left' }}>Title 5</div>,\n execute: (state: TextState, api: TextAreaTextApi) => {\n if (state.selection.start === 0 || /\\n$/.test(state.text)) {\n api.replaceSelection('##### ');\n } else {\n insertAtLineStart('##### ', state.selection.start, api.textArea);\n }\n },\n};\n"
|
|
31
31
|
],
|
|
32
|
-
"mappings": "AAAA,OAAO,KAAKA,
|
|
32
|
+
"mappings": "AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,iBAAiB,QAAQ,+BAA+B;AAAC;AAGlE,OAAO,IAAMC,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QAAQ;EACdC,UAAU,EAAE,QAAQ;EACpBC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAE,QAAQ;EACfC,WAAW,EAAE;IAAE,YAAY,EAAE,0BAA0B;IAAEC,KAAK,EAAE;EAA2B,CAAC;EAC5FC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAE;MAAEC,SAAS,EAAE;IAAO,CAAE;IAAA;EAAA,EAAc;EACpEC,OAAO,EAAE,CAACC,KAAgB,EAAEC,GAAoB,KAAK;IACnD,IAAID,KAAK,CAACE,SAAS,CAACC,KAAK,KAAK,CAAC,IAAI,KAAK,CAACC,IAAI,CAACJ,KAAK,CAACK,IAAI,CAAC,EAAE;MACzDJ,GAAG,CAACK,gBAAgB,CAAC,QAAQ,CAAC;IAChC,CAAC,MAAM;MACLlB,iBAAiB,CAAC,QAAQ,EAAEY,KAAK,CAACE,SAAS,CAACC,KAAK,EAAEF,GAAG,CAACM,QAAQ,CAAC;IAClE;EACF;AACF,CAAC"
|
|
33
33
|
}
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"sourcesContent": [
|
|
30
30
|
"import * as React from 'react';\nimport { insertAtLineStart } from '../utils/InsertTextAtPosition';\nimport { ICommand, TextState, TextAreaTextApi } from './';\n\nexport const title6: ICommand = {\n name: 'title6',\n keyCommand: 'title6',\n shortcuts: 'ctrlcmd+6',\n value: 'title6',\n buttonProps: { 'aria-label': 'Insert title6 (ctrl + 6)', title: 'Insert title6 (ctrl + 6)' },\n icon: <div style={{ fontSize: 12, textAlign: 'left' }}>Title 6</div>,\n execute: (state: TextState, api: TextAreaTextApi) => {\n if (state.selection.start === 0 || /\\n$/.test(state.text)) {\n api.replaceSelection('###### ');\n } else {\n insertAtLineStart('###### ', state.selection.start, api.textArea);\n }\n },\n};\n"
|
|
31
31
|
],
|
|
32
|
-
"mappings": "AAAA,OAAO,KAAKA,
|
|
32
|
+
"mappings": "AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,iBAAiB,QAAQ,+BAA+B;AAAC;AAGlE,OAAO,IAAMC,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QAAQ;EACdC,UAAU,EAAE,QAAQ;EACpBC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAE,QAAQ;EACfC,WAAW,EAAE;IAAE,YAAY,EAAE,0BAA0B;IAAEC,KAAK,EAAE;EAA2B,CAAC;EAC5FC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAE;MAAEC,SAAS,EAAE;IAAO,CAAE;IAAA;EAAA,EAAc;EACpEC,OAAO,EAAE,CAACC,KAAgB,EAAEC,GAAoB,KAAK;IACnD,IAAID,KAAK,CAACE,SAAS,CAACC,KAAK,KAAK,CAAC,IAAI,KAAK,CAACC,IAAI,CAACJ,KAAK,CAACK,IAAI,CAAC,EAAE;MACzDJ,GAAG,CAACK,gBAAgB,CAAC,SAAS,CAAC;IACjC,CAAC,MAAM;MACLlB,iBAAiB,CAAC,SAAS,EAAEY,KAAK,CAACE,SAAS,CAACC,KAAK,EAAEF,GAAG,CAACM,QAAQ,CAAC;IACnE;EACF;AACF,CAAC"
|
|
33
33
|
}
|
|
@@ -1,47 +1,41 @@
|
|
|
1
1
|
import React, { useEffect, useMemo, useRef } from 'react';
|
|
2
2
|
import "./index.css";
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
|
|
5
4
|
var DragBar = props => {
|
|
6
5
|
var {
|
|
7
6
|
prefixCls,
|
|
8
7
|
onChange
|
|
9
8
|
} = props || {};
|
|
10
9
|
var dragRef = useRef();
|
|
11
|
-
|
|
12
10
|
function handleMouseMove(event) {
|
|
13
11
|
if (dragRef.current) {
|
|
14
12
|
var newHeight = dragRef.current.height + event.clientY - dragRef.current.dragY;
|
|
15
|
-
|
|
16
13
|
if (newHeight >= props.minHeight && newHeight <= props.maxHeight) {
|
|
17
14
|
onChange && onChange(dragRef.current.height + (event.clientY - dragRef.current.dragY));
|
|
18
15
|
}
|
|
19
16
|
}
|
|
20
17
|
}
|
|
21
|
-
|
|
22
18
|
function handleMouseUp() {
|
|
23
19
|
dragRef.current = undefined;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
function handleMouseDown(event) {
|
|
27
22
|
dragRef.current = {
|
|
28
23
|
height: props.height,
|
|
29
24
|
dragY: event.clientY
|
|
30
25
|
};
|
|
31
26
|
}
|
|
32
|
-
|
|
33
27
|
useEffect(() => {
|
|
34
28
|
if (document) {
|
|
35
29
|
document.addEventListener('mousemove', handleMouseMove);
|
|
36
30
|
document.addEventListener('mouseup', handleMouseUp);
|
|
37
31
|
}
|
|
38
|
-
|
|
39
32
|
return () => {
|
|
40
33
|
if (document) {
|
|
41
34
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
42
35
|
document.removeEventListener('mouseup', handleMouseUp);
|
|
43
36
|
}
|
|
44
|
-
};
|
|
37
|
+
};
|
|
38
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
39
|
}, []);
|
|
46
40
|
var svg = useMemo(() => /*#__PURE__*/_jsx("svg", {
|
|
47
41
|
viewBox: "0 0 512 512",
|
|
@@ -57,6 +51,5 @@ var DragBar = props => {
|
|
|
57
51
|
children: svg
|
|
58
52
|
});
|
|
59
53
|
};
|
|
60
|
-
|
|
61
54
|
export default DragBar;
|
|
62
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"sourcesContent": [
|
|
34
34
|
"import React, { useEffect, useMemo, useRef } from 'react';\nimport { IProps } from '../../Editor';\nimport './index.less';\n\nexport interface IDragBarProps extends IProps {\n height: number;\n maxHeight: number;\n minHeight: number;\n onChange: (value: number) => void;\n}\n\nconst DragBar: React.FC<IDragBarProps> = (props) => {\n const { prefixCls, onChange } = props || {};\n const dragRef = useRef<{ height: number; dragY: number }>();\n function handleMouseMove(event: MouseEvent) {\n if (dragRef.current) {\n const newHeight = dragRef.current.height + event.clientY - dragRef.current.dragY;\n if (newHeight >= props.minHeight && newHeight <= props.maxHeight) {\n onChange && onChange(dragRef.current.height + (event.clientY - dragRef.current.dragY));\n }\n }\n }\n function handleMouseUp() {\n dragRef.current = undefined;\n }\n function handleMouseDown(event: React.MouseEvent<HTMLDivElement, MouseEvent>) {\n dragRef.current = {\n height: props.height,\n dragY: event.clientY,\n };\n }\n\n useEffect(() => {\n if (document) {\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }\n return () => {\n if (document) {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const svg = useMemo(\n () => (\n <svg viewBox=\"0 0 512 512\" height=\"100%\">\n <path\n fill=\"currentColor\"\n d=\"M304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48zm120-48c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-336 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"\n />\n </svg>\n ),\n [],\n );\n return (\n <div className={`${prefixCls}-bar`} onMouseDown={handleMouseDown}>\n {svg}\n </div>\n );\n};\n\nexport default DragBar;\n"
|
|
35
35
|
],
|
|
36
|
-
"mappings": "AAAA,OAAOA,
|
|
36
|
+
"mappings": "AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAEzD;AAAsB;AAStB,IAAMC,OAAgC,GAAIC,KAAK,IAAK;EAClD,IAAM;IAAEC,SAAS;IAAEC;EAAS,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC3C,IAAMG,OAAO,GAAGL,MAAM,EAAqC;EAC3D,SAASM,eAAe,CAACC,KAAiB,EAAE;IAC1C,IAAIF,OAAO,CAACG,OAAO,EAAE;MACnB,IAAMC,SAAS,GAAGJ,OAAO,CAACG,OAAO,CAACE,MAAM,GAAGH,KAAK,CAACI,OAAO,GAAGN,OAAO,CAACG,OAAO,CAACI,KAAK;MAChF,IAAIH,SAAS,IAAIP,KAAK,CAACW,SAAS,IAAIJ,SAAS,IAAIP,KAAK,CAACY,SAAS,EAAE;QAChEV,QAAQ,IAAIA,QAAQ,CAACC,OAAO,CAACG,OAAO,CAACE,MAAM,IAAIH,KAAK,CAACI,OAAO,GAAGN,OAAO,CAACG,OAAO,CAACI,KAAK,CAAC,CAAC;MACxF;IACF;EACF;EACA,SAASG,aAAa,GAAG;IACvBV,OAAO,CAACG,OAAO,GAAGQ,SAAS;EAC7B;EACA,SAASC,eAAe,CAACV,KAAmD,EAAE;IAC5EF,OAAO,CAACG,OAAO,GAAG;MAChBE,MAAM,EAAER,KAAK,CAACQ,MAAM;MACpBE,KAAK,EAAEL,KAAK,CAACI;IACf,CAAC;EACH;EAEAb,SAAS,CAAC,MAAM;IACd,IAAIoB,QAAQ,EAAE;MACZA,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAEb,eAAe,CAAC;MACvDY,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEJ,aAAa,CAAC;IACrD;IACA,OAAO,MAAM;MACX,IAAIG,QAAQ,EAAE;QACZA,QAAQ,CAACE,mBAAmB,CAAC,WAAW,EAAEd,eAAe,CAAC;QAC1DY,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEL,aAAa,CAAC;MACxD;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EACN,IAAMM,GAAG,GAAGtB,OAAO,CACjB,mBACE;IAAK,OAAO,EAAC,aAAa;IAAC,MAAM,EAAC,MAAM;IAAA,uBACtC;MACE,IAAI,EAAC,cAAc;MACnB,CAAC,EAAC;IAA2N;EAC7N,EAEL,EACD,EAAE,CACH;EACD,oBACE;IAAK,SAAS,EAAKI,SAAS,SAAO;IAAC,WAAW,EAAEc,eAAgB;IAAA,UAC9DI;EAAG,EACA;AAEV,CAAC;AAED,eAAepB,OAAO"
|
|
37
37
|
}
|
|
@@ -3,7 +3,6 @@ import { rehype } from 'rehype';
|
|
|
3
3
|
import rehypePrism from 'rehype-prism-plus';
|
|
4
4
|
import { EditorContext } from '../../Context';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
|
|
7
6
|
function html2Escape(sHtml) {
|
|
8
7
|
return sHtml.replace(/```(tsx?|jsx?|html|xml)(.*)\s+([\s\S]*?)(\s.+)?```/g, str => {
|
|
9
8
|
return str.replace(/[<&"]/g, c => ({
|
|
@@ -19,7 +18,6 @@ function html2Escape(sHtml) {
|
|
|
19
18
|
'"': '"'
|
|
20
19
|
})[c]);
|
|
21
20
|
}
|
|
22
|
-
|
|
23
21
|
export default function Markdown(props) {
|
|
24
22
|
var {
|
|
25
23
|
prefixCls
|
|
@@ -35,8 +33,8 @@ export default function Markdown(props) {
|
|
|
35
33
|
dispatch({
|
|
36
34
|
textareaPre: preRef.current
|
|
37
35
|
});
|
|
38
|
-
}
|
|
39
|
-
|
|
36
|
+
}
|
|
37
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
40
38
|
}, []);
|
|
41
39
|
return useMemo(() => {
|
|
42
40
|
if (!markdown) {
|
|
@@ -45,9 +43,7 @@ export default function Markdown(props) {
|
|
|
45
43
|
className: prefixCls + "-text-pre wmde-markdown-color"
|
|
46
44
|
});
|
|
47
45
|
}
|
|
48
|
-
|
|
49
46
|
var mdStr = "<pre class=\"language-markdown " + prefixCls + "-text-pre wmde-markdown-color\"><code class=\"language-markdown\">" + html2Escape(markdown) + "\n</code></pre>";
|
|
50
|
-
|
|
51
47
|
if (highlightEnable) {
|
|
52
48
|
try {
|
|
53
49
|
mdStr = rehype().data('settings', {
|
|
@@ -57,7 +53,6 @@ export default function Markdown(props) {
|
|
|
57
53
|
}).processSync(mdStr).toString();
|
|
58
54
|
} catch (error) {}
|
|
59
55
|
}
|
|
60
|
-
|
|
61
56
|
return /*#__PURE__*/React.createElement('div', {
|
|
62
57
|
className: 'wmde-markdown-color',
|
|
63
58
|
dangerouslySetInnerHTML: {
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"sourcesContent": [
|
|
43
43
|
"import React, { useContext, useEffect, useMemo } from 'react';\nimport { rehype } from 'rehype';\nimport rehypePrism from 'rehype-prism-plus';\nimport { IProps } from '../../Editor';\nimport { EditorContext } from '../../Context';\n\nfunction html2Escape(sHtml: string) {\n return sHtml\n .replace(/```(tsx?|jsx?|html|xml)(.*)\\s+([\\s\\S]*?)(\\s.+)?```/g, (str: string) => {\n return str.replace(\n /[<&\"]/g,\n (c: string) => (({ '<': '<', '>': '>', '&': '&', '\"': '"' } as Record<string, string>)[c]),\n );\n })\n .replace(\n /[<&\"]/g,\n (c: string) => (({ '<': '<', '>': '>', '&': '&', '\"': '"' } as Record<string, string>)[c]),\n );\n}\n\nexport interface MarkdownProps extends IProps, React.HTMLAttributes<HTMLPreElement> {}\n\nexport default function Markdown(props: MarkdownProps) {\n const { prefixCls } = props;\n const { markdown = '', highlightEnable, dispatch } = useContext(EditorContext);\n const preRef = React.createRef<HTMLPreElement>();\n useEffect(() => {\n if (preRef.current && dispatch) {\n dispatch({ textareaPre: preRef.current });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return useMemo(() => {\n if (!markdown) {\n return <pre ref={preRef} className={`${prefixCls}-text-pre wmde-markdown-color`} />;\n }\n let mdStr = `<pre class=\"language-markdown ${prefixCls}-text-pre wmde-markdown-color\"><code class=\"language-markdown\">${html2Escape(\n markdown,\n )}\\n</code></pre>`;\n\n if (highlightEnable) {\n try {\n mdStr = rehype()\n .data('settings', { fragment: true })\n .use(rehypePrism, { ignoreMissing: true })\n .processSync(mdStr)\n .toString();\n } catch (error) {}\n }\n\n return React.createElement('div', {\n className: 'wmde-markdown-color',\n dangerouslySetInnerHTML: { __html: mdStr || '' },\n });\n }, [markdown, preRef, prefixCls]);\n}\n"
|
|
44
44
|
],
|
|
45
|
-
"mappings": "AAAA,OAAOA,
|
|
45
|
+
"mappings": "AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAC7D,SAASC,MAAM,QAAQ,QAAQ;AAC/B,OAAOC,WAAW,MAAM,mBAAmB;AAE3C,SAASC,aAAa,QAAQ,eAAe;AAAC;AAE9C,SAASC,WAAW,CAACC,KAAa,EAAE;EAClC,OAAOA,KAAK,CACTC,OAAO,CAAC,qDAAqD,EAAGC,GAAW,IAAK;IAC/E,OAAOA,GAAG,CAACD,OAAO,CAChB,QAAQ,EACPE,CAAS,IAAM,CAAC;MAAE,GAAG,EAAE,MAAM;MAAE,GAAG,EAAE,MAAM;MAAE,GAAG,EAAE,OAAO;MAAE,GAAG,EAAE;IAAS,CAAC,EAA4BA,CAAC,CAAE,CAC1G;EACH,CAAC,CAAC,CACDF,OAAO,CACN,QAAQ,EACPE,CAAS,IAAM,CAAC;IAAE,GAAG,EAAE,MAAM;IAAE,GAAG,EAAE,MAAM;IAAE,GAAG,EAAE,OAAO;IAAE,GAAG,EAAE;EAAS,CAAC,EAA4BA,CAAC,CAAE,CAC1G;AACL;AAIA,eAAe,SAASC,QAAQ,CAACC,KAAoB,EAAE;EACrD,IAAM;IAAEC;EAAU,CAAC,GAAGD,KAAK;EAC3B,IAAM;IAAEE,QAAQ,GAAG,EAAE;IAAEC,eAAe;IAAEC;EAAS,CAAC,GAAGhB,UAAU,CAACK,aAAa,CAAC;EAC9E,IAAMY,MAAM,gBAAGlB,KAAK,CAACmB,SAAS,EAAkB;EAChDjB,SAAS,CAAC,MAAM;IACd,IAAIgB,MAAM,CAACE,OAAO,IAAIH,QAAQ,EAAE;MAC9BA,QAAQ,CAAC;QAAEI,WAAW,EAAEH,MAAM,CAACE;MAAQ,CAAC,CAAC;IAC3C;IACA;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOjB,OAAO,CAAC,MAAM;IACnB,IAAI,CAACY,QAAQ,EAAE;MACb,oBAAO;QAAK,GAAG,EAAEG,MAAO;QAAC,SAAS,EAAKJ,SAAS;MAAgC,EAAG;IACrF;IACA,IAAIQ,KAAK,uCAAoCR,SAAS,0EAAkEP,WAAW,CACjIQ,QAAQ,CACT,oBAAiB;IAElB,IAAIC,eAAe,EAAE;MACnB,IAAI;QACFM,KAAK,GAAGlB,MAAM,EAAE,CACbmB,IAAI,CAAC,UAAU,EAAE;UAAEC,QAAQ,EAAE;QAAK,CAAC,CAAC,CACpCC,GAAG,CAACpB,WAAW,EAAE;UAAEqB,aAAa,EAAE;QAAK,CAAC,CAAC,CACzCC,WAAW,CAACL,KAAK,CAAC,CAClBM,QAAQ,EAAE;MACf,CAAC,CAAC,OAAOC,KAAK,EAAE,CAAC;IACnB;IAEA,oBAAO7B,KAAK,CAAC8B,aAAa,CAAC,KAAK,EAAE;MAChCC,SAAS,EAAE,qBAAqB;MAChCC,uBAAuB,EAAE;QAAEC,MAAM,EAAEX,KAAK,IAAI;MAAG;IACjD,CAAC,CAAC;EACJ,CAAC,EAAE,CAACP,QAAQ,EAAEG,MAAM,EAAEJ,SAAS,CAAC,CAAC;AACnC"
|
|
46
46
|
}
|
|
@@ -10,11 +10,10 @@ import "./index.css";
|
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
export default function Textarea(props) {
|
|
12
12
|
var {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
prefixCls,
|
|
14
|
+
onChange: _onChange
|
|
15
|
+
} = props,
|
|
16
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
18
17
|
var {
|
|
19
18
|
markdown,
|
|
20
19
|
commands,
|
|
@@ -47,26 +46,24 @@ export default function Textarea(props) {
|
|
|
47
46
|
textarea: textRef.current,
|
|
48
47
|
commandOrchestrator
|
|
49
48
|
});
|
|
50
|
-
}
|
|
51
|
-
|
|
49
|
+
}
|
|
50
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
51
|
}, []);
|
|
53
|
-
|
|
54
52
|
var onKeyDown = e => {
|
|
55
53
|
handleKeyDown(e, tabSize, defaultTabEnable);
|
|
56
54
|
shortcuts(e, [...(commands || []), ...(extraCommands || [])], executeRef.current, dispatch, statesRef.current);
|
|
57
55
|
};
|
|
58
|
-
|
|
59
56
|
useEffect(() => {
|
|
60
57
|
if (textRef.current) {
|
|
61
58
|
textRef.current.addEventListener('keydown', onKeyDown);
|
|
62
59
|
}
|
|
63
|
-
|
|
64
60
|
return () => {
|
|
65
61
|
if (textRef.current) {
|
|
66
62
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
63
|
textRef.current.removeEventListener('keydown', onKeyDown);
|
|
68
64
|
}
|
|
69
|
-
};
|
|
65
|
+
};
|
|
66
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
67
|
}, []);
|
|
71
68
|
return /*#__PURE__*/_jsx("textarea", _extends({
|
|
72
69
|
autoComplete: "off",
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"sourcesContent": [
|
|
44
44
|
"import React, { useContext, useEffect } from 'react';\nimport { IProps } from '../../Editor';\nimport { EditorContext, ExecuteCommandState } from '../../Context';\nimport { TextAreaCommandOrchestrator } from '../../commands';\nimport handleKeyDown from './handleKeyDown';\nimport shortcuts from './shortcuts';\nimport './index.less';\n\nexport interface TextAreaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value'>, IProps {}\n\nexport default function Textarea(props: TextAreaProps) {\n const { prefixCls, onChange, ...other } = props;\n const {\n markdown,\n commands,\n fullscreen,\n preview,\n highlightEnable,\n extraCommands,\n tabSize,\n defaultTabEnable,\n dispatch,\n } = useContext(EditorContext);\n const textRef = React.useRef<HTMLTextAreaElement>(null);\n const executeRef = React.useRef<TextAreaCommandOrchestrator>();\n const statesRef = React.useRef<ExecuteCommandState>({ fullscreen, preview });\n\n useEffect(() => {\n statesRef.current = { fullscreen, preview, highlightEnable };\n }, [fullscreen, preview, highlightEnable]);\n\n useEffect(() => {\n if (textRef.current && dispatch) {\n const commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);\n executeRef.current = commandOrchestrator;\n dispatch({ textarea: textRef.current, commandOrchestrator });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onKeyDown = (e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>) => {\n handleKeyDown(e, tabSize, defaultTabEnable);\n shortcuts(e, [...(commands || []), ...(extraCommands || [])], executeRef.current, dispatch, statesRef.current);\n };\n useEffect(() => {\n if (textRef.current) {\n textRef.current.addEventListener('keydown', onKeyDown);\n }\n return () => {\n if (textRef.current) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n textRef.current.removeEventListener('keydown', onKeyDown);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <textarea\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n {...other}\n ref={textRef}\n className={`${prefixCls}-text-input ${other.className ? other.className : ''}`}\n value={markdown}\n onChange={(e) => {\n dispatch && dispatch({ markdown: e.target.value });\n onChange && onChange(e);\n }}\n />\n );\n}\n"
|
|
45
45
|
],
|
|
46
|
-
"mappings": ";;;AAAA,OAAOA,
|
|
46
|
+
"mappings": ";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,QAAQ,OAAO;AAEpD,SAASC,aAAa,QAA6B,eAAe;AAClE,SAASC,2BAA2B,QAAQ,gBAAgB;AAC5D,OAAOC,aAAa,MAAM,iBAAiB;AAC3C,OAAOC,SAAS,MAAM,aAAa;AACnC;AAAsB;AAItB,eAAe,SAASC,QAAQ,CAACC,KAAoB,EAAE;EACrD,IAAM;MAAEC,SAAS;MAAEC,QAAQ,EAARA;IAAmB,CAAC,GAAGF,KAAK;IAAfG,KAAK,iCAAKH,KAAK;EAC/C,IAAM;IACJI,QAAQ;IACRC,QAAQ;IACRC,UAAU;IACVC,OAAO;IACPC,eAAe;IACfC,aAAa;IACbC,OAAO;IACPC,gBAAgB;IAChBC;EACF,CAAC,GAAGnB,UAAU,CAACE,aAAa,CAAC;EAC7B,IAAMkB,OAAO,GAAGrB,KAAK,CAACsB,MAAM,CAAsB,IAAI,CAAC;EACvD,IAAMC,UAAU,GAAGvB,KAAK,CAACsB,MAAM,EAA+B;EAC9D,IAAME,SAAS,GAAGxB,KAAK,CAACsB,MAAM,CAAsB;IAAER,UAAU;IAAEC;EAAQ,CAAC,CAAC;EAE5Eb,SAAS,CAAC,MAAM;IACdsB,SAAS,CAACC,OAAO,GAAG;MAAEX,UAAU;MAAEC,OAAO;MAAEC;IAAgB,CAAC;EAC9D,CAAC,EAAE,CAACF,UAAU,EAAEC,OAAO,EAAEC,eAAe,CAAC,CAAC;EAE1Cd,SAAS,CAAC,MAAM;IACd,IAAImB,OAAO,CAACI,OAAO,IAAIL,QAAQ,EAAE;MAC/B,IAAMM,mBAAmB,GAAG,IAAItB,2BAA2B,CAACiB,OAAO,CAACI,OAAO,CAAC;MAC5EF,UAAU,CAACE,OAAO,GAAGC,mBAAmB;MACxCN,QAAQ,CAAC;QAAEO,QAAQ,EAAEN,OAAO,CAACI,OAAO;QAAEC;MAAoB,CAAC,CAAC;IAC9D;IACA;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAME,SAAS,GAAIC,CAA2D,IAAK;IACjFxB,aAAa,CAACwB,CAAC,EAAEX,OAAO,EAAEC,gBAAgB,CAAC;IAC3Cb,SAAS,CAACuB,CAAC,EAAE,CAAC,IAAIhB,QAAQ,IAAI,EAAE,CAAC,EAAE,IAAII,aAAa,IAAI,EAAE,CAAC,CAAC,EAAEM,UAAU,CAACE,OAAO,EAAEL,QAAQ,EAAEI,SAAS,CAACC,OAAO,CAAC;EAChH,CAAC;EACDvB,SAAS,CAAC,MAAM;IACd,IAAImB,OAAO,CAACI,OAAO,EAAE;MACnBJ,OAAO,CAACI,OAAO,CAACK,gBAAgB,CAAC,SAAS,EAAEF,SAAS,CAAC;IACxD;IACA,OAAO,MAAM;MACX,IAAIP,OAAO,CAACI,OAAO,EAAE;QACnB;QACAJ,OAAO,CAACI,OAAO,CAACM,mBAAmB,CAAC,SAAS,EAAEH,SAAS,CAAC;MAC3D;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE;IACE,YAAY,EAAC,KAAK;IAClB,WAAW,EAAC,KAAK;IACjB,cAAc,EAAC,KAAK;IACpB,UAAU,EAAE;EAAM,GACdjB,KAAK;IACT,GAAG,EAAEU,OAAQ;IACb,SAAS,EAAKZ,SAAS,qBAAeE,KAAK,CAACqB,SAAS,GAAGrB,KAAK,CAACqB,SAAS,GAAG,EAAE,CAAG;IAC/E,KAAK,EAAEpB,QAAS;IAChB,QAAQ,EAAGiB,CAAC,IAAK;MACfT,QAAQ,IAAIA,QAAQ,CAAC;QAAER,QAAQ,EAAEiB,CAAC,CAACI,MAAM,CAACC;MAAM,CAAC,CAAC;MAClDxB,SAAQ,IAAIA,SAAQ,CAACmB,CAAC,CAAC;IACzB;EAAE,GACF;AAEN"
|
|
47
47
|
}
|
|
@@ -1,51 +1,43 @@
|
|
|
1
1
|
import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';
|
|
2
2
|
import { TextAreaTextApi } from '../../commands';
|
|
3
3
|
import { insertBeforeEachLine } from '../../commands/list';
|
|
4
|
+
|
|
4
5
|
/**
|
|
5
6
|
* - `13` - `Enter`
|
|
6
7
|
* - `9` - `Tab`
|
|
7
8
|
*/
|
|
8
|
-
|
|
9
9
|
function stopPropagation(e) {
|
|
10
10
|
e.stopPropagation();
|
|
11
11
|
e.preventDefault();
|
|
12
12
|
}
|
|
13
|
-
|
|
14
13
|
export default function handleKeyDown(e, tabSize, defaultTabEnable) {
|
|
15
14
|
if (tabSize === void 0) {
|
|
16
15
|
tabSize = 2;
|
|
17
16
|
}
|
|
18
|
-
|
|
19
17
|
if (defaultTabEnable === void 0) {
|
|
20
18
|
defaultTabEnable = false;
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
var target = e.target;
|
|
24
21
|
var starVal = target.value.substr(0, target.selectionStart);
|
|
25
22
|
var valArr = starVal.split('\n');
|
|
26
23
|
var currentLineStr = valArr[valArr.length - 1];
|
|
27
24
|
var textArea = new TextAreaTextApi(target);
|
|
25
|
+
|
|
28
26
|
/**
|
|
29
27
|
* `9` - `Tab`
|
|
30
28
|
*/
|
|
31
|
-
|
|
32
29
|
if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {
|
|
33
30
|
stopPropagation(e);
|
|
34
31
|
var space = new Array(tabSize + 1).join(' ');
|
|
35
|
-
|
|
36
32
|
if (target.selectionStart !== target.selectionEnd) {
|
|
37
33
|
var _star = target.value.substring(0, target.selectionStart).split('\n');
|
|
38
|
-
|
|
39
34
|
var _end = target.value.substring(0, target.selectionEnd).split('\n');
|
|
40
|
-
|
|
41
35
|
var modifiedTextLine = [];
|
|
42
|
-
|
|
43
36
|
_end.forEach((item, idx) => {
|
|
44
37
|
if (item !== _star[idx]) {
|
|
45
38
|
modifiedTextLine.push(item);
|
|
46
39
|
}
|
|
47
40
|
});
|
|
48
|
-
|
|
49
41
|
var modifiedText = modifiedTextLine.join('\n');
|
|
50
42
|
var oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);
|
|
51
43
|
var newStarNum = target.value.substring(0, target.selectionStart).length;
|
|
@@ -55,11 +47,9 @@ export default function handleKeyDown(e, tabSize, defaultTabEnable) {
|
|
|
55
47
|
});
|
|
56
48
|
var modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);
|
|
57
49
|
var text = modifiedTextObj.modifiedText;
|
|
58
|
-
|
|
59
50
|
if (e.shiftKey) {
|
|
60
51
|
text = text.split('\n').map(item => item.replace(new RegExp("^" + space), '')).join('\n');
|
|
61
52
|
}
|
|
62
|
-
|
|
63
53
|
textArea.replaceSelection(text);
|
|
64
54
|
var startTabSize = e.shiftKey ? -tabSize : tabSize;
|
|
65
55
|
var endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;
|
|
@@ -76,21 +66,17 @@ export default function handleKeyDown(e, tabSize, defaultTabEnable) {
|
|
|
76
66
|
*/
|
|
77
67
|
stopPropagation(e);
|
|
78
68
|
var startStr = '\n- ';
|
|
79
|
-
|
|
80
69
|
if (currentLineStr.startsWith('*')) {
|
|
81
70
|
startStr = '\n* ';
|
|
82
71
|
}
|
|
83
|
-
|
|
84
72
|
if (currentLineStr.startsWith('- [ ]')) {
|
|
85
73
|
startStr = '\n- [ ] ';
|
|
86
74
|
} else if (currentLineStr.startsWith('- [X]')) {
|
|
87
75
|
startStr = '\n- [X] ';
|
|
88
76
|
}
|
|
89
|
-
|
|
90
77
|
if (/^\d+.\s/.test(currentLineStr)) {
|
|
91
78
|
startStr = "\n" + (parseInt(currentLineStr) + 1) + ". ";
|
|
92
79
|
}
|
|
93
|
-
|
|
94
80
|
return insertTextAtPosition(target, startStr);
|
|
95
81
|
}
|
|
96
82
|
}
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"sourcesContent": [
|
|
62
62
|
"import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';\nimport { TextAreaTextApi } from '../../commands';\nimport { insertBeforeEachLine } from '../../commands/list';\n\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport default function handleKeyDown(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n tabSize: number = 2,\n defaultTabEnable: boolean = false,\n) {\n const target = e.target as HTMLTextAreaElement;\n const starVal = target.value.substr(0, target.selectionStart);\n const valArr = starVal.split('\\n');\n const currentLineStr = valArr[valArr.length - 1];\n const textArea = new TextAreaTextApi(target);\n\n /**\n * `9` - `Tab`\n */\n if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n stopPropagation(e);\n const space = new Array(tabSize + 1).join(' ');\n if (target.selectionStart !== target.selectionEnd) {\n const _star = target.value.substring(0, target.selectionStart).split('\\n');\n const _end = target.value.substring(0, target.selectionEnd).split('\\n');\n const modifiedTextLine: string[] = [];\n _end.forEach((item, idx) => {\n if (item !== _star[idx]) {\n modifiedTextLine.push(item);\n }\n });\n const modifiedText = modifiedTextLine.join('\\n');\n const oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n const newStarNum = target.value.substring(0, target.selectionStart).length;\n\n textArea.setSelectionRange({\n start: target.value.indexOf(modifiedText),\n end: target.selectionEnd,\n });\n\n const modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n\n let text = modifiedTextObj.modifiedText;\n if (e.shiftKey) {\n text = text\n .split('\\n')\n .map((item) => item.replace(new RegExp(`^${space}`), ''))\n .join('\\n');\n }\n textArea.replaceSelection(text);\n\n let startTabSize = e.shiftKey ? -tabSize : tabSize;\n let endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n\n textArea.setSelectionRange({\n start: newStarNum + startTabSize,\n end: newStarNum + oldSelectText.length + endTabSize,\n });\n } else {\n return insertTextAtPosition(target, space);\n }\n } else if (\n e.code &&\n e.code.toLowerCase() === 'enter' &&\n (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr))\n ) {\n /**\n * `13` - `Enter`\n */\n stopPropagation(e);\n let startStr = '\\n- ';\n\n if (currentLineStr.startsWith('*')) {\n startStr = '\\n* ';\n }\n\n if (currentLineStr.startsWith('- [ ]')) {\n startStr = '\\n- [ ] ';\n } else if (currentLineStr.startsWith('- [X]')) {\n startStr = '\\n- [X] ';\n }\n\n if (/^\\d+.\\s/.test(currentLineStr)) {\n startStr = `\\n${parseInt(currentLineStr) + 1}. `;\n }\n return insertTextAtPosition(target, startStr);\n }\n}\n"
|
|
63
63
|
],
|
|
64
|
-
"mappings": "AAAA,SAASA,
|
|
64
|
+
"mappings": "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"
|
|
65
65
|
}
|
|
@@ -12,14 +12,13 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
12
12
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
export default function TextArea(props) {
|
|
14
14
|
var _ref = props || {},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
{
|
|
16
|
+
prefixCls,
|
|
17
|
+
className,
|
|
18
|
+
onScroll,
|
|
19
|
+
renderTextarea
|
|
20
|
+
} = _ref,
|
|
21
|
+
otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
23
22
|
var {
|
|
24
23
|
markdown,
|
|
25
24
|
scrollTop,
|
|
@@ -33,28 +32,25 @@ export default function TextArea(props) {
|
|
|
33
32
|
var warp = /*#__PURE__*/React.createRef();
|
|
34
33
|
useEffect(() => {
|
|
35
34
|
var state = {};
|
|
36
|
-
|
|
37
35
|
if (warp.current) {
|
|
38
36
|
state.textareaWarp = warp.current || undefined;
|
|
39
37
|
warp.current.scrollTop = scrollTop || 0;
|
|
40
38
|
}
|
|
41
|
-
|
|
42
39
|
if (dispatch) {
|
|
43
40
|
dispatch(_extends({}, state));
|
|
44
|
-
}
|
|
45
|
-
|
|
41
|
+
}
|
|
42
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
46
43
|
}, []);
|
|
47
44
|
useEffect(() => {
|
|
48
45
|
if (textRef.current && dispatch) {
|
|
49
46
|
var _commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);
|
|
50
|
-
|
|
51
47
|
executeRef.current = _commandOrchestrator;
|
|
52
48
|
dispatch({
|
|
53
49
|
textarea: textRef.current,
|
|
54
50
|
commandOrchestrator: _commandOrchestrator
|
|
55
51
|
});
|
|
56
|
-
}
|
|
57
|
-
|
|
52
|
+
}
|
|
53
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
54
|
}, []);
|
|
59
55
|
var textStyle = highlightEnable ? {} : {
|
|
60
56
|
WebkitTextFillColor: 'initial',
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"sourcesContent": [
|
|
54
54
|
"import React, { useEffect, Fragment, useContext } from 'react';\nimport { EditorContext, ContextStore, ExecuteCommandState } from '../../Context';\nimport shortcuts from './shortcuts';\nimport Markdown from './Markdown';\nimport Textarea, { TextAreaProps } from './Textarea';\nimport { IProps } from '../../Editor';\nimport { TextAreaCommandOrchestrator, ICommand } from '../../commands';\nimport './index.less';\n\ntype RenderTextareaHandle = {\n dispatch: ContextStore['dispatch'];\n onChange?: TextAreaProps['onChange'];\n useContext?: {\n commands: ContextStore['commands'];\n extraCommands: ContextStore['extraCommands'];\n commandOrchestrator?: TextAreaCommandOrchestrator;\n };\n shortcuts?: (\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n commands: ICommand[],\n commandOrchestrator?: TextAreaCommandOrchestrator,\n dispatch?: React.Dispatch<ContextStore>,\n state?: ExecuteCommandState,\n ) => void;\n};\n\nexport interface ITextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onScroll'>,\n IProps {\n value?: string;\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n renderTextarea?: (\n props: React.TextareaHTMLAttributes<HTMLTextAreaElement> | React.HTMLAttributes<HTMLDivElement>,\n opts: RenderTextareaHandle,\n ) => JSX.Element;\n}\n\nexport type TextAreaRef = {\n text?: HTMLTextAreaElement;\n warp?: HTMLDivElement;\n};\n\nexport default function TextArea(props: ITextAreaProps) {\n const { prefixCls, className, onScroll, renderTextarea, ...otherProps } = props || {};\n const { markdown, scrollTop, commands, highlightEnable, extraCommands, dispatch } = useContext(EditorContext);\n const textRef = React.useRef<HTMLTextAreaElement>(null);\n const executeRef = React.useRef<TextAreaCommandOrchestrator>();\n const warp = React.createRef<HTMLDivElement>();\n useEffect(() => {\n const state: ContextStore = {};\n if (warp.current) {\n state.textareaWarp = warp.current || undefined;\n warp.current.scrollTop = scrollTop || 0;\n }\n if (dispatch) {\n dispatch({ ...state });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (textRef.current && dispatch) {\n const commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);\n executeRef.current = commandOrchestrator;\n dispatch({ textarea: textRef.current, commandOrchestrator });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const textStyle: React.CSSProperties = highlightEnable ? {} : { WebkitTextFillColor: 'initial', overflow: 'auto' };\n\n return (\n <div ref={warp} className={`${prefixCls}-aree ${className || ''}`} onScroll={onScroll}>\n <div className={`${prefixCls}-text`}>\n {renderTextarea ? (\n React.cloneElement(\n renderTextarea(\n {\n ...otherProps,\n value: markdown,\n autoComplete: 'off',\n autoCorrect: 'off',\n spellCheck: 'false',\n autoCapitalize: 'off',\n className: `${prefixCls}-text-input`,\n style: {\n WebkitTextFillColor: 'inherit',\n overflow: 'auto',\n },\n },\n {\n dispatch,\n onChange: otherProps.onChange,\n shortcuts,\n useContext: { commands, extraCommands, commandOrchestrator: executeRef.current },\n },\n ),\n {\n ref: textRef,\n },\n )\n ) : (\n <Fragment>\n {highlightEnable && <Markdown prefixCls={prefixCls} />}\n <Textarea prefixCls={prefixCls} {...otherProps} style={textStyle} />\n </Fragment>\n )}\n </div>\n </div>\n );\n}\n"
|
|
55
55
|
],
|
|
56
|
-
"mappings": ";;;AAAA,OAAOA,
|
|
56
|
+
"mappings": "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"
|
|
57
57
|
}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
|
|
3
2
|
function getCommands(data, resulte) {
|
|
4
3
|
if (data === void 0) {
|
|
5
4
|
data = [];
|
|
6
5
|
}
|
|
7
|
-
|
|
8
6
|
if (resulte === void 0) {
|
|
9
7
|
resulte = {};
|
|
10
8
|
}
|
|
11
|
-
|
|
12
9
|
data.forEach(item => {
|
|
13
10
|
if (item.children && Array.isArray(item.children)) {
|
|
14
11
|
resulte = _extends({}, resulte, getCommands(item.children || []));
|
|
@@ -18,43 +15,33 @@ function getCommands(data, resulte) {
|
|
|
18
15
|
});
|
|
19
16
|
return resulte;
|
|
20
17
|
}
|
|
21
|
-
|
|
22
18
|
export default function shortcutsHandle(e, commands, commandOrchestrator, dispatch, state) {
|
|
23
19
|
if (commands === void 0) {
|
|
24
20
|
commands = [];
|
|
25
21
|
}
|
|
26
|
-
|
|
27
22
|
var data = getCommands(commands || []);
|
|
28
23
|
var shortcuts = [];
|
|
29
|
-
|
|
30
24
|
if (e.altKey) {
|
|
31
25
|
shortcuts.push('alt');
|
|
32
26
|
}
|
|
33
|
-
|
|
34
27
|
if (e.shiftKey) {
|
|
35
28
|
shortcuts.push('shift');
|
|
36
29
|
}
|
|
37
|
-
|
|
38
30
|
if (e.metaKey) {
|
|
39
31
|
shortcuts.push('cmd');
|
|
40
32
|
}
|
|
41
|
-
|
|
42
33
|
if (e.ctrlKey) {
|
|
43
34
|
shortcuts.push('ctrl');
|
|
44
35
|
}
|
|
45
|
-
|
|
46
36
|
if (shortcuts.length > 0 && !/(control|alt|meta|shift)/.test(e.key.toLocaleLowerCase())) {
|
|
47
37
|
shortcuts.push(e.key.toLocaleLowerCase());
|
|
48
38
|
}
|
|
49
|
-
|
|
50
39
|
if (/escape/.test(e.key.toLocaleLowerCase())) {
|
|
51
40
|
shortcuts.push('escape');
|
|
52
41
|
}
|
|
53
|
-
|
|
54
42
|
if (shortcuts.length < 1) {
|
|
55
43
|
return;
|
|
56
44
|
}
|
|
57
|
-
|
|
58
45
|
var equal = !!data[shortcuts.join('+')];
|
|
59
46
|
var command = equal ? data[shortcuts.join('+')] : undefined;
|
|
60
47
|
Object.keys(data).forEach(item => {
|
|
@@ -62,19 +49,16 @@ export default function shortcutsHandle(e, commands, commandOrchestrator, dispat
|
|
|
62
49
|
if (/ctrlcmd/.test(v)) {
|
|
63
50
|
return shortcuts.includes('ctrl') || shortcuts.includes('cmd');
|
|
64
51
|
}
|
|
65
|
-
|
|
66
52
|
return shortcuts.includes(v);
|
|
67
53
|
});
|
|
68
|
-
|
|
69
54
|
if (isequal) {
|
|
70
55
|
command = data[item];
|
|
71
56
|
}
|
|
72
57
|
});
|
|
73
|
-
|
|
74
58
|
if (command && commandOrchestrator) {
|
|
75
59
|
e.stopPropagation();
|
|
76
60
|
e.preventDefault();
|
|
77
|
-
commandOrchestrator.executeCommand(command, dispatch, state);
|
|
61
|
+
commandOrchestrator.executeCommand(command, dispatch, state, shortcuts);
|
|
78
62
|
return;
|
|
79
63
|
}
|
|
80
64
|
}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"../../../src/components/TextArea/shortcuts.ts"
|
|
47
47
|
],
|
|
48
48
|
"sourcesContent": [
|
|
49
|
-
"import { ICommand, TextAreaCommandOrchestrator } from '../../commands';\nimport { ContextStore, ExecuteCommandState } from '../../Context';\n\nfunction getCommands(data: ICommand[] = [], resulte: Record<string, ICommand> = {}): Record<string, ICommand> {\n data.forEach((item) => {\n if (item.children && Array.isArray(item.children)) {\n resulte = { ...resulte, ...getCommands(item.children || []) };\n } else if (item.keyCommand && item.shortcuts && item.execute) {\n resulte[item.shortcuts.toLocaleLowerCase()] = item;\n }\n });\n return resulte;\n}\n\nexport default function shortcutsHandle(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n commands: ICommand[] = [],\n commandOrchestrator?: TextAreaCommandOrchestrator,\n dispatch?: React.Dispatch<ContextStore>,\n state?: ExecuteCommandState,\n) {\n const data = getCommands(commands || []);\n const shortcuts:
|
|
49
|
+
"import { ICommand, TextAreaCommandOrchestrator } from '../../commands';\nimport { ContextStore, ExecuteCommandState } from '../../Context';\n\nfunction getCommands(data: ICommand[] = [], resulte: Record<string, ICommand> = {}): Record<string, ICommand> {\n data.forEach((item) => {\n if (item.children && Array.isArray(item.children)) {\n resulte = { ...resulte, ...getCommands(item.children || []) };\n } else if (item.keyCommand && item.shortcuts && item.execute) {\n resulte[item.shortcuts.toLocaleLowerCase()] = item;\n }\n });\n return resulte;\n}\n\nexport default function shortcutsHandle(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n commands: ICommand[] = [],\n commandOrchestrator?: TextAreaCommandOrchestrator,\n dispatch?: React.Dispatch<ContextStore>,\n state?: ExecuteCommandState,\n) {\n const data = getCommands(commands || []);\n const shortcuts: string[] = [];\n if (e.altKey) {\n shortcuts.push('alt');\n }\n if (e.shiftKey) {\n shortcuts.push('shift');\n }\n if (e.metaKey) {\n shortcuts.push('cmd');\n }\n if (e.ctrlKey) {\n shortcuts.push('ctrl');\n }\n if (shortcuts.length > 0 && !/(control|alt|meta|shift)/.test(e.key.toLocaleLowerCase())) {\n shortcuts.push(e.key.toLocaleLowerCase());\n }\n if (/escape/.test(e.key.toLocaleLowerCase())) {\n shortcuts.push('escape');\n }\n if (shortcuts.length < 1) {\n return;\n }\n\n let equal = !!data[shortcuts.join('+')];\n let command = equal ? data[shortcuts.join('+')] : undefined;\n\n Object.keys(data).forEach((item) => {\n const isequal = item.split('+').every((v) => {\n if (/ctrlcmd/.test(v)) {\n return shortcuts.includes('ctrl') || shortcuts.includes('cmd');\n }\n return shortcuts.includes(v);\n });\n if (isequal) {\n command = data[item];\n }\n });\n if (command && commandOrchestrator) {\n e.stopPropagation();\n e.preventDefault();\n commandOrchestrator.executeCommand(command, dispatch, state, shortcuts);\n return;\n }\n}\n"
|
|
50
50
|
],
|
|
51
|
-
"mappings": "
|
|
51
|
+
"mappings": "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"
|
|
52
52
|
}
|
|
@@ -22,7 +22,8 @@ export default function Child(props) {
|
|
|
22
22
|
}, props, {
|
|
23
23
|
isChild: true
|
|
24
24
|
})) : children
|
|
25
|
-
}),
|
|
25
|
+
}),
|
|
26
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
27
|
[commands, barPopup, groupName, prefixCls]);
|
|
27
28
|
}
|
|
28
29
|
//# sourceMappingURL=Child.js.map
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"sourcesContent": [
|
|
25
25
|
"import React, { useContext, useMemo } from 'react';\nimport './Child.less';\nimport Toolbar, { IToolbarProps } from './';\nimport { EditorContext } from '../../Context';\n\nexport type ChildProps = IToolbarProps & {\n children?: JSX.Element;\n groupName?: string;\n};\n\nexport default function Child(props: ChildProps) {\n const { prefixCls, groupName, commands, children } = props || {};\n const { barPopup = {} } = useContext(EditorContext);\n return useMemo(\n () => (\n <div\n className={`${prefixCls}-toolbar-child ${groupName && barPopup[groupName] ? 'active' : ''}`}\n onClick={(e) => e.stopPropagation()}\n >\n {Array.isArray(commands) ? <Toolbar commands={commands} {...props} isChild /> : children}\n </div>\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [commands, barPopup, groupName, prefixCls],\n );\n}\n"
|
|
26
26
|
],
|
|
27
|
-
"mappings": ";AAAA,OAAOA,
|
|
27
|
+
"mappings": ";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD;AACA,OAAOC,OAAO,MAAyB,IAAI;AAC3C,SAASC,aAAa,QAAQ,eAAe;AAAC;AAO9C,eAAe,SAASC,KAAK,CAACC,KAAiB,EAAE;EAC/C,IAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC,QAAQ;IAAEC;EAAS,CAAC,GAAGJ,KAAK,IAAI,CAAC,CAAC;EAChE,IAAM;IAAEK,QAAQ,GAAG,CAAC;EAAE,CAAC,GAAGV,UAAU,CAACG,aAAa,CAAC;EACnD,OAAOF,OAAO,CACZ,mBACE;IACE,SAAS,EAAKK,SAAS,wBAAkBC,SAAS,IAAIG,QAAQ,CAACH,SAAS,CAAC,GAAG,QAAQ,GAAG,EAAE,CAAG;IAC5F,OAAO,EAAGI,CAAC,IAAKA,CAAC,CAACC,eAAe,EAAG;IAAA,UAEnCC,KAAK,CAACC,OAAO,CAACN,QAAQ,CAAC,gBAAG,KAAC,OAAO;MAAC,QAAQ,EAAEA;IAAS,GAAKH,KAAK;MAAE,OAAO;IAAA,GAAG,GAAGI;EAAQ,EAE3F;EACD;EACA,CAACD,QAAQ,EAAEE,QAAQ,EAAEH,SAAS,EAAED,SAAS,CAAC,CAC3C;AACH"
|
|
28
28
|
}
|