@uiw/react-md-editor 3.12.1 → 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.
Files changed (103) hide show
  1. package/dist/mdeditor.css +26 -16
  2. package/dist/mdeditor.js +2188 -1638
  3. package/dist/mdeditor.min.css +1 -1
  4. package/dist/mdeditor.min.js +1 -1
  5. package/dist/mdeditor.min.js.LICENSE.txt +1 -15
  6. package/esm/Context.js.map +5 -5
  7. package/esm/Editor.d.ts +2 -0
  8. package/esm/Editor.js +10 -3
  9. package/esm/Editor.js.map +7 -6
  10. package/esm/commands/bold.js.map +5 -5
  11. package/esm/commands/code.js +4 -2
  12. package/esm/commands/code.js.map +7 -6
  13. package/esm/commands/comment.js.map +5 -5
  14. package/esm/commands/divider.js.map +5 -5
  15. package/esm/commands/fullscreen.js.map +5 -5
  16. package/esm/commands/group.js.map +5 -5
  17. package/esm/commands/hr.js.map +5 -5
  18. package/esm/commands/image.js.map +5 -5
  19. package/esm/commands/index.js.map +5 -5
  20. package/esm/commands/italic.js.map +5 -5
  21. package/esm/commands/link.js.map +5 -5
  22. package/esm/commands/list.js.map +5 -5
  23. package/esm/commands/preview.js.map +5 -5
  24. package/esm/commands/quote.js.map +5 -5
  25. package/esm/commands/strikeThrough.js.map +5 -5
  26. package/esm/commands/title.js.map +5 -5
  27. package/esm/commands/title1.js.map +5 -5
  28. package/esm/commands/title2.js.map +5 -5
  29. package/esm/commands/title3.js.map +5 -5
  30. package/esm/commands/title4.js.map +5 -5
  31. package/esm/commands/title5.js.map +5 -5
  32. package/esm/commands/title6.js.map +5 -5
  33. package/esm/components/DragBar/index.js.map +5 -5
  34. package/esm/components/TextArea/Markdown.js.map +5 -5
  35. package/esm/components/TextArea/Textarea.js.map +5 -5
  36. package/esm/components/TextArea/handleKeyDown.js.map +5 -5
  37. package/esm/components/TextArea/index.css +8 -1
  38. package/esm/components/TextArea/index.js.map +5 -5
  39. package/esm/components/TextArea/index.less +8 -1
  40. package/esm/components/TextArea/shortcuts.js.map +5 -5
  41. package/esm/components/Toolbar/Child.js.map +5 -5
  42. package/esm/components/Toolbar/index.css +5 -0
  43. package/esm/components/Toolbar/index.d.ts +1 -0
  44. package/esm/components/Toolbar/index.js +3 -1
  45. package/esm/components/Toolbar/index.js.map +9 -7
  46. package/esm/components/Toolbar/index.less +5 -0
  47. package/esm/index.css +3 -0
  48. package/esm/index.js.map +5 -5
  49. package/esm/index.less +3 -0
  50. package/esm/utils/InsertTextAtPosition.js.map +5 -5
  51. package/esm/utils/markdownUtils.js.map +5 -5
  52. package/lib/Context.js.map +5 -5
  53. package/lib/Editor.d.ts +2 -0
  54. package/lib/Editor.js +11 -3
  55. package/lib/Editor.js.map +14 -6
  56. package/lib/commands/bold.js.map +6 -5
  57. package/lib/commands/code.js +4 -2
  58. package/lib/commands/code.js.map +10 -6
  59. package/lib/commands/comment.js.map +6 -5
  60. package/lib/commands/divider.js.map +5 -5
  61. package/lib/commands/fullscreen.js.map +5 -5
  62. package/lib/commands/group.js.map +5 -5
  63. package/lib/commands/hr.js.map +5 -5
  64. package/lib/commands/image.js.map +6 -5
  65. package/lib/commands/index.js.map +6 -5
  66. package/lib/commands/italic.js.map +6 -5
  67. package/lib/commands/link.js.map +6 -5
  68. package/lib/commands/list.js.map +8 -5
  69. package/lib/commands/preview.js.map +5 -5
  70. package/lib/commands/quote.js.map +8 -5
  71. package/lib/commands/strikeThrough.js.map +6 -5
  72. package/lib/commands/title.js.map +5 -5
  73. package/lib/commands/title1.js.map +6 -5
  74. package/lib/commands/title2.js.map +6 -5
  75. package/lib/commands/title3.js.map +6 -5
  76. package/lib/commands/title4.js.map +6 -5
  77. package/lib/commands/title5.js.map +6 -5
  78. package/lib/commands/title6.js.map +6 -5
  79. package/lib/components/DragBar/index.js.map +9 -6
  80. package/lib/components/TextArea/Markdown.js.map +9 -5
  81. package/lib/components/TextArea/Textarea.js.map +9 -5
  82. package/lib/components/TextArea/handleKeyDown.js.map +7 -5
  83. package/lib/components/TextArea/index.js.map +7 -6
  84. package/lib/components/TextArea/index.less +8 -1
  85. package/lib/components/TextArea/shortcuts.js.map +5 -5
  86. package/lib/components/Toolbar/Child.js.map +7 -5
  87. package/lib/components/Toolbar/index.d.ts +1 -0
  88. package/lib/components/Toolbar/index.js +3 -1
  89. package/lib/components/Toolbar/index.js.map +12 -7
  90. package/lib/components/Toolbar/index.less +5 -0
  91. package/lib/index.js.map +5 -5
  92. package/lib/index.less +3 -0
  93. package/lib/utils/InsertTextAtPosition.js.map +5 -5
  94. package/lib/utils/markdownUtils.js.map +5 -5
  95. package/markdown-editor.css +16 -1
  96. package/package.json +11 -11
  97. package/src/Editor.tsx +9 -1
  98. package/src/__test__/editor.test.tsx +1 -1
  99. package/src/commands/code.tsx +2 -2
  100. package/src/components/TextArea/index.less +8 -1
  101. package/src/components/Toolbar/index.less +5 -0
  102. package/src/components/Toolbar/index.tsx +4 -2
  103. package/src/index.less +3 -0
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../../../src/components/TextArea/shortcuts.ts"
5
- ],
6
3
  "names": [
7
4
  "getCommands",
8
5
  "data",
@@ -45,8 +42,11 @@
45
42
  "preventDefault",
46
43
  "executeCommand"
47
44
  ],
48
- "mappings": "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",
45
+ "sources": [
46
+ "../../../src/components/TextArea/shortcuts.ts"
47
+ ],
49
48
  "sourcesContent": [
50
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 | number)[] = [];\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);\n return;\n }\n}\n"
51
- ]
50
+ ],
51
+ "mappings": "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"
52
52
  }
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../../../src/components/Toolbar/Child.tsx"
5
- ],
6
3
  "names": [
7
4
  "React",
8
5
  "useContext",
@@ -21,8 +18,11 @@
21
18
  "Array",
22
19
  "isArray"
23
20
  ],
24
- "mappings": ";AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,QAA2C,OAA3C;AACA;AACA,OAAOC,OAAP,MAAuC,IAAvC;AACA,SAASC,aAAT,QAA8B,eAA9B;;AAOA,eAAe,SAASC,KAAT,CAAeC,KAAf,EAAkC;AAC/C,MAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA,QAAxB;AAAkCC,IAAAA;AAAlC,MAA+CJ,KAAK,IAAI,EAA9D;AACA,MAAM;AAAEK,IAAAA,QAAQ,GAAG;AAAb,MAAoBV,UAAU,CAACG,aAAD,CAApC;AACA,SAAOF,OAAO,CACZ,mBACE;AACE,IAAA,SAAS,EAAKK,SAAL,wBAAgCC,SAAS,IAAIG,QAAQ,CAACH,SAAD,CAArB,GAAmC,QAAnC,GAA8C,EAA9E,CADX;AAEE,IAAA,OAAO,EAAGI,CAAD,IAAOA,CAAC,CAACC,eAAF,EAFlB;AAAA,cAIGC,KAAK,CAACC,OAAN,CAAcN,QAAd,iBAA0B,KAAC,OAAD;AAAS,MAAA,QAAQ,EAAEA;AAAnB,OAAiCH,KAAjC;AAAwC,MAAA,MAAM,EAAC,EAA/C;AAAkD,MAAA,OAAO;AAAzD,OAA1B,GAAyFI;AAJ5F,IAFU,EASZ;AACA,GAACD,QAAD,EAAWE,QAAX,EAAqBH,SAArB,EAAgCD,SAAhC,CAVY,CAAd;AAYD",
21
+ "sources": [
22
+ "../../../src/components/Toolbar/Child.tsx"
23
+ ],
25
24
  "sourcesContent": [
26
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} height=\"\" isChild /> : children}\n </div>\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [commands, barPopup, groupName, prefixCls],\n );\n}\n"
27
- ]
26
+ ],
27
+ "mappings": ";AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,QAA2C,OAA3C;AACA;AACA,OAAOC,OAAP,MAAuC,IAAvC;AACA,SAASC,aAAT,QAA8B,eAA9B;;AAOA,eAAe,SAASC,KAAT,CAAeC,KAAf,EAAkC;EAC/C,IAAM;IAAEC,SAAF;IAAaC,SAAb;IAAwBC,QAAxB;IAAkCC;EAAlC,IAA+CJ,KAAK,IAAI,EAA9D;EACA,IAAM;IAAEK,QAAQ,GAAG;EAAb,IAAoBV,UAAU,CAACG,aAAD,CAApC;EACA,OAAOF,OAAO,CACZ,mBACE;IACE,SAAS,EAAKK,SAAL,wBAAgCC,SAAS,IAAIG,QAAQ,CAACH,SAAD,CAArB,GAAmC,QAAnC,GAA8C,EAA9E,CADX;IAEE,OAAO,EAAGI,CAAD,IAAOA,CAAC,CAACC,eAAF,EAFlB;IAAA,UAIGC,KAAK,CAACC,OAAN,CAAcN,QAAd,iBAA0B,KAAC,OAAD;MAAS,QAAQ,EAAEA;IAAnB,GAAiCH,KAAjC;MAAwC,MAAM,EAAC,EAA/C;MAAkD,OAAO;IAAzD,GAA1B,GAAyFI;EAJ5F,EAFU,EASZ;EACA,CAACD,QAAD,EAAWE,QAAX,EAAqBH,SAArB,EAAgCD,SAAhC,CAVY,CAAd;AAYD"
28
28
  }
@@ -9,6 +9,11 @@
9
9
  -webkit-user-select: none;
10
10
  user-select: none;
11
11
  }
12
+ .w-md-editor-toolbar.bottom {
13
+ border-bottom: 0px;
14
+ border-top: 1px solid var(--color-border-default);
15
+ border-radius: 0 0 3px 3px;
16
+ }
12
17
  .w-md-editor-toolbar ul,
13
18
  .w-md-editor-toolbar li {
14
19
  margin: 0;
@@ -5,6 +5,7 @@ import './index.less';
5
5
  export interface IToolbarProps extends IProps {
6
6
  overflow?: boolean;
7
7
  height?: React.CSSProperties['height'];
8
+ toolbarBottom?: boolean;
8
9
  onCommand?: (command: ICommand<string>, groupName?: string) => void;
9
10
  commands?: ICommand<string>[];
10
11
  isChild?: boolean;
@@ -120,14 +120,16 @@ export default function Toolbar(props) {
120
120
  var {
121
121
  prefixCls,
122
122
  height = 29,
123
+ toolbarBottom,
123
124
  isChild
124
125
  } = props;
125
126
  var {
126
127
  commands,
127
128
  extraCommands
128
129
  } = useContext(EditorContext);
130
+ var bottomClassName = toolbarBottom ? 'bottom' : '';
129
131
  return /*#__PURE__*/_jsxs("div", {
130
- className: prefixCls + "-toolbar",
132
+ className: prefixCls + "-toolbar " + bottomClassName,
131
133
  style: {
132
134
  height
133
135
  },
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../../../src/components/Toolbar/index.tsx"
5
- ],
6
3
  "names": [
7
4
  "React",
8
5
  "Fragment",
@@ -68,11 +65,16 @@
68
65
  "isArray",
69
66
  "Toolbar",
70
67
  "height",
68
+ "toolbarBottom",
71
69
  "isChild",
72
- "extraCommands"
70
+ "extraCommands",
71
+ "bottomClassName"
72
+ ],
73
+ "sources": [
74
+ "../../../src/components/Toolbar/index.tsx"
73
75
  ],
74
- "mappings": "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",
75
76
  "sourcesContent": [
76
- "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 height?: React.CSSProperties['height'];\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 = {}, 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 return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {!item.buttonProps && item.icon}\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, height = 29, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n return (\n <div className={`${prefixCls}-toolbar`} style={{ height }}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
77
- ]
77
+ "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 height?: React.CSSProperties['height'];\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 = {}, 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 return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {!item.buttonProps && item.icon}\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, height = 29, toolbarBottom, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n const bottomClassName = toolbarBottom ? 'bottom' : '';\n return (\n <div className={`${prefixCls}-toolbar ${bottomClassName}`} style={{ height }}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
78
+ ],
79
+ "mappings": "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"
78
80
  }
@@ -10,6 +10,11 @@
10
10
  align-items: center;
11
11
  border-radius: 3px 3px 0 0;
12
12
  user-select: none;
13
+ &.bottom {
14
+ border-bottom: 0px;
15
+ border-top: 1px solid var(--color-border-default);
16
+ border-radius: 0 0 3px 3px;
17
+ }
13
18
  ul,
14
19
  li {
15
20
  margin: 0;
package/esm/index.css CHANGED
@@ -30,6 +30,9 @@
30
30
  top: 0;
31
31
  right: 0;
32
32
  bottom: 0;
33
+ border-radius: 0 0 5px 0;
34
+ display: flex;
35
+ flex-direction: column;
33
36
  }
34
37
  .w-md-editor-preview .anchor {
35
38
  display: none;
package/esm/index.js.map CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../src/index.tsx"
5
- ],
6
3
  "names": [
7
4
  "MDEditor",
8
5
  "commands",
9
6
  "MarkdownUtil"
10
7
  ],
11
- "mappings": "AAAA,OAAOA,QAAP,MAAqB,UAArB;AACA,OAAO,KAAKC,QAAZ,MAA0B,YAA1B;AACA,OAAO,KAAKC,YAAZ,MAA8B,uBAA9B;AAEA,cAAc,YAAd;AACA,cAAc,uBAAd;AACA,cAAc,UAAd;AACA,cAAc,WAAd;AAEA,SAASA,YAAT,EAAuBD,QAAvB;AAEA,eAAeD,QAAf",
8
+ "sources": [
9
+ "../src/index.tsx"
10
+ ],
12
11
  "sourcesContent": [
13
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"
14
- ]
13
+ ],
14
+ "mappings": "AAAA,OAAOA,QAAP,MAAqB,UAArB;AACA,OAAO,KAAKC,QAAZ,MAA0B,YAA1B;AACA,OAAO,KAAKC,YAAZ,MAA8B,uBAA9B;AAEA,cAAc,YAAd;AACA,cAAc,uBAAd;AACA,cAAc,UAAd;AACA,cAAc,WAAd;AAEA,SAASA,YAAT,EAAuBD,QAAvB;AAEA,eAAeD,QAAf"
15
15
  }
package/esm/index.less CHANGED
@@ -32,6 +32,9 @@
32
32
  top: 0;
33
33
  right: 0;
34
34
  bottom: 0;
35
+ border-radius: 0 0 5px 0;
36
+ display: flex;
37
+ flex-direction: column;
35
38
  .anchor {
36
39
  display: none;
37
40
  }
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../../src/utils/InsertTextAtPosition.ts"
5
- ],
6
3
  "names": [
7
4
  "browserSupportsTextareaTextNodes",
8
5
  "canManipulateViaTextNodes",
@@ -60,8 +57,11 @@
60
57
  "createEvent",
61
58
  "initEvent"
62
59
  ],
63
- "mappings": "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",
60
+ "sources": [
61
+ "../../src/utils/InsertTextAtPosition.ts"
62
+ ],
64
63
  "sourcesContent": [
65
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"
66
- ]
65
+ ],
66
+ "mappings": "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"
67
67
  }
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../../src/utils/markdownUtils.ts"
5
- ],
6
3
  "names": [
7
4
  "selectWord",
8
5
  "text",
@@ -24,8 +21,11 @@
24
21
  "isWordDelimiter",
25
22
  "c"
26
23
  ],
27
- "mappings": "AAOA,OAAO,SAASA,UAAT,OAAiE;AAAA,MAA7C;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,GAA6C;;AACtE,MAAID,IAAI,IAAIA,IAAI,CAACE,MAAb,IAAuBD,SAAS,CAACE,KAAV,KAAoBF,SAAS,CAACG,GAAzD,EAA8D;AAC5D;AACA,WAAOC,kBAAkB,CAACL,IAAD,EAAOC,SAAS,CAACE,KAAjB,CAAzB;AACD;;AACD,SAAOF,SAAP;AACD;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASK,iCAAT,CAA2CN,IAA3C,EAAsDO,aAAtD,EAAqF;AAAA,MAA1CP,IAA0C;AAA1CA,IAAAA,IAA0C,GAAnC,EAAmC;AAAA;;AAC1F,MAAIO,aAAa,KAAK,CAAtB,EAAyB,OAAO,CAAP,CADiE,CAG1F;AACA;AACA;AACA;;AAEA,MAAIC,YAAY,GAAG,CAAnB;AACA,MAAIC,aAAa,GAAG,IAApB;;AACA,OAAK,IAAIC,CAAC,GAAGH,aAAa,GAAG,CAA7B,EAAgCG,CAAC,IAAI,CAAL,IAAUF,YAAY,IAAI,CAA1D,EAA6DE,CAAC,EAA9D,EAAkE;AAChE,YAAQV,IAAI,CAACW,UAAL,CAAgBD,CAAhB,CAAR;AACE,WAAK,EAAL;AAAS;AACP;;AACF,WAAK,EAAL;AAAS;AACPF,QAAAA,YAAY;AACZC,QAAAA,aAAa,GAAG,KAAhB;AACA;;AACF;AACE,eAAOD,YAAP;AARJ;AAUD;;AACD,SAAOC,aAAa,GAAG,CAAH,GAAOD,YAA3B;AACD;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASI,gCAAT,CAA0CZ,IAA1C,EAAqDO,aAArD,EAAoF;AAAA,MAA1CP,IAA0C;AAA1CA,IAAAA,IAA0C,GAAnC,EAAmC;AAAA;;AACzF,MAAIO,aAAa,KAAKP,IAAI,CAACE,MAAL,GAAc,CAApC,EAAuC,OAAO,CAAP,CADkD,CAGzF;AACA;AACA;AACA;;AAEA,MAAIM,YAAY,GAAG,CAAnB;AACA,MAAIK,YAAY,GAAG,IAAnB;;AACA,OAAK,IAAIH,CAAC,GAAGH,aAAb,EAA4BG,CAAC,GAAGV,IAAI,CAACE,MAAT,IAAmBM,YAAY,IAAI,CAA/D,EAAkEE,CAAC,EAAnE,EAAuE;AACrE,YAAQV,IAAI,CAACW,UAAL,CAAgBD,CAAhB,CAAR;AACE,WAAK,EAAL;AACE;;AACF,WAAK,EAAL;AAAS;AACPF,UAAAA,YAAY;AACZK,UAAAA,YAAY,GAAG,KAAf;AACA;AACD;;AACD;AACE,eAAOL,YAAP;AATJ;AAWD;;AACD,SAAOK,YAAY,GAAG,CAAH,GAAOL,YAA1B;AACD;AAED,OAAO,SAASH,kBAAT,CAA4BL,IAA5B,EAA0Cc,QAA1C,EAAuE;AAC5E,MAAI,CAACd,IAAL,EAAW,MAAMe,KAAK,CAAC,kCAAD,CAAX;;AAEX,MAAMC,eAAe,GAAIC,CAAD,IAAeA,CAAC,KAAK,GAAN,IAAaA,CAAC,CAACN,UAAF,CAAa,CAAb,MAAoB,EAAxE,CAH4E,CAK5E;;;AACA,MAAIR,KAAK,GAAG,CAAZ,CAN4E,CAO5E;;AACA,MAAIC,GAAG,GAAGJ,IAAI,CAACE,MAAf,CAR4E,CAU5E;;AACA,OAAK,IAAIQ,CAAC,GAAGI,QAAb,EAAuBJ,CAAC,GAAG,CAAJ,GAAQ,CAAC,CAAhC,EAAmCA,CAAC,EAApC,EAAwC;AACtC,QAAIM,eAAe,CAAChB,IAAI,CAACU,CAAC,GAAG,CAAL,CAAL,CAAnB,EAAkC;AAChCP,MAAAA,KAAK,GAAGO,CAAR;AACA;AACD;AACF,GAhB2E,CAkB5E;;;AACA,OAAK,IAAIA,EAAC,GAAGI,QAAb,EAAuBJ,EAAC,GAAGV,IAAI,CAACE,MAAhC,EAAwCQ,EAAC,EAAzC,EAA6C;AAC3C,QAAIM,eAAe,CAAChB,IAAI,CAACU,EAAD,CAAL,CAAnB,EAA8B;AAC5BN,MAAAA,GAAG,GAAGM,EAAN;AACA;AACD;AACF;;AAED,SAAO;AAAEP,IAAAA,KAAF;AAASC,IAAAA;AAAT,GAAP;AACD",
24
+ "sources": [
25
+ "../../src/utils/markdownUtils.ts"
26
+ ],
28
27
  "sourcesContent": [
29
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"
30
- ]
29
+ ],
30
+ "mappings": "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"
31
31
  }
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../src/Context.tsx"
5
- ],
6
3
  "names": [
7
4
  "reducer",
8
5
  "state",
@@ -12,8 +9,11 @@
12
9
  "createContext",
13
10
  "markdown"
14
11
  ],
15
- "mappings": ";;;;;;;;;;;;AAAA;;AA6BO,SAASA,OAAT,CAAiBC,KAAjB,EAAsCC,MAAtC,EAA4D;AACjE,qEAAYD,KAAZ,GAAsBC,MAAtB;AACD;;AAEM,IAAMC,aAAa,gBAAGC,eAAMC,aAAN,CAAkC;AAAEC,EAAAA,QAAQ,EAAE;AAAZ,CAAlC,CAAtB",
12
+ "sources": [
13
+ "../src/Context.tsx"
14
+ ],
16
15
  "sourcesContent": [
17
16
  "import React from 'react';\nimport { ICommand, TextAreaCommandOrchestrator } from './commands';\n\nexport type PreviewType = 'live' | 'edit' | 'preview';\n\nexport type ContextStore = {\n commands?: ICommand<string>[];\n extraCommands?: ICommand<string>[];\n markdown?: string;\n preview?: PreviewType;\n height?: number;\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"
18
- ]
17
+ ],
18
+ "mappings": ";;;;;;;;;;;;AAAA;;AA6BO,SAASA,OAAT,CAAiBC,KAAjB,EAAsCC,MAAtC,EAA4D;EACjE,mEAAYD,KAAZ,GAAsBC,MAAtB;AACD;;AAEM,IAAMC,aAAa,gBAAGC,cAAA,CAAMC,aAAN,CAAkC;EAAEC,QAAQ,EAAE;AAAZ,CAAlC,CAAtB"
19
19
  }
package/lib/Editor.d.ts CHANGED
@@ -103,6 +103,8 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
103
103
  hideToolbar?: boolean;
104
104
  /** Whether to enable scrolling */
105
105
  enableScroll?: boolean;
106
+ /** Toolbar on bottom */
107
+ toolbarBottom?: boolean;
106
108
  }
107
109
  declare const mdEditor: React.ForwardRefExoticComponent<MDEditorProps & React.RefAttributes<ContextStore>>;
108
110
  declare type MDEditor = typeof mdEditor & {
package/lib/Editor.js CHANGED
@@ -31,7 +31,7 @@ var _Context = require("./Context");
31
31
 
32
32
  var _jsxRuntime = require("react/jsx-runtime");
33
33
 
34
- var _excluded = ["prefixCls", "className", "value", "commands", "commandsFilter", "extraCommands", "height", "toolbarHeight", "enableScroll", "visiableDragbar", "highlightEnable", "preview", "fullscreen", "overflow", "previewOptions", "textareaProps", "maxHeight", "minHeight", "autoFocus", "tabSize", "defaultTabEnable", "onChange", "onHeightChange", "hideToolbar", "renderTextarea"];
34
+ var _excluded = ["prefixCls", "className", "value", "commands", "commandsFilter", "extraCommands", "height", "toolbarHeight", "enableScroll", "visiableDragbar", "highlightEnable", "preview", "fullscreen", "overflow", "previewOptions", "textareaProps", "maxHeight", "minHeight", "autoFocus", "tabSize", "defaultTabEnable", "onChange", "onHeightChange", "hideToolbar", "toolbarBottom", "renderTextarea"];
35
35
 
36
36
  function setGroupPopFalse() {
37
37
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -83,6 +83,8 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
83
83
  _onChange = _ref.onChange,
84
84
  onHeightChange = _ref.onHeightChange,
85
85
  hideToolbar = _ref.hideToolbar,
86
+ _ref$toolbarBottom = _ref.toolbarBottom,
87
+ toolbarBottom = _ref$toolbarBottom === void 0 ? false : _ref$toolbarBottom,
86
88
  renderTextarea = _ref.renderTextarea,
87
89
  other = (0, _objectWithoutProperties2.default)(_ref, _excluded);
88
90
 
@@ -257,10 +259,11 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
257
259
  style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, other.style), {}, {
258
260
  height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height
259
261
  }),
260
- children: [!hideToolbar && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.default, {
262
+ children: [!hideToolbar && !toolbarBottom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.default, {
261
263
  prefixCls: prefixCls,
262
264
  height: toolbarHeight,
263
- overflow: overflow
265
+ overflow: overflow,
266
+ toolbarBottom: toolbarBottom
264
267
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
265
268
  className: "".concat(prefixCls, "-content"),
266
269
  style: {
@@ -293,6 +296,11 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
293
296
  height: newHeight
294
297
  });
295
298
  }
299
+ }), !hideToolbar && toolbarBottom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.default, {
300
+ prefixCls: prefixCls,
301
+ height: toolbarHeight,
302
+ overflow: overflow,
303
+ toolbarBottom: toolbarBottom
296
304
  })]
297
305
  }))
298
306
  });
package/lib/Editor.js.map CHANGED
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../src/Editor.tsx"
5
- ],
6
3
  "names": [
7
4
  "setGroupPopFalse",
8
5
  "data",
@@ -18,8 +15,10 @@
18
15
  "propsValue",
19
16
  "value",
20
17
  "commands",
18
+ "getCommands",
21
19
  "commandsFilter",
22
20
  "extraCommands",
21
+ "getExtraCommands",
23
22
  "height",
24
23
  "toolbarHeight",
25
24
  "enableScroll",
@@ -39,6 +38,7 @@
39
38
  "onChange",
40
39
  "onHeightChange",
41
40
  "hideToolbar",
41
+ "toolbarBottom",
42
42
  "renderTextarea",
43
43
  "other",
44
44
  "cmds",
@@ -47,6 +47,7 @@
47
47
  "filter",
48
48
  "Boolean",
49
49
  "extraCmds",
50
+ "useReducer",
50
51
  "reducer",
51
52
  "markdown",
52
53
  "scrollTop",
@@ -55,9 +56,13 @@
55
56
  "state",
56
57
  "dispatch",
57
58
  "container",
59
+ "useRef",
58
60
  "previewRef",
59
61
  "enableScrollRef",
62
+ "useImperativeHandle",
63
+ "useMemo",
60
64
  "current",
65
+ "useEffect",
61
66
  "stateInit",
62
67
  "undefined",
63
68
  "cls",
@@ -90,8 +95,11 @@
90
95
  "Markdown",
91
96
  "MarkdownPreview"
92
97
  ],
93
- "mappings": "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",
98
+ "sources": [
99
+ "../src/Editor.tsx"
100
+ ],
94
101
  "sourcesContent": [
95
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps, MarkdownPreviewRef } from '@uiw/react-markdown-preview';\nimport TextArea, { ITextAreaProps } from './components/TextArea';\nimport Toolbar from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, ICommand } from './commands';\nimport { reducer, EditorContext, ContextStore, PreviewType } from './Context';\nimport './index.less';\n\nexport interface IProps {\n prefixCls?: string;\n className?: string;\n}\n\nexport interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, IProps {\n /**\n * The Markdown value.\n */\n value?: string;\n /**\n * Event handler for the `onChange` event.\n */\n onChange?: (value?: string, event?: React.ChangeEvent<HTMLTextAreaElement>, state?: ContextStore) => void;\n /**\n * editor height change listener\n */\n onHeightChange?: (value?: number, oldValue?: number, state?: ContextStore) => void;\n /**\n * Can be used to make `Markdown Editor` focus itself on initialization. Defaults to on.\n * it will be set to true when either the source `textarea` is focused,\n * or it has an `autofocus` attribute and no other element is focused.\n */\n autoFocus?: ITextAreaProps['autoFocus'];\n /**\n * The height of the editor.\n */\n height?: number;\n /**\n * Custom toolbar heigth\n * @default 29px\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visiableDragbar?: boolean;\n /**\n * Show markdown preview.\n */\n preview?: PreviewType;\n /**\n * Full screen display editor.\n */\n fullscreen?: boolean;\n /**\n * Disable `fullscreen` setting body styles\n */\n overflow?: boolean;\n /**\n * Maximum drag height. `visiableDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visiableDragbar=true`\n */\n minHeight?: number;\n /**\n * This is reset [react-markdown](https://github.com/rexxars/react-markdown) settings.\n */\n previewOptions?: Omit<MarkdownPreviewProps, 'source'>;\n /**\n * Set the `textarea` related props.\n */\n textareaProps?: ITextAreaProps;\n /** Use div to replace TextArea or re-render TextArea */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * Disable editing area code highlighting. The value is `false`, which increases the editing speed.\n * @default true\n */\n highlightEnable?: boolean;\n /**\n * The number of characters to insert when pressing tab key.\n * Default `2` spaces.\n */\n tabSize?: number;\n /**\n * If `false`, the `tab` key inserts a tab character into the textarea. If `true`, the `tab` key executes default behavior e.g. focus shifts to next element.\n */\n defaultTabEnable?: boolean;\n /**\n * You can create your own commands or reuse existing commands.\n */\n commands?: ICommand[];\n /**\n * Filter or modify your commands.\n * https://github.com/uiwjs/react-md-editor/issues/296\n */\n commandsFilter?: (command: ICommand, isExtra: boolean) => false | ICommand;\n /**\n * You can create your own commands or reuse existing commands.\n */\n extraCommands?: ICommand[];\n /**\n * Hide the tool bar\n */\n hideToolbar?: boolean;\n /** Whether to enable scrolling */\n enableScroll?: boolean;\n}\n\nfunction setGroupPopFalse(data: Record<string, boolean> = {}) {\n Object.keys(data).forEach((keyname) => {\n data[keyname] = false;\n });\n return data;\n}\n\nconst InternalMDEditor = (\n props: MDEditorProps,\n ref?: ((instance: ContextStore) => void) | React.RefObject<ContextStore> | null,\n) => {\n const {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n extraCommands = getExtraCommands(),\n height = 200,\n toolbarHeight = 29,\n enableScroll = true,\n visiableDragbar = true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n overflow = true,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n onHeightChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n const cmds = commands\n .map((item) => (commandsFilter ? commandsFilter(item, false) : item))\n .filter(Boolean) as ICommand[];\n const extraCmds = extraCommands\n .map((item) => (commandsFilter ? commandsFilter(item, true) : item))\n .filter(Boolean) as ICommand[];\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {},\n });\n const container = useRef<HTMLDivElement>(null);\n const previewRef = useRef<MarkdownPreviewRef>(null);\n const enableScrollRef = useRef(enableScroll);\n\n useImperativeHandle(ref, () => ({ ...state }));\n useMemo(() => (enableScrollRef.current = enableScroll), [enableScroll]);\n useEffect(() => {\n const stateInit: ContextStore = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch({ ...state, ...stateInit });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cls = [\n className,\n 'wmde-markdown-var',\n prefixCls,\n state.preview ? `${prefixCls}-show-${state.preview}` : null,\n state.fullscreen ? `${prefixCls}-fullscreen` : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n\n useMemo(\n () => propsValue !== state.markdown && dispatch({ markdown: propsValue || '' }),\n [propsValue, state.markdown],\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => previewType !== state.preview && dispatch({ preview: previewType }), [previewType]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => tabSize !== state.tabSize && dispatch({ tabSize }), [tabSize]);\n useMemo(\n () => highlightEnable !== state.highlightEnable && dispatch({ highlightEnable }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [highlightEnable],\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => autoFocus !== state.autoFocus && dispatch({ autoFocus: autoFocus }), [autoFocus]);\n useMemo(\n () => fullscreen !== state.fullscreen && dispatch({ fullscreen: fullscreen }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [fullscreen],\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => height !== state.height && dispatch({ height: height }), [height]);\n useMemo(\n () => height !== state.height && onHeightChange && onHeightChange(state.height, height, state),\n [height, onHeightChange, state],\n );\n\n const textareaDomRef = useRef<HTMLDivElement>();\n const active = useRef<'text' | 'preview'>('preview');\n const initScroll = useRef(false);\n\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>, type: 'text' | 'preview') => {\n if (!enableScrollRef.current) return;\n const textareaDom = textareaDomRef.current;\n const previewDom = previewRef.current ? previewRef.current.mdp.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n const scale =\n (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n let scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({ scrollTop });\n }\n };\n\n const mdPreview = useMemo(\n () => (\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n ref={previewRef}\n source={state.markdown || ''}\n className={`${prefixCls}-preview ${previewOptions.className || ''}`}\n />\n ),\n [prefixCls, previewOptions, state.markdown],\n );\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div\n ref={container}\n className={cls}\n {...other}\n onClick={() => {\n dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n }}\n style={{\n ...other.style,\n height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height,\n }}\n >\n {!hideToolbar && <Toolbar prefixCls={prefixCls} height={toolbarHeight} overflow={overflow} />}\n <div\n className={`${prefixCls}-content`}\n style={{\n height: state.fullscreen ? `calc(100% - ${toolbarHeight}px)` : Number(state.height) - toolbarHeight,\n }}\n >\n {/(edit|live)/.test(state.preview || '') && (\n <TextArea\n className={`${prefixCls}-input`}\n prefixCls={prefixCls}\n autoFocus={autoFocus}\n {...textareaProps}\n onChange={(evn) => {\n onChange && onChange(evn.target.value, evn, state);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n }}\n renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visiableDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\nconst mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);\n\ntype MDEditor = typeof mdEditor & {\n Markdown: typeof MarkdownPreview;\n};\n\n(mdEditor as MDEditor).Markdown = MarkdownPreview;\n\nexport default mdEditor as MDEditor;\n"
96
- ]
102
+ "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps, MarkdownPreviewRef } from '@uiw/react-markdown-preview';\nimport TextArea, { ITextAreaProps } from './components/TextArea';\nimport Toolbar from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, ICommand } from './commands';\nimport { reducer, EditorContext, ContextStore, PreviewType } from './Context';\nimport './index.less';\n\nexport interface IProps {\n prefixCls?: string;\n className?: string;\n}\n\nexport interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, IProps {\n /**\n * The Markdown value.\n */\n value?: string;\n /**\n * Event handler for the `onChange` event.\n */\n onChange?: (value?: string, event?: React.ChangeEvent<HTMLTextAreaElement>, state?: ContextStore) => void;\n /**\n * editor height change listener\n */\n onHeightChange?: (value?: number, oldValue?: number, state?: ContextStore) => void;\n /**\n * Can be used to make `Markdown Editor` focus itself on initialization. Defaults to on.\n * it will be set to true when either the source `textarea` is focused,\n * or it has an `autofocus` attribute and no other element is focused.\n */\n autoFocus?: ITextAreaProps['autoFocus'];\n /**\n * The height of the editor.\n */\n height?: number;\n /**\n * Custom toolbar heigth\n * @default 29px\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visiableDragbar?: boolean;\n /**\n * Show markdown preview.\n */\n preview?: PreviewType;\n /**\n * Full screen display editor.\n */\n fullscreen?: boolean;\n /**\n * Disable `fullscreen` setting body styles\n */\n overflow?: boolean;\n /**\n * Maximum drag height. `visiableDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visiableDragbar=true`\n */\n minHeight?: number;\n /**\n * This is reset [react-markdown](https://github.com/rexxars/react-markdown) settings.\n */\n previewOptions?: Omit<MarkdownPreviewProps, 'source'>;\n /**\n * Set the `textarea` related props.\n */\n textareaProps?: ITextAreaProps;\n /** Use div to replace TextArea or re-render TextArea */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * Disable editing area code highlighting. The value is `false`, which increases the editing speed.\n * @default true\n */\n highlightEnable?: boolean;\n /**\n * The number of characters to insert when pressing tab key.\n * Default `2` spaces.\n */\n tabSize?: number;\n /**\n * If `false`, the `tab` key inserts a tab character into the textarea. If `true`, the `tab` key executes default behavior e.g. focus shifts to next element.\n */\n defaultTabEnable?: boolean;\n /**\n * You can create your own commands or reuse existing commands.\n */\n commands?: ICommand[];\n /**\n * Filter or modify your commands.\n * https://github.com/uiwjs/react-md-editor/issues/296\n */\n commandsFilter?: (command: ICommand, isExtra: boolean) => false | ICommand;\n /**\n * You can create your own commands or reuse existing commands.\n */\n extraCommands?: ICommand[];\n /**\n * Hide the tool bar\n */\n hideToolbar?: boolean;\n /** Whether to enable scrolling */\n enableScroll?: boolean;\n /** Toolbar on bottom */\n toolbarBottom?: boolean;\n}\n\nfunction setGroupPopFalse(data: Record<string, boolean> = {}) {\n Object.keys(data).forEach((keyname) => {\n data[keyname] = false;\n });\n return data;\n}\n\nconst InternalMDEditor = (\n props: MDEditorProps,\n ref?: ((instance: ContextStore) => void) | React.RefObject<ContextStore> | null,\n) => {\n const {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n extraCommands = getExtraCommands(),\n height = 200,\n toolbarHeight = 29,\n enableScroll = true,\n visiableDragbar = true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n overflow = true,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n onHeightChange,\n hideToolbar,\n toolbarBottom = false,\n renderTextarea,\n ...other\n } = props || {};\n const cmds = commands\n .map((item) => (commandsFilter ? commandsFilter(item, false) : item))\n .filter(Boolean) as ICommand[];\n const extraCmds = extraCommands\n .map((item) => (commandsFilter ? commandsFilter(item, true) : item))\n .filter(Boolean) as ICommand[];\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {},\n });\n const container = useRef<HTMLDivElement>(null);\n const previewRef = useRef<MarkdownPreviewRef>(null);\n const enableScrollRef = useRef(enableScroll);\n\n useImperativeHandle(ref, () => ({ ...state }));\n useMemo(() => (enableScrollRef.current = enableScroll), [enableScroll]);\n useEffect(() => {\n const stateInit: ContextStore = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch({ ...state, ...stateInit });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cls = [\n className,\n 'wmde-markdown-var',\n prefixCls,\n state.preview ? `${prefixCls}-show-${state.preview}` : null,\n state.fullscreen ? `${prefixCls}-fullscreen` : null,\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n\n useMemo(\n () => propsValue !== state.markdown && dispatch({ markdown: propsValue || '' }),\n [propsValue, state.markdown],\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => previewType !== state.preview && dispatch({ preview: previewType }), [previewType]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => tabSize !== state.tabSize && dispatch({ tabSize }), [tabSize]);\n useMemo(\n () => highlightEnable !== state.highlightEnable && dispatch({ highlightEnable }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [highlightEnable],\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => autoFocus !== state.autoFocus && dispatch({ autoFocus: autoFocus }), [autoFocus]);\n useMemo(\n () => fullscreen !== state.fullscreen && dispatch({ fullscreen: fullscreen }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [fullscreen],\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => height !== state.height && dispatch({ height: height }), [height]);\n useMemo(\n () => height !== state.height && onHeightChange && onHeightChange(state.height, height, state),\n [height, onHeightChange, state],\n );\n\n const textareaDomRef = useRef<HTMLDivElement>();\n const active = useRef<'text' | 'preview'>('preview');\n const initScroll = useRef(false);\n\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>, type: 'text' | 'preview') => {\n if (!enableScrollRef.current) return;\n const textareaDom = textareaDomRef.current;\n const previewDom = previewRef.current ? previewRef.current.mdp.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n const scale =\n (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n let scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({ scrollTop });\n }\n };\n\n const mdPreview = useMemo(\n () => (\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n ref={previewRef}\n source={state.markdown || ''}\n className={`${prefixCls}-preview ${previewOptions.className || ''}`}\n />\n ),\n [prefixCls, previewOptions, state.markdown],\n );\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div\n ref={container}\n className={cls}\n {...other}\n onClick={() => {\n dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n }}\n style={{\n ...other.style,\n height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height,\n }}\n >\n {!hideToolbar && !toolbarBottom && (\n <Toolbar prefixCls={prefixCls} height={toolbarHeight} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n <div\n className={`${prefixCls}-content`}\n style={{\n height: state.fullscreen ? `calc(100% - ${toolbarHeight}px)` : Number(state.height) - toolbarHeight,\n }}\n >\n {/(edit|live)/.test(state.preview || '') && (\n <TextArea\n className={`${prefixCls}-input`}\n prefixCls={prefixCls}\n autoFocus={autoFocus}\n {...textareaProps}\n onChange={(evn) => {\n onChange && onChange(evn.target.value, evn, state);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n }}\n renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visiableDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} height={toolbarHeight} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\nconst mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);\n\ntype MDEditor = typeof mdEditor & {\n Markdown: typeof MarkdownPreview;\n};\n\n(mdEditor as MDEditor).Markdown = MarkdownPreview;\n\nexport default mdEditor as MDEditor;\n"
103
+ ],
104
+ "mappings": "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"
97
105
  }
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [
4
- "../../src/commands/bold.tsx"
5
- ],
6
3
  "names": [
7
4
  "bold",
8
5
  "name",
@@ -15,6 +12,7 @@
15
12
  "state",
16
13
  "api",
17
14
  "newSelectionRange",
15
+ "selectWord",
18
16
  "text",
19
17
  "selection",
20
18
  "state1",
@@ -26,8 +24,11 @@
26
24
  "end",
27
25
  "length"
28
26
  ],
29
- "mappings": ";;;;;;;;;AAAA;;AAEA;;;;AAEO,IAAMA,IAAc,GAAG;AAC5BC,EAAAA,IAAI,EAAE,MADsB;AAE5BC,EAAAA,UAAU,EAAE,MAFgB;AAG5BC,EAAAA,SAAS,EAAE,WAHiB;AAI5BC,EAAAA,WAAW,EAAE;AAAE,kBAAc,eAAhB;AAAiCC,IAAAA,KAAK,EAAE;AAAxC,GAJe;AAK5BC,EAAAA,IAAI,eACF;AAAK,IAAA,IAAI,EAAC,KAAV;AAAgB,IAAA,KAAK,EAAC,IAAtB;AAA2B,IAAA,MAAM,EAAC,IAAlC;AAAuC,IAAA,OAAO,EAAC,aAA/C;AAAA,2BACE;AACE,MAAA,IAAI,EAAC,cADP;AAEE,MAAA,CAAC,EAAC;AAFJ;AADF,IAN0B;AAa5BC,EAAAA,OAAO,EAAE,iBAACC,KAAD,EAAmBC,GAAnB,EAA4C;AACnD;AACA,QAAMC,iBAAiB,GAAG,+BAAW;AAAEC,MAAAA,IAAI,EAAEH,KAAK,CAACG,IAAd;AAAoBC,MAAAA,SAAS,EAAEJ,KAAK,CAACI;AAArC,KAAX,CAA1B;AACA,QAAMC,MAAM,GAAGJ,GAAG,CAACK,iBAAJ,CAAsBJ,iBAAtB,CAAf,CAHmD,CAInD;;AACA,QAAMK,MAAM,GAAGN,GAAG,CAACO,gBAAJ,aAA0BH,MAAM,CAACI,YAAjC,QAAf,CALmD,CAMnD;;AACAR,IAAAA,GAAG,CAACK,iBAAJ,CAAsB;AACpBI,MAAAA,KAAK,EAAEH,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB,CAAvB,GAA2BN,MAAM,CAACI,YAAP,CAAoBG,MADlC;AAEpBD,MAAAA,GAAG,EAAEJ,MAAM,CAACH,SAAP,CAAiBO,GAAjB,GAAuB;AAFR,KAAtB;AAID;AAxB2B,CAAvB",
27
+ "sources": [
28
+ "../../src/commands/bold.tsx"
29
+ ],
30
30
  "sourcesContent": [
31
31
  "import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport { selectWord } from '../utils/markdownUtils';\n\nexport const bold: ICommand = {\n name: 'bold',\n keyCommand: 'bold',\n shortcuts: 'ctrlcmd+b',\n buttonProps: { 'aria-label': 'Add bold text', title: 'Add bold text' },\n icon: (\n <svg role=\"img\" width=\"12\" height=\"12\" viewBox=\"0 0 384 512\">\n <path\n fill=\"currentColor\"\n d=\"M304.793 243.891c33.639-18.537 53.657-54.16 53.657-95.693 0-48.236-26.25-87.626-68.626-104.179C265.138 34.01 240.849 32 209.661 32H24c-8.837 0-16 7.163-16 16v33.049c0 8.837 7.163 16 16 16h33.113v318.53H24c-8.837 0-16 7.163-16 16V464c0 8.837 7.163 16 16 16h195.69c24.203 0 44.834-1.289 66.866-7.584C337.52 457.193 376 410.647 376 350.014c0-52.168-26.573-91.684-71.207-106.123zM142.217 100.809h67.444c16.294 0 27.536 2.019 37.525 6.717 15.828 8.479 24.906 26.502 24.906 49.446 0 35.029-20.32 56.79-53.029 56.79h-76.846V100.809zm112.642 305.475c-10.14 4.056-22.677 4.907-31.409 4.907h-81.233V281.943h84.367c39.645 0 63.057 25.38 63.057 63.057.001 28.425-13.66 52.483-34.782 61.284z\"\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}**`);\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"
32
- ]
32
+ ],
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,eAAhB;IAAiCC,KAAK,EAAE;EAAxC,CAJe;EAK5BC,IAAI,eACF;IAAK,IAAI,EAAC,KAAV;IAAgB,KAAK,EAAC,IAAtB;IAA2B,MAAM,EAAC,IAAlC;IAAuC,OAAO,EAAC,aAA/C;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,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;AAxB2B,CAAvB"
33
34
  }
@@ -18,7 +18,8 @@ var code = {
18
18
  keyCommand: 'code',
19
19
  shortcuts: 'ctrlcmd+j',
20
20
  buttonProps: {
21
- 'aria-label': 'Insert code'
21
+ 'aria-label': 'Insert code',
22
+ title: 'Insert code'
22
23
  },
23
24
  icon: /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", {
24
25
  width: "12",
@@ -81,7 +82,8 @@ var codeBlock = {
81
82
  })
82
83
  }),
83
84
  buttonProps: {
84
- 'aria-label': 'Insert Code Block'
85
+ 'aria-label': 'Insert Code Block',
86
+ title: 'Insert Code Block'
85
87
  },
86
88
  execute: function execute(tate, api) {
87
89
  // Adjust the selection to encompass the whole word if the caret is inside one