also reveal the leaf when using the open command

This commit is contained in:
Ell 2022-03-22 13:22:58 +01:00
parent 51e09944db
commit bbf1cd22fb
2 changed files with 9 additions and 7 deletions

View file

@ -3,4 +3,6 @@ An Obsidian plugin that allows adding iframes with custom styling as editor tabs
![A screenshot of the Obsidian Custom Frames plugin in action](screenshot.png)
To use this plugin, simply go into its settings and add a new frame, either from a preset shipped with the plugin, or a custom one that you can edit yourself. Each frame's tab can be opened using the 'Custom Frames: Open' command.
Note that this plugin only works on Desktop right now.

14
main.ts
View file

@ -47,13 +47,7 @@ export default class CustomFramesPlugin extends Plugin {
this.addCommand({
id: `open-${name}`,
name: `Open ${frame.displayName}`,
checkCallback: (checking: boolean) => {
if (this.app.workspace.getLeavesOfType(name).length)
return false;
if (!checking)
this.app.workspace.getRightLeaf(false).setViewState({ type: name });
return true;
},
callback: () => this.openLeaf(name),
});
} catch {
console.error(`Couldn't register frame ${name}, is there already one with the same name?`);
@ -70,6 +64,12 @@ export default class CustomFramesPlugin extends Plugin {
async saveSettings() {
await this.saveData(this.settings);
}
private async openLeaf(name: string): Promise<void> {
if (!this.app.workspace.getLeavesOfType(name).length)
await this.app.workspace.getRightLeaf(false).setViewState({ type: name });
this.app.workspace.revealLeaf(this.app.workspace.getLeavesOfType(name)[0]);
}
}
class CustomFrameView extends ItemView {