@uiw/react-md-editor 3.12.3 → 3.13.0
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.css +5 -0
- package/dist/mdeditor.js +846 -1376
- package/dist/mdeditor.min.css +1 -1
- package/dist/mdeditor.min.js +1 -1
- package/dist/mdeditor.min.js.LICENSE.txt +0 -9
- package/esm/Editor.d.ts +2 -0
- package/esm/Editor.js +10 -3
- package/esm/Editor.js.map +3 -2
- package/esm/components/Toolbar/index.css +5 -0
- package/esm/components/Toolbar/index.d.ts +1 -0
- package/esm/components/Toolbar/index.js +3 -1
- package/esm/components/Toolbar/index.js.map +5 -3
- package/esm/components/Toolbar/index.less +5 -0
- package/lib/Context.js.map +1 -1
- package/lib/Editor.d.ts +2 -0
- package/lib/Editor.js +11 -3
- package/lib/Editor.js.map +10 -2
- package/lib/commands/bold.js.map +2 -1
- package/lib/commands/code.js.map +4 -1
- package/lib/commands/comment.js.map +2 -1
- package/lib/commands/image.js.map +2 -1
- package/lib/commands/index.js.map +2 -1
- package/lib/commands/italic.js.map +2 -1
- package/lib/commands/link.js.map +2 -1
- package/lib/commands/list.js.map +4 -1
- package/lib/commands/quote.js.map +4 -1
- package/lib/commands/strikeThrough.js.map +2 -1
- package/lib/commands/title1.js.map +2 -1
- package/lib/commands/title2.js.map +2 -1
- package/lib/commands/title3.js.map +2 -1
- package/lib/commands/title4.js.map +2 -1
- package/lib/commands/title5.js.map +2 -1
- package/lib/commands/title6.js.map +2 -1
- package/lib/components/DragBar/index.js.map +5 -2
- package/lib/components/TextArea/Markdown.js.map +5 -1
- package/lib/components/TextArea/Textarea.js.map +5 -1
- package/lib/components/TextArea/handleKeyDown.js.map +3 -1
- package/lib/components/TextArea/index.js.map +3 -2
- package/lib/components/Toolbar/Child.js.map +3 -1
- package/lib/components/Toolbar/index.d.ts +1 -0
- package/lib/components/Toolbar/index.js +3 -1
- package/lib/components/Toolbar/index.js.map +8 -3
- package/lib/components/Toolbar/index.less +5 -0
- package/markdown-editor.css +5 -0
- package/package.json +1 -1
- package/src/Editor.tsx +9 -1
- package/src/components/Toolbar/index.less +5 -0
- package/src/components/Toolbar/index.tsx +4 -2
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"state",
|
|
10
10
|
"api",
|
|
11
11
|
"newSelectionRange",
|
|
12
|
+
"selectWord",
|
|
12
13
|
"text",
|
|
13
14
|
"selection",
|
|
14
15
|
"state1",
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"import { ICommand, TextState, TextAreaTextApi } from './';\nimport { selectWord } from '../utils/markdownUtils';\n\nexport const comment: ICommand = {\n name: 'comment',\n keyCommand: 'comment',\n shortcuts: 'ctrlcmd+/',\n execute: (state: TextState, api: TextAreaTextApi) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n // Replaces the current selection with the bold mark up\n const state2 = api.replaceSelection(`<!-- ${state1.selectedText} -->`);\n // Adjust the selection to not contain the **\n api.setSelectionRange({\n start: state2.selection.end - 4 - state1.selectedText.length,\n end: state2.selection.end - 4,\n });\n },\n};\n"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;AACA;;AAEO,IAAMA,OAAiB,GAAG;EAC/BC,IAAI,EAAE,SADyB;EAE/BC,UAAU,EAAE,SAFmB;EAG/BC,SAAS,EAAE,WAHoB;EAI/BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG
|
|
30
|
+
"mappings": ";;;;;;;AACA;;AAEO,IAAMA,OAAiB,GAAG;EAC/BC,IAAI,EAAE,SADyB;EAE/BC,UAAU,EAAE,SAFmB;EAG/BC,SAAS,EAAE,WAHoB;EAI/BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG,IAAAC,yBAAA,EAAW;MAAEC,IAAI,EAAEJ,KAAK,CAACI,IAAd;MAAoBC,SAAS,EAAEL,KAAK,CAACK;IAArC,CAAX,CAA1B;IACA,IAAMC,MAAM,GAAGL,GAAG,CAACM,iBAAJ,CAAsBL,iBAAtB,CAAf,CAHmD,CAInD;;IACA,IAAMM,MAAM,GAAGP,GAAG,CAACQ,gBAAJ,gBAA6BH,MAAM,CAACI,YAApC,UAAf,CALmD,CAMnD;;IACAT,GAAG,CAACM,iBAAJ,CAAsB;MACpBI,KAAK,EAAEH,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB,CAAvB,GAA2BN,MAAM,CAACI,YAAP,CAAoBG,MADlC;MAEpBD,GAAG,EAAEJ,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB;IAFR,CAAtB;EAID;AAf8B,CAA1B"
|
|
30
31
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"state",
|
|
13
13
|
"api",
|
|
14
14
|
"newSelectionRange",
|
|
15
|
+
"selectWord",
|
|
15
16
|
"text",
|
|
16
17
|
"selection",
|
|
17
18
|
"state1",
|
|
@@ -29,5 +30,5 @@
|
|
|
29
30
|
"sourcesContent": [
|
|
30
31
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport { selectWord } from '../utils/markdownUtils';\n\nexport const image: ICommand = {\n name: 'image',\n keyCommand: 'image',\n shortcuts: 'ctrlcmd+i',\n buttonProps: { 'aria-label': 'Add image', title: 'Add image' },\n icon: (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 20 20\">\n <path\n fill=\"currentColor\"\n d=\"M15 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-7H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 13l-6-5-2 2-4-5-4 8V4h16v11z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n // Select everything\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n // Replaces the current selection with the image\n const imageTemplate = state1.selectedText || 'https://example.com/your-image.png';\n api.replaceSelection(``);\n // Adjust the selection to not contain the **\n api.setSelectionRange({\n start: 4 + state1.selection.start,\n end: 4 + state1.selection.start + imageTemplate.length,\n });\n },\n};\n"
|
|
31
32
|
],
|
|
32
|
-
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,KAAe,GAAG;EAC7BC,IAAI,EAAE,OADuB;EAE7BC,UAAU,EAAE,OAFiB;EAG7BC,SAAS,EAAE,WAHkB;EAI7BC,WAAW,EAAE;IAAE,cAAc,WAAhB;IAA6BC,KAAK,EAAE;EAApC,CAJgB;EAK7BC,IAAI,eACF;IAAK,KAAK,EAAC,IAAX;IAAgB,MAAM,EAAC,IAAvB;IAA4B,OAAO,EAAC,WAApC;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN2B;EAa7BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG
|
|
33
|
+
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,KAAe,GAAG;EAC7BC,IAAI,EAAE,OADuB;EAE7BC,UAAU,EAAE,OAFiB;EAG7BC,SAAS,EAAE,WAHkB;EAI7BC,WAAW,EAAE;IAAE,cAAc,WAAhB;IAA6BC,KAAK,EAAE;EAApC,CAJgB;EAK7BC,IAAI,eACF;IAAK,KAAK,EAAC,IAAX;IAAgB,MAAM,EAAC,IAAvB;IAA4B,OAAO,EAAC,WAApC;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN2B;EAa7BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG,IAAAC,yBAAA,EAAW;MAAEC,IAAI,EAAEJ,KAAK,CAACI,IAAd;MAAoBC,SAAS,EAAEL,KAAK,CAACK;IAArC,CAAX,CAA1B;IACA,IAAMC,MAAM,GAAGL,GAAG,CAACM,iBAAJ,CAAsBL,iBAAtB,CAAf,CAHmD,CAInD;;IACA,IAAMM,aAAa,GAAGF,MAAM,CAACG,YAAP,IAAuB,oCAA7C;IACAR,GAAG,CAACS,gBAAJ,eAA4BF,aAA5B,QANmD,CAOnD;;IACAP,GAAG,CAACM,iBAAJ,CAAsB;MACpBI,KAAK,EAAE,IAAIL,MAAM,CAACD,SAAP,CAAiBM,KADR;MAEpBC,GAAG,EAAE,IAAIN,MAAM,CAACD,SAAP,CAAiBM,KAArB,GAA6BH,aAAa,CAACK;IAF5B,CAAtB;EAID;AAzB4B,CAAxB"
|
|
33
34
|
}
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"selectedText",
|
|
35
35
|
"slice",
|
|
36
36
|
"TextAreaTextApi",
|
|
37
|
+
"insertTextAtPosition",
|
|
37
38
|
"focus",
|
|
38
39
|
"TextAreaCommandOrchestrator",
|
|
39
40
|
"textApi",
|
|
@@ -48,5 +49,5 @@
|
|
|
48
49
|
"sourcesContent": [
|
|
49
50
|
"import { bold } from './bold';\nimport { code, codeBlock } from './code';\nimport { italic } from './italic';\nimport { link } from './link';\nimport { unorderedListCommand, orderedListCommand, checkedListCommand } from './list';\nimport { quote } from './quote';\nimport { hr } from './hr';\nimport { title } from './title';\nimport { title1 } from './title1';\nimport { title2 } from './title2';\nimport { title3 } from './title3';\nimport { title4 } from './title4';\nimport { title5 } from './title5';\nimport { title6 } from './title6';\nimport { comment } from './comment';\nimport { group } from './group';\nimport { divider } from './divider';\nimport { codePreview, codeEdit, codeLive } from './preview';\nimport { fullscreen } from './fullscreen';\nimport { image } from './image';\nimport { strikethrough } from './strikeThrough';\nimport { insertTextAtPosition } from '../utils/InsertTextAtPosition';\nimport { ContextStore, ExecuteCommandState } from '../Context';\n\nexport interface CommandOrchestrator {\n executeCommand(command: ICommand): void;\n}\n\nexport interface ICommandChildHandle<T = string> extends ICommandBase<T> {\n children?: (handle: {\n close: () => void;\n execute: () => void;\n getState?: TextAreaCommandOrchestrator['getState'];\n textApi?: TextAreaTextApi;\n }) => React.ReactElement;\n}\n\nexport interface ICommandChildCommands<T = string> extends ICommandBase<T> {\n children?: Array<ICommand<T>>;\n}\n\nexport interface ICommandBase<T> {\n parent?: ICommand<any>;\n keyCommand?: string;\n name?: string;\n shortcuts?: string;\n groupName?: string;\n icon?: React.ReactElement;\n value?: T;\n position?: 'right';\n liProps?: React.LiHTMLAttributes<HTMLLIElement>;\n buttonProps?: React.ButtonHTMLAttributes<HTMLButtonElement> | null;\n execute?: (\n state: TextState,\n api: TextAreaTextApi,\n dispatch?: React.Dispatch<ContextStore>,\n executeCommandState?: ExecuteCommandState,\n ) => void;\n}\n\nexport type ICommand<T = string> = ICommandChildCommands<T> | ICommandChildHandle<T>;\n\nexport interface TextRange {\n start: number;\n end: number;\n}\n\nexport interface TextState {\n text: string;\n selectedText: string;\n selection: TextRange;\n}\n\nconst getCommands: () => ICommand[] = () => [\n comment,\n bold,\n italic,\n strikethrough,\n hr,\n title,\n divider,\n link,\n quote,\n code,\n codeBlock,\n image,\n divider,\n unorderedListCommand,\n orderedListCommand,\n checkedListCommand,\n];\n\nconst getExtraCommands: () => ICommand[] = () => [codeEdit, codeLive, codePreview, divider, fullscreen];\n\nfunction getStateFromTextArea(textArea: HTMLTextAreaElement): TextState {\n return {\n selection: {\n start: textArea.selectionStart,\n end: textArea.selectionEnd,\n },\n text: textArea.value,\n selectedText: textArea.value.slice(textArea.selectionStart, textArea.selectionEnd),\n };\n}\n\nclass TextAreaTextApi {\n textArea: HTMLTextAreaElement;\n\n constructor(textArea: HTMLTextAreaElement) {\n this.textArea = textArea;\n }\n\n /**\n * Replaces the current selection with the new text. This will make the new selectedText to be empty, the\n * selection start and selection end will be the same and will both point to the end\n * @param text Text that should replace the current selection\n */\n replaceSelection(text: string): TextState {\n insertTextAtPosition(this.textArea, text);\n return getStateFromTextArea(this.textArea);\n }\n\n /**\n * Selects the specified text range\n * @param selection\n */\n setSelectionRange(selection: TextRange): TextState {\n this.textArea.focus();\n this.textArea.selectionStart = selection.start;\n this.textArea.selectionEnd = selection.end;\n return getStateFromTextArea(this.textArea);\n }\n}\n\nclass TextAreaCommandOrchestrator implements CommandOrchestrator {\n textArea: HTMLTextAreaElement;\n textApi: TextAreaTextApi;\n\n constructor(textArea: HTMLTextAreaElement) {\n this.textArea = textArea;\n this.textApi = new TextAreaTextApi(textArea);\n }\n\n getState() {\n if (!this.textArea) return false;\n return getStateFromTextArea(this.textArea);\n }\n\n executeCommand(\n command: ICommand<string>,\n dispatch?: React.Dispatch<ContextStore>,\n state?: ExecuteCommandState,\n ): void {\n command.execute && command.execute(getStateFromTextArea(this.textArea), this.textApi, dispatch, state);\n }\n}\n\nexport {\n // Toolbars.\n title,\n title1,\n title2,\n title3,\n title4,\n title5,\n title6,\n bold,\n codeBlock,\n italic,\n strikethrough,\n hr,\n group,\n divider,\n link,\n quote,\n code,\n image,\n unorderedListCommand,\n orderedListCommand,\n checkedListCommand,\n codeEdit,\n codeLive,\n codePreview,\n fullscreen,\n // Tool method.\n getCommands,\n getExtraCommands,\n getStateFromTextArea,\n TextAreaCommandOrchestrator,\n TextAreaTextApi,\n};\n"
|
|
50
51
|
],
|
|
51
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoDA,IAAMA,WAA6B,GAAG,SAAhCA,WAAgC;EAAA,OAAM,CAC1CC,gBAD0C,EAE1CC,UAF0C,EAG1CC,cAH0C,EAI1CC,4BAJ0C,EAK1CC,MAL0C,EAM1CC,YAN0C,EAO1CC,gBAP0C,EAQ1CC,UAR0C,EAS1CC,YAT0C,EAU1CC,UAV0C,EAW1CC,eAX0C,EAY1CC,YAZ0C,EAa1CL,gBAb0C,EAc1CM,0BAd0C,EAe1CC,wBAf0C,EAgB1CC,wBAhB0C,CAAN;AAAA,CAAtC;;;;AAmBA,IAAMC,gBAAkC,GAAG,SAArCA,gBAAqC;EAAA,OAAM,CAACC,iBAAD,EAAWC,iBAAX,EAAqBC,oBAArB,EAAkCZ,gBAAlC,EAA2Ca,sBAA3C,CAAN;AAAA,CAA3C;;;;AAEA,SAASC,oBAAT,CAA8BC,QAA9B,EAAwE;EACtE,OAAO;IACLC,SAAS,EAAE;MACTC,KAAK,EAAEF,QAAQ,CAACG,cADP;MAETC,GAAG,EAAEJ,QAAQ,CAACK;IAFL,CADN;IAKLC,IAAI,EAAEN,QAAQ,CAACO,KALV;IAMLC,YAAY,EAAER,QAAQ,CAACO,KAAT,CAAeE,KAAf,CAAqBT,QAAQ,CAACG,cAA9B,EAA8CH,QAAQ,CAACK,YAAvD;EANT,CAAP;AAQD;;IAEKK,e;EAGJ,yBAAYV,QAAZ,EAA2C;IAAA;IAAA;IACzC,KAAKA,QAAL,GAAgBA,QAAhB;EACD;EAED;AACF;AACA;AACA;AACA;;;;;WACE,0BAAiBM,IAAjB,EAA0C;MACxC,
|
|
52
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoDA,IAAMA,WAA6B,GAAG,SAAhCA,WAAgC;EAAA,OAAM,CAC1CC,gBAD0C,EAE1CC,UAF0C,EAG1CC,cAH0C,EAI1CC,4BAJ0C,EAK1CC,MAL0C,EAM1CC,YAN0C,EAO1CC,gBAP0C,EAQ1CC,UAR0C,EAS1CC,YAT0C,EAU1CC,UAV0C,EAW1CC,eAX0C,EAY1CC,YAZ0C,EAa1CL,gBAb0C,EAc1CM,0BAd0C,EAe1CC,wBAf0C,EAgB1CC,wBAhB0C,CAAN;AAAA,CAAtC;;;;AAmBA,IAAMC,gBAAkC,GAAG,SAArCA,gBAAqC;EAAA,OAAM,CAACC,iBAAD,EAAWC,iBAAX,EAAqBC,oBAArB,EAAkCZ,gBAAlC,EAA2Ca,sBAA3C,CAAN;AAAA,CAA3C;;;;AAEA,SAASC,oBAAT,CAA8BC,QAA9B,EAAwE;EACtE,OAAO;IACLC,SAAS,EAAE;MACTC,KAAK,EAAEF,QAAQ,CAACG,cADP;MAETC,GAAG,EAAEJ,QAAQ,CAACK;IAFL,CADN;IAKLC,IAAI,EAAEN,QAAQ,CAACO,KALV;IAMLC,YAAY,EAAER,QAAQ,CAACO,KAAT,CAAeE,KAAf,CAAqBT,QAAQ,CAACG,cAA9B,EAA8CH,QAAQ,CAACK,YAAvD;EANT,CAAP;AAQD;;IAEKK,e;EAGJ,yBAAYV,QAAZ,EAA2C;IAAA;IAAA;IACzC,KAAKA,QAAL,GAAgBA,QAAhB;EACD;EAED;AACF;AACA;AACA;AACA;;;;;WACE,0BAAiBM,IAAjB,EAA0C;MACxC,IAAAK,0CAAA,EAAqB,KAAKX,QAA1B,EAAoCM,IAApC;MACA,OAAOP,oBAAoB,CAAC,KAAKC,QAAN,CAA3B;IACD;IAED;AACF;AACA;AACA;;;;WACE,2BAAkBC,SAAlB,EAAmD;MACjD,KAAKD,QAAL,CAAcY,KAAd;MACA,KAAKZ,QAAL,CAAcG,cAAd,GAA+BF,SAAS,CAACC,KAAzC;MACA,KAAKF,QAAL,CAAcK,YAAd,GAA6BJ,SAAS,CAACG,GAAvC;MACA,OAAOL,oBAAoB,CAAC,KAAKC,QAAN,CAA3B;IACD;;;;;;;IAGGa,2B;EAIJ,qCAAYb,QAAZ,EAA2C;IAAA;IAAA;IAAA;IACzC,KAAKA,QAAL,GAAgBA,QAAhB;IACA,KAAKc,OAAL,GAAe,IAAIJ,eAAJ,CAAoBV,QAApB,CAAf;EACD;;;;WAED,oBAAW;MACT,IAAI,CAAC,KAAKA,QAAV,EAAoB,OAAO,KAAP;MACpB,OAAOD,oBAAoB,CAAC,KAAKC,QAAN,CAA3B;IACD;;;WAED,wBACEe,OADF,EAEEC,QAFF,EAGEC,KAHF,EAIQ;MACNF,OAAO,CAACG,OAAR,IAAmBH,OAAO,CAACG,OAAR,CAAgBnB,oBAAoB,CAAC,KAAKC,QAAN,CAApC,EAAqD,KAAKc,OAA1D,EAAmEE,QAAnE,EAA6EC,KAA7E,CAAnB;IACD"
|
|
52
53
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"state",
|
|
13
13
|
"api",
|
|
14
14
|
"newSelectionRange",
|
|
15
|
+
"selectWord",
|
|
15
16
|
"text",
|
|
16
17
|
"selection",
|
|
17
18
|
"state1",
|
|
@@ -29,5 +30,5 @@
|
|
|
29
30
|
"sourcesContent": [
|
|
30
31
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport { selectWord } from '../utils/markdownUtils';\n\nexport const italic: ICommand = {\n name: 'italic',\n keyCommand: 'italic',\n shortcuts: 'ctrlcmd+i',\n buttonProps: { 'aria-label': 'Add italic text', title: 'Add italic text' },\n icon: (\n <svg data-name=\"italic\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 320 512\">\n <path\n fill=\"currentColor\"\n d=\"M204.758 416h-33.849l62.092-320h40.725a16 16 0 0 0 15.704-12.937l6.242-32C297.599 41.184 290.034 32 279.968 32H120.235a16 16 0 0 0-15.704 12.937l-6.242 32C96.362 86.816 103.927 96 113.993 96h33.846l-62.09 320H46.278a16 16 0 0 0-15.704 12.935l-6.245 32C22.402 470.815 29.967 480 40.034 480h158.479a16 16 0 0 0 15.704-12.935l6.245-32c1.927-9.88-5.638-19.065-15.704-19.065z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n // Replaces the current selection with the italic mark up\n const state2 = api.replaceSelection(`*${state1.selectedText}*`);\n // Adjust the selection to not contain the *\n api.setSelectionRange({\n start: state2.selection.end - 1 - state1.selectedText.length,\n end: state2.selection.end - 1,\n });\n },\n};\n"
|
|
31
32
|
],
|
|
32
|
-
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,iBAAhB;IAAmCC,KAAK,EAAE;EAA1C,CAJiB;EAK9BC,IAAI,eACF;IAAK,aAAU,QAAf;IAAwB,KAAK,EAAC,IAA9B;IAAmC,MAAM,EAAC,IAA1C;IAA+C,IAAI,EAAC,KAApD;IAA0D,OAAO,EAAC,aAAlE;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN4B;EAa9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG
|
|
33
|
+
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,iBAAhB;IAAmCC,KAAK,EAAE;EAA1C,CAJiB;EAK9BC,IAAI,eACF;IAAK,aAAU,QAAf;IAAwB,KAAK,EAAC,IAA9B;IAAmC,MAAM,EAAC,IAA1C;IAA+C,IAAI,EAAC,KAApD;IAA0D,OAAO,EAAC,aAAlE;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN4B;EAa9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG,IAAAC,yBAAA,EAAW;MAAEC,IAAI,EAAEJ,KAAK,CAACI,IAAd;MAAoBC,SAAS,EAAEL,KAAK,CAACK;IAArC,CAAX,CAA1B;IACA,IAAMC,MAAM,GAAGL,GAAG,CAACM,iBAAJ,CAAsBL,iBAAtB,CAAf,CAHmD,CAInD;;IACA,IAAMM,MAAM,GAAGP,GAAG,CAACQ,gBAAJ,YAAyBH,MAAM,CAACI,YAAhC,OAAf,CALmD,CAMnD;;IACAT,GAAG,CAACM,iBAAJ,CAAsB;MACpBI,KAAK,EAAEH,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB,CAAvB,GAA2BN,MAAM,CAACI,YAAP,CAAoBG,MADlC;MAEpBD,GAAG,EAAEJ,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB;IAFR,CAAtB;EAID;AAxB6B,CAAzB"
|
|
33
34
|
}
|
package/lib/commands/link.js.map
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"state",
|
|
13
13
|
"api",
|
|
14
14
|
"newSelectionRange",
|
|
15
|
+
"selectWord",
|
|
15
16
|
"text",
|
|
16
17
|
"selection",
|
|
17
18
|
"state1",
|
|
@@ -29,5 +30,5 @@
|
|
|
29
30
|
"sourcesContent": [
|
|
30
31
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport { selectWord } from '../utils/markdownUtils';\n\nexport const link: ICommand = {\n name: 'link',\n keyCommand: 'link',\n shortcuts: 'ctrlcmd+k',\n buttonProps: { 'aria-label': 'Add a link', title: 'Add a link' },\n icon: (\n <svg data-name=\"italic\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 520 520\">\n <path\n fill=\"currentColor\"\n d=\"M331.751196,182.121107 C392.438214,241.974735 391.605313,337.935283 332.11686,396.871226 C332.005129,396.991316 331.873084,397.121413 331.751196,397.241503 L263.493918,464.491645 C203.291404,523.80587 105.345257,523.797864 45.151885,464.491645 C-15.0506283,405.187427 -15.0506283,308.675467 45.151885,249.371249 L82.8416853,212.237562 C92.836501,202.39022 110.049118,208.9351 110.56511,222.851476 C111.223305,240.5867 114.451306,258.404985 120.407566,275.611815 C122.424812,281.438159 120.983487,287.882964 116.565047,292.23621 L103.272145,305.332975 C74.8052033,333.379887 73.9123737,379.047937 102.098973,407.369054 C130.563883,435.969378 177.350591,436.139505 206.033884,407.879434 L274.291163,340.6393 C302.9257,312.427264 302.805844,266.827265 274.291163,238.733318 C270.531934,235.036561 266.74528,232.16442 263.787465,230.157924 C259.544542,227.2873 256.928256,222.609848 256.731165,217.542518 C256.328935,206.967633 260.13184,196.070508 268.613213,187.714278 L289.998463,166.643567 C295.606326,161.118448 304.403592,160.439942 310.906317,164.911276 C318.353355,170.034591 325.328531,175.793397 331.751196,182.121107 Z M240.704978,55.4828366 L172.447607,122.733236 C172.325719,122.853326 172.193674,122.983423 172.081943,123.103513 C117.703294,179.334654 129.953294,261.569283 185.365841,328.828764 C191.044403,335.721376 198.762988,340.914712 206.209732,346.037661 C212.712465,350.509012 221.510759,349.829503 227.117615,344.305363 L248.502893,323.234572 C256.984277,314.87831 260.787188,303.981143 260.384957,293.406218 C260.187865,288.338869 257.571576,283.661398 253.328648,280.790763 C250.370829,278.78426 246.58417,275.912107 242.824936,272.215337 C214.310216,244.121282 206.209732,204.825874 229.906702,179.334654 L298.164073,112.094263 C326.847404,83.8340838 373.633159,84.0042113 402.099123,112.604645 C430.285761,140.92587 429.393946,186.594095 400.92595,214.641114 L387.63303,227.737929 C383.214584,232.091191 381.773257,238.536021 383.790506,244.362388 C389.746774,261.569283 392.974779,279.387637 393.632975,297.122928 C394.149984,311.039357 411.361608,317.584262 421.356437,307.736882 L459.046288,270.603053 C519.249898,211.29961 519.249898,114.787281 459.047304,55.4828366 C398.853851,-3.82360914 300.907572,-3.83161514 240.704978,55.4828366 Z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n // Replaces the current selection with the bold mark up\n const state2 = api.replaceSelection(`[${state1.selectedText}](url)`);\n // Adjust the selection to not contain the **\n api.setSelectionRange({\n start: state2.selection.end - 6 - state1.selectedText.length,\n end: state2.selection.end - 6,\n });\n },\n};\n"
|
|
31
32
|
],
|
|
32
|
-
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,IAAc,GAAG;EAC5BC,IAAI,EAAE,MADsB;EAE5BC,UAAU,EAAE,MAFgB;EAG5BC,SAAS,EAAE,WAHiB;EAI5BC,WAAW,EAAE;IAAE,cAAc,YAAhB;IAA8BC,KAAK,EAAE;EAArC,CAJe;EAK5BC,IAAI,eACF;IAAK,aAAU,QAAf;IAAwB,KAAK,EAAC,IAA9B;IAAmC,MAAM,EAAC,IAA1C;IAA+C,IAAI,EAAC,KAApD;IAA0D,OAAO,EAAC,aAAlE;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN0B;EAa5BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG
|
|
33
|
+
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,IAAc,GAAG;EAC5BC,IAAI,EAAE,MADsB;EAE5BC,UAAU,EAAE,MAFgB;EAG5BC,SAAS,EAAE,WAHiB;EAI5BC,WAAW,EAAE;IAAE,cAAc,YAAhB;IAA8BC,KAAK,EAAE;EAArC,CAJe;EAK5BC,IAAI,eACF;IAAK,aAAU,QAAf;IAAwB,KAAK,EAAC,IAA9B;IAAmC,MAAM,EAAC,IAA1C;IAA+C,IAAI,EAAC,KAApD;IAA0D,OAAO,EAAC,aAAlE;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN0B;EAa5BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG,IAAAC,yBAAA,EAAW;MAAEC,IAAI,EAAEJ,KAAK,CAACI,IAAd;MAAoBC,SAAS,EAAEL,KAAK,CAACK;IAArC,CAAX,CAA1B;IACA,IAAMC,MAAM,GAAGL,GAAG,CAACM,iBAAJ,CAAsBL,iBAAtB,CAAf,CAHmD,CAInD;;IACA,IAAMM,MAAM,GAAGP,GAAG,CAACQ,gBAAJ,YAAyBH,MAAM,CAACI,YAAhC,YAAf,CALmD,CAMnD;;IACAT,GAAG,CAACM,iBAAJ,CAAsB;MACpBI,KAAK,EAAEH,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB,CAAvB,GAA2BN,MAAM,CAACI,YAAP,CAAoBG,MADlC;MAEpBD,GAAG,EAAEJ,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB;IAFR,CAAtB;EAID;AAxB2B,CAAvB"
|
|
33
34
|
}
|
package/lib/commands/list.js.map
CHANGED
|
@@ -19,15 +19,18 @@
|
|
|
19
19
|
"state",
|
|
20
20
|
"api",
|
|
21
21
|
"newSelectionRange",
|
|
22
|
+
"selectWord",
|
|
22
23
|
"text",
|
|
23
24
|
"selection",
|
|
24
25
|
"state1",
|
|
25
26
|
"setSelectionRange",
|
|
26
27
|
"breaksBeforeCount",
|
|
28
|
+
"getBreaksNeededForEmptyLineBefore",
|
|
27
29
|
"start",
|
|
28
30
|
"breaksBefore",
|
|
29
31
|
"Array",
|
|
30
32
|
"breaksAfterCount",
|
|
33
|
+
"getBreaksNeededForEmptyLineAfter",
|
|
31
34
|
"end",
|
|
32
35
|
"breaksAfter",
|
|
33
36
|
"replaceSelection",
|
|
@@ -52,5 +55,5 @@
|
|
|
52
55
|
"sourcesContent": [
|
|
53
56
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport {\n selectWord,\n getBreaksNeededForEmptyLineBefore,\n getBreaksNeededForEmptyLineAfter,\n} from '../utils/markdownUtils';\n\nexport type AlterLineFunction = (line: string, index: number) => string;\n\n/**\n * Inserts insertionString before each line\n */\nexport function insertBeforeEachLine(\n selectedText: string,\n insertBefore: string | AlterLineFunction,\n): { modifiedText: string; insertionLength: number } {\n const lines = selectedText.split(/\\n/);\n\n let insertionLength = 0;\n const modifiedText = lines\n .map((item, index) => {\n if (typeof insertBefore === 'string') {\n insertionLength += insertBefore.length;\n return insertBefore + item;\n } else if (typeof insertBefore === 'function') {\n const insertionResult = insertBefore(item, index);\n insertionLength += insertionResult.length;\n return insertBefore(item, index) + item;\n }\n throw Error('insertion is expected to be either a string or a function');\n })\n .join('\\n');\n\n return { modifiedText, insertionLength };\n}\n\nexport const makeList = (state: TextState, api: TextAreaTextApi, insertBefore: string | AlterLineFunction) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n\n const breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n const breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n\n const breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n const breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n\n const modifiedText = insertBeforeEachLine(state1.selectedText, insertBefore);\n\n api.replaceSelection(`${breaksBefore}${modifiedText.modifiedText}${breaksAfter}`);\n\n // Specifically when the text has only one line, we can exclude the \"- \", for example, from the selection\n const oneLinerOffset = state1.selectedText.indexOf('\\n') === -1 ? modifiedText.insertionLength : 0;\n\n const selectionStart = state1.selection.start + breaksBeforeCount + oneLinerOffset;\n const selectionEnd = selectionStart + modifiedText.modifiedText.length - oneLinerOffset;\n\n // Adjust the selection to not contain the **\n api.setSelectionRange({\n start: selectionStart,\n end: selectionEnd,\n });\n};\n\nexport const unorderedListCommand: ICommand = {\n name: 'unordered-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+l',\n buttonProps: { 'aria-label': 'Add unordered list', title: 'Add unordered list' },\n icon: (\n <svg data-name=\"unordered-list\" width=\"12\" height=\"12\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M96 96c0 26.51-21.49 48-48 48S0 122.51 0 96s21.49-48 48-48 48 21.49 48 48zM48 208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm0 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm96-236h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n makeList(state, api, '- ');\n },\n};\n\nexport const orderedListCommand: ICommand = {\n name: 'ordered-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+o',\n buttonProps: { 'aria-label': 'Add ordered list', title: 'Add ordered list' },\n icon: (\n <svg data-name=\"ordered-list\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M3.263 139.527c0-7.477 3.917-11.572 11.573-11.572h15.131V88.078c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.938C32.815 33.602 36.732 32 42.785 32H54.89c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572H14.836c-7.656 0-11.573-4.095-11.573-11.572v-8.902zM2.211 304.591c0-47.278 50.955-56.383 50.955-69.165 0-7.18-5.954-8.755-9.28-8.755-3.153 0-6.479 1.051-9.455 3.852-5.079 4.903-10.507 7.004-16.111 2.451l-8.579-6.829c-5.779-4.553-7.18-9.805-2.803-15.409C13.592 201.981 26.025 192 47.387 192c19.437 0 44.476 10.506 44.476 39.573 0 38.347-46.753 46.402-48.679 56.909h39.049c7.529 0 11.557 4.027 11.557 11.382v8.755c0 7.354-4.028 11.382-11.557 11.382h-67.94c-7.005 0-12.083-4.028-12.083-11.382v-4.028zM5.654 454.61l5.603-9.28c3.853-6.654 9.105-7.004 15.584-3.152 4.903 2.101 9.63 3.152 14.359 3.152 10.155 0 14.358-3.502 14.358-8.23 0-6.654-5.604-9.106-15.934-9.106h-4.728c-5.954 0-9.28-2.101-12.258-7.88l-1.05-1.926c-2.451-4.728-1.226-9.806 2.801-14.884l5.604-7.004c6.829-8.405 12.257-13.483 12.257-13.483v-.35s-4.203 1.051-12.608 1.051H16.685c-7.53 0-11.383-4.028-11.383-11.382v-8.755c0-7.53 3.853-11.382 11.383-11.382h58.484c7.529 0 11.382 4.027 11.382 11.382v3.327c0 5.778-1.401 9.806-5.079 14.183l-17.509 20.137c19.611 5.078 28.716 20.487 28.716 34.845 0 21.363-14.358 44.126-48.503 44.126-16.636 0-28.192-4.728-35.896-9.455-5.779-4.202-6.304-9.805-2.626-15.934zM144 132h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n makeList(state, api, (item, index) => `${index + 1}. `);\n },\n};\n\nexport const checkedListCommand: ICommand = {\n name: 'checked-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+c',\n buttonProps: { 'aria-label': 'Add checked list', title: 'Add checked list' },\n icon: (\n <svg data-name=\"checked-list\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M208 132h288c8.8 0 16-7.2 16-16V76c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zM64 368c-26.5 0-48.6 21.5-48.6 48s22.1 48 48.6 48 48-21.5 48-48-21.5-48-48-48zm92.5-299l-72.2 72.2-15.6 15.6c-4.7 4.7-12.9 4.7-17.6 0L3.5 109.4c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.3c4.7-4.7 12.3-4.7 17 0l17 16.5c4.6 4.7 4.6 12.3-.1 17zm0 159.6l-72.2 72.2-15.7 15.7c-4.7 4.7-12.9 4.7-17.6 0L3.5 269c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.7c4.7-4.7 12.3-4.7 17 0l17 17c4.6 4.6 4.6 12.2-.1 16.9z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n makeList(state, api, (item, index) => `- [ ] `);\n },\n};\n"
|
|
54
57
|
],
|
|
55
|
-
"mappings": ";;;;;;;;;;;AAAA;;AAEA;;;;AAQA;AACA;AACA;AACO,SAASA,oBAAT,CACLC,YADK,EAELC,YAFK,EAG8C;EACnD,IAAMC,KAAK,GAAGF,YAAY,CAACG,KAAb,CAAmB,IAAnB,CAAd;EAEA,IAAIC,eAAe,GAAG,CAAtB;EACA,IAAMC,YAAY,GAAGH,KAAK,CACvBI,GADkB,CACd,UAACC,IAAD,EAAOC,KAAP,EAAiB;IACpB,IAAI,OAAOP,YAAP,KAAwB,QAA5B,EAAsC;MACpCG,eAAe,IAAIH,YAAY,CAACQ,MAAhC;MACA,OAAOR,YAAY,GAAGM,IAAtB;IACD,CAHD,MAGO,IAAI,OAAON,YAAP,KAAwB,UAA5B,EAAwC;MAC7C,IAAMS,eAAe,GAAGT,YAAY,CAACM,IAAD,EAAOC,KAAP,CAApC;MACAJ,eAAe,IAAIM,eAAe,CAACD,MAAnC;MACA,OAAOR,YAAY,CAACM,IAAD,EAAOC,KAAP,CAAZ,GAA4BD,IAAnC;IACD;;IACD,MAAMI,KAAK,CAAC,2DAAD,CAAX;EACD,CAXkB,EAYlBC,IAZkB,CAYb,IAZa,CAArB;EAcA,OAAO;IAAEP,YAAY,EAAZA,YAAF;IAAgBD,eAAe,EAAfA;EAAhB,CAAP;AACD;;AAEM,IAAMS,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAmBC,GAAnB,EAAyCd,YAAzC,EAAsF;EAC5G;EACA,IAAMe,iBAAiB,GAAG
|
|
58
|
+
"mappings": "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"
|
|
56
59
|
}
|
|
@@ -12,16 +12,19 @@
|
|
|
12
12
|
"state",
|
|
13
13
|
"api",
|
|
14
14
|
"newSelectionRange",
|
|
15
|
+
"selectWord",
|
|
15
16
|
"text",
|
|
16
17
|
"selection",
|
|
17
18
|
"state1",
|
|
18
19
|
"setSelectionRange",
|
|
19
20
|
"breaksBeforeCount",
|
|
21
|
+
"getBreaksNeededForEmptyLineBefore",
|
|
20
22
|
"start",
|
|
21
23
|
"breaksBefore",
|
|
22
24
|
"Array",
|
|
23
25
|
"join",
|
|
24
26
|
"breaksAfterCount",
|
|
27
|
+
"getBreaksNeededForEmptyLineAfter",
|
|
25
28
|
"end",
|
|
26
29
|
"breaksAfter",
|
|
27
30
|
"replaceSelection",
|
|
@@ -36,5 +39,5 @@
|
|
|
36
39
|
"sourcesContent": [
|
|
37
40
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport {\n getBreaksNeededForEmptyLineBefore,\n getBreaksNeededForEmptyLineAfter,\n selectWord,\n} from '../utils/markdownUtils';\n\nexport const quote: ICommand = {\n name: 'quote',\n keyCommand: 'quote',\n shortcuts: 'ctrlcmd+q',\n buttonProps: { 'aria-label': 'Insert a quote', title: 'Insert a quote' },\n icon: (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 520 520\">\n <path\n fill=\"currentColor\"\n d=\"M520,95.75 L520,225.75 C520,364.908906 457.127578,437.050625 325.040469,472.443125 C309.577578,476.586875 294.396016,464.889922 294.396016,448.881641 L294.396016,414.457031 C294.396016,404.242891 300.721328,395.025078 310.328125,391.554687 C377.356328,367.342187 414.375,349.711094 414.375,274.5 L341.25,274.5 C314.325781,274.5 292.5,252.674219 292.5,225.75 L292.5,95.75 C292.5,68.8257812 314.325781,47 341.25,47 L471.25,47 C498.174219,47 520,68.8257812 520,95.75 Z M178.75,47 L48.75,47 C21.8257813,47 0,68.8257812 0,95.75 L0,225.75 C0,252.674219 21.8257813,274.5 48.75,274.5 L121.875,274.5 C121.875,349.711094 84.8563281,367.342187 17.828125,391.554687 C8.22132813,395.025078 1.89601563,404.242891 1.89601563,414.457031 L1.89601563,448.881641 C1.89601563,464.889922 17.0775781,476.586875 32.5404687,472.443125 C164.627578,437.050625 227.5,364.908906 227.5,225.75 L227.5,95.75 C227.5,68.8257812 205.674219,47 178.75,47 Z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n const breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n const breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n\n const breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n const breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n\n // Replaces the current selection with the quote mark up\n api.replaceSelection(`${breaksBefore}> ${state1.selectedText}${breaksAfter}`);\n\n const selectionStart = state1.selection.start + breaksBeforeCount + 2;\n const selectionEnd = selectionStart + state1.selectedText.length;\n\n api.setSelectionRange({\n start: selectionStart,\n end: selectionEnd,\n });\n },\n};\n"
|
|
38
41
|
],
|
|
39
|
-
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAMO,IAAMA,KAAe,GAAG;EAC7BC,IAAI,EAAE,OADuB;EAE7BC,UAAU,EAAE,OAFiB;EAG7BC,SAAS,EAAE,WAHkB;EAI7BC,WAAW,EAAE;IAAE,cAAc,gBAAhB;IAAkCC,KAAK,EAAE;EAAzC,CAJgB;EAK7BC,IAAI,eACF;IAAK,KAAK,EAAC,IAAX;IAAgB,MAAM,EAAC,IAAvB;IAA4B,OAAO,EAAC,aAApC;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN2B;EAa7BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG
|
|
42
|
+
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAMO,IAAMA,KAAe,GAAG;EAC7BC,IAAI,EAAE,OADuB;EAE7BC,UAAU,EAAE,OAFiB;EAG7BC,SAAS,EAAE,WAHkB;EAI7BC,WAAW,EAAE;IAAE,cAAc,gBAAhB;IAAkCC,KAAK,EAAE;EAAzC,CAJgB;EAK7BC,IAAI,eACF;IAAK,KAAK,EAAC,IAAX;IAAgB,MAAM,EAAC,IAAvB;IAA4B,OAAO,EAAC,aAApC;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EAN2B;EAa7BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG,IAAAC,yBAAA,EAAW;MAAEC,IAAI,EAAEJ,KAAK,CAACI,IAAd;MAAoBC,SAAS,EAAEL,KAAK,CAACK;IAArC,CAAX,CAA1B;IACA,IAAMC,MAAM,GAAGL,GAAG,CAACM,iBAAJ,CAAsBL,iBAAtB,CAAf;IACA,IAAMM,iBAAiB,GAAG,IAAAC,gDAAA,EAAkCH,MAAM,CAACF,IAAzC,EAA+CE,MAAM,CAACD,SAAP,CAAiBK,KAAhE,CAA1B;IACA,IAAMC,YAAY,GAAGC,KAAK,CAACJ,iBAAiB,GAAG,CAArB,CAAL,CAA6BK,IAA7B,CAAkC,IAAlC,CAArB;IAEA,IAAMC,gBAAgB,GAAG,IAAAC,+CAAA,EAAiCT,MAAM,CAACF,IAAxC,EAA8CE,MAAM,CAACD,SAAP,CAAiBW,GAA/D,CAAzB;IACA,IAAMC,WAAW,GAAGL,KAAK,CAACE,gBAAgB,GAAG,CAApB,CAAL,CAA4BD,IAA5B,CAAiC,IAAjC,CAApB,CARmD,CAUnD;;IACAZ,GAAG,CAACiB,gBAAJ,WAAwBP,YAAxB,eAAyCL,MAAM,CAACa,YAAhD,SAA+DF,WAA/D;IAEA,IAAMG,cAAc,GAAGd,MAAM,CAACD,SAAP,CAAiBK,KAAjB,GAAyBF,iBAAzB,GAA6C,CAApE;IACA,IAAMa,YAAY,GAAGD,cAAc,GAAGd,MAAM,CAACa,YAAP,CAAoBG,MAA1D;IAEArB,GAAG,CAACM,iBAAJ,CAAsB;MACpBG,KAAK,EAAEU,cADa;MAEpBJ,GAAG,EAAEK;IAFe,CAAtB;EAID;AAjC4B,CAAxB"
|
|
40
43
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"state",
|
|
13
13
|
"api",
|
|
14
14
|
"newSelectionRange",
|
|
15
|
+
"selectWord",
|
|
15
16
|
"text",
|
|
16
17
|
"selection",
|
|
17
18
|
"state1",
|
|
@@ -29,5 +30,5 @@
|
|
|
29
30
|
"sourcesContent": [
|
|
30
31
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport { selectWord } from '../utils/markdownUtils';\n\nexport const strikethrough: ICommand = {\n name: 'strikethrough',\n keyCommand: 'strikethrough',\n shortcuts: 'ctrl+shift+x',\n buttonProps: { 'aria-label': 'Add strikethrough text', title: 'Add strikethrough text' },\n icon: (\n <svg data-name=\"strikethrough\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M496 288H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h480c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16zm-214.666 16c27.258 12.937 46.524 28.683 46.524 56.243 0 33.108-28.977 53.676-75.621 53.676-32.325 0-76.874-12.08-76.874-44.271V368c0-8.837-7.164-16-16-16H113.75c-8.836 0-16 7.163-16 16v19.204c0 66.845 77.717 101.82 154.487 101.82 88.578 0 162.013-45.438 162.013-134.424 0-19.815-3.618-36.417-10.143-50.6H281.334zm-30.952-96c-32.422-13.505-56.836-28.946-56.836-59.683 0-33.92 30.901-47.406 64.962-47.406 42.647 0 64.962 16.593 64.962 32.985V136c0 8.837 7.164 16 16 16h45.613c8.836 0 16-7.163 16-16v-30.318c0-52.438-71.725-79.875-142.575-79.875-85.203 0-150.726 40.972-150.726 125.646 0 22.71 4.665 41.176 12.777 56.547h129.823z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n // Replaces the current selection with the strikethrough mark up\n const state2 = api.replaceSelection(`~~${state1.selectedText}~~`);\n // Adjust the selection to not contain the ~~\n api.setSelectionRange({\n start: state2.selection.end - 2 - state1.selectedText.length,\n end: state2.selection.end - 2,\n });\n },\n};\n"
|
|
31
32
|
],
|
|
32
|
-
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,aAAuB,GAAG;EACrCC,IAAI,EAAE,eAD+B;EAErCC,UAAU,EAAE,eAFyB;EAGrCC,SAAS,EAAE,cAH0B;EAIrCC,WAAW,EAAE;IAAE,cAAc,wBAAhB;IAA0CC,KAAK,EAAE;EAAjD,CAJwB;EAKrCC,IAAI,eACF;IAAK,aAAU,eAAf;IAA+B,KAAK,EAAC,IAArC;IAA0C,MAAM,EAAC,IAAjD;IAAsD,IAAI,EAAC,KAA3D;IAAiE,OAAO,EAAC,aAAzE;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EANmC;EAarCC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG
|
|
33
|
+
"mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,aAAuB,GAAG;EACrCC,IAAI,EAAE,eAD+B;EAErCC,UAAU,EAAE,eAFyB;EAGrCC,SAAS,EAAE,cAH0B;EAIrCC,WAAW,EAAE;IAAE,cAAc,wBAAhB;IAA0CC,KAAK,EAAE;EAAjD,CAJwB;EAKrCC,IAAI,eACF;IAAK,aAAU,eAAf;IAA+B,KAAK,EAAC,IAArC;IAA0C,MAAM,EAAC,IAAjD;IAAsD,IAAI,EAAC,KAA3D;IAAiE,OAAO,EAAC,aAAzE;IAAA,uBACE;MACE,IAAI,EAAC,cADP;MAEE,CAAC,EAAC;IAFJ;EADF,EANmC;EAarCC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD;IACA,IAAMC,iBAAiB,GAAG,IAAAC,yBAAA,EAAW;MAAEC,IAAI,EAAEJ,KAAK,CAACI,IAAd;MAAoBC,SAAS,EAAEL,KAAK,CAACK;IAArC,CAAX,CAA1B;IACA,IAAMC,MAAM,GAAGL,GAAG,CAACM,iBAAJ,CAAsBL,iBAAtB,CAAf,CAHmD,CAInD;;IACA,IAAMM,MAAM,GAAGP,GAAG,CAACQ,gBAAJ,aAA0BH,MAAM,CAACI,YAAjC,QAAf,CALmD,CAMnD;;IACAT,GAAG,CAACM,iBAAJ,CAAsB;MACpBI,KAAK,EAAEH,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB,CAAvB,GAA2BN,MAAM,CAACI,YAAP,CAAoBG,MADlC;MAEpBD,GAAG,EAAEJ,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB;IAFR,CAAtB;EAID;AAxBoC,CAAhC"
|
|
33
34
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"test",
|
|
19
19
|
"text",
|
|
20
20
|
"replaceSelection",
|
|
21
|
+
"insertAtLineStart",
|
|
21
22
|
"textArea"
|
|
22
23
|
],
|
|
23
24
|
"sources": [
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"import React from 'react';\nimport { insertAtLineStart } from '../utils/InsertTextAtPosition';\nimport { ICommand, TextState, TextAreaTextApi } from './';\n\nexport const title1: ICommand = {\n name: 'title1',\n keyCommand: 'title1',\n shortcuts: 'ctrlcmd+1',\n buttonProps: { 'aria-label': 'Insert title 1', title: 'Insert title 1' },\n icon: <div style={{ fontSize: 18, textAlign: 'left' }}>Title 1</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"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,gBAAhB;IAAkCC,KAAK,EAAE;EAAzC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,IAArB;IACD,CAFD,MAEO;MACL,
|
|
30
|
+
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,gBAAhB;IAAkCC,KAAK,EAAE;EAAzC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,IAArB;IACD,CAFD,MAEO;MACL,IAAAC,uCAAA,EAAkB,IAAlB,EAAwBP,KAAK,CAACE,SAAN,CAAgBC,KAAxC,EAA+CF,GAAG,CAACO,QAAnD;IACD;EACF;AAZ6B,CAAzB"
|
|
30
31
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"test",
|
|
19
19
|
"text",
|
|
20
20
|
"replaceSelection",
|
|
21
|
+
"insertAtLineStart",
|
|
21
22
|
"textArea"
|
|
22
23
|
],
|
|
23
24
|
"sources": [
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"import * as React from 'react';\nimport { insertAtLineStart } from '../utils/InsertTextAtPosition';\nimport { ICommand, TextState, TextAreaTextApi } from './';\n\nexport const title2: ICommand = {\n name: 'title2',\n keyCommand: 'title2',\n shortcuts: 'ctrlcmd+2',\n buttonProps: { 'aria-label': 'Insert title2', title: 'Insert title 2' },\n icon: <div style={{ fontSize: 16, textAlign: 'left' }}>Title 2</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"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,KAArB;IACD,CAFD,MAEO;MACL,
|
|
30
|
+
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,KAArB;IACD,CAFD,MAEO;MACL,IAAAC,uCAAA,EAAkB,KAAlB,EAAyBP,KAAK,CAACE,SAAN,CAAgBC,KAAzC,EAAgDF,GAAG,CAACO,QAApD;IACD;EACF;AAZ6B,CAAzB"
|
|
30
31
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"test",
|
|
19
19
|
"text",
|
|
20
20
|
"replaceSelection",
|
|
21
|
+
"insertAtLineStart",
|
|
21
22
|
"textArea"
|
|
22
23
|
],
|
|
23
24
|
"sources": [
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"import * as React from 'react';\nimport { insertAtLineStart } from '../utils/InsertTextAtPosition';\nimport { ICommand, TextState, TextAreaTextApi } from './';\n\nexport const title3: ICommand = {\n name: 'title3',\n keyCommand: 'title3',\n shortcuts: 'ctrlcmd+3',\n buttonProps: { 'aria-label': 'Insert title3', title: 'Insert title 3' },\n icon: <div style={{ fontSize: 15, textAlign: 'left' }}>Title 3</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"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,MAArB;IACD,CAFD,MAEO;MACL,
|
|
30
|
+
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,MAArB;IACD,CAFD,MAEO;MACL,IAAAC,uCAAA,EAAkB,MAAlB,EAA0BP,KAAK,CAACE,SAAN,CAAgBC,KAA1C,EAAiDF,GAAG,CAACO,QAArD;IACD;EACF;AAZ6B,CAAzB"
|
|
30
31
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"test",
|
|
19
19
|
"text",
|
|
20
20
|
"replaceSelection",
|
|
21
|
+
"insertAtLineStart",
|
|
21
22
|
"textArea"
|
|
22
23
|
],
|
|
23
24
|
"sources": [
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"import * as React from 'react';\nimport { insertAtLineStart } from '../utils/InsertTextAtPosition';\nimport { ICommand, TextState, TextAreaTextApi } from './';\n\nexport const title4: ICommand = {\n name: 'title4',\n keyCommand: 'title4',\n shortcuts: 'ctrlcmd+4',\n buttonProps: { 'aria-label': 'Insert title4', title: 'Insert title 4' },\n icon: <div style={{ fontSize: 14, textAlign: 'left' }}>Title 4</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"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,OAArB;IACD,CAFD,MAEO;MACL,
|
|
30
|
+
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,OAArB;IACD,CAFD,MAEO;MACL,IAAAC,uCAAA,EAAkB,OAAlB,EAA2BP,KAAK,CAACE,SAAN,CAAgBC,KAA3C,EAAkDF,GAAG,CAACO,QAAtD;IACD;EACF;AAZ6B,CAAzB"
|
|
30
31
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"test",
|
|
19
19
|
"text",
|
|
20
20
|
"replaceSelection",
|
|
21
|
+
"insertAtLineStart",
|
|
21
22
|
"textArea"
|
|
22
23
|
],
|
|
23
24
|
"sources": [
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"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 buttonProps: { 'aria-label': 'Insert title5', title: 'Insert title 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"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,QAArB;IACD,CAFD,MAEO;MACL,
|
|
30
|
+
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,QAArB;IACD,CAFD,MAEO;MACL,IAAAC,uCAAA,EAAkB,QAAlB,EAA4BP,KAAK,CAACE,SAAN,CAAgBC,KAA5C,EAAmDF,GAAG,CAACO,QAAvD;IACD;EACF;AAZ6B,CAAzB"
|
|
30
31
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"test",
|
|
19
19
|
"text",
|
|
20
20
|
"replaceSelection",
|
|
21
|
+
"insertAtLineStart",
|
|
21
22
|
"textArea"
|
|
22
23
|
],
|
|
23
24
|
"sources": [
|
|
@@ -26,5 +27,5 @@
|
|
|
26
27
|
"sourcesContent": [
|
|
27
28
|
"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 buttonProps: { 'aria-label': 'Insert title6', title: 'Insert title 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"
|
|
28
29
|
],
|
|
29
|
-
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,SAArB;IACD,CAFD,MAEO;MACL,
|
|
30
|
+
"mappings": ";;;;;;;;;AAAA;;AACA;;;;AAGO,IAAMA,MAAgB,GAAG;EAC9BC,IAAI,EAAE,QADwB;EAE9BC,UAAU,EAAE,QAFkB;EAG9BC,SAAS,EAAE,WAHmB;EAI9BC,WAAW,EAAE;IAAE,cAAc,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJiB;EAK9BC,IAAI,eAAE;IAAK,KAAK,EAAE;MAAEC,QAAQ,EAAE,EAAZ;MAAgBC,SAAS,EAAE;IAA3B,CAAZ;IAAA;EAAA,EALwB;EAM9BC,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;IACnD,IAAID,KAAK,CAACE,SAAN,CAAgBC,KAAhB,KAA0B,CAA1B,IAA+B,MAAMC,IAAN,CAAWJ,KAAK,CAACK,IAAjB,CAAnC,EAA2D;MACzDJ,GAAG,CAACK,gBAAJ,CAAqB,SAArB;IACD,CAFD,MAEO;MACL,IAAAC,uCAAA,EAAkB,SAAlB,EAA6BP,KAAK,CAACE,SAAN,CAAgBC,KAA7C,EAAoDF,GAAG,CAACO,QAAxD;IACD;EACF;AAZ6B,CAAzB"
|
|
30
31
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"prefixCls",
|
|
7
7
|
"onChange",
|
|
8
8
|
"dragRef",
|
|
9
|
+
"useRef",
|
|
9
10
|
"handleMouseMove",
|
|
10
11
|
"event",
|
|
11
12
|
"current",
|
|
@@ -18,10 +19,12 @@
|
|
|
18
19
|
"handleMouseUp",
|
|
19
20
|
"undefined",
|
|
20
21
|
"handleMouseDown",
|
|
22
|
+
"useEffect",
|
|
21
23
|
"document",
|
|
22
24
|
"addEventListener",
|
|
23
25
|
"removeEventListener",
|
|
24
|
-
"svg"
|
|
26
|
+
"svg",
|
|
27
|
+
"useMemo"
|
|
25
28
|
],
|
|
26
29
|
"sources": [
|
|
27
30
|
"../../../src/components/DragBar/index.tsx"
|
|
@@ -29,5 +32,5 @@
|
|
|
29
32
|
"sourcesContent": [
|
|
30
33
|
"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"
|
|
31
34
|
],
|
|
32
|
-
"mappings": ";;;;;;;;;AAAA;;;;AAWA,IAAMA,OAAgC,GAAG,SAAnCA,OAAmC,CAACC,KAAD,EAAW;EAClD,WAAgCA,KAAK,IAAI,EAAzC;EAAA,IAAQC,SAAR,QAAQA,SAAR;EAAA,IAAmBC,QAAnB,QAAmBA,QAAnB;;EACA,IAAMC,OAAO,GAAG,
|
|
35
|
+
"mappings": ";;;;;;;;;AAAA;;;;AAWA,IAAMA,OAAgC,GAAG,SAAnCA,OAAmC,CAACC,KAAD,EAAW;EAClD,WAAgCA,KAAK,IAAI,EAAzC;EAAA,IAAQC,SAAR,QAAQA,SAAR;EAAA,IAAmBC,QAAnB,QAAmBA,QAAnB;;EACA,IAAMC,OAAO,GAAG,IAAAC,aAAA,GAAhB;;EACA,SAASC,eAAT,CAAyBC,KAAzB,EAA4C;IAC1C,IAAIH,OAAO,CAACI,OAAZ,EAAqB;MACnB,IAAMC,SAAS,GAAGL,OAAO,CAACI,OAAR,CAAgBE,MAAhB,GAAyBH,KAAK,CAACI,OAA/B,GAAyCP,OAAO,CAACI,OAAR,CAAgBI,KAA3E;;MACA,IAAIH,SAAS,IAAIR,KAAK,CAACY,SAAnB,IAAgCJ,SAAS,IAAIR,KAAK,CAACa,SAAvD,EAAkE;QAChEX,QAAQ,IAAIA,QAAQ,CAACC,OAAO,CAACI,OAAR,CAAgBE,MAAhB,IAA0BH,KAAK,CAACI,OAAN,GAAgBP,OAAO,CAACI,OAAR,CAAgBI,KAA1D,CAAD,CAApB;MACD;IACF;EACF;;EACD,SAASG,aAAT,GAAyB;IACvBX,OAAO,CAACI,OAAR,GAAkBQ,SAAlB;EACD;;EACD,SAASC,eAAT,CAAyBV,KAAzB,EAA8E;IAC5EH,OAAO,CAACI,OAAR,GAAkB;MAChBE,MAAM,EAAET,KAAK,CAACS,MADE;MAEhBE,KAAK,EAAEL,KAAK,CAACI;IAFG,CAAlB;EAID;;EAED,IAAAO,gBAAA,EAAU,YAAM;IACd,IAAIC,QAAJ,EAAc;MACZA,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCd,eAAvC;MACAa,QAAQ,CAACC,gBAAT,CAA0B,SAA1B,EAAqCL,aAArC;IACD;;IACD,OAAO,YAAM;MACX,IAAII,QAAJ,EAAc;QACZA,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0Cf,eAA1C;QACAa,QAAQ,CAACE,mBAAT,CAA6B,SAA7B,EAAwCN,aAAxC;MACD;IACF,CALD,CALc,CAWd;EACD,CAZD,EAYG,EAZH;EAaA,IAAMO,GAAG,GAAG,IAAAC,cAAA,EACV;IAAA,oBACE;MAAK,OAAO,EAAC,aAAb;MAA2B,MAAM,EAAC,MAAlC;MAAA,uBACE;QACE,IAAI,EAAC,cADP;QAEE,CAAC,EAAC;MAFJ;IADF,EADF;EAAA,CADU,EASV,EATU,CAAZ;EAWA,oBACE;IAAK,SAAS,YAAKrB,SAAL,SAAd;IAAoC,WAAW,EAAEe,eAAjD;IAAA,UACGK;EADH,EADF;AAKD,CAlDD;;eAoDetB,O"
|
|
33
36
|
}
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
"Markdown",
|
|
5
5
|
"props",
|
|
6
6
|
"prefixCls",
|
|
7
|
+
"useContext",
|
|
7
8
|
"EditorContext",
|
|
8
9
|
"markdown",
|
|
9
10
|
"dispatch",
|
|
10
11
|
"preRef",
|
|
11
12
|
"React",
|
|
12
13
|
"createRef",
|
|
14
|
+
"useEffect",
|
|
13
15
|
"current",
|
|
14
16
|
"textareaPre",
|
|
15
17
|
"html2Escape",
|
|
@@ -17,6 +19,8 @@
|
|
|
17
19
|
"replace",
|
|
18
20
|
"str",
|
|
19
21
|
"c",
|
|
22
|
+
"useMemo",
|
|
23
|
+
"rehype",
|
|
20
24
|
"data",
|
|
21
25
|
"fragment",
|
|
22
26
|
"use",
|
|
@@ -35,5 +39,5 @@
|
|
|
35
39
|
"sourcesContent": [
|
|
36
40
|
"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\nexport interface MarkdownProps extends IProps, React.HTMLAttributes<HTMLPreElement> {}\n\nexport default function Markdown(props: MarkdownProps) {\n const { prefixCls } = props;\n const { markdown = '', 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 function 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\n return useMemo(() => {\n if (!markdown) {\n return <pre children={markdown || ''} ref={preRef} className={`${prefixCls}-text-pre wmde-markdown-color`} />;\n }\n const str = rehype()\n .data('settings', { fragment: true })\n .use(rehypePrism, { ignoreMissing: true })\n .processSync(\n `<pre class=\"language-markdown ${prefixCls}-text-pre wmde-markdown-color\"><code class=\"language-markdown\">${html2Escape(\n markdown,\n )}\\n</code></pre>`,\n );\n return React.createElement('div', {\n className: 'wmde-markdown-color',\n dangerouslySetInnerHTML: { __html: str.value as string },\n });\n }, [markdown, preRef, prefixCls]);\n}\n"
|
|
37
41
|
],
|
|
38
|
-
"mappings": ";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;AAIe,SAASA,QAAT,CAAkBC,KAAlB,EAAwC;EACrD,IAAQC,SAAR,GAAsBD,KAAtB,CAAQC,SAAR;;EACA,kBAAoC,
|
|
42
|
+
"mappings": ";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;AAIe,SAASA,QAAT,CAAkBC,KAAlB,EAAwC;EACrD,IAAQC,SAAR,GAAsBD,KAAtB,CAAQC,SAAR;;EACA,kBAAoC,IAAAC,iBAAA,EAAWC,sBAAX,CAApC;EAAA,uCAAQC,QAAR;EAAA,IAAQA,QAAR,qCAAmB,EAAnB;EAAA,IAAuBC,QAAvB,eAAuBA,QAAvB;;EACA,IAAMC,MAAM,gBAAGC,cAAA,CAAMC,SAAN,EAAf;;EACA,IAAAC,gBAAA,EAAU,YAAM;IACd,IAAIH,MAAM,CAACI,OAAP,IAAkBL,QAAtB,EAAgC;MAC9BA,QAAQ,CAAC;QAAEM,WAAW,EAAEL,MAAM,CAACI;MAAtB,CAAD,CAAR;IACD,CAHa,CAId;;EACD,CALD,EAKG,EALH;;EAMA,SAASE,WAAT,CAAqBC,KAArB,EAAoC;IAClC,OAAOA,KAAK,CACTC,OADI,CACI,qDADJ,EAC2D,UAACC,GAAD,EAAiB;MAC/E,OAAOA,GAAG,CAACD,OAAJ,CACL,QADK,EAEL,UAACE,CAAD;QAAA,OAAiB;UAAE,KAAK,MAAP;UAAe,KAAK,MAApB;UAA4B,KAAK,OAAjC;UAA0C,KAAK;QAA/C,CAAD,CAAsFA,CAAtF,CAAhB;MAAA,CAFK,CAAP;IAID,CANI,EAOJF,OAPI,CAQH,QARG,EASH,UAACE,CAAD;MAAA,OAAiB;QAAE,KAAK,MAAP;QAAe,KAAK,MAApB;QAA4B,KAAK,OAAjC;QAA0C,KAAK;MAA/C,CAAD,CAAsFA,CAAtF,CAAhB;IAAA,CATG,CAAP;EAWD;;EAED,OAAO,IAAAC,cAAA,EAAQ,YAAM;IACnB,IAAI,CAACb,QAAL,EAAe;MACb,oBAAO;QAAK,QAAQ,EAAEA,QAAQ,IAAI,EAA3B;QAA+B,GAAG,EAAEE,MAApC;QAA4C,SAAS,YAAKL,SAAL;MAArD,EAAP;IACD;;IACD,IAAMc,GAAG,GAAG,IAAAG,cAAA,IACTC,IADS,CACJ,UADI,EACQ;MAAEC,QAAQ,EAAE;IAAZ,CADR,EAETC,GAFS,CAELC,wBAFK,EAEQ;MAAEC,aAAa,EAAE;IAAjB,CAFR,EAGTC,WAHS,0CAIyBvB,SAJzB,+EAIoGW,WAAW,CACrHR,QADqH,CAJ/G,qBAAZ;IAQA,oBAAOG,cAAA,CAAMkB,aAAN,CAAoB,KAApB,EAA2B;MAChCC,SAAS,EAAE,qBADqB;MAEhCC,uBAAuB,EAAE;QAAEC,MAAM,EAAEb,GAAG,CAACc;MAAd;IAFO,CAA3B,CAAP;EAID,CAhBM,EAgBJ,CAACzB,QAAD,EAAWE,MAAX,EAAmBL,SAAnB,CAhBI,CAAP;AAiBD"
|
|
39
43
|
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"prefixCls",
|
|
7
7
|
"onChange",
|
|
8
8
|
"other",
|
|
9
|
+
"useContext",
|
|
9
10
|
"EditorContext",
|
|
10
11
|
"markdown",
|
|
11
12
|
"commands",
|
|
@@ -21,12 +22,15 @@
|
|
|
21
22
|
"useRef",
|
|
22
23
|
"executeRef",
|
|
23
24
|
"statesRef",
|
|
25
|
+
"useEffect",
|
|
24
26
|
"current",
|
|
25
27
|
"commandOrchestrator",
|
|
26
28
|
"TextAreaCommandOrchestrator",
|
|
27
29
|
"textarea",
|
|
28
30
|
"onKeyDown",
|
|
29
31
|
"e",
|
|
32
|
+
"handleKeyDown",
|
|
33
|
+
"shortcuts",
|
|
30
34
|
"addEventListener",
|
|
31
35
|
"removeEventListener",
|
|
32
36
|
"className",
|
|
@@ -39,5 +43,5 @@
|
|
|
39
43
|
"sourcesContent": [
|
|
40
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"
|
|
41
45
|
],
|
|
42
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;;;;;AAKe,SAASA,QAAT,CAAkBC,KAAlB,EAAwC;EACrD,IAAQC,SAAR,GAA0CD,KAA1C,CAAQC,SAAR;EAAA,IAAmBC,SAAnB,GAA0CF,KAA1C,CAAmBE,QAAnB;EAAA,IAAgCC,KAAhC,0CAA0CH,KAA1C;;EACA,kBAUI,
|
|
46
|
+
"mappings": "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"
|
|
43
47
|
}
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"indexOf",
|
|
41
41
|
"end",
|
|
42
42
|
"modifiedTextObj",
|
|
43
|
+
"insertBeforeEachLine",
|
|
43
44
|
"shiftKey",
|
|
44
45
|
"text",
|
|
45
46
|
"map",
|
|
@@ -48,6 +49,7 @@
|
|
|
48
49
|
"replaceSelection",
|
|
49
50
|
"startTabSize",
|
|
50
51
|
"endTabSize",
|
|
52
|
+
"insertTextAtPosition",
|
|
51
53
|
"test",
|
|
52
54
|
"startStr",
|
|
53
55
|
"startsWith",
|
|
@@ -59,5 +61,5 @@
|
|
|
59
61
|
"sourcesContent": [
|
|
60
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"
|
|
61
63
|
],
|
|
62
|
-
"mappings": ";;;;;;;AAAA;;AACA;;AACA;;AAEA;AACA;AACA;AACA;AACA,SAASA,eAAT,CAAyBC,CAAzB,EAAsF;EACpFA,CAAC,CAACD,eAAF;EACAC,CAAC,CAACC,cAAF;AACD;;AAEc,SAASC,aAAT,CACbF,CADa,EAIb;EAAA,IAFAG,OAEA,uEAFkB,CAElB;EAAA,IADAC,gBACA,uEAD4B,KAC5B;EACA,IAAMC,MAAM,GAAGL,CAAC,CAACK,MAAjB;EACA,IAAMC,OAAO,GAAGD,MAAM,CAACE,KAAP,CAAaC,MAAb,CAAoB,CAApB,EAAuBH,MAAM,CAACI,cAA9B,CAAhB;EACA,IAAMC,MAAM,GAAGJ,OAAO,CAACK,KAAR,CAAc,IAAd,CAAf;EACA,IAAMC,cAAc,GAAGF,MAAM,CAACA,MAAM,CAACG,MAAP,GAAgB,CAAjB,CAA7B;EACA,IAAMC,QAAQ,GAAG,IAAIC,yBAAJ,CAAoBV,MAApB,CAAjB;EAEA;AACF;AACA;;EACE,IAAI,CAACD,gBAAD,IAAqBJ,CAAC,CAACgB,IAAvB,IAA+BhB,CAAC,CAACgB,IAAF,CAAOC,WAAP,OAAyB,KAA5D,EAAmE;IACjElB,eAAe,CAACC,CAAD,CAAf;IACA,IAAMkB,KAAK,GAAG,IAAIC,KAAJ,CAAUhB,OAAO,GAAG,CAApB,EAAuBiB,IAAvB,CAA4B,IAA5B,CAAd;;IACA,IAAIf,MAAM,CAACI,cAAP,KAA0BJ,MAAM,CAACgB,YAArC,EAAmD;MACjD,IAAMC,KAAK,GAAGjB,MAAM,CAACE,KAAP,CAAagB,SAAb,CAAuB,CAAvB,EAA0BlB,MAAM,CAACI,cAAjC,EAAiDE,KAAjD,CAAuD,IAAvD,CAAd;;MACA,IAAMa,IAAI,GAAGnB,MAAM,CAACE,KAAP,CAAagB,SAAb,CAAuB,CAAvB,EAA0BlB,MAAM,CAACgB,YAAjC,EAA+CV,KAA/C,CAAqD,IAArD,CAAb;;MACA,IAAMc,gBAA0B,GAAG,EAAnC;;MACAD,IAAI,CAACE,OAAL,CAAa,UAACC,IAAD,EAAOC,GAAP,EAAe;QAC1B,IAAID,IAAI,KAAKL,KAAK,CAACM,GAAD,CAAlB,EAAyB;UACvBH,gBAAgB,CAACI,IAAjB,CAAsBF,IAAtB;QACD;MACF,CAJD;;MAKA,IAAMG,YAAY,GAAGL,gBAAgB,CAACL,IAAjB,CAAsB,IAAtB,CAArB;MACA,IAAMW,aAAa,GAAG1B,MAAM,CAACE,KAAP,CAAagB,SAAb,CAAuBlB,MAAM,CAACI,cAA9B,EAA8CJ,MAAM,CAACgB,YAArD,CAAtB;MACA,IAAMW,UAAU,GAAG3B,MAAM,CAACE,KAAP,CAAagB,SAAb,CAAuB,CAAvB,EAA0BlB,MAAM,CAACI,cAAjC,EAAiDI,MAApE;MAEAC,QAAQ,CAACmB,iBAAT,CAA2B;QACzBC,KAAK,EAAE7B,MAAM,CAACE,KAAP,CAAa4B,OAAb,CAAqBL,YAArB,CADkB;QAEzBM,GAAG,EAAE/B,MAAM,CAACgB;MAFa,CAA3B;MAKA,IAAMgB,eAAe,GAAG,
|
|
64
|
+
"mappings": "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"
|
|
63
65
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"onScroll",
|
|
9
9
|
"renderTextarea",
|
|
10
10
|
"otherProps",
|
|
11
|
+
"useContext",
|
|
11
12
|
"EditorContext",
|
|
12
13
|
"markdown",
|
|
13
14
|
"scrollTop",
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
"executeRef",
|
|
22
23
|
"warp",
|
|
23
24
|
"createRef",
|
|
25
|
+
"useEffect",
|
|
24
26
|
"state",
|
|
25
27
|
"current",
|
|
26
28
|
"textareaWarp",
|
|
@@ -40,7 +42,6 @@
|
|
|
40
42
|
"overflow",
|
|
41
43
|
"onChange",
|
|
42
44
|
"shortcuts",
|
|
43
|
-
"useContext",
|
|
44
45
|
"ref"
|
|
45
46
|
],
|
|
46
47
|
"sources": [
|
|
@@ -49,5 +50,5 @@
|
|
|
49
50
|
"sourcesContent": [
|
|
50
51
|
"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 // @ts-ignore\n const textStyle: React.CSSProperties = highlightEnable ? {} : { '-webkit-text-fill-color': 'inherit' };\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"
|
|
51
52
|
],
|
|
52
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAoCe,SAASA,QAAT,CAAkBC,KAAlB,EAAyC;EACtD,WAA0EA,KAAK,IAAI,EAAnF;EAAA,IAAQC,SAAR,QAAQA,SAAR;EAAA,IAAmBC,SAAnB,QAAmBA,SAAnB;EAAA,IAA8BC,QAA9B,QAA8BA,QAA9B;EAAA,IAAwCC,cAAxC,QAAwCA,cAAxC;EAAA,IAA2DC,UAA3D;;EACA,kBAAoF,
|
|
53
|
+
"mappings": "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"
|
|
53
54
|
}
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
"groupName",
|
|
8
8
|
"commands",
|
|
9
9
|
"children",
|
|
10
|
+
"useContext",
|
|
10
11
|
"EditorContext",
|
|
11
12
|
"barPopup",
|
|
13
|
+
"useMemo",
|
|
12
14
|
"e",
|
|
13
15
|
"stopPropagation",
|
|
14
16
|
"Array",
|
|
@@ -20,5 +22,5 @@
|
|
|
20
22
|
"sourcesContent": [
|
|
21
23
|
"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} height=\"\" isChild /> : children}\n </div>\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [commands, barPopup, groupName, prefixCls],\n );\n}\n"
|
|
22
24
|
],
|
|
23
|
-
"mappings": ";;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;AAOe,SAASA,KAAT,CAAeC,KAAf,EAAkC;EAC/C,WAAqDA,KAAK,IAAI,EAA9D;EAAA,IAAQC,SAAR,QAAQA,SAAR;EAAA,IAAmBC,SAAnB,QAAmBA,SAAnB;EAAA,IAA8BC,QAA9B,QAA8BA,QAA9B;EAAA,IAAwCC,QAAxC,QAAwCA,QAAxC;;EACA,kBAA0B,
|
|
25
|
+
"mappings": ";;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;AAOe,SAASA,KAAT,CAAeC,KAAf,EAAkC;EAC/C,WAAqDA,KAAK,IAAI,EAA9D;EAAA,IAAQC,SAAR,QAAQA,SAAR;EAAA,IAAmBC,SAAnB,QAAmBA,SAAnB;EAAA,IAA8BC,QAA9B,QAA8BA,QAA9B;EAAA,IAAwCC,QAAxC,QAAwCA,QAAxC;;EACA,kBAA0B,IAAAC,iBAAA,EAAWC,sBAAX,CAA1B;EAAA,uCAAQC,QAAR;EAAA,IAAQA,QAAR,qCAAmB,EAAnB;;EACA,OAAO,IAAAC,cAAA,EACL;IAAA,oBACE;MACE,SAAS,YAAKP,SAAL,4BAAgCC,SAAS,IAAIK,QAAQ,CAACL,SAAD,CAArB,GAAmC,QAAnC,GAA8C,EAA9E,CADX;MAEE,OAAO,EAAE,iBAACO,CAAD;QAAA,OAAOA,CAAC,CAACC,eAAF,EAAP;MAAA,CAFX;MAAA,UAIGC,KAAK,CAACC,OAAN,CAAcT,QAAd,iBAA0B,qBAAC,SAAD;QAAS,QAAQ,EAAEA;MAAnB,GAAiCH,KAAjC;QAAwC,MAAM,EAAC,EAA/C;QAAkD,OAAO;MAAzD,GAA1B,GAAyFI;IAJ5F,EADF;EAAA,CADK,EASL;EACA,CAACD,QAAD,EAAWI,QAAX,EAAqBL,SAArB,EAAgCD,SAAhC,CAVK,CAAP;AAYD"
|
|
24
26
|
}
|