@uiw/react-md-editor 3.9.5 → 3.9.8

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.js CHANGED
@@ -167,6 +167,12 @@ var InternalMDEditor = (props, ref) => {
167
167
  }
168
168
  };
169
169
 
170
+ var mdPreview = useMemo(() => /*#__PURE__*/_jsx(MarkdownPreview, _extends({}, previewOptions, {
171
+ onScroll: e => handleScroll(e, 'preview'),
172
+ ref: previewRef,
173
+ source: state.markdown || '',
174
+ className: prefixCls + "-preview " + (previewOptions.className || '')
175
+ })), [prefixCls, previewOptions, state.markdown]);
170
176
  return /*#__PURE__*/_jsx(EditorContext.Provider, {
171
177
  value: _extends({}, state, {
172
178
  dispatch
@@ -205,12 +211,7 @@ var InternalMDEditor = (props, ref) => {
205
211
  },
206
212
  renderTextarea: renderTextarea,
207
213
  onScroll: e => handleScroll(e, 'text')
208
- })), /(live|preview)/.test(state.preview || '') && /*#__PURE__*/_jsx(MarkdownPreview, _extends({}, previewOptions, {
209
- onScroll: e => handleScroll(e, 'preview'),
210
- ref: previewRef,
211
- source: state.markdown || '',
212
- className: prefixCls + "-preview " + (previewOptions.className || '')
213
- }))]
214
+ })), /(live|preview)/.test(state.preview || '') && mdPreview]
214
215
  }), visiableDragbar && !state.fullscreen && /*#__PURE__*/_jsx(DragBar, {
215
216
  prefixCls: prefixCls,
216
217
  height: state.height,
package/esm/Editor.js.map CHANGED
@@ -89,6 +89,7 @@
89
89
  "scrollHeight",
90
90
  "offsetHeight",
91
91
  "target",
92
+ "mdPreview",
92
93
  "style",
93
94
  "Number",
94
95
  "test",
@@ -98,8 +99,8 @@
98
99
  "forwardRef",
99
100
  "Markdown"
100
101
  ],
101
- "mappings": "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",
102
+ "mappings": "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",
102
103
  "sourcesContent": [
103
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps, MarkdownPreviewRef } from '@uiw/react-markdown-preview';\nimport TextArea, { ITextAreaProps } from './components/TextArea';\nimport Toolbar from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, ICommand } from './commands';\nimport { reducer, EditorContext, ContextStore, PreviewType } from './Context';\nimport './index.less';\n\nexport interface IProps {\n prefixCls?: string;\n className?: string;\n}\n\nexport interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, IProps {\n /**\n * The Markdown value.\n */\n value?: string;\n /**\n * Event handler for the `onChange` event.\n */\n onChange?: (value?: string) => void;\n /**\n * Can be used to make `Markdown Editor` focus itself on initialization. Defaults to on.\n * it will be set to true when either the source `textarea` is focused,\n * or it has an `autofocus` attribute and no other element is focused.\n */\n autoFocus?: ITextAreaProps['autoFocus'];\n /**\n * The height of the editor.\n */\n height?: number;\n /**\n * Custom toolbar heigth\n * @default 29px\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visiableDragbar?: boolean;\n /**\n * Show markdown preview.\n */\n preview?: PreviewType;\n /**\n * Full screen display editor.\n */\n fullscreen?: boolean;\n /**\n * Maximum drag height. `visiableDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visiableDragbar=true`\n */\n minHeight?: number;\n /**\n * This is reset [react-markdown](https://github.com/rexxars/react-markdown) settings.\n */\n previewOptions?: Omit<MarkdownPreviewProps, 'source'>;\n /**\n * Set the `textarea` related props.\n */\n textareaProps?: ITextAreaProps;\n /** Use div to replace TextArea or re-render TextArea */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * Disable editing area code highlighting. The value is `false`, which increases the editing speed.\n * @default true\n */\n highlightEnable?: boolean;\n /**\n * The number of characters to insert when pressing tab key.\n * Default `2` spaces.\n */\n tabSize?: number;\n /**\n * If `false`, the `tab` key inserts a tab character into the textarea. If `true`, the `tab` key executes default behavior e.g. focus shifts to next element.\n */\n defaultTabEnable?: boolean;\n /**\n * You can create your own commands or reuse existing commands.\n */\n commands?: ICommand[];\n /**\n * Filter or modify your commands.\n * https://github.com/uiwjs/react-md-editor/issues/296\n */\n commandsFilter?: (command: ICommand, isExtra: boolean) => false | ICommand;\n /**\n * You can create your own commands or reuse existing commands.\n */\n extraCommands?: ICommand[];\n /**\n * Hide the tool bar\n */\n hideToolbar?: boolean;\n /** Whether to enable scrolling */\n enableScroll?: boolean;\n}\n\nfunction setGroupPopFalse(data: Record<string, boolean> = {}) {\n Object.keys(data).forEach((keyname) => {\n data[keyname] = false;\n });\n return data;\n}\n\nconst InternalMDEditor = (\n props: MDEditorProps,\n ref?: ((instance: ContextStore) => void) | React.RefObject<ContextStore> | null,\n) => {\n const {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n extraCommands = getExtraCommands(),\n height = 200,\n toolbarHeight = 29,\n enableScroll = true,\n visiableDragbar = true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n const cmds = commands\n .map((item) => (commandsFilter ? commandsFilter(item, false) : item))\n .filter(Boolean) as ICommand[];\n const extraCmds = extraCommands\n .map((item) => (commandsFilter ? commandsFilter(item, true) : item))\n .filter(Boolean) as ICommand[];\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {},\n });\n const container = useRef<HTMLDivElement>(null);\n const previewRef = useRef<MarkdownPreviewRef>(null);\n const enableScrollRef = useRef(enableScroll);\n\n useImperativeHandle(ref, () => ({ ...state }));\n useMemo(() => (enableScrollRef.current = enableScroll), [enableScroll]);\n useEffect(() => {\n const stateInit: ContextStore = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch({ ...state, ...stateInit });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cls = [\n className,\n 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(() => height !== state.height && dispatch({ height: height }), [height]);\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\n const textareaDomRef = useRef<HTMLDivElement>();\n const active = useRef<'text' | 'preview'>('preview');\n const initScroll = useRef(false);\n\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>, type: 'text' | 'preview') => {\n if (!enableScrollRef.current) return;\n const textareaDom = textareaDomRef.current;\n const previewDom = previewRef.current ? previewRef.current.mdp.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n const scale =\n (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n let scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({ scrollTop });\n }\n };\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div\n ref={container}\n className={cls}\n {...other}\n onClick={() => {\n dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n }}\n style={{\n ...other.style,\n height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height,\n }}\n >\n {!hideToolbar && <Toolbar prefixCls={prefixCls} height={toolbarHeight} />}\n <div\n className={`${prefixCls}-content`}\n style={{\n height: state.fullscreen ? `calc(100% - ${toolbarHeight}px)` : Number(state.height) - toolbarHeight,\n }}\n >\n {/(edit|live)/.test(state.preview || '') && (\n <TextArea\n className={`${prefixCls}-input`}\n prefixCls={prefixCls}\n autoFocus={autoFocus}\n {...textareaProps}\n onChange={(evn) => {\n onChange && onChange(evn.target.value);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n }}\n renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && (\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n ref={previewRef}\n source={state.markdown || ''}\n className={`${prefixCls}-preview ${previewOptions.className || ''}`}\n />\n )}\n </div>\n {visiableDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\nconst mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);\n\ntype MDEditor = typeof mdEditor & {\n Markdown: typeof MarkdownPreview;\n};\n\n(mdEditor as MDEditor).Markdown = MarkdownPreview;\n\nexport default mdEditor as MDEditor;\n"
104
+ "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps, MarkdownPreviewRef } from '@uiw/react-markdown-preview';\nimport TextArea, { ITextAreaProps } from './components/TextArea';\nimport Toolbar from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, ICommand } from './commands';\nimport { reducer, EditorContext, ContextStore, PreviewType } from './Context';\nimport './index.less';\n\nexport interface IProps {\n prefixCls?: string;\n className?: string;\n}\n\nexport interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, IProps {\n /**\n * The Markdown value.\n */\n value?: string;\n /**\n * Event handler for the `onChange` event.\n */\n onChange?: (value?: string) => void;\n /**\n * Can be used to make `Markdown Editor` focus itself on initialization. Defaults to on.\n * it will be set to true when either the source `textarea` is focused,\n * or it has an `autofocus` attribute and no other element is focused.\n */\n autoFocus?: ITextAreaProps['autoFocus'];\n /**\n * The height of the editor.\n */\n height?: number;\n /**\n * Custom toolbar heigth\n * @default 29px\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visiableDragbar?: boolean;\n /**\n * Show markdown preview.\n */\n preview?: PreviewType;\n /**\n * Full screen display editor.\n */\n fullscreen?: boolean;\n /**\n * Maximum drag height. `visiableDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visiableDragbar=true`\n */\n minHeight?: number;\n /**\n * This is reset [react-markdown](https://github.com/rexxars/react-markdown) settings.\n */\n previewOptions?: Omit<MarkdownPreviewProps, 'source'>;\n /**\n * Set the `textarea` related props.\n */\n textareaProps?: ITextAreaProps;\n /** Use div to replace TextArea or re-render TextArea */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * Disable editing area code highlighting. The value is `false`, which increases the editing speed.\n * @default true\n */\n highlightEnable?: boolean;\n /**\n * The number of characters to insert when pressing tab key.\n * Default `2` spaces.\n */\n tabSize?: number;\n /**\n * If `false`, the `tab` key inserts a tab character into the textarea. If `true`, the `tab` key executes default behavior e.g. focus shifts to next element.\n */\n defaultTabEnable?: boolean;\n /**\n * You can create your own commands or reuse existing commands.\n */\n commands?: ICommand[];\n /**\n * Filter or modify your commands.\n * https://github.com/uiwjs/react-md-editor/issues/296\n */\n commandsFilter?: (command: ICommand, isExtra: boolean) => false | ICommand;\n /**\n * You can create your own commands or reuse existing commands.\n */\n extraCommands?: ICommand[];\n /**\n * Hide the tool bar\n */\n hideToolbar?: boolean;\n /** Whether to enable scrolling */\n enableScroll?: boolean;\n}\n\nfunction setGroupPopFalse(data: Record<string, boolean> = {}) {\n Object.keys(data).forEach((keyname) => {\n data[keyname] = false;\n });\n return data;\n}\n\nconst InternalMDEditor = (\n props: MDEditorProps,\n ref?: ((instance: ContextStore) => void) | React.RefObject<ContextStore> | null,\n) => {\n const {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n extraCommands = getExtraCommands(),\n height = 200,\n toolbarHeight = 29,\n enableScroll = true,\n visiableDragbar = true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n const cmds = commands\n .map((item) => (commandsFilter ? commandsFilter(item, false) : item))\n .filter(Boolean) as ICommand[];\n const extraCmds = extraCommands\n .map((item) => (commandsFilter ? commandsFilter(item, true) : item))\n .filter(Boolean) as ICommand[];\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {},\n });\n const container = useRef<HTMLDivElement>(null);\n const previewRef = useRef<MarkdownPreviewRef>(null);\n const enableScrollRef = useRef(enableScroll);\n\n useImperativeHandle(ref, () => ({ ...state }));\n useMemo(() => (enableScrollRef.current = enableScroll), [enableScroll]);\n useEffect(() => {\n const stateInit: ContextStore = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch({ ...state, ...stateInit });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cls = [\n className,\n 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(() => height !== state.height && dispatch({ height: height }), [height]);\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\n const textareaDomRef = useRef<HTMLDivElement>();\n const active = useRef<'text' | 'preview'>('preview');\n const initScroll = useRef(false);\n\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>, type: 'text' | 'preview') => {\n if (!enableScrollRef.current) return;\n const textareaDom = textareaDomRef.current;\n const previewDom = previewRef.current ? previewRef.current.mdp.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n const scale =\n (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n let scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({ scrollTop });\n }\n };\n\n const mdPreview = useMemo(\n () => (\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n ref={previewRef}\n source={state.markdown || ''}\n className={`${prefixCls}-preview ${previewOptions.className || ''}`}\n />\n ),\n [prefixCls, previewOptions, state.markdown],\n );\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div\n ref={container}\n className={cls}\n {...other}\n onClick={() => {\n dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n }}\n style={{\n ...other.style,\n height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height,\n }}\n >\n {!hideToolbar && <Toolbar prefixCls={prefixCls} height={toolbarHeight} />}\n <div\n className={`${prefixCls}-content`}\n style={{\n height: state.fullscreen ? `calc(100% - ${toolbarHeight}px)` : Number(state.height) - toolbarHeight,\n }}\n >\n {/(edit|live)/.test(state.preview || '') && (\n <TextArea\n className={`${prefixCls}-input`}\n prefixCls={prefixCls}\n autoFocus={autoFocus}\n {...textareaProps}\n onChange={(evn) => {\n onChange && onChange(evn.target.value);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n }}\n renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visiableDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\nconst mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);\n\ntype MDEditor = typeof mdEditor & {\n Markdown: typeof MarkdownPreview;\n};\n\n(mdEditor as MDEditor).Markdown = MarkdownPreview;\n\nexport default mdEditor as MDEditor;\n"
104
105
  ]
105
106
  }
@@ -77,7 +77,7 @@ export function ToolbarItems(props) {
77
77
  }), idx);
78
78
  }
79
79
 
80
- if (!item.keyCommand) return /*#__PURE__*/_jsx(Fragment, {});
80
+ if (!item.keyCommand) return /*#__PURE__*/_jsx(Fragment, {}, idx);
81
81
  var activeBtn = fullscreen && item.keyCommand === 'fullscreen' || item.keyCommand === 'preview' && preview === item.value;
82
82
  var childNode = item.children && typeof item.children === 'function' ? item.children({
83
83
  getState: () => commandOrchestrator.getState(),
@@ -70,8 +70,8 @@
70
70
  "isChild",
71
71
  "extraCommands"
72
72
  ],
73
- "mappings": "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",
73
+ "mappings": ";AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,UAA1B,EAAsCC,SAAtC,EAAiDC,MAAjD,QAA+D,OAA/D;AAEA,SAASC,aAAT,QAAyD,eAAzD;AAEA,OAAOC,KAAP,MAAkB,SAAlB;AACA;;;AASA,OAAO,SAASC,YAAT,CAAsBC,KAAtB,EAA4C;AACjD,MAAM;AAAEC,IAAAA;AAAF,MAAgBD,KAAtB;AACA,MAAM;AAAEE,IAAAA,UAAF;AAAcC,IAAAA,OAAd;AAAuBC,IAAAA,QAAQ,GAAG,EAAlC;AAAsCC,IAAAA,mBAAtC;AAA2DC,IAAAA;AAA3D,MAAwEZ,UAAU,CAACG,aAAD,CAAxF;AACA,MAAMU,gBAAgB,GAAGX,MAAM,CAAC,EAAD,CAA/B;;AAEA,WAASY,WAAT,CAAqBC,OAArB,EAAgDC,IAAhD,EAA+D;AAC7D,QAAI,CAACJ,QAAL,EAAe;AACf,QAAMK,KAAmB,GAAG;AAAEP,MAAAA,QAAQ,eAAOA,QAAP;AAAV,KAA5B;;AACA,QAAIK,OAAO,CAACG,UAAR,KAAuB,SAA3B,EAAsC;AACpCD,MAAAA,KAAK,CAACR,OAAN,GAAgBM,OAAO,CAACI,KAAxB;AACD;;AACD,QAAIJ,OAAO,CAACG,UAAR,KAAuB,YAA3B,EAAyC;AACvCD,MAAAA,KAAK,CAACT,UAAN,GAAmB,CAACA,UAApB;AACD;;AACD,QAAIF,KAAK,CAACc,QAAN,IAAkBL,OAAO,CAACG,UAAR,KAAuB,OAA7C,EAAsD;AACpDZ,MAAAA,KAAK,CAACc,QAAN,CAAeC,OAAf,CAAwBC,IAAD,IAAU;AAC/B,YAAIN,IAAI,KAAKM,IAAI,CAACC,SAAlB,EAA6B;AAC3BN,UAAAA,KAAK,CAACP,QAAN,CAAgBM,IAAhB,IAAyB,IAAzB;AACD,SAFD,MAEO,IAAIM,IAAI,CAACJ,UAAT,EAAqB;AAC1BD,UAAAA,KAAK,CAACP,QAAN,CAAgBY,IAAI,CAACC,SAArB,IAAmC,KAAnC;AACD;AACF,OAND;AAOD,KARD,MAQO,IAAIP,IAAI,IAAID,OAAO,CAACS,MAApB,EAA4B;AACjCC,MAAAA,MAAM,CAACC,IAAP,CAAYT,KAAK,CAACP,QAAN,IAAkB,EAA9B,EAAkCW,OAAlC,CAA2CM,OAAD,IAAa;AACrDV,QAAAA,KAAK,CAACP,QAAN,CAAgBiB,OAAhB,IAA2B,KAA3B;AACD,OAFD;AAGD;;AAED,QAAIF,MAAM,CAACC,IAAP,CAAYT,KAAZ,EAAmBW,MAAvB,EAA+B;AAC7BhB,MAAAA,QAAQ,cAAMK,KAAN,EAAR;AACD;;AACDN,IAAAA,mBAAmB,IAAIA,mBAAmB,CAACkB,cAApB,CAAmCd,OAAnC,CAAvB;AACD;;AAEDd,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI6B,QAAJ,EAAc;AACZ,UAAItB,UAAJ,EAAgB;AACd;AACAsB,QAAAA,QAAQ,CAACC,IAAT,CAAcC,KAAd,CAAoBC,QAApB,GAA+B,QAA/B;AACD,OAHD,MAGO;AACL;AACA,YAAI,CAACpB,gBAAgB,CAACqB,OAAtB,EAA+B;AAC7BrB,UAAAA,gBAAgB,CAACqB,OAAjB,GAA2BC,MAAM,CAACC,gBAAP,CAAwBN,QAAQ,CAACC,IAAjC,EAAuC,IAAvC,EAA6CE,QAAxE;AACD,SAJI,CAKL;;;AACAH,QAAAA,QAAQ,CAACC,IAAT,CAAcC,KAAd,CAAoBC,QAApB,GAA+BpB,gBAAgB,CAACqB,OAAhD;AACD;AACF;AACF,GAdQ,EAcN,CAAC1B,UAAD,EAAaK,gBAAb,CAdM,CAAT;AAgBA,sBACE;AAAA,cACG,CAACP,KAAK,CAACc,QAAN,IAAkB,EAAnB,EAAuBiB,GAAvB,CAA2B,CAACf,IAAD,EAAOgB,GAAP,KAAe;AACzC,UAAIhB,IAAI,CAACJ,UAAL,KAAoB,SAAxB,EAAmC;AACjC,4BAAO,wBAAkBI,IAAI,CAACiB,OAAvB;AAAgC,UAAA,SAAS,EAAKhC,SAAL;AAAzC,YAAS+B,GAAT,CAAP;AACD;;AACD,UAAI,CAAChB,IAAI,CAACJ,UAAV,EAAsB,oBAAO,KAAC,QAAD,MAAeoB,GAAf,CAAP;AACtB,UAAME,SAAS,GACZhC,UAAU,IAAIc,IAAI,CAACJ,UAAL,KAAoB,YAAnC,IAAqDI,IAAI,CAACJ,UAAL,KAAoB,SAApB,IAAiCT,OAAO,KAAKa,IAAI,CAACH,KADzG;AAEA,UAAMsB,SAAS,GACbnB,IAAI,CAACoB,QAAL,IAAiB,OAAOpB,IAAI,CAACoB,QAAZ,KAAyB,UAA1C,GACIpB,IAAI,CAACoB,QAAL,CAAc;AACZC,QAAAA,QAAQ,EAAE,MAAMhC,mBAAmB,CAAEgC,QAArB,EADJ;AAEZC,QAAAA,OAAO,EAAEjC,mBAAmB,GAAGA,mBAAmB,CAAEiC,OAAxB,GAAkCC,SAFlD;AAGZC,QAAAA,KAAK,EAAE,MAAMhC,WAAW,CAAC,EAAD,EAAKQ,IAAI,CAACC,SAAV,CAHZ;AAIZwB,QAAAA,OAAO,EAAE,MAAMjC,WAAW,CAAC;AAAEiC,UAAAA,OAAO,EAAEzB,IAAI,CAACyB;AAAhB,SAAD;AAJd,OAAd,CADJ,GAOIF,SARN;AASA,UAAMG,QAAQ,GAAGtC,QAAQ,IAAID,OAAZ,IAAuBA,OAAO,KAAK,SAAnC,IAAgD,CAAC,uBAAuBwC,IAAvB,CAA4B3B,IAAI,CAACJ,UAAjC,CAAlE;AACA,0BACE,yBAAkBI,IAAI,CAACiB,OAAvB;AAAgC,QAAA,SAAS,EAAEC,SAAS,cAAc,EAAlE;AAAA,mBACG,CAAClB,IAAI,CAAC4B,WAAN,IAAqB5B,IAAI,CAAC6B,IAD7B,EAEG7B,IAAI,CAAC4B,WAAL,iBACCpD,KAAK,CAACsD,aAAN,CACE,QADF;AAGIC,UAAAA,IAAI,EAAE,QAHV;AAIIL,UAAAA,QAJJ;AAKI,uBAAa1B,IAAI,CAACN;AALtB,WAMOM,IAAI,CAAC4B,WANZ;AAOII,UAAAA,OAAO,EAAGC,GAAD,IAA0D;AACjEA,YAAAA,GAAG,CAACC,eAAJ;AACA1C,YAAAA,WAAW,CAACQ,IAAD,EAAOA,IAAI,CAACC,SAAZ,CAAX;AACD;AAVL,YAYED,IAAI,CAAC6B,IAZP,CAHJ,EAiBG7B,IAAI,CAACoB,QAAL,iBACC,KAAC,KAAD;AACE,UAAA,SAAS,EAAEpB,IAAI,CAACC,SADlB;AAEE,UAAA,SAAS,EAAEhB,SAFb;AAGE,UAAA,QAAQ,EAAEkC,SAHZ;AAIE,UAAA,QAAQ,EAAEgB,KAAK,CAACC,OAAN,CAAcpC,IAAI,CAACoB,QAAnB,IAA+BpB,IAAI,CAACoB,QAApC,GAA+CG;AAJ3D,UAlBJ;AAAA,UAASP,GAAT,CADF;AA4BD,KA7CA;AADH,IADF;AAkDD;AAED,eAAe,SAASqB,OAAT,CAAiBrD,KAAjB,EAA4C;AAAA,MAA3BA,KAA2B;AAA3BA,IAAAA,KAA2B,GAAJ,EAAI;AAAA;;AACzD,MAAM;AAAEC,IAAAA,SAAF;AAAaqD,IAAAA,MAAM,GAAG,EAAtB;AAA0BC,IAAAA;AAA1B,MAAsCvD,KAA5C;AACA,MAAM;AAAEc,IAAAA,QAAF;AAAY0C,IAAAA;AAAZ,MAA8B9D,UAAU,CAACG,aAAD,CAA9C;AACA,sBACE;AAAK,IAAA,SAAS,EAAKI,SAAL,aAAd;AAAwC,IAAA,KAAK,EAAE;AAAEqD,MAAAA;AAAF,KAA/C;AAAA,4BACE,KAAC,YAAD,eAAkBtD,KAAlB;AAAyB,MAAA,QAAQ,EAAEA,KAAK,CAACc,QAAN,IAAkBA,QAAlB,IAA8B;AAAjE,OADF,EAEG,CAACyC,OAAD,iBAAY,KAAC,YAAD,eAAkBvD,KAAlB;AAAyB,MAAA,QAAQ,EAAEwD,aAAa,IAAI;AAApD,OAFf;AAAA,IADF;AAMD",
74
74
  "sourcesContent": [
75
- "import React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { IProps } from '../../Editor';\nimport { EditorContext, PreviewType, ContextStore } from '../../Context';\nimport { ICommand } from '../../commands';\nimport Child from './Child';\nimport './index.less';\n\nexport interface IToolbarProps extends IProps {\n height?: React.CSSProperties['height'];\n onCommand?: (command: ICommand<string>, groupName?: string) => void;\n commands?: ICommand<string>[];\n isChild?: boolean;\n}\n\nexport function ToolbarItems(props: IToolbarProps) {\n const { prefixCls } = props;\n const { fullscreen, preview, barPopup = {}, commandOrchestrator, dispatch } = useContext(EditorContext);\n const originalOverflow = useRef('');\n\n function handleClick(command: ICommand<string>, name?: string) {\n if (!dispatch) return;\n const state: ContextStore = { barPopup: { ...barPopup } };\n if (command.keyCommand === 'preview') {\n state.preview = command.value as PreviewType;\n }\n if (command.keyCommand === 'fullscreen') {\n state.fullscreen = !fullscreen;\n }\n if (props.commands && command.keyCommand === 'group') {\n props.commands.forEach((item) => {\n if (name === item.groupName) {\n state.barPopup![name!] = true;\n } else if (item.keyCommand) {\n state.barPopup![item.groupName!] = false;\n }\n });\n } else if (name || command.parent) {\n Object.keys(state.barPopup || {}).forEach((keyName) => {\n state.barPopup![keyName] = false;\n });\n }\n\n if (Object.keys(state).length) {\n dispatch({ ...state });\n }\n commandOrchestrator && commandOrchestrator.executeCommand(command);\n }\n\n useEffect(() => {\n if (document) {\n if (fullscreen) {\n // prevent scroll on fullscreen\n document.body.style.overflow = 'hidden';\n } else {\n // get the original overflow only the first time\n if (!originalOverflow.current) {\n originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n }\n // reset to the original overflow\n document.body.style.overflow = originalOverflow.current;\n }\n }\n }, [fullscreen, originalOverflow]);\n\n return (\n <ul>\n {(props.commands || []).map((item, idx) => {\n if (item.keyCommand === 'divider') {\n return <li key={idx} {...item.liProps} className={`${prefixCls}-toolbar-divider`} />;\n }\n if (!item.keyCommand) return <Fragment />;\n const activeBtn =\n (fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);\n const childNode =\n item.children && typeof item.children === 'function'\n ? item.children({\n getState: () => commandOrchestrator!.getState(),\n textApi: commandOrchestrator ? commandOrchestrator!.textApi : undefined,\n close: () => handleClick({}, item.groupName),\n execute: () => handleClick({ execute: item.execute }),\n })\n : undefined;\n const disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {!item.buttonProps && item.icon}\n {item.buttonProps &&\n React.createElement(\n 'button',\n {\n type: 'button',\n disabled,\n 'data-name': item.name,\n ...item.buttonProps,\n onClick: (evn: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n evn.stopPropagation();\n handleClick(item, item.groupName);\n },\n },\n item.icon,\n )}\n {item.children && (\n <Child\n groupName={item.groupName}\n prefixCls={prefixCls}\n children={childNode}\n commands={Array.isArray(item.children) ? item.children : undefined}\n />\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport default function Toolbar(props: IToolbarProps = {}) {\n const { prefixCls, height = 29, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n return (\n <div className={`${prefixCls}-toolbar`} style={{ height }}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
75
+ "import React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { IProps } from '../../Editor';\nimport { EditorContext, PreviewType, ContextStore } from '../../Context';\nimport { ICommand } from '../../commands';\nimport Child from './Child';\nimport './index.less';\n\nexport interface IToolbarProps extends IProps {\n height?: React.CSSProperties['height'];\n onCommand?: (command: ICommand<string>, groupName?: string) => void;\n commands?: ICommand<string>[];\n isChild?: boolean;\n}\n\nexport function ToolbarItems(props: IToolbarProps) {\n const { prefixCls } = props;\n const { fullscreen, preview, barPopup = {}, commandOrchestrator, dispatch } = useContext(EditorContext);\n const originalOverflow = useRef('');\n\n function handleClick(command: ICommand<string>, name?: string) {\n if (!dispatch) return;\n const state: ContextStore = { barPopup: { ...barPopup } };\n if (command.keyCommand === 'preview') {\n state.preview = command.value as PreviewType;\n }\n if (command.keyCommand === 'fullscreen') {\n state.fullscreen = !fullscreen;\n }\n if (props.commands && command.keyCommand === 'group') {\n props.commands.forEach((item) => {\n if (name === item.groupName) {\n state.barPopup![name!] = true;\n } else if (item.keyCommand) {\n state.barPopup![item.groupName!] = false;\n }\n });\n } else if (name || command.parent) {\n Object.keys(state.barPopup || {}).forEach((keyName) => {\n state.barPopup![keyName] = false;\n });\n }\n\n if (Object.keys(state).length) {\n dispatch({ ...state });\n }\n commandOrchestrator && commandOrchestrator.executeCommand(command);\n }\n\n useEffect(() => {\n if (document) {\n if (fullscreen) {\n // prevent scroll on fullscreen\n document.body.style.overflow = 'hidden';\n } else {\n // get the original overflow only the first time\n if (!originalOverflow.current) {\n originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n }\n // reset to the original overflow\n document.body.style.overflow = originalOverflow.current;\n }\n }\n }, [fullscreen, originalOverflow]);\n\n return (\n <ul>\n {(props.commands || []).map((item, idx) => {\n if (item.keyCommand === 'divider') {\n return <li key={idx} {...item.liProps} className={`${prefixCls}-toolbar-divider`} />;\n }\n if (!item.keyCommand) return <Fragment key={idx} />;\n const activeBtn =\n (fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);\n const childNode =\n item.children && typeof item.children === 'function'\n ? item.children({\n getState: () => commandOrchestrator!.getState(),\n textApi: commandOrchestrator ? commandOrchestrator!.textApi : undefined,\n close: () => handleClick({}, item.groupName),\n execute: () => handleClick({ execute: item.execute }),\n })\n : undefined;\n const disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {!item.buttonProps && item.icon}\n {item.buttonProps &&\n React.createElement(\n 'button',\n {\n type: 'button',\n disabled,\n 'data-name': item.name,\n ...item.buttonProps,\n onClick: (evn: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n evn.stopPropagation();\n handleClick(item, item.groupName);\n },\n },\n item.icon,\n )}\n {item.children && (\n <Child\n groupName={item.groupName}\n prefixCls={prefixCls}\n children={childNode}\n commands={Array.isArray(item.children) ? item.children : undefined}\n />\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport default function Toolbar(props: IToolbarProps = {}) {\n const { prefixCls, height = 29, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n return (\n <div className={`${prefixCls}-toolbar`} style={{ height }}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
76
76
  ]
77
77
  }
package/lib/Editor.js CHANGED
@@ -225,6 +225,16 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
225
225
  }
226
226
  };
227
227
 
228
+ var mdPreview = (0, _react.useMemo)(function () {
229
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMarkdownPreview.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, previewOptions), {}, {
230
+ onScroll: function onScroll(e) {
231
+ return handleScroll(e, 'preview');
232
+ },
233
+ ref: previewRef,
234
+ source: state.markdown || '',
235
+ className: "".concat(prefixCls, "-preview ").concat(previewOptions.className || '')
236
+ }));
237
+ }, [prefixCls, previewOptions, state.markdown]);
228
238
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Context.EditorContext.Provider, {
229
239
  value: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
230
240
  dispatch: dispatch
@@ -265,14 +275,7 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
265
275
  onScroll: function onScroll(e) {
266
276
  return handleScroll(e, 'text');
267
277
  }
268
- })), /(live|preview)/.test(state.preview || '') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMarkdownPreview.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, previewOptions), {}, {
269
- onScroll: function onScroll(e) {
270
- return handleScroll(e, 'preview');
271
- },
272
- ref: previewRef,
273
- source: state.markdown || '',
274
- className: "".concat(prefixCls, "-preview ").concat(previewOptions.className || '')
275
- }))]
278
+ })), /(live|preview)/.test(state.preview || '') && mdPreview]
276
279
  }), visiableDragbar && !state.fullscreen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DragBar.default, {
277
280
  prefixCls: prefixCls,
278
281
  height: state.height,
package/lib/Editor.js.map CHANGED
@@ -76,6 +76,7 @@
76
76
  "scrollHeight",
77
77
  "offsetHeight",
78
78
  "target",
79
+ "mdPreview",
79
80
  "style",
80
81
  "Number",
81
82
  "test",
@@ -87,8 +88,8 @@
87
88
  "Markdown",
88
89
  "MarkdownPreview"
89
90
  ],
90
- "mappings": "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",
91
+ "mappings": "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",
91
92
  "sourcesContent": [
92
- "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps, MarkdownPreviewRef } from '@uiw/react-markdown-preview';\nimport TextArea, { ITextAreaProps } from './components/TextArea';\nimport Toolbar from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, ICommand } from './commands';\nimport { reducer, EditorContext, ContextStore, PreviewType } from './Context';\nimport './index.less';\n\nexport interface IProps {\n prefixCls?: string;\n className?: string;\n}\n\nexport interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, IProps {\n /**\n * The Markdown value.\n */\n value?: string;\n /**\n * Event handler for the `onChange` event.\n */\n onChange?: (value?: string) => void;\n /**\n * Can be used to make `Markdown Editor` focus itself on initialization. Defaults to on.\n * it will be set to true when either the source `textarea` is focused,\n * or it has an `autofocus` attribute and no other element is focused.\n */\n autoFocus?: ITextAreaProps['autoFocus'];\n /**\n * The height of the editor.\n */\n height?: number;\n /**\n * Custom toolbar heigth\n * @default 29px\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visiableDragbar?: boolean;\n /**\n * Show markdown preview.\n */\n preview?: PreviewType;\n /**\n * Full screen display editor.\n */\n fullscreen?: boolean;\n /**\n * Maximum drag height. `visiableDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visiableDragbar=true`\n */\n minHeight?: number;\n /**\n * This is reset [react-markdown](https://github.com/rexxars/react-markdown) settings.\n */\n previewOptions?: Omit<MarkdownPreviewProps, 'source'>;\n /**\n * Set the `textarea` related props.\n */\n textareaProps?: ITextAreaProps;\n /** Use div to replace TextArea or re-render TextArea */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * Disable editing area code highlighting. The value is `false`, which increases the editing speed.\n * @default true\n */\n highlightEnable?: boolean;\n /**\n * The number of characters to insert when pressing tab key.\n * Default `2` spaces.\n */\n tabSize?: number;\n /**\n * If `false`, the `tab` key inserts a tab character into the textarea. If `true`, the `tab` key executes default behavior e.g. focus shifts to next element.\n */\n defaultTabEnable?: boolean;\n /**\n * You can create your own commands or reuse existing commands.\n */\n commands?: ICommand[];\n /**\n * Filter or modify your commands.\n * https://github.com/uiwjs/react-md-editor/issues/296\n */\n commandsFilter?: (command: ICommand, isExtra: boolean) => false | ICommand;\n /**\n * You can create your own commands or reuse existing commands.\n */\n extraCommands?: ICommand[];\n /**\n * Hide the tool bar\n */\n hideToolbar?: boolean;\n /** Whether to enable scrolling */\n enableScroll?: boolean;\n}\n\nfunction setGroupPopFalse(data: Record<string, boolean> = {}) {\n Object.keys(data).forEach((keyname) => {\n data[keyname] = false;\n });\n return data;\n}\n\nconst InternalMDEditor = (\n props: MDEditorProps,\n ref?: ((instance: ContextStore) => void) | React.RefObject<ContextStore> | null,\n) => {\n const {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n extraCommands = getExtraCommands(),\n height = 200,\n toolbarHeight = 29,\n enableScroll = true,\n visiableDragbar = true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n const cmds = commands\n .map((item) => (commandsFilter ? commandsFilter(item, false) : item))\n .filter(Boolean) as ICommand[];\n const extraCmds = extraCommands\n .map((item) => (commandsFilter ? commandsFilter(item, true) : item))\n .filter(Boolean) as ICommand[];\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {},\n });\n const container = useRef<HTMLDivElement>(null);\n const previewRef = useRef<MarkdownPreviewRef>(null);\n const enableScrollRef = useRef(enableScroll);\n\n useImperativeHandle(ref, () => ({ ...state }));\n useMemo(() => (enableScrollRef.current = enableScroll), [enableScroll]);\n useEffect(() => {\n const stateInit: ContextStore = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch({ ...state, ...stateInit });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cls = [\n className,\n 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(() => height !== state.height && dispatch({ height: height }), [height]);\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\n const textareaDomRef = useRef<HTMLDivElement>();\n const active = useRef<'text' | 'preview'>('preview');\n const initScroll = useRef(false);\n\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>, type: 'text' | 'preview') => {\n if (!enableScrollRef.current) return;\n const textareaDom = textareaDomRef.current;\n const previewDom = previewRef.current ? previewRef.current.mdp.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n const scale =\n (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n let scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({ scrollTop });\n }\n };\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div\n ref={container}\n className={cls}\n {...other}\n onClick={() => {\n dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n }}\n style={{\n ...other.style,\n height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height,\n }}\n >\n {!hideToolbar && <Toolbar prefixCls={prefixCls} height={toolbarHeight} />}\n <div\n className={`${prefixCls}-content`}\n style={{\n height: state.fullscreen ? `calc(100% - ${toolbarHeight}px)` : Number(state.height) - toolbarHeight,\n }}\n >\n {/(edit|live)/.test(state.preview || '') && (\n <TextArea\n className={`${prefixCls}-input`}\n prefixCls={prefixCls}\n autoFocus={autoFocus}\n {...textareaProps}\n onChange={(evn) => {\n onChange && onChange(evn.target.value);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n }}\n renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && (\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n ref={previewRef}\n source={state.markdown || ''}\n className={`${prefixCls}-preview ${previewOptions.className || ''}`}\n />\n )}\n </div>\n {visiableDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\nconst mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);\n\ntype MDEditor = typeof mdEditor & {\n Markdown: typeof MarkdownPreview;\n};\n\n(mdEditor as MDEditor).Markdown = MarkdownPreview;\n\nexport default mdEditor as MDEditor;\n"
93
+ "import React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview, { MarkdownPreviewProps, MarkdownPreviewRef } from '@uiw/react-markdown-preview';\nimport TextArea, { ITextAreaProps } from './components/TextArea';\nimport Toolbar from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, ICommand } from './commands';\nimport { reducer, EditorContext, ContextStore, PreviewType } from './Context';\nimport './index.less';\n\nexport interface IProps {\n prefixCls?: string;\n className?: string;\n}\n\nexport interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, IProps {\n /**\n * The Markdown value.\n */\n value?: string;\n /**\n * Event handler for the `onChange` event.\n */\n onChange?: (value?: string) => void;\n /**\n * Can be used to make `Markdown Editor` focus itself on initialization. Defaults to on.\n * it will be set to true when either the source `textarea` is focused,\n * or it has an `autofocus` attribute and no other element is focused.\n */\n autoFocus?: ITextAreaProps['autoFocus'];\n /**\n * The height of the editor.\n */\n height?: number;\n /**\n * Custom toolbar heigth\n * @default 29px\n */\n toolbarHeight?: number;\n /**\n * Show drag and drop tool. Set the height of the editor.\n */\n visiableDragbar?: boolean;\n /**\n * Show markdown preview.\n */\n preview?: PreviewType;\n /**\n * Full screen display editor.\n */\n fullscreen?: boolean;\n /**\n * Maximum drag height. `visiableDragbar=true`\n */\n maxHeight?: number;\n /**\n * Minimum drag height. `visiableDragbar=true`\n */\n minHeight?: number;\n /**\n * This is reset [react-markdown](https://github.com/rexxars/react-markdown) settings.\n */\n previewOptions?: Omit<MarkdownPreviewProps, 'source'>;\n /**\n * Set the `textarea` related props.\n */\n textareaProps?: ITextAreaProps;\n /** Use div to replace TextArea or re-render TextArea */\n renderTextarea?: ITextAreaProps['renderTextarea'];\n /**\n * Disable editing area code highlighting. The value is `false`, which increases the editing speed.\n * @default true\n */\n highlightEnable?: boolean;\n /**\n * The number of characters to insert when pressing tab key.\n * Default `2` spaces.\n */\n tabSize?: number;\n /**\n * If `false`, the `tab` key inserts a tab character into the textarea. If `true`, the `tab` key executes default behavior e.g. focus shifts to next element.\n */\n defaultTabEnable?: boolean;\n /**\n * You can create your own commands or reuse existing commands.\n */\n commands?: ICommand[];\n /**\n * Filter or modify your commands.\n * https://github.com/uiwjs/react-md-editor/issues/296\n */\n commandsFilter?: (command: ICommand, isExtra: boolean) => false | ICommand;\n /**\n * You can create your own commands or reuse existing commands.\n */\n extraCommands?: ICommand[];\n /**\n * Hide the tool bar\n */\n hideToolbar?: boolean;\n /** Whether to enable scrolling */\n enableScroll?: boolean;\n}\n\nfunction setGroupPopFalse(data: Record<string, boolean> = {}) {\n Object.keys(data).forEach((keyname) => {\n data[keyname] = false;\n });\n return data;\n}\n\nconst InternalMDEditor = (\n props: MDEditorProps,\n ref?: ((instance: ContextStore) => void) | React.RefObject<ContextStore> | null,\n) => {\n const {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n extraCommands = getExtraCommands(),\n height = 200,\n toolbarHeight = 29,\n enableScroll = true,\n visiableDragbar = true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n const cmds = commands\n .map((item) => (commandsFilter ? commandsFilter(item, false) : item))\n .filter(Boolean) as ICommand[];\n const extraCmds = extraCommands\n .map((item) => (commandsFilter ? commandsFilter(item, true) : item))\n .filter(Boolean) as ICommand[];\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {},\n });\n const container = useRef<HTMLDivElement>(null);\n const previewRef = useRef<MarkdownPreviewRef>(null);\n const enableScrollRef = useRef(enableScroll);\n\n useImperativeHandle(ref, () => ({ ...state }));\n useMemo(() => (enableScrollRef.current = enableScroll), [enableScroll]);\n useEffect(() => {\n const stateInit: ContextStore = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch({ ...state, ...stateInit });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const cls = [\n className,\n 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(() => height !== state.height && dispatch({ height: height }), [height]);\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\n const textareaDomRef = useRef<HTMLDivElement>();\n const active = useRef<'text' | 'preview'>('preview');\n const initScroll = useRef(false);\n\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>, type: 'text' | 'preview') => {\n if (!enableScrollRef.current) return;\n const textareaDom = textareaDomRef.current;\n const previewDom = previewRef.current ? previewRef.current.mdp.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n const scale =\n (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n let scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({ scrollTop });\n }\n };\n\n const mdPreview = useMemo(\n () => (\n <MarkdownPreview\n {...previewOptions}\n onScroll={(e) => handleScroll(e, 'preview')}\n ref={previewRef}\n source={state.markdown || ''}\n className={`${prefixCls}-preview ${previewOptions.className || ''}`}\n />\n ),\n [prefixCls, previewOptions, state.markdown],\n );\n\n return (\n <EditorContext.Provider value={{ ...state, dispatch }}>\n <div\n ref={container}\n className={cls}\n {...other}\n onClick={() => {\n dispatch({ barPopup: { ...setGroupPopFalse(state.barPopup) } });\n }}\n style={{\n ...other.style,\n height: state.fullscreen ? '100%' : hideToolbar ? Number(state.height) - toolbarHeight : state.height,\n }}\n >\n {!hideToolbar && <Toolbar prefixCls={prefixCls} height={toolbarHeight} />}\n <div\n className={`${prefixCls}-content`}\n style={{\n height: state.fullscreen ? `calc(100% - ${toolbarHeight}px)` : Number(state.height) - toolbarHeight,\n }}\n >\n {/(edit|live)/.test(state.preview || '') && (\n <TextArea\n className={`${prefixCls}-input`}\n prefixCls={prefixCls}\n autoFocus={autoFocus}\n {...textareaProps}\n onChange={(evn) => {\n onChange && onChange(evn.target.value);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n }}\n renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && mdPreview}\n </div>\n {visiableDragbar && !state.fullscreen && (\n <DragBar\n prefixCls={prefixCls}\n height={state.height as number}\n maxHeight={maxHeight!}\n minHeight={minHeight!}\n onChange={(newHeight) => {\n dispatch({ height: newHeight });\n }}\n />\n )}\n </div>\n </EditorContext.Provider>\n );\n};\n\nconst mdEditor = React.forwardRef<ContextStore, MDEditorProps>(InternalMDEditor);\n\ntype MDEditor = typeof mdEditor & {\n Markdown: typeof MarkdownPreview;\n};\n\n(mdEditor as MDEditor).Markdown = MarkdownPreview;\n\nexport default mdEditor as MDEditor;\n"
93
94
  ]
94
95
  }
@@ -92,7 +92,7 @@ function ToolbarItems(props) {
92
92
  }), idx);
93
93
  }
94
94
 
95
- if (!item.keyCommand) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {});
95
+ if (!item.keyCommand) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {}, idx);
96
96
  var activeBtn = fullscreen && item.keyCommand === 'fullscreen' || item.keyCommand === 'preview' && preview === item.value;
97
97
  var childNode = item.children && typeof item.children === 'function' ? item.children({
98
98
  getState: function getState() {
@@ -65,8 +65,8 @@
65
65
  "isChild",
66
66
  "extraCommands"
67
67
  ],
68
- "mappings": "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",
68
+ "mappings": "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",
69
69
  "sourcesContent": [
70
- "import React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { IProps } from '../../Editor';\nimport { EditorContext, PreviewType, ContextStore } from '../../Context';\nimport { ICommand } from '../../commands';\nimport Child from './Child';\nimport './index.less';\n\nexport interface IToolbarProps extends IProps {\n height?: React.CSSProperties['height'];\n onCommand?: (command: ICommand<string>, groupName?: string) => void;\n commands?: ICommand<string>[];\n isChild?: boolean;\n}\n\nexport function ToolbarItems(props: IToolbarProps) {\n const { prefixCls } = props;\n const { fullscreen, preview, barPopup = {}, commandOrchestrator, dispatch } = useContext(EditorContext);\n const originalOverflow = useRef('');\n\n function handleClick(command: ICommand<string>, name?: string) {\n if (!dispatch) return;\n const state: ContextStore = { barPopup: { ...barPopup } };\n if (command.keyCommand === 'preview') {\n state.preview = command.value as PreviewType;\n }\n if (command.keyCommand === 'fullscreen') {\n state.fullscreen = !fullscreen;\n }\n if (props.commands && command.keyCommand === 'group') {\n props.commands.forEach((item) => {\n if (name === item.groupName) {\n state.barPopup![name!] = true;\n } else if (item.keyCommand) {\n state.barPopup![item.groupName!] = false;\n }\n });\n } else if (name || command.parent) {\n Object.keys(state.barPopup || {}).forEach((keyName) => {\n state.barPopup![keyName] = false;\n });\n }\n\n if (Object.keys(state).length) {\n dispatch({ ...state });\n }\n commandOrchestrator && commandOrchestrator.executeCommand(command);\n }\n\n useEffect(() => {\n if (document) {\n if (fullscreen) {\n // prevent scroll on fullscreen\n document.body.style.overflow = 'hidden';\n } else {\n // get the original overflow only the first time\n if (!originalOverflow.current) {\n originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n }\n // reset to the original overflow\n document.body.style.overflow = originalOverflow.current;\n }\n }\n }, [fullscreen, originalOverflow]);\n\n return (\n <ul>\n {(props.commands || []).map((item, idx) => {\n if (item.keyCommand === 'divider') {\n return <li key={idx} {...item.liProps} className={`${prefixCls}-toolbar-divider`} />;\n }\n if (!item.keyCommand) return <Fragment />;\n const activeBtn =\n (fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);\n const childNode =\n item.children && typeof item.children === 'function'\n ? item.children({\n getState: () => commandOrchestrator!.getState(),\n textApi: commandOrchestrator ? commandOrchestrator!.textApi : undefined,\n close: () => handleClick({}, item.groupName),\n execute: () => handleClick({ execute: item.execute }),\n })\n : undefined;\n const disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {!item.buttonProps && item.icon}\n {item.buttonProps &&\n React.createElement(\n 'button',\n {\n type: 'button',\n disabled,\n 'data-name': item.name,\n ...item.buttonProps,\n onClick: (evn: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n evn.stopPropagation();\n handleClick(item, item.groupName);\n },\n },\n item.icon,\n )}\n {item.children && (\n <Child\n groupName={item.groupName}\n prefixCls={prefixCls}\n children={childNode}\n commands={Array.isArray(item.children) ? item.children : undefined}\n />\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport default function Toolbar(props: IToolbarProps = {}) {\n const { prefixCls, height = 29, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n return (\n <div className={`${prefixCls}-toolbar`} style={{ height }}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
70
+ "import React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { IProps } from '../../Editor';\nimport { EditorContext, PreviewType, ContextStore } from '../../Context';\nimport { ICommand } from '../../commands';\nimport Child from './Child';\nimport './index.less';\n\nexport interface IToolbarProps extends IProps {\n height?: React.CSSProperties['height'];\n onCommand?: (command: ICommand<string>, groupName?: string) => void;\n commands?: ICommand<string>[];\n isChild?: boolean;\n}\n\nexport function ToolbarItems(props: IToolbarProps) {\n const { prefixCls } = props;\n const { fullscreen, preview, barPopup = {}, commandOrchestrator, dispatch } = useContext(EditorContext);\n const originalOverflow = useRef('');\n\n function handleClick(command: ICommand<string>, name?: string) {\n if (!dispatch) return;\n const state: ContextStore = { barPopup: { ...barPopup } };\n if (command.keyCommand === 'preview') {\n state.preview = command.value as PreviewType;\n }\n if (command.keyCommand === 'fullscreen') {\n state.fullscreen = !fullscreen;\n }\n if (props.commands && command.keyCommand === 'group') {\n props.commands.forEach((item) => {\n if (name === item.groupName) {\n state.barPopup![name!] = true;\n } else if (item.keyCommand) {\n state.barPopup![item.groupName!] = false;\n }\n });\n } else if (name || command.parent) {\n Object.keys(state.barPopup || {}).forEach((keyName) => {\n state.barPopup![keyName] = false;\n });\n }\n\n if (Object.keys(state).length) {\n dispatch({ ...state });\n }\n commandOrchestrator && commandOrchestrator.executeCommand(command);\n }\n\n useEffect(() => {\n if (document) {\n if (fullscreen) {\n // prevent scroll on fullscreen\n document.body.style.overflow = 'hidden';\n } else {\n // get the original overflow only the first time\n if (!originalOverflow.current) {\n originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n }\n // reset to the original overflow\n document.body.style.overflow = originalOverflow.current;\n }\n }\n }, [fullscreen, originalOverflow]);\n\n return (\n <ul>\n {(props.commands || []).map((item, idx) => {\n if (item.keyCommand === 'divider') {\n return <li key={idx} {...item.liProps} className={`${prefixCls}-toolbar-divider`} />;\n }\n if (!item.keyCommand) return <Fragment key={idx} />;\n const activeBtn =\n (fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);\n const childNode =\n item.children && typeof item.children === 'function'\n ? item.children({\n getState: () => commandOrchestrator!.getState(),\n textApi: commandOrchestrator ? commandOrchestrator!.textApi : undefined,\n close: () => handleClick({}, item.groupName),\n execute: () => handleClick({ execute: item.execute }),\n })\n : undefined;\n const disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n return (\n <li key={idx} {...item.liProps} className={activeBtn ? `active` : ''}>\n {!item.buttonProps && item.icon}\n {item.buttonProps &&\n React.createElement(\n 'button',\n {\n type: 'button',\n disabled,\n 'data-name': item.name,\n ...item.buttonProps,\n onClick: (evn: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n evn.stopPropagation();\n handleClick(item, item.groupName);\n },\n },\n item.icon,\n )}\n {item.children && (\n <Child\n groupName={item.groupName}\n prefixCls={prefixCls}\n children={childNode}\n commands={Array.isArray(item.children) ? item.children : undefined}\n />\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport default function Toolbar(props: IToolbarProps = {}) {\n const { prefixCls, height = 29, isChild } = props;\n const { commands, extraCommands } = useContext(EditorContext);\n return (\n <div className={`${prefixCls}-toolbar`} style={{ height }}>\n <ToolbarItems {...props} commands={props.commands || commands || []} />\n {!isChild && <ToolbarItems {...props} commands={extraCommands || []} />}\n </div>\n );\n}\n"
71
71
  ]
72
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/react-md-editor",
3
- "version": "3.9.5",
3
+ "version": "3.9.8",
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>",
@@ -9,13 +9,13 @@
9
9
  "scripts": {
10
10
  "prepare": "husky install && npm run build",
11
11
  "released": "npm run build && npm run doc",
12
- "bundle": "kkt build --bundle",
13
- "bundle:min": "kkt build --bundle --mini --no-emptyDir",
14
12
  "doc": "kkt build --app-src ./website",
15
13
  "start": "kkt start --app-src ./website",
16
14
  "css:build": "compile-less -d src -o esm",
17
15
  "css:watch": "compile-less -d src -o esm --watch",
18
16
  "css:build:dist": "compile-less -d src --combine markdown-editor.css --rm-global",
17
+ "bundle": "ncc build src/index.tsx --target web --filename mdeditor",
18
+ "bundle:min": "ncc build src/index.tsx --target web --filename mdeditor --minify",
19
19
  "watch": "tsbb watch & npm run css:watch",
20
20
  "build": "tsbb build && npm run css:build && npm run css:build:dist",
21
21
  "test": "tsbb test --env=jsdom",
@@ -40,34 +40,34 @@
40
40
  "react-dom": ">=16.8.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@kkt/less-modules": "7.0.7",
44
- "@kkt/raw-modules": "7.0.7",
45
- "@kkt/react-library": "7.0.7",
46
- "@kkt/scope-plugin-options": "7.0.7",
47
- "@types/katex": "0.11.1",
48
- "@types/react": "17.0.38",
49
- "@types/react-dom": "17.0.11",
50
- "@types/react-test-renderer": "17.0.1",
51
- "@uiw/react-github-corners": "1.5.3",
52
- "@uiw/react-codesandbox": "1.1.4",
53
- "@uiw/react-shields": "1.1.2",
54
- "compile-less-cli": "1.8.11",
55
- "katex": "0.15.2",
56
- "husky": "7.0.4",
57
- "kkt": "7.0.7",
58
- "lint-staged": "12.3.2",
59
- "prettier": "2.5.1",
60
- "react": "17.0.2",
61
- "react-dom": "17.0.2",
62
- "react-test-renderer": "17.0.2",
63
- "source-map-explorer": "2.5.2",
64
- "tsbb": "3.5.5"
43
+ "@kkt/less-modules": "~7.1.1",
44
+ "@kkt/ncc": "~1.0.8",
45
+ "@kkt/raw-modules": "~7.1.1",
46
+ "@kkt/scope-plugin-options": "~7.1.1",
47
+ "@types/katex": "~0.11.1",
48
+ "@types/react": "~17.0.39",
49
+ "@types/react-dom": "~17.0.11",
50
+ "@types/react-test-renderer": "~17.0.1",
51
+ "@uiw/react-github-corners": "~1.5.3",
52
+ "@uiw/react-codesandbox": "~1.1.4",
53
+ "@uiw/react-shields": "~1.1.2",
54
+ "compile-less-cli": "~1.8.11",
55
+ "katex": "~0.15.2",
56
+ "husky": "~7.0.4",
57
+ "kkt": "~7.1.5",
58
+ "lint-staged": "~12.3.4",
59
+ "prettier": "~2.5.1",
60
+ "react": "~17.0.2",
61
+ "react-dom": "~17.0.2",
62
+ "react-test-renderer": "~17.0.2",
63
+ "source-map-explorer": "~2.5.2",
64
+ "tsbb": "~3.7.0"
65
65
  },
66
66
  "dependencies": {
67
67
  "@babel/runtime": "^7.14.6",
68
- "@uiw/react-markdown-preview": "3.4.7",
69
- "rehype-sanitize": "5.0.1",
70
- "rehype": "12.0.0"
68
+ "@uiw/react-markdown-preview": "~3.4.7",
69
+ "rehype-sanitize": "~5.0.1",
70
+ "rehype": "~12.0.1"
71
71
  },
72
72
  "keywords": [
73
73
  "react",
package/src/Editor.tsx CHANGED
@@ -253,6 +253,19 @@ const InternalMDEditor = (
253
253
  }
254
254
  };
255
255
 
256
+ const mdPreview = useMemo(
257
+ () => (
258
+ <MarkdownPreview
259
+ {...previewOptions}
260
+ onScroll={(e) => handleScroll(e, 'preview')}
261
+ ref={previewRef}
262
+ source={state.markdown || ''}
263
+ className={`${prefixCls}-preview ${previewOptions.className || ''}`}
264
+ />
265
+ ),
266
+ [prefixCls, previewOptions, state.markdown],
267
+ );
268
+
256
269
  return (
257
270
  <EditorContext.Provider value={{ ...state, dispatch }}>
258
271
  <div
@@ -290,15 +303,7 @@ const InternalMDEditor = (
290
303
  onScroll={(e) => handleScroll(e, 'text')}
291
304
  />
292
305
  )}
293
- {/(live|preview)/.test(state.preview || '') && (
294
- <MarkdownPreview
295
- {...previewOptions}
296
- onScroll={(e) => handleScroll(e, 'preview')}
297
- ref={previewRef}
298
- source={state.markdown || ''}
299
- className={`${prefixCls}-preview ${previewOptions.className || ''}`}
300
- />
301
- )}
306
+ {/(live|preview)/.test(state.preview || '') && mdPreview}
302
307
  </div>
303
308
  {visiableDragbar && !state.fullscreen && (
304
309
  <DragBar
@@ -68,7 +68,7 @@ export function ToolbarItems(props: IToolbarProps) {
68
68
  if (item.keyCommand === 'divider') {
69
69
  return <li key={idx} {...item.liProps} className={`${prefixCls}-toolbar-divider`} />;
70
70
  }
71
- if (!item.keyCommand) return <Fragment />;
71
+ if (!item.keyCommand) return <Fragment key={idx} />;
72
72
  const activeBtn =
73
73
  (fullscreen && item.keyCommand === 'fullscreen') || (item.keyCommand === 'preview' && preview === item.value);
74
74
  const childNode =