@uiw/react-md-editor 3.20.5 → 3.20.6
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 +5 -2
- package/dist/mdeditor.css +13 -0
- package/dist/mdeditor.js +8985 -914
- package/dist/mdeditor.min.css +1 -1
- package/dist/mdeditor.min.js +1 -1
- package/esm/Context.d.ts +3 -3
- package/esm/Context.js +1 -2
- package/esm/Editor.d.ts +1 -1
- package/esm/Editor.js +9 -2
- package/esm/commands/bold.js +1 -2
- package/esm/commands/code.js +2 -3
- package/esm/commands/comment.js +2 -2
- package/esm/commands/divider.js +1 -2
- package/esm/commands/fullscreen.js +2 -3
- package/esm/commands/group.d.ts +1 -1
- package/esm/commands/group.js +1 -2
- package/esm/commands/hr.js +2 -3
- package/esm/commands/image.js +2 -3
- package/esm/commands/index.d.ts +2 -2
- package/esm/commands/index.js +1 -2
- package/esm/commands/italic.js +2 -3
- package/esm/commands/link.js +2 -3
- package/esm/commands/list.d.ts +1 -1
- package/esm/commands/list.js +2 -3
- package/esm/commands/preview.js +2 -3
- package/esm/commands/quote.js +2 -3
- package/esm/commands/strikeThrough.js +2 -3
- package/esm/commands/title.js +1 -2
- package/esm/commands/title1.js +1 -2
- package/esm/commands/title2.js +2 -3
- package/esm/commands/title3.js +2 -3
- package/esm/commands/title4.js +2 -3
- package/esm/commands/title5.js +2 -3
- package/esm/commands/title6.js +2 -3
- package/esm/components/DragBar/index.js +1 -2
- package/esm/components/TextArea/Markdown.js +1 -2
- package/esm/components/TextArea/Textarea.js +1 -2
- package/esm/components/TextArea/handleKeyDown.d.ts +1 -0
- package/esm/components/TextArea/handleKeyDown.js +1 -2
- package/esm/components/TextArea/index.d.ts +2 -2
- package/esm/components/TextArea/index.js +1 -2
- package/esm/components/TextArea/shortcuts.d.ts +1 -0
- package/esm/components/TextArea/shortcuts.js +1 -2
- package/esm/components/Toolbar/Child.d.ts +2 -1
- package/esm/components/Toolbar/Child.js +1 -2
- package/esm/components/Toolbar/index.d.ts +1 -0
- package/esm/components/Toolbar/index.js +1 -2
- package/esm/index.js +1 -2
- package/esm/react-app-env.d.ts +1 -0
- package/esm/utils/InsertTextAtPosition.js +1 -2
- package/esm/utils/markdownUtils.js +1 -2
- package/lib/Context.d.ts +3 -3
- package/lib/Context.js +1 -2
- package/lib/Editor.d.ts +1 -1
- package/lib/Editor.js +13 -2
- package/lib/commands/bold.js +1 -2
- package/lib/commands/code.js +3 -4
- package/lib/commands/comment.js +3 -2
- package/lib/commands/divider.js +1 -2
- package/lib/commands/fullscreen.js +3 -4
- package/lib/commands/group.d.ts +1 -1
- package/lib/commands/group.js +1 -2
- package/lib/commands/hr.js +3 -4
- package/lib/commands/image.js +3 -4
- package/lib/commands/index.d.ts +2 -2
- package/lib/commands/index.js +1 -2
- package/lib/commands/italic.js +3 -4
- package/lib/commands/link.js +3 -4
- package/lib/commands/list.d.ts +1 -1
- package/lib/commands/list.js +3 -4
- package/lib/commands/preview.js +3 -4
- package/lib/commands/quote.js +3 -4
- package/lib/commands/strikeThrough.js +3 -4
- package/lib/commands/title.js +1 -2
- package/lib/commands/title1.js +1 -2
- package/lib/commands/title2.js +3 -4
- package/lib/commands/title3.js +3 -4
- package/lib/commands/title4.js +3 -4
- package/lib/commands/title5.js +3 -4
- package/lib/commands/title6.js +3 -4
- package/lib/components/DragBar/index.js +1 -2
- package/lib/components/TextArea/Markdown.js +1 -2
- package/lib/components/TextArea/Textarea.js +1 -2
- package/lib/components/TextArea/handleKeyDown.d.ts +1 -0
- package/lib/components/TextArea/handleKeyDown.js +1 -2
- package/lib/components/TextArea/index.d.ts +2 -2
- package/lib/components/TextArea/index.js +1 -2
- package/lib/components/TextArea/shortcuts.d.ts +1 -0
- package/lib/components/TextArea/shortcuts.js +1 -2
- package/lib/components/Toolbar/Child.d.ts +2 -1
- package/lib/components/Toolbar/Child.js +1 -2
- package/lib/components/Toolbar/index.d.ts +1 -0
- package/lib/components/Toolbar/index.js +1 -2
- package/lib/index.js +1 -2
- package/lib/react-app-env.d.ts +1 -0
- package/lib/utils/InsertTextAtPosition.js +1 -2
- package/lib/utils/markdownUtils.js +1 -2
- package/package.json +1 -1
- package/src/Editor.tsx +4 -0
- package/src/__test__/commands.test.tsx +4 -4
- package/src/commands/code.tsx +1 -1
- package/src/commands/comment.tsx +1 -0
- package/src/commands/divider.tsx +1 -0
- package/src/commands/fullscreen.tsx +1 -1
- package/src/commands/hr.tsx +1 -1
- package/src/commands/image.tsx +1 -1
- package/src/commands/italic.tsx +1 -1
- package/src/commands/link.tsx +1 -1
- package/src/commands/list.tsx +1 -1
- package/src/commands/preview.tsx +1 -1
- package/src/commands/quote.tsx +1 -1
- package/src/commands/strikeThrough.tsx +1 -1
- package/src/commands/title2.tsx +1 -1
- package/src/commands/title3.tsx +1 -1
- package/src/commands/title4.tsx +1 -1
- package/src/commands/title5.tsx +1 -1
- package/src/commands/title6.tsx +1 -1
- package/esm/Context.js.map +0 -19
- package/esm/Editor.js.map +0 -116
- package/esm/commands/bold.js.map +0 -38
- package/esm/commands/code.js.map +0 -47
- package/esm/commands/comment.js.map +0 -35
- package/esm/commands/divider.js.map +0 -14
- package/esm/commands/fullscreen.js.map +0 -28
- package/esm/commands/group.js.map +0 -26
- package/esm/commands/hr.js.map +0 -27
- package/esm/commands/image.js.map +0 -40
- package/esm/commands/index.js.map +0 -69
- package/esm/commands/italic.js.map +0 -38
- package/esm/commands/link.js.map +0 -38
- package/esm/commands/list.js.map +0 -61
- package/esm/commands/preview.js.map +0 -31
- package/esm/commands/quote.js.map +0 -44
- package/esm/commands/strikeThrough.js.map +0 -38
- package/esm/commands/title.js.map +0 -16
- package/esm/commands/title1.js.map +0 -33
- package/esm/commands/title2.js.map +0 -33
- package/esm/commands/title3.js.map +0 -33
- package/esm/commands/title4.js.map +0 -33
- package/esm/commands/title5.js.map +0 -33
- package/esm/commands/title6.js.map +0 -33
- package/esm/components/DragBar/index.js.map +0 -41
- package/esm/components/TextArea/Markdown.js.map +0 -47
- package/esm/components/TextArea/Textarea.js.map +0 -47
- package/esm/components/TextArea/handleKeyDown.js.map +0 -66
- package/esm/components/TextArea/index.js.map +0 -57
- package/esm/components/TextArea/shortcuts.js.map +0 -52
- package/esm/components/Toolbar/Child.js.map +0 -28
- package/esm/components/Toolbar/index.js.map +0 -84
- package/esm/index.js.map +0 -15
- package/esm/utils/InsertTextAtPosition.js.map +0 -67
- package/esm/utils/markdownUtils.js.map +0 -31
- package/lib/Context.js.map +0 -19
- package/lib/Editor.js.map +0 -112
- package/lib/commands/bold.js.map +0 -37
- package/lib/commands/code.js.map +0 -46
- package/lib/commands/comment.js.map +0 -35
- package/lib/commands/divider.js.map +0 -14
- package/lib/commands/fullscreen.js.map +0 -27
- package/lib/commands/group.js.map +0 -25
- package/lib/commands/hr.js.map +0 -26
- package/lib/commands/image.js.map +0 -39
- package/lib/commands/index.js.map +0 -64
- package/lib/commands/italic.js.map +0 -37
- package/lib/commands/link.js.map +0 -37
- package/lib/commands/list.js.map +0 -60
- package/lib/commands/preview.js.map +0 -30
- package/lib/commands/quote.js.map +0 -43
- package/lib/commands/strikeThrough.js.map +0 -37
- package/lib/commands/title.js.map +0 -15
- package/lib/commands/title1.js.map +0 -32
- package/lib/commands/title2.js.map +0 -32
- package/lib/commands/title3.js.map +0 -32
- package/lib/commands/title4.js.map +0 -32
- package/lib/commands/title5.js.map +0 -32
- package/lib/commands/title6.js.map +0 -32
- package/lib/components/DragBar/index.js.map +0 -40
- package/lib/components/TextArea/Markdown.js.map +0 -47
- package/lib/components/TextArea/Textarea.js.map +0 -47
- package/lib/components/TextArea/handleKeyDown.js.map +0 -66
- package/lib/components/TextArea/index.js.map +0 -54
- package/lib/components/TextArea/shortcuts.js.map +0 -52
- package/lib/components/Toolbar/Child.js.map +0 -26
- package/lib/components/Toolbar/index.js.map +0 -82
- package/lib/index.js.map +0 -13
- package/lib/utils/InsertTextAtPosition.js.map +0 -67
- package/lib/utils/markdownUtils.js.map +0 -31
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"React",
|
|
5
|
-
"useContext",
|
|
6
|
-
"useEffect",
|
|
7
|
-
"rehype",
|
|
8
|
-
"rehypePrism",
|
|
9
|
-
"EditorContext",
|
|
10
|
-
"html2Escape",
|
|
11
|
-
"sHtml",
|
|
12
|
-
"replace",
|
|
13
|
-
"str",
|
|
14
|
-
"c",
|
|
15
|
-
"Markdown",
|
|
16
|
-
"props",
|
|
17
|
-
"prefixCls",
|
|
18
|
-
"markdown",
|
|
19
|
-
"highlightEnable",
|
|
20
|
-
"dispatch",
|
|
21
|
-
"preRef",
|
|
22
|
-
"createRef",
|
|
23
|
-
"current",
|
|
24
|
-
"textareaPre",
|
|
25
|
-
"mdStr",
|
|
26
|
-
"String",
|
|
27
|
-
"raw",
|
|
28
|
-
"data",
|
|
29
|
-
"fragment",
|
|
30
|
-
"use",
|
|
31
|
-
"ignoreMissing",
|
|
32
|
-
"processSync",
|
|
33
|
-
"toString",
|
|
34
|
-
"error",
|
|
35
|
-
"createElement",
|
|
36
|
-
"className",
|
|
37
|
-
"dangerouslySetInnerHTML",
|
|
38
|
-
"__html"
|
|
39
|
-
],
|
|
40
|
-
"sources": [
|
|
41
|
-
"../../../src/components/TextArea/Markdown.tsx"
|
|
42
|
-
],
|
|
43
|
-
"sourcesContent": [
|
|
44
|
-
"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(/```(\\w+)?([\\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 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 String.raw`${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}\n"
|
|
45
|
-
],
|
|
46
|
-
"mappings": ";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,QAAiB,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,gCAAgC,EAAGC,GAAW,IAAK;IAC1D,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,GAAGf,UAAU,CAACI,aAAa,CAAC;EAC9E,IAAMY,MAAM,gBAAGjB,KAAK,CAACkB,SAAS,EAAkB;EAChDhB,SAAS,CAAC,MAAM;IACd,IAAIe,MAAM,CAACE,OAAO,IAAIH,QAAQ,EAAE;MAC9BA,QAAQ,CAAC;QAAEI,WAAW,EAAEH,MAAM,CAACE;MAAQ,CAAC,CAAC;IAC3C;IACA;EACF,CAAC,EAAE,EAAE,CAAC;EACN,IAAI,CAACL,QAAQ,EAAE;IACb,oBAAO;MAAK,GAAG,EAAEG,MAAO;MAAC,SAAS,EAAKJ,SAAS;IAAgC,EAAG;EACrF;EACA,IAAIQ,KAAK,uCAAoCR,SAAS,0EAAkEP,WAAW,CACjIgB,MAAM,CAACC,GAAG,+EAAGT,QAAQ,EACtB,oBAAiB;EAElB,IAAIC,eAAe,EAAE;IACnB,IAAI;MACFM,KAAK,GAAGlB,MAAM,EAAE,CACbqB,IAAI,CAAC,UAAU,EAAE;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC,CACpCC,GAAG,CAACtB,WAAW,EAAE;QAAEuB,aAAa,EAAE;MAAK,CAAC,CAAC,CACzCC,WAAW,CAACP,KAAK,CAAC,CAClBQ,QAAQ,EAAE;IACf,CAAC,CAAC,OAAOC,KAAK,EAAE,CAAC;EACnB;EAEA,oBAAO9B,KAAK,CAAC+B,aAAa,CAAC,KAAK,EAAE;IAChCC,SAAS,EAAE,qBAAqB;IAChCC,uBAAuB,EAAE;MAAEC,MAAM,EAAEb,KAAK,IAAI;IAAG;EACjD,CAAC,CAAC;AACJ"
|
|
47
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"React",
|
|
5
|
-
"useContext",
|
|
6
|
-
"useEffect",
|
|
7
|
-
"EditorContext",
|
|
8
|
-
"TextAreaCommandOrchestrator",
|
|
9
|
-
"handleKeyDown",
|
|
10
|
-
"shortcuts",
|
|
11
|
-
"Textarea",
|
|
12
|
-
"props",
|
|
13
|
-
"prefixCls",
|
|
14
|
-
"onChange",
|
|
15
|
-
"other",
|
|
16
|
-
"markdown",
|
|
17
|
-
"commands",
|
|
18
|
-
"fullscreen",
|
|
19
|
-
"preview",
|
|
20
|
-
"highlightEnable",
|
|
21
|
-
"extraCommands",
|
|
22
|
-
"tabSize",
|
|
23
|
-
"defaultTabEnable",
|
|
24
|
-
"dispatch",
|
|
25
|
-
"textRef",
|
|
26
|
-
"useRef",
|
|
27
|
-
"executeRef",
|
|
28
|
-
"statesRef",
|
|
29
|
-
"current",
|
|
30
|
-
"commandOrchestrator",
|
|
31
|
-
"textarea",
|
|
32
|
-
"onKeyDown",
|
|
33
|
-
"e",
|
|
34
|
-
"addEventListener",
|
|
35
|
-
"removeEventListener",
|
|
36
|
-
"className",
|
|
37
|
-
"target",
|
|
38
|
-
"value"
|
|
39
|
-
],
|
|
40
|
-
"sources": [
|
|
41
|
-
"../../../src/components/TextArea/Textarea.tsx"
|
|
42
|
-
],
|
|
43
|
-
"sourcesContent": [
|
|
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
|
-
],
|
|
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
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"insertTextAtPosition",
|
|
5
|
-
"TextAreaTextApi",
|
|
6
|
-
"insertBeforeEachLine",
|
|
7
|
-
"stopPropagation",
|
|
8
|
-
"e",
|
|
9
|
-
"preventDefault",
|
|
10
|
-
"handleKeyDown",
|
|
11
|
-
"tabSize",
|
|
12
|
-
"defaultTabEnable",
|
|
13
|
-
"target",
|
|
14
|
-
"starVal",
|
|
15
|
-
"value",
|
|
16
|
-
"substr",
|
|
17
|
-
"selectionStart",
|
|
18
|
-
"valArr",
|
|
19
|
-
"split",
|
|
20
|
-
"currentLineStr",
|
|
21
|
-
"length",
|
|
22
|
-
"textArea",
|
|
23
|
-
"code",
|
|
24
|
-
"toLowerCase",
|
|
25
|
-
"space",
|
|
26
|
-
"Array",
|
|
27
|
-
"join",
|
|
28
|
-
"selectionEnd",
|
|
29
|
-
"_star",
|
|
30
|
-
"substring",
|
|
31
|
-
"_end",
|
|
32
|
-
"modifiedTextLine",
|
|
33
|
-
"forEach",
|
|
34
|
-
"item",
|
|
35
|
-
"idx",
|
|
36
|
-
"push",
|
|
37
|
-
"modifiedText",
|
|
38
|
-
"oldSelectText",
|
|
39
|
-
"newStarNum",
|
|
40
|
-
"setSelectionRange",
|
|
41
|
-
"start",
|
|
42
|
-
"indexOf",
|
|
43
|
-
"end",
|
|
44
|
-
"modifiedTextObj",
|
|
45
|
-
"shiftKey",
|
|
46
|
-
"text",
|
|
47
|
-
"map",
|
|
48
|
-
"replace",
|
|
49
|
-
"RegExp",
|
|
50
|
-
"replaceSelection",
|
|
51
|
-
"startTabSize",
|
|
52
|
-
"endTabSize",
|
|
53
|
-
"keyCode",
|
|
54
|
-
"test",
|
|
55
|
-
"startStr",
|
|
56
|
-
"startsWith",
|
|
57
|
-
"parseInt"
|
|
58
|
-
],
|
|
59
|
-
"sources": [
|
|
60
|
-
"../../../src/components/TextArea/handleKeyDown.tsx"
|
|
61
|
-
],
|
|
62
|
-
"sourcesContent": [
|
|
63
|
-
"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.keyCode === 13 &&\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"
|
|
64
|
-
],
|
|
65
|
-
"mappings": "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"
|
|
66
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"React",
|
|
5
|
-
"useEffect",
|
|
6
|
-
"Fragment",
|
|
7
|
-
"useContext",
|
|
8
|
-
"EditorContext",
|
|
9
|
-
"shortcuts",
|
|
10
|
-
"Markdown",
|
|
11
|
-
"Textarea",
|
|
12
|
-
"TextAreaCommandOrchestrator",
|
|
13
|
-
"TextArea",
|
|
14
|
-
"props",
|
|
15
|
-
"prefixCls",
|
|
16
|
-
"className",
|
|
17
|
-
"onScroll",
|
|
18
|
-
"renderTextarea",
|
|
19
|
-
"otherProps",
|
|
20
|
-
"markdown",
|
|
21
|
-
"scrollTop",
|
|
22
|
-
"commands",
|
|
23
|
-
"highlightEnable",
|
|
24
|
-
"extraCommands",
|
|
25
|
-
"dispatch",
|
|
26
|
-
"textRef",
|
|
27
|
-
"useRef",
|
|
28
|
-
"executeRef",
|
|
29
|
-
"warp",
|
|
30
|
-
"createRef",
|
|
31
|
-
"state",
|
|
32
|
-
"current",
|
|
33
|
-
"textareaWarp",
|
|
34
|
-
"undefined",
|
|
35
|
-
"commandOrchestrator",
|
|
36
|
-
"textarea",
|
|
37
|
-
"textStyle",
|
|
38
|
-
"WebkitTextFillColor",
|
|
39
|
-
"overflow",
|
|
40
|
-
"cloneElement",
|
|
41
|
-
"value",
|
|
42
|
-
"autoComplete",
|
|
43
|
-
"autoCorrect",
|
|
44
|
-
"spellCheck",
|
|
45
|
-
"autoCapitalize",
|
|
46
|
-
"style",
|
|
47
|
-
"onChange",
|
|
48
|
-
"ref"
|
|
49
|
-
],
|
|
50
|
-
"sources": [
|
|
51
|
-
"../../../src/components/TextArea/index.tsx"
|
|
52
|
-
],
|
|
53
|
-
"sourcesContent": [
|
|
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}-area ${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
|
-
],
|
|
56
|
-
"mappings": "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"
|
|
57
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"getCommands",
|
|
5
|
-
"data",
|
|
6
|
-
"resulte",
|
|
7
|
-
"forEach",
|
|
8
|
-
"item",
|
|
9
|
-
"children",
|
|
10
|
-
"Array",
|
|
11
|
-
"isArray",
|
|
12
|
-
"keyCommand",
|
|
13
|
-
"shortcuts",
|
|
14
|
-
"execute",
|
|
15
|
-
"toLocaleLowerCase",
|
|
16
|
-
"shortcutsHandle",
|
|
17
|
-
"e",
|
|
18
|
-
"commands",
|
|
19
|
-
"commandOrchestrator",
|
|
20
|
-
"dispatch",
|
|
21
|
-
"state",
|
|
22
|
-
"altKey",
|
|
23
|
-
"push",
|
|
24
|
-
"shiftKey",
|
|
25
|
-
"metaKey",
|
|
26
|
-
"ctrlKey",
|
|
27
|
-
"length",
|
|
28
|
-
"test",
|
|
29
|
-
"key",
|
|
30
|
-
"equal",
|
|
31
|
-
"join",
|
|
32
|
-
"command",
|
|
33
|
-
"undefined",
|
|
34
|
-
"Object",
|
|
35
|
-
"keys",
|
|
36
|
-
"isequal",
|
|
37
|
-
"split",
|
|
38
|
-
"every",
|
|
39
|
-
"v",
|
|
40
|
-
"includes",
|
|
41
|
-
"stopPropagation",
|
|
42
|
-
"preventDefault",
|
|
43
|
-
"executeCommand"
|
|
44
|
-
],
|
|
45
|
-
"sources": [
|
|
46
|
-
"../../../src/components/TextArea/shortcuts.ts"
|
|
47
|
-
],
|
|
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: 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
|
-
],
|
|
51
|
-
"mappings": "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"
|
|
52
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"React",
|
|
5
|
-
"useContext",
|
|
6
|
-
"useMemo",
|
|
7
|
-
"Toolbar",
|
|
8
|
-
"EditorContext",
|
|
9
|
-
"Child",
|
|
10
|
-
"props",
|
|
11
|
-
"prefixCls",
|
|
12
|
-
"groupName",
|
|
13
|
-
"commands",
|
|
14
|
-
"children",
|
|
15
|
-
"barPopup",
|
|
16
|
-
"e",
|
|
17
|
-
"stopPropagation",
|
|
18
|
-
"Array",
|
|
19
|
-
"isArray"
|
|
20
|
-
],
|
|
21
|
-
"sources": [
|
|
22
|
-
"../../../src/components/Toolbar/Child.tsx"
|
|
23
|
-
],
|
|
24
|
-
"sourcesContent": [
|
|
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
|
-
],
|
|
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
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"React",
|
|
5
|
-
"Fragment",
|
|
6
|
-
"useContext",
|
|
7
|
-
"useEffect",
|
|
8
|
-
"useRef",
|
|
9
|
-
"EditorContext",
|
|
10
|
-
"Child",
|
|
11
|
-
"ToolbarItems",
|
|
12
|
-
"props",
|
|
13
|
-
"prefixCls",
|
|
14
|
-
"overflow",
|
|
15
|
-
"fullscreen",
|
|
16
|
-
"preview",
|
|
17
|
-
"barPopup",
|
|
18
|
-
"components",
|
|
19
|
-
"commandOrchestrator",
|
|
20
|
-
"dispatch",
|
|
21
|
-
"originalOverflow",
|
|
22
|
-
"handleClick",
|
|
23
|
-
"command",
|
|
24
|
-
"name",
|
|
25
|
-
"state",
|
|
26
|
-
"keyCommand",
|
|
27
|
-
"value",
|
|
28
|
-
"commands",
|
|
29
|
-
"forEach",
|
|
30
|
-
"item",
|
|
31
|
-
"groupName",
|
|
32
|
-
"parent",
|
|
33
|
-
"Object",
|
|
34
|
-
"keys",
|
|
35
|
-
"keyName",
|
|
36
|
-
"length",
|
|
37
|
-
"executeCommand",
|
|
38
|
-
"document",
|
|
39
|
-
"body",
|
|
40
|
-
"style",
|
|
41
|
-
"current",
|
|
42
|
-
"window",
|
|
43
|
-
"getComputedStyle",
|
|
44
|
-
"map",
|
|
45
|
-
"idx",
|
|
46
|
-
"liProps",
|
|
47
|
-
"activeBtn",
|
|
48
|
-
"childNode",
|
|
49
|
-
"children",
|
|
50
|
-
"getState",
|
|
51
|
-
"textApi",
|
|
52
|
-
"undefined",
|
|
53
|
-
"close",
|
|
54
|
-
"execute",
|
|
55
|
-
"disabled",
|
|
56
|
-
"test",
|
|
57
|
-
"render",
|
|
58
|
-
"toolbar",
|
|
59
|
-
"com",
|
|
60
|
-
"isValidElement",
|
|
61
|
-
"buttonProps",
|
|
62
|
-
"icon",
|
|
63
|
-
"createElement",
|
|
64
|
-
"type",
|
|
65
|
-
"key",
|
|
66
|
-
"onClick",
|
|
67
|
-
"evn",
|
|
68
|
-
"stopPropagation",
|
|
69
|
-
"Array",
|
|
70
|
-
"isArray",
|
|
71
|
-
"Toolbar",
|
|
72
|
-
"toolbarBottom",
|
|
73
|
-
"isChild",
|
|
74
|
-
"extraCommands",
|
|
75
|
-
"bottomClassName"
|
|
76
|
-
],
|
|
77
|
-
"sources": [
|
|
78
|
-
"../../../src/components/Toolbar/index.tsx"
|
|
79
|
-
],
|
|
80
|
-
"sourcesContent": [
|
|
81
|
-
"import React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { IProps } from '../../Editor';\nimport { EditorContext, PreviewType, ContextStore } from '../../Context';\nimport { ICommand } from '../../commands';\nimport Child from './Child';\nimport './index.less';\n\nexport interface IToolbarProps extends IProps {\n overflow?: boolean;\n toolbarBottom?: boolean;\n onCommand?: (command: ICommand<string>, groupName?: string) => void;\n commands?: ICommand<string>[];\n isChild?: boolean;\n}\n\nexport function ToolbarItems(props: IToolbarProps) {\n const { prefixCls, overflow } = props;\n const { fullscreen, preview, barPopup = {}, components, commandOrchestrator, dispatch } = useContext(EditorContext);\n const originalOverflow = useRef('');\n\n function handleClick(command: ICommand<string>, name?: string) {\n if (!dispatch) return;\n const state: ContextStore = { barPopup: { ...barPopup } };\n if (command.keyCommand === 'preview') {\n state.preview = command.value as PreviewType;\n }\n if (command.keyCommand === 'fullscreen') {\n state.fullscreen = !fullscreen;\n }\n if (props.commands && command.keyCommand === 'group') {\n props.commands.forEach((item) => {\n if (name === item.groupName) {\n state.barPopup![name!] = true;\n } else if (item.keyCommand) {\n state.barPopup![item.groupName!] = false;\n }\n });\n } else if (name || command.parent) {\n Object.keys(state.barPopup || {}).forEach((keyName) => {\n state.barPopup![keyName] = false;\n });\n }\n\n if (Object.keys(state).length) {\n dispatch({ ...state });\n }\n commandOrchestrator && commandOrchestrator.executeCommand(command);\n }\n\n useEffect(() => {\n if (document && overflow) {\n if (fullscreen) {\n // prevent scroll on fullscreen\n document.body.style.overflow = 'hidden';\n } else {\n // get the original overflow only the first time\n if (!originalOverflow.current) {\n originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n }\n // reset to the original overflow\n document.body.style.overflow = originalOverflow.current;\n }\n }\n }, [fullscreen, originalOverflow, overflow]);\n\n return (\n <ul>\n {(props.commands || []).map((item, idx) => {\n if (item.keyCommand === 'divider') {\n return <li key={idx} {...item.liProps} className={`${prefixCls}-toolbar-divider`} />;\n }\n if (!item.keyCommand) return <Fragment key={idx} />;\n const activeBtn =\n (fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);\n const childNode =\n item.children && typeof item.children === 'function'\n ? item.children({\n getState: () => commandOrchestrator!.getState(),\n textApi: commandOrchestrator ? commandOrchestrator!.textApi : undefined,\n close: () => handleClick({}, item.groupName),\n execute: () => handleClick({ execute: item.execute }),\n })\n : undefined;\n const disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n const render = components?.toolbar || item.render;\n const com = (\n render && typeof render === 'function' ? render(item, !!disabled, handleClick, idx) : null\n ) as React.ReactElement;\n return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {com && React.isValidElement(com) && com}\n {!com && !item.buttonProps && item.icon}\n {!com &&\n item.buttonProps &&\n React.createElement(\n 'button',\n {\n type: 'button',\n key: idx,\n disabled,\n 'data-name': item.name,\n ...item.buttonProps,\n onClick: (evn: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n evn.stopPropagation();\n handleClick(item, item.groupName);\n },\n },\n item.icon,\n )}\n {item.children && (\n <Child\n overflow={overflow}\n groupName={item.groupName}\n prefixCls={prefixCls}\n children={childNode}\n commands={Array.isArray(item.children) ? item.children : undefined}\n />\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport default function Toolbar(props: IToolbarProps = {}) {\n const { prefixCls, toolbarBottom, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n const bottomClassName = toolbarBottom ? 'bottom' : '';\n return (\n <div className={`${prefixCls}-toolbar ${bottomClassName}`}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
|
|
82
|
-
],
|
|
83
|
-
"mappings": "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"
|
|
84
|
-
}
|
package/esm/index.js.map
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"MDEditor",
|
|
5
|
-
"commands",
|
|
6
|
-
"MarkdownUtil"
|
|
7
|
-
],
|
|
8
|
-
"sources": [
|
|
9
|
-
"../src/index.tsx"
|
|
10
|
-
],
|
|
11
|
-
"sourcesContent": [
|
|
12
|
-
"import MDEditor from './Editor';\nimport * as commands from './commands';\nimport * as MarkdownUtil from './utils/markdownUtils';\n\nexport * from './commands';\nexport * from './utils/markdownUtils';\nexport * from './Editor';\nexport * from './Context';\n\nexport { MarkdownUtil, commands };\n\nexport default MDEditor;\n"
|
|
13
|
-
],
|
|
14
|
-
"mappings": "AAAA,OAAOA,QAAQ,MAAM,UAAU;AAC/B,OAAO,KAAKC,QAAQ,MAAM,YAAY;AACtC,OAAO,KAAKC,YAAY,MAAM,uBAAuB;AAErD,cAAc,YAAY;AAC1B,cAAc,uBAAuB;AACrC,cAAc,UAAU;AACxB,cAAc,WAAW;AAEzB,SAASA,YAAY,EAAED,QAAQ;AAE/B,eAAeD,QAAQ"
|
|
15
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"browserSupportsTextareaTextNodes",
|
|
5
|
-
"canManipulateViaTextNodes",
|
|
6
|
-
"input",
|
|
7
|
-
"nodeName",
|
|
8
|
-
"textarea",
|
|
9
|
-
"document",
|
|
10
|
-
"createElement",
|
|
11
|
-
"value",
|
|
12
|
-
"firstChild",
|
|
13
|
-
"insertAtLineStart",
|
|
14
|
-
"val",
|
|
15
|
-
"cursorIdx",
|
|
16
|
-
"content",
|
|
17
|
-
"startIdx",
|
|
18
|
-
"char",
|
|
19
|
-
"focus",
|
|
20
|
-
"setRangeText",
|
|
21
|
-
"dispatchEvent",
|
|
22
|
-
"Event",
|
|
23
|
-
"bubbles",
|
|
24
|
-
"insertTextAtPosition",
|
|
25
|
-
"text",
|
|
26
|
-
"selection",
|
|
27
|
-
"ieRange",
|
|
28
|
-
"createRange",
|
|
29
|
-
"collapse",
|
|
30
|
-
"select",
|
|
31
|
-
"isSuccess",
|
|
32
|
-
"execCommand",
|
|
33
|
-
"start",
|
|
34
|
-
"selectionStart",
|
|
35
|
-
"end",
|
|
36
|
-
"selectionEnd",
|
|
37
|
-
"range",
|
|
38
|
-
"textNode",
|
|
39
|
-
"createTextNode",
|
|
40
|
-
"node",
|
|
41
|
-
"appendChild",
|
|
42
|
-
"offset",
|
|
43
|
-
"startNode",
|
|
44
|
-
"endNode",
|
|
45
|
-
"nodeLength",
|
|
46
|
-
"nodeValue",
|
|
47
|
-
"length",
|
|
48
|
-
"setStart",
|
|
49
|
-
"setEnd",
|
|
50
|
-
"nextSibling",
|
|
51
|
-
"deleteContents",
|
|
52
|
-
"commonAncestorContainer",
|
|
53
|
-
"insertNode",
|
|
54
|
-
"slice",
|
|
55
|
-
"setSelectionRange",
|
|
56
|
-
"e",
|
|
57
|
-
"createEvent",
|
|
58
|
-
"initEvent"
|
|
59
|
-
],
|
|
60
|
-
"sources": [
|
|
61
|
-
"../../src/utils/InsertTextAtPosition.ts"
|
|
62
|
-
],
|
|
63
|
-
"sourcesContent": [
|
|
64
|
-
"/**\n * The MIT License\n * Copyright (c) 2018 Dmitriy Kubyshkin\n * Copied from https://github.com/grassator/insert-text-at-cursor\n */\n\nlet browserSupportsTextareaTextNodes: any;\n\n/**\n * @param {HTMLElement} input\n * @return {boolean}\n */\nfunction canManipulateViaTextNodes(input: HTMLTextAreaElement | HTMLInputElement): boolean {\n if (input.nodeName !== 'TEXTAREA') {\n return false;\n }\n if (typeof browserSupportsTextareaTextNodes === 'undefined') {\n const textarea: HTMLTextAreaElement = document.createElement('textarea');\n textarea.value = '1';\n browserSupportsTextareaTextNodes = !!textarea.firstChild;\n }\n return browserSupportsTextareaTextNodes;\n}\n\n/**\n * @param {string} val\n * @param {number} cursorIdx\n * @param {HTMLTextAreaElement|HTMLInputElement} input\n * @return {void}\n */\nexport const insertAtLineStart = (\n val: string,\n cursorIdx: number,\n input: HTMLTextAreaElement | HTMLInputElement,\n): void => {\n const content = input.value;\n let startIdx = 0;\n\n while (cursorIdx--) {\n let char = content[cursorIdx];\n if (char === '\\n') {\n startIdx = cursorIdx + 1;\n break;\n }\n }\n\n input.focus();\n input.setRangeText(val, startIdx, startIdx);\n input.dispatchEvent(new Event('input', { bubbles: true }));\n};\n\n/**\n * @param {HTMLTextAreaElement|HTMLInputElement} input\n * @param {string} text\n * @returns {void}\n */\nexport function insertTextAtPosition(input: HTMLTextAreaElement | HTMLInputElement, text: string): void {\n // Most of the used APIs only work with the field selected\n input.focus();\n\n // IE 8-10\n if ((document as any).selection) {\n const ieRange = (document as any).selection.createRange();\n ieRange.text = text;\n\n // Move cursor after the inserted text\n ieRange.collapse(false /* to the end */);\n ieRange.select();\n\n return;\n }\n\n // Webkit + Edge\n const isSuccess = document.execCommand && document.execCommand('insertText', false, text);\n if (!isSuccess) {\n const start = input.selectionStart!;\n const end = input.selectionEnd!;\n // Firefox (non-standard method)\n if (typeof input.setRangeText === 'function') {\n input.setRangeText(text);\n } else {\n // To make a change we just need a Range, not a Selection\n const range = document.createRange();\n const textNode = document.createTextNode(text);\n\n if (canManipulateViaTextNodes(input)) {\n let node = input.firstChild;\n\n // If textarea is empty, just insert the text\n if (!node) {\n input.appendChild(textNode);\n } else {\n // Otherwise we need to find a nodes for start and end\n let offset = 0;\n let startNode = null;\n let endNode = null;\n\n while (node && (startNode === null || endNode === null)) {\n const nodeLength = node.nodeValue!.length;\n\n // if start of the selection falls into current node\n if (start >= offset && start <= offset + nodeLength) {\n range.setStart((startNode = node), start - offset);\n }\n\n // if end of the selection falls into current node\n if (end >= offset && end <= offset + nodeLength) {\n range.setEnd((endNode = node), end - offset);\n }\n\n offset += nodeLength;\n node = node.nextSibling;\n }\n\n // If there is some text selected, remove it as we should replace it\n if (start !== end) {\n range.deleteContents();\n }\n }\n }\n\n // If the node is a textarea and the range doesn't span outside the element\n //\n // Get the commonAncestorContainer of the selected range and test its type\n // If the node is of type `#text` it means that we're still working with text nodes within our textarea element\n // otherwise, if it's of type `#document` for example it means our selection spans outside the textarea.\n if (canManipulateViaTextNodes(input) && range.commonAncestorContainer.nodeName === '#text') {\n // Finally insert a new node. The browser will automatically split start and end nodes into two if necessary\n range.insertNode(textNode);\n } else {\n // If the node is not a textarea or the range spans outside a textarea the only way is to replace the whole value\n const value = input.value;\n input.value = value.slice(0, start) + text + value.slice(end);\n }\n }\n\n // Correct the cursor position to be at the end of the insertion\n input.setSelectionRange(start + text.length, start + text.length);\n\n // Notify any possible listeners of the change\n const e = document.createEvent('UIEvent');\n e.initEvent('input', true, false);\n input.dispatchEvent(e);\n }\n}\n"
|
|
65
|
-
],
|
|
66
|
-
"mappings": "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"
|
|
67
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"selectWord",
|
|
5
|
-
"text",
|
|
6
|
-
"selection",
|
|
7
|
-
"length",
|
|
8
|
-
"start",
|
|
9
|
-
"end",
|
|
10
|
-
"getSurroundingWord",
|
|
11
|
-
"getBreaksNeededForEmptyLineBefore",
|
|
12
|
-
"startPosition",
|
|
13
|
-
"neededBreaks",
|
|
14
|
-
"isInFirstLine",
|
|
15
|
-
"i",
|
|
16
|
-
"charCodeAt",
|
|
17
|
-
"getBreaksNeededForEmptyLineAfter",
|
|
18
|
-
"isInLastLine",
|
|
19
|
-
"position",
|
|
20
|
-
"Error",
|
|
21
|
-
"isWordDelimiter",
|
|
22
|
-
"c"
|
|
23
|
-
],
|
|
24
|
-
"sources": [
|
|
25
|
-
"../../src/utils/markdownUtils.ts"
|
|
26
|
-
],
|
|
27
|
-
"sourcesContent": [
|
|
28
|
-
"import { TextRange } from '../commands';\n\nexport interface TextSection {\n text: string;\n selection: TextRange;\n}\n\nexport function selectWord({ text, selection }: TextSection): TextRange {\n if (text && text.length && selection.start === selection.end) {\n // the user is pointing to a word\n return getSurroundingWord(text, selection.start);\n }\n return selection;\n}\n\n/**\n * Gets the number of line-breaks that would have to be inserted before the given 'startPosition'\n * to make sure there's an empty line between 'startPosition' and the previous text\n */\nexport function getBreaksNeededForEmptyLineBefore(text = '', startPosition: number): number {\n if (startPosition === 0) return 0;\n\n // rules:\n // - If we're in the first line, no breaks are needed\n // - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we\n // may need to insert 0, 1 or 2 breaks\n\n let neededBreaks = 2;\n let isInFirstLine = true;\n for (let i = startPosition - 1; i >= 0 && neededBreaks >= 0; i--) {\n switch (text.charCodeAt(i)) {\n case 32: // blank space\n continue;\n case 10: // line break\n neededBreaks--;\n isInFirstLine = false;\n break;\n default:\n return neededBreaks;\n }\n }\n return isInFirstLine ? 0 : neededBreaks;\n}\n\n/**\n * Gets the number of line-breaks that would have to be inserted after the given 'startPosition'\n * to make sure there's an empty line between 'startPosition' and the next text\n */\nexport function getBreaksNeededForEmptyLineAfter(text = '', startPosition: number): number {\n if (startPosition === text.length - 1) return 0;\n\n // rules:\n // - If we're in the first line, no breaks are needed\n // - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we\n // may need to insert 0, 1 or 2 breaks\n\n let neededBreaks = 2;\n let isInLastLine = true;\n for (let i = startPosition; i < text.length && neededBreaks >= 0; i++) {\n switch (text.charCodeAt(i)) {\n case 32:\n continue;\n case 10: {\n neededBreaks--;\n isInLastLine = false;\n break;\n }\n default:\n return neededBreaks;\n }\n }\n return isInLastLine ? 0 : neededBreaks;\n}\n\nexport function getSurroundingWord(text: string, position: number): TextRange {\n if (!text) throw Error(\"Argument 'text' should be truthy\");\n\n const isWordDelimiter = (c: string) => c === ' ' || c.charCodeAt(0) === 10;\n\n // leftIndex is initialized to 0 because if selection is 0, it won't even enter the iteration\n let start = 0;\n // rightIndex is initialized to text.length because if selection is equal to text.length it won't even enter the interation\n let end = text.length;\n\n // iterate to the left\n for (let i = position; i - 1 > -1; i--) {\n if (isWordDelimiter(text[i - 1])) {\n start = i;\n break;\n }\n }\n\n // iterate to the right\n for (let i = position; i < text.length; i++) {\n if (isWordDelimiter(text[i])) {\n end = i;\n break;\n }\n }\n\n return { start, end };\n}\n"
|
|
29
|
-
],
|
|
30
|
-
"mappings": "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"
|
|
31
|
-
}
|
package/lib/Context.js.map
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"names": [
|
|
4
|
-
"reducer",
|
|
5
|
-
"state",
|
|
6
|
-
"action",
|
|
7
|
-
"EditorContext",
|
|
8
|
-
"React",
|
|
9
|
-
"createContext",
|
|
10
|
-
"markdown"
|
|
11
|
-
],
|
|
12
|
-
"sources": [
|
|
13
|
-
"../src/Context.tsx"
|
|
14
|
-
],
|
|
15
|
-
"sourcesContent": [
|
|
16
|
-
"import React from 'react';\nimport { ICommand, TextAreaCommandOrchestrator } from './commands';\nimport { MDEditorProps } from './Editor';\n\nexport type PreviewType = 'live' | 'edit' | 'preview';\n\nexport interface ContextStore {\n components?: MDEditorProps['components'];\n commands?: ICommand<string>[];\n extraCommands?: ICommand<string>[];\n markdown?: string;\n preview?: PreviewType;\n height?: React.CSSProperties['height'];\n fullscreen?: boolean;\n highlightEnable?: boolean;\n autoFocus?: boolean;\n textarea?: HTMLTextAreaElement;\n commandOrchestrator?: TextAreaCommandOrchestrator;\n textareaWarp?: HTMLDivElement;\n textareaPre?: HTMLPreElement;\n container?: HTMLDivElement | null;\n dispatch?: React.Dispatch<ContextStore>;\n barPopup?: Record<string, boolean>;\n scrollTop?: number;\n scrollTopPreview?: number;\n tabSize?: number;\n defaultTabEnable?: boolean;\n}\n\nexport type ExecuteCommandState = Pick<ContextStore, 'fullscreen' | 'preview' | 'highlightEnable'>;\n\nexport function reducer(state: ContextStore, action: ContextStore) {\n return { ...state, ...action };\n}\n\nexport const EditorContext = React.createContext<ContextStore>({ markdown: '' });\n"
|
|
17
|
-
],
|
|
18
|
-
"mappings": ";;;;;;;;;AAAA;AA+BO,SAASA,OAAO,CAACC,KAAmB,EAAEC,MAAoB,EAAE;EACjE,yEAAYD,KAAK,GAAKC,MAAM;AAC9B;AAEO,IAAMC,aAAa,gBAAGC,iBAAK,CAACC,aAAa,CAAe;EAAEC,QAAQ,EAAE;AAAG,CAAC,CAAC;AAAC"
|
|
19
|
-
}
|