├── .nvmrc ├── CODEOWNERS ├── src ├── cm │ ├── view.ts │ ├── state.ts │ ├── commands.ts │ ├── language.ts │ └── autocomplete.ts ├── pm │ ├── view.ts │ ├── history.ts │ ├── keymap.ts │ ├── model.ts │ ├── state.ts │ ├── commands.ts │ ├── transform.ts │ ├── inputrules.ts │ ├── test-builder.ts │ └── utils.ts ├── extensions │ ├── additional │ │ ├── index.ts │ │ ├── Mermaid │ │ │ ├── MermaidNodeView │ │ │ │ └── index.ts │ │ │ ├── types.ts │ │ │ └── const.ts │ │ ├── FoldingHeading │ │ │ ├── index.ts │ │ │ ├── FoldingHeadingSpec │ │ │ │ ├── index.ts │ │ │ │ └── const.ts │ │ │ ├── const.ts │ │ │ └── commands │ │ │ │ └── index.ts │ │ ├── YfmHtmlBlock │ │ │ ├── YfmHtmlBlockNodeView │ │ │ │ └── index.ts │ │ │ ├── types.ts │ │ │ └── const.ts │ │ ├── GPT │ │ │ ├── IconRefuge │ │ │ │ ├── index.ts │ │ │ │ ├── IconRefuge.classname.tsx │ │ │ │ └── IconRefuge.scss │ │ │ ├── index.ts │ │ │ ├── MarkupGpt │ │ │ │ └── effects.ts │ │ │ ├── PresetList │ │ │ │ └── Presetlist.scss │ │ │ └── actions.ts │ │ └── Math │ │ │ ├── index.scss │ │ │ ├── const.ts │ │ │ └── MathSpecs │ │ │ └── const.ts │ ├── yfm │ │ ├── Emoji │ │ │ ├── index.ts │ │ │ ├── EmojiInput │ │ │ │ └── index.ts │ │ │ ├── EmojiSpecs │ │ │ │ └── index.ts │ │ │ └── EmojiSuggest │ │ │ │ ├── index.ts │ │ │ │ ├── const.ts │ │ │ │ └── types.ts │ │ ├── YfmNote │ │ │ ├── const.ts │ │ │ ├── utils.ts │ │ │ ├── index.scss │ │ │ └── YfmNoteSpecs │ │ │ │ ├── const.ts │ │ │ │ └── utils.ts │ │ ├── YfmTable │ │ │ ├── const.ts │ │ │ ├── utils.ts │ │ │ ├── plugins │ │ │ │ └── YfmTableControls │ │ │ │ │ ├── components │ │ │ │ │ ├── FloatingMenu │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── FloatingPopup │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── FloatingPlusButton │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── FloatingMenuControl │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── FloatingPlusControl │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── nodeviews │ │ │ │ │ └── yfm-table-view.scss │ │ │ └── YfmTableSpecs │ │ │ │ └── const.ts │ │ ├── ImgSize │ │ │ ├── plugins │ │ │ │ └── ImgSizeNodeView │ │ │ │ │ ├── ImageForm │ │ │ │ │ ├── index.ts │ │ │ │ │ └── ImageForm.scss │ │ │ │ │ ├── ImgSettingsButton.scss │ │ │ │ │ └── ImgNodeView.scss │ │ │ ├── ImagePaste │ │ │ │ └── skeleton.scss │ │ │ └── ImgSizeSpecs │ │ │ │ └── const.ts │ │ ├── YfmFile │ │ │ ├── index.scss │ │ │ ├── YfmFileWidget │ │ │ │ └── view.scss │ │ │ └── YfmFilePaste │ │ │ │ └── skeleton.scss │ │ ├── Checkbox │ │ │ ├── const.ts │ │ │ └── utils.ts │ │ ├── Video │ │ │ ├── const.ts │ │ │ └── VideoSpecs │ │ │ │ └── const.ts │ │ ├── YfmHeading │ │ │ └── const.ts │ │ ├── Color │ │ │ ├── ColorSpecs │ │ │ │ └── const.ts │ │ │ └── const.ts │ │ └── YfmCut │ │ │ └── index.scss │ ├── behavior │ │ ├── Search │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ ├── search-plugin.scss │ │ │ └── const.ts │ │ ├── ClicksOnEdges │ │ │ └── index.ts │ │ ├── SharedState │ │ │ └── index.ts │ │ ├── CommandMenu │ │ │ ├── const.ts │ │ │ └── types.ts │ │ ├── Selection │ │ │ └── selection.scss │ │ ├── Autocomplete │ │ │ └── utils.ts │ │ └── WidgetDecoration │ │ │ └── types.ts │ ├── base │ │ ├── specs.ts │ │ ├── index.ts │ │ └── BaseInputRules │ │ │ └── index.ts │ ├── markdown │ │ ├── Table │ │ │ ├── const.ts │ │ │ └── plugins │ │ │ │ └── TableCellContextPlugin │ │ │ │ └── floating.scss │ │ ├── Deflist │ │ │ ├── utils.ts │ │ │ ├── const.ts │ │ │ └── DeflistSpecs │ │ │ │ └── const.ts │ │ ├── Blockquote │ │ │ └── const.ts │ │ ├── Image │ │ │ └── const.ts │ │ ├── Link │ │ │ └── PlaceholderWidget │ │ │ │ └── widget.scss │ │ ├── Html │ │ │ └── const.ts │ │ ├── CodeBlock │ │ │ ├── const.ts │ │ │ └── CodeBlockHighlight │ │ │ │ └── CodeBlockHighlight.scss │ │ ├── Lists │ │ │ └── const.ts │ │ └── Heading │ │ │ └── const.ts │ ├── specs.ts │ └── index.ts ├── view │ ├── components │ │ ├── index.ts │ │ └── YfmHtml │ │ │ └── index.ts │ ├── README.md │ ├── hooks │ │ ├── useYfmShowElemWithId │ │ │ └── index.ts │ │ ├── index.ts │ │ └── useFilesGallery │ │ │ ├── index.ts │ │ │ └── constants.ts │ ├── types │ │ └── index.ts │ ├── index.ts │ └── hocs │ │ ├── withMermaid │ │ └── types.ts │ │ ├── withYfmHtml │ │ └── types.ts │ │ └── withLatex │ │ └── types.ts ├── modules │ └── search │ │ ├── components │ │ ├── _constants.scss │ │ ├── SearchCompactView.scss │ │ ├── SearchCardView.scss │ │ └── SearchPopup.scss │ │ ├── index.ts │ │ └── types.ts ├── forms │ ├── utils.ts │ ├── index.ts │ ├── components │ │ └── index.ts │ ├── base │ │ ├── FormFooter.scss │ │ ├── FormLayout.scss │ │ └── Form.scss │ ├── UrlInputRow.scss │ └── ImageForm.scss ├── i18n │ ├── empty-row │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── gpt │ │ ├── loading │ │ │ ├── ru.json │ │ │ ├── en.json │ │ │ └── index.ts │ │ ├── errors │ │ │ ├── ru.json │ │ │ ├── en.json │ │ │ └── index.ts │ │ ├── extension │ │ │ ├── ru.json │ │ │ ├── en.json │ │ │ └── index.ts │ │ └── dialog │ │ │ └── index.ts │ ├── hints │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── math-hint │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── suggest │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── gallery │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── codeblock │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── widgets │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── yfm-note │ │ ├── en.json │ │ ├── ru.json │ │ └── index.ts │ ├── forms │ │ └── index.ts │ ├── bundle │ │ └── index.ts │ ├── common │ │ ├── index.ts │ │ ├── en.json │ │ └── ru.json │ ├── md-hints │ │ └── index.ts │ ├── menubar │ │ └── index.ts │ ├── search │ │ └── index.ts │ ├── yfm-block │ │ ├── index.ts │ │ ├── en.json │ │ └── ru.json │ ├── yfm-layout │ │ └── index.ts │ ├── yfm-table │ │ └── index.ts │ ├── placeholder │ │ └── index.ts │ └── action-previews │ │ └── index.ts ├── bundle │ ├── settings │ │ └── MarkdownHints │ │ │ └── index.ts │ ├── config │ │ ├── index.ts │ │ └── previews │ │ │ └── ActionPreview.tsx │ └── context.ts ├── markdown-it │ ├── ins.ts │ ├── sub.ts │ ├── mark.ts │ ├── color.ts │ └── emoji.ts ├── common │ └── layout.ts ├── toolbar │ ├── ToolbarGroup.scss │ ├── const.ts │ ├── ToolbarButton.scss │ ├── index.ts │ ├── FlexToolbar.scss │ ├── Toolbar.scss │ └── PreviewTooltip.scss ├── shortcuts │ ├── index.ts │ └── types.ts ├── markup │ ├── index.ts │ ├── codemirror │ │ ├── html-to-markdown │ │ │ └── __tests__ │ │ │ │ └── fixtures │ │ │ │ ├── header-and-link │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── newline │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── basic-text │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── image │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── lists │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── headers │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── links │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── formatting │ │ │ │ ├── output.md │ │ │ │ └── input.html │ │ │ │ ├── links-with-formatting │ │ │ │ └── output.md │ │ │ │ └── tables │ │ │ │ └── output.md │ │ ├── files-upload-plugin │ │ │ ├── const.ts │ │ │ ├── index.ts │ │ │ └── effects.ts │ │ ├── logger-facet.ts │ │ ├── react-facet.ts │ │ └── index.ts │ └── commands │ │ ├── math.ts │ │ └── index.ts ├── styles │ ├── markdown.scss │ ├── styles.scss │ ├── yc-file.scss │ ├── mixins.scss │ └── _zindex.scss ├── utils │ ├── carousel │ │ └── index.ts │ └── platform.ts ├── core │ └── types │ │ ├── keymap.ts │ │ └── node-views.ts ├── table-utils │ ├── const.ts │ ├── index.ts │ └── helpers.ts ├── version.ts ├── classname.ts ├── plugins │ └── index.ts ├── react-utils │ └── index.ts └── .eslintrc ├── .npmrc ├── tests ├── esbuild-test │ ├── node-module-alias-fallback.js │ └── esbuild-to-test.mjs ├── setup.ts └── visual-tests │ ├── public │ └── assets │ │ └── test-image.jpg │ ├── __snapshots__ │ ├── Presets.visual.test.tsx-snapshots │ │ ├── Extensions-Presets-Full-dark-webkit-linux.png │ │ ├── Extensions-Presets-Full-light-webkit-linux.png │ │ ├── Extensions-Presets-YFM-dark-chromium-linux.png │ │ ├── Extensions-Presets-YFM-dark-webkit-linux.png │ │ ├── Extensions-Presets-YFM-light-webkit-linux.png │ │ ├── Extensions-Presets-Zero-dark-webkit-linux.png │ │ ├── Extensions-Presets-Zero-light-webkit-linux.png │ │ ├── Extensions-Presets-Custom-dark-webkit-linux.png │ │ ├── Extensions-Presets-Custom-light-webkit-linux.png │ │ ├── Extensions-Presets-Default-dark-webkit-linux.png │ │ ├── Extensions-Presets-Full-dark-chromium-linux.png │ │ ├── Extensions-Presets-Full-light-chromium-linux.png │ │ ├── Extensions-Presets-YFM-light-chromium-linux.png │ │ ├── Extensions-Presets-Zero-dark-chromium-linux.png │ │ ├── Extensions-Presets-Zero-light-chromium-linux.png │ │ ├── Extensions-Presets-Custom-dark-chromium-linux.png │ │ ├── Extensions-Presets-Custom-light-chromium-linux.png │ │ ├── Extensions-Presets-Default-dark-chromium-linux.png │ │ ├── Extensions-Presets-Default-light-chromium-linux.png │ │ ├── Extensions-Presets-Default-light-webkit-linux.png │ │ ├── Extensions-Presets-Common-Mark-dark-webkit-linux.png │ │ ├── Extensions-Presets-Common-Mark-light-webkit-linux.png │ │ ├── Extensions-Presets-Common-Mark-dark-chromium-linux.png │ │ └── Extensions-Presets-Common-Mark-light-chromium-linux.png │ ├── YfmExtensions.visual.test.tsx-snapshots │ │ ├── Extensions-YFM-YFM-Cut-dark-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Cut-light-webkit-linux.png │ │ ├── Extensions-YFM-YFM-File-dark-webkit-linux.png │ │ ├── Extensions-YFM-YFM-HTML-dark-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Tabs-dark-webkit-linux.png │ │ ├── Extensions-YFM-Task-lists-dark-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Cut-dark-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Cut-light-chromium-linux.png │ │ ├── Extensions-YFM-YFM-File-dark-chromium-linux.png │ │ ├── Extensions-YFM-YFM-File-light-webkit-linux.png │ │ ├── Extensions-YFM-YFM-HTML-dark-chromium-linux.png │ │ ├── Extensions-YFM-YFM-HTML-light-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Notes-dark-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Notes-light-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Table-dark-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Table-light-webkit-linux.png │ │ ├── Extensions-YFM-YFM-Tabs-dark-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Tabs-light-webkit-linux.png │ │ ├── Extensions-YFM-Task-lists-dark-chromium-linux.png │ │ ├── Extensions-YFM-Task-lists-light-chromium-linux.png │ │ ├── Extensions-YFM-Task-lists-light-webkit-linux.png │ │ ├── Extensions-YFM-YFM-File-light-chromium-linux.png │ │ ├── Extensions-YFM-YFM-HTML-light-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Notes-dark-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Notes-light-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Table-dark-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Table-light-chromium-linux.png │ │ ├── Extensions-YFM-YFM-Tabs-light-chromium-linux.png │ │ ├── Extensions-YFM-LaTeX-Formulas-dark-webkit-linux.png │ │ ├── Extensions-YFM-LaTeX-Formulas-light-webkit-linux.png │ │ ├── Extensions-YFM-Mermaid-diagram-dark-webkit-linux.png │ │ ├── Extensions-YFM-Folding-Headings-dark-chromium-linux.png │ │ ├── Extensions-YFM-Folding-Headings-dark-webkit-linux.png │ │ ├── Extensions-YFM-Folding-Headings-light-webkit-linux.png │ │ ├── Extensions-YFM-LaTeX-Formulas-dark-chromium-linux.png │ │ ├── Extensions-YFM-LaTeX-Formulas-light-chromium-linux.png │ │ ├── Extensions-YFM-Mermaid-diagram-dark-chromium-linux.png │ │ ├── Extensions-YFM-Mermaid-diagram-light-chromium-linux.png │ │ ├── Extensions-YFM-Mermaid-diagram-light-webkit-linux.png │ │ └── Extensions-YFM-Folding-Headings-light-chromium-linux.png │ ├── MarkdownExtensions.visual.test.tsx-snapshots │ │ ├── Extensions-Markdown-Code-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Code-light-webkit-linux.png │ │ ├── Extensions-Markdown-Links-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Lists-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Code-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Code-light-chromium-linux.png │ │ ├── Extensions-Markdown-Emojis-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Emojis-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Emojis-light-webkit-linux.png │ │ ├── Extensions-Markdown-Emphasis-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Heading-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Heading-light-webkit-linux.png │ │ ├── Extensions-Markdown-Images-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Images-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Images-light-webkit-linux.png │ │ ├── Extensions-Markdown-Links-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Links-light-chromium-linux.png │ │ ├── Extensions-Markdown-Links-light-webkit-linux.png │ │ ├── Extensions-Markdown-Lists-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Lists-light-chromium-linux.png │ │ ├── Extensions-Markdown-Lists-light-webkit-linux.png │ │ ├── Extensions-Markdown-Tables-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Tables-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Tables-light-webkit-linux.png │ │ ├── Extensions-Markdown-Emojis-light-chromium-linux.png │ │ ├── Extensions-Markdown-Emphasis-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Emphasis-light-webkit-linux.png │ │ ├── Extensions-Markdown-Heading-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Heading-light-chromium-linux.png │ │ ├── Extensions-Markdown-Images-light-chromium-linux.png │ │ ├── Extensions-Markdown-Tables-light-chromium-linux.png │ │ ├── Extensions-Markdown-Blockquotes-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Blockquotes-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Blockquotes-light-webkit-linux.png │ │ ├── Extensions-Markdown-Emphasis-light-chromium-linux.png │ │ ├── Extensions-Markdown-Blockquotes-light-chromium-linux.png │ │ ├── Extensions-Markdown-Definition-list-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Definition-list-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Definition-list-light-chromium-linux.png │ │ ├── Extensions-Markdown-Definition-list-light-webkit-linux.png │ │ ├── Extensions-Markdown-Horizontal-Rules-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Horizontal-Rules-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Horizontal-Rules-light-webkit-linux.png │ │ ├── Extensions-Markdown-Horizontal-Rules-light-chromium-linux.png │ │ ├── Extensions-Markdown-Subscript-Superscript-dark-chromium-linux.png │ │ ├── Extensions-Markdown-Subscript-Superscript-dark-webkit-linux.png │ │ ├── Extensions-Markdown-Subscript-Superscript-light-webkit-linux.png │ │ └── Extensions-Markdown-Subscript-Superscript-light-chromium-linux.png │ ├── Cut.visual.test.tsx-snapshots │ │ ├── Cut-specific-should-open-second-cut-wysiwyg-dark-webkit-linux.png │ │ ├── Cut-specific-should-open-second-cut-wysiwyg-dark-chromium-linux.png │ │ ├── Cut-specific-should-open-second-cut-wysiwyg-light-webkit-linux.png │ │ ├── Cut-specific-should-open-second-cut-wysiwyg-light-chromium-linux.png │ │ ├── Cut-specific-should-open-second-cut-in-preview-markup-dark-webkit-linux.png │ │ ├── Cut-specific-should-cut-inside-open-second-cut-wysiwyg-dark-webkit-linux.png │ │ ├── Cut-specific-should-cut-inside-open-second-cut-wysiwyg-light-webkit-linux.png │ │ ├── Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png │ │ ├── Cut-specific-should-open-second-cut-in-preview-markup-light-webkit-linux.png │ │ ├── Cut-specific-should-cut-inside-open-second-cut-wysiwyg-dark-chromium-linux.png │ │ ├── Cut-specific-should-cut-inside-open-second-cut-wysiwyg-light-chromium-linux.png │ │ └── Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png │ ├── YfmTable.visual.test.tsx-snapshots │ │ ├── YfmTable-cell-menu-wysiwyg-row-menu-dark-chromium-linux.png │ │ ├── YfmTable-cell-menu-wysiwyg-row-menu-light-chromium-linux.png │ │ ├── YfmTable-cell-menu-wysiwyg-column-menu-dark-chromium-linux.png │ │ ├── YfmTable-cell-menu-wysiwyg-column-menu-light-chromium-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-webkit-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-webkit-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-dark-webkit-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-light-webkit-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-dark-chromium-linux.png │ │ ├── YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-light-chromium-linux.png │ │ ├── YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-dark-webkit-linux.png │ │ ├── YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-light-webkit-linux.png │ │ ├── YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-dark-chromium-linux.png │ │ ├── YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-light-chromium-linux.png │ │ ├── YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-dark-webkit-linux.png │ │ ├── YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-dark-webkit-linux.png │ │ ├── YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-dark-chromium-linux.png │ │ ├── YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-light-chromium-linux.png │ │ ├── YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-light-webkit-linux.png │ │ ├── YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-dark-chromium-linux.png │ │ ├── YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-light-webkit-linux.png │ │ └── YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-light-chromium-linux.png │ ├── File.visual.test.tsx-snapshots │ │ ├── File-insert-should-insert-via-toolbar-wysiwyg-dark-chromium-linux.png │ │ ├── File-insert-should-insert-via-toolbar-wysiwyg-dark-webkit-linux.png │ │ ├── File-insert-should-insert-via-toolbar-wysiwyg-light-webkit-linux.png │ │ ├── File-insert-should-insert-via-toolbar-wysiwyg-light-chromium-linux.png │ │ ├── File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-webkit-linux.png │ │ ├── File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-webkit-linux.png │ │ ├── File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-chromium-linux.png │ │ └── File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-chromium-linux.png │ ├── Image.visual.test.tsx-snapshots │ │ ├── Images-insert-should-insert-via-toolbar-wysiwyg-dark-webkit-linux.png │ │ ├── Images-insert-should-insert-via-toolbar-wysiwyg-light-webkit-linux.png │ │ ├── Images-insert-should-insert-via-toolbar-wysiwyg-dark-chromium-linux.png │ │ ├── Images-insert-should-insert-via-toolbar-wysiwyg-light-chromium-linux.png │ │ ├── Images-specific-should-change-image-size-wysiwyg-dark-chromium-linux.png │ │ ├── Images-specific-should-change-image-size-wysiwyg-light-chromium-linux.png │ │ ├── Images-specific-should-change-image-size-wysiwyg-edit-popup-dark-chromium-linux.png │ │ ├── Images-specific-should-change-image-size-wysiwyg-edit-popup-light-chromium-linux.png │ │ ├── Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-webkit-linux.png │ │ ├── Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-webkit-linux.png │ │ ├── Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-chromium-linux.png │ │ └── Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-chromium-linux.png │ ├── Lists.visual.test.tsx-snapshots │ │ ├── Bullet-lists-specific-should-lift-list-item-wysiwyg-dark-webkit-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-markup-dark-webkit-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-markup-light-webkit-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-wysiwyg-dark-webkit-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-markup-dark-webkit-linux.png │ │ ├── Bullet-lists-specific-should-lift-list-item-wysiwyg-dark-chromium-linux.png │ │ ├── Bullet-lists-specific-should-lift-list-item-wysiwyg-light-webkit-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-wysiwyg-dark-chromium-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-wysiwyg-light-webkit-linux.png │ │ ├── Ordered-lists-specific-should-lift-list-item-wysiwyg-dark-webkit-linux.png │ │ ├── Ordered-lists-specific-should-lift-list-item-wysiwyg-light-webkit-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-markup-light-webkit-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-wysiwyg-dark-webkit-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-wysiwyg-light-webkit-linux.png │ │ ├── Bullet-lists-specific-should-lift-list-item-wysiwyg-light-chromium-linux.png │ │ ├── Bullet-lists-specific-should-sink-list-item-wysiwyg-light-chromium-linux.png │ │ ├── Ordered-lists-specific-should-lift-list-item-wysiwyg-dark-chromium-linux.png │ │ ├── Ordered-lists-specific-should-lift-list-item-wysiwyg-light-chromium-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png │ │ ├── Ordered-lists-specific-should-sink-list-item-wysiwyg-dark-chromium-linux.png │ │ └── Ordered-lists-specific-should-sink-list-item-wysiwyg-light-chromium-linux.png │ ├── Colorify.visual.test.tsx-snapshots │ │ ├── Colorify-specific-should-escape-parentheses-markup-dark-webkit-linux.png │ │ ├── Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png │ │ ├── Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png │ │ ├── Colorify-specific-should-escape-parentheses-markup-light-webkit-linux.png │ │ ├── Colorify-specific-should-escape-parentheses-wysiwyg-dark-chromium-linux.png │ │ ├── Colorify-specific-should-escape-parentheses-wysiwyg-dark-webkit-linux.png │ │ ├── Colorify-specific-should-escape-parentheses-wysiwyg-light-webkit-linux.png │ │ └── Colorify-specific-should-escape-parentheses-wysiwyg-light-chromium-linux.png │ ├── Clipboard.visual.test.tsx-snapshots │ │ ├── Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-webkit-linux.png │ │ ├── Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-webkit-linux.png │ │ ├── Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png │ │ ├── Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-webkit-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-webkit-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-dark-webkit-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-dark-chromium-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-light-chromium-linux.png │ │ ├── Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-dark-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-light-chromium-linux.png │ │ ├── Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-webkit-linux.png │ │ ├── Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png │ │ ├── Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png │ │ ├── Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-dark-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-light-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-dark-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-light-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-dark-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-light-chromium-linux.png │ │ ├── Clipboard-should-copy-from-markup-mode-and-paste-formatted-to-wysiwyg-dark-chromium-linux.png │ │ ├── Clipboard-should-copy-from-markup-mode-and-paste-formatted-to-wysiwyg-light-chromium-linux.png │ │ ├── Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png │ │ ├── Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-light-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-dark-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-light-chromium-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-insert-into-inline-code-without-formatting-dark-webkit-linux.png │ │ ├── Clipboard-WYSIWYG-mode-Paste-should-insert-into-inline-code-without-formatting-light-webkit-linux.png │ │ └── Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-dark-chromium-linux.png │ ├── Link.visual.test.tsx-snapshots │ │ ├── Link-specific-should-open-edit-popup-on-link-click-wysiwyg-dark-webkit-linux.png │ │ ├── Link-specific-should-open-edit-popup-on-link-click-wysiwyg-light-webkit-linux.png │ │ ├── Link-specific-should-open-edit-popup-on-link-click-wysiwyg-dark-chromium-linux.png │ │ └── Link-specific-should-open-edit-popup-on-link-click-wysiwyg-light-chromium-linux.png │ ├── Toolbar.visual.test.tsx-snapshots │ │ ├── Toolbar-should-hide-actions-at-small-width-width-large-light-webkit-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-width-medium-light-webkit-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-width-small-light-webkit-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-width-large-light-chromium-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-width-medium-light-chromium-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-width-small-light-chromium-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-dark-webkit-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-dark-chromium-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-light-webkit-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-dark-webkit-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-light-webkit-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png │ │ ├── Toolbar-should-hide-actions-at-small-width-markup-width-small-light-webkit-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-light-chromium-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-dark-chromium-linux.png │ │ ├── Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-light-chromium-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-webkit-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-webkit-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-dark-webkit-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-dark-chromium-linux.png │ │ ├── Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-light-webkit-linux.png │ │ └── Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-light-chromium-linux.png │ └── Experimental.visual.test.tsx-snapshots │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-webkit-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-webkit-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-webkit-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-webkit-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-dark-webkit-linux.png │ │ ├── Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-dark-chromium-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-light-webkit-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-light-chromium-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-dark-chromium-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-dark-webkit-linux.png │ │ ├── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-light-webkit-linux.png │ │ └── Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-light-chromium-linux.png │ ├── YfmExtensions.helpers.tsx │ └── Presets.helpers.tsx ├── .eslintignore ├── .prettierrc.js ├── demo ├── stories │ ├── gpt │ │ ├── content.ts │ │ └── GPT.stories.tsx │ ├── ghost │ │ ├── README.md │ │ ├── ghostExtension │ │ │ ├── effects.ts │ │ │ └── index.ts │ │ └── Ghost.stories.tsx │ ├── view │ │ └── gallery │ │ │ └── ViewWithGallery.scss │ ├── editor-in-editor │ │ ├── EditorInEditorExtension │ │ │ └── index.scss │ │ └── EditorInEditor.stories.tsx │ ├── quoteLink │ │ └── quoteLink.stories.ts │ ├── mobile-editor │ │ └── MobileEditor.stories.ts │ └── remember-mode │ │ └── RememberMode.stories.tsx ├── .eslintrc ├── utils │ ├── cn.ts │ └── getInitialMd.ts └── defaults │ └── excluded-controls.ts ├── docs └── assets │ └── gifs │ ├── prompt-preset-gpt.gif │ └── custom-prompt-preset-gpt.gif ├── .storybook └── manager.ts ├── .stylelintrc ├── .github ├── workflows │ └── pr-preview-build.yml └── ISSUE_TEMPLATE │ └── feature_request.md └── .editorconfig /.nvmrc: -------------------------------------------------------------------------------- 1 | 24 2 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @d3m1d0v @makhnatkin 2 | 3 | -------------------------------------------------------------------------------- /src/cm/view.ts: -------------------------------------------------------------------------------- 1 | export * from '@codemirror/view'; 2 | -------------------------------------------------------------------------------- /src/pm/view.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-view'; 2 | -------------------------------------------------------------------------------- /src/cm/state.ts: -------------------------------------------------------------------------------- 1 | export * from '@codemirror/state'; 2 | -------------------------------------------------------------------------------- /src/pm/history.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-history'; 2 | -------------------------------------------------------------------------------- /src/pm/keymap.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-keymap'; 2 | -------------------------------------------------------------------------------- /src/pm/model.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-model'; 2 | -------------------------------------------------------------------------------- /src/pm/state.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-state'; 2 | -------------------------------------------------------------------------------- /src/cm/commands.ts: -------------------------------------------------------------------------------- 1 | export * from '@codemirror/commands'; 2 | -------------------------------------------------------------------------------- /src/cm/language.ts: -------------------------------------------------------------------------------- 1 | export * from '@codemirror/language'; 2 | -------------------------------------------------------------------------------- /src/extensions/additional/index.ts: -------------------------------------------------------------------------------- 1 | export * from './GPT'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Emoji/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Emoji'; 2 | -------------------------------------------------------------------------------- /src/pm/commands.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-commands'; 2 | -------------------------------------------------------------------------------- /src/pm/transform.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-transform'; 2 | -------------------------------------------------------------------------------- /src/view/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmHtml'; 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmjs.org/ 2 | save-exact=true 3 | -------------------------------------------------------------------------------- /src/cm/autocomplete.ts: -------------------------------------------------------------------------------- 1 | export * from '@codemirror/autocomplete'; 2 | -------------------------------------------------------------------------------- /src/modules/search/components/_constants.scss: -------------------------------------------------------------------------------- 1 | $width: 428px; 2 | -------------------------------------------------------------------------------- /src/pm/inputrules.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-inputrules'; 2 | -------------------------------------------------------------------------------- /src/pm/test-builder.ts: -------------------------------------------------------------------------------- 1 | export * from 'prosemirror-test-builder'; 2 | -------------------------------------------------------------------------------- /src/view/README.md: -------------------------------------------------------------------------------- 1 | # `@doc-tools/yfm-editor/view` sub-module 2 | -------------------------------------------------------------------------------- /src/extensions/behavior/Search/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Search'; 2 | -------------------------------------------------------------------------------- /src/forms/utils.ts: -------------------------------------------------------------------------------- 1 | export {enterKeyHandler} from '../utils/handlers'; 2 | -------------------------------------------------------------------------------- /src/i18n/empty-row/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "snippet.text": "Empty row" 3 | } 4 | -------------------------------------------------------------------------------- /tests/esbuild-test/node-module-alias-fallback.js: -------------------------------------------------------------------------------- 1 | export default null; 2 | -------------------------------------------------------------------------------- /tests/setup.ts: -------------------------------------------------------------------------------- 1 | import './pollyfills'; 2 | import './toMatchNode'; 3 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build 2 | coverage 3 | node_modules 4 | storybook-static 5 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require("@gravity-ui/prettier-config"); 2 | -------------------------------------------------------------------------------- /src/extensions/base/specs.ts: -------------------------------------------------------------------------------- 1 | export * from './BaseSchema/BaseSchemaSpecs'; 2 | -------------------------------------------------------------------------------- /src/extensions/markdown/Table/const.ts: -------------------------------------------------------------------------------- 1 | export * from './TableSpecs/const'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Emoji/EmojiInput/index.ts: -------------------------------------------------------------------------------- 1 | export * from './EmojiInput'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Emoji/EmojiSpecs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './EmojiSpecs'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmNote/const.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmNoteSpecs/const'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmNote/utils.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmNoteSpecs/utils'; 2 | -------------------------------------------------------------------------------- /src/i18n/empty-row/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "snippet.text": "Пустая строка" 3 | } 4 | -------------------------------------------------------------------------------- /src/bundle/settings/MarkdownHints/index.ts: -------------------------------------------------------------------------------- 1 | export * from './MarkdownHints'; 2 | -------------------------------------------------------------------------------- /src/extensions/behavior/ClicksOnEdges/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ClicksOnEdges'; 2 | -------------------------------------------------------------------------------- /src/extensions/behavior/SharedState/index.ts: -------------------------------------------------------------------------------- 1 | export * from './SharedState'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Emoji/EmojiSuggest/index.ts: -------------------------------------------------------------------------------- 1 | export * from './EmojiSuggest'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/const.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmTableSpecs/const'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/utils.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmTableSpecs/utils'; 2 | -------------------------------------------------------------------------------- /src/forms/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base'; 2 | export * from './components'; 3 | -------------------------------------------------------------------------------- /src/i18n/gpt/loading/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "loading-text": "GPT генерирует ответ..." 3 | } 4 | -------------------------------------------------------------------------------- /src/view/hooks/useYfmShowElemWithId/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useYfmShowElemWithId'; 2 | -------------------------------------------------------------------------------- /src/extensions/additional/Mermaid/MermaidNodeView/index.ts: -------------------------------------------------------------------------------- 1 | export * from './NodeView'; 2 | -------------------------------------------------------------------------------- /src/extensions/behavior/Search/types.ts: -------------------------------------------------------------------------------- 1 | export type SearchViewState = {open: boolean}; 2 | -------------------------------------------------------------------------------- /src/markdown-it/ins.ts: -------------------------------------------------------------------------------- 1 | import ins from 'markdown-it-ins'; 2 | 3 | export default ins; 4 | -------------------------------------------------------------------------------- /src/markdown-it/sub.ts: -------------------------------------------------------------------------------- 1 | import sub from 'markdown-it-sub'; 2 | 3 | export default sub; 4 | -------------------------------------------------------------------------------- /demo/stories/gpt/content.ts: -------------------------------------------------------------------------------- 1 | export const initialMdContent = `Markdown Editor GPT Playground`; 2 | -------------------------------------------------------------------------------- /src/common/layout.ts: -------------------------------------------------------------------------------- 1 | export const LAYOUT = { 2 | STICKY_TOOLBAR: 'sticky-toolbar', 3 | }; 4 | -------------------------------------------------------------------------------- /src/extensions/behavior/CommandMenu/const.ts: -------------------------------------------------------------------------------- 1 | export const DecoClassName = 'pm-command-input'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Emoji/EmojiSuggest/const.ts: -------------------------------------------------------------------------------- 1 | export const DecoClassName = 'pm-emoji-input'; 2 | -------------------------------------------------------------------------------- /src/i18n/gpt/loading/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "loading-text": "GPT is generating a response..." 3 | } 4 | -------------------------------------------------------------------------------- /src/markdown-it/mark.ts: -------------------------------------------------------------------------------- 1 | import mark from 'markdown-it-mark'; 2 | 3 | export default mark; 4 | -------------------------------------------------------------------------------- /src/pm/utils.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore // TODO: fix cjs build 2 | export * from 'prosemirror-utils'; 3 | -------------------------------------------------------------------------------- /src/extensions/additional/FoldingHeading/index.ts: -------------------------------------------------------------------------------- 1 | export {FoldingHeading} from './FoldingHeading'; 2 | -------------------------------------------------------------------------------- /src/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/index.ts: -------------------------------------------------------------------------------- 1 | export * from './NodeView'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImageForm/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ImageForm'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmFile/index.scss: -------------------------------------------------------------------------------- 1 | .yfm-editor .yfm-file { 2 | pointer-events: none; 3 | } 4 | -------------------------------------------------------------------------------- /src/forms/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ButtonAttach'; 2 | export * from './NumberInput'; 3 | -------------------------------------------------------------------------------- /src/i18n/hints/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "math_hint": "Math uses", 3 | "math_hint_katex": "Katex syntax" 4 | } 5 | -------------------------------------------------------------------------------- /src/toolbar/ToolbarGroup.scss: -------------------------------------------------------------------------------- 1 | .g-md-toolbar-group { 2 | display: flex; 3 | gap: 0 2px; 4 | } 5 | -------------------------------------------------------------------------------- /src/toolbar/const.ts: -------------------------------------------------------------------------------- 1 | export enum ToolbarTooltipDelay { 2 | Open = 250, 3 | Close = 150, 4 | } 5 | -------------------------------------------------------------------------------- /src/view/hooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useYfmShowElemWithId'; 2 | export * from './useFilesGallery'; 3 | -------------------------------------------------------------------------------- /src/view/hooks/useFilesGallery/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useFilesGallery'; 2 | export * from './types'; 3 | -------------------------------------------------------------------------------- /src/view/types/index.ts: -------------------------------------------------------------------------------- 1 | export type TransformMeta = {script?: string[]; style?: string[]} | undefined; 2 | -------------------------------------------------------------------------------- /demo/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@gravity-ui/eslint-config/client", "plugin:react/jsx-runtime"] 3 | } 4 | -------------------------------------------------------------------------------- /src/extensions/additional/FoldingHeading/FoldingHeadingSpec/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FoldingHeadingSpecs'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Checkbox/const.ts: -------------------------------------------------------------------------------- 1 | export {CheckboxAttr, CheckboxNode, b} from './CheckboxSpecs/const'; 2 | -------------------------------------------------------------------------------- /src/i18n/math-hint/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "math_hint": "Math uses", 3 | "math_hint_katex": "Katex syntax" 4 | } 5 | -------------------------------------------------------------------------------- /src/shortcuts/index.ts: -------------------------------------------------------------------------------- 1 | import './default'; 2 | 3 | export * from './const'; 4 | export * from './formatter'; 5 | -------------------------------------------------------------------------------- /src/view/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | export * from './hooks'; 3 | export * from './types'; 4 | -------------------------------------------------------------------------------- /src/extensions/markdown/Deflist/utils.ts: -------------------------------------------------------------------------------- 1 | export {defDescType, defListType, defTermType} from './DeflistSpecs'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/Video/const.ts: -------------------------------------------------------------------------------- 1 | export * from './VideoSpecs/const'; 2 | 3 | export const vAction = 'video'; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmNote/index.scss: -------------------------------------------------------------------------------- 1 | .yfm-editor p[yfm_block='yfm-note-title'] { 2 | font-weight: 700; 3 | } 4 | -------------------------------------------------------------------------------- /src/markup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codemirror'; 2 | export * from './commands'; 3 | export * from './editor'; 4 | -------------------------------------------------------------------------------- /src/extensions/additional/Mermaid/types.ts: -------------------------------------------------------------------------------- 1 | export type MermaidEntitySharedState = { 2 | editing: boolean; 3 | }; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenu/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FloatingMenu'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FloatingPopup'; 2 | -------------------------------------------------------------------------------- /src/markdown-it/color.ts: -------------------------------------------------------------------------------- 1 | import {colorPlugin} from '@diplodoc/color-extension'; 2 | 3 | export default colorPlugin; 4 | -------------------------------------------------------------------------------- /src/styles/markdown.scss: -------------------------------------------------------------------------------- 1 | @use '../extensions/yfm/Color/colors'; 2 | @use './yc-file.scss'; 3 | @use './yc-colors.scss'; 4 | -------------------------------------------------------------------------------- /src/extensions/specs.ts: -------------------------------------------------------------------------------- 1 | export * from './base/specs'; 2 | export * from './markdown/specs'; 3 | export * from './yfm/specs'; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/Checkbox/utils.ts: -------------------------------------------------------------------------------- 1 | export {checkboxType, checkboxInputType, checkboxLabelType} from './CheckboxSpecs'; 2 | -------------------------------------------------------------------------------- /demo/stories/ghost/README.md: -------------------------------------------------------------------------------- 1 | This is an example for documentation on creating and adding a text-bound extension for content mode. 2 | -------------------------------------------------------------------------------- /demo/stories/view/gallery/ViewWithGallery.scss: -------------------------------------------------------------------------------- 1 | .view-with-gallery { 2 | img { 3 | cursor: pointer; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/extensions/additional/YfmHtmlBlock/types.ts: -------------------------------------------------------------------------------- 1 | export type YfmHtmlBlockEntitySharedState = { 2 | editing: boolean; 3 | }; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FloatingPlusButton'; 2 | -------------------------------------------------------------------------------- /src/i18n/hints/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "math_hint": "При создании формул используется", 3 | "math_hint_katex": "синтаксис Katex" 4 | } 5 | -------------------------------------------------------------------------------- /src/styles/styles.scss: -------------------------------------------------------------------------------- 1 | @use './yc-file.scss'; 2 | @use './yc-colors.scss'; 3 | @use './yfm-themes.scss'; 4 | @use './list.scss'; 5 | -------------------------------------------------------------------------------- /src/utils/carousel/index.ts: -------------------------------------------------------------------------------- 1 | export {IndexCarousel} from './IndexCarousel'; 2 | export {ArrayCarousel} from './ArrayCarousel'; 3 | -------------------------------------------------------------------------------- /demo/utils/cn.ts: -------------------------------------------------------------------------------- 1 | import {withNaming} from '@bem-react/classname'; 2 | 3 | export const block = withNaming({e: '__', m: '_', v: '_'}); 4 | -------------------------------------------------------------------------------- /docs/assets/gifs/prompt-preset-gpt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/docs/assets/gifs/prompt-preset-gpt.gif -------------------------------------------------------------------------------- /src/extensions/additional/Mermaid/const.ts: -------------------------------------------------------------------------------- 1 | export * from './MermaidSpecs/const'; 2 | export const MermaidAction = 'createMermaid'; 3 | -------------------------------------------------------------------------------- /src/extensions/markdown/Blockquote/const.ts: -------------------------------------------------------------------------------- 1 | export {blockquoteNodeName, blockquoteType, isBlockqouteNode} from './BlockquoteSpecs'; 2 | -------------------------------------------------------------------------------- /src/extensions/markdown/Deflist/const.ts: -------------------------------------------------------------------------------- 1 | export {DeflistNode} from './DeflistSpecs'; 2 | 3 | export const dlAction = 'toDefList'; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FloatingMenuControl'; 2 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FloatingPlusControl'; 2 | -------------------------------------------------------------------------------- /src/forms/base/FormFooter.scss: -------------------------------------------------------------------------------- 1 | .g-md-form-footer { 2 | display: flex; 3 | justify-content: flex-end; 4 | gap: 0 8px; 5 | } 6 | -------------------------------------------------------------------------------- /src/forms/base/FormLayout.scss: -------------------------------------------------------------------------------- 1 | .g-md-form-layout { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 8px 0; 5 | } 6 | -------------------------------------------------------------------------------- /src/i18n/math-hint/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "math_hint": "При создании формул используется", 3 | "math_hint_katex": "синтаксис Katex" 4 | } 5 | -------------------------------------------------------------------------------- /src/i18n/suggest/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "error-title": "Error", 3 | "error-desc": "Error loading", 4 | "empty-msg": "Not found" 5 | } 6 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/header-and-link/output.md: -------------------------------------------------------------------------------- 1 | # Main Title 2 | [Link](https://example.com/ "Link") -------------------------------------------------------------------------------- /src/modules/search/index.ts: -------------------------------------------------------------------------------- 1 | export * from './types'; 2 | export * from './components/SearchPopup'; 3 | export {SearchQA} from './qa'; 4 | -------------------------------------------------------------------------------- /src/i18n/gallery/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "link_copied": "The link copied", 3 | "link_copy": "Copy link", 4 | "file_download": "Download" 5 | } 6 | -------------------------------------------------------------------------------- /src/i18n/suggest/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "error-title": "Ошибка", 3 | "error-desc": "Ошибка при загрузке", 4 | "empty-msg": "Не найдено" 5 | } 6 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/header-and-link/input.html: -------------------------------------------------------------------------------- 1 |

Main Title

Link -------------------------------------------------------------------------------- /src/core/types/keymap.ts: -------------------------------------------------------------------------------- 1 | import type {Command} from 'prosemirror-state'; 2 | 3 | export type Keymap = { 4 | [key: string]: Command; 5 | }; 6 | -------------------------------------------------------------------------------- /src/extensions/additional/FoldingHeading/const.ts: -------------------------------------------------------------------------------- 1 | export {YfmHeadingAttr, headingNodeName, type HeadingLevel} from '../../yfm/YfmHeading/const'; 2 | -------------------------------------------------------------------------------- /src/extensions/markdown/Image/const.ts: -------------------------------------------------------------------------------- 1 | export {imageNodeName, ImageAttr} from './ImageSpecs'; 2 | 3 | export const addImageAction = 'addImage'; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmHeading/const.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmHeadingSpecs/const'; 2 | export {HeadingAction} from '../../markdown/Heading/const'; 3 | -------------------------------------------------------------------------------- /src/forms/UrlInputRow.scss: -------------------------------------------------------------------------------- 1 | .g-md-url-input-row { 2 | display: flex; 3 | 4 | &__button { 5 | margin-left: 4px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/i18n/codeblock/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "remove": "Remove", 3 | "empty_option": "No matches found", 4 | "show_line_numbers": "Line numbers" 5 | } 6 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/newline/output.md: -------------------------------------------------------------------------------- 1 | This is a div. 2 | This is another div. 3 | 4 | Div with a line break. -------------------------------------------------------------------------------- /src/utils/platform.ts: -------------------------------------------------------------------------------- 1 | export const isMac = (): boolean => 2 | typeof navigator === 'undefined' ? false : /Mac/.test(navigator.platform); 3 | -------------------------------------------------------------------------------- /tests/esbuild-test/esbuild-to-test.mjs: -------------------------------------------------------------------------------- 1 | const module = await import('../../src'); 2 | 3 | export default Object.keys(module).join(', '); 4 | 5 | -------------------------------------------------------------------------------- /docs/assets/gifs/custom-prompt-preset-gpt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/docs/assets/gifs/custom-prompt-preset-gpt.gif -------------------------------------------------------------------------------- /src/i18n/codeblock/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "remove": "Удалить", 3 | "empty_option": "Ничего не найдено", 4 | "show_line_numbers": "Нумерация строк" 5 | } 6 | -------------------------------------------------------------------------------- /src/i18n/gallery/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "link_copied": "Ссылка скопирована", 3 | "link_copy": "Скопировать ссылку", 4 | "file_download": "Скачать" 5 | } 6 | -------------------------------------------------------------------------------- /src/i18n/widgets/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "iframe": "Add a frame", 3 | "image": "Add an image", 4 | "link": "Add a link", 5 | "file": "Add a file" 6 | } 7 | -------------------------------------------------------------------------------- /src/extensions/additional/GPT/IconRefuge/index.ts: -------------------------------------------------------------------------------- 1 | export {IconRefuge} from './IconRefuge'; 2 | export type {IconRefugeProps} from './IconRefuge.types'; 3 | -------------------------------------------------------------------------------- /src/extensions/additional/GPT/index.ts: -------------------------------------------------------------------------------- 1 | export * from './wGptItemData'; 2 | export * from './gptExtension/gptExtension'; 3 | export * from './MarkupGpt'; 4 | -------------------------------------------------------------------------------- /src/extensions/additional/YfmHtmlBlock/const.ts: -------------------------------------------------------------------------------- 1 | export * from './YfmHtmlBlockSpecs/const'; 2 | export const YfmHtmlBlockAction = 'createYfmHtmlBlock'; 3 | -------------------------------------------------------------------------------- /src/extensions/markdown/Link/PlaceholderWidget/widget.scss: -------------------------------------------------------------------------------- 1 | .g-md-link-placeholder-widget { 2 | margin: 0 2px; 3 | 4 | pointer-events: none; 5 | } 6 | -------------------------------------------------------------------------------- /src/i18n/yfm-note/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": "Note", 3 | "tip": "Tip", 4 | "warning": "Warning", 5 | "alert": "Alert", 6 | "remove": "Remove" 7 | } 8 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/basic-text/output.md: -------------------------------------------------------------------------------- 1 | This is a simple paragraph. 2 | 3 | This is another paragraph with some text. -------------------------------------------------------------------------------- /src/view/components/YfmHtml/index.ts: -------------------------------------------------------------------------------- 1 | export type {YfmMods, YfmStaticViewProps} from './YfmStaticView'; 2 | export {YfmStaticView} from './YfmStaticView'; 3 | -------------------------------------------------------------------------------- /tests/visual-tests/public/assets/test-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/public/assets/test-image.jpg -------------------------------------------------------------------------------- /src/forms/base/Form.scss: -------------------------------------------------------------------------------- 1 | .g-md-form { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 20px 0; 5 | 6 | padding: 12px 12px 20px; 7 | } 8 | -------------------------------------------------------------------------------- /src/markup/codemirror/files-upload-plugin/const.ts: -------------------------------------------------------------------------------- 1 | export const IMG_MAX_HEIGHT = 600; // px 2 | export const SUCCESS_UPLOAD_REMOVE_TIMEOUT = 1000; // 1 sec 3 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/image/output.md: -------------------------------------------------------------------------------- 1 | ![nature](https://github.com/user-attachments/assets/e2cdda03-fa1d-48fd-91e7-88d935f8bb9b) -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/lists/output.md: -------------------------------------------------------------------------------- 1 | 1. First item 2 | 2. Second item 3 | 3. Third item 4 | - Item A 5 | - Item B 6 | - Item C -------------------------------------------------------------------------------- /src/extensions/additional/GPT/IconRefuge/IconRefuge.classname.tsx: -------------------------------------------------------------------------------- 1 | import {cn} from '@bem-react/classname'; 2 | 3 | export const cnIconRefuge = cn('icon-refuge'); 4 | -------------------------------------------------------------------------------- /src/extensions/base/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BaseSchema'; 2 | export * from './BaseStyles'; 3 | export * from './BaseKeymap'; 4 | export * from './BaseInputRules'; 5 | -------------------------------------------------------------------------------- /src/extensions/behavior/Selection/selection.scss: -------------------------------------------------------------------------------- 1 | .g-md-editor.ProseMirror-focused .pm-node-selected { 2 | box-shadow: var(--g-color-text-info) 0 0 0 1px; 3 | } 4 | -------------------------------------------------------------------------------- /src/i18n/yfm-note/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": "Примечание", 3 | "tip": "Совет", 4 | "warning": "Важно", 5 | "alert": "Внимание", 6 | "remove": "Удалить" 7 | } 8 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/basic-text/input.html: -------------------------------------------------------------------------------- 1 |

This is a simple paragraph.

2 |

This is another paragraph with some text.

-------------------------------------------------------------------------------- /src/table-utils/const.ts: -------------------------------------------------------------------------------- 1 | export enum TableRole { 2 | Table = 'table', 3 | Body = 'tableBody', 4 | Row = 'tableRow', 5 | Cell = 'tableCell', 6 | } 7 | -------------------------------------------------------------------------------- /.storybook/manager.ts: -------------------------------------------------------------------------------- 1 | import {addons} from '@storybook/manager-api'; 2 | import {themes} from './theme'; 3 | 4 | addons.setConfig({ 5 | theme: themes.light, 6 | }); 7 | -------------------------------------------------------------------------------- /src/i18n/widgets/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "iframe": "Добавить фрейм", 3 | "image": "Добавить изображение", 4 | "link": "Добавить ссылку", 5 | "file": "Добавить файл" 6 | } 7 | -------------------------------------------------------------------------------- /src/bundle/config/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @deprecated This file is deprecated. Use ToolbarsPreset instead. 3 | */ 4 | export * from './wysiwyg'; 5 | export * from './markup'; 6 | -------------------------------------------------------------------------------- /src/core/types/node-views.ts: -------------------------------------------------------------------------------- 1 | import type {MarkViewConstructor, NodeViewConstructor} from 'prosemirror-view'; 2 | 3 | export type {NodeViewConstructor, MarkViewConstructor}; 4 | -------------------------------------------------------------------------------- /src/extensions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base'; 2 | export * from './behavior'; 3 | export * from './markdown'; 4 | export * from './yfm'; 5 | export * from './additional'; 6 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/image/input.html: -------------------------------------------------------------------------------- 1 | nature -------------------------------------------------------------------------------- /src/toolbar/ToolbarButton.scss: -------------------------------------------------------------------------------- 1 | .g-md-toolbar-button { 2 | &__action-disabled-tooltip { 3 | min-height: fit-content; 4 | padding: 6px 12px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/version.ts: -------------------------------------------------------------------------------- 1 | /** During build process, the current version will be injected here */ 2 | export const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'unknown'; 3 | -------------------------------------------------------------------------------- /src/extensions/yfm/Color/ColorSpecs/const.ts: -------------------------------------------------------------------------------- 1 | export const colorMarkName = 'color'; 2 | export const colorClassName = 'yfm-colorify'; 3 | export const domColorAttr = 'data-color'; 4 | -------------------------------------------------------------------------------- /src/extensions/yfm/Video/VideoSpecs/const.ts: -------------------------------------------------------------------------------- 1 | export const videoNodeName = 'video'; 2 | 3 | export enum VideoAttr { 4 | Service = 'service', 5 | VideoID = 'videoid', 6 | } 7 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/headers/output.md: -------------------------------------------------------------------------------- 1 | # Main Title 2 | Some content. 3 | 4 | ## Subtitle 5 | More content. 6 | 7 | ### Section 3 8 | #### Section 4 -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/newline/input.html: -------------------------------------------------------------------------------- 1 |
This is a div.
2 |
This is another div.
3 |
4 |
Div with a line break.
-------------------------------------------------------------------------------- /src/i18n/gpt/errors/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "error-text": "Ошибка при генерации ответа, попробуйте повторить запрос", 3 | "retry-button": "Повторить", 4 | "start-again-button": "В начало" 5 | } 6 | -------------------------------------------------------------------------------- /src/markup/codemirror/files-upload-plugin/index.ts: -------------------------------------------------------------------------------- 1 | export {FilesUploadPlugin} from './plugin'; 2 | export {getImageDimensions} from './utils'; 3 | export {IMG_MAX_HEIGHT} from './const'; 4 | -------------------------------------------------------------------------------- /src/view/hocs/withMermaid/types.ts: -------------------------------------------------------------------------------- 1 | export type {TransformMeta} from '../../types'; 2 | 3 | export type PluginRuntime = string; // TODO: import runtime type from @diplodoc/mermaid-extension 4 | -------------------------------------------------------------------------------- /demo/utils/getInitialMd.ts: -------------------------------------------------------------------------------- 1 | import {markup} from '../defaults/content'; 2 | 3 | import {parseLocation} from './location'; 4 | 5 | export const getInitialMd = () => parseLocation() || markup; 6 | -------------------------------------------------------------------------------- /src/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgSettingsButton.scss: -------------------------------------------------------------------------------- 1 | .g-md-img-settings-button { 2 | position: absolute; 3 | z-index: 2; 4 | top: 3px; 5 | right: 3px; 6 | } 7 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@gravity-ui/stylelint-config", 4 | "@gravity-ui/stylelint-config/order", 5 | "@gravity-ui/stylelint-config/prettier" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /demo/defaults/excluded-controls.ts: -------------------------------------------------------------------------------- 1 | export const excludedControls = [ 2 | 'initial', 3 | 'withDefaultInitialContent', 4 | 'onChangeEditorType', 5 | 'onChangeSplitModeEnabled', 6 | ]; 7 | -------------------------------------------------------------------------------- /src/shortcuts/types.ts: -------------------------------------------------------------------------------- 1 | export type Chars = Partial>; 2 | 3 | export type Defs = string[]; 4 | 5 | export type PlatfrormDefs = { 6 | pc?: Defs; 7 | mac?: Defs; 8 | }; 9 | -------------------------------------------------------------------------------- /src/styles/yc-file.scss: -------------------------------------------------------------------------------- 1 | // styles rewriting from '~@diplodoc/transform/dist/css/yfm.css' 2 | 3 | .g-root .yfm:not(.yfm_only-light) { 4 | --yfm-file-icon-color: var(--g-color-text-primary); 5 | } 6 | -------------------------------------------------------------------------------- /src/extensions/markdown/Html/const.ts: -------------------------------------------------------------------------------- 1 | export enum HtmlNode { 2 | Block = 'html_block', 3 | Inline = 'html_inline', 4 | } 5 | 6 | export enum HtmlAttr { 7 | Content = 'html-content', 8 | } 9 | -------------------------------------------------------------------------------- /src/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImgNodeView.scss: -------------------------------------------------------------------------------- 1 | .g-md-img-size-node-view { 2 | &__wrapper { 3 | position: relative; 4 | 5 | display: inline-block; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/i18n/gpt/extension/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "confirm-cancel": "Отменить", 3 | "confirm-ok": "Закрыть", 4 | "confirm-title": "Хотите закрыть помощника GPT?", 5 | "help-with-text": "Помощь с текстом" 6 | } 7 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/links/output.md: -------------------------------------------------------------------------------- 1 | Here's a [simple link](https://example.com/ "simple link"). 2 | 3 | This link has [**bold text**](https://example.com/ "bold text"). -------------------------------------------------------------------------------- /src/i18n/gpt/errors/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "error-text": "An error occurred while generating a reply, please retry the request", 3 | "retry-button": "Try again", 4 | "start-again-button": "To the beginning" 5 | } 6 | -------------------------------------------------------------------------------- /src/i18n/gpt/extension/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "confirm-cancel": "Cancel", 3 | "confirm-ok": "Close", 4 | "confirm-title": "Do you want to close the GPT editor?", 5 | "help-with-text": "Help with text" 6 | } 7 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/headers/input.html: -------------------------------------------------------------------------------- 1 |

Main Title

2 |

Some content.

3 |

Subtitle

4 |

More content.

5 |

Section 3

6 |

Section 4

-------------------------------------------------------------------------------- /src/modules/search/components/SearchCompactView.scss: -------------------------------------------------------------------------------- 1 | @use './constants' as const; 2 | 3 | .g-md-search-compact { 4 | display: flex; 5 | align-items: center; 6 | 7 | width: const.$width; 8 | } 9 | -------------------------------------------------------------------------------- /demo/stories/ghost/ghostExtension/effects.ts: -------------------------------------------------------------------------------- 1 | import {StateEffect} from '#cm/state'; 2 | 3 | export const ShowGhostPopupEffect = StateEffect.define(); 4 | export const HideGhostPopupEffect = StateEffect.define(); 5 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/links/input.html: -------------------------------------------------------------------------------- 1 |

Here's a simple link.

2 |

This link has bold text.

3 | -------------------------------------------------------------------------------- /src/classname.ts: -------------------------------------------------------------------------------- 1 | import {withNaming} from '@bem-react/classname'; 2 | 3 | export const cn = withNaming({n: 'g-md-', e: '__', m: '_', v: '_'}); 4 | 5 | export interface ClassNameProps { 6 | className?: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmFile/YfmFileWidget/view.scss: -------------------------------------------------------------------------------- 1 | .g-md-file-placeholder { 2 | margin: 0 4px; 3 | 4 | pointer-events: none; 5 | 6 | .yfm-file__icon { 7 | margin-right: 8px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/view/hocs/withYfmHtml/types.ts: -------------------------------------------------------------------------------- 1 | import type {PluginOptions} from '@diplodoc/html-extension'; 2 | 3 | export type {TransformMeta} from '../../types'; 4 | 5 | export type PluginRuntime = PluginOptions['runtimeJsPath']; 6 | -------------------------------------------------------------------------------- /src/extensions/additional/GPT/MarkupGpt/effects.ts: -------------------------------------------------------------------------------- 1 | import {StateEffect} from '../../../../cm/state'; 2 | 3 | export const ShowMarkupGptEffect = StateEffect.define(); 4 | export const HideMarkupGptEffect = StateEffect.define(); 5 | -------------------------------------------------------------------------------- /src/i18n/forms/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'forms'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/hints/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'hints'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/markdown-it/emoji.ts: -------------------------------------------------------------------------------- 1 | import emoji from 'markdown-it-emoji'; 2 | import bare from 'markdown-it-emoji/bare.js'; 3 | import light from 'markdown-it-emoji/light.js'; 4 | 5 | export default emoji; 6 | 7 | export {bare, light}; 8 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/formatting/output.md: -------------------------------------------------------------------------------- 1 | This text has **bold** and *italic* formatting. 2 | 3 | This text uses **bold** and *italic* tags. 4 | 5 | This text uses **CSS bold** and *CSS italic*. -------------------------------------------------------------------------------- /src/extensions/yfm/Emoji/EmojiSuggest/types.ts: -------------------------------------------------------------------------------- 1 | export type EmojiDef = { 2 | symbol: string; 3 | name: string; 4 | origName: string; 5 | shortcuts?: readonly string[]; 6 | origShortcuts?: readonly string[]; 7 | }; 8 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/plugins/YfmTableControls/nodeviews/yfm-table-view.scss: -------------------------------------------------------------------------------- 1 | .yfm table.g-md-yfm-table-view { 2 | --yfm-color-border: var(--g-color-line-generic); 3 | background: var(--g-color-base-background); 4 | } 5 | -------------------------------------------------------------------------------- /src/i18n/bundle/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'bundle'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/common/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'common'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/gallery/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'gallery'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/md-hints/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'md-hints'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/menubar/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'menubar'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/search/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'search'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/suggest/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'suggest'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/widgets/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'widgets'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/yfm-note/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'yfm-note'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/links-with-formatting/output.md: -------------------------------------------------------------------------------- 1 | A link inside the *[span](https://example.com/ "span")*. 2 | 3 | [*Price markdown*](https://en.wikipedia.org/wiki/Price_markdown "Price markdown") -------------------------------------------------------------------------------- /src/extensions/markdown/Deflist/DeflistSpecs/const.ts: -------------------------------------------------------------------------------- 1 | export enum DeflistNode { 2 | List = 'dl', 3 | Term = 'dt', 4 | Desc = 'dd', 5 | } 6 | 7 | export const DeflistAttr = { 8 | Line: 'data-line', 9 | } as const; 10 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmFile/YfmFilePaste/skeleton.scss: -------------------------------------------------------------------------------- 1 | .g-md-file-skeleton { 2 | display: inline-flex; 3 | align-items: center; 4 | 5 | &__skeleton { 6 | width: 120px; 7 | height: 20px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/i18n/codeblock/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'codeblock'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/empty-row/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'empty-row'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/math-hint/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'math-hint'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/yfm-block/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'yfm-block'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/yfm-layout/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'yfm-layout'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/i18n/yfm-table/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'yfm-table'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/plugins/index.ts: -------------------------------------------------------------------------------- 1 | export * as BaseTooltipPlugin from './BaseTooltip'; 2 | /** @deprecated */ 3 | export * as TooltipButtonPlugin from './TooltipButton'; 4 | /** @deprecated */ 5 | export * as TooltipSelectPlugin from './TooltipSelect'; 6 | -------------------------------------------------------------------------------- /src/styles/mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin block-border-hover() { 2 | border: 1px dashed transparent; 3 | border-radius: var(--g-border-radius-s); 4 | 5 | &:hover { 6 | border-color: var(--g-color-line-generic); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/extensions/additional/FoldingHeading/commands/index.ts: -------------------------------------------------------------------------------- 1 | export * from './removeFoldingIfCursorAtStartOfHeading'; 2 | export * from './toggleFoldingOfHeading'; 3 | export * from './openHeadingAndCreateParagraphAfterIfCursorAtEndOfHeading'; 4 | -------------------------------------------------------------------------------- /src/i18n/placeholder/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'placeholder'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/extensions/additional/GPT/IconRefuge/IconRefuge.scss: -------------------------------------------------------------------------------- 1 | .icon-refuge { 2 | display: inline-flex; 3 | justify-content: center; 4 | align-items: center; 5 | 6 | &_inline { 7 | display: inline-flex; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/extensions/behavior/Search/search-plugin.scss: -------------------------------------------------------------------------------- 1 | .ProseMirror-search-match { 2 | background-color: var(--g-color-base-info-light); 3 | } 4 | 5 | .ProseMirror-active-search-match { 6 | background-color: var(--g-color-base-info-heavy); 7 | } 8 | -------------------------------------------------------------------------------- /src/i18n/action-previews/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | const KEYSET = 'action-previews'; 7 | 8 | export const i18n = registerKeyset(KEYSET, {en, ru}); 9 | -------------------------------------------------------------------------------- /src/styles/_zindex.scss: -------------------------------------------------------------------------------- 1 | // so that cursor is always cursor:grabbing 2 | $dnd-cursor-back: 100500; 3 | // ghost for drag and drop. has to be always above other elements 4 | $dnd-ghost: 100499; 5 | 6 | $sticky-toolbar: 2000; // more than has popup 7 | -------------------------------------------------------------------------------- /src/toolbar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './const'; 2 | export * from './types'; 3 | export * from './Toolbar'; 4 | export * from './ToolbarButton'; 5 | export * from './ToolbarGroup'; 6 | export * from './ToolbarListButton'; 7 | export * from './FlexToolbar'; 8 | -------------------------------------------------------------------------------- /src/extensions/additional/FoldingHeading/FoldingHeadingSpec/const.ts: -------------------------------------------------------------------------------- 1 | import {TokenType as MdTokenType} from '@diplodoc/folding-headings-extension'; 2 | 3 | export const TokenType = MdTokenType as Pick; 4 | -------------------------------------------------------------------------------- /src/extensions/markdown/CodeBlock/const.ts: -------------------------------------------------------------------------------- 1 | import {codeBlockType} from './CodeBlockSpecs'; 2 | 3 | export {codeBlockNodeName, CodeBlockNodeAttr as CodeBlockAttr} from './CodeBlockSpecs'; 4 | export const cbAction = 'toCodeBlock'; 5 | export {codeBlockType}; 6 | -------------------------------------------------------------------------------- /src/extensions/behavior/CommandMenu/types.ts: -------------------------------------------------------------------------------- 1 | import type {ActionStorage} from '../../../core'; 2 | import type {ToolbarItemData} from '../../../toolbar'; 3 | 4 | export type CommandAction = ToolbarItemData; 5 | export type Config = CommandAction[]; 6 | -------------------------------------------------------------------------------- /src/i18n/gpt/extension/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | export const i18n = registerKeyset('gpt', {en, ru}); 7 | 8 | export type I18nKey = Parameters[0]; 9 | -------------------------------------------------------------------------------- /src/i18n/gpt/dialog/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | export const i18n = registerKeyset('gpt-dialog', {en, ru}); 7 | 8 | export type I18nKey = Parameters[0]; 9 | -------------------------------------------------------------------------------- /src/i18n/yfm-block/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "align": "Alignment", 3 | "width": "Width (px)", 4 | "padding": "Paddings", 5 | "border": "Border type", 6 | "border-size": "Border size", 7 | "border-color": "Border color", 8 | "remove": "Remove block" 9 | } 10 | -------------------------------------------------------------------------------- /src/i18n/yfm-block/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "align": "Выравнивание", 3 | "width": "Ширина (px)", 4 | "padding": "Отступы", 5 | "border": "Тип рамки", 6 | "border-size": "Размер рамки", 7 | "border-color": "Цвет рамки", 8 | "remove": "Удалить блок" 9 | } 10 | -------------------------------------------------------------------------------- /src/i18n/common/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "cancel": "Cancel", 3 | "close": "Close", 4 | "delete": "Delete", 5 | "edit": "Edit", 6 | "preview": "Preview", 7 | "remove": "Remove", 8 | "save": "Save", 9 | "toolbar_action_disabled": "Incompatible markup element" 10 | } -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/lists/input.html: -------------------------------------------------------------------------------- 1 |
    2 |
  1. First item
  2. 3 |
  3. Second item
  4. 4 |
  5. Third item
  6. 5 |
6 |
    7 |
  • Item A
  • 8 |
  • Item B
  • 9 |
  • Item C
  • 10 |
-------------------------------------------------------------------------------- /src/toolbar/FlexToolbar.scss: -------------------------------------------------------------------------------- 1 | .g-md-flex-toolbar { 2 | position: relative; 3 | 4 | height: 28px; 5 | 6 | &__container { 7 | position: absolute; 8 | inset: 0; 9 | 10 | display: flex; 11 | gap: 0 8px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demo/stories/ghost/ghostExtension/index.ts: -------------------------------------------------------------------------------- 1 | import {GhostPopupPlugin} from './plugin'; 2 | 3 | export {ghostPopupToolbarItem} from './toolbar'; 4 | export {showGhostPopup, hideGhostPopup} from './commands'; 5 | 6 | export const ghostPopupExtension = GhostPopupPlugin.extension; 7 | -------------------------------------------------------------------------------- /src/extensions/markdown/Lists/const.ts: -------------------------------------------------------------------------------- 1 | export {ListNode} from './ListsSpecs'; 2 | 3 | export enum ListAction { 4 | ToBulletList = 'toBulletList', 5 | ToOrderedList = 'toOrderedList', 6 | SinkListItem = 'sinkListItem', 7 | LiftListItem = 'liftListItem', 8 | } 9 | -------------------------------------------------------------------------------- /src/modules/search/types.ts: -------------------------------------------------------------------------------- 1 | export type SearchState = { 2 | search: string; 3 | replace: string; 4 | caseSensitive: boolean; 5 | wholeWord: boolean; 6 | }; 7 | 8 | export type SearchCounter = { 9 | current: number; 10 | total: number; 11 | }; 12 | -------------------------------------------------------------------------------- /src/extensions/additional/GPT/PresetList/Presetlist.scss: -------------------------------------------------------------------------------- 1 | .g-md-gpt-dialog-preset-list { 2 | &__preset + &__preset { 3 | margin-left: var(--g-spacing-2); 4 | } 5 | 6 | &__more-button-wrapper { 7 | margin-left: var(--g-spacing-2); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/i18n/gpt/errors/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | export const i18n = registerKeyset('gpt-dialog-error-screen', {en, ru}); 7 | 8 | export type I18nKey = Parameters[0]; 9 | -------------------------------------------------------------------------------- /src/i18n/gpt/loading/index.ts: -------------------------------------------------------------------------------- 1 | import {registerKeyset} from '../../i18n'; 2 | 3 | import en from './en.json'; 4 | import ru from './ru.json'; 5 | 6 | export const i18n = registerKeyset('gpt-dialog-loading-screen', {en, ru}); 7 | 8 | export type I18nKey = Parameters[0]; 9 | -------------------------------------------------------------------------------- /src/markup/codemirror/logger-facet.ts: -------------------------------------------------------------------------------- 1 | import {Facet} from '@codemirror/state'; 2 | 3 | import type {Logger2} from '../../logger'; 4 | 5 | export const LoggerFacet = Facet.define({ 6 | combine: (value) => value[0], 7 | static: true, 8 | }); 9 | -------------------------------------------------------------------------------- /src/markup/commands/math.ts: -------------------------------------------------------------------------------- 1 | import {inlineWrapTo, wrapToBlock} from './helpers'; 2 | 3 | export const wrapToMathInline = inlineWrapTo('$'); 4 | export const wrapToMathBlock = wrapToBlock( 5 | ({lineBreak}) => '$$' + lineBreak, 6 | ({lineBreak}) => lineBreak + '$$', 7 | ); 8 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-light-webkit-linux.png -------------------------------------------------------------------------------- /src/extensions/base/BaseInputRules/index.ts: -------------------------------------------------------------------------------- 1 | import {ellipsis} from 'prosemirror-inputrules'; 2 | 3 | import type {ExtensionAuto} from '../../../core'; 4 | 5 | export const BaseInputRules: ExtensionAuto = (builder) => { 6 | builder.addInputRules(() => ({rules: [ellipsis]})); 7 | }; 8 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Full-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-YFM-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Zero-light-chromium-linux.png -------------------------------------------------------------------------------- /src/view/hocs/withLatex/types.ts: -------------------------------------------------------------------------------- 1 | export type {TransformMeta} from '../../types'; 2 | 3 | // TODO: import runtime type from @diplodoc/latex-extension 4 | export type PluginRuntime = 5 | | string 6 | | { 7 | script: string; 8 | style: string; 9 | }; 10 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Custom-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Default-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-dark-webkit-linux.png -------------------------------------------------------------------------------- /.github/workflows/pr-preview-build.yml: -------------------------------------------------------------------------------- 1 | name: PR Preview Build 2 | 3 | on: 4 | pull_request: 5 | 6 | jobs: 7 | build: 8 | name: Build 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: gravity-ui/preview-build-action@v2 12 | with: 13 | node-version: 24 14 | -------------------------------------------------------------------------------- /src/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.scss: -------------------------------------------------------------------------------- 1 | .yfm.ProseMirror .hljs.show-line-numbers { 2 | display: flex; 3 | 4 | white-space: pre; 5 | } 6 | 7 | .yfm.ProseMirror pre > code > .yfm-line-numbers > .yfm-line-number { 8 | display: block; 9 | } 10 | -------------------------------------------------------------------------------- /src/i18n/common/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "cancel": "Отмена", 3 | "close": "Закрыть", 4 | "delete": "Удалить", 5 | "edit": "Редактировать", 6 | "preview": "Предпросмотр", 7 | "remove": "Удалить", 8 | "save": "Сохранить", 9 | "toolbar_action_disabled": "Несовместимый элемент разметки" 10 | } -------------------------------------------------------------------------------- /src/table-utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './commands'; 2 | export * from './const'; 3 | export * from './utils'; 4 | 5 | import type {TableRole} from './const'; 6 | 7 | declare module 'prosemirror-model' { 8 | interface NodeSpec { 9 | tableRole?: TableRole; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Cut-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-light-webkit-linux.png -------------------------------------------------------------------------------- /src/markup/codemirror/files-upload-plugin/effects.ts: -------------------------------------------------------------------------------- 1 | import {StateEffect} from '@codemirror/state'; 2 | 3 | export const AddUploadWidgetEffect = StateEffect.define<{files: ArrayLike; pos: number}>(); 4 | export const RemoveUploadWidgetEffect = StateEffect.define<{id: string; markup?: string}>(); 5 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Presets.visual.test.tsx-snapshots/Extensions-Presets-Common-Mark-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Task-lists-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-File-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-HTML-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Notes-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Table-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-YFM-Tabs-light-chromium-linux.png -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/tables/output.md: -------------------------------------------------------------------------------- 1 | #| 2 | || 3 | Formatting 4 | | 5 | Windows Shortcut 6 | | 7 | Mac OS Shortcut 8 | || 9 | || 10 | Bold text 11 | | 12 | Ctrl + B 13 | | 14 | ⌘ + B 15 | || 16 | || 17 | Italic 18 | | 19 | Ctrl + I 20 | | 21 | ⌘ + I 22 | || 23 | |# -------------------------------------------------------------------------------- /src/modules/search/components/SearchCardView.scss: -------------------------------------------------------------------------------- 1 | @use './constants' as const; 2 | 3 | .g-md-search-card { 4 | $b: &; 5 | 6 | width: const.$width; 7 | 8 | &__row#{$b}__row { 9 | --gc-form-row-label-width: 86px; 10 | --gc-form-row-field-height: 36px; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-dark-webkit-linux.png -------------------------------------------------------------------------------- /src/markup/codemirror/react-facet.ts: -------------------------------------------------------------------------------- 1 | import {Facet} from '@codemirror/state'; 2 | 3 | import type {ReactRenderStorage} from '../../extensions'; 4 | 5 | export const ReactRendererFacet = Facet.define({ 6 | combine: (value) => value[0], 7 | static: true, 8 | }); 9 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Code-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Links-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Lists-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-LaTeX-Formulas-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Mermaid-diagram-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-row-menu-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-row-menu-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-row-menu-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-row-menu-light-chromium-linux.png -------------------------------------------------------------------------------- /demo/stories/editor-in-editor/EditorInEditorExtension/index.scss: -------------------------------------------------------------------------------- 1 | .__editor-in-editor { 2 | margin-bottom: 15px; 3 | padding: 4px; 4 | 5 | border-width: 1px; 6 | border-style: dashed; 7 | border-color: var(--g-color-line-generic); 8 | border-radius: var(--g-border-radius-s); 9 | } 10 | -------------------------------------------------------------------------------- /src/extensions/additional/Math/index.scss: -------------------------------------------------------------------------------- 1 | .math-inline { 2 | font-family: var(--g-font-family-monospace); 3 | 4 | color: var(--g-color-text-complementary); 5 | background-color: var(--g-color-base-misc-light); 6 | 7 | &__sharp { 8 | color: var(--g-color-text-hint); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmNote/YfmNoteSpecs/const.ts: -------------------------------------------------------------------------------- 1 | export enum NoteNode { 2 | Note = 'yfm_note', 3 | NoteTitle = 'yfm_note_title', 4 | NoteContent = 'yfm_note_content', 5 | } 6 | 7 | export enum NoteAttrs { 8 | Class = 'class', 9 | Type = 'note-type', 10 | Line = 'data-line', 11 | } 12 | -------------------------------------------------------------------------------- /src/react-utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ErrorBoundary'; 2 | export * from './hooks'; 3 | export * from './react-node-view'; 4 | export * from './useNodeEditing'; 5 | export * from './useNodeHovered'; 6 | export * from './useSharedEditingState'; 7 | export * from './useSticky'; 8 | export * from './useTargetZIndex'; 9 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emojis-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Heading-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Images-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Tables-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmExtensions.visual.test.tsx-snapshots/Extensions-YFM-Folding-Headings-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-column-menu-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-column-menu-dark-chromium-linux.png -------------------------------------------------------------------------------- /demo/stories/gpt/GPT.stories.tsx: -------------------------------------------------------------------------------- 1 | import type {StoryObj} from '@storybook/react'; 2 | 3 | import {GPT as component} from './GPT'; 4 | 5 | export const Story: StoryObj = {}; 6 | Story.storyName = 'GPT'; 7 | 8 | export default { 9 | title: 'Experiments / GPT', 10 | component, 11 | }; 12 | -------------------------------------------------------------------------------- /src/forms/ImageForm.scss: -------------------------------------------------------------------------------- 1 | .g-md-image-form { 2 | &__input { 3 | &_type_width, 4 | &_type_height { 5 | max-width: 112px; 6 | } 7 | } 8 | 9 | &__size-controls { 10 | display: flex; 11 | align-items: center; 12 | gap: 0 16px; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Emphasis-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-column-menu-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-cell-menu-wysiwyg-column-menu-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-insert-should-insert-via-toolbar-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Blockquotes-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-dark-webkit-linux.png -------------------------------------------------------------------------------- /src/bundle/config/previews/ActionPreview.tsx: -------------------------------------------------------------------------------- 1 | import {cn} from '../../../classname'; 2 | 3 | import './ActionPreview.scss'; 4 | 5 | const b = cn('action-preview'); 6 | 7 | export const ActionPreview = ({children}: {children: React.ReactNode}) => { 8 | return
{children}
; 9 | }; 10 | -------------------------------------------------------------------------------- /src/extensions/markdown/Table/plugins/TableCellContextPlugin/floating.scss: -------------------------------------------------------------------------------- 1 | .table-cell-floating-button.g-button { 2 | height: 28px; 3 | 4 | line-height: 28px; 5 | 6 | .g-button__icon { 7 | width: 12px; 8 | } 9 | } 10 | 11 | .table-cell-floating-icon { 12 | transform: rotate(90deg); 13 | } 14 | -------------------------------------------------------------------------------- /src/toolbar/Toolbar.scss: -------------------------------------------------------------------------------- 1 | .g-md-toolbar { 2 | display: flex; 3 | 4 | &__group-separator { 5 | margin: 6px 8px; 6 | 7 | border-left: 1px solid var(--g-color-line-generic); 8 | } 9 | 10 | &_display { 11 | &_scroll { 12 | overflow: auto; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-insert-should-insert-via-toolbar-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Definition-list-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Horizontal-Rules-light-chromium-linux.png -------------------------------------------------------------------------------- /src/extensions/additional/Math/const.ts: -------------------------------------------------------------------------------- 1 | export * from './MathSpecs/const'; 2 | export {mathBType, mathIType} from './MathSpecs'; 3 | 4 | export const LATEX_MODES = new Set([ 5 | 'tex', 6 | 'latex', 7 | 'bibtex', 8 | 'doctex', 9 | 'latex-expl3', 10 | 'pweave', 11 | 'jlweave', 12 | 'rsweave', 13 | ]); 14 | -------------------------------------------------------------------------------- /src/extensions/yfm/Color/const.ts: -------------------------------------------------------------------------------- 1 | export * from './ColorSpecs/const'; 2 | 3 | export const colorAction = 'colorify'; 4 | 5 | export enum Colors { 6 | Gray = 'gray', 7 | Yellow = 'yellow', 8 | Orange = 'orange', 9 | Red = 'red', 10 | Green = 'green', 11 | Blue = 'blue', 12 | Violet = 'violet', 13 | } 14 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmTable/YfmTableSpecs/const.ts: -------------------------------------------------------------------------------- 1 | export enum YfmTableNode { 2 | Table = 'yfm_table', 3 | Body = 'yfm_tbody', 4 | Row = 'yfm_tr', 5 | Cell = 'yfm_td', 6 | } 7 | 8 | export enum YfmTableAttr { 9 | Colspan = 'colspan', 10 | Rowspan = 'rowspan', 11 | CellAlign = 'data-cell-align', 12 | } 13 | -------------------------------------------------------------------------------- /src/markup/codemirror/html-to-markdown/__tests__/fixtures/formatting/input.html: -------------------------------------------------------------------------------- 1 |

This text has bold and italic formatting.

2 |

This text uses bold and italic tags.

3 |

This text uses CSS bold and CSS italic.

-------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-cut-inside-open-second-cut-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-lift-list-item-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-lift-list-item-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/MarkdownExtensions.visual.test.tsx-snapshots/Extensions-Markdown-Subscript-Superscript-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-large-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-large-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-medium-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-medium-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-small-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-small-light-webkit-linux.png -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [{*.json,*.yml,*.md}] 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [GNUmakefile] 16 | indent_style = tab 17 | indent_size = 4 18 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-wysiwyg-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-edit-popup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-edit-popup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Link.visual.test.tsx-snapshots/Link-specific-should-open-edit-popup-on-link-click-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-large-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-large-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-medium-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-medium-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-small-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-width-small-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /src/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["@gravity-ui/eslint-config/client", "plugin:react/jsx-runtime"], 3 | "overrides": [{ 4 | "files": ["*"], 5 | "rules": { 6 | "new-cap": [2, { "capIsNew": false }], 7 | "@typescript-eslint/no-namespace": [2, { "allowDeclarations": true }] 8 | } 9 | }] 10 | } 11 | -------------------------------------------------------------------------------- /src/extensions/markdown/Heading/const.ts: -------------------------------------------------------------------------------- 1 | export {headingNodeName, headingLevelAttr} from './HeadingSpecs'; 2 | 3 | export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6; 4 | 5 | export enum HeadingAction { 6 | ToH1 = 'toH1', 7 | ToH2 = 'toH2', 8 | ToH3 = 'toH3', 9 | ToH4 = 'toH4', 10 | ToH5 = 'toH5', 11 | ToH6 = 'toH6', 12 | } 13 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmNote/YfmNoteSpecs/utils.ts: -------------------------------------------------------------------------------- 1 | import {nodeTypeFactory} from '../../../../utils/schema'; 2 | 3 | import {NoteNode} from './const'; 4 | 5 | export const noteType = nodeTypeFactory(NoteNode.Note); 6 | export const noteTitleType = nodeTypeFactory(NoteNode.NoteTitle); 7 | export const noteContentType = nodeTypeFactory(NoteNode.NoteContent); 8 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-edit-popup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-specific-should-change-image-size-wysiwyg-edit-popup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-wysiwyg-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /demo/stories/ghost/Ghost.stories.tsx: -------------------------------------------------------------------------------- 1 | import type {StoryObj} from '@storybook/react'; 2 | 3 | import {Ghost as component} from './Ghost'; 4 | 5 | export const Story: StoryObj = {}; 6 | Story.storyName = 'Popup in markup mode'; 7 | 8 | export default { 9 | title: 'Experiments / Popup in markup mode', 10 | component, 11 | }; 12 | -------------------------------------------------------------------------------- /demo/stories/quoteLink/quoteLink.stories.ts: -------------------------------------------------------------------------------- 1 | import type {StoryObj} from '@storybook/react'; 2 | 3 | import {QuoteLink as component} from './QuoteLink'; 4 | 5 | export const Story: StoryObj = {}; 6 | Story.storyName = 'QuoteLink'; 7 | 8 | export default { 9 | title: 'Extensions / YFM / QuoteLink', 10 | component, 11 | }; 12 | -------------------------------------------------------------------------------- /src/bundle/context.ts: -------------------------------------------------------------------------------- 1 | import {createContext, useContext} from 'react'; 2 | 3 | import type {Editor} from './Editor'; 4 | 5 | const EditorContext = createContext(null); 6 | 7 | export const MarkdownEditorProvider = EditorContext.Provider; 8 | export function useMarkdownEditorContext() { 9 | return useContext(EditorContext); 10 | } 11 | -------------------------------------------------------------------------------- /src/extensions/additional/Math/MathSpecs/const.ts: -------------------------------------------------------------------------------- 1 | export enum MathNode { 2 | Inline = 'math_inline', 3 | Block = 'math_display', 4 | } 5 | 6 | export const CLASSNAMES = { 7 | Inline: { 8 | Container: 'math-inline', 9 | Sharp: 'math-inline__sharp', 10 | Content: 'math-inline__content', 11 | }, 12 | } as const; 13 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-markdown-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/File.visual.test.tsx-snapshots/File-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-markup-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-all-actions-to-more-menu-in-wysiwyg-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /src/extensions/behavior/Autocomplete/utils.ts: -------------------------------------------------------------------------------- 1 | import {pluginKey} from 'prosemirror-autocomplete'; 2 | 3 | import type {EditorState} from '#pm/state'; 4 | 5 | import type {AutocompleteState} from './types'; 6 | 7 | export function getAutocompleteState(state: EditorState): AutocompleteState | null { 8 | return pluginKey.getState(state) || null; 9 | } 10 | -------------------------------------------------------------------------------- /src/toolbar/PreviewTooltip.scss: -------------------------------------------------------------------------------- 1 | .g-md-preview-tooltip { 2 | padding: var(--g-spacing-3); 3 | 4 | border-radius: var(--g-border-radius-s); 5 | background-color: var(--g-color-base-float-heavy); 6 | 7 | &__content { 8 | padding: 0 0 0 var(--g-spacing-2); 9 | 10 | background-color: var(--g-color-base-float); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/view/hooks/useFilesGallery/constants.ts: -------------------------------------------------------------------------------- 1 | export const supportedImageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'avif', 'bmp']; 2 | 3 | export const supportedVideoExtensions = ['mp4', 'webm', 'ogg']; 4 | 5 | export const supportedExtensions = [...supportedImageExtensions, ...supportedVideoExtensions]; 6 | 7 | export const extensionRegex = /\w+?$/; 8 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Image.visual.test.tsx-snapshots/Images-mode-switch-should-remain-after-mode-switch-wysiwyg-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-command-menu-in-wysiwyg-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Description 11 | A clear and concise description of what the problem is. 12 | 13 | ### Proposal 14 | A clear and concise description of what you want to happen. 15 | -------------------------------------------------------------------------------- /src/markup/codemirror/index.ts: -------------------------------------------------------------------------------- 1 | export type {CreateCodemirrorParams} from './create'; 2 | export {createCodemirror} from './create'; 3 | export {ReactRendererFacet} from './react-facet'; 4 | export {DirectiveSyntaxFacet} from './directive-facet'; 5 | export {getImageDimensions, IMG_MAX_HEIGHT} from './files-upload-plugin'; 6 | export type {YfmLangOptions} from './yfm'; 7 | -------------------------------------------------------------------------------- /src/modules/search/components/SearchPopup.scss: -------------------------------------------------------------------------------- 1 | .g-md-search-popup { 2 | --g-popup-border-width: 0; 3 | --g-popup-border-radius: 16px; 4 | border-radius: 16px; // for old uikit 5 | 6 | &_compact { 7 | --g-popup-border-radius: var(--g-border-radius-l); 8 | border-radius: var(--g-border-radius-l); // for old uikit 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-row-via-click-on-floating-plus-button-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /demo/stories/mobile-editor/MobileEditor.stories.ts: -------------------------------------------------------------------------------- 1 | import type {StoryObj} from '@storybook/react'; 2 | 3 | import {MobileEditor as component} from './MobileEditor'; 4 | 5 | export const Story: StoryObj = {}; 6 | Story.storyName = 'Mobile editor'; 7 | 8 | export default { 9 | title: 'Experiments / Mobile editor', 10 | component, 11 | }; 12 | -------------------------------------------------------------------------------- /tests/visual-tests/YfmExtensions.helpers.tsx: -------------------------------------------------------------------------------- 1 | import {composeStories} from '@storybook/react'; 2 | 3 | import * as DefaultYFMStories from '../../demo/stories/yfm/YFM.stories'; 4 | 5 | export const YFMStories = composeStories(DefaultYFMStories, { 6 | argsEnhancers: [ 7 | () => ({ 8 | stickyToolbar: false, 9 | }), 10 | ], 11 | }); 12 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-should-copy-and-paste-with-preserve-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-light-webkit-linux.png -------------------------------------------------------------------------------- /src/extensions/behavior/Search/const.ts: -------------------------------------------------------------------------------- 1 | import {PluginKey} from '#pm/state'; 2 | 3 | import type {SearchViewState} from './types'; 4 | 5 | export const SearchClassName = { 6 | Match: 'ProseMirror-search-match', 7 | ActiveMatch: 'ProseMirror-active-search-match', 8 | } as const; 9 | 10 | export const pluginKey = new PluginKey('search-view'); 11 | -------------------------------------------------------------------------------- /src/extensions/yfm/ImgSize/plugins/ImgSizeNodeView/ImageForm/ImageForm.scss: -------------------------------------------------------------------------------- 1 | .g-md-image-tooltip-form { 2 | &__input { 3 | &_type_width, 4 | &_type_height { 5 | max-width: 112px; 6 | } 7 | } 8 | 9 | &__size-controls { 10 | display: flex; 11 | align-items: center; 12 | gap: 0 16px; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/markup/commands/index.ts: -------------------------------------------------------------------------------- 1 | export {redo, redoDepth, undo, undoDepth} from '@codemirror/commands'; 2 | 3 | export * from './blocks'; 4 | export * from './code'; 5 | export * from './heading'; 6 | export * from './inline'; 7 | export * from './lists'; 8 | export * from './marks'; 9 | export * from './math'; 10 | export * from './yfm'; 11 | export * from './emptyRow'; 12 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-paste-to-code-block-without-as-is-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-wrap-text-to-link-from-clipboard-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-markup-mode-and-paste-formatted-to-wysiwyg-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-markup-mode-and-paste-formatted-to-wysiwyg-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-markup-mode-and-paste-formatted-to-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-markup-mode-and-paste-formatted-to-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-empty-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-wysiwyg-mode-light-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-should-add-column-via-click-on-floating-plus-button-wysiwyg-light-chromium-linux.png -------------------------------------------------------------------------------- /demo/stories/remember-mode/RememberMode.stories.tsx: -------------------------------------------------------------------------------- 1 | import type {StoryObj} from '@storybook/react'; 2 | 3 | import {RememberMode as component} from './RememberMode'; 4 | 5 | export const Story: StoryObj = {}; 6 | Story.storyName = 'Remember the mode'; 7 | 8 | export default { 9 | component, 10 | title: 'Experiments / Remember the mode', 11 | }; 12 | -------------------------------------------------------------------------------- /src/extensions/behavior/WidgetDecoration/types.ts: -------------------------------------------------------------------------------- 1 | import type {WidgetDescriptor} from './WidgetDescriptor'; 2 | 3 | export type Meta = {type: 'add'; descriptor: WidgetDescriptor} | {type: 'remove'; id: string}; 4 | 5 | export type WidgetSpec = { 6 | id: string; 7 | descriptor: WidgetDescriptor; 8 | // needs for placeholder extension 9 | pos: number; 10 | }; 11 | -------------------------------------------------------------------------------- /src/extensions/yfm/ImgSize/ImagePaste/skeleton.scss: -------------------------------------------------------------------------------- 1 | .g-md-image-skeleton { 2 | $width: min(calc(var(--img-skeleton-width) * 1px), 100%); 3 | $height: min(calc(var(--img-skeleton-height) * 1px), 700px); 4 | vertical-align: middle; 5 | 6 | &__skeleton { 7 | width: $width; 8 | height: $height; 9 | margin-bottom: -5px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/table-utils/helpers.ts: -------------------------------------------------------------------------------- 1 | import type {Node} from 'prosemirror-model'; 2 | 3 | export const findChildIndex = (parentNode: Node, targetNode: Node): number => { 4 | let targetIndex = -1; 5 | parentNode.forEach((node, _, index) => { 6 | if (node === targetNode) { 7 | targetIndex = index; 8 | } 9 | }); 10 | return targetIndex; 11 | }; 12 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-WYSIWYG-mode-wysiwyg-should-preserve-empty-rows-preserve-light-chromium-linux.png -------------------------------------------------------------------------------- /demo/stories/editor-in-editor/EditorInEditor.stories.tsx: -------------------------------------------------------------------------------- 1 | import type {StoryObj} from '@storybook/react'; 2 | 3 | import {EditorInEditor as component} from './EditorInEditor'; 4 | 5 | export const Story: StoryObj = {}; 6 | Story.storyName = 'Editor in editor'; 7 | 8 | export default { 9 | component, 10 | title: 'Experiments / Editor in editor', 11 | }; 12 | -------------------------------------------------------------------------------- /src/extensions/additional/GPT/actions.ts: -------------------------------------------------------------------------------- 1 | import type {ActionSpec, ExtensionDeps} from '../../../core'; 2 | 3 | import {runGpt} from './commands'; 4 | 5 | export const showGptWidget: (deps: ExtensionDeps) => ActionSpec = (_deps) => ({ 6 | isActive() { 7 | return false; 8 | }, 9 | isEnable() { 10 | return true; 11 | }, 12 | run: runGpt, 13 | }); 14 | -------------------------------------------------------------------------------- /src/extensions/yfm/YfmCut/index.scss: -------------------------------------------------------------------------------- 1 | @use '../../../styles/mixins' as editor; 2 | 3 | .ProseMirror.yfm { 4 | .yfm-cut { 5 | @include editor.block-border-hover(); 6 | 7 | &.yfm-cut-active { 8 | border-color: var(--g-color-line-generic); 9 | } 10 | .yfm-cut-title:focus { 11 | outline: 0; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/visual-tests/Presets.helpers.tsx: -------------------------------------------------------------------------------- 1 | import {composeStories} from '@storybook/react'; 2 | 3 | import * as DefaultPresetsStories from '../../demo/stories/presets/Presets.stories'; 4 | 5 | export const PresetsStories = composeStories(DefaultPresetsStories, { 6 | argsEnhancers: [ 7 | () => ({ 8 | stickyToolbar: false, 9 | }), 10 | ], 11 | }); 12 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-dark-chromium-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-light-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-parse-pasting-text-as-markdown-markup-light-chromium-linux.png -------------------------------------------------------------------------------- /src/extensions/yfm/ImgSize/ImgSizeSpecs/const.ts: -------------------------------------------------------------------------------- 1 | import {ImsizeAttr} from '@diplodoc/transform/lib/plugins/imsize/const.js'; 2 | 3 | export const ImgSizeAttr = { 4 | Alt: ImsizeAttr.Alt, 5 | Src: ImsizeAttr.Src, 6 | Title: ImsizeAttr.Title, 7 | Width: ImsizeAttr.Width, 8 | Height: ImsizeAttr.Height, 9 | Loading: 'loading', 10 | Id: 'id', 11 | } as const; 12 | -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-into-inline-code-without-formatting-dark-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-into-inline-code-without-formatting-dark-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-into-inline-code-without-formatting-light-webkit-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-into-inline-code-without-formatting-light-webkit-linux.png -------------------------------------------------------------------------------- /tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-dark-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gravity-ui/markdown-editor/HEAD/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-WYSIWYG-mode-Paste-should-insert-link-from-ios-safari-share-button-dark-chromium-linux.png --------------------------------------------------------------------------------