@gravity-ui/markdown-editor 15.6.1 → 15.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/bundle/MarkdownEditorView.d.ts +7 -28
- package/build/cjs/bundle/MarkdownEditorView.js +49 -49
- package/build/cjs/bundle/MarkdownEditorView.js.map +1 -1
- package/build/cjs/bundle/toolbar/custom/ToolbarImagePopup.d.ts +1 -1
- package/build/cjs/bundle/toolbar/custom/ToolbarImagePopup.js +2 -2
- package/build/cjs/bundle/toolbar/custom/ToolbarImagePopup.js.map +1 -1
- package/build/cjs/bundle/toolbar/markup/MToolbarImagePopup.js +8 -1
- package/build/cjs/bundle/toolbar/markup/MToolbarImagePopup.js.map +1 -1
- package/build/cjs/extensions/additional/QuoteLink/index.css +1 -2
- package/build/cjs/extensions/behavior/Clipboard/clipboard.js +1 -2
- package/build/cjs/extensions/behavior/Clipboard/clipboard.js.map +1 -1
- package/build/cjs/forms/ImageForm.d.ts +1 -0
- package/build/cjs/forms/ImageForm.js +2 -2
- package/build/cjs/forms/ImageForm.js.map +1 -1
- package/build/cjs/markup/codemirror/create.js +16 -11
- package/build/cjs/markup/codemirror/create.js.map +1 -1
- package/build/cjs/utils/serialize-for-clipboard.d.ts +10 -10
- package/build/cjs/utils/serialize-for-clipboard.js +64 -5
- package/build/cjs/utils/serialize-for-clipboard.js.map +1 -1
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/esm/bundle/MarkdownEditorView.d.ts +7 -28
- package/build/esm/bundle/MarkdownEditorView.js +49 -49
- package/build/esm/bundle/MarkdownEditorView.js.map +1 -1
- package/build/esm/bundle/toolbar/custom/ToolbarImagePopup.d.ts +1 -1
- package/build/esm/bundle/toolbar/custom/ToolbarImagePopup.js +2 -2
- package/build/esm/bundle/toolbar/custom/ToolbarImagePopup.js.map +1 -1
- package/build/esm/bundle/toolbar/markup/MToolbarImagePopup.js +8 -1
- package/build/esm/bundle/toolbar/markup/MToolbarImagePopup.js.map +1 -1
- package/build/esm/extensions/additional/QuoteLink/index.css +1 -2
- package/build/esm/extensions/behavior/Clipboard/clipboard.js +1 -2
- package/build/esm/extensions/behavior/Clipboard/clipboard.js.map +1 -1
- package/build/esm/forms/ImageForm.d.ts +1 -0
- package/build/esm/forms/ImageForm.js +2 -2
- package/build/esm/forms/ImageForm.js.map +1 -1
- package/build/esm/markup/codemirror/create.js +16 -11
- package/build/esm/markup/codemirror/create.js.map +1 -1
- package/build/esm/utils/serialize-for-clipboard.d.ts +10 -10
- package/build/esm/utils/serialize-for-clipboard.js +63 -4
- package/build/esm/utils/serialize-for-clipboard.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/styles.css +1 -2
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"../../../../src","sources":["markup/codemirror/create.ts"],"names":[],"mappings":"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","sourcesContent":["import {autocompletion} from '@codemirror/autocomplete';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n insertNewlineKeepIndent,\n insertTab,\n} from '@codemirror/commands';\nimport {syntaxHighlighting} from '@codemirror/language';\nimport type {Extension, StateCommand} from '@codemirror/state';\nimport {\n EditorView,\n type EditorViewConfig,\n type KeyBinding,\n keymap,\n placeholder,\n} from '@codemirror/view';\n\nimport type {ParseInsertedUrlAsImage} from '../../bundle';\nimport type {EventMap} from '../../bundle/Editor';\nimport {ActionName} from '../../bundle/config/action-names';\nimport type {ReactRenderStorage} from '../../extensions';\nimport {type Logger2, globalLogger} from '../../logger';\nimport {Action as A, formatter as f} from '../../shortcuts';\nimport type {Receiver} from '../../utils';\nimport {DataTransferType, shouldSkipHtmlConversion} from '../../utils/clipboard';\nimport type {DirectiveSyntaxContext} from '../../utils/directive';\nimport {\n insertEmptyRow,\n insertImages,\n insertLink,\n toH1,\n toH2,\n toH3,\n toH4,\n toH5,\n toH6,\n toggleBold,\n toggleItalic,\n toggleStrikethrough,\n toggleUnderline,\n wrapToCodeBlock,\n wrapToInlineCode,\n wrapToYfmCut,\n wrapToYfmNote,\n} from '../commands';\n\nimport {DirectiveSyntaxFacet} from './directive-facet';\nimport {type FileUploadHandler, FileUploadHandlerFacet} from './files-upload-facet';\nimport {gravityHighlightStyle, gravityTheme} from './gravity';\nimport {MarkdownConverter} from './html-to-markdown/converters';\nimport {LoggerFacet} from './logger-facet';\nimport {PairingCharactersExtension} from './pairing-chars';\nimport {ReactRendererFacet} from './react-facet';\nimport {SearchPanelPlugin} from './search-plugin/plugin';\nimport {smartReindent} from './smart-reindent';\nimport {type YfmLangOptions, yfmLang} from './yfm';\n\nexport type {YfmLangOptions};\n\ntype Autocompletion = Parameters<typeof autocompletion>[0];\n\nexport type CreateCodemirrorParams = {\n doc: EditorViewConfig['doc'];\n placeholder: Parameters<typeof placeholder>[0];\n logger: Logger2.ILogger;\n onCancel: () => void;\n onSubmit: () => void;\n onChange: () => void;\n onDocChange: () => void;\n onScroll: (event: Event) => void;\n reactRenderer: ReactRenderStorage;\n uploadHandler?: FileUploadHandler;\n parseHtmlOnPaste?: boolean;\n parseInsertedUrlAsImage?: ParseInsertedUrlAsImage;\n needImageDimensions?: boolean;\n enableNewImageSizeCalculation?: boolean;\n extensions?: Extension[];\n disabledExtensions?: {\n history?: boolean;\n };\n keymaps?: readonly KeyBinding[];\n receiver?: Receiver<EventMap>;\n yfmLangOptions?: YfmLangOptions;\n autocompletion?: Autocompletion;\n directiveSyntax: DirectiveSyntaxContext;\n preserveEmptyRows: boolean;\n};\n\nexport function createCodemirror(params: CreateCodemirrorParams) {\n const {\n logger,\n doc,\n reactRenderer,\n onCancel,\n onScroll,\n onSubmit,\n onChange,\n onDocChange,\n disabledExtensions = {},\n keymaps = [],\n receiver,\n yfmLangOptions,\n extensions: extraExtensions,\n placeholder: placeholderContent,\n autocompletion: autocompletionConfig,\n parseHtmlOnPaste,\n parseInsertedUrlAsImage,\n directiveSyntax,\n preserveEmptyRows,\n } = params;\n\n const extensions: Extension[] = [gravityTheme, placeholder(placeholderContent)];\n\n if (!disabledExtensions.history) {\n extensions.push(history());\n }\n\n extensions.push(\n syntaxHighlighting(gravityHighlightStyle),\n LoggerFacet.of(logger),\n keymap.of([\n {key: f.toCM(A.Bold)!, run: withLogger(ActionName.bold, toggleBold)},\n {key: f.toCM(A.Italic)!, run: withLogger(ActionName.italic, toggleItalic)},\n {key: f.toCM(A.Strike)!, run: withLogger(ActionName.strike, toggleStrikethrough)},\n {key: f.toCM(A.Underline)!, run: withLogger(ActionName.underline, toggleUnderline)},\n {key: f.toCM(A.Link)!, run: withLogger(ActionName.link, insertLink)},\n {key: f.toCM(A.Heading1)!, run: withLogger(ActionName.heading1, toH1)},\n {key: f.toCM(A.Heading2)!, run: withLogger(ActionName.heading2, toH2)},\n {key: f.toCM(A.Heading3)!, run: withLogger(ActionName.heading3, toH3)},\n {key: f.toCM(A.Heading4)!, run: withLogger(ActionName.heading4, toH4)},\n {key: f.toCM(A.Heading5)!, run: withLogger(ActionName.heading5, toH5)},\n {key: f.toCM(A.Heading6)!, run: withLogger(ActionName.heading6, toH6)},\n {key: f.toCM(A.Code)!, run: withLogger(ActionName.code_inline, wrapToInlineCode)},\n {key: f.toCM(A.CodeBlock)!, run: withLogger(ActionName.code_block, wrapToCodeBlock)},\n {key: f.toCM(A.Cut)!, run: withLogger(ActionName.yfm_cut, wrapToYfmCut)},\n {key: f.toCM(A.Note)!, run: withLogger(ActionName.yfm_note, wrapToYfmNote)},\n {\n key: f.toCM(A.Cancel)!,\n preventDefault: true,\n run: () => {\n onCancel();\n return true;\n },\n },\n {\n key: f.toCM(A.Submit)!,\n preventDefault: true,\n run: () => {\n onSubmit();\n return true;\n },\n },\n {key: 'Tab', preventDefault: true, run: insertTab},\n {\n key: 'Enter',\n shift: insertNewlineKeepIndent,\n },\n indentWithTab,\n ...defaultKeymap,\n ...(disabledExtensions.history ? [] : historyKeymap),\n ...keymaps,\n ]),\n autocompletion(autocompletionConfig),\n yfmLang(yfmLangOptions),\n ReactRendererFacet.of(reactRenderer),\n DirectiveSyntaxFacet.of(directiveSyntax),\n PairingCharactersExtension,\n EditorView.lineWrapping,\n EditorView.contentAttributes.of({spellcheck: 'true'}),\n EditorView.domEventHandlers({\n scroll(event) {\n onScroll(event);\n },\n paste(event, editor) {\n if (!event.clipboardData) return;\n\n const pasteLogger = logger.nested({\n domEvent: 'paste',\n dataTypes: event.clipboardData.types,\n });\n\n const {from} = editor.state.selection.main;\n const line = editor.state.doc.lineAt(from);\n const currentLine = line.text;\n\n // if clipboard contains YFM content - avoid any meddling with pasted content\n // since text/yfm will contain valid markdown\n const yfmContent = event.clipboardData.getData(DataTransferType.Yfm);\n if (yfmContent) {\n event.preventDefault();\n logger.event({event: 'paste-markup'});\n const reindentedYfmContent = smartReindent(yfmContent, currentLine);\n editor.dispatch(editor.state.replaceSelection(reindentedYfmContent));\n return;\n }\n\n // checking if a copy buffer content is suitable for convertion\n const shouldSkipHtml = shouldSkipHtmlConversion(event.clipboardData);\n\n // if we have text/html inside copy/paste buffer\n const htmlContent = event.clipboardData.getData(DataTransferType.Html);\n // if we pasting markdown from VsCode we need skip html transformation\n if (htmlContent && parseHtmlOnPaste && !shouldSkipHtml) {\n let parsedMarkdownMarkup: string | undefined;\n try {\n const parser = new DOMParser();\n const htmlDoc = parser.parseFromString(htmlContent, 'text/html');\n\n const converter = new MarkdownConverter();\n parsedMarkdownMarkup = converter.processNode(htmlDoc.body).trim();\n } catch (e) {\n // The code is pretty new and there might be random issues we haven't caught yet,\n // especially with invalid HTML or weird DOM parsing errors.\n // If something goes wrong, I just want to fall back to the \"default pasting\"\n // rather than break the entire experience for the user.\n pasteLogger.error(e, {event: 'parse-html-to-md'});\n globalLogger.error(e);\n }\n\n if (parsedMarkdownMarkup !== undefined) {\n event.preventDefault();\n logger.event({event: 'paste-parsed-html'});\n const reindentedHtmlContent = smartReindent(\n parsedMarkdownMarkup,\n currentLine,\n );\n editor.dispatch(editor.state.replaceSelection(reindentedHtmlContent));\n return;\n }\n }\n\n if (parseInsertedUrlAsImage) {\n const {imageUrl, title} =\n parseInsertedUrlAsImage(\n event.clipboardData.getData(DataTransferType.Text) ?? '',\n ) || {};\n\n if (imageUrl) {\n event.preventDefault();\n logger.event({event: 'paste-url-as-image'});\n insertImages([\n {\n url: imageUrl,\n alt: title,\n title,\n },\n ])(editor);\n }\n }\n\n // Reindenting pasted plain text\n const pastedText = event.clipboardData.getData(DataTransferType.Text);\n const reindentedText = smartReindent(pastedText, currentLine);\n // but only if there is a need for reindentation\n if (pastedText !== reindentedText) {\n editor.dispatch(editor.state.replaceSelection(reindentedText));\n event.preventDefault();\n }\n },\n }),\n SearchPanelPlugin({\n anchorSelector: '.g-md-search-anchor',\n receiver,\n }),\n );\n\n if (preserveEmptyRows) {\n extensions.push(\n keymap.of([\n {key: f.toCM(A.EmptyRow)!, run: withLogger(ActionName.emptyRow, insertEmptyRow)},\n ]),\n );\n }\n\n if (params.uploadHandler) {\n extensions.push(\n FileUploadHandlerFacet.of({\n fn: params.uploadHandler,\n imageWithDimensions: params.needImageDimensions,\n enableNewImageSizeCalculation: params.enableNewImageSizeCalculation,\n }),\n );\n }\n\n if (extraExtensions) {\n extensions.push(...extraExtensions);\n }\n\n return new EditorView({\n doc,\n extensions,\n dispatchTransactions: (trs, view) => {\n view.update(trs);\n onChange();\n if (trs.some((tr) => tr.docChanged)) {\n onDocChange();\n }\n },\n });\n}\n\nexport function withLogger(action: string, command: StateCommand): StateCommand {\n return (...args) => {\n const {state} = args[0];\n state.facet(LoggerFacet).action({source: 'keymap', action});\n globalLogger.action({mode: 'markup', source: 'keymap', action});\n return command(...args);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"../../../../src","sources":["markup/codemirror/create.ts"],"names":[],"mappings":"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","sourcesContent":["import {autocompletion} from '@codemirror/autocomplete';\nimport {\n defaultKeymap,\n history,\n historyKeymap,\n indentWithTab,\n insertNewlineKeepIndent,\n insertTab,\n} from '@codemirror/commands';\nimport {syntaxHighlighting} from '@codemirror/language';\nimport type {Extension, StateCommand} from '@codemirror/state';\nimport {\n EditorView,\n type EditorViewConfig,\n type KeyBinding,\n keymap,\n placeholder,\n} from '@codemirror/view';\n\nimport type {ParseInsertedUrlAsImage} from '../../bundle';\nimport type {EventMap} from '../../bundle/Editor';\nimport {ActionName} from '../../bundle/config/action-names';\nimport type {ReactRenderStorage} from '../../extensions';\nimport {type Logger2, globalLogger} from '../../logger';\nimport {Action as A, formatter as f} from '../../shortcuts';\nimport type {Receiver} from '../../utils';\nimport {DataTransferType, shouldSkipHtmlConversion} from '../../utils/clipboard';\nimport type {DirectiveSyntaxContext} from '../../utils/directive';\nimport {\n insertEmptyRow,\n insertImages,\n insertLink,\n toH1,\n toH2,\n toH3,\n toH4,\n toH5,\n toH6,\n toggleBold,\n toggleItalic,\n toggleStrikethrough,\n toggleUnderline,\n wrapToCodeBlock,\n wrapToInlineCode,\n wrapToYfmCut,\n wrapToYfmNote,\n} from '../commands';\n\nimport {DirectiveSyntaxFacet} from './directive-facet';\nimport {type FileUploadHandler, FileUploadHandlerFacet} from './files-upload-facet';\nimport {gravityHighlightStyle, gravityTheme} from './gravity';\nimport {MarkdownConverter} from './html-to-markdown/converters';\nimport {LoggerFacet} from './logger-facet';\nimport {PairingCharactersExtension} from './pairing-chars';\nimport {ReactRendererFacet} from './react-facet';\nimport {SearchPanelPlugin} from './search-plugin/plugin';\nimport {smartReindent} from './smart-reindent';\nimport {type YfmLangOptions, yfmLang} from './yfm';\n\nexport type {YfmLangOptions};\n\ntype Autocompletion = Parameters<typeof autocompletion>[0];\n\nconst linkRegex = /\\[[\\s\\S]*?]\\([\\s\\S]*?\\)/g;\n\nexport type CreateCodemirrorParams = {\n doc: EditorViewConfig['doc'];\n placeholder: Parameters<typeof placeholder>[0];\n logger: Logger2.ILogger;\n onCancel: () => void;\n onSubmit: () => void;\n onChange: () => void;\n onDocChange: () => void;\n onScroll: (event: Event) => void;\n reactRenderer: ReactRenderStorage;\n uploadHandler?: FileUploadHandler;\n parseHtmlOnPaste?: boolean;\n parseInsertedUrlAsImage?: ParseInsertedUrlAsImage;\n needImageDimensions?: boolean;\n enableNewImageSizeCalculation?: boolean;\n extensions?: Extension[];\n disabledExtensions?: {\n history?: boolean;\n };\n keymaps?: readonly KeyBinding[];\n receiver?: Receiver<EventMap>;\n yfmLangOptions?: YfmLangOptions;\n autocompletion?: Autocompletion;\n directiveSyntax: DirectiveSyntaxContext;\n preserveEmptyRows: boolean;\n};\n\nexport function createCodemirror(params: CreateCodemirrorParams) {\n const {\n logger,\n doc,\n reactRenderer,\n onCancel,\n onScroll,\n onSubmit,\n onChange,\n onDocChange,\n disabledExtensions = {},\n keymaps = [],\n receiver,\n yfmLangOptions,\n extensions: extraExtensions,\n placeholder: placeholderContent,\n autocompletion: autocompletionConfig,\n parseHtmlOnPaste,\n parseInsertedUrlAsImage,\n directiveSyntax,\n preserveEmptyRows,\n } = params;\n\n const extensions: Extension[] = [gravityTheme, placeholder(placeholderContent)];\n\n if (!disabledExtensions.history) {\n extensions.push(history());\n }\n\n extensions.push(\n syntaxHighlighting(gravityHighlightStyle),\n LoggerFacet.of(logger),\n keymap.of([\n {key: f.toCM(A.Bold)!, run: withLogger(ActionName.bold, toggleBold)},\n {key: f.toCM(A.Italic)!, run: withLogger(ActionName.italic, toggleItalic)},\n {key: f.toCM(A.Strike)!, run: withLogger(ActionName.strike, toggleStrikethrough)},\n {key: f.toCM(A.Underline)!, run: withLogger(ActionName.underline, toggleUnderline)},\n {key: f.toCM(A.Link)!, run: withLogger(ActionName.link, insertLink)},\n {key: f.toCM(A.Heading1)!, run: withLogger(ActionName.heading1, toH1)},\n {key: f.toCM(A.Heading2)!, run: withLogger(ActionName.heading2, toH2)},\n {key: f.toCM(A.Heading3)!, run: withLogger(ActionName.heading3, toH3)},\n {key: f.toCM(A.Heading4)!, run: withLogger(ActionName.heading4, toH4)},\n {key: f.toCM(A.Heading5)!, run: withLogger(ActionName.heading5, toH5)},\n {key: f.toCM(A.Heading6)!, run: withLogger(ActionName.heading6, toH6)},\n {key: f.toCM(A.Code)!, run: withLogger(ActionName.code_inline, wrapToInlineCode)},\n {key: f.toCM(A.CodeBlock)!, run: withLogger(ActionName.code_block, wrapToCodeBlock)},\n {key: f.toCM(A.Cut)!, run: withLogger(ActionName.yfm_cut, wrapToYfmCut)},\n {key: f.toCM(A.Note)!, run: withLogger(ActionName.yfm_note, wrapToYfmNote)},\n {\n key: f.toCM(A.Cancel)!,\n preventDefault: true,\n run: () => {\n onCancel();\n return true;\n },\n },\n {\n key: f.toCM(A.Submit)!,\n preventDefault: true,\n run: () => {\n onSubmit();\n return true;\n },\n },\n {key: 'Tab', preventDefault: true, run: insertTab},\n {\n key: 'Enter',\n shift: insertNewlineKeepIndent,\n },\n indentWithTab,\n ...defaultKeymap,\n ...(disabledExtensions.history ? [] : historyKeymap),\n ...keymaps,\n ]),\n autocompletion(autocompletionConfig),\n yfmLang(yfmLangOptions),\n ReactRendererFacet.of(reactRenderer),\n DirectiveSyntaxFacet.of(directiveSyntax),\n PairingCharactersExtension,\n EditorView.lineWrapping,\n EditorView.contentAttributes.of({spellcheck: 'true'}),\n EditorView.domEventHandlers({\n scroll(event) {\n onScroll(event);\n },\n paste(event, editor) {\n if (!event.clipboardData) return;\n\n const pasteLogger = logger.nested({\n domEvent: 'paste',\n dataTypes: event.clipboardData.types,\n });\n\n const {from} = editor.state.selection.main;\n const line = editor.state.doc.lineAt(from);\n const currentLine = line.text;\n\n // if clipboard contains YFM content - avoid any meddling with pasted content\n // since text/yfm will contain valid markdown\n const yfmContent = event.clipboardData.getData(DataTransferType.Yfm);\n if (yfmContent) {\n event.preventDefault();\n logger.event({event: 'paste-markup'});\n const reindentedYfmContent = smartReindent(yfmContent, currentLine);\n editor.dispatch(editor.state.replaceSelection(reindentedYfmContent));\n return;\n }\n\n // checking if a copy buffer content is suitable for convertion\n const shouldSkipHtml = shouldSkipHtmlConversion(event.clipboardData);\n\n // if we have text/html inside copy/paste buffer\n const htmlContent = event.clipboardData.getData(DataTransferType.Html);\n // if we pasting markdown from VsCode we need skip html transformation\n if (htmlContent && parseHtmlOnPaste && !shouldSkipHtml) {\n let parsedMarkdownMarkup: string | undefined;\n try {\n const parser = new DOMParser();\n const htmlDoc = parser.parseFromString(htmlContent, 'text/html');\n\n const converter = new MarkdownConverter();\n parsedMarkdownMarkup = converter.processNode(htmlDoc.body).trim();\n } catch (e) {\n // The code is pretty new and there might be random issues we haven't caught yet,\n // especially with invalid HTML or weird DOM parsing errors.\n // If something goes wrong, I just want to fall back to the \"default pasting\"\n // rather than break the entire experience for the user.\n pasteLogger.error(e, {event: 'parse-html-to-md'});\n globalLogger.error(e);\n }\n\n if (parsedMarkdownMarkup !== undefined) {\n event.preventDefault();\n logger.event({event: 'paste-parsed-html'});\n const reindentedHtmlContent = smartReindent(\n parsedMarkdownMarkup,\n currentLine,\n );\n editor.dispatch(editor.state.replaceSelection(reindentedHtmlContent));\n return;\n }\n }\n\n if (parseInsertedUrlAsImage) {\n const linkMatches = currentLine.matchAll(linkRegex);\n const isInsertedInsideLink = linkMatches.some(\n (item) => from >= item.index && from <= item.index + (item[0]?.length ?? 0),\n );\n if (!isInsertedInsideLink) {\n const {imageUrl, title} =\n parseInsertedUrlAsImage(\n event.clipboardData.getData(DataTransferType.Text) ?? '',\n ) || {};\n\n if (imageUrl) {\n event.preventDefault();\n logger.event({event: 'paste-url-as-image'});\n insertImages([\n {\n url: imageUrl,\n alt: title,\n title,\n },\n ])(editor);\n }\n }\n }\n\n // Reindenting pasted plain text\n const pastedText = event.clipboardData.getData(DataTransferType.Text);\n const reindentedText = smartReindent(pastedText, currentLine);\n // but only if there is a need for reindentation\n if (pastedText !== reindentedText) {\n editor.dispatch(editor.state.replaceSelection(reindentedText));\n event.preventDefault();\n }\n },\n }),\n SearchPanelPlugin({\n anchorSelector: '.g-md-search-anchor',\n receiver,\n }),\n );\n\n if (preserveEmptyRows) {\n extensions.push(\n keymap.of([\n {key: f.toCM(A.EmptyRow)!, run: withLogger(ActionName.emptyRow, insertEmptyRow)},\n ]),\n );\n }\n\n if (params.uploadHandler) {\n extensions.push(\n FileUploadHandlerFacet.of({\n fn: params.uploadHandler,\n imageWithDimensions: params.needImageDimensions,\n enableNewImageSizeCalculation: params.enableNewImageSizeCalculation,\n }),\n );\n }\n\n if (extraExtensions) {\n extensions.push(...extraExtensions);\n }\n\n return new EditorView({\n doc,\n extensions,\n dispatchTransactions: (trs, view) => {\n view.update(trs);\n onChange();\n if (trs.some((tr) => tr.docChanged)) {\n onDocChange();\n }\n },\n });\n}\n\nexport function withLogger(action: string, command: StateCommand): StateCommand {\n return (...args) => {\n const {state} = args[0];\n state.facet(LoggerFacet).action({source: 'keymap', action});\n globalLogger.action({mode: 'markup', source: 'keymap', action});\n return command(...args);\n };\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Slice } from 'prosemirror-model';
|
|
2
2
|
import type { EditorView } from 'prosemirror-view';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated
|
|
5
|
+
* will be removed in next major version, use view.serializeForClipboard instead
|
|
6
|
+
*/
|
|
7
|
+
export declare function serializeForClipboard(view: EditorView, slice: Slice): {
|
|
8
|
+
dom: HTMLDivElement;
|
|
9
|
+
text: string;
|
|
10
|
+
slice: Slice;
|
|
11
|
+
};
|
|
@@ -1,5 +1,64 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { DOMSerializer } from 'prosemirror-model';
|
|
2
|
+
// Trick from jQuery -- some elements must be wrapped in other
|
|
3
|
+
// elements for innerHTML to work. I.e. if you do `div.innerHTML =
|
|
4
|
+
// "<td>..</td>"` the table cells are ignored.
|
|
5
|
+
const wrapMap = {
|
|
6
|
+
thead: ['table'],
|
|
7
|
+
tbody: ['table'],
|
|
8
|
+
tfoot: ['table'],
|
|
9
|
+
caption: ['table'],
|
|
10
|
+
colgroup: ['table'],
|
|
11
|
+
col: ['table', 'colgroup'],
|
|
12
|
+
tr: ['table', 'tbody'],
|
|
13
|
+
td: ['table', 'tbody', 'tr'],
|
|
14
|
+
th: ['table', 'tbody', 'tr'],
|
|
15
|
+
};
|
|
16
|
+
let _detachedDoc = null;
|
|
17
|
+
function detachedDoc() {
|
|
18
|
+
// eslint-disable-next-line no-return-assign
|
|
19
|
+
return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument('title'));
|
|
20
|
+
}
|
|
21
|
+
// MAJOR: remove serializeForClipboard
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated
|
|
24
|
+
* will be removed in next major version, use view.serializeForClipboard instead
|
|
25
|
+
*/
|
|
26
|
+
export function serializeForClipboard(view, slice) {
|
|
27
|
+
view.someProp('transformCopied', (f) => {
|
|
28
|
+
slice = f(slice, view);
|
|
29
|
+
});
|
|
30
|
+
const context = [];
|
|
31
|
+
let { content, openStart, openEnd } = slice;
|
|
32
|
+
while (openStart > 1 &&
|
|
33
|
+
openEnd > 1 &&
|
|
34
|
+
content.childCount == 1 &&
|
|
35
|
+
content.firstChild.childCount == 1) {
|
|
36
|
+
openStart--;
|
|
37
|
+
openEnd--;
|
|
38
|
+
const node = content.firstChild;
|
|
39
|
+
context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);
|
|
40
|
+
content = node.content;
|
|
41
|
+
}
|
|
42
|
+
const serializer = view.someProp('clipboardSerializer') || DOMSerializer.fromSchema(view.state.schema);
|
|
43
|
+
const doc = detachedDoc(), wrap = doc.createElement('div');
|
|
44
|
+
wrap.appendChild(serializer.serializeFragment(content, { document: doc }));
|
|
45
|
+
let firstChild = wrap.firstChild, needsWrap, wrappers = 0;
|
|
46
|
+
while (firstChild &&
|
|
47
|
+
firstChild.nodeType == 1 &&
|
|
48
|
+
(needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {
|
|
49
|
+
for (let i = needsWrap.length - 1; i >= 0; i--) {
|
|
50
|
+
const wrapper = doc.createElement(needsWrap[i]);
|
|
51
|
+
while (wrap.firstChild)
|
|
52
|
+
wrapper.appendChild(wrap.firstChild);
|
|
53
|
+
wrap.appendChild(wrapper);
|
|
54
|
+
wrappers++;
|
|
55
|
+
}
|
|
56
|
+
firstChild = wrap.firstChild;
|
|
57
|
+
}
|
|
58
|
+
if (firstChild && firstChild.nodeType == 1)
|
|
59
|
+
firstChild.setAttribute('data-pm-slice', `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : ''} ${JSON.stringify(context)}`);
|
|
60
|
+
const text = view.someProp('clipboardTextSerializer', (f) => f(slice, view)) ||
|
|
61
|
+
slice.content.textBetween(0, slice.content.size, '\n\n');
|
|
62
|
+
return { dom: wrap, text, slice };
|
|
63
|
+
}
|
|
5
64
|
//# sourceMappingURL=serialize-for-clipboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-for-clipboard.js","sourceRoot":"../../../src","sources":["utils/serialize-for-clipboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialize-for-clipboard.js","sourceRoot":"../../../src","sources":["utils/serialize-for-clipboard.ts"],"names":[],"mappings":"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","sourcesContent":["import {DOMSerializer, type Slice} from 'prosemirror-model';\nimport type {EditorView} from 'prosemirror-view';\n\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"<td>..</td>\"` the table cells are ignored.\nconst wrapMap: {[node: string]: string[]} = {\n thead: ['table'],\n tbody: ['table'],\n tfoot: ['table'],\n caption: ['table'],\n colgroup: ['table'],\n col: ['table', 'colgroup'],\n tr: ['table', 'tbody'],\n td: ['table', 'tbody', 'tr'],\n th: ['table', 'tbody', 'tr'],\n};\n\nlet _detachedDoc: Document | null = null;\nfunction detachedDoc() {\n // eslint-disable-next-line no-return-assign\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument('title'));\n}\n\n// MAJOR: remove serializeForClipboard\n/**\n * @deprecated\n * will be removed in next major version, use view.serializeForClipboard instead\n */\nexport function serializeForClipboard(view: EditorView, slice: Slice) {\n view.someProp('transformCopied', (f) => {\n slice = f(slice!, view);\n });\n\n const context = [];\n let {content, openStart, openEnd} = slice;\n\n while (\n openStart > 1 &&\n openEnd > 1 &&\n content.childCount == 1 &&\n content.firstChild!.childCount == 1\n ) {\n openStart--;\n openEnd--;\n const node = content.firstChild!;\n context.push(\n node.type.name,\n node.attrs != (node.type as any).defaultAttrs ? node.attrs : null,\n );\n content = node.content;\n }\n\n const serializer =\n view.someProp('clipboardSerializer') || DOMSerializer.fromSchema(view.state.schema);\n const doc = detachedDoc(),\n wrap = doc.createElement('div');\n wrap.appendChild(serializer.serializeFragment(content, {document: doc}));\n\n let firstChild = wrap.firstChild,\n needsWrap,\n wrappers = 0;\n while (\n firstChild &&\n firstChild.nodeType == 1 &&\n (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])\n ) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n const wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild) wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n\n if (firstChild && firstChild.nodeType == 1)\n (firstChild as HTMLElement).setAttribute(\n 'data-pm-slice',\n `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : ''} ${JSON.stringify(context)}`,\n );\n\n const text =\n view.someProp('clipboardTextSerializer', (f) => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, '\\n\\n');\n\n return {dom: wrap, text, slice};\n}\n"]}
|
package/build/esm/version.js
CHANGED
package/build/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.8.0' !== 'undefined' ? '15.8.0' : 'unknown';\n"]}
|
package/build/styles.css
CHANGED
|
@@ -832,8 +832,7 @@
|
|
|
832
832
|
.yfm-editor .yfm-quote-link {
|
|
833
833
|
background-color: var(--yfm-quote-link-background);
|
|
834
834
|
}
|
|
835
|
-
.yfm-editor .yfm-quote-link .g-md-img-settings-button
|
|
836
|
-
.yfm-editor .yfm-quote-link .yfm-clipboard-button {
|
|
835
|
+
.yfm-editor .yfm-quote-link .g-md-img-settings-button {
|
|
837
836
|
position: absolute;
|
|
838
837
|
z-index: 2;
|
|
839
838
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/markdown-editor",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.8.0",
|
|
4
4
|
"description": "Markdown wysiwyg and markup editor",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
"prosemirror-test-builder": "^1.1.1",
|
|
211
211
|
"prosemirror-transform": "^1.10.2",
|
|
212
212
|
"prosemirror-utils": "^1.2.2",
|
|
213
|
-
"prosemirror-view": "^1.
|
|
213
|
+
"prosemirror-view": "^1.38.0",
|
|
214
214
|
"react-error-boundary": "^3.1.4",
|
|
215
215
|
"react-hotkeys-hook": "4.5.0",
|
|
216
216
|
"react-use": "^17.3.2",
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
"@diplodoc/html-extension": "2.7.1",
|
|
225
225
|
"@diplodoc/latex-extension": "1.0.3",
|
|
226
226
|
"@diplodoc/mermaid-extension": "1.2.1",
|
|
227
|
-
"@diplodoc/quote-link-extension": "0.1.
|
|
227
|
+
"@diplodoc/quote-link-extension": "0.1.2",
|
|
228
228
|
"@diplodoc/tabs-extension": "^3.5.1",
|
|
229
229
|
"@diplodoc/transform": "^4.43.0",
|
|
230
230
|
"@gravity-ui/eslint-config": "3.3.0",
|