@olddevs/ui 4.5.0 → 4.6.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/CHANGELOG.md +24 -0
- package/dist/editor/RichTextEditor.d.ts +2 -2
- package/dist/editor/RichTextEditor.d.ts.map +1 -1
- package/dist/editor/RichTextEditor.js +3 -0
- package/dist/editor/RichTextEditor.js.map +1 -1
- package/dist/editor/core/blockTypes.d.ts +2 -8
- package/dist/editor/core/blockTypes.d.ts.map +1 -1
- package/dist/editor/core/blockTypes.js +11 -54
- package/dist/editor/core/blockTypes.js.map +1 -1
- package/dist/editor/core/containers.d.ts.map +1 -1
- package/dist/editor/core/containers.js +1 -0
- package/dist/editor/core/containers.js.map +1 -1
- package/dist/editor/core/customMarkdown.js +1 -1
- package/dist/editor/core/customMarkdown.js.map +1 -1
- package/dist/editor/core/customTool.d.ts +6 -6
- package/dist/editor/core/customTool.d.ts.map +1 -1
- package/dist/editor/core/customToolEngine.d.ts +2 -2
- package/dist/editor/core/extensions.d.ts +7 -2
- package/dist/editor/core/extensions.d.ts.map +1 -1
- package/dist/editor/core/extensions.js +96 -64
- package/dist/editor/core/extensions.js.map +1 -1
- package/dist/editor/core/fieldNotice.d.ts +1 -1
- package/dist/editor/core/insertItems.d.ts +5 -28
- package/dist/editor/core/insertItems.d.ts.map +1 -1
- package/dist/editor/core/insertItems.js +3 -94
- package/dist/editor/core/insertItems.js.map +1 -1
- package/dist/editor/core/insertMenuTool.d.ts +13 -0
- package/dist/editor/core/insertMenuTool.d.ts.map +1 -0
- package/dist/editor/core/insertMenuTool.js +20 -0
- package/dist/editor/core/insertMenuTool.js.map +1 -0
- package/dist/editor/core/schema.d.ts +20 -5
- package/dist/editor/core/schema.d.ts.map +1 -1
- package/dist/editor/core/schema.js +18 -3
- package/dist/editor/core/schema.js.map +1 -1
- package/dist/editor/core/shortcuts.d.ts +56 -5
- package/dist/editor/core/shortcuts.d.ts.map +1 -1
- package/dist/editor/core/shortcuts.js +91 -156
- package/dist/editor/core/shortcuts.js.map +1 -1
- package/dist/editor/core/skeleton.d.ts +1 -1
- package/dist/editor/core/skeleton.d.ts.map +1 -1
- package/dist/editor/core/skeleton.js +1 -0
- package/dist/editor/core/skeleton.js.map +1 -1
- package/dist/editor/core/toolButtons.d.ts +3 -3
- package/dist/editor/core/toolDefinition.d.ts +3 -3
- package/dist/editor/core/toolDescriptor.d.ts +49 -30
- package/dist/editor/core/toolDescriptor.d.ts.map +1 -1
- package/dist/editor/core/toolDescriptor.js +2 -5
- package/dist/editor/core/toolDescriptor.js.map +1 -1
- package/dist/editor/core/toolLoader.d.ts +1 -1
- package/dist/editor/core/toolLoader.d.ts.map +1 -1
- package/dist/editor/core/toolOptions.d.ts +19 -2
- package/dist/editor/core/toolOptions.d.ts.map +1 -1
- package/dist/editor/core/toolOptions.js.map +1 -1
- package/dist/editor/core/tools.d.ts +10 -2
- package/dist/editor/core/tools.d.ts.map +1 -1
- package/dist/editor/core/tools.js +1 -0
- package/dist/editor/core/tools.js.map +1 -1
- package/dist/editor/features/builtins.d.ts +6 -8
- package/dist/editor/features/builtins.d.ts.map +1 -1
- package/dist/editor/features/builtins.js +48 -21
- package/dist/editor/features/builtins.js.map +1 -1
- package/dist/editor/features/code/codeBlockTool.d.ts +5 -6
- package/dist/editor/features/code/codeBlockTool.d.ts.map +1 -1
- package/dist/editor/features/code/codeBlockTool.js +10 -1
- package/dist/editor/features/code/codeBlockTool.js.map +1 -1
- package/dist/editor/features/color/colorTools.d.ts +14 -0
- package/dist/editor/features/color/colorTools.d.ts.map +1 -0
- package/dist/editor/features/color/colorTools.js +39 -0
- package/dist/editor/features/color/colorTools.js.map +1 -0
- package/dist/editor/features/details/details.d.ts +68 -0
- package/dist/editor/features/details/details.d.ts.map +1 -0
- package/dist/editor/features/details/details.js +237 -0
- package/dist/editor/features/details/details.js.map +1 -0
- package/dist/editor/features/details/detailsMarkdown.d.ts +17 -0
- package/dist/editor/features/details/detailsMarkdown.d.ts.map +1 -0
- package/dist/editor/features/details/detailsMarkdown.js +84 -0
- package/dist/editor/features/details/detailsMarkdown.js.map +1 -0
- package/dist/editor/features/details/detailsTool.d.ts +16 -0
- package/dist/editor/features/details/detailsTool.d.ts.map +1 -0
- package/dist/editor/features/details/detailsTool.js +39 -0
- package/dist/editor/features/details/detailsTool.js.map +1 -0
- package/dist/editor/features/emoji/emojiTool.d.ts +1 -1
- package/dist/editor/features/heading/headingTool.d.ts +18 -0
- package/dist/editor/features/heading/headingTool.d.ts.map +1 -0
- package/dist/editor/features/heading/headingTool.js +59 -0
- package/dist/editor/features/heading/headingTool.js.map +1 -0
- package/dist/editor/features/history/historyTool.d.ts +15 -0
- package/dist/editor/features/history/historyTool.d.ts.map +1 -0
- package/dist/editor/features/history/historyTool.js +28 -0
- package/dist/editor/features/history/historyTool.js.map +1 -0
- package/dist/editor/features/image/imageTool.d.ts +19 -0
- package/dist/editor/features/image/imageTool.d.ts.map +1 -0
- package/dist/editor/features/image/imageTool.js +28 -0
- package/dist/editor/features/image/imageTool.js.map +1 -0
- package/dist/editor/features/layout/layoutTool.d.ts +11 -0
- package/dist/editor/features/layout/layoutTool.d.ts.map +1 -0
- package/dist/editor/features/layout/layoutTool.js +20 -0
- package/dist/editor/features/layout/layoutTool.js.map +1 -0
- package/dist/editor/features/lists/listTools.d.ts +15 -0
- package/dist/editor/features/lists/listTools.d.ts.map +1 -0
- package/dist/editor/features/lists/listTools.js +78 -0
- package/dist/editor/features/lists/listTools.js.map +1 -0
- package/dist/editor/features/marks/markTools.d.ts +16 -0
- package/dist/editor/features/marks/markTools.d.ts.map +1 -0
- package/dist/editor/features/marks/markTools.js +43 -0
- package/dist/editor/features/marks/markTools.js.map +1 -0
- package/dist/editor/features/search/searchTool.d.ts +1 -1
- package/dist/editor/features/table/tableTool.d.ts +3 -3
- package/dist/editor/features/toc/RichTextToc.d.ts.map +1 -1
- package/dist/editor/features/toc/RichTextToc.js +9 -2
- package/dist/editor/features/toc/RichTextToc.js.map +1 -1
- package/dist/editor/features/wrapper/wrapperTool.d.ts +11 -0
- package/dist/editor/features/wrapper/wrapperTool.d.ts.map +1 -0
- package/dist/editor/features/wrapper/wrapperTool.js +32 -0
- package/dist/editor/features/wrapper/wrapperTool.js.map +1 -0
- package/dist/editor/index.d.ts +1 -1
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/schema-entry.d.ts +1 -1
- package/dist/editor/styles/prose.d.ts.map +1 -1
- package/dist/editor/styles/prose.js +26 -0
- package/dist/editor/styles/prose.js.map +1 -1
- package/dist/editor/ui/EditorToolbar.d.ts.map +1 -1
- package/dist/editor/ui/EditorToolbar.js +5 -38
- package/dist/editor/ui/EditorToolbar.js.map +1 -1
- package/dist/editor/ui/SelectionBubble.d.ts.map +1 -1
- package/dist/editor/ui/SelectionBubble.js +1 -1
- package/dist/editor/ui/SelectionBubble.js.map +1 -1
- package/dist/editor/ui/ToolButtonView.d.ts.map +1 -1
- package/dist/editor/ui/ToolButtonView.js +1 -1
- package/dist/editor/ui/ToolButtonView.js.map +1 -1
- package/dist/i18n/defaults.d.ts.map +1 -1
- package/dist/i18n/defaults.js +3 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/messages.d.ts +16 -1
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/icons.d.ts +8 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +1 -1
- package/dist/icons.js.map +1 -1
- package/dist/locales/ru.d.ts.map +1 -1
- package/dist/locales/ru.js +3 -0
- package/dist/locales/ru.js.map +1 -1
- package/docs/api/editor-extension.en.md +56 -56
- package/docs/api/editor-extension.md +55 -55
- package/docs/api/messages.en.md +4 -1
- package/docs/api/messages.md +3 -0
- package/docs/api/migration-notes.en.md +3 -3
- package/docs/api/migration-notes.md +2 -2
- package/docs/components/content/rich-text-view.en.md +18 -12
- package/docs/components/content/rich-text-view.md +17 -11
- package/docs/components/inputs/rich-text-editor.en.md +140 -87
- package/docs/components/inputs/rich-text-editor.md +139 -86
- package/docs/conventions.en.md +2 -2
- package/docs/conventions.md +1 -1
- package/docs/getting-started.en.md +9 -9
- package/docs/getting-started.md +8 -8
- package/docs/glossary.en.md +80 -52
- package/docs/glossary.md +79 -51
- package/docs/icons.en.md +4 -1
- package/docs/icons.md +3 -0
- package/package.json +2 -1
- package/src/editor/RichTextEditor.tsx +9 -6
- package/src/editor/core/atomText.ts +2 -2
- package/src/editor/core/blockTypes.ts +19 -83
- package/src/editor/core/containers.ts +4 -2
- package/src/editor/core/customMarkdown.ts +2 -2
- package/src/editor/core/customTool.ts +6 -6
- package/src/editor/core/customToolEngine.ts +9 -9
- package/src/editor/core/extensions.ts +165 -110
- package/src/editor/core/fieldNotice.ts +1 -1
- package/src/editor/core/handle.ts +2 -2
- package/src/editor/core/insertItems.ts +12 -158
- package/src/editor/core/insertMenuTool.ts +32 -0
- package/src/editor/core/jsonDocument.ts +1 -1
- package/src/editor/core/schema.ts +42 -7
- package/src/editor/core/shortcuts.ts +116 -177
- package/src/editor/core/skeleton.ts +4 -3
- package/src/editor/core/toolButtons.ts +3 -3
- package/src/editor/core/toolDefinition.ts +4 -4
- package/src/editor/core/toolDescriptor.ts +65 -52
- package/src/editor/core/toolLoader.ts +3 -3
- package/src/editor/core/toolOptions.ts +21 -2
- package/src/editor/core/tools.ts +10 -1
- package/src/editor/core/viewIsland.ts +1 -1
- package/src/editor/features/builtins.ts +76 -41
- package/src/editor/features/code/codeBlockTool.ts +16 -8
- package/src/editor/features/color/colorTools.ts +68 -0
- package/src/editor/features/details/details.ts +389 -0
- package/src/editor/features/details/detailsMarkdown.ts +158 -0
- package/src/editor/features/details/detailsTool.ts +69 -0
- package/src/editor/features/emoji/emojiTool.tsx +1 -1
- package/src/editor/features/heading/headingTool.ts +96 -0
- package/src/editor/features/history/historyTool.ts +42 -0
- package/src/editor/features/image/imageTool.ts +49 -0
- package/src/editor/features/layout/layoutTool.ts +40 -0
- package/src/editor/features/lists/listTools.ts +112 -0
- package/src/editor/features/marks/markTools.ts +78 -0
- package/src/editor/features/search/searchTool.ts +1 -1
- package/src/editor/features/table/tableTool.ts +3 -3
- package/src/editor/features/toc/RichTextToc.tsx +14 -3
- package/src/editor/features/toc/tocTool.ts +1 -1
- package/src/editor/features/wrapper/wrapperTool.ts +52 -0
- package/src/editor/index.ts +1 -0
- package/src/editor/schema-entry.ts +1 -1
- package/src/editor/styles/prose.ts +49 -0
- package/src/editor/ui/EditorToolbar.tsx +7 -50
- package/src/editor/ui/SelectionBubble.tsx +2 -5
- package/src/editor/ui/ToolButtonView.tsx +2 -1
- package/src/i18n/defaults.ts +3 -0
- package/src/i18n/messages.ts +14 -1
- package/src/icons.ts +7 -0
- package/src/locales/ru.ts +3 -0
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Extension } from "@tiptap/core";
|
|
3
3
|
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
|
4
|
-
import { TaskItem, TaskList } from "@tiptap/extension-list";
|
|
5
|
-
import { Subscript } from "@tiptap/extension-subscript";
|
|
6
|
-
import { Superscript } from "@tiptap/extension-superscript";
|
|
7
4
|
import { Placeholder } from "@tiptap/extensions";
|
|
8
5
|
import { StarterKit } from "@tiptap/starter-kit";
|
|
9
6
|
import { AtomText } from "./atomText.js";
|
|
10
7
|
import { BlockCommands, BlockMenuKey } from "./blockCommands.js";
|
|
11
8
|
import { FieldNoticeExtension } from "./fieldNotice.js";
|
|
12
|
-
import { RichImage } from "../features/image/image.js";
|
|
13
9
|
import { createDocumentNode } from "./document.js";
|
|
14
|
-
import { LAYOUT_NODE, layoutExtensions } from "../features/layout/layout.js";
|
|
15
10
|
import { createMarkdown, MarkdownPaste } from "./markdown.js";
|
|
16
11
|
import { MaxLength } from "./maxLength.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { describedTools } from "./toolDescriptor.js";
|
|
12
|
+
import { TriggerCommand } from "./slashCommand.js";
|
|
13
|
+
import {} from "./toolDescriptor.js";
|
|
20
14
|
import { ToolButtons } from "./toolButtons.js";
|
|
21
15
|
import { ToolEntryShortcuts } from "./toolEntryShortcuts.js";
|
|
22
|
-
import { WRAPPER_EXTENSIONS, WRAPPER_NODE } from "../features/wrapper/wrapper.js";
|
|
23
16
|
const ToolbarFocus = Extension.create({
|
|
24
17
|
name: "toolbarFocus",
|
|
25
18
|
addOptions: () => ({ focus: () => false }),
|
|
@@ -43,34 +36,82 @@ const HandledTabStaysInside = Extension.create({
|
|
|
43
36
|
}),
|
|
44
37
|
],
|
|
45
38
|
});
|
|
39
|
+
function blockTraitsExtension(traits) {
|
|
40
|
+
return Extension.create({
|
|
41
|
+
name: "blockTraits",
|
|
42
|
+
extendNodeSchema: (extension) => {
|
|
43
|
+
const own = Object.hasOwn(traits, extension.name) ? traits[extension.name] : undefined;
|
|
44
|
+
return own
|
|
45
|
+
? {
|
|
46
|
+
blockContainer: own.container === true,
|
|
47
|
+
turnInto: own.turnInto === true,
|
|
48
|
+
plainAtom: own.plainAtom === true,
|
|
49
|
+
}
|
|
50
|
+
: {};
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const STARTER_KIT_OFF = {
|
|
55
|
+
heading: false,
|
|
56
|
+
bold: false,
|
|
57
|
+
italic: false,
|
|
58
|
+
underline: false,
|
|
59
|
+
strike: false,
|
|
60
|
+
code: false,
|
|
61
|
+
bulletList: false,
|
|
62
|
+
orderedList: false,
|
|
63
|
+
undoRedo: false,
|
|
64
|
+
blockquote: false,
|
|
65
|
+
codeBlock: false,
|
|
66
|
+
horizontalRule: false,
|
|
67
|
+
link: false,
|
|
68
|
+
trailingNode: false,
|
|
69
|
+
};
|
|
70
|
+
const TRIGGERS = "triggers";
|
|
71
|
+
const ENGINE_ORDER = [
|
|
72
|
+
"superscript",
|
|
73
|
+
"subscript",
|
|
74
|
+
"color",
|
|
75
|
+
"highlight",
|
|
76
|
+
"align",
|
|
77
|
+
"taskList",
|
|
78
|
+
"image",
|
|
79
|
+
"layout",
|
|
80
|
+
"wrapper",
|
|
81
|
+
"details",
|
|
82
|
+
"insertMenu",
|
|
83
|
+
TRIGGERS,
|
|
84
|
+
"history",
|
|
85
|
+
"heading",
|
|
86
|
+
"heading1",
|
|
87
|
+
"bold",
|
|
88
|
+
"italic",
|
|
89
|
+
"underline",
|
|
90
|
+
"strike",
|
|
91
|
+
"code",
|
|
92
|
+
"clearFormatting",
|
|
93
|
+
"link",
|
|
94
|
+
"bulletList",
|
|
95
|
+
"orderedList",
|
|
96
|
+
"blockquote",
|
|
97
|
+
"codeBlock",
|
|
98
|
+
"horizontalRule",
|
|
99
|
+
"table",
|
|
100
|
+
"emoji",
|
|
101
|
+
"source",
|
|
102
|
+
"search",
|
|
103
|
+
"toc",
|
|
104
|
+
];
|
|
46
105
|
export function createEditorExtensions(options) {
|
|
47
|
-
const described =
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const containers = [
|
|
51
|
-
...(on("layout") ? [LAYOUT_NODE] : []),
|
|
52
|
-
...(on("wrapper") ? [WRAPPER_NODE] : []),
|
|
53
|
-
...described.flatMap((descriptor) => descriptor.documentContent ?? []),
|
|
54
|
-
];
|
|
106
|
+
const described = options.tools.descriptors;
|
|
107
|
+
const { tools, ...bridges } = options;
|
|
108
|
+
const context = { ...bridges, has: (tool) => tools.has(tool) };
|
|
109
|
+
const containers = described.flatMap((descriptor) => descriptor.documentContent ?? []);
|
|
55
110
|
const extensions = [
|
|
56
111
|
StarterKit.configure({
|
|
112
|
+
...STARTER_KIT_OFF,
|
|
113
|
+
...Object.assign({}, ...described.map((descriptor) => descriptor.starterKit?.(context))),
|
|
57
114
|
document: containers.length > 0 ? false : undefined,
|
|
58
|
-
heading: on("heading")
|
|
59
|
-
? { levels: options.tools.has("heading1") ? [1, 2, 3, 4] : [2, 3, 4] }
|
|
60
|
-
: false,
|
|
61
|
-
bold: toggle("bold"),
|
|
62
|
-
italic: toggle("italic"),
|
|
63
|
-
underline: toggle("underline"),
|
|
64
|
-
strike: toggle("strike"),
|
|
65
|
-
code: toggle("code"),
|
|
66
|
-
bulletList: toggle("bulletList"),
|
|
67
|
-
orderedList: toggle("orderedList"),
|
|
68
|
-
blockquote: false,
|
|
69
|
-
codeBlock: false,
|
|
70
|
-
horizontalRule: false,
|
|
71
|
-
undoRedo: toggle("history"),
|
|
72
|
-
link: false,
|
|
73
|
-
trailingNode: false,
|
|
74
115
|
}),
|
|
75
116
|
...(containers.length > 0 ? [createDocumentNode(containers)] : []),
|
|
76
117
|
Placeholder.configure({ placeholder: () => options.placeholder() }),
|
|
@@ -80,40 +121,30 @@ export function createEditorExtensions(options) {
|
|
|
80
121
|
AtomText,
|
|
81
122
|
ToolbarFocus.configure({ focus: options.focusToolbar }),
|
|
82
123
|
HandledTabStaysInside,
|
|
83
|
-
BlockCommands.configure({ clearFormatting:
|
|
124
|
+
BlockCommands.configure({ clearFormatting: options.tools.has("clearFormatting") }),
|
|
84
125
|
BlockMenuKey.configure({ openBlockMenu: options.openBlockMenu }),
|
|
85
126
|
FieldNoticeExtension.configure({ onNotice: options.onNotice }),
|
|
86
127
|
];
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
if (on("image") && options.image)
|
|
104
|
-
extensions.push(RichImage.configure(options.image));
|
|
105
|
-
if (on("layout"))
|
|
106
|
-
extensions.push(...layoutExtensions({ wrapper: options.tools.has("wrapper") }));
|
|
107
|
-
if (on("wrapper"))
|
|
108
|
-
extensions.push(...WRAPPER_EXTENSIONS);
|
|
109
|
-
if (on("insertMenu") && options.slash) {
|
|
110
|
-
extensions.push(SlashCommand.configure({ bridge: options.slash }));
|
|
128
|
+
const traits = Object.assign({}, ...described.map((descriptor) => descriptor.blocks));
|
|
129
|
+
if (Object.keys(traits).length > 0)
|
|
130
|
+
extensions.push(blockTraitsExtension(traits));
|
|
131
|
+
const engineOf = (descriptor) => descriptor.engine?.(context, descriptor.options) ?? [];
|
|
132
|
+
for (const slot of ENGINE_ORDER) {
|
|
133
|
+
if (slot === TRIGGERS) {
|
|
134
|
+
if (options.triggers?.length) {
|
|
135
|
+
extensions.push(TriggerCommand.configure({ triggers: options.triggers }));
|
|
136
|
+
}
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const descriptor = described.find((candidate) => candidate.name === slot);
|
|
140
|
+
if (descriptor)
|
|
141
|
+
extensions.push(...engineOf(descriptor));
|
|
111
142
|
}
|
|
112
|
-
|
|
113
|
-
|
|
143
|
+
for (const descriptor of described) {
|
|
144
|
+
if (!ENGINE_ORDER.includes(descriptor.name)) {
|
|
145
|
+
extensions.push(...engineOf(descriptor));
|
|
146
|
+
}
|
|
114
147
|
}
|
|
115
|
-
for (const descriptor of described)
|
|
116
|
-
extensions.push(...(descriptor.engine?.(options, descriptor.options) ?? []));
|
|
117
148
|
const buttons = described.flatMap((descriptor) => descriptor.buttons ?? []);
|
|
118
149
|
const entries = described
|
|
119
150
|
.flatMap((descriptor) => [
|
|
@@ -121,8 +152,9 @@ export function createEditorExtensions(options) {
|
|
|
121
152
|
...(descriptor.blockActions ?? []),
|
|
122
153
|
])
|
|
123
154
|
.flatMap(({ id, label, popover }) => popover ? [{ id, label: ({ messages, locale }) => label(messages, locale), popover }] : []);
|
|
124
|
-
|
|
125
|
-
|
|
155
|
+
const keyed = buttons.filter((button) => button.shortcut || button.popover);
|
|
156
|
+
if (keyed.length + entries.length > 0) {
|
|
157
|
+
extensions.push(ToolButtons.configure({ buttons: keyed, entries, openPopover: options.openPopover }));
|
|
126
158
|
}
|
|
127
159
|
const keyedItems = described.flatMap((d) => d.insertItems ?? []).filter((i) => i.shortcut);
|
|
128
160
|
const keyedActions = described.flatMap((d) => d.blockActions ?? []).filter((a) => a.shortcut);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/editor/core/extensions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAOb,OAAO,EAAE,SAAS,EAAmB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/editor/core/extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ declare module "@tiptap/core" {
|
|
|
28
28
|
* история и `onChange` не затрагиваются. `error` уходит сама со следующей
|
|
29
29
|
* Правкой автора, `status` остаётся, пока его не заменят или не снимут.
|
|
30
30
|
*
|
|
31
|
-
* Свой Инструмент зовёт её из
|
|
31
|
+
* Свой Инструмент зовёт её из Extensions (`this.editor.commands`),
|
|
32
32
|
* экран — через `handle.editor`. Сообщение без текста — то же, что `null`.
|
|
33
33
|
*/
|
|
34
34
|
showNotice: (notice: FieldNotice | null) => ReturnType;
|
|
@@ -43,12 +43,12 @@ export interface InsertItem {
|
|
|
43
43
|
keys?: readonly string[];
|
|
44
44
|
/**
|
|
45
45
|
* Сочетание, которое вешает кит (ADR-0058, п. 5.7): единственный источник
|
|
46
|
-
* клавиши, подсказки и строки справочника. У встроенных нет — клавишу
|
|
47
|
-
* их
|
|
46
|
+
* клавиши, подсказки и строки справочника. У встроенных нет — клавишу вешают
|
|
47
|
+
* их Extensions, а подпись — `keys`.
|
|
48
48
|
*/
|
|
49
49
|
shortcut?: readonly string[];
|
|
50
50
|
/**
|
|
51
|
-
* Второй нужный инструмент сверх
|
|
51
|
+
* Второй нужный инструмент сверх владельца пункта: Заголовок 1 стоит под
|
|
52
52
|
* `heading`, но есть только вместе с `heading1`, как в меню «¶».
|
|
53
53
|
*/
|
|
54
54
|
requires?: Tool;
|
|
@@ -59,28 +59,6 @@ export interface InsertItem {
|
|
|
59
59
|
*/
|
|
60
60
|
popover?: ToolPopover;
|
|
61
61
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Старый реестр пунктов Меню вставки по инструментам.
|
|
64
|
-
*
|
|
65
|
-
* Новый встроенный Инструмент сюда уже не пишется: его пункты лежат в его
|
|
66
|
-
* описании (`insertItems`, `features/builtins.ts`), и меню получает их проекцией
|
|
67
|
-
* списка описаний (`insertItemsFor`). Здесь — пункты Инструментов, ещё не
|
|
68
|
-
* переехавших на описание (ADR-0058, п. 10), одной записью без правки меню:
|
|
69
|
-
*
|
|
70
|
-
* horizontalRule: [{ id: "horizontalRule", section: "insert",
|
|
71
|
-
* label: (m) => m.horizontalRule, icon: DividerIcon,
|
|
72
|
-
* run: (chain) => chain.setHorizontalRule() }],
|
|
73
|
-
*
|
|
74
|
-
* Ключ — `Tool`: выключенный инструмент убирает свои пункты и из `/`, и из «+»
|
|
75
|
-
* сам, без проверок в меню. Порядок пунктов в разделе — `INSERT_ORDER`, а не
|
|
76
|
-
* порядок записей. Подпись — из каталога (`editor.*`), иконка —
|
|
77
|
-
* из `@olddevs/ui/icons`. Пункт, которому нужен свой интерфейс (поповер адреса
|
|
78
|
-
* картинки), открывает его из `run` — `editor` для этого и передан.
|
|
79
|
-
*
|
|
80
|
-
* Абзац записан под самим `insertMenu`: это не инструмент, он есть в Схеме
|
|
81
|
-
* всегда, и «Превратить в абзац» нужен, пока есть само меню.
|
|
82
|
-
*/
|
|
83
|
-
export declare const INSERT_ITEMS: Partial<Record<Tool, readonly InsertItem[]>>;
|
|
84
62
|
/**
|
|
85
63
|
* Пункт «Таблица» заданного размера: строка-заголовок всегда есть.
|
|
86
64
|
*
|
|
@@ -103,9 +81,8 @@ export declare function insertItemHint(item: InsertItem, shortcut: (keys: readon
|
|
|
103
81
|
/** Разделы по порядку показа. */
|
|
104
82
|
export declare const INSERT_SECTIONS: readonly ["insert", "turnInto"];
|
|
105
83
|
/**
|
|
106
|
-
* Пункты для набора инструментов — проекция списка
|
|
107
|
-
*
|
|
108
|
-
* `INSERT_ORDER`. Меню без пункта сверх
|
|
84
|
+
* Пункты для набора инструментов — проекция списка описаний (`insertItems`) в
|
|
85
|
+
* порядке `INSERT_ORDER`. Абзац — пункт описания `insertMenu`. Меню без пункта сверх
|
|
109
86
|
* абзаца бессмысленно, и тогда список пуст: ни «+», ни `/` не появляются.
|
|
110
87
|
*/
|
|
111
88
|
export declare function insertItemsFor(tools: ToolList): readonly InsertItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertItems.d.ts","sourceRoot":"","sources":["../../../src/editor/core/insertItems.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"insertItems.d.ts","sourceRoot":"","sources":["../../../src/editor/core/insertItems.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3D,OAAO,EAAkB,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,KAAK,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B;;;;OAIG;IACH,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,GAAG,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,eAAe,CAAC;IACjE;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAShE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGlF;AAsBD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,MAAM,GAC5C,MAAM,GAAG,SAAS,CAEpB;AAuBD,iCAAiC;AACjC,eAAO,MAAM,eAAe,iCAAkC,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,UAAU,EAAE,CAMrE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GACjD,OAAO,CAQT;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAe5C;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,KAAK,GAAE,WAAqB,GAC3B,IAAI,CA8BN;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAuBpE"}
|
|
@@ -1,101 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { TextSelection } from "@tiptap/pm/state";
|
|
3
|
-
import {
|
|
3
|
+
import { TableIcon } from "../../icons.js";
|
|
4
4
|
import { DEFAULT_LOCALE } from "../../i18n/defaults.js";
|
|
5
5
|
import { handleBlock } from "./blockCommands.js";
|
|
6
|
-
import { DEFAULT_LAYOUT } from "../features/layout/columnLayouts.js";
|
|
7
|
-
import { shortcutKeys } from "./shortcuts.js";
|
|
8
6
|
import { projectRecords } from "./toolDescriptor.js";
|
|
9
|
-
export const INSERT_ITEMS = {
|
|
10
|
-
insertMenu: [
|
|
11
|
-
{
|
|
12
|
-
id: "paragraph",
|
|
13
|
-
section: "turnInto",
|
|
14
|
-
label: (m) => m.paragraph,
|
|
15
|
-
icon: ParagraphIcon,
|
|
16
|
-
aliases: ["p", "text"],
|
|
17
|
-
keys: shortcutKeys("paragraph"),
|
|
18
|
-
run: (chain) => chain.setParagraph(),
|
|
19
|
-
},
|
|
20
|
-
],
|
|
21
|
-
heading: [1, 2, 3, 4].map((level) => ({
|
|
22
|
-
id: `heading${level}`,
|
|
23
|
-
section: "turnInto",
|
|
24
|
-
label: (m) => m.heading({ level }),
|
|
25
|
-
icon: HeadingIcon,
|
|
26
|
-
aliases: [`h${level}`],
|
|
27
|
-
markdown: "#".repeat(level),
|
|
28
|
-
keys: shortcutKeys(`h${level}`),
|
|
29
|
-
requires: level === 1 ? "heading1" : undefined,
|
|
30
|
-
run: (chain) => chain.setHeading({ level }),
|
|
31
|
-
})),
|
|
32
|
-
bulletList: [
|
|
33
|
-
{
|
|
34
|
-
id: "bulletList",
|
|
35
|
-
section: "turnInto",
|
|
36
|
-
label: (m) => m.bulletList,
|
|
37
|
-
icon: ListIcon,
|
|
38
|
-
aliases: ["ul", "-"],
|
|
39
|
-
markdown: "-",
|
|
40
|
-
keys: shortcutKeys("bulletList"),
|
|
41
|
-
run: (chain) => chain.toggleBulletList(),
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
orderedList: [
|
|
45
|
-
{
|
|
46
|
-
id: "orderedList",
|
|
47
|
-
section: "turnInto",
|
|
48
|
-
label: (m) => m.orderedList,
|
|
49
|
-
icon: OrderedListIcon,
|
|
50
|
-
aliases: ["ol", "1."],
|
|
51
|
-
markdown: "1.",
|
|
52
|
-
keys: shortcutKeys("orderedList"),
|
|
53
|
-
run: (chain) => chain.toggleOrderedList(),
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
taskList: [
|
|
57
|
-
{
|
|
58
|
-
id: "taskList",
|
|
59
|
-
section: "turnInto",
|
|
60
|
-
label: (m) => m.taskList,
|
|
61
|
-
icon: TaskListIcon,
|
|
62
|
-
aliases: ["todo", "[]"],
|
|
63
|
-
markdown: "[ ]",
|
|
64
|
-
keys: shortcutKeys("taskList"),
|
|
65
|
-
run: (chain) => chain.toggleTaskList(),
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
image: [
|
|
69
|
-
{
|
|
70
|
-
id: "image",
|
|
71
|
-
section: "insert",
|
|
72
|
-
label: (m) => m.image,
|
|
73
|
-
icon: ImageIcon,
|
|
74
|
-
aliases: ["img", "picture", "photo", "![]()"],
|
|
75
|
-
run: (chain) => chain.openImageEditor(),
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
layout: [
|
|
79
|
-
{
|
|
80
|
-
id: "layout",
|
|
81
|
-
section: "insert",
|
|
82
|
-
label: (m) => m.layout,
|
|
83
|
-
icon: ColumnLayoutIcon,
|
|
84
|
-
aliases: ["columns", "cols"],
|
|
85
|
-
run: (chain) => chain.insertLayout(DEFAULT_LAYOUT),
|
|
86
|
-
},
|
|
87
|
-
],
|
|
88
|
-
wrapper: [
|
|
89
|
-
{
|
|
90
|
-
id: "wrapper",
|
|
91
|
-
section: "insert",
|
|
92
|
-
label: (m) => m.wrapper,
|
|
93
|
-
icon: WrapperIcon,
|
|
94
|
-
aliases: ["group", "container", "div"],
|
|
95
|
-
run: (chain) => chain.insertWrapper(),
|
|
96
|
-
},
|
|
97
|
-
],
|
|
98
|
-
};
|
|
99
7
|
export function tableItem(cols, rows) {
|
|
100
8
|
return {
|
|
101
9
|
id: "table",
|
|
@@ -138,12 +46,13 @@ const INSERT_ORDER = [
|
|
|
138
46
|
"image",
|
|
139
47
|
"layout",
|
|
140
48
|
"wrapper",
|
|
49
|
+
"details",
|
|
141
50
|
];
|
|
142
51
|
export const INSERT_SECTIONS = ["insert", "turnInto"];
|
|
143
52
|
export function insertItemsFor(tools) {
|
|
144
53
|
if (!tools.has("insertMenu"))
|
|
145
54
|
return [];
|
|
146
|
-
const items = projectRecords(tools, INSERT_ORDER, (
|
|
55
|
+
const items = projectRecords(tools, INSERT_ORDER, (descriptor) => descriptor.insertItems).filter((item) => item.requires === undefined || tools.has(item.requires));
|
|
147
56
|
return items.length > 1 ? items : [];
|
|
148
57
|
}
|
|
149
58
|
export function matchesQuery(item, query, messages, locale, fallback, contains) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertItems.js","sourceRoot":"","sources":["../../../src/editor/core/insertItems.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AAGnE,OAAO,
|
|
1
|
+
{"version":3,"file":"insertItems.js","sourceRoot":"","sources":["../../../src/editor/core/insertItems.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolDescriptor } from "./toolDescriptor.js";
|
|
2
|
+
/**
|
|
3
|
+
* Меню вставки (`/` в тексте; «+» на Панели и «Добавить ›» Ручки Блока — виджеты
|
|
4
|
+
* кита, они читают `tools.has("insertMenu")`).
|
|
5
|
+
*
|
|
6
|
+
* Своего Блока у Инструмента нет: это способ добраться до чужих Блоков. Extensions
|
|
7
|
+
* Инструмента — это `/`, и они есть, только когда `RichTextEditor` дал мост: пунктов
|
|
8
|
+
* для меню нет — моста нет, и `/` остаётся обычным символом. Абзац записан здесь:
|
|
9
|
+
* это не Инструмент, он есть в Схеме всегда, и «Превратить в абзац» нужен, пока
|
|
10
|
+
* есть само меню.
|
|
11
|
+
*/
|
|
12
|
+
export declare const INSERT_MENU_TOOL: ToolDescriptor;
|
|
13
|
+
//# sourceMappingURL=insertMenuTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertMenuTool.d.ts","sourceRoot":"","sources":["../../../src/editor/core/insertMenuTool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAc9B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ParagraphIcon } from "../../icons.js";
|
|
3
|
+
import { shortcutKeys } from "./shortcuts.js";
|
|
4
|
+
import { SlashCommand } from "./slashCommand.js";
|
|
5
|
+
export const INSERT_MENU_TOOL = {
|
|
6
|
+
name: "insertMenu",
|
|
7
|
+
engine: (context) => (context.slash ? [SlashCommand.configure({ bridge: context.slash })] : []),
|
|
8
|
+
insertItems: [
|
|
9
|
+
{
|
|
10
|
+
id: "paragraph",
|
|
11
|
+
section: "turnInto",
|
|
12
|
+
label: (m) => m.paragraph,
|
|
13
|
+
icon: ParagraphIcon,
|
|
14
|
+
aliases: ["p", "text"],
|
|
15
|
+
keys: shortcutKeys("paragraph"),
|
|
16
|
+
run: (chain) => chain.setParagraph(),
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=insertMenuTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertMenuTool.js","sourceRoot":"","sources":["../../../src/editor/core/insertMenuTool.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,WAAW,EAAE;QACX;YACE,EAAE,EAAE,WAAW;YACf,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;YACzB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC;YAC/B,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE;SACrC;KACF;CACF,CAAC"}
|
|
@@ -50,6 +50,13 @@ export declare const RICH_TEXT_SCHEMA: {
|
|
|
50
50
|
* Стоит на верхнем уровне и прямо в колонке Раскладки; внутри — Блоки, кроме
|
|
51
51
|
* другой Обёртки и Раскладки.
|
|
52
52
|
*
|
|
53
|
+
* `details` — сворачиваемый Блок: `details > summary` и следом
|
|
54
|
+
* `div[data-type="detailsContent"]` с Блоками; `open` — только у `details` и
|
|
55
|
+
* только пустым (`open=""`), так его пишет Редактор с Опцией `persist`.
|
|
56
|
+
* `summary` вне `details` и обёртка содержимого вне него снимаются —
|
|
57
|
+
* Блоки остаются подряд. Теги и атрибуты Блока открыты только в этой форме:
|
|
58
|
+
* `iframe` и ему подобное так не открывается.
|
|
59
|
+
*
|
|
53
60
|
* Таблица — `table > tbody > tr > th|td`, без `thead`, `colgroup` и
|
|
54
61
|
* `caption`: строка-заголовок — это обычная первая строка из `th`. На ячейке
|
|
55
62
|
* бывают только слияние (`colspan`, `rowspan`) и выравнивание столбца
|
|
@@ -57,7 +64,7 @@ export declare const RICH_TEXT_SCHEMA: {
|
|
|
57
64
|
* выходе не бывают. `tbody`, `tr`, `th` и `td` вне таблицы парсер HTML
|
|
58
65
|
* выбрасывает сам, хук на это не нужен.
|
|
59
66
|
*/
|
|
60
|
-
readonly blocks: readonly ["p", "h1", "h2", "h3", "h4", "ul", "ol", "li", "blockquote", "hr", "pre", "table", "tbody", "tr", "th", "td", "label", "input", "span", "div", "figure", "img", "figcaption"];
|
|
67
|
+
readonly blocks: readonly ["p", "h1", "h2", "h3", "h4", "ul", "ol", "li", "blockquote", "hr", "pre", "table", "tbody", "tr", "th", "td", "label", "input", "span", "div", "figure", "img", "figcaption", "details", "summary"];
|
|
61
68
|
/**
|
|
62
69
|
* Метки и строчные узлы. `br` — мягкий перенос по Shift+Enter. `mark` —
|
|
63
70
|
* маркер, всегда с `data-color`; `span` с `data-color` — цвет текста (тег
|
|
@@ -75,9 +82,13 @@ export declare const RICH_TEXT_SCHEMA: {
|
|
|
75
82
|
* Раскладка и её колонка: `data-block="layout"` и `data-block="column"`;
|
|
76
83
|
* `data-layout` — вариант из `layouts`, только у Раскладки. Обёртка —
|
|
77
84
|
* `data-block="wrapper"` и, если у неё есть тон, `data-tone` — имя из
|
|
78
|
-
* `wrapperTones`, только у Обёртки.
|
|
85
|
+
* `wrapperTones`, только у Обёртки. Обёртка содержимого сворачиваемого
|
|
86
|
+
* Блока — `data-type="detailsContent"`, только прямо в `details`. У `div`
|
|
87
|
+
* пункта чек-листа атрибутов нет.
|
|
79
88
|
*/
|
|
80
|
-
readonly div: readonly ["data-block", "data-layout", "data-tone"];
|
|
89
|
+
readonly div: readonly ["data-block", "data-layout", "data-tone", "data-type"];
|
|
90
|
+
/** Открытый сворачиваемый Блок: пустой `open`, только с Опцией `persist`. */
|
|
91
|
+
readonly details: readonly ["open"];
|
|
81
92
|
/** Пункт чек-листа: `data-type="taskItem"` и `data-checked="true|false"`. */
|
|
82
93
|
readonly li: readonly ["data-type", "data-checked"];
|
|
83
94
|
/** Флажок пункта чек-листа: всегда `type="checkbox"`, `checked` — у отмеченного. */
|
|
@@ -309,8 +320,8 @@ export declare function customElement(kind: "block" | "inline" | "mark"): {
|
|
|
309
320
|
* набор отвергает ошибкой поля, а у сервера ошибок нет — и описание с именем
|
|
310
321
|
* кита (`wrapper`, атрибут `tone`) не должно открыть обход правил кита.
|
|
311
322
|
*
|
|
312
|
-
* Читаются только данные описания (`blocks`, `marks`),
|
|
313
|
-
*
|
|
323
|
+
* Читаются только данные описания (`blocks`, `marks`), Extensions не
|
|
324
|
+
* трогаются: модуль с описанием своего Инструмента импортируется на сервере,
|
|
314
325
|
* и Tiptap здесь не нужен.
|
|
315
326
|
*/
|
|
316
327
|
export declare function richTextSchema(tools?: readonly ToolEntry[]): RichTextSchema;
|
|
@@ -425,6 +436,10 @@ export interface RichTextPurifier {
|
|
|
425
436
|
* колонке Раскладки, не в другой Обёртке, списке, цитате и таблице; иначе
|
|
426
437
|
* снимается так же, вместе с тоном; `data-tone` — имя из `wrapperTones` и
|
|
427
438
|
* только на Обёртке;
|
|
439
|
+
* - сворачиваемый Блок — `details` с `summary` прямо в нём и обёрткой содержимого
|
|
440
|
+
* `div[data-type="detailsContent"]` тоже прямо в нём; `open` — только пустой и
|
|
441
|
+
* только на `details`. `summary` и обёртка вне `details` теряют тег, их Блоки
|
|
442
|
+
* остаются подряд;
|
|
428
443
|
* - `colspan`, `rowspan` — на `th`/`td`, целое от 1 до `tableSpans`;
|
|
429
444
|
* - ссылка — `href` по `protocols` (выражение конфига), `rel` всегда
|
|
430
445
|
* `"noopener noreferrer"`, ссылка без адреса становится текстом;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/editor/core/schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAUhF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB;IAC3B
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/editor/core/schema.ts"],"names":[],"mappings":"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"}
|