@uiw/react-md-editor 3.19.7 → 3.20.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/esm/Editor.d.ts CHANGED
@@ -132,6 +132,12 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
132
132
  enableScroll?: boolean;
133
133
  /** Toolbar on bottom */
134
134
  toolbarBottom?: boolean;
135
+ /**
136
+ * The **`direction`** property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages).
137
+ *
138
+ * https://github.com/uiwjs/react-md-editor/issues/462
139
+ */
140
+ direction?: CSSProperties['direction'];
135
141
  }
136
142
  declare type Editor = React.FC<PropsWithRef<MDEditorProps>> & {
137
143
  Markdown: typeof MarkdownPreview;
package/esm/Editor.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
3
- var _excluded = ["prefixCls", "className", "value", "commands", "commandsFilter", "extraCommands", "height", "enableScroll", "visibleDragbar", "highlightEnable", "preview", "fullscreen", "overflow", "previewOptions", "textareaProps", "maxHeight", "minHeight", "autoFocus", "tabSize", "defaultTabEnable", "onChange", "onHeightChange", "hideToolbar", "toolbarBottom", "components", "renderTextarea"];
3
+ var _excluded = ["prefixCls", "className", "value", "commands", "commandsFilter", "direction", "extraCommands", "height", "enableScroll", "visibleDragbar", "highlightEnable", "preview", "fullscreen", "overflow", "previewOptions", "textareaProps", "maxHeight", "minHeight", "autoFocus", "tabSize", "defaultTabEnable", "onChange", "onHeightChange", "hideToolbar", "toolbarBottom", "components", "renderTextarea"];
4
4
  import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';
5
5
  import MarkdownPreview from '@uiw/react-markdown-preview';
6
6
  import TextArea from './components/TextArea';
@@ -28,6 +28,7 @@ var InternalMDEditor = (props, ref) => {
28
28
  value: propsValue,
29
29
  commands = getCommands(),
30
30
  commandsFilter,
31
+ direction,
31
32
  extraCommands = getExtraCommands(),
32
33
  height = 200,
33
34
  enableScroll = true,
@@ -85,7 +86,7 @@ var InternalMDEditor = (props, ref) => {
85
86
  }
86
87
  // eslint-disable-next-line react-hooks/exhaustive-deps
87
88
  }, []);
88
- var cls = [className, 'wmde-markdown-var', prefixCls, state.preview ? prefixCls + "-show-" + state.preview : null, state.fullscreen ? prefixCls + "-fullscreen" : null].filter(Boolean).join(' ').trim();
89
+ var cls = [className, 'wmde-markdown-var', direction ? prefixCls + "-" + direction : null, prefixCls, state.preview ? prefixCls + "-show-" + state.preview : null, state.fullscreen ? prefixCls + "-fullscreen" : null].filter(Boolean).join(' ').trim();
89
90
  useMemo(() => propsValue !== state.markdown && dispatch({
90
91
  markdown: propsValue || ''
91
92
  }), [propsValue, state.markdown]);
package/esm/Editor.js.map CHANGED
@@ -30,6 +30,7 @@
30
30
  "propsValue",
31
31
  "commands",
32
32
  "commandsFilter",
33
+ "direction",
33
34
  "extraCommands",
34
35
  "height",
35
36
  "enableScroll",
@@ -109,7 +110,7 @@
109
110
  "../src/Editor.tsx"
110
111
  ],
111
112
  "sourcesContent": [
112
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties, PropsWithRef } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps } 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?: CSSProperties['height'], oldValue?: CSSProperties['height'], 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 * ⚠️ `Dragbar` is invalid when **`height`** parameter percentage.\n */\n height?: CSSProperties['height'];\n /**\n * Custom toolbar heigth\n * @default 29px\n *\n * @deprecated toolbar height adaptive: https://github.com/uiwjs/react-md-editor/issues/427\n *\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visibleDragbar?: boolean;\n /**\n * @deprecated use `visibleDragbar`\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. `visibleDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visibleDragbar=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 /**\n * Use div to replace TextArea or re-render TextArea\n * @deprecated Please use ~~`renderTextarea`~~ -> `components`\n */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * re-render element\n */\n components?: {\n /** Use div to replace TextArea or re-render TextArea */\n textarea?: ITextAreaProps['renderTextarea'];\n /**\n * Override the default command element\n * _`toolbar`_ < _`command[].render`_\n */\n toolbar?: ICommand['render'];\n /** Custom markdown preview */\n preview?: (source: string, state: ContextStore, dispath: React.Dispatch<ContextStore>) => JSX.Element;\n };\n /** Theme configuration */\n 'data-color-mode'?: 'light' | 'dark';\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 enableScroll = true,\n visibleDragbar = typeof props.visiableDragbar === 'boolean' ? props.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 components,\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 components,\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<HTMLDivElement>(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 : 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 previewClassName = `${prefixCls}-preview ${previewOptions.className || ''}`;\n const handlePreviewScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => handleScroll(e, 'preview');\n let mdPreview = useMemo(\n () => (\n <div ref={previewRef} className={previewClassName}>\n <MarkdownPreview {...previewOptions} onScroll={handlePreviewScroll} source={state.markdown || ''} />\n </div>\n ),\n [previewClassName, previewOptions, state.markdown],\n );\n const preview = components?.preview && components?.preview(state.markdown || '', state, dispatch);\n if (preview && React.isValidElement(preview)) {\n mdPreview = (\n <div className={previewClassName} ref={previewRef} onScroll={handlePreviewScroll}>\n {preview}\n </div>\n );\n }\n\n const containerStyle = { ...other.style, height: state.height || '100%' };\n const containerClick = () => dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n const dragBarChange = (newHeight: number) => dispatch({ height: newHeight });\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div ref={container} className={cls} {...other} onClick={containerClick} style={containerStyle}>\n {!hideToolbar && !toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n <div className={`${prefixCls}-content`}>\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={components?.textarea || renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visibleDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={dragBarChange}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\ntype Editor = React.FC<PropsWithRef<MDEditorProps>> & { Markdown: typeof MarkdownPreview };\n\nconst mdEditor: Editor = React.forwardRef(InternalMDEditor) as unknown as Editor;\n\nmdEditor.Markdown = MarkdownPreview;\n\nexport default mdEditor;\n"
113
+ "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties, PropsWithRef } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps } 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?: CSSProperties['height'], oldValue?: CSSProperties['height'], 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 * ⚠️ `Dragbar` is invalid when **`height`** parameter percentage.\n */\n height?: CSSProperties['height'];\n /**\n * Custom toolbar heigth\n * @default 29px\n *\n * @deprecated toolbar height adaptive: https://github.com/uiwjs/react-md-editor/issues/427\n *\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visibleDragbar?: boolean;\n /**\n * @deprecated use `visibleDragbar`\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. `visibleDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visibleDragbar=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 /**\n * Use div to replace TextArea or re-render TextArea\n * @deprecated Please use ~~`renderTextarea`~~ -> `components`\n */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * re-render element\n */\n components?: {\n /** Use div to replace TextArea or re-render TextArea */\n textarea?: ITextAreaProps['renderTextarea'];\n /**\n * Override the default command element\n * _`toolbar`_ < _`command[].render`_\n */\n toolbar?: ICommand['render'];\n /** Custom markdown preview */\n preview?: (source: string, state: ContextStore, dispath: React.Dispatch<ContextStore>) => JSX.Element;\n };\n /** Theme configuration */\n 'data-color-mode'?: 'light' | 'dark';\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 * The **`direction`** property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages).\n *\n * https://github.com/uiwjs/react-md-editor/issues/462\n */\n direction?: CSSProperties['direction'];\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 direction,\n extraCommands = getExtraCommands(),\n height = 200,\n enableScroll = true,\n visibleDragbar = typeof props.visiableDragbar === 'boolean' ? props.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 components,\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 components,\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<HTMLDivElement>(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 direction ? `${prefixCls}-${direction}` : null,\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 : 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 previewClassName = `${prefixCls}-preview ${previewOptions.className || ''}`;\n const handlePreviewScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => handleScroll(e, 'preview');\n let mdPreview = useMemo(\n () => (\n <div ref={previewRef} className={previewClassName}>\n <MarkdownPreview {...previewOptions} onScroll={handlePreviewScroll} source={state.markdown || ''} />\n </div>\n ),\n [previewClassName, previewOptions, state.markdown],\n );\n const preview = components?.preview && components?.preview(state.markdown || '', state, dispatch);\n if (preview && React.isValidElement(preview)) {\n mdPreview = (\n <div className={previewClassName} ref={previewRef} onScroll={handlePreviewScroll}>\n {preview}\n </div>\n );\n }\n\n const containerStyle = { ...other.style, height: state.height || '100%' };\n const containerClick = () => dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n const dragBarChange = (newHeight: number) => dispatch({ height: newHeight });\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div ref={container} className={cls} {...other} onClick={containerClick} style={containerStyle}>\n {!hideToolbar && !toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n <div className={`${prefixCls}-content`}>\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={components?.textarea || renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visibleDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={dragBarChange}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\ntype Editor = React.FC<PropsWithRef<MDEditorProps>> & { Markdown: typeof MarkdownPreview };\n\nconst mdEditor: Editor = React.forwardRef(InternalMDEditor) as unknown as Editor;\n\nmdEditor.Markdown = MarkdownPreview;\n\nexport default mdEditor;\n"
113
114
  ],
114
- "mappings": "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"
115
+ "mappings": "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"
115
116
  }
@@ -60,7 +60,7 @@ export default function handleKeyDown(e, tabSize, defaultTabEnable) {
60
60
  } else {
61
61
  return insertTextAtPosition(target, space);
62
62
  }
63
- } else if (e.code && e.code.toLowerCase() === 'enter' && (/^(-|\*)\s/.test(currentLineStr) || /^\d+.\s/.test(currentLineStr))) {
63
+ } else if (e.keyCode === 13 && e.code.toLowerCase() === 'enter' && (/^(-|\*)\s/.test(currentLineStr) || /^\d+.\s/.test(currentLineStr))) {
64
64
  /**
65
65
  * `13` - `Enter`
66
66
  */
@@ -50,6 +50,7 @@
50
50
  "replaceSelection",
51
51
  "startTabSize",
52
52
  "endTabSize",
53
+ "keyCode",
53
54
  "test",
54
55
  "startStr",
55
56
  "startsWith",
@@ -59,7 +60,7 @@
59
60
  "../../../src/components/TextArea/handleKeyDown.tsx"
60
61
  ],
61
62
  "sourcesContent": [
62
- "import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';\nimport { TextAreaTextApi } from '../../commands';\nimport { insertBeforeEachLine } from '../../commands/list';\n\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport default function handleKeyDown(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n tabSize: number = 2,\n defaultTabEnable: boolean = false,\n) {\n const target = e.target as HTMLTextAreaElement;\n const starVal = target.value.substr(0, target.selectionStart);\n const valArr = starVal.split('\\n');\n const currentLineStr = valArr[valArr.length - 1];\n const textArea = new TextAreaTextApi(target);\n\n /**\n * `9` - `Tab`\n */\n if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n stopPropagation(e);\n const space = new Array(tabSize + 1).join(' ');\n if (target.selectionStart !== target.selectionEnd) {\n const _star = target.value.substring(0, target.selectionStart).split('\\n');\n const _end = target.value.substring(0, target.selectionEnd).split('\\n');\n const modifiedTextLine: string[] = [];\n _end.forEach((item, idx) => {\n if (item !== _star[idx]) {\n modifiedTextLine.push(item);\n }\n });\n const modifiedText = modifiedTextLine.join('\\n');\n const oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n const newStarNum = target.value.substring(0, target.selectionStart).length;\n\n textArea.setSelectionRange({\n start: target.value.indexOf(modifiedText),\n end: target.selectionEnd,\n });\n\n const modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n\n let text = modifiedTextObj.modifiedText;\n if (e.shiftKey) {\n text = text\n .split('\\n')\n .map((item) => item.replace(new RegExp(`^${space}`), ''))\n .join('\\n');\n }\n textArea.replaceSelection(text);\n\n let startTabSize = e.shiftKey ? -tabSize : tabSize;\n let endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n\n textArea.setSelectionRange({\n start: newStarNum + startTabSize,\n end: newStarNum + oldSelectText.length + endTabSize,\n });\n } else {\n return insertTextAtPosition(target, space);\n }\n } else if (\n e.code &&\n e.code.toLowerCase() === 'enter' &&\n (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr))\n ) {\n /**\n * `13` - `Enter`\n */\n stopPropagation(e);\n let startStr = '\\n- ';\n\n if (currentLineStr.startsWith('*')) {\n startStr = '\\n* ';\n }\n\n if (currentLineStr.startsWith('- [ ]')) {\n startStr = '\\n- [ ] ';\n } else if (currentLineStr.startsWith('- [X]')) {\n startStr = '\\n- [X] ';\n }\n\n if (/^\\d+.\\s/.test(currentLineStr)) {\n startStr = `\\n${parseInt(currentLineStr) + 1}. `;\n }\n return insertTextAtPosition(target, startStr);\n }\n}\n"
63
+ "import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';\nimport { TextAreaTextApi } from '../../commands';\nimport { insertBeforeEachLine } from '../../commands/list';\n\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport default function handleKeyDown(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n tabSize: number = 2,\n defaultTabEnable: boolean = false,\n) {\n const target = e.target as HTMLTextAreaElement;\n const starVal = target.value.substr(0, target.selectionStart);\n const valArr = starVal.split('\\n');\n const currentLineStr = valArr[valArr.length - 1];\n const textArea = new TextAreaTextApi(target);\n\n /**\n * `9` - `Tab`\n */\n if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n stopPropagation(e);\n const space = new Array(tabSize + 1).join(' ');\n if (target.selectionStart !== target.selectionEnd) {\n const _star = target.value.substring(0, target.selectionStart).split('\\n');\n const _end = target.value.substring(0, target.selectionEnd).split('\\n');\n const modifiedTextLine: string[] = [];\n _end.forEach((item, idx) => {\n if (item !== _star[idx]) {\n modifiedTextLine.push(item);\n }\n });\n const modifiedText = modifiedTextLine.join('\\n');\n const oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n const newStarNum = target.value.substring(0, target.selectionStart).length;\n\n textArea.setSelectionRange({\n start: target.value.indexOf(modifiedText),\n end: target.selectionEnd,\n });\n\n const modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n\n let text = modifiedTextObj.modifiedText;\n if (e.shiftKey) {\n text = text\n .split('\\n')\n .map((item) => item.replace(new RegExp(`^${space}`), ''))\n .join('\\n');\n }\n textArea.replaceSelection(text);\n\n let startTabSize = e.shiftKey ? -tabSize : tabSize;\n let endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n\n textArea.setSelectionRange({\n start: newStarNum + startTabSize,\n end: newStarNum + oldSelectText.length + endTabSize,\n });\n } else {\n return insertTextAtPosition(target, space);\n }\n } else if (\n e.keyCode === 13 &&\n e.code.toLowerCase() === 'enter' &&\n (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr))\n ) {\n /**\n * `13` - `Enter`\n */\n stopPropagation(e);\n let startStr = '\\n- ';\n\n if (currentLineStr.startsWith('*')) {\n startStr = '\\n* ';\n }\n\n if (currentLineStr.startsWith('- [ ]')) {\n startStr = '\\n- [ ] ';\n } else if (currentLineStr.startsWith('- [X]')) {\n startStr = '\\n- [X] ';\n }\n\n if (/^\\d+.\\s/.test(currentLineStr)) {\n startStr = `\\n${parseInt(currentLineStr) + 1}. `;\n }\n return insertTextAtPosition(target, startStr);\n }\n}\n"
63
64
  ],
64
- "mappings": "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"
65
+ "mappings": "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"
65
66
  }
package/esm/index.css CHANGED
@@ -10,6 +10,19 @@
10
10
  display: flex;
11
11
  flex-direction: column;
12
12
  }
13
+ .w-md-editor.w-md-editor-rtl {
14
+ direction: rtl !important;
15
+ text-align: right !important;
16
+ }
17
+ .w-md-editor.w-md-editor-rtl .w-md-editor-preview {
18
+ right: unset !important;
19
+ left: 0;
20
+ text-align: right !important;
21
+ box-shadow: inset -1px 0 0 0 var(--color-border-default);
22
+ }
23
+ .w-md-editor.w-md-editor-rtl .w-md-editor-text {
24
+ text-align: right !important;
25
+ }
13
26
  .w-md-editor-toolbar {
14
27
  height: -webkit-fit-content;
15
28
  height: fit-content;
package/esm/index.less CHANGED
@@ -12,6 +12,19 @@
12
12
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
13
13
  display: flex;
14
14
  flex-direction: column;
15
+ &&-rtl {
16
+ direction: rtl !important;
17
+ text-align: right !important;
18
+ }
19
+ &&-rtl &-preview {
20
+ right: unset !important;
21
+ left: 0;
22
+ text-align: right !important;
23
+ box-shadow: inset -1px 0 0 0 var(--color-border-default);
24
+ }
25
+ &&-rtl &-text {
26
+ text-align: right !important;
27
+ }
15
28
  &-toolbar {
16
29
  height: fit-content;
17
30
  }
package/lib/Editor.d.ts CHANGED
@@ -132,6 +132,12 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
132
132
  enableScroll?: boolean;
133
133
  /** Toolbar on bottom */
134
134
  toolbarBottom?: boolean;
135
+ /**
136
+ * The **`direction`** property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages).
137
+ *
138
+ * https://github.com/uiwjs/react-md-editor/issues/462
139
+ */
140
+ direction?: CSSProperties['direction'];
135
141
  }
136
142
  declare type Editor = React.FC<PropsWithRef<MDEditorProps>> & {
137
143
  Markdown: typeof MarkdownPreview;
package/lib/Editor.js CHANGED
@@ -17,7 +17,7 @@ var _DragBar = _interopRequireDefault(require("./components/DragBar"));
17
17
  var _commands = require("./commands");
18
18
  var _Context = require("./Context");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
- var _excluded = ["prefixCls", "className", "value", "commands", "commandsFilter", "extraCommands", "height", "enableScroll", "visibleDragbar", "highlightEnable", "preview", "fullscreen", "overflow", "previewOptions", "textareaProps", "maxHeight", "minHeight", "autoFocus", "tabSize", "defaultTabEnable", "onChange", "onHeightChange", "hideToolbar", "toolbarBottom", "components", "renderTextarea"];
20
+ var _excluded = ["prefixCls", "className", "value", "commands", "commandsFilter", "direction", "extraCommands", "height", "enableScroll", "visibleDragbar", "highlightEnable", "preview", "fullscreen", "overflow", "previewOptions", "textareaProps", "maxHeight", "minHeight", "autoFocus", "tabSize", "defaultTabEnable", "onChange", "onHeightChange", "hideToolbar", "toolbarBottom", "components", "renderTextarea"];
21
21
  function setGroupPopFalse() {
22
22
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
23
  Object.keys(data).forEach(function (keyname) {
@@ -34,6 +34,7 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
34
34
  _ref$commands = _ref.commands,
35
35
  commands = _ref$commands === void 0 ? (0, _commands.getCommands)() : _ref$commands,
36
36
  commandsFilter = _ref.commandsFilter,
37
+ direction = _ref.direction,
37
38
  _ref$extraCommands = _ref.extraCommands,
38
39
  extraCommands = _ref$extraCommands === void 0 ? (0, _commands.getExtraCommands)() : _ref$extraCommands,
39
40
  _ref$height = _ref.height,
@@ -115,7 +116,7 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
115
116
  }
116
117
  // eslint-disable-next-line react-hooks/exhaustive-deps
117
118
  }, []);
118
- var cls = [className, 'wmde-markdown-var', prefixCls, state.preview ? "".concat(prefixCls, "-show-").concat(state.preview) : null, state.fullscreen ? "".concat(prefixCls, "-fullscreen") : null].filter(Boolean).join(' ').trim();
119
+ var cls = [className, 'wmde-markdown-var', direction ? "".concat(prefixCls, "-").concat(direction) : null, prefixCls, state.preview ? "".concat(prefixCls, "-show-").concat(state.preview) : null, state.fullscreen ? "".concat(prefixCls, "-fullscreen") : null].filter(Boolean).join(' ').trim();
119
120
  (0, _react.useMemo)(function () {
120
121
  return propsValue !== state.markdown && dispatch({
121
122
  markdown: propsValue || ''
package/lib/Editor.js.map CHANGED
@@ -17,6 +17,7 @@
17
17
  "commands",
18
18
  "getCommands",
19
19
  "commandsFilter",
20
+ "direction",
20
21
  "extraCommands",
21
22
  "getExtraCommands",
22
23
  "height",
@@ -105,7 +106,7 @@
105
106
  "../src/Editor.tsx"
106
107
  ],
107
108
  "sourcesContent": [
108
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties, PropsWithRef } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps } 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?: CSSProperties['height'], oldValue?: CSSProperties['height'], 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 * ⚠️ `Dragbar` is invalid when **`height`** parameter percentage.\n */\n height?: CSSProperties['height'];\n /**\n * Custom toolbar heigth\n * @default 29px\n *\n * @deprecated toolbar height adaptive: https://github.com/uiwjs/react-md-editor/issues/427\n *\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visibleDragbar?: boolean;\n /**\n * @deprecated use `visibleDragbar`\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. `visibleDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visibleDragbar=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 /**\n * Use div to replace TextArea or re-render TextArea\n * @deprecated Please use ~~`renderTextarea`~~ -> `components`\n */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * re-render element\n */\n components?: {\n /** Use div to replace TextArea or re-render TextArea */\n textarea?: ITextAreaProps['renderTextarea'];\n /**\n * Override the default command element\n * _`toolbar`_ < _`command[].render`_\n */\n toolbar?: ICommand['render'];\n /** Custom markdown preview */\n preview?: (source: string, state: ContextStore, dispath: React.Dispatch<ContextStore>) => JSX.Element;\n };\n /** Theme configuration */\n 'data-color-mode'?: 'light' | 'dark';\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 enableScroll = true,\n visibleDragbar = typeof props.visiableDragbar === 'boolean' ? props.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 components,\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 components,\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<HTMLDivElement>(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 : 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 previewClassName = `${prefixCls}-preview ${previewOptions.className || ''}`;\n const handlePreviewScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => handleScroll(e, 'preview');\n let mdPreview = useMemo(\n () => (\n <div ref={previewRef} className={previewClassName}>\n <MarkdownPreview {...previewOptions} onScroll={handlePreviewScroll} source={state.markdown || ''} />\n </div>\n ),\n [previewClassName, previewOptions, state.markdown],\n );\n const preview = components?.preview && components?.preview(state.markdown || '', state, dispatch);\n if (preview && React.isValidElement(preview)) {\n mdPreview = (\n <div className={previewClassName} ref={previewRef} onScroll={handlePreviewScroll}>\n {preview}\n </div>\n );\n }\n\n const containerStyle = { ...other.style, height: state.height || '100%' };\n const containerClick = () => dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n const dragBarChange = (newHeight: number) => dispatch({ height: newHeight });\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div ref={container} className={cls} {...other} onClick={containerClick} style={containerStyle}>\n {!hideToolbar && !toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n <div className={`${prefixCls}-content`}>\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={components?.textarea || renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visibleDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={dragBarChange}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\ntype Editor = React.FC<PropsWithRef<MDEditorProps>> & { Markdown: typeof MarkdownPreview };\n\nconst mdEditor: Editor = React.forwardRef(InternalMDEditor) as unknown as Editor;\n\nmdEditor.Markdown = MarkdownPreview;\n\nexport default mdEditor;\n"
109
+ "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties, PropsWithRef } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps } 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?: CSSProperties['height'], oldValue?: CSSProperties['height'], 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 * ⚠️ `Dragbar` is invalid when **`height`** parameter percentage.\n */\n height?: CSSProperties['height'];\n /**\n * Custom toolbar heigth\n * @default 29px\n *\n * @deprecated toolbar height adaptive: https://github.com/uiwjs/react-md-editor/issues/427\n *\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visibleDragbar?: boolean;\n /**\n * @deprecated use `visibleDragbar`\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. `visibleDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visibleDragbar=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 /**\n * Use div to replace TextArea or re-render TextArea\n * @deprecated Please use ~~`renderTextarea`~~ -> `components`\n */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * re-render element\n */\n components?: {\n /** Use div to replace TextArea or re-render TextArea */\n textarea?: ITextAreaProps['renderTextarea'];\n /**\n * Override the default command element\n * _`toolbar`_ < _`command[].render`_\n */\n toolbar?: ICommand['render'];\n /** Custom markdown preview */\n preview?: (source: string, state: ContextStore, dispath: React.Dispatch<ContextStore>) => JSX.Element;\n };\n /** Theme configuration */\n 'data-color-mode'?: 'light' | 'dark';\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 * The **`direction`** property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages).\n *\n * https://github.com/uiwjs/react-md-editor/issues/462\n */\n direction?: CSSProperties['direction'];\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 direction,\n extraCommands = getExtraCommands(),\n height = 200,\n enableScroll = true,\n visibleDragbar = typeof props.visiableDragbar === 'boolean' ? props.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 components,\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 components,\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<HTMLDivElement>(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 direction ? `${prefixCls}-${direction}` : null,\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 : 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 previewClassName = `${prefixCls}-preview ${previewOptions.className || ''}`;\n const handlePreviewScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => handleScroll(e, 'preview');\n let mdPreview = useMemo(\n () => (\n <div ref={previewRef} className={previewClassName}>\n <MarkdownPreview {...previewOptions} onScroll={handlePreviewScroll} source={state.markdown || ''} />\n </div>\n ),\n [previewClassName, previewOptions, state.markdown],\n );\n const preview = components?.preview && components?.preview(state.markdown || '', state, dispatch);\n if (preview && React.isValidElement(preview)) {\n mdPreview = (\n <div className={previewClassName} ref={previewRef} onScroll={handlePreviewScroll}>\n {preview}\n </div>\n );\n }\n\n const containerStyle = { ...other.style, height: state.height || '100%' };\n const containerClick = () => dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n const dragBarChange = (newHeight: number) => dispatch({ height: newHeight });\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div ref={container} className={cls} {...other} onClick={containerClick} style={containerStyle}>\n {!hideToolbar && !toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n <div className={`${prefixCls}-content`}>\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={components?.textarea || renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visibleDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={dragBarChange}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\ntype Editor = React.FC<PropsWithRef<MDEditorProps>> & { Markdown: typeof MarkdownPreview };\n\nconst mdEditor: Editor = React.forwardRef(InternalMDEditor) as unknown as Editor;\n\nmdEditor.Markdown = MarkdownPreview;\n\nexport default mdEditor;\n"
109
110
  ],
110
- "mappings": "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"
111
+ "mappings": "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"
111
112
  }
@@ -63,7 +63,7 @@ function handleKeyDown(e) {
63
63
  } else {
64
64
  return (0, _InsertTextAtPosition.insertTextAtPosition)(target, space);
65
65
  }
66
- } else if (e.code && e.code.toLowerCase() === 'enter' && (/^(-|\*)\s/.test(currentLineStr) || /^\d+.\s/.test(currentLineStr))) {
66
+ } else if (e.keyCode === 13 && e.code.toLowerCase() === 'enter' && (/^(-|\*)\s/.test(currentLineStr) || /^\d+.\s/.test(currentLineStr))) {
67
67
  /**
68
68
  * `13` - `Enter`
69
69
  */
@@ -50,6 +50,7 @@
50
50
  "startTabSize",
51
51
  "endTabSize",
52
52
  "insertTextAtPosition",
53
+ "keyCode",
53
54
  "test",
54
55
  "startStr",
55
56
  "startsWith",
@@ -59,7 +60,7 @@
59
60
  "../../../src/components/TextArea/handleKeyDown.tsx"
60
61
  ],
61
62
  "sourcesContent": [
62
- "import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';\nimport { TextAreaTextApi } from '../../commands';\nimport { insertBeforeEachLine } from '../../commands/list';\n\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport default function handleKeyDown(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n tabSize: number = 2,\n defaultTabEnable: boolean = false,\n) {\n const target = e.target as HTMLTextAreaElement;\n const starVal = target.value.substr(0, target.selectionStart);\n const valArr = starVal.split('\\n');\n const currentLineStr = valArr[valArr.length - 1];\n const textArea = new TextAreaTextApi(target);\n\n /**\n * `9` - `Tab`\n */\n if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n stopPropagation(e);\n const space = new Array(tabSize + 1).join(' ');\n if (target.selectionStart !== target.selectionEnd) {\n const _star = target.value.substring(0, target.selectionStart).split('\\n');\n const _end = target.value.substring(0, target.selectionEnd).split('\\n');\n const modifiedTextLine: string[] = [];\n _end.forEach((item, idx) => {\n if (item !== _star[idx]) {\n modifiedTextLine.push(item);\n }\n });\n const modifiedText = modifiedTextLine.join('\\n');\n const oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n const newStarNum = target.value.substring(0, target.selectionStart).length;\n\n textArea.setSelectionRange({\n start: target.value.indexOf(modifiedText),\n end: target.selectionEnd,\n });\n\n const modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n\n let text = modifiedTextObj.modifiedText;\n if (e.shiftKey) {\n text = text\n .split('\\n')\n .map((item) => item.replace(new RegExp(`^${space}`), ''))\n .join('\\n');\n }\n textArea.replaceSelection(text);\n\n let startTabSize = e.shiftKey ? -tabSize : tabSize;\n let endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n\n textArea.setSelectionRange({\n start: newStarNum + startTabSize,\n end: newStarNum + oldSelectText.length + endTabSize,\n });\n } else {\n return insertTextAtPosition(target, space);\n }\n } else if (\n e.code &&\n e.code.toLowerCase() === 'enter' &&\n (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr))\n ) {\n /**\n * `13` - `Enter`\n */\n stopPropagation(e);\n let startStr = '\\n- ';\n\n if (currentLineStr.startsWith('*')) {\n startStr = '\\n* ';\n }\n\n if (currentLineStr.startsWith('- [ ]')) {\n startStr = '\\n- [ ] ';\n } else if (currentLineStr.startsWith('- [X]')) {\n startStr = '\\n- [X] ';\n }\n\n if (/^\\d+.\\s/.test(currentLineStr)) {\n startStr = `\\n${parseInt(currentLineStr) + 1}. `;\n }\n return insertTextAtPosition(target, startStr);\n }\n}\n"
63
+ "import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';\nimport { TextAreaTextApi } from '../../commands';\nimport { insertBeforeEachLine } from '../../commands/list';\n\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport default function handleKeyDown(\n e: KeyboardEvent | React.KeyboardEvent<HTMLTextAreaElement>,\n tabSize: number = 2,\n defaultTabEnable: boolean = false,\n) {\n const target = e.target as HTMLTextAreaElement;\n const starVal = target.value.substr(0, target.selectionStart);\n const valArr = starVal.split('\\n');\n const currentLineStr = valArr[valArr.length - 1];\n const textArea = new TextAreaTextApi(target);\n\n /**\n * `9` - `Tab`\n */\n if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n stopPropagation(e);\n const space = new Array(tabSize + 1).join(' ');\n if (target.selectionStart !== target.selectionEnd) {\n const _star = target.value.substring(0, target.selectionStart).split('\\n');\n const _end = target.value.substring(0, target.selectionEnd).split('\\n');\n const modifiedTextLine: string[] = [];\n _end.forEach((item, idx) => {\n if (item !== _star[idx]) {\n modifiedTextLine.push(item);\n }\n });\n const modifiedText = modifiedTextLine.join('\\n');\n const oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n const newStarNum = target.value.substring(0, target.selectionStart).length;\n\n textArea.setSelectionRange({\n start: target.value.indexOf(modifiedText),\n end: target.selectionEnd,\n });\n\n const modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n\n let text = modifiedTextObj.modifiedText;\n if (e.shiftKey) {\n text = text\n .split('\\n')\n .map((item) => item.replace(new RegExp(`^${space}`), ''))\n .join('\\n');\n }\n textArea.replaceSelection(text);\n\n let startTabSize = e.shiftKey ? -tabSize : tabSize;\n let endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n\n textArea.setSelectionRange({\n start: newStarNum + startTabSize,\n end: newStarNum + oldSelectText.length + endTabSize,\n });\n } else {\n return insertTextAtPosition(target, space);\n }\n } else if (\n e.keyCode === 13 &&\n e.code.toLowerCase() === 'enter' &&\n (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr))\n ) {\n /**\n * `13` - `Enter`\n */\n stopPropagation(e);\n let startStr = '\\n- ';\n\n if (currentLineStr.startsWith('*')) {\n startStr = '\\n* ';\n }\n\n if (currentLineStr.startsWith('- [ ]')) {\n startStr = '\\n- [ ] ';\n } else if (currentLineStr.startsWith('- [X]')) {\n startStr = '\\n- [X] ';\n }\n\n if (/^\\d+.\\s/.test(currentLineStr)) {\n startStr = `\\n${parseInt(currentLineStr) + 1}. `;\n }\n return insertTextAtPosition(target, startStr);\n }\n}\n"
63
64
  ],
64
- "mappings": "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"
65
+ "mappings": "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"
65
66
  }
package/lib/index.less CHANGED
@@ -12,6 +12,19 @@
12
12
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
13
13
  display: flex;
14
14
  flex-direction: column;
15
+ &&-rtl {
16
+ direction: rtl !important;
17
+ text-align: right !important;
18
+ }
19
+ &&-rtl &-preview {
20
+ right: unset !important;
21
+ left: 0;
22
+ text-align: right !important;
23
+ box-shadow: inset -1px 0 0 0 var(--color-border-default);
24
+ }
25
+ &&-rtl &-text {
26
+ text-align: right !important;
27
+ }
15
28
  &-toolbar {
16
29
  height: fit-content;
17
30
  }
@@ -260,6 +260,19 @@
260
260
  display: flex;
261
261
  flex-direction: column;
262
262
  }
263
+ .w-md-editor.w-md-editor-rtl {
264
+ direction: rtl !important;
265
+ text-align: right !important;
266
+ }
267
+ .w-md-editor.w-md-editor-rtl .w-md-editor-preview {
268
+ right: unset !important;
269
+ left: 0;
270
+ text-align: right !important;
271
+ box-shadow: inset -1px 0 0 0 var(--color-border-default);
272
+ }
273
+ .w-md-editor.w-md-editor-rtl .w-md-editor-text {
274
+ text-align: right !important;
275
+ }
263
276
  .w-md-editor-toolbar {
264
277
  height: -webkit-fit-content;
265
278
  height: fit-content;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/react-md-editor",
3
- "version": "3.19.7",
3
+ "version": "3.20.0",
4
4
  "description": "A markdown editor with preview, implemented with React.js and TypeScript.",
5
5
  "homepage": "https://uiwjs.github.io/react-md-editor/",
6
6
  "author": "kenny wang <wowohoo@qq.com>",
package/src/Editor.tsx CHANGED
@@ -136,6 +136,12 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
136
136
  enableScroll?: boolean;
137
137
  /** Toolbar on bottom */
138
138
  toolbarBottom?: boolean;
139
+ /**
140
+ * The **`direction`** property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages).
141
+ *
142
+ * https://github.com/uiwjs/react-md-editor/issues/462
143
+ */
144
+ direction?: CSSProperties['direction'];
139
145
  }
140
146
 
141
147
  function setGroupPopFalse(data: Record<string, boolean> = {}) {
@@ -155,6 +161,7 @@ const InternalMDEditor = (
155
161
  value: propsValue,
156
162
  commands = getCommands(),
157
163
  commandsFilter,
164
+ direction,
158
165
  extraCommands = getExtraCommands(),
159
166
  height = 200,
160
167
  enableScroll = true,
@@ -221,6 +228,7 @@ const InternalMDEditor = (
221
228
  const cls = [
222
229
  className,
223
230
  'wmde-markdown-var',
231
+ direction ? `${prefixCls}-${direction}` : null,
224
232
  prefixCls,
225
233
  state.preview ? `${prefixCls}-show-${state.preview}` : null,
226
234
  state.fullscreen ? `${prefixCls}-fullscreen` : null,
@@ -68,7 +68,7 @@ export default function handleKeyDown(
68
68
  return insertTextAtPosition(target, space);
69
69
  }
70
70
  } else if (
71
- e.code &&
71
+ e.keyCode === 13 &&
72
72
  e.code.toLowerCase() === 'enter' &&
73
73
  (/^(-|\*)\s/.test(currentLineStr) || /^\d+.\s/.test(currentLineStr))
74
74
  ) {
package/src/index.less CHANGED
@@ -12,6 +12,19 @@
12
12
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
13
13
  display: flex;
14
14
  flex-direction: column;
15
+ &&-rtl {
16
+ direction: rtl !important;
17
+ text-align: right !important;
18
+ }
19
+ &&-rtl &-preview {
20
+ right: unset !important;
21
+ left: 0;
22
+ text-align: right !important;
23
+ box-shadow: inset -1px 0 0 0 var(--color-border-default);
24
+ }
25
+ &&-rtl &-text {
26
+ text-align: right !important;
27
+ }
15
28
  &-toolbar {
16
29
  height: fit-content;
17
30
  }