@uiw/react-md-editor 3.18.0 → 3.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/Editor.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { CSSProperties } from 'react';
1
+ import React, { CSSProperties, PropsWithRef } from 'react';
2
2
  import MarkdownPreview, { MarkdownPreviewProps } from '@uiw/react-markdown-preview';
3
3
  import { ITextAreaProps } from './components/TextArea';
4
4
  import { ICommand } from './commands';
@@ -131,9 +131,8 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
131
131
  /** Toolbar on bottom */
132
132
  toolbarBottom?: boolean;
133
133
  }
134
- declare const mdEditor: React.ForwardRefExoticComponent<MDEditorProps & React.RefAttributes<ContextStore>>;
135
- declare type MDEditor = typeof mdEditor & {
134
+ declare type Editor = React.FC<PropsWithRef<MDEditorProps>> & {
136
135
  Markdown: typeof MarkdownPreview;
137
136
  };
138
- declare const _default: MDEditor;
139
- export default _default;
137
+ declare const mdEditor: Editor;
138
+ export default mdEditor;
package/esm/Editor.js CHANGED
@@ -173,11 +173,14 @@ var InternalMDEditor = (props, ref) => {
173
173
  };
174
174
 
175
175
  var previewClassName = prefixCls + "-preview " + (previewOptions.className || '');
176
+
177
+ var handlePreviewScroll = e => handleScroll(e, 'preview');
178
+
176
179
  var mdPreview = useMemo(() => /*#__PURE__*/_jsx("div", {
177
180
  ref: previewRef,
178
181
  className: previewClassName,
179
182
  children: /*#__PURE__*/_jsx(MarkdownPreview, _extends({}, previewOptions, {
180
- onScroll: e => handleScroll(e, 'preview'),
183
+ onScroll: handlePreviewScroll,
181
184
  source: state.markdown || ''
182
185
  }))
183
186
  }), [previewClassName, previewOptions, state.markdown]);
@@ -187,11 +190,23 @@ var InternalMDEditor = (props, ref) => {
187
190
  mdPreview = /*#__PURE__*/_jsx("div", {
188
191
  className: previewClassName,
189
192
  ref: previewRef,
190
- onScroll: e => handleScroll(e, 'preview'),
193
+ onScroll: handlePreviewScroll,
191
194
  children: preview
192
195
  });
193
196
  }
194
197
 
198
+ var containerStyle = _extends({}, other.style, {
199
+ height: state.height || '100%'
200
+ });
201
+
202
+ var containerClick = () => dispatch({
203
+ barPopup: _extends({}, setGroupPopFalse(state.barPopup))
204
+ });
205
+
206
+ var dragBarChange = newHeight => dispatch({
207
+ height: newHeight
208
+ });
209
+
195
210
  return /*#__PURE__*/_jsx(EditorContext.Provider, {
196
211
  value: _extends({}, state, {
197
212
  dispatch
@@ -200,14 +215,8 @@ var InternalMDEditor = (props, ref) => {
200
215
  ref: container,
201
216
  className: cls
202
217
  }, other, {
203
- onClick: () => {
204
- dispatch({
205
- barPopup: _extends({}, setGroupPopFalse(state.barPopup))
206
- });
207
- },
208
- style: _extends({}, other.style, {
209
- height: state.height || '100%'
210
- }),
218
+ onClick: containerClick,
219
+ style: containerStyle,
211
220
  children: [!hideToolbar && !toolbarBottom && /*#__PURE__*/_jsx(Toolbar, {
212
221
  prefixCls: prefixCls,
213
222
  overflow: overflow,
@@ -234,11 +243,7 @@ var InternalMDEditor = (props, ref) => {
234
243
  height: state.height,
235
244
  maxHeight: maxHeight,
236
245
  minHeight: minHeight,
237
- onChange: newHeight => {
238
- dispatch({
239
- height: newHeight
240
- });
241
- }
246
+ onChange: dragBarChange
242
247
  }), !hideToolbar && toolbarBottom && /*#__PURE__*/_jsx(Toolbar, {
243
248
  prefixCls: prefixCls,
244
249
  overflow: overflow,
package/esm/Editor.js.map CHANGED
@@ -90,13 +90,17 @@
90
90
  "offsetHeight",
91
91
  "target",
92
92
  "previewClassName",
93
+ "handlePreviewScroll",
93
94
  "mdPreview",
94
95
  "isValidElement",
96
+ "containerStyle",
95
97
  "style",
98
+ "containerClick",
99
+ "dragBarChange",
100
+ "newHeight",
96
101
  "test",
97
102
  "evn",
98
103
  "textarea",
99
- "newHeight",
100
104
  "mdEditor",
101
105
  "forwardRef",
102
106
  "Markdown"
@@ -105,7 +109,7 @@
105
109
  "../src/Editor.tsx"
106
110
  ],
107
111
  "sourcesContent": [
108
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties } 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 /**\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 let mdPreview = useMemo(\n () => (\n <div ref={previewRef} className={previewClassName}>\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n source={state.markdown || ''}\n />\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={(e) => handleScroll(e, 'preview')}>\n {preview}\n </div>\n );\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.height || '100%',\n }}\n >\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={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} 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"
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 /**\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
113
  ],
110
- "mappings": "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"
114
+ "mappings": "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"
111
115
  }
package/lib/Editor.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { CSSProperties } from 'react';
1
+ import React, { CSSProperties, PropsWithRef } from 'react';
2
2
  import MarkdownPreview, { MarkdownPreviewProps } from '@uiw/react-markdown-preview';
3
3
  import { ITextAreaProps } from './components/TextArea';
4
4
  import { ICommand } from './commands';
@@ -131,9 +131,8 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
131
131
  /** Toolbar on bottom */
132
132
  toolbarBottom?: boolean;
133
133
  }
134
- declare const mdEditor: React.ForwardRefExoticComponent<MDEditorProps & React.RefAttributes<ContextStore>>;
135
- declare type MDEditor = typeof mdEditor & {
134
+ declare type Editor = React.FC<PropsWithRef<MDEditorProps>> & {
136
135
  Markdown: typeof MarkdownPreview;
137
136
  };
138
- declare const _default: MDEditor;
139
- export default _default;
137
+ declare const mdEditor: Editor;
138
+ export default mdEditor;
package/lib/Editor.js CHANGED
@@ -234,14 +234,17 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
234
234
  };
235
235
 
236
236
  var previewClassName = "".concat(prefixCls, "-preview ").concat(previewOptions.className || '');
237
+
238
+ var handlePreviewScroll = function handlePreviewScroll(e) {
239
+ return handleScroll(e, 'preview');
240
+ };
241
+
237
242
  var mdPreview = (0, _react.useMemo)(function () {
238
243
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
239
244
  ref: previewRef,
240
245
  className: previewClassName,
241
246
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMarkdownPreview["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, previewOptions), {}, {
242
- onScroll: function onScroll(e) {
243
- return handleScroll(e, 'preview');
244
- },
247
+ onScroll: handlePreviewScroll,
245
248
  source: state.markdown || ''
246
249
  }))
247
250
  });
@@ -252,13 +255,27 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
252
255
  mdPreview = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
253
256
  className: previewClassName,
254
257
  ref: previewRef,
255
- onScroll: function onScroll(e) {
256
- return handleScroll(e, 'preview');
257
- },
258
+ onScroll: handlePreviewScroll,
258
259
  children: preview
259
260
  });
260
261
  }
261
262
 
263
+ var containerStyle = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, other.style), {}, {
264
+ height: state.height || '100%'
265
+ });
266
+
267
+ var containerClick = function containerClick() {
268
+ return dispatch({
269
+ barPopup: (0, _objectSpread2["default"])({}, setGroupPopFalse(state.barPopup))
270
+ });
271
+ };
272
+
273
+ var dragBarChange = function dragBarChange(newHeight) {
274
+ return dispatch({
275
+ height: newHeight
276
+ });
277
+ };
278
+
262
279
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Context.EditorContext.Provider, {
263
280
  value: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), {}, {
264
281
  dispatch: dispatch
@@ -267,14 +284,8 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
267
284
  ref: container,
268
285
  className: cls
269
286
  }, other), {}, {
270
- onClick: function onClick() {
271
- dispatch({
272
- barPopup: (0, _objectSpread2["default"])({}, setGroupPopFalse(state.barPopup))
273
- });
274
- },
275
- style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, other.style), {}, {
276
- height: state.height || '100%'
277
- }),
287
+ onClick: containerClick,
288
+ style: containerStyle,
278
289
  children: [!hideToolbar && !toolbarBottom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar["default"], {
279
290
  prefixCls: prefixCls,
280
291
  overflow: overflow,
@@ -303,11 +314,7 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
303
314
  height: state.height,
304
315
  maxHeight: maxHeight,
305
316
  minHeight: minHeight,
306
- onChange: function onChange(newHeight) {
307
- dispatch({
308
- height: newHeight
309
- });
310
- }
317
+ onChange: dragBarChange
311
318
  }), !hideToolbar && toolbarBottom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar["default"], {
312
319
  prefixCls: prefixCls,
313
320
  overflow: overflow,
package/lib/Editor.js.map CHANGED
@@ -84,14 +84,18 @@
84
84
  "offsetHeight",
85
85
  "target",
86
86
  "previewClassName",
87
+ "handlePreviewScroll",
87
88
  "mdPreview",
88
89
  "React",
89
90
  "isValidElement",
91
+ "containerStyle",
90
92
  "style",
93
+ "containerClick",
94
+ "dragBarChange",
95
+ "newHeight",
91
96
  "test",
92
97
  "evn",
93
98
  "textarea",
94
- "newHeight",
95
99
  "mdEditor",
96
100
  "forwardRef",
97
101
  "Markdown",
@@ -101,7 +105,7 @@
101
105
  "../src/Editor.tsx"
102
106
  ],
103
107
  "sourcesContent": [
104
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties } 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 /**\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 let mdPreview = useMemo(\n () => (\n <div ref={previewRef} className={previewClassName}>\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n source={state.markdown || ''}\n />\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={(e) => handleScroll(e, 'preview')}>\n {preview}\n </div>\n );\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.height || '100%',\n }}\n >\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={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n {!hideToolbar && toolbarBottom && (\n <Toolbar prefixCls={prefixCls} 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"
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 /**\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"
105
109
  ],
106
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAoIA,SAASA,gBAAT,GAA8D;EAAA,IAApCC,IAAoC,uEAAJ,EAAI;EAC5DC,MAAM,CAACC,IAAP,CAAYF,IAAZ,EAAkBG,OAAlB,CAA0B,UAACC,OAAD,EAAa;IACrCJ,IAAI,CAACI,OAAD,CAAJ,GAAgB,KAAhB;EACD,CAFD;EAGA,OAAOJ,IAAP;AACD;;AAED,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBC,KADuB,EAEvBC,GAFuB,EAGpB;EACH,WA4BID,KAAK,IAAI,EA5Bb;EAAA,0BACEE,SADF;EAAA,IACEA,SADF,+BACc,aADd;EAAA,IAEEC,SAFF,QAEEA,SAFF;EAAA,IAGSC,UAHT,QAGEC,KAHF;EAAA,yBAIEC,QAJF;EAAA,IAIEA,QAJF,8BAIa,IAAAC,qBAAA,GAJb;EAAA,IAKEC,cALF,QAKEA,cALF;EAAA,8BAMEC,aANF;EAAA,IAMEA,aANF,mCAMkB,IAAAC,0BAAA,GANlB;EAAA,uBAOEC,MAPF;EAAA,IAOEA,MAPF,4BAOW,GAPX;EAAA,6BAQEC,YARF;EAAA,IAQEA,YARF,kCAQiB,IARjB;EAAA,+BASEC,cATF;EAAA,IASEA,cATF,oCASmB,OAAOb,KAAK,CAACc,eAAb,KAAiC,SAAjC,GAA6Cd,KAAK,CAACc,eAAnD,GAAqE,IATxF;EAAA,gCAUEC,eAVF;EAAA,IAUEA,eAVF,qCAUoB,IAVpB;EAAA,wBAWEC,OAXF;EAAA,IAWWC,WAXX,6BAWyB,MAXzB;EAAA,2BAYEC,UAZF;EAAA,IAYEA,UAZF,gCAYe,KAZf;EAAA,yBAaEC,QAbF;EAAA,IAaEA,QAbF,8BAaa,IAbb;EAAA,+BAcEC,cAdF;EAAA,IAcEA,cAdF,oCAcmB,EAdnB;EAAA,IAeEC,aAfF,QAeEA,aAfF;EAAA,0BAgBEC,SAhBF;EAAA,IAgBEA,SAhBF,+BAgBc,IAhBd;EAAA,0BAiBEC,SAjBF;EAAA,IAiBEA,SAjBF,+BAiBc,GAjBd;EAAA,IAkBEC,SAlBF,QAkBEA,SAlBF;EAAA,wBAmBEC,OAnBF;EAAA,IAmBEA,OAnBF,6BAmBY,CAnBZ;EAAA,iCAoBEC,gBApBF;EAAA,IAoBEA,gBApBF,sCAoBqB,KApBrB;EAAA,IAqBEC,SArBF,QAqBEA,QArBF;EAAA,IAsBEC,cAtBF,QAsBEA,cAtBF;EAAA,IAuBEC,WAvBF,QAuBEA,WAvBF;EAAA,8BAwBEC,aAxBF;EAAA,IAwBEA,aAxBF,mCAwBkB,KAxBlB;EAAA,IAyBEC,UAzBF,QAyBEA,UAzBF;EAAA,IA0BEC,cA1BF,QA0BEA,cA1BF;EAAA,IA2BKC,KA3BL;;EA6BA,IAAMC,IAAI,GAAG5B,QAAQ,CAClB6B,GADU,CACN,UAACC,IAAD;IAAA,OAAW5B,cAAc,GAAGA,cAAc,CAAC4B,IAAD,EAAO,KAAP,CAAjB,GAAiCA,IAA1D;EAAA,CADM,EAEVC,MAFU,CAEHC,OAFG,CAAb;EAGA,IAAMC,SAAS,GAAG9B,aAAa,CAC5B0B,GADe,CACX,UAACC,IAAD;IAAA,OAAW5B,cAAc,GAAGA,cAAc,CAAC4B,IAAD,EAAO,IAAP,CAAjB,GAAgCA,IAAzD;EAAA,CADW,EAEfC,MAFe,CAERC,OAFQ,CAAlB;;EAGA,kBAAwB,IAAAE,iBAAA,EAAWC,gBAAX,EAAoB;IAC1CC,QAAQ,EAAEtC,UADgC;IAE1CY,OAAO,EAAEC,WAFiC;IAG1Cc,UAAU,EAAVA,UAH0C;IAI1CpB,MAAM,EAANA,MAJ0C;IAK1CI,eAAe,EAAfA,eAL0C;IAM1CU,OAAO,EAAPA,OAN0C;IAO1CC,gBAAgB,EAAhBA,gBAP0C;IAQ1CiB,SAAS,EAAE,CAR+B;IAS1CC,gBAAgB,EAAE,CATwB;IAU1CtC,QAAQ,EAAE4B,IAVgC;IAW1CzB,aAAa,EAAE8B,SAX2B;IAY1CrB,UAAU,EAAVA,UAZ0C;IAa1C2B,QAAQ,EAAE;EAbgC,CAApB,CAAxB;EAAA;EAAA,IAAKC,KAAL;EAAA,IAAYC,QAAZ;;EAeA,IAAMC,SAAS,GAAG,IAAAC,aAAA,EAAuB,IAAvB,CAAlB;EACA,IAAMC,UAAU,GAAG,IAAAD,aAAA,EAAuB,IAAvB,CAAnB;EACA,IAAME,eAAe,GAAG,IAAAF,aAAA,EAAOrC,YAAP,CAAxB;EAEA,IAAAwC,0BAAA,EAAoBnD,GAApB,EAAyB;IAAA,0CAAY6C,KAAZ;EAAA,CAAzB;EACA,IAAAO,cAAA,EAAQ;IAAA,OAAOF,eAAe,CAACG,OAAhB,GAA0B1C,YAAjC;EAAA,CAAR,EAAwD,CAACA,YAAD,CAAxD;EACA,IAAA2C,gBAAA,EAAU,YAAM;IACd,IAAMC,SAAuB,GAAG,EAAhC;;IACA,IAAIR,SAAS,CAACM,OAAd,EAAuB;MACrBE,SAAS,CAACR,SAAV,GAAsBA,SAAS,CAACM,OAAV,IAAqBG,SAA3C;IACD;;IACDD,SAAS,CAACd,QAAV,GAAqBtC,UAAU,IAAI,EAAnC;IACAoD,SAAS,CAACX,QAAV,GAAqB,EAArB;;IACA,IAAIE,QAAJ,EAAc;MACZA,QAAQ,mEAAMD,KAAN,GAAgBU,SAAhB,EAAR;IACD,CATa,CAUd;;EACD,CAXD,EAWG,EAXH;EAaA,IAAME,GAAG,GAAG,CACVvD,SADU,EAEV,mBAFU,EAGVD,SAHU,EAIV4C,KAAK,CAAC9B,OAAN,aAAmBd,SAAnB,mBAAqC4C,KAAK,CAAC9B,OAA3C,IAAuD,IAJ7C,EAKV8B,KAAK,CAAC5B,UAAN,aAAsBhB,SAAtB,mBAA+C,IALrC,EAOTmC,MAPS,CAOFC,OAPE,EAQTqB,IARS,CAQJ,GARI,EASTC,IATS,EAAZ;EAWA,IAAAP,cAAA,EACE;IAAA,OAAMjD,UAAU,KAAK0C,KAAK,CAACJ,QAArB,IAAiCK,QAAQ,CAAC;MAAEL,QAAQ,EAAEtC,UAAU,IAAI;IAA1B,CAAD,CAA/C;EAAA,CADF,EAEE,CAACA,UAAD,EAAa0C,KAAK,CAACJ,QAAnB,CAFF,EAjFG,CAqFH;;EACA,IAAAW,cAAA,EAAQ;IAAA,OAAMpC,WAAW,KAAK6B,KAAK,CAAC9B,OAAtB,IAAiC+B,QAAQ,CAAC;MAAE/B,OAAO,EAAEC;IAAX,CAAD,CAA/C;EAAA,CAAR,EAAmF,CAACA,WAAD,CAAnF,EAtFG,CAuFH;;EACA,IAAAoC,cAAA,EAAQ;IAAA,OAAM5B,OAAO,KAAKqB,KAAK,CAACrB,OAAlB,IAA6BsB,QAAQ,CAAC;MAAEtB,OAAO,EAAPA;IAAF,CAAD,CAA3C;EAAA,CAAR,EAAkE,CAACA,OAAD,CAAlE;EACA,IAAA4B,cAAA,EACE;IAAA,OAAMtC,eAAe,KAAK+B,KAAK,CAAC/B,eAA1B,IAA6CgC,QAAQ,CAAC;MAAEhC,eAAe,EAAfA;IAAF,CAAD,CAA3D;EAAA,CADF,EAEE;EACA,CAACA,eAAD,CAHF,EAzFG,CA8FH;;EACA,IAAAsC,cAAA,EAAQ;IAAA,OAAM7B,SAAS,KAAKsB,KAAK,CAACtB,SAApB,IAAiCuB,QAAQ,CAAC;MAAEvB,SAAS,EAAEA;IAAb,CAAD,CAA/C;EAAA,CAAR,EAAmF,CAACA,SAAD,CAAnF;EACA,IAAA6B,cAAA,EACE;IAAA,OAAMnC,UAAU,KAAK4B,KAAK,CAAC5B,UAArB,IAAmC6B,QAAQ,CAAC;MAAE7B,UAAU,EAAEA;IAAd,CAAD,CAAjD;EAAA,CADF,EAEE;EACA,CAACA,UAAD,CAHF,EAhGG,CAqGH;;EACA,IAAAmC,cAAA,EAAQ;IAAA,OAAM1C,MAAM,KAAKmC,KAAK,CAACnC,MAAjB,IAA2BoC,QAAQ,CAAC;MAAEpC,MAAM,EAAEA;IAAV,CAAD,CAAzC;EAAA,CAAR,EAAuE,CAACA,MAAD,CAAvE;EACA,IAAA0C,cAAA,EACE;IAAA,OAAM1C,MAAM,KAAKmC,KAAK,CAACnC,MAAjB,IAA2BiB,cAA3B,IAA6CA,cAAc,CAACkB,KAAK,CAACnC,MAAP,EAAeA,MAAf,EAAuBmC,KAAvB,CAAjE;EAAA,CADF,EAEE,CAACnC,MAAD,EAASiB,cAAT,EAAyBkB,KAAzB,CAFF;EAKA,IAAMe,cAAc,GAAG,IAAAZ,aAAA,GAAvB;EACA,IAAMa,MAAM,GAAG,IAAAb,aAAA,EAA2B,SAA3B,CAAf;EACA,IAAMc,UAAU,GAAG,IAAAd,aAAA,EAAO,KAAP,CAAnB;EAEA,IAAAI,cAAA,EAAQ,YAAM;IACZQ,cAAc,CAACP,OAAf,GAAyBR,KAAK,CAACkB,YAA/B;;IACA,IAAIlB,KAAK,CAACkB,YAAV,EAAwB;MACtBlB,KAAK,CAACkB,YAAN,CAAmBC,gBAAnB,CAAoC,WAApC,EAAiD,YAAM;QACrDH,MAAM,CAACR,OAAP,GAAiB,MAAjB;MACD,CAFD;MAGAR,KAAK,CAACkB,YAAN,CAAmBC,gBAAnB,CAAoC,YAApC,EAAkD,YAAM;QACtDH,MAAM,CAACR,OAAP,GAAiB,SAAjB;MACD,CAFD;IAGD;EACF,CAVD,EAUG,CAACR,KAAK,CAACkB,YAAP,CAVH;;EAYA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACC,CAAD,EAAmCC,IAAnC,EAAgE;IACnF,IAAI,CAACjB,eAAe,CAACG,OAArB,EAA8B;IAC9B,IAAMe,WAAW,GAAGR,cAAc,CAACP,OAAnC;IACA,IAAMgB,UAAU,GAAGpB,UAAU,CAACI,OAAX,GAAqBJ,UAAU,CAACI,OAAhC,GAA0CG,SAA7D;;IACA,IAAI,CAACM,UAAU,CAACT,OAAhB,EAAyB;MACvBQ,MAAM,CAACR,OAAP,GAAiBc,IAAjB;MACAL,UAAU,CAACT,OAAX,GAAqB,IAArB;IACD;;IACD,IAAIe,WAAW,IAAIC,UAAnB,EAA+B;MAC7B,IAAMC,KAAK,GACT,CAACF,WAAW,CAACG,YAAZ,GAA2BH,WAAW,CAACI,YAAxC,KAAyDH,UAAU,CAACE,YAAX,GAA0BF,UAAU,CAACG,YAA9F,CADF;;MAEA,IAAIN,CAAC,CAACO,MAAF,KAAaL,WAAb,IAA4BP,MAAM,CAACR,OAAP,KAAmB,MAAnD,EAA2D;QACzDgB,UAAU,CAAC3B,SAAX,GAAuB0B,WAAW,CAAC1B,SAAZ,GAAwB4B,KAA/C;MACD;;MACD,IAAIJ,CAAC,CAACO,MAAF,KAAaJ,UAAb,IAA2BR,MAAM,CAACR,OAAP,KAAmB,SAAlD,EAA6D;QAC3De,WAAW,CAAC1B,SAAZ,GAAwB2B,UAAU,CAAC3B,SAAX,GAAuB4B,KAA/C;MACD;;MACD,IAAI5B,SAAS,GAAG,CAAhB;;MACA,IAAImB,MAAM,CAACR,OAAP,KAAmB,MAAvB,EAA+B;QAC7BX,SAAS,GAAG0B,WAAW,CAAC1B,SAAZ,IAAyB,CAArC;MACD,CAFD,MAEO,IAAImB,MAAM,CAACR,OAAP,KAAmB,SAAvB,EAAkC;QACvCX,SAAS,GAAG2B,UAAU,CAAC3B,SAAX,IAAwB,CAApC;MACD;;MACDI,QAAQ,CAAC;QAAEJ,SAAS,EAATA;MAAF,CAAD,CAAR;IACD;EACF,CAzBD;;EA2BA,IAAMgC,gBAAgB,aAAMzE,SAAN,sBAA2BkB,cAAc,CAACjB,SAAf,IAA4B,EAAvD,CAAtB;EACA,IAAIyE,SAAS,GAAG,IAAAvB,cAAA,EACd;IAAA,oBACE;MAAK,GAAG,EAAEH,UAAV;MAAsB,SAAS,EAAEyB,gBAAjC;MAAA,uBACE,qBAAC,gCAAD,oEACMvD,cADN;QAEE,QAAQ,EAAE,kBAAC+C,CAAD;UAAA,OAAOD,YAAY,CAACC,CAAD,EAAI,SAAJ,CAAnB;QAAA,CAFZ;QAGE,MAAM,EAAErB,KAAK,CAACJ,QAAN,IAAkB;MAH5B;IADF,EADF;EAAA,CADc,EAUd,CAACiC,gBAAD,EAAmBvD,cAAnB,EAAmC0B,KAAK,CAACJ,QAAzC,CAVc,CAAhB;EAYA,IAAM1B,OAAO,GAAG,CAAAe,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEf,OAAZ,MAAuBe,UAAvB,aAAuBA,UAAvB,uBAAuBA,UAAU,CAAEf,OAAZ,CAAoB8B,KAAK,CAACJ,QAAN,IAAkB,EAAtC,EAA0CI,KAA1C,EAAiDC,QAAjD,CAAvB,CAAhB;;EACA,IAAI/B,OAAO,iBAAI6D,iBAAA,CAAMC,cAAN,CAAqB9D,OAArB,CAAf,EAA8C;IAC5C4D,SAAS,gBACP;MAAK,SAAS,EAAED,gBAAhB;MAAkC,GAAG,EAAEzB,UAAvC;MAAmD,QAAQ,EAAE,kBAACiB,CAAD;QAAA,OAAOD,YAAY,CAACC,CAAD,EAAI,SAAJ,CAAnB;MAAA,CAA7D;MAAA,UACGnD;IADH,EADF;EAKD;;EAED,oBACE,qBAAC,sBAAD,CAAe,QAAf;IAAwB,KAAK,oEAAO8B,KAAP;MAAcC,QAAQ,EAARA;IAAd,EAA7B;IAAA,uBACE;MACE,GAAG,EAAEC,SADP;MAEE,SAAS,EAAEU;IAFb,GAGMzB,KAHN;MAIE,OAAO,EAAE,mBAAM;QACbc,QAAQ,CAAC;UAAEF,QAAQ,qCAAOpD,gBAAgB,CAACqD,KAAK,CAACD,QAAP,CAAvB;QAAV,CAAD,CAAR;MACD,CANH;MAOE,KAAK,oEACAZ,KAAK,CAAC8C,KADN;QAEHpE,MAAM,EAAEmC,KAAK,CAACnC,MAAN,IAAgB;MAFrB,EAPP;MAAA,WAYG,CAACkB,WAAD,IAAgB,CAACC,aAAjB,iBACC,qBAAC,mBAAD;QAAS,SAAS,EAAE5B,SAApB;QAA+B,QAAQ,EAAEiB,QAAzC;QAAmD,aAAa,EAAEW;MAAlE,EAbJ,eAeE;QAAK,SAAS,YAAK5B,SAAL,aAAd;QAAA,WACG,cAAc8E,IAAd,CAAmBlC,KAAK,CAAC9B,OAAN,IAAiB,EAApC,kBACC,qBAAC,oBAAD;UACE,SAAS,YAAKd,SAAL,WADX;UAEE,SAAS,EAAEA,SAFb;UAGE,SAAS,EAAEsB;QAHb,GAIMH,aAJN;UAKE,QAAQ,EAAE,kBAAC4D,GAAD,EAAS;YACjBtD,SAAQ,IAAIA,SAAQ,CAACsD,GAAG,CAACP,MAAJ,CAAWrE,KAAZ,EAAmB4E,GAAnB,EAAwBnC,KAAxB,CAApB;;YACA,IAAIzB,aAAa,IAAIA,aAAa,CAACM,QAAnC,EAA6C;cAC3CN,aAAa,CAACM,QAAd,CAAuBsD,GAAvB;YACD;UACF,CAVH;UAWE,cAAc,EAAE,CAAAlD,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEmD,QAAZ,KAAwBlD,cAX1C;UAYE,QAAQ,EAAE,kBAACmC,CAAD;YAAA,OAAOD,YAAY,CAACC,CAAD,EAAI,MAAJ,CAAnB;UAAA;QAZZ,GAFJ,EAiBG,iBAAiBa,IAAjB,CAAsBlC,KAAK,CAAC9B,OAAN,IAAiB,EAAvC,KAA8C4D,SAjBjD;MAAA,EAfF,EAkCG/D,cAAc,IAAI,CAACiC,KAAK,CAAC5B,UAAzB,iBACC,qBAAC,mBAAD;QACE,SAAS,EAAEhB,SADb;QAEE,MAAM,EAAE4C,KAAK,CAACnC,MAFhB;QAGE,SAAS,EAAEW,SAHb;QAIE,SAAS,EAAEC,SAJb;QAKE,QAAQ,EAAE,kBAAC4D,SAAD,EAAe;UACvBpC,QAAQ,CAAC;YAAEpC,MAAM,EAAEwE;UAAV,CAAD,CAAR;QACD;MAPH,EAnCJ,EA6CG,CAACtD,WAAD,IAAgBC,aAAhB,iBACC,qBAAC,mBAAD;QAAS,SAAS,EAAE5B,SAApB;QAA+B,QAAQ,EAAEiB,QAAzC;QAAmD,aAAa,EAAEW;MAAlE,EA9CJ;IAAA;EADF,EADF;AAqDD,CArOD;;AAuOA,IAAMsD,QAAQ,gBAAGP,iBAAA,CAAMQ,UAAN,CAA8CtF,gBAA9C,CAAjB;;AAMCqF,QAAD,CAAuBE,QAAvB,GAAkCC,gCAAlC;eAEeH,Q"
110
+ "mappings": "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"
107
111
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/react-md-editor",
3
- "version": "3.18.0",
3
+ "version": "3.18.1",
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
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties } from 'react';
1
+ import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle, CSSProperties, PropsWithRef } from 'react';
2
2
  import MarkdownPreview, { MarkdownPreviewProps } from '@uiw/react-markdown-preview';
3
3
  import TextArea, { ITextAreaProps } from './components/TextArea';
4
4
  import Toolbar from './components/Toolbar';
@@ -298,14 +298,11 @@ const InternalMDEditor = (
298
298
  };
299
299
 
300
300
  const previewClassName = `${prefixCls}-preview ${previewOptions.className || ''}`;
301
+ const handlePreviewScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => handleScroll(e, 'preview');
301
302
  let mdPreview = useMemo(
302
303
  () => (
303
304
  <div ref={previewRef} className={previewClassName}>
304
- <MarkdownPreview
305
- {...previewOptions}
306
- onScroll={(e) => handleScroll(e, 'preview')}
307
- source={state.markdown || ''}
308
- />
305
+ <MarkdownPreview {...previewOptions} onScroll={handlePreviewScroll} source={state.markdown || ''} />
309
306
  </div>
310
307
  ),
311
308
  [previewClassName, previewOptions, state.markdown],
@@ -313,26 +310,19 @@ const InternalMDEditor = (
313
310
  const preview = components?.preview && components?.preview(state.markdown || '', state, dispatch);
314
311
  if (preview && React.isValidElement(preview)) {
315
312
  mdPreview = (
316
- <div className={previewClassName} ref={previewRef} onScroll={(e) => handleScroll(e, 'preview')}>
313
+ <div className={previewClassName} ref={previewRef} onScroll={handlePreviewScroll}>
317
314
  {preview}
318
315
  </div>
319
316
  );
320
317
  }
321
318
 
319
+ const containerStyle = { ...other.style, height: state.height || '100%' };
320
+ const containerClick = () => dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });
321
+ const dragBarChange = (newHeight: number) => dispatch({ height: newHeight });
322
+
322
323
  return (
323
324
  <EditorContext.Provider value={{ ...state, dispatch }}>
324
- <div
325
- ref={container}
326
- className={cls}
327
- {...other}
328
- onClick={() => {
329
- dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });
330
- }}
331
- style={{
332
- ...other.style,
333
- height: state.height || '100%',
334
- }}
335
- >
325
+ <div ref={container} className={cls} {...other} onClick={containerClick} style={containerStyle}>
336
326
  {!hideToolbar && !toolbarBottom && (
337
327
  <Toolbar prefixCls={prefixCls} overflow={overflow} toolbarBottom={toolbarBottom} />
338
328
  )}
@@ -361,9 +351,7 @@ const InternalMDEditor = (
361
351
  height={state.height as number}
362
352
  maxHeight={maxHeight!}
363
353
  minHeight={minHeight!}
364
- onChange={(newHeight) => {
365
- dispatch({ height: newHeight });
366
- }}
354
+ onChange={dragBarChange}
367
355
  />
368
356
  )}
369
357
  {!hideToolbar && toolbarBottom && (
@@ -374,12 +362,10 @@ const InternalMDEditor = (
374
362
  );
375
363
  };
376
364
 
377
- const mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);
365
+ type Editor = React.FC<PropsWithRef<MDEditorProps>> & { Markdown: typeof MarkdownPreview };
378
366
 
379
- type MDEditor = typeof mdEditor & {
380
- Markdown: typeof MarkdownPreview;
381
- };
367
+ const mdEditor: Editor = React.forwardRef(InternalMDEditor) as unknown as Editor;
382
368
 
383
- (mdEditor as MDEditor).Markdown = MarkdownPreview;
369
+ mdEditor.Markdown = MarkdownPreview;
384
370
 
385
- export default mdEditor as MDEditor;
371
+ export default mdEditor;