@gravity-ui/markdown-editor 14.9.0 → 14.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/bundle/Editor.d.ts +2 -0
- package/build/cjs/bundle/Editor.js +15 -4
- package/build/cjs/bundle/MarkdownEditorView.js +2 -2
- package/build/cjs/bundle/config/action-names.d.ts +1 -1
- package/build/cjs/bundle/config/action-names.js +1 -0
- package/build/cjs/bundle/toolbar/utils/flattenPreset.d.ts +2 -0
- package/build/cjs/bundle/toolbar/utils/flattenPreset.js +14 -0
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.d.ts +17 -0
- package/build/cjs/bundle/toolbar/{utils.js → utils/toolbarsConfigs.js} +15 -19
- package/build/cjs/bundle/types.d.ts +6 -0
- package/build/cjs/bundle/useMarkdownEditor.js +8 -2
- package/build/cjs/bundle/wysiwyg-preset.d.ts +1 -0
- package/build/cjs/bundle/wysiwyg-preset.js +1 -1
- package/build/cjs/core/Editor.d.ts +3 -1
- package/build/cjs/core/Editor.js +2 -1
- package/build/cjs/core/ExtensionsManager.d.ts +2 -0
- package/build/cjs/core/ExtensionsManager.js +8 -4
- package/build/cjs/core/ParserTokensRegistry.d.ts +2 -1
- package/build/cjs/core/ParserTokensRegistry.js +2 -2
- package/build/cjs/core/markdown/MarkdownParser.d.ts +3 -1
- package/build/cjs/core/markdown/MarkdownParser.js +5 -2
- package/build/cjs/core/markdown/MarkdownSerializer.js +1 -1
- package/build/cjs/core/markdown/ProseMirrorTransformer/emptyRowTransformer.d.ts +2 -0
- package/build/cjs/core/markdown/ProseMirrorTransformer/emptyRowTransformer.js +15 -0
- package/build/cjs/core/markdown/ProseMirrorTransformer/getTransformers.d.ts +7 -0
- package/build/cjs/core/markdown/ProseMirrorTransformer/getTransformers.js +13 -0
- package/build/cjs/core/markdown/ProseMirrorTransformer/index.d.ts +15 -0
- package/build/cjs/core/markdown/ProseMirrorTransformer/index.js +25 -0
- package/build/cjs/extensions/additional/Math/MathSpecs/index.js +1 -0
- package/build/cjs/extensions/base/BaseSchema/BaseSchemaSpecs/index.d.ts +1 -0
- package/build/cjs/extensions/base/BaseSchema/BaseSchemaSpecs/index.js +23 -3
- package/build/cjs/extensions/behavior/Selection/selection.js +1 -5
- package/build/cjs/extensions/markdown/Blockquote/BlockquoteSpecs/index.js +1 -0
- package/build/cjs/extensions/markdown/CodeBlock/commands.js +1 -1
- package/build/cjs/extensions/markdown/HorizontalRule/HorizontalRuleSpecs/index.js +1 -0
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js +1 -0
- package/build/cjs/i18n/empty-row/en.json +3 -0
- package/build/cjs/i18n/empty-row/index.d.ts +5 -0
- package/build/cjs/i18n/empty-row/index.js +9 -0
- package/build/cjs/i18n/empty-row/ru.json +3 -0
- package/build/cjs/i18n/yfm-note/index.d.ts +1 -1
- package/build/cjs/index.d.ts +1 -0
- package/build/cjs/index.js +1 -0
- package/build/cjs/markup/codemirror/autocomplete/emptyRow.d.ts +9 -0
- package/build/cjs/markup/codemirror/autocomplete/emptyRow.js +26 -0
- package/build/cjs/markup/codemirror/autocomplete/index.d.ts +5 -0
- package/build/cjs/markup/codemirror/autocomplete/index.js +14 -0
- package/build/cjs/markup/codemirror/create.d.ts +1 -0
- package/build/cjs/markup/codemirror/create.js +6 -1
- package/build/cjs/markup/codemirror/yfm.d.ts +2 -1
- package/build/cjs/markup/codemirror/yfm.js +3 -3
- package/build/cjs/markup/commands/emptyRow.d.ts +2 -0
- package/build/cjs/markup/commands/emptyRow.js +43 -0
- package/build/cjs/markup/commands/index.d.ts +1 -0
- package/build/cjs/markup/commands/index.js +1 -0
- package/build/cjs/shortcuts/const.d.ts +1 -0
- package/build/cjs/shortcuts/const.js +1 -0
- package/build/cjs/shortcuts/default.js +1 -0
- package/build/cjs/version.js +1 -1
- package/build/esm/bundle/Editor.d.ts +2 -0
- package/build/esm/bundle/Editor.js +15 -4
- package/build/esm/bundle/MarkdownEditorView.js +1 -1
- package/build/esm/bundle/config/action-names.d.ts +1 -1
- package/build/esm/bundle/config/action-names.js +1 -0
- package/build/esm/bundle/toolbar/utils/flattenPreset.d.ts +2 -0
- package/build/esm/bundle/toolbar/utils/flattenPreset.js +10 -0
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.d.ts +17 -0
- package/build/esm/bundle/toolbar/{utils.js → utils/toolbarsConfigs.js} +13 -17
- package/build/esm/bundle/types.d.ts +6 -0
- package/build/esm/bundle/useMarkdownEditor.js +8 -2
- package/build/esm/bundle/wysiwyg-preset.d.ts +1 -0
- package/build/esm/bundle/wysiwyg-preset.js +1 -1
- package/build/esm/core/Editor.d.ts +3 -1
- package/build/esm/core/Editor.js +2 -1
- package/build/esm/core/ExtensionsManager.d.ts +2 -0
- package/build/esm/core/ExtensionsManager.js +8 -4
- package/build/esm/core/ParserTokensRegistry.d.ts +2 -1
- package/build/esm/core/ParserTokensRegistry.js +2 -2
- package/build/esm/core/markdown/MarkdownParser.d.ts +3 -1
- package/build/esm/core/markdown/MarkdownParser.js +5 -2
- package/build/esm/core/markdown/MarkdownSerializer.js +1 -1
- package/build/esm/core/markdown/ProseMirrorTransformer/emptyRowTransformer.d.ts +2 -0
- package/build/esm/core/markdown/ProseMirrorTransformer/emptyRowTransformer.js +11 -0
- package/build/esm/core/markdown/ProseMirrorTransformer/getTransformers.d.ts +7 -0
- package/build/esm/core/markdown/ProseMirrorTransformer/getTransformers.js +9 -0
- package/build/esm/core/markdown/ProseMirrorTransformer/index.d.ts +15 -0
- package/build/esm/core/markdown/ProseMirrorTransformer/index.js +21 -0
- package/build/esm/extensions/additional/Math/MathSpecs/index.js +1 -0
- package/build/esm/extensions/base/BaseSchema/BaseSchemaSpecs/index.d.ts +1 -0
- package/build/esm/extensions/base/BaseSchema/BaseSchemaSpecs/index.js +23 -3
- package/build/esm/extensions/behavior/Selection/selection.js +1 -5
- package/build/esm/extensions/markdown/Blockquote/BlockquoteSpecs/index.js +1 -0
- package/build/esm/extensions/markdown/CodeBlock/commands.js +1 -1
- package/build/esm/extensions/markdown/HorizontalRule/HorizontalRuleSpecs/index.js +1 -0
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js +1 -0
- package/build/esm/i18n/empty-row/en.json +3 -0
- package/build/esm/i18n/empty-row/index.d.ts +5 -0
- package/build/esm/i18n/empty-row/index.js +5 -0
- package/build/esm/i18n/empty-row/ru.json +3 -0
- package/build/esm/i18n/yfm-note/index.d.ts +1 -1
- package/build/esm/index.d.ts +1 -0
- package/build/esm/index.js +1 -0
- package/build/esm/markup/codemirror/autocomplete/emptyRow.d.ts +9 -0
- package/build/esm/markup/codemirror/autocomplete/emptyRow.js +23 -0
- package/build/esm/markup/codemirror/autocomplete/index.d.ts +5 -0
- package/build/esm/markup/codemirror/autocomplete/index.js +10 -0
- package/build/esm/markup/codemirror/create.d.ts +1 -0
- package/build/esm/markup/codemirror/create.js +7 -2
- package/build/esm/markup/codemirror/yfm.d.ts +2 -1
- package/build/esm/markup/codemirror/yfm.js +1 -1
- package/build/esm/markup/commands/emptyRow.d.ts +2 -0
- package/build/esm/markup/commands/emptyRow.js +39 -0
- package/build/esm/markup/commands/index.d.ts +1 -0
- package/build/esm/markup/commands/index.js +1 -0
- package/build/esm/shortcuts/const.d.ts +1 -0
- package/build/esm/shortcuts/const.js +1 -0
- package/build/esm/shortcuts/default.js +1 -0
- package/build/esm/version.js +1 -1
- package/package.json +1 -1
- package/build/cjs/bundle/toolbar/utils.d.ts +0 -17
- package/build/esm/bundle/toolbar/utils.d.ts +0 -17
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TransformFn } from 'src/core/markdown/ProseMirrorTransformer';
|
|
1
2
|
import type { CommonEditor } from '../common';
|
|
2
3
|
import { ReactRenderStorage } from '../extensions';
|
|
3
4
|
import { type Receiver } from '../utils';
|
|
@@ -43,5 +44,6 @@ export declare type EditorOptions = Pick<MarkdownEditorOptions, 'md' | 'initial'
|
|
|
43
44
|
renderStorage: ReactRenderStorage;
|
|
44
45
|
preset: EditorPreset;
|
|
45
46
|
directiveSyntax: DirectiveSyntaxContext;
|
|
47
|
+
pmTransformers: TransformFn[];
|
|
46
48
|
};
|
|
47
49
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _EditorImpl_markup, _EditorImpl_editorMode, _EditorImpl_toolbarVisible, _EditorImpl_splitModeEnabled, _EditorImpl_splitMode, _EditorImpl_renderPreview, _EditorImpl_wysiwygEditor, _EditorImpl_markupEditor, _EditorImpl_markupConfig, _EditorImpl_escapeConfig, _EditorImpl_mdOptions, _EditorImpl_preset, _EditorImpl_extensions, _EditorImpl_renderStorage, _EditorImpl_fileUploadHandler, _EditorImpl_parseInsertedUrlAsImage, _EditorImpl_needToSetDimensionsForUploadedImages, _EditorImpl_enableNewImageSizeCalculation, _EditorImpl_directiveSyntax, _EditorImpl_prepareRawMarkup, _EditorImpl_beforeEditorModeChange;
|
|
2
|
+
var _EditorImpl_markup, _EditorImpl_editorMode, _EditorImpl_toolbarVisible, _EditorImpl_splitModeEnabled, _EditorImpl_splitMode, _EditorImpl_renderPreview, _EditorImpl_wysiwygEditor, _EditorImpl_markupEditor, _EditorImpl_markupConfig, _EditorImpl_escapeConfig, _EditorImpl_mdOptions, _EditorImpl_pmTransformers, _EditorImpl_preserveEmptyRows, _EditorImpl_preset, _EditorImpl_extensions, _EditorImpl_renderStorage, _EditorImpl_fileUploadHandler, _EditorImpl_parseInsertedUrlAsImage, _EditorImpl_needToSetDimensionsForUploadedImages, _EditorImpl_enableNewImageSizeCalculation, _EditorImpl_directiveSyntax, _EditorImpl_prepareRawMarkup, _EditorImpl_beforeEditorModeChange;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.EditorImpl = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const view_1 = require("@codemirror/view");
|
|
7
7
|
const prosemirror_state_1 = require("prosemirror-state");
|
|
8
|
+
const autocomplete_1 = require("../../src/markup/codemirror/autocomplete");
|
|
8
9
|
const core_1 = require("../core");
|
|
9
10
|
const bundle_1 = require("../i18n/bundle");
|
|
10
11
|
const logger_1 = require("../logger");
|
|
@@ -27,6 +28,8 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
27
28
|
_EditorImpl_markupConfig.set(this, void 0);
|
|
28
29
|
_EditorImpl_escapeConfig.set(this, void 0);
|
|
29
30
|
_EditorImpl_mdOptions.set(this, void 0);
|
|
31
|
+
_EditorImpl_pmTransformers.set(this, []);
|
|
32
|
+
_EditorImpl_preserveEmptyRows.set(this, void 0);
|
|
30
33
|
_EditorImpl_preset.set(this, void 0);
|
|
31
34
|
_EditorImpl_extensions.set(this, void 0);
|
|
32
35
|
_EditorImpl_renderStorage.set(this, void 0);
|
|
@@ -46,6 +49,7 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
46
49
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_renderPreview, markupConfig.renderPreview, "f");
|
|
47
50
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_markup, (_e = initial.markup) !== null && _e !== void 0 ? _e : '', "f");
|
|
48
51
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_preset, (_f = opts.preset) !== null && _f !== void 0 ? _f : 'full', "f");
|
|
52
|
+
tslib_1.__classPrivateFieldSet(this, _EditorImpl_pmTransformers, opts.pmTransformers, "f");
|
|
49
53
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_mdOptions, md, "f");
|
|
50
54
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_extensions, wysiwygConfig.extensions, "f");
|
|
51
55
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_markupConfig, Object.assign({}, opts.markupConfig), "f");
|
|
@@ -55,6 +59,7 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
55
59
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_needToSetDimensionsForUploadedImages, Boolean(experimental.needToSetDimensionsForUploadedImages), "f");
|
|
56
60
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_directiveSyntax, opts.directiveSyntax, "f");
|
|
57
61
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_enableNewImageSizeCalculation, Boolean(experimental.enableNewImageSizeCalculation), "f");
|
|
62
|
+
tslib_1.__classPrivateFieldSet(this, _EditorImpl_preserveEmptyRows, experimental.preserveEmptyRows || false, "f");
|
|
58
63
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_prepareRawMarkup, experimental.prepareRawMarkup, "f");
|
|
59
64
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_escapeConfig, wysiwygConfig.escapeConfig, "f");
|
|
60
65
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_beforeEditorModeChange, experimental.beforeEditorModeChange, "f");
|
|
@@ -146,6 +151,7 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
146
151
|
mdPreset,
|
|
147
152
|
initialContent: tslib_1.__classPrivateFieldGet(this, _EditorImpl_markup, "f"),
|
|
148
153
|
extensions: tslib_1.__classPrivateFieldGet(this, _EditorImpl_extensions, "f"),
|
|
154
|
+
pmTransformers: tslib_1.__classPrivateFieldGet(this, _EditorImpl_pmTransformers, "f"),
|
|
149
155
|
allowHTML: tslib_1.__classPrivateFieldGet(this, _EditorImpl_mdOptions, "f").html,
|
|
150
156
|
linkify: tslib_1.__classPrivateFieldGet(this, _EditorImpl_mdOptions, "f").linkify,
|
|
151
157
|
linkifyTlds: tslib_1.__classPrivateFieldGet(this, _EditorImpl_mdOptions, "f").linkifyTlds,
|
|
@@ -157,7 +163,7 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
157
163
|
return tslib_1.__classPrivateFieldGet(this, _EditorImpl_wysiwygEditor, "f");
|
|
158
164
|
}
|
|
159
165
|
get markupEditor() {
|
|
160
|
-
var _a;
|
|
166
|
+
var _a, _b;
|
|
161
167
|
if (!tslib_1.__classPrivateFieldGet(this, _EditorImpl_markupEditor, "f")) {
|
|
162
168
|
tslib_1.__classPrivateFieldSet(this, _EditorImpl_markupEditor, new editor_1.Editor((0, markup_1.createCodemirror)({
|
|
163
169
|
doc: tslib_1.__classPrivateFieldGet(this, _EditorImpl_markup, "f"),
|
|
@@ -176,7 +182,12 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
176
182
|
extensions: tslib_1.__classPrivateFieldGet(this, _EditorImpl_markupConfig, "f").extensions,
|
|
177
183
|
disabledExtensions: tslib_1.__classPrivateFieldGet(this, _EditorImpl_markupConfig, "f").disabledExtensions,
|
|
178
184
|
keymaps: tslib_1.__classPrivateFieldGet(this, _EditorImpl_markupConfig, "f").keymaps,
|
|
179
|
-
|
|
185
|
+
preserveEmptyRows: tslib_1.__classPrivateFieldGet(this, _EditorImpl_preserveEmptyRows, "f"),
|
|
186
|
+
yfmLangOptions: {
|
|
187
|
+
languageData: (0, autocomplete_1.getAutocompleteConfig)({
|
|
188
|
+
preserveEmptyRows: tslib_1.__classPrivateFieldGet(this, _EditorImpl_preserveEmptyRows, "f"),
|
|
189
|
+
}).concat(((_b = tslib_1.__classPrivateFieldGet(this, _EditorImpl_markupConfig, "f")) === null || _b === void 0 ? void 0 : _b.languageData) || []),
|
|
190
|
+
},
|
|
180
191
|
autocompletion: tslib_1.__classPrivateFieldGet(this, _EditorImpl_markupConfig, "f").autocompletion,
|
|
181
192
|
directiveSyntax: this.directiveSyntax,
|
|
182
193
|
receiver: this,
|
|
@@ -319,7 +330,7 @@ class EditorImpl extends utils_1.SafeEventEmitter {
|
|
|
319
330
|
}
|
|
320
331
|
}
|
|
321
332
|
exports.EditorImpl = EditorImpl;
|
|
322
|
-
_EditorImpl_markup = new WeakMap(), _EditorImpl_editorMode = new WeakMap(), _EditorImpl_toolbarVisible = new WeakMap(), _EditorImpl_splitModeEnabled = new WeakMap(), _EditorImpl_splitMode = new WeakMap(), _EditorImpl_renderPreview = new WeakMap(), _EditorImpl_wysiwygEditor = new WeakMap(), _EditorImpl_markupEditor = new WeakMap(), _EditorImpl_markupConfig = new WeakMap(), _EditorImpl_escapeConfig = new WeakMap(), _EditorImpl_mdOptions = new WeakMap(), _EditorImpl_preset = new WeakMap(), _EditorImpl_extensions = new WeakMap(), _EditorImpl_renderStorage = new WeakMap(), _EditorImpl_fileUploadHandler = new WeakMap(), _EditorImpl_parseInsertedUrlAsImage = new WeakMap(), _EditorImpl_needToSetDimensionsForUploadedImages = new WeakMap(), _EditorImpl_enableNewImageSizeCalculation = new WeakMap(), _EditorImpl_directiveSyntax = new WeakMap(), _EditorImpl_prepareRawMarkup = new WeakMap(), _EditorImpl_beforeEditorModeChange = new WeakMap();
|
|
333
|
+
_EditorImpl_markup = new WeakMap(), _EditorImpl_editorMode = new WeakMap(), _EditorImpl_toolbarVisible = new WeakMap(), _EditorImpl_splitModeEnabled = new WeakMap(), _EditorImpl_splitMode = new WeakMap(), _EditorImpl_renderPreview = new WeakMap(), _EditorImpl_wysiwygEditor = new WeakMap(), _EditorImpl_markupEditor = new WeakMap(), _EditorImpl_markupConfig = new WeakMap(), _EditorImpl_escapeConfig = new WeakMap(), _EditorImpl_mdOptions = new WeakMap(), _EditorImpl_pmTransformers = new WeakMap(), _EditorImpl_preserveEmptyRows = new WeakMap(), _EditorImpl_preset = new WeakMap(), _EditorImpl_extensions = new WeakMap(), _EditorImpl_renderStorage = new WeakMap(), _EditorImpl_fileUploadHandler = new WeakMap(), _EditorImpl_parseInsertedUrlAsImage = new WeakMap(), _EditorImpl_needToSetDimensionsForUploadedImages = new WeakMap(), _EditorImpl_enableNewImageSizeCalculation = new WeakMap(), _EditorImpl_directiveSyntax = new WeakMap(), _EditorImpl_prepareRawMarkup = new WeakMap(), _EditorImpl_beforeEditorModeChange = new WeakMap();
|
|
323
334
|
function getTopOffset(elem) {
|
|
324
335
|
const TOOLBAR_HEIGHT = 36; //px
|
|
325
336
|
const TOOLBAR_BOTTOM_OFFSET = 8; // px
|
|
@@ -17,7 +17,7 @@ const WysiwygEditorView_1 = require("./WysiwygEditorView");
|
|
|
17
17
|
const context_1 = require("./context");
|
|
18
18
|
const settings_1 = require("./settings");
|
|
19
19
|
const sticky_1 = require("./sticky");
|
|
20
|
-
const
|
|
20
|
+
const toolbarsConfigs_1 = require("./toolbar/utils/toolbarsConfigs");
|
|
21
21
|
// eslint-disable-line import/order
|
|
22
22
|
exports.cnEditorComponent = (0, classname_1.cn)('editor-component');
|
|
23
23
|
const b = exports.cnEditorComponent;
|
|
@@ -34,7 +34,7 @@ exports.MarkdownEditorView = react_1.default.forwardRef((props, ref) => {
|
|
|
34
34
|
if (!editor)
|
|
35
35
|
throw new Error('[MarkdownEditorView]: an instance of the editor must be passed through the props or context');
|
|
36
36
|
const { autofocus, className, settingsVisible = true, toolbarsPreset, toaster, stickyToolbar, wysiwygToolbarConfig: initialWysiwygToolbarConfig, markupToolbarConfig: initialMarkupToolbarConfig, wysiwygHiddenActionsConfig: initialWysiwygHiddenActionsConfig, markupHiddenActionsConfig: initialMarkupHiddenActionsConfig, enableSubmitInPreview = true, hidePreviewAfterSubmit = false, } = props;
|
|
37
|
-
const { wysiwygToolbarConfig, markupToolbarConfig, wysiwygHiddenActionsConfig, markupHiddenActionsConfig, } = (0, react_1.useMemo)(() => (0,
|
|
37
|
+
const { wysiwygToolbarConfig, markupToolbarConfig, wysiwygHiddenActionsConfig, markupHiddenActionsConfig, } = (0, react_1.useMemo)(() => (0, toolbarsConfigs_1.getToolbarsConfigs)({
|
|
38
38
|
toolbarsPreset,
|
|
39
39
|
props: {
|
|
40
40
|
wysiwygToolbarConfig: initialWysiwygToolbarConfig,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const namesObj: Record<"bold" | "colorify" | "mono" | "link" | "italic" | "strike" | "underline" | "mark" | "quote" | "block" | "paragraph" | "cut" | "anchor" | "table" | "image" | "code_inline" | "code_block" | "note" | "file" | "codeBlock" | "checkbox" | "emoji" | "bulletList" | "codeInline" | "filePopup" | "gpt" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "horizontalrule" | "horizontalRule" | "imagePopup" | "liftListItem" | "math_block" | "mathBlock" | "math_inline" | "mathInline" | "mermaid" | "orderedList" | "redo" | "sinkListItem" | "tabs" | "undo" | "yfm_block" | "yfm_cut" | "yfm_html_block" | "htmlBlock" | "yfm_layout" | "layout" | "yfm_note", string>;
|
|
1
|
+
declare const namesObj: Record<"bold" | "colorify" | "mono" | "link" | "italic" | "strike" | "underline" | "mark" | "quote" | "block" | "paragraph" | "cut" | "anchor" | "table" | "image" | "code_inline" | "code_block" | "note" | "file" | "codeBlock" | "checkbox" | "emoji" | "bulletList" | "codeInline" | "filePopup" | "gpt" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "emptyRow" | "horizontalrule" | "horizontalRule" | "imagePopup" | "liftListItem" | "math_block" | "mathBlock" | "math_inline" | "mathInline" | "mermaid" | "orderedList" | "redo" | "sinkListItem" | "tabs" | "undo" | "yfm_block" | "yfm_cut" | "yfm_html_block" | "htmlBlock" | "yfm_layout" | "layout" | "yfm_note", string>;
|
|
2
2
|
export declare const ActionName: Readonly<typeof namesObj>;
|
|
3
3
|
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flattenPreset = void 0;
|
|
4
|
+
const types_1 = require("../../../toolbar/types");
|
|
5
|
+
const flattenPreset = (config) => {
|
|
6
|
+
return config.flat().reduce((acc, item) => {
|
|
7
|
+
if (item.type === types_1.ToolbarDataType.ListButton && Array.isArray(item.data)) {
|
|
8
|
+
return acc.concat(item.data);
|
|
9
|
+
}
|
|
10
|
+
acc.push(item);
|
|
11
|
+
return acc;
|
|
12
|
+
}, []);
|
|
13
|
+
};
|
|
14
|
+
exports.flattenPreset = flattenPreset;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ToolbarsPreset } from '../../../modules/toolbars/types';
|
|
2
|
+
import type { MToolbarData, WToolbarData } from '../../../toolbar';
|
|
3
|
+
import type { MarkdownEditorViewProps } from '../../MarkdownEditorView';
|
|
4
|
+
import { MarkdownEditorPreset } from '../../types';
|
|
5
|
+
export declare const createToolbarConfig: <T extends MToolbarData | WToolbarData>(editorType: 'wysiwyg' | 'markup', toolbarPreset: ToolbarsPreset | MarkdownEditorPreset, toolbarName: string) => T;
|
|
6
|
+
interface GetToolbarsConfigsArgs {
|
|
7
|
+
toolbarsPreset?: ToolbarsPreset;
|
|
8
|
+
props: Pick<MarkdownEditorViewProps, 'markupToolbarConfig' | 'wysiwygToolbarConfig' | 'wysiwygHiddenActionsConfig' | 'markupHiddenActionsConfig'>;
|
|
9
|
+
preset: MarkdownEditorPreset;
|
|
10
|
+
}
|
|
11
|
+
export declare const getToolbarsConfigs: ({ toolbarsPreset, props, preset }: GetToolbarsConfigsArgs) => {
|
|
12
|
+
wysiwygToolbarConfig: WToolbarData;
|
|
13
|
+
markupToolbarConfig: MToolbarData;
|
|
14
|
+
wysiwygHiddenActionsConfig: import("../../config/wysiwyg").WToolbarItemData[];
|
|
15
|
+
markupHiddenActionsConfig: import("../../config/markup").MToolbarItemData[];
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getToolbarsConfigs = exports.
|
|
4
|
-
const constants_1 = require("
|
|
5
|
-
const presets_1 = require("
|
|
6
|
-
const toolbar_1 = require("
|
|
3
|
+
exports.getToolbarsConfigs = exports.createToolbarConfig = void 0;
|
|
4
|
+
const constants_1 = require("../../../modules/toolbars/constants");
|
|
5
|
+
const presets_1 = require("../../../modules/toolbars/presets");
|
|
6
|
+
const toolbar_1 = require("../../../toolbar");
|
|
7
|
+
const flattenPreset_1 = require("./flattenPreset");
|
|
7
8
|
const defaultPresets = {
|
|
8
9
|
zero: presets_1.zero,
|
|
9
10
|
commonmark: presets_1.commonmark,
|
|
@@ -20,7 +21,7 @@ const transformItem = (type, item, id = 'unknown') => {
|
|
|
20
21
|
const isListButton = item.view.type === toolbar_1.ToolbarDataType.ListButton;
|
|
21
22
|
return Object.assign(Object.assign(Object.assign({ type: (_a = item.view.type) !== null && _a !== void 0 ? _a : toolbar_1.ToolbarDataType.SingleButton, id, title: item.view.title, hint: item.view.hint, icon: item.view.icon, hotkey: item.view.hotkey }, (isListButton && { withArrow: item.view.withArrow })), (type === 'wysiwyg' && item.wysiwyg && Object.assign({}, item.wysiwyg))), (type === 'markup' && item.markup && Object.assign({}, item.markup)));
|
|
22
23
|
};
|
|
23
|
-
const
|
|
24
|
+
const createToolbarConfig = (editorType, toolbarPreset, toolbarName) => {
|
|
24
25
|
var _a;
|
|
25
26
|
const preset = typeof toolbarPreset === 'string'
|
|
26
27
|
? defaultPresets[toolbarPreset] || defaultPresets.default
|
|
@@ -34,26 +35,21 @@ const createConfig = (editorType, toolbarPreset, toolbarName) => {
|
|
|
34
35
|
}));
|
|
35
36
|
return toolbarData;
|
|
36
37
|
};
|
|
37
|
-
exports.
|
|
38
|
-
const flattenPreset = (config) => {
|
|
39
|
-
var _a;
|
|
40
|
-
// TODO: @makhnatkin add logic for flatten
|
|
41
|
-
return ((_a = config[0]) !== null && _a !== void 0 ? _a : []);
|
|
42
|
-
};
|
|
38
|
+
exports.createToolbarConfig = createToolbarConfig;
|
|
43
39
|
const getToolbarsConfigs = ({ toolbarsPreset, props, preset }) => {
|
|
44
40
|
var _a, _b, _c, _d;
|
|
45
41
|
const wysiwygToolbarConfig = toolbarsPreset
|
|
46
|
-
? (0, exports.
|
|
47
|
-
: (_a = props.wysiwygToolbarConfig) !== null && _a !== void 0 ? _a : (0, exports.
|
|
42
|
+
? (0, exports.createToolbarConfig)('wysiwyg', toolbarsPreset, constants_1.ToolbarName.wysiwygMain)
|
|
43
|
+
: (_a = props.wysiwygToolbarConfig) !== null && _a !== void 0 ? _a : (0, exports.createToolbarConfig)('wysiwyg', preset, constants_1.ToolbarName.wysiwygMain);
|
|
48
44
|
const markupToolbarConfig = toolbarsPreset
|
|
49
|
-
? (0, exports.
|
|
50
|
-
: (_b = props.markupToolbarConfig) !== null && _b !== void 0 ? _b : (0, exports.
|
|
45
|
+
? (0, exports.createToolbarConfig)('markup', toolbarsPreset, constants_1.ToolbarName.markupMain)
|
|
46
|
+
: (_b = props.markupToolbarConfig) !== null && _b !== void 0 ? _b : (0, exports.createToolbarConfig)('markup', preset, constants_1.ToolbarName.markupMain);
|
|
51
47
|
const wysiwygHiddenActionsConfig = toolbarsPreset
|
|
52
|
-
? flattenPreset((0, exports.
|
|
53
|
-
: (_c = props.wysiwygHiddenActionsConfig) !== null && _c !== void 0 ? _c : flattenPreset((0, exports.
|
|
48
|
+
? (0, flattenPreset_1.flattenPreset)((0, exports.createToolbarConfig)('wysiwyg', toolbarsPreset, constants_1.ToolbarName.wysiwygHidden))
|
|
49
|
+
: (_c = props.wysiwygHiddenActionsConfig) !== null && _c !== void 0 ? _c : (0, flattenPreset_1.flattenPreset)((0, exports.createToolbarConfig)('wysiwyg', preset, constants_1.ToolbarName.wysiwygHidden));
|
|
54
50
|
const markupHiddenActionsConfig = toolbarsPreset
|
|
55
|
-
? flattenPreset((0, exports.
|
|
56
|
-
: (_d = props.markupHiddenActionsConfig) !== null && _d !== void 0 ? _d : flattenPreset((0, exports.
|
|
51
|
+
? (0, flattenPreset_1.flattenPreset)((0, exports.createToolbarConfig)('markup', toolbarsPreset, constants_1.ToolbarName.markupHidden))
|
|
52
|
+
: (_d = props.markupHiddenActionsConfig) !== null && _d !== void 0 ? _d : (0, flattenPreset_1.flattenPreset)((0, exports.createToolbarConfig)('markup', preset, constants_1.ToolbarName.markupHidden));
|
|
57
53
|
return {
|
|
58
54
|
wysiwygToolbarConfig,
|
|
59
55
|
markupToolbarConfig,
|
|
@@ -93,6 +93,12 @@ export declare type MarkdownEditorExperimentalOptions = {
|
|
|
93
93
|
* Default value is 'disabled'.
|
|
94
94
|
*/
|
|
95
95
|
directiveSyntax?: DirectiveSyntaxOption;
|
|
96
|
+
/**
|
|
97
|
+
* If we need support for empty strings
|
|
98
|
+
*
|
|
99
|
+
* @default false
|
|
100
|
+
*/
|
|
101
|
+
preserveEmptyRows?: boolean;
|
|
96
102
|
};
|
|
97
103
|
export declare type MarkdownEditorMarkupConfig = {
|
|
98
104
|
/**
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useMarkdownEditor = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
+
const getTransformers_1 = require("../core/markdown/ProseMirrorTransformer/getTransformers");
|
|
5
6
|
const extensions_1 = require("../extensions");
|
|
6
7
|
const logger_1 = require("../logger");
|
|
7
8
|
const directive_1 = require("../utils/directive");
|
|
@@ -13,11 +14,15 @@ function useMarkdownEditor(props, deps = []) {
|
|
|
13
14
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
14
15
|
const { md = {}, initial = {}, handlers = {}, experimental = {}, markupConfig = {}, wysiwygConfig = {}, } = props;
|
|
15
16
|
const breaks = (_a = md.breaks) !== null && _a !== void 0 ? _a : props.breaks;
|
|
17
|
+
const preserveEmptyRows = experimental.preserveEmptyRows;
|
|
16
18
|
const preset = (_b = props.preset) !== null && _b !== void 0 ? _b : 'full';
|
|
17
19
|
const renderStorage = new extensions_1.ReactRenderStorage();
|
|
18
20
|
const uploadFile = (_c = handlers.uploadFile) !== null && _c !== void 0 ? _c : props.fileUploadHandler;
|
|
19
21
|
const needToSetDimensionsForUploadedImages = (_d = experimental.needToSetDimensionsForUploadedImages) !== null && _d !== void 0 ? _d : props.needToSetDimensionsForUploadedImages;
|
|
20
22
|
const enableNewImageSizeCalculation = experimental.enableNewImageSizeCalculation;
|
|
23
|
+
const pmTransformers = (0, getTransformers_1.getPMTransformers)({
|
|
24
|
+
emptyRowTransformer: preserveEmptyRows,
|
|
25
|
+
});
|
|
21
26
|
const directiveSyntax = new directive_1.DirectiveSyntaxContext(experimental.directiveSyntax);
|
|
22
27
|
const extensions = (builder) => {
|
|
23
28
|
var _a;
|
|
@@ -29,7 +34,7 @@ function useMarkdownEditor(props, deps = []) {
|
|
|
29
34
|
}, onSubmit: () => {
|
|
30
35
|
editor.emit('submit', null);
|
|
31
36
|
return true;
|
|
32
|
-
}, placeholderOptions: wysiwygConfig.placeholderOptions, mdBreaks: breaks, fileUploadHandler: uploadFile, needToSetDimensionsForUploadedImages,
|
|
37
|
+
}, preserveEmptyRows: preserveEmptyRows, placeholderOptions: wysiwygConfig.placeholderOptions, mdBreaks: breaks, fileUploadHandler: uploadFile, needToSetDimensionsForUploadedImages,
|
|
33
38
|
enableNewImageSizeCalculation }));
|
|
34
39
|
{
|
|
35
40
|
const extraExtensions = wysiwygConfig.extensions || props.extraExtensions;
|
|
@@ -40,7 +45,8 @@ function useMarkdownEditor(props, deps = []) {
|
|
|
40
45
|
};
|
|
41
46
|
return new Editor_1.EditorImpl(Object.assign(Object.assign({}, props), { preset,
|
|
42
47
|
renderStorage,
|
|
43
|
-
directiveSyntax,
|
|
48
|
+
directiveSyntax,
|
|
49
|
+
pmTransformers, md: Object.assign(Object.assign({}, md), { breaks, html: (_e = md.html) !== null && _e !== void 0 ? _e : props.allowHTML, linkify: (_f = md.linkify) !== null && _f !== void 0 ? _f : props.linkify, linkifyTlds: (_g = md.linkifyTlds) !== null && _g !== void 0 ? _g : props.linkifyTlds }), initial: Object.assign(Object.assign({}, initial), { markup: (_h = initial.markup) !== null && _h !== void 0 ? _h : props.initialMarkup, mode: (_j = initial.mode) !== null && _j !== void 0 ? _j : props.initialEditorMode, toolbarVisible: (_k = initial.toolbarVisible) !== null && _k !== void 0 ? _k : props.initialToolbarVisible, splitModeEnabled: (_l = initial.splitModeEnabled) !== null && _l !== void 0 ? _l : props.initialSplitModeEnabled }), handlers: Object.assign(Object.assign({}, handlers), { uploadFile }), experimental: Object.assign(Object.assign({}, experimental), { needToSetDimensionsForUploadedImages,
|
|
44
50
|
enableNewImageSizeCalculation, prepareRawMarkup: (_m = experimental.prepareRawMarkup) !== null && _m !== void 0 ? _m : props.prepareRawMarkup, beforeEditorModeChange: (_o = experimental.beforeEditorModeChange) !== null && _o !== void 0 ? _o : props.experimental_beforeEditorModeChange }), markupConfig: Object.assign(Object.assign({}, markupConfig), { splitMode: (_p = markupConfig.splitMode) !== null && _p !== void 0 ? _p : props.splitMode, renderPreview: (_q = markupConfig.renderPreview) !== null && _q !== void 0 ? _q : props.renderPreview, extensions: (_r = markupConfig.extensions) !== null && _r !== void 0 ? _r : props.extraMarkupExtensions }), wysiwygConfig: Object.assign(Object.assign({}, wysiwygConfig), { extensions, escapeConfig: (_s = wysiwygConfig.escapeConfig) !== null && _s !== void 0 ? _s : props.escapeConfig }) }));
|
|
45
51
|
}, deps);
|
|
46
52
|
(0, react_1.useLayoutEffect)(() => {
|
|
@@ -9,6 +9,7 @@ export declare type ExtensionsOptions = BehaviorPresetOptions & FullPresetOption
|
|
|
9
9
|
export declare type BundlePresetOptions = ExtensionsOptions & EditorModeKeymapOptions & {
|
|
10
10
|
preset: MarkdownEditorPreset;
|
|
11
11
|
mdBreaks?: boolean;
|
|
12
|
+
preserveEmptyRows?: boolean;
|
|
12
13
|
fileUploadHandler?: FileUploadHandler;
|
|
13
14
|
placeholderOptions?: WysiwygPlaceholderOptions;
|
|
14
15
|
/**
|
|
@@ -34,7 +34,7 @@ const BundlePreset = (builder, opts) => {
|
|
|
34
34
|
return typeof value === 'function'
|
|
35
35
|
? value()
|
|
36
36
|
: value !== null && value !== void 0 ? value : (0, placeholder_1.i18n)('doc_empty');
|
|
37
|
-
} }, opts.baseSchema) });
|
|
37
|
+
}, preserveEmptyRows: opts.preserveEmptyRows }, opts.baseSchema) });
|
|
38
38
|
const commonMarkOptions = Object.assign(Object.assign({}, zeroOptions), { selectionContext: Object.assign({ config: wysiwyg_1.wSelectionMenuConfigByPreset.commonmark }, opts.selectionContext), commandMenu: Object.assign({ actions: wysiwyg_1.wCommandMenuConfigByPreset.commonmark }, opts.commandMenu), breaks: Object.assign({ preferredBreak: (opts.mdBreaks ? 'soft' : 'hard') }, opts.breaks), bold: Object.assign({ boldKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.Bold) }, opts.bold), italic: Object.assign({ italicKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.Italic) }, opts.italic), code: Object.assign({ codeKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.Code) }, opts.code), codeBlock: Object.assign({ codeBlockKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.CodeBlock) }, opts.codeBlock), blockquote: Object.assign({ qouteKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.Quote) }, opts.blockquote), link: Object.assign({ linkKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.Link) }, opts.link), lists: Object.assign({ ulKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.BulletList), olKey: shortcuts_1.formatter.toPM(shortcuts_1.Action.OrderedList), ulInputRules: { plus: false } }, opts.lists), image: {
|
|
39
39
|
parseInsertedUrlAsImage: (_a = opts.imgSize) === null || _a === void 0 ? void 0 : _a.parseInsertedUrlAsImage,
|
|
40
40
|
} });
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { PresetName } from 'markdown-it';
|
|
2
2
|
import type { CommonEditor, MarkupString } from '../common';
|
|
3
|
+
import { TransformFn } from './markdown/ProseMirrorTransformer';
|
|
3
4
|
import type { ActionStorage } from './types/actions';
|
|
4
5
|
import type { Extension } from './types/extension';
|
|
5
6
|
import type { Parser } from './types/parser';
|
|
@@ -18,6 +19,7 @@ export declare type WysiwygEditorOptions = {
|
|
|
18
19
|
mdPreset?: PresetName;
|
|
19
20
|
allowHTML?: boolean;
|
|
20
21
|
linkify?: boolean;
|
|
22
|
+
pmTransformers?: TransformFn[];
|
|
21
23
|
linkifyTlds?: string | string[];
|
|
22
24
|
escapeConfig?: EscapeConfig;
|
|
23
25
|
/** Call on any state change (move cursor, change selection, etc...) */
|
|
@@ -31,7 +33,7 @@ export declare class WysiwygEditor implements CommonEditor, ActionStorage {
|
|
|
31
33
|
get serializer(): Serializer;
|
|
32
34
|
get parser(): Parser;
|
|
33
35
|
get actions(): WysiwygEditor.Actions;
|
|
34
|
-
constructor({ domElem, initialContent, extensions, allowHTML, mdPreset, linkify, linkifyTlds, escapeConfig, onChange, onDocChange, }: WysiwygEditorOptions);
|
|
36
|
+
constructor({ domElem, initialContent, extensions, allowHTML, mdPreset, linkify, pmTransformers, linkifyTlds, escapeConfig, onChange, onDocChange, }: WysiwygEditorOptions);
|
|
35
37
|
action<T extends keyof WysiwygEditor.Actions>(actionName: T): WysiwygEditor.Actions[T];
|
|
36
38
|
focus(): void;
|
|
37
39
|
hasFocus(): boolean;
|
package/build/cjs/core/Editor.js
CHANGED
|
@@ -10,7 +10,7 @@ const ExtensionsManager_1 = require("./ExtensionsManager");
|
|
|
10
10
|
const actions_1 = require("./utils/actions");
|
|
11
11
|
const metrics_1 = require("./utils/metrics");
|
|
12
12
|
class WysiwygEditor {
|
|
13
|
-
constructor({ domElem, initialContent = '', extensions = () => { }, allowHTML, mdPreset, linkify, linkifyTlds, escapeConfig, onChange, onDocChange, }) {
|
|
13
|
+
constructor({ domElem, initialContent = '', extensions = () => { }, allowHTML, mdPreset, linkify, pmTransformers, linkifyTlds, escapeConfig, onChange, onDocChange, }) {
|
|
14
14
|
_WysiwygEditor_view.set(this, void 0);
|
|
15
15
|
_WysiwygEditor_serializer.set(this, void 0);
|
|
16
16
|
_WysiwygEditor_parser.set(this, void 0);
|
|
@@ -21,6 +21,7 @@ class WysiwygEditor {
|
|
|
21
21
|
// "breaks" option only affects the renderer, but not the parser
|
|
22
22
|
mdOpts: { html: allowHTML, linkify, breaks: true, preset: mdPreset },
|
|
23
23
|
linkifyTlds,
|
|
24
|
+
pmTransformers,
|
|
24
25
|
});
|
|
25
26
|
const state = prosemirror_state_1.EditorState.create({
|
|
26
27
|
schema,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import MarkdownIt, { PresetName } from 'markdown-it';
|
|
2
2
|
import type { Plugin } from 'prosemirror-state';
|
|
3
3
|
import { ActionsManager } from './ActionsManager';
|
|
4
|
+
import { TransformFn } from './markdown/ProseMirrorTransformer';
|
|
4
5
|
import type { ActionSpec } from './types/actions';
|
|
5
6
|
import type { Extension, ExtensionDeps } from './types/extension';
|
|
6
7
|
import type { MarkViewConstructor, NodeViewConstructor } from './types/node-views';
|
|
@@ -13,6 +14,7 @@ declare type ExtensionsManagerOptions = {
|
|
|
13
14
|
preset?: PresetName;
|
|
14
15
|
};
|
|
15
16
|
linkifyTlds?: string | string[];
|
|
17
|
+
pmTransformers?: TransformFn[];
|
|
16
18
|
};
|
|
17
19
|
export declare class ExtensionsManager {
|
|
18
20
|
#private;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _ExtensionsManager_schemaRegistry, _ExtensionsManager_parserRegistry, _ExtensionsManager_serializerRegistry, _ExtensionsManager_nodeViewCreators, _ExtensionsManager_markViewCreators, _ExtensionsManager_mdForMarkup, _ExtensionsManager_mdForText, _ExtensionsManager_extensions, _ExtensionsManager_builder, _ExtensionsManager_spec, _ExtensionsManager_deps, _ExtensionsManager_plugins, _ExtensionsManager_actions, _ExtensionsManager_nodeViews, _ExtensionsManager_markViews;
|
|
2
|
+
var _ExtensionsManager_schemaRegistry, _ExtensionsManager_parserRegistry, _ExtensionsManager_serializerRegistry, _ExtensionsManager_nodeViewCreators, _ExtensionsManager_markViewCreators, _ExtensionsManager_pmTransformers, _ExtensionsManager_mdForMarkup, _ExtensionsManager_mdForText, _ExtensionsManager_extensions, _ExtensionsManager_builder, _ExtensionsManager_spec, _ExtensionsManager_deps, _ExtensionsManager_plugins, _ExtensionsManager_actions, _ExtensionsManager_nodeViews, _ExtensionsManager_markViews;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.ExtensionsManager = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
@@ -17,6 +17,7 @@ class ExtensionsManager {
|
|
|
17
17
|
_ExtensionsManager_serializerRegistry.set(this, new SerializerTokensRegistry_1.SerializerTokensRegistry());
|
|
18
18
|
_ExtensionsManager_nodeViewCreators.set(this, new Map());
|
|
19
19
|
_ExtensionsManager_markViewCreators.set(this, new Map());
|
|
20
|
+
_ExtensionsManager_pmTransformers.set(this, []);
|
|
20
21
|
_ExtensionsManager_mdForMarkup.set(this, void 0);
|
|
21
22
|
_ExtensionsManager_mdForText.set(this, void 0);
|
|
22
23
|
_ExtensionsManager_extensions.set(this, void 0);
|
|
@@ -51,6 +52,9 @@ class ExtensionsManager {
|
|
|
51
52
|
tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_mdForMarkup, "f").linkify.tlds(options.linkifyTlds, true);
|
|
52
53
|
tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_mdForText, "f").linkify.tlds(options.linkifyTlds, true);
|
|
53
54
|
}
|
|
55
|
+
if (options.pmTransformers) {
|
|
56
|
+
tslib_1.__classPrivateFieldSet(this, _ExtensionsManager_pmTransformers, options.pmTransformers, "f");
|
|
57
|
+
}
|
|
54
58
|
// TODO: add prefilled context
|
|
55
59
|
tslib_1.__classPrivateFieldSet(this, _ExtensionsManager_builder, new ExtensionBuilder_1.ExtensionBuilder(), "f");
|
|
56
60
|
}
|
|
@@ -80,8 +84,8 @@ class ExtensionsManager {
|
|
|
80
84
|
tslib_1.__classPrivateFieldSet(this, _ExtensionsManager_deps, {
|
|
81
85
|
schema,
|
|
82
86
|
actions: new ActionsManager_1.ActionsManager(),
|
|
83
|
-
markupParser: tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_parserRegistry, "f").createParser(schema, tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_mdForMarkup, "f")),
|
|
84
|
-
textParser: tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_parserRegistry, "f").createParser(schema, tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_mdForText, "f")),
|
|
87
|
+
markupParser: tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_parserRegistry, "f").createParser(schema, tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_mdForMarkup, "f"), tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_pmTransformers, "f")),
|
|
88
|
+
textParser: tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_parserRegistry, "f").createParser(schema, tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_mdForText, "f"), tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_pmTransformers, "f")),
|
|
85
89
|
serializer: tslib_1.__classPrivateFieldGet(this, _ExtensionsManager_serializerRegistry, "f").createSerializer(),
|
|
86
90
|
}, "f");
|
|
87
91
|
}
|
|
@@ -97,4 +101,4 @@ class ExtensionsManager {
|
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
exports.ExtensionsManager = ExtensionsManager;
|
|
100
|
-
_ExtensionsManager_schemaRegistry = new WeakMap(), _ExtensionsManager_parserRegistry = new WeakMap(), _ExtensionsManager_serializerRegistry = new WeakMap(), _ExtensionsManager_nodeViewCreators = new WeakMap(), _ExtensionsManager_markViewCreators = new WeakMap(), _ExtensionsManager_mdForMarkup = new WeakMap(), _ExtensionsManager_mdForText = new WeakMap(), _ExtensionsManager_extensions = new WeakMap(), _ExtensionsManager_builder = new WeakMap(), _ExtensionsManager_spec = new WeakMap(), _ExtensionsManager_deps = new WeakMap(), _ExtensionsManager_plugins = new WeakMap(), _ExtensionsManager_actions = new WeakMap(), _ExtensionsManager_nodeViews = new WeakMap(), _ExtensionsManager_markViews = new WeakMap();
|
|
104
|
+
_ExtensionsManager_schemaRegistry = new WeakMap(), _ExtensionsManager_parserRegistry = new WeakMap(), _ExtensionsManager_serializerRegistry = new WeakMap(), _ExtensionsManager_nodeViewCreators = new WeakMap(), _ExtensionsManager_markViewCreators = new WeakMap(), _ExtensionsManager_pmTransformers = new WeakMap(), _ExtensionsManager_mdForMarkup = new WeakMap(), _ExtensionsManager_mdForText = new WeakMap(), _ExtensionsManager_extensions = new WeakMap(), _ExtensionsManager_builder = new WeakMap(), _ExtensionsManager_spec = new WeakMap(), _ExtensionsManager_deps = new WeakMap(), _ExtensionsManager_plugins = new WeakMap(), _ExtensionsManager_actions = new WeakMap(), _ExtensionsManager_nodeViews = new WeakMap(), _ExtensionsManager_markViews = new WeakMap();
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type MarkdownIt from 'markdown-it';
|
|
2
2
|
import type { Schema } from 'prosemirror-model';
|
|
3
|
+
import { TransformFn } from './markdown/ProseMirrorTransformer';
|
|
3
4
|
import type { Parser, ParserToken } from './types/parser';
|
|
4
5
|
export declare class ParserTokensRegistry {
|
|
5
6
|
#private;
|
|
6
7
|
addToken(name: string, token: ParserToken): this;
|
|
7
|
-
createParser(schema: Schema, tokenizer: MarkdownIt): Parser;
|
|
8
|
+
createParser(schema: Schema, tokenizer: MarkdownIt, pmTransformers: TransformFn[]): Parser;
|
|
8
9
|
}
|
|
@@ -12,8 +12,8 @@ class ParserTokensRegistry {
|
|
|
12
12
|
tslib_1.__classPrivateFieldGet(this, _ParserTokensRegistry_tokens, "f")[name] = token;
|
|
13
13
|
return this;
|
|
14
14
|
}
|
|
15
|
-
createParser(schema, tokenizer) {
|
|
16
|
-
return new MarkdownParser_1.MarkdownParser(schema, tokenizer, tslib_1.__classPrivateFieldGet(this, _ParserTokensRegistry_tokens, "f"));
|
|
15
|
+
createParser(schema, tokenizer, pmTransformers) {
|
|
16
|
+
return new MarkdownParser_1.MarkdownParser(schema, tokenizer, tslib_1.__classPrivateFieldGet(this, _ParserTokensRegistry_tokens, "f"), pmTransformers);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
exports.ParserTokensRegistry = ParserTokensRegistry;
|
|
@@ -2,6 +2,7 @@ import type { Match } from 'linkify-it';
|
|
|
2
2
|
import type MarkdownIt from 'markdown-it';
|
|
3
3
|
import { Mark, Node, NodeType, Schema } from 'prosemirror-model';
|
|
4
4
|
import type { Parser, ParserToken } from '../types/parser';
|
|
5
|
+
import { TransformFn } from './ProseMirrorTransformer';
|
|
5
6
|
declare type TokenAttrs = {
|
|
6
7
|
[name: string]: unknown;
|
|
7
8
|
};
|
|
@@ -15,7 +16,8 @@ export declare class MarkdownParser implements Parser {
|
|
|
15
16
|
marks: readonly Mark[];
|
|
16
17
|
tokens: Record<string, ParserToken>;
|
|
17
18
|
tokenizer: MarkdownIt;
|
|
18
|
-
|
|
19
|
+
pmTransformers: TransformFn[];
|
|
20
|
+
constructor(schema: Schema, tokenizer: MarkdownIt, tokens: Record<string, ParserToken>, pmTransformers: TransformFn[]);
|
|
19
21
|
validateLink(url: string): boolean;
|
|
20
22
|
normalizeLink(url: string): string;
|
|
21
23
|
normalizeLinkText(url: string): string;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MarkdownParser = void 0;
|
|
4
4
|
const prosemirror_model_1 = require("prosemirror-model");
|
|
5
5
|
const logger_1 = require("../../logger");
|
|
6
|
+
const ProseMirrorTransformer_1 = require("./ProseMirrorTransformer");
|
|
6
7
|
const openSuffix = '_open';
|
|
7
8
|
const closeSuffix = '_close';
|
|
8
9
|
var TokenType;
|
|
@@ -12,12 +13,13 @@ var TokenType;
|
|
|
12
13
|
TokenType["default"] = "default";
|
|
13
14
|
})(TokenType || (TokenType = {}));
|
|
14
15
|
class MarkdownParser {
|
|
15
|
-
constructor(schema, tokenizer, tokens) {
|
|
16
|
+
constructor(schema, tokenizer, tokens, pmTransformers) {
|
|
16
17
|
this.stack = [];
|
|
17
18
|
this.schema = schema;
|
|
18
19
|
this.marks = prosemirror_model_1.Mark.none;
|
|
19
20
|
this.tokens = tokens;
|
|
20
21
|
this.tokenizer = tokenizer;
|
|
22
|
+
this.pmTransformers = pmTransformers;
|
|
21
23
|
}
|
|
22
24
|
validateLink(url) {
|
|
23
25
|
return this.tokenizer.validateLink(url);
|
|
@@ -50,7 +52,8 @@ class MarkdownParser {
|
|
|
50
52
|
do {
|
|
51
53
|
doc = this.closeNode();
|
|
52
54
|
} while (this.stack.length);
|
|
53
|
-
|
|
55
|
+
const pmTransformer = new ProseMirrorTransformer_1.ProseMirrorTransformer(this.pmTransformers);
|
|
56
|
+
return doc ? pmTransformer.transform(doc) : this.schema.topNodeType.createAndFill();
|
|
54
57
|
}
|
|
55
58
|
finally {
|
|
56
59
|
logger_1.logger.metrics({ component: 'parser', event: 'parse', duration: Date.now() - time });
|
|
@@ -165,7 +165,7 @@ class MarkdownSerializerState {
|
|
|
165
165
|
const startOfLine = this.atBlank() || this.closed;
|
|
166
166
|
this.write();
|
|
167
167
|
let text = lines[i];
|
|
168
|
-
if (escape !== false)
|
|
168
|
+
if (escape !== false && this.options.escape !== false)
|
|
169
169
|
text = this.esc(text, startOfLine);
|
|
170
170
|
if (this.escapeWhitespace)
|
|
171
171
|
text = this.escWhitespace(text);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformEmptyParagraph = void 0;
|
|
4
|
+
const transformEmptyParagraph = (node) => {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
if (node.type !== 'paragraph')
|
|
7
|
+
return;
|
|
8
|
+
if (((_a = node.content) === null || _a === void 0 ? void 0 : _a.length) !== 1)
|
|
9
|
+
return;
|
|
10
|
+
if (((_b = node.content[0]) === null || _b === void 0 ? void 0 : _b.type) !== 'text')
|
|
11
|
+
return;
|
|
12
|
+
if (node.content[0].text === String.fromCharCode(160))
|
|
13
|
+
delete node.content;
|
|
14
|
+
};
|
|
15
|
+
exports.transformEmptyParagraph = transformEmptyParagraph;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TransformFn } from '.';
|
|
2
|
+
declare type GetTransformersProps = {
|
|
3
|
+
emptyRowTransformer?: boolean;
|
|
4
|
+
};
|
|
5
|
+
declare type GetPMTransformersType = (config: GetTransformersProps) => TransformFn[];
|
|
6
|
+
export declare const getPMTransformers: GetPMTransformersType;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPMTransformers = void 0;
|
|
4
|
+
// TODO: add a new method to the ExtensionBuilder
|
|
5
|
+
const emptyRowTransformer_1 = require("./emptyRowTransformer");
|
|
6
|
+
const getPMTransformers = ({ emptyRowTransformer }) => {
|
|
7
|
+
const transformers = [];
|
|
8
|
+
if (emptyRowTransformer) {
|
|
9
|
+
transformers.push(emptyRowTransformer_1.transformEmptyParagraph);
|
|
10
|
+
}
|
|
11
|
+
return transformers;
|
|
12
|
+
};
|
|
13
|
+
exports.getPMTransformers = getPMTransformers;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Node } from 'prosemirror-model';
|
|
2
|
+
declare type PMNodeJSON = {
|
|
3
|
+
type: string;
|
|
4
|
+
attrs?: Record<string, any>;
|
|
5
|
+
content?: PMNodeJSON[];
|
|
6
|
+
text?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare type TransformFn = (node: PMNodeJSON) => void;
|
|
9
|
+
export declare class ProseMirrorTransformer {
|
|
10
|
+
private readonly _transformers;
|
|
11
|
+
constructor(fns: TransformFn[]);
|
|
12
|
+
transform(doc: Node): Node;
|
|
13
|
+
transformJSON(node: PMNodeJSON): void;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProseMirrorTransformer = void 0;
|
|
4
|
+
const prosemirror_model_1 = require("prosemirror-model");
|
|
5
|
+
class ProseMirrorTransformer {
|
|
6
|
+
constructor(fns) {
|
|
7
|
+
this._transformers = fns;
|
|
8
|
+
}
|
|
9
|
+
transform(doc) {
|
|
10
|
+
const docJSON = doc.toJSON();
|
|
11
|
+
this.transformJSON(docJSON);
|
|
12
|
+
return prosemirror_model_1.Node.fromJSON(doc.type.schema, docJSON);
|
|
13
|
+
}
|
|
14
|
+
transformJSON(node) {
|
|
15
|
+
for (const fn of this._transformers) {
|
|
16
|
+
fn(node);
|
|
17
|
+
}
|
|
18
|
+
if (node.content) {
|
|
19
|
+
for (const child of node.content) {
|
|
20
|
+
this.transformJSON(child);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ProseMirrorTransformer = ProseMirrorTransformer;
|
|
@@ -8,5 +8,6 @@ export declare enum BaseNode {
|
|
|
8
8
|
export declare const pType: (schema: import("prosemirror-model").Schema<any, any>) => import("prosemirror-model").NodeType;
|
|
9
9
|
export declare type BaseSchemaSpecsOptions = {
|
|
10
10
|
paragraphPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
11
|
+
preserveEmptyRows?: boolean;
|
|
11
12
|
};
|
|
12
13
|
export declare const BaseSchemaSpecs: ExtensionAuto<BaseSchemaSpecsOptions>;
|