1
0

Merge branch 'main' of github.com:silverbulletmd/silverbullet

This commit is contained in:
Zef Hemel 2023-01-04 16:39:10 +01:00
commit 3883ba9a66
3 changed files with 22 additions and 12 deletions

View File

@ -74,7 +74,7 @@ import {
vim,
yUndoManagerKeymap,
} from "./deps.ts";
import { CommandHook } from "./hooks/command.ts";
import { AppCommand, CommandHook } from "./hooks/command.ts";
import { SlashCommandHook } from "./hooks/slash_command.ts";
import { PathPageNavigator } from "./navigator.ts";
import reducer from "./reducer.ts";
@ -926,7 +926,7 @@ export class Editor {
});
}
}}
commands={viewState.commands}
commands={this.getCommandsByContext(viewState)}
vimMode={viewState.uiOptions.vimMode}
darkMode={viewState.uiOptions.darkMode}
completer={this.miniEditorComplete.bind(this)}
@ -1069,6 +1069,23 @@ export class Editor {
preactRender(<ViewComponent />, container);
}
private getCommandsByContext(
state: AppViewState,
): Map<string, AppCommand> {
const commands = new Map(state.commands);
for (const [k, v] of state.commands.entries()) {
if (
v.command.contexts &&
(!state.showCommandPaletteContext ||
!v.command.contexts.includes(state.showCommandPaletteContext))
) {
commands.delete(k);
}
}
return commands;
}
private getContext(): string | undefined {
const state = this.editorView!.state;
const selection = state.selection.main;

View File

@ -63,25 +63,17 @@ export default function reducer(
};
}
case "show-palette": {
const commands = new Map(state.commands);
for (const [k, v] of state.commands.entries()) {
if (
v.command.contexts &&
(!action.context || !v.command.contexts.includes(action.context))
) {
commands.delete(k);
}
}
return {
...state,
commands,
showCommandPalette: true,
showCommandPaletteContext: action.context,
};
}
case "hide-palette":
return {
...state,
showCommandPalette: false,
showCommandPaletteContext: undefined,
};
case "command-run":
return {

View File

@ -29,6 +29,7 @@ export type AppViewState = {
isLoading: boolean;
showPageNavigator: boolean;
showCommandPalette: boolean;
showCommandPaletteContext?: string;
unsavedChanges: boolean;
panels: { [key: string]: PanelConfig };
allPages: Set<PageMeta>;