mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-30 10:36:35 +02:00
169 lines
3.2 KiB
TypeScript
169 lines
3.2 KiB
TypeScript
import { CommandDeclaration } from '@joplin/lib/services/CommandService';
|
|
import { _ } from '@joplin/lib/locale';
|
|
import { joplinCommandToTinyMceCommands } from './NoteBody/TinyMCE/utils/joplinCommandToTinyMceCommands';
|
|
|
|
const workWithHtmlNotes = [
|
|
'attachFile',
|
|
];
|
|
|
|
export const enabledCondition = (commandName: string) => {
|
|
const markdownEditorOnly = !Object.keys(joplinCommandToTinyMceCommands).includes(commandName);
|
|
const noteMustBeMarkdown = !workWithHtmlNotes.includes(commandName);
|
|
|
|
const output = [
|
|
// gotoAnythingVisible: Enable if the command palette (which is a modal dialog) is visible
|
|
'(!modalDialogVisible || gotoAnythingVisible)',
|
|
|
|
markdownEditorOnly ? 'markdownEditorPaneVisible' : '(markdownEditorPaneVisible || richTextEditorVisible)',
|
|
'oneNoteSelected',
|
|
noteMustBeMarkdown ? 'noteIsMarkdown' : '',
|
|
'!noteIsReadOnly',
|
|
];
|
|
|
|
return output.filter(c => !!c).join(' && ');
|
|
};
|
|
|
|
const declarations: CommandDeclaration[] = [
|
|
{
|
|
name: 'insertText',
|
|
},
|
|
{
|
|
name: 'scrollToHash',
|
|
},
|
|
{
|
|
name: 'textCopy',
|
|
label: () => _('Copy'),
|
|
role: 'copy',
|
|
},
|
|
{
|
|
name: 'textCut',
|
|
label: () => _('Cut'),
|
|
role: 'cut',
|
|
},
|
|
{
|
|
name: 'textPaste',
|
|
label: () => _('Paste'),
|
|
role: 'paste',
|
|
},
|
|
{
|
|
name: 'textSelectAll',
|
|
label: () => _('Select all'),
|
|
role: 'selectAll',
|
|
},
|
|
{
|
|
name: 'textBold',
|
|
label: () => _('Bold'),
|
|
iconName: 'icon-bold',
|
|
},
|
|
{
|
|
name: 'textItalic',
|
|
label: () => _('Italic'),
|
|
iconName: 'icon-italic',
|
|
},
|
|
{
|
|
name: 'textLink',
|
|
label: () => _('Hyperlink'),
|
|
iconName: 'icon-link',
|
|
},
|
|
{
|
|
name: 'textCode',
|
|
label: () => _('Code'),
|
|
iconName: 'icon-code',
|
|
},
|
|
{
|
|
name: 'attachFile',
|
|
label: () => _('Attach file'),
|
|
iconName: 'icon-attachment',
|
|
},
|
|
{
|
|
name: 'textNumberedList',
|
|
label: () => _('Numbered List'),
|
|
iconName: 'icon-numbered-list',
|
|
},
|
|
{
|
|
name: 'textBulletedList',
|
|
label: () => _('Bulleted List'),
|
|
iconName: 'icon-bulleted-list',
|
|
},
|
|
{
|
|
name: 'textCheckbox',
|
|
label: () => _('Checkbox'),
|
|
iconName: 'icon-to-do-list',
|
|
},
|
|
{
|
|
name: 'textHeading',
|
|
label: () => _('Heading'),
|
|
iconName: 'icon-heading',
|
|
},
|
|
{
|
|
name: 'textHorizontalRule',
|
|
label: () => _('Horizontal Rule'),
|
|
iconName: 'fas fa-ellipsis-h',
|
|
},
|
|
{
|
|
name: 'insertDateTime',
|
|
label: () => _('Insert time'),
|
|
iconName: 'icon-add-date',
|
|
},
|
|
{
|
|
name: 'editor.deleteLine',
|
|
label: () => _('Delete line'),
|
|
},
|
|
{
|
|
name: 'editor.duplicateLine',
|
|
label: () => _('Duplicate line'),
|
|
},
|
|
{
|
|
name: 'editor.undo',
|
|
label: () => _('Editor: %s', _('Undo')),
|
|
},
|
|
{
|
|
name: 'editor.redo',
|
|
label: () => _('Editor: %s', _('Redo')),
|
|
},
|
|
{
|
|
name: 'editor.indentLess',
|
|
label: () => _('Indent less'),
|
|
},
|
|
{
|
|
name: 'editor.indentMore',
|
|
label: () => _('Indent more'),
|
|
},
|
|
{
|
|
name: 'editor.toggleComment',
|
|
label: () => _('Toggle comment'),
|
|
},
|
|
{
|
|
name: 'editor.sortSelectedLines',
|
|
label: () => _('Sort selected lines'),
|
|
},
|
|
{
|
|
name: 'editor.swapLineUp',
|
|
label: () => _('Swap line up'),
|
|
},
|
|
{
|
|
name: 'editor.swapLineDown',
|
|
label: () => _('Swap line down'),
|
|
},
|
|
{
|
|
name: 'selectedText',
|
|
},
|
|
{
|
|
name: 'replaceSelection',
|
|
},
|
|
{
|
|
name: 'editor.setText',
|
|
},
|
|
{
|
|
name: 'editor.scrollToText',
|
|
},
|
|
{
|
|
name: 'editor.focus',
|
|
},
|
|
{
|
|
name: 'editor.execCommand',
|
|
},
|
|
];
|
|
|
|
export default declarations;
|