Notes/packages/ckeditor5/src/extra_slash_commands.ts

40 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-06-16 20:15:44 +03:00
import type { Editor } from 'ckeditor5';
import type { SlashCommandEditorConfig } from 'ckeditor5-premium-features';
import { icons as admonitionIcons } from '@triliumnext/ckeditor5-admonition';
2025-06-16 20:20:33 +03:00
import { icons as footnoteIcons } from '@triliumnext/ckeditor5-footnotes';
2025-06-16 20:15:44 +03:00
import { ADMONITION_TYPES, type AdmonitionType } from '@triliumnext/ckeditor5-admonition';
type SlashCommandDefinition = SlashCommandEditorConfig["extraCommands"][number];
export default function buildExtraCommands(): SlashCommandDefinition[] {
return [
2025-06-16 20:20:33 +03:00
...buildAdmonitionExtraCommands(),
...buildFootnoteExtraCommands()
2025-06-16 20:15:44 +03:00
];
}
function buildAdmonitionExtraCommands(): SlashCommandDefinition[] {
const commands: SlashCommandDefinition[] = [];
for (const [ keyword, definition ] of Object.entries(ADMONITION_TYPES)) {
commands.push({
id: keyword,
title: `Admonition: ${definition.title}`,
icon: admonitionIcons.admonitionIcon,
execute: (editor: Editor) => editor.execute("admonition", { forceValue: keyword as AdmonitionType })
});
}
return commands;
}
2025-06-16 20:20:33 +03:00
function buildFootnoteExtraCommands(): SlashCommandDefinition[] {
return [
{
id: 'footnote',
title: 'Footnote',
description: 'Create a new footnote and reference it here',
icon: footnoteIcons.insertFootnoteIcon,
execute: (editor: Editor) => editor.execute("InsertFootnote")
}
];
}