@olddevs/ui 4.5.1 → 4.6.1
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 +26 -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/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 +68 -68
- 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 +11 -11
- package/docs/api/migration-notes.md +2 -2
- package/docs/api/utilities.en.md +6 -6
- package/docs/components/actions/split-button.en.md +9 -9
- package/docs/components/content/data-display.en.md +1 -1
- package/docs/components/content/layout-primitives.en.md +3 -3
- package/docs/components/content/rich-text-toc.en.md +1 -1
- package/docs/components/content/rich-text-view.en.md +23 -17
- package/docs/components/content/rich-text-view.md +17 -11
- package/docs/components/content/virtual-grid.en.md +2 -2
- package/docs/components/date-time/date-picker.en.md +1 -1
- package/docs/components/inputs/rich-text-editor.en.md +283 -230
- package/docs/components/inputs/rich-text-editor.md +139 -86
- package/docs/components/navigation/mega-menu.en.md +10 -10
- package/docs/components/overlays/menu.en.md +2 -2
- package/docs/components/overlays/shortcuts-help.en.md +1 -1
- package/docs/components/table/data-table.en.md +3 -3
- package/docs/components/table/filter-bar.en.md +1 -1
- package/docs/components/table/toolbar.en.md +1 -1
- 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 +193 -133
- package/docs/glossary.md +191 -132
- package/docs/icons.en.md +12 -9
- package/docs/icons.md +3 -0
- package/docs/palette.en.md +3 -3
- package/docs/theming.en.md +6 -6
- 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/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":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAUhF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;;IA4BH;;;;;OAKG;;IAEH,uEAAuE;;QAErE,mDAAmD;;QAEnD,wCAAwC;;QAExC;;;;;;;WAOG;;QAEH,6EAA6E;;QAE7E,6EAA6E;;QAE7E,oFAAoF;;QAEpF;;;;;WAKG;;QAEH;;;;;;;;;WASG;;;QAGH;;;WAGG;;QAEH;;;;;WAKG;;;;;;;QAOH;;;;WAIG;;QAEH;;;;WAIG;;;IAGL;;;;;OAKG;;IAEH;;;OAGG;;IAEH;;;;;;OAMG;;;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;IAIH;;;;;OAKG;;IAEH,wEAAwE;;IAExE;;;;;OAKG;;IAEH;;;;;OAKG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;OAMG;;IAEH;;;;;OAKG;;IAEH;;;;;;;OAOG;;;;;CAkBJ,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,2EAA2E;IAC3E,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC;IAC1B,qDAAqD;IACrD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;CAC7D;AAED,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;CAC7D;AAED,wFAAwF;AACxF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,GAAG;IACrD,oDAAoD;IACpD,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACvE,mCAAmC;IACnC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,QAA+B,CAAC;AACxD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAgC,CAAC;AAEnE;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG;IAChE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,GAAG,WAAW,CAAC;CACpC,CAKA;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAE,SAAS,SAAS,EAAO,GAAG,cAAc,CAuB/E;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,sBAAsB,IAAI,sBAAsB,CAE/D;AA0BD,gFAAgF;AAChF,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC;IACvB,0DAA0D;IAC1D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gGAAgG;IAChG,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,uFAAuF;AACvF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAAC;IAChE,OAAO,CACL,UAAU,EAAE,uBAAuB,EACnC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,KAAK,IAAI,GAC/D,IAAI,CAAC;IACR,OAAO,CAAC,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACpF,UAAU,CACR,UAAU,EAAE,uBAAuB,EACnC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,KAAK,IAAI,GAChE,OAAO,CAAC;IACX,UAAU,CAAC,UAAU,EAAE,yBAAyB,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;CAC5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,GAC3B,MAAM,CAcR;AAsTD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAKrF"}
|