@gravity-ui/markdown-editor 15.27.2 → 15.29.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/README.md +6 -4
- package/build/cjs/bundle/Editor.js +1 -0
- package/build/cjs/bundle/Editor.js.map +1 -1
- package/build/cjs/bundle/HorizontalDrag.js +3 -3
- package/build/cjs/bundle/HorizontalDrag.js.map +1 -1
- package/build/cjs/bundle/settings/index.css +6 -14
- package/build/cjs/bundle/settings/index.js +5 -2
- package/build/cjs/bundle/settings/index.js.map +1 -1
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
- package/build/cjs/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
- package/build/cjs/bundle/types.d.ts +10 -11
- package/build/cjs/bundle/types.js.map +1 -1
- package/build/cjs/bundle/wysiwyg-preset.d.ts +0 -1
- package/build/cjs/bundle/wysiwyg-preset.js +1 -1
- package/build/cjs/bundle/wysiwyg-preset.js.map +1 -1
- package/build/cjs/core/Editor.js.map +1 -1
- package/build/cjs/core/ExtensionBuilder.d.ts +0 -2
- package/build/cjs/core/ExtensionBuilder.js +1 -1
- package/build/cjs/core/ExtensionBuilder.js.map +1 -1
- package/build/cjs/core/markdown/MarkdownParser.d.ts +2 -3
- package/build/cjs/core/markdown/MarkdownParser.js.map +1 -1
- package/build/cjs/core/types/extension.js.map +1 -1
- package/build/cjs/core/types/parser.d.ts +3 -2
- package/build/cjs/core/types/parser.js.map +1 -1
- package/build/cjs/extensions/additional/GPT/gptExtension/view.js +1 -3
- package/build/cjs/extensions/additional/GPT/gptExtension/view.js.map +1 -1
- package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
- package/build/cjs/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
- package/build/cjs/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
- package/build/cjs/extensions/behavior/Autocomplete/types.js.map +1 -1
- package/build/cjs/extensions/behavior/SelectionContext/index.d.ts +0 -2
- package/build/cjs/extensions/behavior/SelectionContext/index.js.map +1 -1
- package/build/cjs/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
- package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
- package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
- package/build/cjs/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
- package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js +80 -23
- package/build/cjs/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
- package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
- package/build/cjs/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
- package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/ImgSize/index.d.ts +0 -1
- package/build/cjs/extensions/yfm/ImgSize/index.js.map +1 -1
- package/build/cjs/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
- package/build/cjs/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/index.d.ts +0 -2
- package/build/cjs/extensions/yfm/YfmTable/index.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +3 -4
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
- package/build/cjs/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
- package/build/cjs/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
- package/build/cjs/i18n/bundle/en.json +2 -1
- package/build/cjs/i18n/bundle/index.d.ts +3 -2
- package/build/cjs/i18n/bundle/ru.json +2 -1
- package/build/cjs/i18n/common/en.json +2 -1
- package/build/cjs/i18n/common/index.d.ts +2 -1
- package/build/cjs/i18n/common/ru.json +2 -1
- package/build/cjs/logger.d.ts +0 -1
- package/build/cjs/logger.js +0 -1
- package/build/cjs/logger.js.map +1 -1
- package/build/cjs/markup/codemirror/create.d.ts +3 -1
- package/build/cjs/markup/codemirror/create.js +4 -1
- package/build/cjs/markup/codemirror/create.js.map +1 -1
- package/build/cjs/markup/codemirror/gravity.js +0 -1
- package/build/cjs/markup/codemirror/gravity.js.map +1 -1
- package/build/cjs/shortcuts/default.js +0 -2
- package/build/cjs/shortcuts/default.js.map +1 -1
- package/build/cjs/table-utils/commands/removeRow.js +1 -2
- package/build/cjs/table-utils/commands/removeRow.js.map +1 -1
- package/build/cjs/toolbar/types.d.ts +2 -3
- package/build/cjs/toolbar/types.js.map +1 -1
- package/build/cjs/types/spec.d.ts +0 -1
- package/build/cjs/types/spec.js.map +1 -1
- package/build/cjs/utils/ecapeRegexp.d.ts +1 -2
- package/build/cjs/utils/ecapeRegexp.js +1 -2
- package/build/cjs/utils/ecapeRegexp.js.map +1 -1
- package/build/cjs/utils/inputrules.js +2 -2
- package/build/cjs/utils/inputrules.js.map +1 -1
- package/build/cjs/version.js +1 -1
- package/build/cjs/version.js.map +1 -1
- package/build/cjs/view/hooks/useFilesGallery/constants.d.ts +5 -0
- package/build/cjs/view/hooks/useFilesGallery/constants.js +10 -2
- package/build/cjs/view/hooks/useFilesGallery/constants.js.map +1 -1
- package/build/cjs/view/hooks/useFilesGallery/helpers.d.ts +8 -0
- package/build/cjs/view/hooks/useFilesGallery/helpers.js +28 -0
- package/build/cjs/view/hooks/useFilesGallery/helpers.js.map +1 -0
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js +19 -22
- package/build/cjs/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
- package/build/esm/bundle/Editor.js +1 -0
- package/build/esm/bundle/Editor.js.map +1 -1
- package/build/esm/bundle/HorizontalDrag.js +3 -3
- package/build/esm/bundle/HorizontalDrag.js.map +1 -1
- package/build/esm/bundle/settings/index.css +6 -14
- package/build/esm/bundle/settings/index.js +6 -3
- package/build/esm/bundle/settings/index.js.map +1 -1
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js +8 -8
- package/build/esm/bundle/toolbar/utils/toolbarsConfigs.js.map +1 -1
- package/build/esm/bundle/types.d.ts +10 -11
- package/build/esm/bundle/types.js.map +1 -1
- package/build/esm/bundle/wysiwyg-preset.d.ts +0 -1
- package/build/esm/bundle/wysiwyg-preset.js +1 -1
- package/build/esm/bundle/wysiwyg-preset.js.map +1 -1
- package/build/esm/core/Editor.js.map +1 -1
- package/build/esm/core/ExtensionBuilder.d.ts +0 -2
- package/build/esm/core/ExtensionBuilder.js +1 -1
- package/build/esm/core/ExtensionBuilder.js.map +1 -1
- package/build/esm/core/markdown/MarkdownParser.d.ts +2 -3
- package/build/esm/core/markdown/MarkdownParser.js.map +1 -1
- package/build/esm/core/types/extension.js.map +1 -1
- package/build/esm/core/types/parser.d.ts +3 -2
- package/build/esm/core/types/parser.js.map +1 -1
- package/build/esm/extensions/additional/GPT/gptExtension/view.js +1 -3
- package/build/esm/extensions/additional/GPT/gptExtension/view.js.map +1 -1
- package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js +0 -1
- package/build/esm/extensions/additional/Mermaid/MermaidSpecs/index.js.map +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js.map +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js.map +1 -1
- package/build/esm/extensions/additional/YfmHtmlBlock/index.js.map +1 -1
- package/build/esm/extensions/behavior/Autocomplete/types.js.map +1 -1
- package/build/esm/extensions/behavior/SelectionContext/index.d.ts +0 -2
- package/build/esm/extensions/behavior/SelectionContext/index.js.map +1 -1
- package/build/esm/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
- package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -1
- package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
- package/build/esm/extensions/markdown/CodeBlock/handle-paste.d.ts +20 -0
- package/build/esm/extensions/markdown/CodeBlock/handle-paste.js +78 -24
- package/build/esm/extensions/markdown/CodeBlock/handle-paste.js.map +1 -1
- package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.d.ts +2 -2
- package/build/esm/extensions/markdown/Deflist/DeflistSpecs/index.js.map +1 -1
- package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.d.ts +1 -1
- package/build/esm/extensions/markdown/Heading/HeadingSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/Checkbox/CheckboxSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/ImgSize/ImgSizeSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/ImgSize/index.d.ts +0 -1
- package/build/esm/extensions/yfm/ImgSize/index.js.map +1 -1
- package/build/esm/extensions/yfm/Video/VideoSpecs/md-video.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.d.ts +2 -2
- package/build/esm/extensions/yfm/YfmCut/YfmCutSpecs/schema.js.map +1 -1
- package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmNote/YfmNoteSpecs/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/index.d.ts +0 -2
- package/build/esm/extensions/yfm/YfmTable/index.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js +1 -2
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusControl/FloatingPlusControl.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js +0 -1
- package/build/esm/extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPopup/FloatingPopup.js.map +1 -1
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.d.ts +1 -1
- package/build/esm/extensions/yfm/YfmTabs/YfmTabsSpecs/schema.js.map +1 -1
- package/build/esm/i18n/bundle/en.json +2 -1
- package/build/esm/i18n/bundle/index.d.ts +3 -2
- package/build/esm/i18n/bundle/ru.json +2 -1
- package/build/esm/i18n/common/en.json +2 -1
- package/build/esm/i18n/common/index.d.ts +2 -1
- package/build/esm/i18n/common/ru.json +2 -1
- package/build/esm/logger.d.ts +0 -1
- package/build/esm/logger.js +0 -1
- package/build/esm/logger.js.map +1 -1
- package/build/esm/markup/codemirror/create.d.ts +3 -1
- package/build/esm/markup/codemirror/create.js +5 -2
- package/build/esm/markup/codemirror/create.js.map +1 -1
- package/build/esm/markup/codemirror/gravity.js +0 -1
- package/build/esm/markup/codemirror/gravity.js.map +1 -1
- package/build/esm/shortcuts/default.js +0 -2
- package/build/esm/shortcuts/default.js.map +1 -1
- package/build/esm/table-utils/commands/removeRow.js +1 -2
- package/build/esm/table-utils/commands/removeRow.js.map +1 -1
- package/build/esm/toolbar/types.d.ts +2 -3
- package/build/esm/toolbar/types.js.map +1 -1
- package/build/esm/types/spec.d.ts +0 -1
- package/build/esm/types/spec.js.map +1 -1
- package/build/esm/utils/ecapeRegexp.d.ts +1 -2
- package/build/esm/utils/ecapeRegexp.js +1 -2
- package/build/esm/utils/ecapeRegexp.js.map +1 -1
- package/build/esm/utils/inputrules.js +2 -2
- package/build/esm/utils/inputrules.js.map +1 -1
- package/build/esm/version.js +1 -1
- package/build/esm/version.js.map +1 -1
- package/build/esm/view/hooks/useFilesGallery/constants.d.ts +5 -0
- package/build/esm/view/hooks/useFilesGallery/constants.js +9 -1
- package/build/esm/view/hooks/useFilesGallery/constants.js.map +1 -1
- package/build/esm/view/hooks/useFilesGallery/helpers.d.ts +8 -0
- package/build/esm/view/hooks/useFilesGallery/helpers.js +25 -0
- package/build/esm/view/hooks/useFilesGallery/helpers.js.map +1 -0
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.d.ts +0 -1
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js +19 -21
- package/build/esm/view/hooks/useFilesGallery/useFilesGallery.js.map +1 -1
- package/build/styles.css +6 -14
- package/package.json +73 -49
|
@@ -1,51 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handlePaste = void 0;
|
|
4
|
+
exports.insertCode = insertCode;
|
|
5
|
+
exports.getCodeData = getCodeData;
|
|
6
|
+
exports.isInlineCode = isInlineCode;
|
|
4
7
|
const tslib_1 = require("tslib");
|
|
5
8
|
const ts_dedent_1 = tslib_1.__importDefault(require("ts-dedent"));
|
|
6
9
|
const _core_1 = require("../../../core/index.js");
|
|
7
|
-
const model_1 = require("../../../pm/model.js");
|
|
8
10
|
const clipboard_1 = require("../../../utils/clipboard.js");
|
|
9
|
-
const CodeBlockSpecs_1 = require("./CodeBlockSpecs/index.js");
|
|
10
11
|
const const_1 = require("./const.js");
|
|
11
12
|
const handlePaste = (view, e) => {
|
|
12
|
-
|
|
13
|
+
const data = e.clipboardData;
|
|
14
|
+
if (!data)
|
|
13
15
|
return false;
|
|
14
|
-
const code = getCodeData(
|
|
16
|
+
const code = getCodeData(data);
|
|
15
17
|
if (!code)
|
|
16
18
|
return false;
|
|
17
|
-
|
|
19
|
+
const { state } = view;
|
|
20
|
+
const { tr, schema, selection } = state;
|
|
21
|
+
const $from = selection.$from;
|
|
22
|
+
const inCodeBlock = Boolean($from.parent.type.spec.code);
|
|
23
|
+
(0, _core_1.getLoggerFromState)(state).event({
|
|
18
24
|
domEvent: 'paste',
|
|
19
25
|
event: 'paste-from-code-editor',
|
|
20
26
|
editor: code.editor,
|
|
21
27
|
editorMode: code.mode,
|
|
22
28
|
empty: !code.value,
|
|
23
|
-
|
|
29
|
+
inline: code.inline,
|
|
30
|
+
dataTypes: Array.from(data.types),
|
|
24
31
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const codeBlockNode = (0, const_1.codeBlockType)(schema).create({ [CodeBlockSpecs_1.CodeBlockNodeAttr.Lang]: code.mode }, schema.text(code.value));
|
|
28
|
-
tr.replaceSelectionWith(codeBlockNode);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
tr.replaceWith(tr.selection.from, tr.selection.to, model_1.Fragment.empty);
|
|
32
|
+
if (!code.value) {
|
|
33
|
+
return false;
|
|
32
34
|
}
|
|
35
|
+
insertCode({
|
|
36
|
+
tr,
|
|
37
|
+
schema,
|
|
38
|
+
code,
|
|
39
|
+
from: selection.from,
|
|
40
|
+
to: selection.to,
|
|
41
|
+
inCodeBlock,
|
|
42
|
+
});
|
|
33
43
|
view.dispatch(tr.scrollIntoView());
|
|
44
|
+
e.preventDefault();
|
|
34
45
|
return true;
|
|
35
46
|
};
|
|
36
47
|
exports.handlePaste = handlePaste;
|
|
48
|
+
function insertCode({ tr, schema, code, from, to, inCodeBlock }) {
|
|
49
|
+
if (inCodeBlock) {
|
|
50
|
+
tr.insertText(code.value, from, to);
|
|
51
|
+
}
|
|
52
|
+
else if (code.inline) {
|
|
53
|
+
insertInlineCode(tr, schema, code.value);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
insertCodeBlock(tr, schema, code.value);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function insertInlineCode(tr, schema, value) {
|
|
60
|
+
const codeMarkType = schema.marks.code;
|
|
61
|
+
const marks = codeMarkType ? [codeMarkType.create()] : undefined;
|
|
62
|
+
const textNode = schema.text(value, marks);
|
|
63
|
+
tr.replaceSelectionWith(textNode, false);
|
|
64
|
+
}
|
|
65
|
+
function insertCodeBlock(tr, schema, value) {
|
|
66
|
+
const nodeType = (0, const_1.codeBlockType)(schema);
|
|
67
|
+
const textNode = schema.text(value);
|
|
68
|
+
const codeBlockNode = nodeType.create(null, textNode);
|
|
69
|
+
tr.replaceSelectionWith(codeBlockNode);
|
|
70
|
+
}
|
|
37
71
|
function getCodeData(data) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return { editor, mode, value: (0, ts_dedent_1.default)(data.getData(clipboard_1.DataTransferType.Text)) };
|
|
72
|
+
const text = data.getData(clipboard_1.DataTransferType.Text);
|
|
73
|
+
if (!text)
|
|
74
|
+
return null;
|
|
75
|
+
if ((0, clipboard_1.isVSCode)(data)) {
|
|
76
|
+
return processVSCodePaste(data, text);
|
|
77
|
+
}
|
|
78
|
+
const html = data.getData('text/html') || '';
|
|
79
|
+
if (html && (html.includes('<pre') || html.includes('<code'))) {
|
|
80
|
+
return processHtmlPaste(data, text);
|
|
48
81
|
}
|
|
49
82
|
return null;
|
|
50
83
|
}
|
|
84
|
+
function processVSCodePaste(data, text) {
|
|
85
|
+
const vsCodeData = (0, clipboard_1.tryParseVSCodeData)(data);
|
|
86
|
+
return {
|
|
87
|
+
editor: 'vscode',
|
|
88
|
+
value: (0, ts_dedent_1.default)(text),
|
|
89
|
+
inline: isInlineCode(text),
|
|
90
|
+
mode: vsCodeData?.mode,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function processHtmlPaste(data, text) {
|
|
94
|
+
const html = data.getData('text/html') || '';
|
|
95
|
+
const inline = isInlineCodeFromHtml(html, text);
|
|
96
|
+
return {
|
|
97
|
+
editor: 'code-editor',
|
|
98
|
+
value: inline ? text : (0, ts_dedent_1.default)(text),
|
|
99
|
+
inline,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function isInlineCode(text) {
|
|
103
|
+
return !text.includes('\n');
|
|
104
|
+
}
|
|
105
|
+
function isInlineCodeFromHtml(html, text) {
|
|
106
|
+
return html.includes('<code') && !html.includes('<pre') && isInlineCode(text);
|
|
107
|
+
}
|
|
51
108
|
//# sourceMappingURL=handle-paste.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-paste.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/CodeBlock/handle-paste.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handle-paste.js","sourceRoot":"../../../../../src","sources":["extensions/markdown/CodeBlock/handle-paste.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Schema} from 'prosemirror-model';\nimport type {Transaction} from 'prosemirror-state';\nimport dd from 'ts-dedent';\n\nimport {getLoggerFromState} from '#core';\nimport type {EditorProps} from '#pm/view';\nimport {DataTransferType, isVSCode, tryParseVSCodeData} from 'src/utils/clipboard';\n\nimport {codeBlockType} from './const';\n\nexport type CodePasteData = {\n editor: string;\n value: string;\n inline: boolean;\n mode?: string;\n};\n\ntype InsertCodeParams = {\n tr: Transaction;\n schema: Schema;\n code: CodePasteData;\n from: number;\n to: number;\n inCodeBlock: boolean;\n};\n\nexport const handlePaste: NonNullable<EditorProps['handlePaste']> = (view, e) => {\n const data = e.clipboardData;\n if (!data) return false;\n\n const code = getCodeData(data);\n if (!code) return false;\n\n const {state} = view;\n const {tr, schema, selection} = state;\n const $from = selection.$from;\n const inCodeBlock = Boolean($from.parent.type.spec.code);\n\n getLoggerFromState(state).event({\n domEvent: 'paste',\n event: 'paste-from-code-editor',\n editor: code.editor,\n editorMode: code.mode,\n empty: !code.value,\n inline: code.inline,\n dataTypes: Array.from(data.types),\n });\n\n if (!code.value) {\n return false;\n }\n\n insertCode({\n tr,\n schema,\n code,\n from: selection.from,\n to: selection.to,\n inCodeBlock,\n });\n\n view.dispatch(tr.scrollIntoView());\n e.preventDefault();\n return true;\n};\n\nexport function insertCode({tr, schema, code, from, to, inCodeBlock}: InsertCodeParams): void {\n if (inCodeBlock) {\n tr.insertText(code.value, from, to);\n } else if (code.inline) {\n insertInlineCode(tr, schema, code.value);\n } else {\n insertCodeBlock(tr, schema, code.value);\n }\n}\n\nfunction insertInlineCode(tr: Transaction, schema: Schema, value: string): void {\n const codeMarkType = schema.marks.code;\n const marks = codeMarkType ? [codeMarkType.create()] : undefined;\n const textNode = schema.text(value, marks);\n tr.replaceSelectionWith(textNode, false);\n}\n\nfunction insertCodeBlock(tr: Transaction, schema: Schema, value: string): void {\n const nodeType = codeBlockType(schema);\n const textNode = schema.text(value);\n const codeBlockNode = nodeType.create(null, textNode);\n tr.replaceSelectionWith(codeBlockNode);\n}\n\nexport function getCodeData(data: DataTransfer): CodePasteData | null {\n const text = data.getData(DataTransferType.Text);\n if (!text) return null;\n\n if (isVSCode(data)) {\n return processVSCodePaste(data, text);\n }\n\n const html = data.getData('text/html') || '';\n if (html && (html.includes('<pre') || html.includes('<code'))) {\n return processHtmlPaste(data, text);\n }\n\n return null;\n}\n\nfunction processVSCodePaste(data: DataTransfer, text: string): CodePasteData {\n const vsCodeData = tryParseVSCodeData(data);\n return {\n editor: 'vscode',\n value: dd(text),\n inline: isInlineCode(text),\n mode: vsCodeData?.mode,\n };\n}\n\nfunction processHtmlPaste(data: DataTransfer, text: string): CodePasteData {\n const html = data.getData('text/html') || '';\n const inline = isInlineCodeFromHtml(html, text);\n return {\n editor: 'code-editor',\n value: inline ? text : dd(text),\n inline,\n };\n}\n\nexport function isInlineCode(text: string): boolean {\n return !text.includes('\\n');\n}\n\nfunction isInlineCodeFromHtml(html: string, text: string): boolean {\n return html.includes('<code') && !html.includes('<pre') && isInlineCode(text);\n}\n"]}
|
|
@@ -6,11 +6,11 @@ export declare const defTermType: (schema: import("prosemirror-model").Schema) =
|
|
|
6
6
|
export declare const defDescType: (schema: import("prosemirror-model").Schema) => import("prosemirror-model").NodeType;
|
|
7
7
|
export type DeflistSpecsOptions = {
|
|
8
8
|
/**
|
|
9
|
-
* @deprecated
|
|
9
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
10
10
|
*/
|
|
11
11
|
deflistTermPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
12
12
|
/**
|
|
13
|
-
* @deprecated
|
|
13
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
14
14
|
*/
|
|
15
15
|
deflistDescPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Deflist/DeflistSpecs/index.ts"],"names":[],"mappings":";;;;AAAA,oGAAuE;AAIvE,wDAAyD;AAEzD,sCAAoC;AACpC,wCAAsC;AACtC,wCAAwC;AACxC,gDAA8C;AAE9C,oCAAoC;AAA5B,oGAAA,WAAW,OAAA;AACN,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;AAatD,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAa,CAAC,CAAC,CAAC;IACnD,OAAO;SACF,OAAO,CAAC,mBAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,mBAAW,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,EAAC,SAAS,EAAE,qBAAY,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAC;QACnD,IAAI,EAAE,6BAAgB,CAAC,mBAAW,CAAC,IAAI,CAAC;KAC3C,CAAC,CAAC;SACF,OAAO,CAAC,mBAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,mBAAW,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,EAAC,SAAS,EAAE,qBAAY,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAC;QACnD,IAAI,EAAE,6BAAgB,CAAC,mBAAW,CAAC,IAAI,CAAC;KAC3C,CAAC,CAAC;SACF,OAAO,CAAC,mBAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,mBAAW,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,EAAC,SAAS,EAAE,qBAAY,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAC;QACnD,IAAI,EAAE,6BAAgB,CAAC,mBAAW,CAAC,IAAI,CAAC;KAC3C,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB","sourcesContent":["import deflistPlugin from '@diplodoc/transform/lib/plugins/deflist.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {nodeTypeFactory} from '../../../../utils/schema';\n\nimport {DeflistNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {DeflistNode} from './const';\nexport const defListType = nodeTypeFactory(DeflistNode.List);\nexport const defTermType = nodeTypeFactory(DeflistNode.Term);\nexport const defDescType = nodeTypeFactory(DeflistNode.Desc);\n\nexport type DeflistSpecsOptions = {\n /**\n * @deprecated
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Deflist/DeflistSpecs/index.ts"],"names":[],"mappings":";;;;AAAA,oGAAuE;AAIvE,wDAAyD;AAEzD,sCAAoC;AACpC,wCAAsC;AACtC,wCAAwC;AACxC,gDAA8C;AAE9C,oCAAoC;AAA5B,oGAAA,WAAW,OAAA;AACN,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,WAAW,GAAG,IAAA,wBAAe,EAAC,mBAAW,CAAC,IAAI,CAAC,CAAC;AAatD,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAa,CAAC,CAAC,CAAC;IACnD,OAAO;SACF,OAAO,CAAC,mBAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,mBAAW,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,EAAC,SAAS,EAAE,qBAAY,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAC;QACnD,IAAI,EAAE,6BAAgB,CAAC,mBAAW,CAAC,IAAI,CAAC;KAC3C,CAAC,CAAC;SACF,OAAO,CAAC,mBAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,mBAAW,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,EAAC,SAAS,EAAE,qBAAY,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAC;QACnD,IAAI,EAAE,6BAAgB,CAAC,mBAAW,CAAC,IAAI,CAAC;KAC3C,CAAC,CAAC;SACF,OAAO,CAAC,mBAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,WAAW,CAAC,mBAAW,CAAC,IAAI,CAAC;QACnC,MAAM,EAAE,EAAC,SAAS,EAAE,qBAAY,CAAC,mBAAW,CAAC,IAAI,CAAC,EAAC;QACnD,IAAI,EAAE,6BAAgB,CAAC,mBAAW,CAAC,IAAI,CAAC;KAC3C,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB","sourcesContent":["import deflistPlugin from '@diplodoc/transform/lib/plugins/deflist.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {nodeTypeFactory} from '../../../../utils/schema';\n\nimport {DeflistNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {DeflistNode} from './const';\nexport const defListType = nodeTypeFactory(DeflistNode.List);\nexport const defTermType = nodeTypeFactory(DeflistNode.Term);\nexport const defDescType = nodeTypeFactory(DeflistNode.Desc);\n\nexport type DeflistSpecsOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n deflistTermPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n deflistDescPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const DeflistSpecs: ExtensionAuto<DeflistSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder.configureMd((md) => md.use(deflistPlugin));\n builder\n .addNode(DeflistNode.List, () => ({\n spec: schemaSpecs[DeflistNode.List],\n fromMd: {tokenSpec: parserTokens[DeflistNode.List]},\n toMd: serializerTokens[DeflistNode.List],\n }))\n .addNode(DeflistNode.Term, () => ({\n spec: schemaSpecs[DeflistNode.Term],\n fromMd: {tokenSpec: parserTokens[DeflistNode.Term]},\n toMd: serializerTokens[DeflistNode.Term],\n }))\n .addNode(DeflistNode.Desc, () => ({\n spec: schemaSpecs[DeflistNode.Desc],\n fromMd: {tokenSpec: parserTokens[DeflistNode.Desc]},\n toMd: serializerTokens[DeflistNode.Desc],\n }));\n};\n"]}
|
|
@@ -6,7 +6,7 @@ export declare const headingLineNumberAttr = "data-line";
|
|
|
6
6
|
export declare const headingType: (schema: import("prosemirror-model").Schema) => import("prosemirror-model").NodeType;
|
|
7
7
|
export type HeadingSpecsOptions = {
|
|
8
8
|
/**
|
|
9
|
-
* @deprecated
|
|
9
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
10
10
|
*/
|
|
11
11
|
headingPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Heading/HeadingSpecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Node, NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {nodeTypeFactory} from '../../../../utils/schema';\n\nexport const headingNodeName = 'heading';\nexport const headingLevelAttr = 'level';\nexport const headingLineNumberAttr = 'data-line';\nexport const headingType = nodeTypeFactory(headingNodeName);\n\nconst DEFAULT_PLACEHOLDER = (node: Node) => 'Heading ' + node.attrs[headingLevelAttr];\n\nexport type HeadingSpecsOptions = {\n /**\n * @deprecated
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/markdown/Heading/HeadingSpecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Node, NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {nodeTypeFactory} from '../../../../utils/schema';\n\nexport const headingNodeName = 'heading';\nexport const headingLevelAttr = 'level';\nexport const headingLineNumberAttr = 'data-line';\nexport const headingType = nodeTypeFactory(headingNodeName);\n\nconst DEFAULT_PLACEHOLDER = (node: Node) => 'Heading ' + node.attrs[headingLevelAttr];\n\nexport type HeadingSpecsOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n headingPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const HeadingSpecs: ExtensionAuto<HeadingSpecsOptions> = (builder, opts) => {\n builder.addNode(headingNodeName, () => ({\n spec: {\n attrs: {[headingLevelAttr]: {default: 1}, [headingLineNumberAttr]: {default: null}},\n content: '(text | inline)*',\n group: 'block',\n defining: true,\n parseDOM: [\n {tag: 'h1', attrs: {[headingLevelAttr]: 1}},\n {tag: 'h2', attrs: {[headingLevelAttr]: 2}},\n {tag: 'h3', attrs: {[headingLevelAttr]: 3}},\n {tag: 'h4', attrs: {[headingLevelAttr]: 4}},\n {tag: 'h5', attrs: {[headingLevelAttr]: 5}},\n {tag: 'h6', attrs: {[headingLevelAttr]: 6}},\n ],\n toDOM(node) {\n const lineNumber = node.attrs[headingLineNumberAttr];\n\n return [\n 'h' + node.attrs[headingLevelAttr],\n lineNumber === null ? {} : {[headingLineNumberAttr]: lineNumber},\n 0,\n ];\n },\n placeholder: {\n content:\n builder.context.get('placeholder')?.heading ??\n opts.headingPlaceholder ??\n DEFAULT_PLACEHOLDER,\n alwaysVisible: true,\n },\n },\n fromMd: {\n tokenSpec: {\n name: headingNodeName,\n type: 'block',\n getAttrs: (tok) => ({[headingLevelAttr]: Number(tok.tag.slice(1))}),\n },\n },\n toMd: (state, node) => {\n state.write(state.repeat('#', node.attrs[headingLevelAttr]) + ' ');\n state.renderInline(node);\n state.closeBlock(node);\n },\n }));\n};\n"]}
|
|
@@ -3,7 +3,7 @@ import type { ExtensionAuto, ExtensionNodeSpec } from "../../../../core/index.js
|
|
|
3
3
|
export { CheckboxAttr, CheckboxNode, checkboxType, checkboxLabelType, checkboxInputType, } from "./const.js";
|
|
4
4
|
export type CheckboxSpecsOptions = {
|
|
5
5
|
/**
|
|
6
|
-
* @deprecated
|
|
6
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
7
7
|
*/
|
|
8
8
|
checkboxLabelPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
9
9
|
inputView?: ExtensionNodeSpec['view'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/Checkbox/CheckboxSpecs/index.ts"],"names":[],"mappings":";;;;AAAA,yGAA+E;AAK/E,sCAAkD;AAClD,wCAAsC;AACtC,wCAAwC;AACxC,gDAA8C;AAE9C,oCAMiB;AALb,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,0GAAA,iBAAiB,OAAA;AACjB,0GAAA,iBAAiB,OAAA;AAad,MAAM,aAAa,GAAwC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAChF,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAc,EAAE,EAAC,QAAQ,EAAR,gBAAQ,EAAE,QAAQ,EAAE,IAAA,SAAC,GAAE,EAAC,CAAC,CAAC;SACtE,OAAO,CAAC,oBAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,WAAW,CAAC,oBAAY,CAAC,QAAQ,CAAC;QACxC,IAAI,EAAE,6BAAgB,CAAC,oBAAY,CAAC,QAAQ,CAAC;QAC7C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,oBAAY,CAAC,QAAQ,CAAC;SACjD;QACD,IAAI,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC,CAAC;SACF,OAAO,CAAC,oBAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,oBAAY,CAAC,KAAK,CAAC;QACrC,IAAI,EAAE,6BAAgB,CAAC,oBAAY,CAAC,KAAK,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,oBAAY,CAAC,KAAK,CAAC;SAC9C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS;KACvB,CAAC,CAAC;SACF,OAAO,CAAC,oBAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,oBAAY,CAAC,KAAK,CAAC;QACrC,IAAI,EAAE,6BAAgB,CAAC,oBAAY,CAAC,KAAK,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,oBAAY,CAAC,KAAK,CAAC;YAC3C,SAAS,EAAE,gBAAgB;SAC9B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS;KACvB,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AA9BW,QAAA,aAAa,iBA8BxB","sourcesContent":["import checkboxPlugin from '@diplodoc/transform/lib/plugins/checkbox/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto, ExtensionNodeSpec} from '../../../../core';\n\nimport {CheckboxNode, b, idPrefix} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {\n CheckboxAttr,\n CheckboxNode,\n checkboxType,\n checkboxLabelType,\n checkboxInputType,\n} from './const';\n\nexport type CheckboxSpecsOptions = {\n /**\n * @deprecated
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/Checkbox/CheckboxSpecs/index.ts"],"names":[],"mappings":";;;;AAAA,yGAA+E;AAK/E,sCAAkD;AAClD,wCAAsC;AACtC,wCAAwC;AACxC,gDAA8C;AAE9C,oCAMiB;AALb,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,0GAAA,iBAAiB,OAAA;AACjB,0GAAA,iBAAiB,OAAA;AAad,MAAM,aAAa,GAAwC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAChF,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAc,EAAE,EAAC,QAAQ,EAAR,gBAAQ,EAAE,QAAQ,EAAE,IAAA,SAAC,GAAE,EAAC,CAAC,CAAC;SACtE,OAAO,CAAC,oBAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,WAAW,CAAC,oBAAY,CAAC,QAAQ,CAAC;QACxC,IAAI,EAAE,6BAAgB,CAAC,oBAAY,CAAC,QAAQ,CAAC;QAC7C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,oBAAY,CAAC,QAAQ,CAAC;SACjD;QACD,IAAI,EAAE,IAAI,CAAC,YAAY;KAC1B,CAAC,CAAC;SACF,OAAO,CAAC,oBAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,oBAAY,CAAC,KAAK,CAAC;QACrC,IAAI,EAAE,6BAAgB,CAAC,oBAAY,CAAC,KAAK,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,oBAAY,CAAC,KAAK,CAAC;SAC9C;QACD,IAAI,EAAE,IAAI,CAAC,SAAS;KACvB,CAAC,CAAC;SACF,OAAO,CAAC,oBAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,oBAAY,CAAC,KAAK,CAAC;QACrC,IAAI,EAAE,6BAAgB,CAAC,oBAAY,CAAC,KAAK,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,oBAAY,CAAC,KAAK,CAAC;YAC3C,SAAS,EAAE,gBAAgB;SAC9B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS;KACvB,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AA9BW,QAAA,aAAa,iBA8BxB","sourcesContent":["import checkboxPlugin from '@diplodoc/transform/lib/plugins/checkbox/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto, ExtensionNodeSpec} from '../../../../core';\n\nimport {CheckboxNode, b, idPrefix} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {\n CheckboxAttr,\n CheckboxNode,\n checkboxType,\n checkboxLabelType,\n checkboxInputType,\n} from './const';\n\nexport type CheckboxSpecsOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n checkboxLabelPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n inputView?: ExtensionNodeSpec['view'];\n labelView?: ExtensionNodeSpec['view'];\n checkboxView?: ExtensionNodeSpec['view'];\n};\n\nexport const CheckboxSpecs: ExtensionAuto<CheckboxSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder\n .configureMd((md) => md.use(checkboxPlugin, {idPrefix, divClass: b()}))\n .addNode(CheckboxNode.Checkbox, () => ({\n spec: schemaSpecs[CheckboxNode.Checkbox],\n toMd: serializerTokens[CheckboxNode.Checkbox],\n fromMd: {\n tokenSpec: parserTokens[CheckboxNode.Checkbox],\n },\n view: opts.checkboxView,\n }))\n .addNode(CheckboxNode.Input, () => ({\n spec: schemaSpecs[CheckboxNode.Input],\n toMd: serializerTokens[CheckboxNode.Input],\n fromMd: {\n tokenSpec: parserTokens[CheckboxNode.Input],\n },\n view: opts.inputView,\n }))\n .addNode(CheckboxNode.Label, () => ({\n spec: schemaSpecs[CheckboxNode.Label],\n toMd: serializerTokens[CheckboxNode.Label],\n fromMd: {\n tokenSpec: parserTokens[CheckboxNode.Label],\n tokenName: 'checkbox_label',\n },\n view: opts.labelView,\n }));\n};\n"]}
|
|
@@ -4,7 +4,7 @@ import { ImgSizeAttr } from "./const.js";
|
|
|
4
4
|
export { ImgSizeAttr };
|
|
5
5
|
export type ImgSizeSpecsOptions = {
|
|
6
6
|
/**
|
|
7
|
-
* @deprecated
|
|
7
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
8
8
|
*/
|
|
9
9
|
placeholder?: NodeSpec['placeholder'];
|
|
10
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/ImgSize/ImgSizeSpecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport imsize from '@diplodoc/transform/lib/plugins/imsize/index.js';\nimport isNumber from 'is-number';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {imageNodeName} from '../../../markdown/Image/const';\n\nimport {ImgSizeAttr} from './const';\n\ntype ImsizeTypedAttributes = {\n [ImgSizeAttr.Src]: string;\n [ImgSizeAttr.Title]: string | null;\n [ImgSizeAttr.Alt]: string | null;\n [ImgSizeAttr.Width]: string | null;\n [ImgSizeAttr.Height]: string | null;\n [ImgSizeAttr.Loading]: string | null;\n [ImgSizeAttr.Id]: string | null;\n};\n\nexport {ImgSizeAttr};\n\nexport type ImgSizeSpecsOptions = {\n /**\n * @deprecated
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/ImgSize/ImgSizeSpecs/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport imsize from '@diplodoc/transform/lib/plugins/imsize/index.js';\nimport isNumber from 'is-number';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport type {ExtensionAuto} from '../../../../core';\nimport {imageNodeName} from '../../../markdown/Image/const';\n\nimport {ImgSizeAttr} from './const';\n\ntype ImsizeTypedAttributes = {\n [ImgSizeAttr.Src]: string;\n [ImgSizeAttr.Title]: string | null;\n [ImgSizeAttr.Alt]: string | null;\n [ImgSizeAttr.Width]: string | null;\n [ImgSizeAttr.Height]: string | null;\n [ImgSizeAttr.Loading]: string | null;\n [ImgSizeAttr.Id]: string | null;\n};\n\nexport {ImgSizeAttr};\n\nexport type ImgSizeSpecsOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n placeholder?: NodeSpec['placeholder'];\n};\n\nexport const ImgSizeSpecs: ExtensionAuto<ImgSizeSpecsOptions> = (builder, opts) => {\n const placeholderContent = builder.context.get('placeholder')?.imgSize;\n\n builder.configureMd((md) => md.use(imsize, {log, enableInlineStyling: true}));\n builder.addNode(imageNodeName, () => ({\n spec: {\n inline: true,\n attrs: {\n [ImgSizeAttr.Src]: {},\n [ImgSizeAttr.Alt]: {default: null},\n [ImgSizeAttr.Title]: {default: null},\n [ImgSizeAttr.Height]: {default: null},\n [ImgSizeAttr.Width]: {default: null},\n [ImgSizeAttr.Loading]: {default: null},\n [ImgSizeAttr.Id]: {default: null},\n },\n placeholder: placeholderContent ? {content: placeholderContent} : opts.placeholder,\n group: 'inline',\n draggable: true,\n parseDOM: [\n {\n tag: 'img[src]',\n getAttrs(dom) {\n const height = (dom as Element).getAttribute(ImgSizeAttr.Height);\n const width = (dom as Element).getAttribute(ImgSizeAttr.Width);\n\n return {\n [ImgSizeAttr.Src]: (dom as Element).getAttribute(ImgSizeAttr.Src),\n [ImgSizeAttr.Alt]: (dom as Element).getAttribute(ImgSizeAttr.Alt),\n [ImgSizeAttr.Title]: (dom as Element).getAttribute(ImgSizeAttr.Title),\n [ImgSizeAttr.Loading]: (dom as Element).getAttribute(\n ImgSizeAttr.Loading,\n ),\n [ImgSizeAttr.Height]: isNumber(height) ? height : null,\n [ImgSizeAttr.Width]: isNumber(width) ? height : null,\n [ImgSizeAttr.Id]: (dom as Element).getAttribute(ImgSizeAttr.Id),\n };\n },\n },\n ],\n toDOM(node) {\n return ['img', node.attrs];\n },\n },\n fromMd: {\n tokenSpec: {\n name: imageNodeName,\n type: 'node',\n getAttrs: (tok): ImsizeTypedAttributes => ({\n [ImgSizeAttr.Src]: tok.attrGet(ImgSizeAttr.Src)!,\n [ImgSizeAttr.Title]: tok.attrGet(ImgSizeAttr.Title),\n [ImgSizeAttr.Height]: tok.attrGet(ImgSizeAttr.Height),\n [ImgSizeAttr.Width]: tok.attrGet(ImgSizeAttr.Width),\n [ImgSizeAttr.Loading]: tok.attrGet(ImgSizeAttr.Loading),\n [ImgSizeAttr.Alt]: tok.children?.[0]?.content || null,\n [ImgSizeAttr.Id]: tok.attrGet(ImgSizeAttr.Id),\n }),\n },\n },\n toMd: (state, node) => {\n const attrs = node.attrs as ImsizeTypedAttributes;\n let result = ' {\n result += state.esc(attrs.src);\n }\n\n if (attrs.title) {\n result += ` ${state.quote(attrs.title)}`;\n }\n\n result += getSize(attrs);\n result += ')';\n\n state.write(result);\n },\n }));\n};\n\nfunction getSize({width, height}: ImsizeTypedAttributes): string {\n if (width || height) {\n return ` =${width || ''}x${height || ''}`;\n }\n\n return '';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/ImgSize/index.ts"],"names":[],"mappings":";;;AAEA,sDAAgE;AAChE,wDAAmE;AACnE,0DAAsE;AACtE,0CAAuD;AACvD,sCAAuC;AACvC,wEAAgE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/ImgSize/index.ts"],"names":[],"mappings":";;;AAEA,sDAAgE;AAChE,wDAAmE;AACnE,0DAAsE;AACtE,0CAAuD;AACvD,sCAAuC;AACvC,wEAAgE;AAczD,MAAM,OAAO,GAAkC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACpE,OAAO,CAAC,GAAG,CAAC,2BAAY,EAAE,IAAI,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,yBAAW,EAAE;QACrB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,oCAAoC,EAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;QACxF,6BAA6B,EAAE,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC;KAC7E,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,uBAAU,EAAE;YACpB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC;YAClE,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,6BAA6B,EAAE,IAAI,CAAC,6BAA6B;SACpE,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,sBAAc,EAAE,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,IAAA,kBAAQ,EAAC,MAAM,CAAC,CAAC,CAAC;IAElE,OAAO,CAAC,SAAS,CAAC,uCAAqB,CAAC,CAAC;AAC7C,CAAC,CAAC;AAtBW,QAAA,OAAO,WAsBlB","sourcesContent":["import type {Action, ExtensionAuto} from '../../../core';\n\nimport {ImagePaste, type ImagePasteOptions} from './ImagePaste';\nimport {ImageWidget, type ImageWidgetOptions} from './ImageWidget';\nimport {ImgSizeSpecs, type ImgSizeSpecsOptions} from './ImgSizeSpecs';\nimport {type AddImageAttrs, addImage} from './actions';\nimport {addImageAction} from './const';\nimport {imgSizeNodeViewPlugin} from './plugins/ImgSizeNodeView';\n\nexport type ImgSizeOptions = ImgSizeSpecsOptions & {\n /**\n * If we need to set dimensions for uploaded images\n * @default false\n */\n needToSetDimensionsForUploadedImages?: boolean;\n} & Pick<\n ImagePasteOptions,\n 'imageUploadHandler' | 'parseInsertedUrlAsImage' | 'enableNewImageSizeCalculation'\n > &\n Pick<ImageWidgetOptions, 'renderImageWidgetForm'>;\n\nexport const ImgSize: ExtensionAuto<ImgSizeOptions> = (builder, opts) => {\n builder.use(ImgSizeSpecs, opts);\n\n builder.use(ImageWidget, {\n imageUploadHandler: opts.imageUploadHandler,\n renderImageWidgetForm: opts.renderImageWidgetForm,\n needToSetDimensionsForUploadedImages: Boolean(opts.needToSetDimensionsForUploadedImages),\n enableNewImageSizeCalculation: Boolean(opts.enableNewImageSizeCalculation),\n });\n\n if (opts.imageUploadHandler || opts.parseInsertedUrlAsImage) {\n builder.use(ImagePaste, {\n imageUploadHandler: opts.imageUploadHandler,\n needDimensions: Boolean(opts.needToSetDimensionsForUploadedImages),\n parseInsertedUrlAsImage: opts.parseInsertedUrlAsImage,\n enableNewImageSizeCalculation: opts.enableNewImageSizeCalculation,\n });\n }\n\n builder.addAction(addImageAction, ({schema}) => addImage(schema));\n\n builder.addPlugin(imgSizeNodeViewPlugin);\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n // @ts-expect-error\n [addImageAction]: Action<AddImageAttrs>;\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const videoPlugin: import("markdown-it").PluginWithOptions<Partial<import("@diplodoc/transform/lib/plugins/video/types
|
|
1
|
+
export declare const videoPlugin: import("markdown-it").PluginWithOptions<Partial<import("@diplodoc/transform/lib/plugins/video/types").VideoFullOptions>>;
|
|
2
2
|
export { VideoService, defaults } from '@diplodoc/transform/lib/plugins/video/const.js';
|
|
3
3
|
export type { VideoPluginOptions, VideoToken } from '@diplodoc/transform/lib/plugins/video/types.js';
|
|
4
4
|
export { parseVideoUrl } from '@diplodoc/transform/lib/plugins/video/parsers.js';
|
|
@@ -3,11 +3,11 @@ import type { PlaceholderOptions } from "../../../../utils/placeholder.js";
|
|
|
3
3
|
import { CutNode } from "./const.js";
|
|
4
4
|
export type YfmCutSchemaOptions = {
|
|
5
5
|
/**
|
|
6
|
-
* @deprecated
|
|
6
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
7
7
|
*/
|
|
8
8
|
yfmCutTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
9
9
|
/**
|
|
10
|
-
* @deprecated
|
|
10
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
11
11
|
*/
|
|
12
12
|
yfmCutContentPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmCut/YfmCutSpecs/schema.ts"],"names":[],"mappings":";;;AAGA,sCAA0D;AAa1D,MAAM,oBAAoB,GAAG;IACzB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;CACzB,CAAC;AAEK,MAAM,cAAc,GAAG,CAC1B,IAA0B,EAC1B,WAAgC,EACP,EAAE,CAAC,CAAC;IAC7B,CAAC,eAAO,CAAC,GAAG,CAAC,EAAE;QACX,KAAK,EAAE,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,uBAAe,CAAC,GAAG,EAAC,EAAE,CAAC,eAAO,CAAC,MAAM,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC;QACjF,OAAO,EAAE,GAAG,eAAO,CAAC,QAAQ,IAAI,eAAO,CAAC,UAAU,EAAE;QACpD,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE;YACN;gBACI,GAAG,EAAE,IAAI,uBAAe,CAAC,GAAG,EAAE;gBAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,eAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,eAAO,CAAC,MAAM,CAAC,EAAC,CAAC;aAC9E;SACJ;QACD,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,MAAM;KAClB;IAED,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,KAAK,EAAE;YACH,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,uBAAe,CAAC,KAAK,EAAC;YACjD,CAAC,eAAO,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC;SAClC;QACD,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,IAAI,uBAAe,CAAC,KAAK,EAAE,EAAC,CAAC;QAC9C,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,WAAW,EAAE;YACT,OAAO,EACH,WAAW,EAAE,CAAC,eAAO,CAAC,QAAQ,CAAC;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,oBAAoB,CAAC,KAAK;YAC9B,aAAa,EAAE,IAAI;SACtB;QACD,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;IAED,CAAC,eAAO,CAAC,UAAU,CAAC,EAAE;QAClB,KAAK,EAAE,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,uBAAe,CAAC,OAAO,EAAC,EAAC;QAClD,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,IAAI,uBAAe,CAAC,OAAO,EAAE,EAAC,CAAC;QAChD,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,WAAW,EAAE;YACT,OAAO,EACH,WAAW,EAAE,CAAC,eAAO,CAAC,UAAU,CAAC;gBACjC,IAAI,EAAE,wBAAwB;gBAC9B,oBAAoB,CAAC,OAAO;YAChC,aAAa,EAAE,IAAI;SACtB;QACD,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;CACJ,CAAC,CAAC;AAnEU,QAAA,cAAc,kBAmExB","sourcesContent":["import type {NodeSpec} from '#pm/model';\nimport type {PlaceholderOptions} from 'src/utils/placeholder';\n\nimport {CutAttr, CutNode, YfmCutClassName} from './const';\n\nexport type YfmCutSchemaOptions = {\n /**\n * @deprecated
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmCut/YfmCutSpecs/schema.ts"],"names":[],"mappings":";;;AAGA,sCAA0D;AAa1D,MAAM,oBAAoB,GAAG;IACzB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;CACzB,CAAC;AAEK,MAAM,cAAc,GAAG,CAC1B,IAA0B,EAC1B,WAAgC,EACP,EAAE,CAAC,CAAC;IAC7B,CAAC,eAAO,CAAC,GAAG,CAAC,EAAE;QACX,KAAK,EAAE,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,uBAAe,CAAC,GAAG,EAAC,EAAE,CAAC,eAAO,CAAC,MAAM,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC;QACjF,OAAO,EAAE,GAAG,eAAO,CAAC,QAAQ,IAAI,eAAO,CAAC,UAAU,EAAE;QACpD,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE;YACN;gBACI,GAAG,EAAE,IAAI,uBAAe,CAAC,GAAG,EAAE;gBAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,eAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,eAAO,CAAC,MAAM,CAAC,EAAC,CAAC;aAC9E;SACJ;QACD,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,MAAM;KAClB;IAED,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,KAAK,EAAE;YACH,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE,EAAC,OAAO,EAAE,uBAAe,CAAC,KAAK,EAAC;YACjD,CAAC,eAAO,CAAC,IAAI,CAAC,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC;SAClC;QACD,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,IAAI,uBAAe,CAAC,KAAK,EAAE,EAAC,CAAC;QAC9C,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,WAAW,EAAE;YACT,OAAO,EACH,WAAW,EAAE,CAAC,eAAO,CAAC,QAAQ,CAAC;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,oBAAoB,CAAC,KAAK;YAC9B,aAAa,EAAE,IAAI;SACtB;QACD,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;IAED,CAAC,eAAO,CAAC,UAAU,CAAC,EAAE;QAClB,KAAK,EAAE,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,uBAAe,CAAC,OAAO,EAAC,EAAC;QAClD,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,CAAC,EAAC,GAAG,EAAE,IAAI,uBAAe,CAAC,OAAO,EAAE,EAAC,CAAC;QAChD,KAAK,CAAC,IAAI;YACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,WAAW,EAAE;YACT,OAAO,EACH,WAAW,EAAE,CAAC,eAAO,CAAC,UAAU,CAAC;gBACjC,IAAI,EAAE,wBAAwB;gBAC9B,oBAAoB,CAAC,OAAO;YAChC,aAAa,EAAE,IAAI;SACtB;QACD,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,MAAM;KAClB;CACJ,CAAC,CAAC;AAnEU,QAAA,cAAc,kBAmExB","sourcesContent":["import type {NodeSpec} from '#pm/model';\nimport type {PlaceholderOptions} from 'src/utils/placeholder';\n\nimport {CutAttr, CutNode, YfmCutClassName} from './const';\n\nexport type YfmCutSchemaOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n yfmCutTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n yfmCutContentPlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nconst DEFAULT_PLACEHOLDERS = {\n Title: 'Cut title',\n Content: 'Cut content',\n};\n\nexport const getSchemaSpecs = (\n opts?: YfmCutSchemaOptions,\n placeholder?: PlaceholderOptions,\n): Record<CutNode, NodeSpec> => ({\n [CutNode.Cut]: {\n attrs: {class: {default: YfmCutClassName.Cut}, [CutAttr.Markup]: {default: null}},\n content: `${CutNode.CutTitle} ${CutNode.CutContent}`,\n group: 'block yfm-cut',\n parseDOM: [\n {\n tag: `.${YfmCutClassName.Cut}`,\n getAttrs: (node) => ({[CutAttr.Markup]: node.getAttribute(CutAttr.Markup)}),\n },\n ],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n selectable: true,\n allowSelection: true,\n defining: true,\n complex: 'root',\n },\n\n [CutNode.CutTitle]: {\n attrs: {\n [CutAttr.Class]: {default: YfmCutClassName.Title},\n [CutAttr.Line]: {default: null},\n },\n content: 'inline*',\n group: 'block yfm-cut',\n parseDOM: [{tag: `.${YfmCutClassName.Title}`}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[CutNode.CutTitle] ??\n opts?.yfmCutTitlePlaceholder ??\n DEFAULT_PLACEHOLDERS.Title,\n alwaysVisible: true,\n },\n definingAsContext: true,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n\n [CutNode.CutContent]: {\n attrs: {class: {default: YfmCutClassName.Content}},\n content: '(block | paragraph)+',\n group: 'block yfm-cut',\n parseDOM: [{tag: `.${YfmCutClassName.Content}`}],\n toDOM(node) {\n return ['div', node.attrs, 0];\n },\n placeholder: {\n content:\n placeholder?.[CutNode.CutContent] ??\n opts?.yfmCutContentPlaceholder ??\n DEFAULT_PLACEHOLDERS.Content,\n alwaysVisible: true,\n },\n definingAsContext: true,\n selectable: false,\n allowSelection: false,\n complex: 'leaf',\n },\n});\n"]}
|
|
@@ -4,7 +4,7 @@ export { NoteNode as YfmNoteNode } from "./const.js";
|
|
|
4
4
|
export { noteType, noteTitleType } from "./utils.js";
|
|
5
5
|
export type YfmNoteSpecsOptions = {
|
|
6
6
|
/**
|
|
7
|
-
* @deprecated
|
|
7
|
+
* @deprecated use placeholder option in BehaviorPreset instead.
|
|
8
8
|
*/
|
|
9
9
|
yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];
|
|
10
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmNote/YfmNoteSpecs/index.ts"],"names":[],"mappings":";;;;AAAA,2DAAmD;AACnD,sGAAuE;AAGvE,wDAAwC;AAGxC,sCAAiC;AACjC,wCAAsC;AACtC,wCAAwC;AACxC,gDAA8C;AAE9C,oCAAgD;AAAxC,oGAAA,QAAQ,OAAe;AAC/B,oCAAgD;AAAxC,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AASxB,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAS,EAAE,EAAC,GAAG,EAAH,YAAG,EAAE,IAAI,EAAE,IAAA,qBAAS,GAAE,CAAC,IAAI,IAAI,IAAI,EAAC,CAAC,CAAC;SAC7E,OAAO,CAAC,gBAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,gBAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,6BAAgB,CAAC,gBAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,gBAAQ,CAAC,IAAI,CAAC;SACzC;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,gBAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,gBAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,6BAAgB,CAAC,gBAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,gBAAQ,CAAC,SAAS,CAAC;SAC9C;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,gBAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,WAAW,CAAC,gBAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,6BAAgB,CAAC,gBAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,gBAAQ,CAAC,WAAW,CAAC;SAChD;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AA1BW,QAAA,YAAY,gBA0BvB","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport {getConfig} from 'src/configure';\nimport type {ExtensionAuto} from 'src/core';\n\nimport {NoteNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {NoteNode as YfmNoteNode} from './const';\nexport {noteType, noteTitleType} from './utils';\n\nexport type YfmNoteSpecsOptions = {\n /**\n * @deprecated
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../../src","sources":["extensions/yfm/YfmNote/YfmNoteSpecs/index.ts"],"names":[],"mappings":";;;;AAAA,2DAAmD;AACnD,sGAAuE;AAGvE,wDAAwC;AAGxC,sCAAiC;AACjC,wCAAsC;AACtC,wCAAwC;AACxC,gDAA8C;AAE9C,oCAAgD;AAAxC,oGAAA,QAAQ,OAAe;AAC/B,oCAAgD;AAAxC,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AASxB,MAAM,YAAY,GAAuC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,WAAW,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE7E,OAAO;SACF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAS,EAAE,EAAC,GAAG,EAAH,YAAG,EAAE,IAAI,EAAE,IAAA,qBAAS,GAAE,CAAC,IAAI,IAAI,IAAI,EAAC,CAAC,CAAC;SAC7E,OAAO,CAAC,gBAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,gBAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,6BAAgB,CAAC,gBAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,gBAAQ,CAAC,IAAI,CAAC;SACzC;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,gBAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,WAAW,CAAC,gBAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,EAAE,6BAAgB,CAAC,gBAAQ,CAAC,SAAS,CAAC;QAC1C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,gBAAQ,CAAC,SAAS,CAAC;SAC9C;KACJ,CAAC,CAAC;SACF,OAAO,CAAC,gBAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,WAAW,CAAC,gBAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,6BAAgB,CAAC,gBAAQ,CAAC,WAAW,CAAC;QAC5C,MAAM,EAAE;YACJ,SAAS,EAAE,qBAAY,CAAC,gBAAQ,CAAC,WAAW,CAAC;SAChD;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AA1BW,QAAA,YAAY,gBA0BvB","sourcesContent":["import {log} from '@diplodoc/transform/lib/log.js';\nimport yfmPlugin from '@diplodoc/transform/lib/plugins/notes/index.js';\nimport type {NodeSpec} from 'prosemirror-model';\n\nimport {getConfig} from 'src/configure';\nimport type {ExtensionAuto} from 'src/core';\n\nimport {NoteNode} from './const';\nimport {parserTokens} from './parser';\nimport {getSchemaSpecs} from './schema';\nimport {serializerTokens} from './serializer';\n\nexport {NoteNode as YfmNoteNode} from './const';\nexport {noteType, noteTitleType} from './utils';\n\nexport type YfmNoteSpecsOptions = {\n /**\n * @deprecated use placeholder option in BehaviorPreset instead.\n */\n yfmNoteTitlePlaceholder?: NonNullable<NodeSpec['placeholder']>['content'];\n};\n\nexport const YfmNoteSpecs: ExtensionAuto<YfmNoteSpecsOptions> = (builder, opts) => {\n const schemaSpecs = getSchemaSpecs(opts, builder.context.get('placeholder'));\n\n builder\n .configureMd((md) => md.use(yfmPlugin, {log, lang: getConfig().lang || 'en'}))\n .addNode(NoteNode.Note, () => ({\n spec: schemaSpecs[NoteNode.Note],\n toMd: serializerTokens[NoteNode.Note],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.Note],\n },\n }))\n .addNode(NoteNode.NoteTitle, () => ({\n spec: schemaSpecs[NoteNode.NoteTitle],\n toMd: serializerTokens[NoteNode.NoteTitle],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteTitle],\n },\n }))\n .addNode(NoteNode.NoteContent, () => ({\n spec: schemaSpecs[NoteNode.NoteContent],\n toMd: serializerTokens[NoteNode.NoteContent],\n fromMd: {\n tokenSpec: parserTokens[NoteNode.NoteContent],\n },\n }));\n};\n"]}
|
|
@@ -6,14 +6,12 @@ export { YfmTableNode, yfmTableType, yfmTableBodyType, yfmTableRowType, yfmTable
|
|
|
6
6
|
export type YfmTableOptions = YfmTableSpecsOptions & {
|
|
7
7
|
/**
|
|
8
8
|
* Enables floating controls for table.
|
|
9
|
-
*
|
|
10
9
|
* @default true
|
|
11
10
|
*/
|
|
12
11
|
controls?: boolean;
|
|
13
12
|
/**
|
|
14
13
|
* Enables drag-d-drop rows and columns in table.
|
|
15
14
|
* The `controls` property must also be `true`.
|
|
16
|
-
*
|
|
17
15
|
* @default true
|
|
18
16
|
*/
|
|
19
17
|
dnd?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/YfmTable/index.ts"],"names":[],"mappings":";;;AACA,+DAAkD;AAElD,4DAAyE;AACzE,0CAAyC;AACzC,uDAAsD;AACtD,2DAAmD;AACnD,0EAAmE;AACnE,8FAAsF;AAEtF,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,6DAA2D;AAAnD,kHAAA,iBAAiB,OAAA;AACzB,0DAMyB;AALrB,6GAAA,YAAY,OAAA;AACZ,6GAAA,YAAY,OAAA;AACZ,iHAAA,gBAAgB,OAAA;AAChB,gHAAA,eAAe,OAAA;AACf,iHAAA,gBAAgB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../../../src","sources":["extensions/yfm/YfmTable/index.ts"],"names":[],"mappings":";;;AACA,+DAAkD;AAElD,4DAAyE;AACzE,0CAAyC;AACzC,uDAAsD;AACtD,2DAAmD;AACnD,0EAAmE;AACnE,8FAAsF;AAEtF,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,6DAA2D;AAAnD,kHAAA,iBAAiB,OAAA;AACzB,0DAMyB;AALrB,6GAAA,YAAY,OAAA;AACZ,6GAAA,YAAY,OAAA;AACZ,iHAAA,gBAAgB,OAAA;AAChB,gHAAA,eAAe,OAAA;AACf,iHAAA,gBAAgB,OAAA;AAiBb,MAAM,QAAQ,GAA0C,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IAChF,OAAO,CAAC,GAAG,CAAC,6BAAa,EAAE,OAAO,CAAC,CAAC;IAEpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACrB,GAAG,EAAE,IAAA,0BAAY,EAAC,MAAM,CAAC;QACzB,WAAW,EAAE,IAAA,0BAAY,EAAC,MAAM,CAAC;QACjC,SAAS,EAAE,IAAA,yBAAW,EAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,IAAA,yBAAW,EAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,4BAAgB;KAC9B,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,wBAAc,CAAC,CAAC;IAChD,OAAO,CAAC,SAAS,CAAC,6DAA6B,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,SAAS,CAAC,IAAA,0CAAuB,EAAC,EAAC,UAAU,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK,EAAC,CAAC,CAAC,CAAC;IACpF,CAAC;AACL,CAAC,CAAC;AAhBW,QAAA,QAAQ,YAgBnB","sourcesContent":["import type {Action, ExtensionWithOptions} from '../../../core';\nimport {goToNextCell} from '../../../table-utils';\n\nimport {YfmTableSpecs, type YfmTableSpecsOptions} from './YfmTableSpecs';\nimport {createYfmTable} from './actions';\nimport {backspaceCommand} from './commands/backspace';\nimport {goToNextRow} from './commands/goToNextRow';\nimport {yfmTableControlsPlugins} from './plugins/YfmTableControls';\nimport {yfmTableTransformPastedPlugin} from './plugins/yfmTableTransformPastedPlugin';\n\nconst action = 'createYfmTable';\n\nexport {convertToYfmTable} from './commands/convert-table';\nexport {\n YfmTableNode,\n yfmTableType,\n yfmTableBodyType,\n yfmTableRowType,\n yfmTableCellType,\n} from './YfmTableSpecs';\n\nexport type YfmTableOptions = YfmTableSpecsOptions & {\n /**\n * Enables floating controls for table.\n * @default true\n */\n controls?: boolean;\n /**\n * Enables drag-d-drop rows and columns in table.\n * The `controls` property must also be `true`.\n * @default true\n */\n dnd?: boolean;\n};\n\nexport const YfmTable: ExtensionWithOptions<YfmTableOptions> = (builder, options) => {\n builder.use(YfmTableSpecs, options);\n\n builder.addKeymap(() => ({\n Tab: goToNextCell('next'),\n 'Shift-Tab': goToNextCell('prev'),\n ArrowDown: goToNextRow('down'),\n ArrowUp: goToNextRow('up'),\n Backspace: backspaceCommand,\n }));\n builder.addAction(action, () => createYfmTable);\n builder.addPlugin(yfmTableTransformPastedPlugin);\n\n if (options.controls !== false) {\n builder.addPlugin(yfmTableControlsPlugins({dndEnabled: options.dnd !== false}));\n }\n};\n\ndeclare global {\n namespace WysiwygEditor {\n interface Actions {\n [action]: Action;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingMenuControl.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useMemo} from 'react';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport type {ClientRectObject, VirtualElement} from '@floating-ui/dom';\nimport {\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n BroomMotion as ClearCells,\n TrashBin,\n Xmark,\n} from '@gravity-ui/icons';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {i18n} from 'src/i18n/yfm-table';\n\nimport type {DnDControlHandler} from '../../dnd/dnd';\nimport {FloatingMenu, type FloatingMenuProps} from '../FloatingMenu/FloatingMenu';\n\ntype ControlType = FloatingMenuProps['dirtype'];\n\nexport type FloatingMenuControlProps = {\n cellElement: Element;\n tableElement: Element;\n multiple: boolean;\n type: ControlType;\n dndHandler?: DnDControlHandler;\n onMenuOpenToggle: FloatingMenuProps['onOpenToggle'];\n onClearCellsClick: () => void;\n onInsertBeforeClick: () => void;\n onInsertAfterClick: () => void;\n onRemoveRangeClick: () => void;\n onRemoveTableClick: () => void;\n};\n\nexport const FloatingMenuControl: React.FC<FloatingMenuControlProps> =\n function YfmTableFloatingMenuControl({\n type,\n multiple,\n dndHandler,\n cellElement,\n tableElement,\n onMenuOpenToggle,\n onClearCellsClick,\n onInsertBeforeClick,\n onInsertAfterClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n }) {\n const dropdownItems = useMemo<FloatingMenuProps['dropdownItems']>(\n () =>\n [\n [\n {\n text: i18n(`${type}.add.before`),\n qa: `g-md-yfm-table-action-add-${type}-before`,\n action: onInsertBeforeClick,\n iconStart: <Icon data={type === 'row' ? ArrowUp : ArrowLeft} />,\n },\n {\n text: i18n(`${type}.add.after`),\n qa: `g-md-yfm-table-action-add-${type}-after`,\n action: onInsertAfterClick,\n iconStart: <Icon data={type === 'row' ? ArrowDown : ArrowRight} />,\n },\n ],\n [\n {\n text: i18n('cells.clear'),\n qa: `g-md-yfm-table-${type}-clear-cells`,\n action: onClearCellsClick,\n iconStart: <Icon data={ClearCells} />,\n },\n ],\n [\n {\n text: i18n(`${type}.remove${multiple ? '.multiple' : ''}`),\n qa: `g-md-yfm-table-action-remove-${type}`,\n action: onRemoveRangeClick,\n iconStart: <Icon data={Xmark} />,\n },\n {\n theme: 'danger',\n text: i18n('table.remove'),\n qa: 'g-md-yfm-table-action-remove-table',\n action: onRemoveTableClick,\n iconStart: <Icon data={TrashBin} />,\n },\n ],\n ] satisfies FloatingMenuProps['dropdownItems'],\n [\n type,\n multiple,\n onClearCellsClick,\n onInsertAfterClick,\n onInsertBeforeClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n ],\n );\n\n const anchor = useMemo(\n () => getVirtualAnchor(type, tableElement, cellElement),\n [type, tableElement, cellElement],\n );\n\n return (\n <FloatingMenu\n dirtype={type}\n canDrag={dndHandler ? dndHandler.canDrag() : false}\n onOpenToggle={onMenuOpenToggle}\n anchorElement={anchor}\n switcherMouseProps={\n dndHandler\n ? {\n onMouseLeave: dndHandler.control_handleMouseLeave,\n onMouseDown: dndHandler.control_handleMouseDown,\n onMouseMove: dndHandler.control_handleMouseMove,\n onMouseUp: dndHandler.control_handleMouseUp,\n }\n : undefined\n }\n dropdownItems={dropdownItems}\n />\n );\n };\n\nfunction getVirtualAnchor(\n type: ControlType,\n tableElem: Element,\n cellElem: Element,\n): VirtualElement {\n if (type === 'row') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect: ClientRectObject = tableElem.getBoundingClientRect().toJSON();\n\n {\n // fix table rect\n tableRect.x += 1;\n tableRect.width -= 2;\n tableRect.left += 1;\n tableRect.right -= 1;\n }\n\n return {\n // from table\n x: tableRect.x,\n width: tableRect.width,\n left: tableRect.left,\n right: tableRect.right,\n // from cell\n y: cellRect.y,\n height: cellRect.height,\n top: cellRect.top,\n bottom: cellRect.top,\n };\n },\n };\n }\n\n if (type === 'column') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect: ClientRectObject = cellElem.getBoundingClientRect().toJSON();\n const tableRect = tableElem.getBoundingClientRect();\n\n const EDGE_OFFSET = 16;\n\n const cellMiddle = cellRect.x + cellRect.width / 2;\n\n // left border of table\n if (cellMiddle - EDGE_OFFSET <= tableRect.left) {\n const visible = cellRect.right - tableRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.left = cellRect.right - cellRect.width;\n cellRect.x = cellRect.left;\n }\n\n // right border of table\n if (cellMiddle + EDGE_OFFSET >= tableRect.right) {\n const visible = tableRect.right - cellRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.right = cellRect.left + cellRect.width;\n }\n\n return cellRect;\n },\n };\n }\n\n throw new Error(`Unknown control type: ${type}`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FloatingMenuControl.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingMenuControl/FloatingMenuControl.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useMemo} from 'react';\n\nimport type {ClientRectObject, VirtualElement} from '@floating-ui/react';\nimport {\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n BroomMotion as ClearCells,\n TrashBin,\n Xmark,\n} from '@gravity-ui/icons';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {i18n} from 'src/i18n/yfm-table';\n\nimport type {DnDControlHandler} from '../../dnd/dnd';\nimport {FloatingMenu, type FloatingMenuProps} from '../FloatingMenu/FloatingMenu';\n\ntype ControlType = FloatingMenuProps['dirtype'];\n\nexport type FloatingMenuControlProps = {\n cellElement: Element;\n tableElement: Element;\n multiple: boolean;\n type: ControlType;\n dndHandler?: DnDControlHandler;\n onMenuOpenToggle: FloatingMenuProps['onOpenToggle'];\n onClearCellsClick: () => void;\n onInsertBeforeClick: () => void;\n onInsertAfterClick: () => void;\n onRemoveRangeClick: () => void;\n onRemoveTableClick: () => void;\n};\n\nexport const FloatingMenuControl: React.FC<FloatingMenuControlProps> =\n function YfmTableFloatingMenuControl({\n type,\n multiple,\n dndHandler,\n cellElement,\n tableElement,\n onMenuOpenToggle,\n onClearCellsClick,\n onInsertBeforeClick,\n onInsertAfterClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n }) {\n const dropdownItems = useMemo<FloatingMenuProps['dropdownItems']>(\n () =>\n [\n [\n {\n text: i18n(`${type}.add.before`),\n qa: `g-md-yfm-table-action-add-${type}-before`,\n action: onInsertBeforeClick,\n iconStart: <Icon data={type === 'row' ? ArrowUp : ArrowLeft} />,\n },\n {\n text: i18n(`${type}.add.after`),\n qa: `g-md-yfm-table-action-add-${type}-after`,\n action: onInsertAfterClick,\n iconStart: <Icon data={type === 'row' ? ArrowDown : ArrowRight} />,\n },\n ],\n [\n {\n text: i18n('cells.clear'),\n qa: `g-md-yfm-table-${type}-clear-cells`,\n action: onClearCellsClick,\n iconStart: <Icon data={ClearCells} />,\n },\n ],\n [\n {\n text: i18n(`${type}.remove${multiple ? '.multiple' : ''}`),\n qa: `g-md-yfm-table-action-remove-${type}`,\n action: onRemoveRangeClick,\n iconStart: <Icon data={Xmark} />,\n },\n {\n theme: 'danger',\n text: i18n('table.remove'),\n qa: 'g-md-yfm-table-action-remove-table',\n action: onRemoveTableClick,\n iconStart: <Icon data={TrashBin} />,\n },\n ],\n ] satisfies FloatingMenuProps['dropdownItems'],\n [\n type,\n multiple,\n onClearCellsClick,\n onInsertAfterClick,\n onInsertBeforeClick,\n onRemoveRangeClick,\n onRemoveTableClick,\n ],\n );\n\n const anchor = useMemo(\n () => getVirtualAnchor(type, tableElement, cellElement),\n [type, tableElement, cellElement],\n );\n\n return (\n <FloatingMenu\n dirtype={type}\n canDrag={dndHandler ? dndHandler.canDrag() : false}\n onOpenToggle={onMenuOpenToggle}\n anchorElement={anchor}\n switcherMouseProps={\n dndHandler\n ? {\n onMouseLeave: dndHandler.control_handleMouseLeave,\n onMouseDown: dndHandler.control_handleMouseDown,\n onMouseMove: dndHandler.control_handleMouseMove,\n onMouseUp: dndHandler.control_handleMouseUp,\n }\n : undefined\n }\n dropdownItems={dropdownItems}\n />\n );\n };\n\nfunction getVirtualAnchor(\n type: ControlType,\n tableElem: Element,\n cellElem: Element,\n): VirtualElement {\n if (type === 'row') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect = cellElem.getBoundingClientRect();\n const tableRect: ClientRectObject = tableElem.getBoundingClientRect().toJSON();\n\n {\n // fix table rect\n tableRect.x += 1;\n tableRect.width -= 2;\n tableRect.left += 1;\n tableRect.right -= 1;\n }\n\n return {\n // from table\n x: tableRect.x,\n width: tableRect.width,\n left: tableRect.left,\n right: tableRect.right,\n // from cell\n y: cellRect.y,\n height: cellRect.height,\n top: cellRect.top,\n bottom: cellRect.top,\n };\n },\n };\n }\n\n if (type === 'column') {\n return {\n contextElement: cellElem,\n getBoundingClientRect() {\n const cellRect: ClientRectObject = cellElem.getBoundingClientRect().toJSON();\n const tableRect = tableElem.getBoundingClientRect();\n\n const EDGE_OFFSET = 16;\n\n const cellMiddle = cellRect.x + cellRect.width / 2;\n\n // left border of table\n if (cellMiddle - EDGE_OFFSET <= tableRect.left) {\n const visible = cellRect.right - tableRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.left = cellRect.right - cellRect.width;\n cellRect.x = cellRect.left;\n }\n\n // right border of table\n if (cellMiddle + EDGE_OFFSET >= tableRect.right) {\n const visible = tableRect.right - cellRect.left;\n cellRect.width = (visible - EDGE_OFFSET) * 2;\n cellRect.right = cellRect.left + cellRect.width;\n }\n\n return cellRect;\n },\n };\n }\n\n throw new Error(`Unknown control type: ${type}`);\n}\n"]}
|
|
@@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InsertCursor = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
|
|
7
|
-
const dom_1 = require("@floating-ui/dom");
|
|
6
|
+
const react_2 = require("@floating-ui/react");
|
|
8
7
|
const uikit_1 = require("@gravity-ui/uikit");
|
|
9
8
|
const react_use_1 = require("react-use");
|
|
10
9
|
const react_utils_1 = require("../../../../../../../react-utils/index.js");
|
|
@@ -19,9 +18,9 @@ const InsertCursor = function YfmTableInsertCursor({ type, anchor: referenceEl,
|
|
|
19
18
|
const [floatingStyles, setFloatingStyles] = (0, react_1.useState)({ top: -9999, left: -9999 });
|
|
20
19
|
(0, react_1.useEffect)(() => {
|
|
21
20
|
if (referenceEl && floatingEl) {
|
|
22
|
-
return (0,
|
|
21
|
+
return (0, react_2.autoUpdate)(referenceEl, floatingEl, () => {
|
|
23
22
|
updateRect(referenceEl.getBoundingClientRect());
|
|
24
|
-
(0,
|
|
23
|
+
(0, react_2.computePosition)(referenceEl, floatingEl, {
|
|
25
24
|
placement: placementByType[type],
|
|
26
25
|
}).then(({ x, y }) => {
|
|
27
26
|
if (type === 'row')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsertCursor.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.tsx"],"names":[],"mappings":";;;;AAAA,iCAAuD;AAEvD,
|
|
1
|
+
{"version":3,"file":"InsertCursor.js","sourceRoot":"../../../../../../../../../src","sources":["extensions/yfm/YfmTable/plugins/YfmTableControls/components/FloatingPlusButton/InsertCursor.tsx"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {\n type Placement,\n type ReferenceElement,\n autoUpdate,\n computePosition,\n} from '@floating-ui/react';\nimport {Portal} from '@gravity-ui/uikit';\nimport {useLatest} from 'react-use';\n\nimport {useElementState} from 'src/react-utils';\n\nconst placementByType: Record<InsertCursorProps['type'], Placement> = {\n row: 'bottom-start',\n column: 'right-start',\n};\n\nexport type InsertCursorProps = {\n anchor: ReferenceElement;\n type: 'row' | 'column';\n};\n\nexport const InsertCursor: React.FC<InsertCursorProps> = function YfmTableInsertCursor({\n type,\n anchor: referenceEl,\n}) {\n const [floatingEl, setFloatingEl] = useElementState();\n const {width, height, updateRect} = useSize(type, () => referenceEl.getBoundingClientRect());\n const widhtRef = useLatest(width);\n const [floatingStyles, setFloatingStyles] = useState({top: -9999, left: -9999});\n\n useEffect(() => {\n if (referenceEl && floatingEl) {\n return autoUpdate(referenceEl, floatingEl, () => {\n updateRect(referenceEl.getBoundingClientRect());\n\n computePosition(referenceEl, floatingEl, {\n placement: placementByType[type],\n }).then(({x, y}) => {\n if (type === 'row') setFloatingStyles({left: x, top: y - 1});\n else setFloatingStyles({left: x - 1, top: y});\n });\n });\n }\n return undefined;\n }, [referenceEl, floatingEl, widhtRef, type, updateRect]);\n\n return (\n <Portal>\n <div\n ref={setFloatingEl}\n style={{\n position: 'absolute',\n zIndex: 1005,\n width,\n height,\n pointerEvents: 'auto',\n outline: 'none',\n backgroundColor: 'var(--g-color-line-brand)',\n ...floatingStyles,\n }}\n />\n </Portal>\n );\n};\n\ntype Size = {\n width: number;\n height: number;\n};\n\nfunction useSize(type: InsertCursorProps['type'], getRect: () => Size) {\n const [size, setSize] = useState<Size>(() => getSize(type, getRect()));\n const sizeRef = useLatest(size);\n\n return {\n width: size.width,\n height: size.height,\n updateRect: useCallback(\n (rect: Size) => {\n const newSize = getSize(type, rect);\n if (type === 'row' && newSize.width !== sizeRef.current.width) setSize(newSize);\n if (type === 'column' && newSize.height !== sizeRef.current.height)\n setSize(newSize);\n },\n [sizeRef, type],\n ),\n };\n}\n\nfunction getSize(type: InsertCursorProps['type'], rect: Size): Size {\n if (type === 'row') return {height: 2, width: rect.width};\n return {width: 2, height: rect.height};\n}\n"]}
|