@uiw/react-md-editor 3.6.2 → 3.6.6
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/README.md +6 -4
- package/esm/Editor.js +1 -1
- package/esm/Editor.js.map +2 -2
- package/lib/Context.js +1 -1
- package/lib/Editor.js +2 -1
- package/lib/Editor.js.map +2 -2
- package/lib/commands/index.js +49 -48
- package/lib/commands/index.js.map +1 -1
- package/lib/commands/list.js +2 -1
- package/lib/commands/list.js.map +1 -1
- package/lib/commands/preview.js +1 -1
- package/lib/components/DragBar/index.js +1 -0
- package/lib/components/TextArea/Markdown.js +2 -0
- package/lib/components/TextArea/Textarea.js +2 -0
- package/lib/components/TextArea/handleKeyDown.js +2 -0
- package/lib/components/TextArea/index.js +2 -0
- package/lib/components/TextArea/shortcuts.js +2 -0
- package/lib/components/Toolbar/Child.js +2 -0
- package/lib/index.js +1 -1
- package/lib/utils/markdownUtils.js +2 -2
- package/package.json +11 -20
- package/src/Editor.tsx +2 -2
package/README.md
CHANGED
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
<a href="https://bundlephobia.com/package/@uiw/react-md-editor" target="__blank">
|
|
24
24
|
<img alt="npm bundle size" src="https://img.shields.io/bundlephobia/minzip/@uiw/react-md-editor">
|
|
25
25
|
</a>
|
|
26
|
-
<a href="https://
|
|
27
|
-
<img alt="Coverage Status" src="https://
|
|
26
|
+
<a href="https://uiwjs.github.io/react-md-editor/coverage/lcov-report" target="__blank">
|
|
27
|
+
<img alt="Coverage Status" src="https://uiwjs.github.io/react-md-editor/coverage/badges.svg" />
|
|
28
28
|
</a>
|
|
29
29
|
</p>
|
|
30
30
|
|
|
@@ -367,16 +367,18 @@ module.exports = removeImports({});
|
|
|
367
367
|
import "@uiw/react-md-editor/markdown-editor.css";
|
|
368
368
|
import "@uiw/react-markdown-preview/markdown.css";
|
|
369
369
|
import dynamic from "next/dynamic";
|
|
370
|
+
import { useState } from "react";
|
|
370
371
|
|
|
371
372
|
const MDEditor = dynamic(
|
|
372
|
-
() => import("@uiw/react-md-editor")
|
|
373
|
+
() => import("@uiw/react-md-editor"),
|
|
373
374
|
{ ssr: false }
|
|
374
375
|
);
|
|
375
376
|
|
|
376
377
|
function HomePage() {
|
|
378
|
+
const [value, setValue] = useState("**Hello world!!!**");
|
|
377
379
|
return (
|
|
378
380
|
<div>
|
|
379
|
-
<MDEditor value=
|
|
381
|
+
<MDEditor value={value} onChange={setValue} />
|
|
380
382
|
</div>
|
|
381
383
|
);
|
|
382
384
|
}
|
package/esm/Editor.js
CHANGED
|
@@ -198,7 +198,7 @@ var InternalMDEditor = (props, ref) => {
|
|
|
198
198
|
onScroll: e => handleScroll(e, 'preview'),
|
|
199
199
|
ref: previewRef,
|
|
200
200
|
source: state.markdown || '',
|
|
201
|
-
className: prefixCls + "-preview"
|
|
201
|
+
className: prefixCls + "-preview " + (previewOptions.className || '')
|
|
202
202
|
}))]
|
|
203
203
|
}), visiableDragbar && !state.fullscreen && /*#__PURE__*/_jsx(DragBar, {
|
|
204
204
|
prefixCls: prefixCls,
|
package/esm/Editor.js.map
CHANGED
|
@@ -91,8 +91,8 @@
|
|
|
91
91
|
"forwardRef",
|
|
92
92
|
"Markdown"
|
|
93
93
|
],
|
|
94
|
-
"mappings": "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
|
|
94
|
+
"mappings": "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",
|
|
95
95
|
"sourcesContent": [
|
|
96
|
-
"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 * You can create your own commands or reuse existing commands.\n */\n commands?: 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 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 onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands,\n extraCommands,\n fullscreen,\n onChange,\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 renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && (\n <MarkdownPreview\n {...
|
|
96
|
+
"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 * You can create your own commands or reuse existing commands.\n */\n commands?: 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 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 onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands,\n extraCommands,\n fullscreen,\n onChange,\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 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"
|
|
97
97
|
]
|
|
98
98
|
}
|
package/lib/Context.js
CHANGED
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.reducer = reducer;
|
|
9
8
|
exports.EditorContext = void 0;
|
|
9
|
+
exports.reducer = reducer;
|
|
10
10
|
|
|
11
11
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
12
|
|
package/lib/Editor.js
CHANGED
|
@@ -254,7 +254,7 @@ var InternalMDEditor = function InternalMDEditor(props, ref) {
|
|
|
254
254
|
},
|
|
255
255
|
ref: previewRef,
|
|
256
256
|
source: state.markdown || '',
|
|
257
|
-
className: "".concat(prefixCls, "-preview")
|
|
257
|
+
className: "".concat(prefixCls, "-preview ").concat(previewOptions.className || '')
|
|
258
258
|
}))]
|
|
259
259
|
}), visiableDragbar && !state.fullscreen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DragBar.default, {
|
|
260
260
|
prefixCls: prefixCls,
|
|
@@ -276,4 +276,5 @@ var mdEditor = /*#__PURE__*/_react.default.forwardRef(InternalMDEditor);
|
|
|
276
276
|
mdEditor.Markdown = _reactMarkdownPreview.default;
|
|
277
277
|
var _default = mdEditor;
|
|
278
278
|
exports.default = _default;
|
|
279
|
+
module.exports = exports.default;
|
|
279
280
|
//# sourceMappingURL=Editor.js.map
|
package/lib/Editor.js.map
CHANGED
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"Markdown",
|
|
81
81
|
"MarkdownPreview"
|
|
82
82
|
],
|
|
83
|
-
"mappings": "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
|
|
83
|
+
"mappings": "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",
|
|
84
84
|
"sourcesContent": [
|
|
85
|
-
"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 * You can create your own commands or reuse existing commands.\n */\n commands?: 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 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 onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands,\n extraCommands,\n fullscreen,\n onChange,\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 renderTextarea={renderTextarea}\n onScroll={(e) => handleScroll(e, 'text')}\n />\n )}\n {/(live|preview)/.test(state.preview || '') && (\n <MarkdownPreview\n {...
|
|
85
|
+
"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 * You can create your own commands or reuse existing commands.\n */\n commands?: 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 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 onChange,\n hideToolbar,\n renderTextarea,\n ...other\n } = props || {};\n let [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n height,\n highlightEnable,\n tabSize,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands,\n extraCommands,\n fullscreen,\n onChange,\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 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"
|
|
86
86
|
]
|
|
87
87
|
}
|
package/lib/commands/index.js
CHANGED
|
@@ -5,13 +5,19 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.TextAreaTextApi = exports.TextAreaCommandOrchestrator = void 0;
|
|
9
9
|
Object.defineProperty(exports, "bold", {
|
|
10
10
|
enumerable: true,
|
|
11
11
|
get: function get() {
|
|
12
12
|
return _bold.bold;
|
|
13
13
|
}
|
|
14
14
|
});
|
|
15
|
+
Object.defineProperty(exports, "checkedListCommand", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function get() {
|
|
18
|
+
return _list.checkedListCommand;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
15
21
|
Object.defineProperty(exports, "code", {
|
|
16
22
|
enumerable: true,
|
|
17
23
|
get: function get() {
|
|
@@ -24,40 +30,42 @@ Object.defineProperty(exports, "codeBlock", {
|
|
|
24
30
|
return _code.codeBlock;
|
|
25
31
|
}
|
|
26
32
|
});
|
|
27
|
-
Object.defineProperty(exports, "
|
|
33
|
+
Object.defineProperty(exports, "codeEdit", {
|
|
28
34
|
enumerable: true,
|
|
29
35
|
get: function get() {
|
|
30
|
-
return
|
|
36
|
+
return _preview.codeEdit;
|
|
31
37
|
}
|
|
32
38
|
});
|
|
33
|
-
Object.defineProperty(exports, "
|
|
39
|
+
Object.defineProperty(exports, "codeLive", {
|
|
34
40
|
enumerable: true,
|
|
35
41
|
get: function get() {
|
|
36
|
-
return
|
|
42
|
+
return _preview.codeLive;
|
|
37
43
|
}
|
|
38
44
|
});
|
|
39
|
-
Object.defineProperty(exports, "
|
|
45
|
+
Object.defineProperty(exports, "codePreview", {
|
|
40
46
|
enumerable: true,
|
|
41
47
|
get: function get() {
|
|
42
|
-
return
|
|
48
|
+
return _preview.codePreview;
|
|
43
49
|
}
|
|
44
50
|
});
|
|
45
|
-
Object.defineProperty(exports, "
|
|
51
|
+
Object.defineProperty(exports, "divider", {
|
|
46
52
|
enumerable: true,
|
|
47
53
|
get: function get() {
|
|
48
|
-
return
|
|
54
|
+
return _divider.divider;
|
|
49
55
|
}
|
|
50
56
|
});
|
|
51
|
-
Object.defineProperty(exports, "
|
|
57
|
+
Object.defineProperty(exports, "fullscreen", {
|
|
52
58
|
enumerable: true,
|
|
53
59
|
get: function get() {
|
|
54
|
-
return
|
|
60
|
+
return _fullscreen.fullscreen;
|
|
55
61
|
}
|
|
56
62
|
});
|
|
57
|
-
|
|
63
|
+
exports.getExtraCommands = exports.getCommands = void 0;
|
|
64
|
+
exports.getStateFromTextArea = getStateFromTextArea;
|
|
65
|
+
Object.defineProperty(exports, "group", {
|
|
58
66
|
enumerable: true,
|
|
59
67
|
get: function get() {
|
|
60
|
-
return
|
|
68
|
+
return _group.group;
|
|
61
69
|
}
|
|
62
70
|
});
|
|
63
71
|
Object.defineProperty(exports, "hr", {
|
|
@@ -66,97 +74,90 @@ Object.defineProperty(exports, "hr", {
|
|
|
66
74
|
return _hr.hr;
|
|
67
75
|
}
|
|
68
76
|
});
|
|
69
|
-
Object.defineProperty(exports, "
|
|
70
|
-
enumerable: true,
|
|
71
|
-
get: function get() {
|
|
72
|
-
return _title.title;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
Object.defineProperty(exports, "title1", {
|
|
77
|
+
Object.defineProperty(exports, "image", {
|
|
76
78
|
enumerable: true,
|
|
77
79
|
get: function get() {
|
|
78
|
-
return
|
|
80
|
+
return _image.image;
|
|
79
81
|
}
|
|
80
82
|
});
|
|
81
|
-
Object.defineProperty(exports, "
|
|
83
|
+
Object.defineProperty(exports, "italic", {
|
|
82
84
|
enumerable: true,
|
|
83
85
|
get: function get() {
|
|
84
|
-
return
|
|
86
|
+
return _italic.italic;
|
|
85
87
|
}
|
|
86
88
|
});
|
|
87
|
-
Object.defineProperty(exports, "
|
|
89
|
+
Object.defineProperty(exports, "link", {
|
|
88
90
|
enumerable: true,
|
|
89
91
|
get: function get() {
|
|
90
|
-
return
|
|
92
|
+
return _link.link;
|
|
91
93
|
}
|
|
92
94
|
});
|
|
93
|
-
Object.defineProperty(exports, "
|
|
95
|
+
Object.defineProperty(exports, "orderedListCommand", {
|
|
94
96
|
enumerable: true,
|
|
95
97
|
get: function get() {
|
|
96
|
-
return
|
|
98
|
+
return _list.orderedListCommand;
|
|
97
99
|
}
|
|
98
100
|
});
|
|
99
|
-
Object.defineProperty(exports, "
|
|
101
|
+
Object.defineProperty(exports, "quote", {
|
|
100
102
|
enumerable: true,
|
|
101
103
|
get: function get() {
|
|
102
|
-
return
|
|
104
|
+
return _quote.quote;
|
|
103
105
|
}
|
|
104
106
|
});
|
|
105
|
-
Object.defineProperty(exports, "
|
|
107
|
+
Object.defineProperty(exports, "strikethrough", {
|
|
106
108
|
enumerable: true,
|
|
107
109
|
get: function get() {
|
|
108
|
-
return
|
|
110
|
+
return _strikeThrough.strikethrough;
|
|
109
111
|
}
|
|
110
112
|
});
|
|
111
|
-
Object.defineProperty(exports, "
|
|
113
|
+
Object.defineProperty(exports, "title", {
|
|
112
114
|
enumerable: true,
|
|
113
115
|
get: function get() {
|
|
114
|
-
return
|
|
116
|
+
return _title.title;
|
|
115
117
|
}
|
|
116
118
|
});
|
|
117
|
-
Object.defineProperty(exports, "
|
|
119
|
+
Object.defineProperty(exports, "title1", {
|
|
118
120
|
enumerable: true,
|
|
119
121
|
get: function get() {
|
|
120
|
-
return
|
|
122
|
+
return _title2.title1;
|
|
121
123
|
}
|
|
122
124
|
});
|
|
123
|
-
Object.defineProperty(exports, "
|
|
125
|
+
Object.defineProperty(exports, "title2", {
|
|
124
126
|
enumerable: true,
|
|
125
127
|
get: function get() {
|
|
126
|
-
return
|
|
128
|
+
return _title3.title2;
|
|
127
129
|
}
|
|
128
130
|
});
|
|
129
|
-
Object.defineProperty(exports, "
|
|
131
|
+
Object.defineProperty(exports, "title3", {
|
|
130
132
|
enumerable: true,
|
|
131
133
|
get: function get() {
|
|
132
|
-
return
|
|
134
|
+
return _title4.title3;
|
|
133
135
|
}
|
|
134
136
|
});
|
|
135
|
-
Object.defineProperty(exports, "
|
|
137
|
+
Object.defineProperty(exports, "title4", {
|
|
136
138
|
enumerable: true,
|
|
137
139
|
get: function get() {
|
|
138
|
-
return
|
|
140
|
+
return _title5.title4;
|
|
139
141
|
}
|
|
140
142
|
});
|
|
141
|
-
Object.defineProperty(exports, "
|
|
143
|
+
Object.defineProperty(exports, "title5", {
|
|
142
144
|
enumerable: true,
|
|
143
145
|
get: function get() {
|
|
144
|
-
return
|
|
146
|
+
return _title6.title5;
|
|
145
147
|
}
|
|
146
148
|
});
|
|
147
|
-
Object.defineProperty(exports, "
|
|
149
|
+
Object.defineProperty(exports, "title6", {
|
|
148
150
|
enumerable: true,
|
|
149
151
|
get: function get() {
|
|
150
|
-
return
|
|
152
|
+
return _title7.title6;
|
|
151
153
|
}
|
|
152
154
|
});
|
|
153
|
-
Object.defineProperty(exports, "
|
|
155
|
+
Object.defineProperty(exports, "unorderedListCommand", {
|
|
154
156
|
enumerable: true,
|
|
155
157
|
get: function get() {
|
|
156
|
-
return
|
|
158
|
+
return _list.unorderedListCommand;
|
|
157
159
|
}
|
|
158
160
|
});
|
|
159
|
-
exports.TextAreaTextApi = exports.TextAreaCommandOrchestrator = exports.getExtraCommands = exports.getCommands = void 0;
|
|
160
161
|
|
|
161
162
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
162
163
|
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"state",
|
|
46
46
|
"execute"
|
|
47
47
|
],
|
|
48
|
-
"mappings": "
|
|
48
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoDA,IAAMA,WAA6B,GAAG,SAAhCA,WAAgC;AAAA,SAAM,CAC1CC,gBAD0C,EAE1CC,UAF0C,EAG1CC,cAH0C,EAI1CC,4BAJ0C,EAK1CC,MAL0C,EAM1CC,YAN0C,EAO1CC,gBAP0C,EAQ1CC,UAR0C,EAS1CC,YAT0C,EAU1CC,UAV0C,EAW1CC,eAX0C,EAY1CC,YAZ0C,EAa1CL,gBAb0C,EAc1CM,0BAd0C,EAe1CC,wBAf0C,EAgB1CC,wBAhB0C,CAAN;AAAA,CAAtC;;;;AAmBA,IAAMC,gBAAkC,GAAG,SAArCA,gBAAqC;AAAA,SAAM,CAACC,iBAAD,EAAWC,iBAAX,EAAqBC,oBAArB,EAAkCZ,gBAAlC,EAA2Ca,sBAA3C,CAAN;AAAA,CAA3C;;;;AAEA,SAASC,oBAAT,CAA8BC,QAA9B,EAAwE;AACtE,SAAO;AACLC,IAAAA,SAAS,EAAE;AACTC,MAAAA,KAAK,EAAEF,QAAQ,CAACG,cADP;AAETC,MAAAA,GAAG,EAAEJ,QAAQ,CAACK;AAFL,KADN;AAKLC,IAAAA,IAAI,EAAEN,QAAQ,CAACO,KALV;AAMLC,IAAAA,YAAY,EAAER,QAAQ,CAACO,KAAT,CAAeE,KAAf,CAAqBT,QAAQ,CAACG,cAA9B,EAA8CH,QAAQ,CAACK,YAAvD;AANT,GAAP;AAQD;;IAEKK,e;AAGJ,2BAAYV,QAAZ,EAA2C;AAAA;AAAA;AACzC,SAAKA,QAAL,GAAgBA,QAAhB;AACD;AAED;AACF;AACA;AACA;AACA;;;;;WACE,0BAAiBM,IAAjB,EAA0C;AACxC,sDAAqB,KAAKN,QAA1B,EAAoCM,IAApC;AACA,aAAOP,oBAAoB,CAAC,KAAKC,QAAN,CAA3B;AACD;AAED;AACF;AACA;AACA;;;;WACE,2BAAkBC,SAAlB,EAAmD;AACjD,WAAKD,QAAL,CAAcW,KAAd;AACA,WAAKX,QAAL,CAAcG,cAAd,GAA+BF,SAAS,CAACC,KAAzC;AACA,WAAKF,QAAL,CAAcK,YAAd,GAA6BJ,SAAS,CAACG,GAAvC;AACA,aAAOL,oBAAoB,CAAC,KAAKC,QAAN,CAA3B;AACD;;;;;;;IAGGY,2B;AAIJ,uCAAYZ,QAAZ,EAA2C;AAAA;AAAA;AAAA;AACzC,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKa,OAAL,GAAe,IAAIH,eAAJ,CAAoBV,QAApB,CAAf;AACD;;;;WAED,oBAAW;AACT,UAAI,CAAC,KAAKA,QAAV,EAAoB,OAAO,KAAP;AACpB,aAAOD,oBAAoB,CAAC,KAAKC,QAAN,CAA3B;AACD;;;WAED,wBACEc,OADF,EAEEC,QAFF,EAGEC,KAHF,EAIQ;AACNF,MAAAA,OAAO,CAACG,OAAR,IAAmBH,OAAO,CAACG,OAAR,CAAgBlB,oBAAoB,CAAC,KAAKC,QAAN,CAApC,EAAqD,KAAKa,OAA1D,EAAmEE,QAAnE,EAA6EC,KAA7E,CAAnB;AACD",
|
|
49
49
|
"sourcesContent": [
|
|
50
50
|
"import { bold } from './bold';\nimport { code, codeBlock } from './code';\nimport { italic } from './italic';\nimport { link } from './link';\nimport { unorderedListCommand, orderedListCommand, checkedListCommand } from './list';\nimport { quote } from './quote';\nimport { hr } from './hr';\nimport { title } from './title';\nimport { title1 } from './title1';\nimport { title2 } from './title2';\nimport { title3 } from './title3';\nimport { title4 } from './title4';\nimport { title5 } from './title5';\nimport { title6 } from './title6';\nimport { comment } from './comment';\nimport { group } from './group';\nimport { divider } from './divider';\nimport { codePreview, codeEdit, codeLive } from './preview';\nimport { fullscreen } from './fullscreen';\nimport { image } from './image';\nimport { strikethrough } from './strikeThrough';\nimport { insertTextAtPosition } from '../utils/InsertTextAtPosition';\nimport { ContextStore, ExecuteCommandState } from '../Context';\n\nexport interface CommandOrchestrator {\n executeCommand(command: ICommand): void;\n}\n\nexport interface ICommandChildHandle<T = string> extends ICommandBase<T> {\n children?: (handle: {\n close: () => void;\n execute: () => void;\n getState?: TextAreaCommandOrchestrator['getState'];\n textApi?: TextAreaTextApi;\n }) => React.ReactElement;\n}\n\nexport interface ICommandChildCommands<T = string> extends ICommandBase<T> {\n children?: Array<ICommand<T>>;\n}\n\nexport interface ICommandBase<T> {\n parent?: ICommand<any>;\n keyCommand?: string;\n name?: string;\n shortcuts?: string;\n groupName?: string;\n icon?: React.ReactElement;\n value?: T;\n position?: 'right';\n liProps?: React.LiHTMLAttributes<HTMLLIElement>;\n buttonProps?: React.ButtonHTMLAttributes<HTMLButtonElement> | null;\n execute?: (\n state: TextState,\n api: TextAreaTextApi,\n dispatch?: React.Dispatch<ContextStore>,\n executeCommandState?: ExecuteCommandState,\n ) => void;\n}\n\nexport type ICommand<T = string> = ICommandChildCommands<T> | ICommandChildHandle<T>;\n\nexport interface TextRange {\n start: number;\n end: number;\n}\n\nexport interface TextState {\n text: string;\n selectedText: string;\n selection: TextRange;\n}\n\nconst getCommands: () => ICommand[] = () => [\n comment,\n bold,\n italic,\n strikethrough,\n hr,\n title,\n divider,\n link,\n quote,\n code,\n codeBlock,\n image,\n divider,\n unorderedListCommand,\n orderedListCommand,\n checkedListCommand,\n];\n\nconst getExtraCommands: () => ICommand[] = () => [codeEdit, codeLive, codePreview, divider, fullscreen];\n\nfunction getStateFromTextArea(textArea: HTMLTextAreaElement): TextState {\n return {\n selection: {\n start: textArea.selectionStart,\n end: textArea.selectionEnd,\n },\n text: textArea.value,\n selectedText: textArea.value.slice(textArea.selectionStart, textArea.selectionEnd),\n };\n}\n\nclass TextAreaTextApi {\n textArea: HTMLTextAreaElement;\n\n constructor(textArea: HTMLTextAreaElement) {\n this.textArea = textArea;\n }\n\n /**\n * Replaces the current selection with the new text. This will make the new selectedText to be empty, the\n * selection start and selection end will be the same and will both point to the end\n * @param text Text that should replace the current selection\n */\n replaceSelection(text: string): TextState {\n insertTextAtPosition(this.textArea, text);\n return getStateFromTextArea(this.textArea);\n }\n\n /**\n * Selects the specified text range\n * @param selection\n */\n setSelectionRange(selection: TextRange): TextState {\n this.textArea.focus();\n this.textArea.selectionStart = selection.start;\n this.textArea.selectionEnd = selection.end;\n return getStateFromTextArea(this.textArea);\n }\n}\n\nclass TextAreaCommandOrchestrator implements CommandOrchestrator {\n textArea: HTMLTextAreaElement;\n textApi: TextAreaTextApi;\n\n constructor(textArea: HTMLTextAreaElement) {\n this.textArea = textArea;\n this.textApi = new TextAreaTextApi(textArea);\n }\n\n getState() {\n if (!this.textArea) return false;\n return getStateFromTextArea(this.textArea);\n }\n\n executeCommand(\n command: ICommand<string>,\n dispatch?: React.Dispatch<ContextStore>,\n state?: ExecuteCommandState,\n ): void {\n command.execute && command.execute(getStateFromTextArea(this.textArea), this.textApi, dispatch, state);\n }\n}\n\nexport {\n // Toolbars.\n title,\n title1,\n title2,\n title3,\n title4,\n title5,\n title6,\n bold,\n codeBlock,\n italic,\n strikethrough,\n hr,\n group,\n divider,\n link,\n quote,\n code,\n image,\n unorderedListCommand,\n orderedListCommand,\n checkedListCommand,\n codeEdit,\n codeLive,\n codePreview,\n fullscreen,\n // Tool method.\n getCommands,\n getExtraCommands,\n getStateFromTextArea,\n TextAreaCommandOrchestrator,\n TextAreaTextApi,\n};\n"
|
|
51
51
|
]
|
package/lib/commands/list.js
CHANGED
|
@@ -5,8 +5,9 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.checkedListCommand = void 0;
|
|
8
9
|
exports.insertBeforeEachLine = insertBeforeEachLine;
|
|
9
|
-
exports.
|
|
10
|
+
exports.unorderedListCommand = exports.orderedListCommand = exports.makeList = void 0;
|
|
10
11
|
|
|
11
12
|
var React = _interopRequireWildcard(require("react"));
|
|
12
13
|
|
package/lib/commands/list.js.map
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"orderedListCommand",
|
|
50
50
|
"checkedListCommand"
|
|
51
51
|
],
|
|
52
|
-
"mappings": "
|
|
52
|
+
"mappings": "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",
|
|
53
53
|
"sourcesContent": [
|
|
54
54
|
"import * as React from 'react';\nimport { ICommand, TextState, TextAreaTextApi } from './';\nimport {\n selectWord,\n getBreaksNeededForEmptyLineBefore,\n getBreaksNeededForEmptyLineAfter,\n} from '../utils/markdownUtils';\n\nexport type AlterLineFunction = (line: string, index: number) => string;\n\n/**\n * Inserts insertionString before each line\n */\nexport function insertBeforeEachLine(\n selectedText: string,\n insertBefore: string | AlterLineFunction,\n): { modifiedText: string; insertionLength: number } {\n const lines = selectedText.split(/\\n/);\n\n let insertionLength = 0;\n const modifiedText = lines\n .map((item, index) => {\n if (typeof insertBefore === 'string') {\n insertionLength += insertBefore.length;\n return insertBefore + item;\n } else if (typeof insertBefore === 'function') {\n const insertionResult = insertBefore(item, index);\n insertionLength += insertionResult.length;\n return insertBefore(item, index) + item;\n }\n throw Error('insertion is expected to be either a string or a function');\n })\n .join('\\n');\n\n return { modifiedText, insertionLength };\n}\n\nexport const makeList = (state: TextState, api: TextAreaTextApi, insertBefore: string | AlterLineFunction) => {\n // Adjust the selection to encompass the whole word if the caret is inside one\n const newSelectionRange = selectWord({ text: state.text, selection: state.selection });\n const state1 = api.setSelectionRange(newSelectionRange);\n\n const breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n const breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n\n const breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n const breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n\n const modifiedText = insertBeforeEachLine(state1.selectedText, insertBefore);\n\n api.replaceSelection(`${breaksBefore}${modifiedText.modifiedText}${breaksAfter}`);\n\n // Specifically when the text has only one line, we can exclude the \"- \", for example, from the selection\n const oneLinerOffset = state1.selectedText.indexOf('\\n') === -1 ? modifiedText.insertionLength : 0;\n\n const selectionStart = state1.selection.start + breaksBeforeCount + oneLinerOffset;\n const selectionEnd = selectionStart + modifiedText.modifiedText.length - oneLinerOffset;\n\n // Adjust the selection to not contain the **\n api.setSelectionRange({\n start: selectionStart,\n end: selectionEnd,\n });\n};\n\nexport const unorderedListCommand: ICommand = {\n name: 'unordered-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+l',\n buttonProps: { 'aria-label': 'Add unordered list', title: 'Add unordered list' },\n icon: (\n <svg data-name=\"unordered-list\" width=\"12\" height=\"12\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M96 96c0 26.51-21.49 48-48 48S0 122.51 0 96s21.49-48 48-48 48 21.49 48 48zM48 208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm0 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm96-236h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n makeList(state, api, '- ');\n },\n};\n\nexport const orderedListCommand: ICommand = {\n name: 'ordered-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+o',\n buttonProps: { 'aria-label': 'Add ordered list', title: 'Add ordered list' },\n icon: (\n <svg data-name=\"ordered-list\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M3.263 139.527c0-7.477 3.917-11.572 11.573-11.572h15.131V88.078c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.938C32.815 33.602 36.732 32 42.785 32H54.89c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572H14.836c-7.656 0-11.573-4.095-11.573-11.572v-8.902zM2.211 304.591c0-47.278 50.955-56.383 50.955-69.165 0-7.18-5.954-8.755-9.28-8.755-3.153 0-6.479 1.051-9.455 3.852-5.079 4.903-10.507 7.004-16.111 2.451l-8.579-6.829c-5.779-4.553-7.18-9.805-2.803-15.409C13.592 201.981 26.025 192 47.387 192c19.437 0 44.476 10.506 44.476 39.573 0 38.347-46.753 46.402-48.679 56.909h39.049c7.529 0 11.557 4.027 11.557 11.382v8.755c0 7.354-4.028 11.382-11.557 11.382h-67.94c-7.005 0-12.083-4.028-12.083-11.382v-4.028zM5.654 454.61l5.603-9.28c3.853-6.654 9.105-7.004 15.584-3.152 4.903 2.101 9.63 3.152 14.359 3.152 10.155 0 14.358-3.502 14.358-8.23 0-6.654-5.604-9.106-15.934-9.106h-4.728c-5.954 0-9.28-2.101-12.258-7.88l-1.05-1.926c-2.451-4.728-1.226-9.806 2.801-14.884l5.604-7.004c6.829-8.405 12.257-13.483 12.257-13.483v-.35s-4.203 1.051-12.608 1.051H16.685c-7.53 0-11.383-4.028-11.383-11.382v-8.755c0-7.53 3.853-11.382 11.383-11.382h58.484c7.529 0 11.382 4.027 11.382 11.382v3.327c0 5.778-1.401 9.806-5.079 14.183l-17.509 20.137c19.611 5.078 28.716 20.487 28.716 34.845 0 21.363-14.358 44.126-48.503 44.126-16.636 0-28.192-4.728-35.896-9.455-5.779-4.202-6.304-9.805-2.626-15.934zM144 132h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n makeList(state, api, (item, index) => `${index + 1}. `);\n },\n};\n\nexport const checkedListCommand: ICommand = {\n name: 'checked-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+c',\n buttonProps: { 'aria-label': 'Add checked list', title: 'Add checked list' },\n icon: (\n <svg data-name=\"checked-list\" width=\"12\" height=\"12\" role=\"img\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M208 132h288c8.8 0 16-7.2 16-16V76c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zM64 368c-26.5 0-48.6 21.5-48.6 48s22.1 48 48.6 48 48-21.5 48-48-21.5-48-48-48zm92.5-299l-72.2 72.2-15.6 15.6c-4.7 4.7-12.9 4.7-17.6 0L3.5 109.4c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.3c4.7-4.7 12.3-4.7 17 0l17 16.5c4.6 4.7 4.6 12.3-.1 17zm0 159.6l-72.2 72.2-15.7 15.7c-4.7 4.7-12.9 4.7-17.6 0L3.5 269c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.7c4.7-4.7 12.3-4.7 17 0l17 17c4.6 4.6 4.6 12.2-.1 16.9z\"\n />\n </svg>\n ),\n execute: (state: TextState, api: TextAreaTextApi) => {\n makeList(state, api, (item, index) => `- [ ] `);\n },\n};\n"
|
|
55
55
|
]
|
package/lib/commands/preview.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.codePreview = exports.codeLive = exports.codeEdit = void 0;
|
|
9
9
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
package/lib/index.js
CHANGED
|
@@ -9,7 +9,7 @@ var _exportNames = {
|
|
|
9
9
|
commands: true,
|
|
10
10
|
MarkdownUtil: true
|
|
11
11
|
};
|
|
12
|
-
exports.
|
|
12
|
+
exports.default = exports.commands = exports.MarkdownUtil = void 0;
|
|
13
13
|
|
|
14
14
|
var _Editor = _interopRequireWildcard(require("./Editor"));
|
|
15
15
|
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.selectWord = selectWord;
|
|
7
|
-
exports.getBreaksNeededForEmptyLineBefore = getBreaksNeededForEmptyLineBefore;
|
|
8
6
|
exports.getBreaksNeededForEmptyLineAfter = getBreaksNeededForEmptyLineAfter;
|
|
7
|
+
exports.getBreaksNeededForEmptyLineBefore = getBreaksNeededForEmptyLineBefore;
|
|
9
8
|
exports.getSurroundingWord = getSurroundingWord;
|
|
9
|
+
exports.selectWord = selectWord;
|
|
10
10
|
|
|
11
11
|
function selectWord(_ref) {
|
|
12
12
|
var text = _ref.text,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uiw/react-md-editor",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.6",
|
|
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>",
|
|
@@ -44,28 +44,28 @@
|
|
|
44
44
|
"@kkt/react-library": "6.11.0",
|
|
45
45
|
"@kkt/scope-plugin-options": "6.11.0",
|
|
46
46
|
"@types/katex": "0.11.1",
|
|
47
|
-
"@types/react": "17.0.
|
|
48
|
-
"@types/react-dom": "17.0.
|
|
47
|
+
"@types/react": "17.0.34",
|
|
48
|
+
"@types/react-dom": "17.0.11",
|
|
49
49
|
"@types/react-test-renderer": "17.0.1",
|
|
50
50
|
"@uiw/react-github-corners": "1.5.3",
|
|
51
51
|
"@uiw/react-codesandbox": "1.1.0",
|
|
52
52
|
"@uiw/react-shields": "1.1.2",
|
|
53
|
-
"compile-less-cli": "1.8.
|
|
54
|
-
"katex": "0.
|
|
55
|
-
"husky": "7.0.
|
|
56
|
-
"jest-environment-jsdom": "27.
|
|
53
|
+
"compile-less-cli": "1.8.9",
|
|
54
|
+
"katex": "0.15.1",
|
|
55
|
+
"husky": "7.0.4",
|
|
56
|
+
"jest-environment-jsdom": "27.3.1",
|
|
57
57
|
"kkt": "6.11.0",
|
|
58
|
-
"lint-staged": "11.
|
|
59
|
-
"prettier": "2.4.
|
|
58
|
+
"lint-staged": "11.2.6",
|
|
59
|
+
"prettier": "2.4.1",
|
|
60
60
|
"react": "17.0.2",
|
|
61
61
|
"react-dom": "17.0.2",
|
|
62
62
|
"react-test-renderer": "17.0.2",
|
|
63
63
|
"source-map-explorer": "2.5.2",
|
|
64
|
-
"tsbb": "3.
|
|
64
|
+
"tsbb": "3.4.4"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
67
|
"@babel/runtime": "^7.14.6",
|
|
68
|
-
"@uiw/react-markdown-preview": "3.
|
|
68
|
+
"@uiw/react-markdown-preview": "3.4.1",
|
|
69
69
|
"rehype": "12.0.0"
|
|
70
70
|
},
|
|
71
71
|
"keywords": [
|
|
@@ -89,15 +89,6 @@
|
|
|
89
89
|
],
|
|
90
90
|
"transformIgnorePatterns": [
|
|
91
91
|
"<rootDir>/node_modules/?!(.*)"
|
|
92
|
-
],
|
|
93
|
-
"collectCoverageFrom": [
|
|
94
|
-
"**/*.{tsx,ts}",
|
|
95
|
-
"!.kktrc.ts",
|
|
96
|
-
"!**/*.{js,d.ts}",
|
|
97
|
-
"!**/node_modules/**",
|
|
98
|
-
"!<rootDir>/coverage/**",
|
|
99
|
-
"!**/website/**",
|
|
100
|
-
"!**/vendor/**"
|
|
101
92
|
]
|
|
102
93
|
},
|
|
103
94
|
"lint-staged": {
|
package/src/Editor.tsx
CHANGED
|
@@ -269,11 +269,11 @@ const InternalMDEditor = (
|
|
|
269
269
|
)}
|
|
270
270
|
{/(live|preview)/.test(state.preview || '') && (
|
|
271
271
|
<MarkdownPreview
|
|
272
|
-
{...
|
|
272
|
+
{...previewOptions}
|
|
273
273
|
onScroll={(e) => handleScroll(e, 'preview')}
|
|
274
274
|
ref={previewRef}
|
|
275
275
|
source={state.markdown || ''}
|
|
276
|
-
className={`${prefixCls}-preview`}
|
|
276
|
+
className={`${prefixCls}-preview ${previewOptions.className || ''}`}
|
|
277
277
|
/>
|
|
278
278
|
)}
|
|
279
279
|
</div>
|