2025-01-31 13:37:06 +00:00
|
|
|
import { ItemView, WorkspaceLeaf } from "obsidian";
|
|
|
|
|
// Each view is uniquely identified by a text string
|
|
|
|
|
// and several operations require that you specify the view you'd like to use.
|
|
|
|
|
// Extracting it to a constant, VIEW_TYPE_EXAMPLE, is a good idea—as you will see later in this guide.
|
2025-01-31 13:56:48 +00:00
|
|
|
import { Root, createRoot } from "react-dom/client";
|
|
|
|
|
import * as React from "react";
|
|
|
|
|
import { ExampleReactView } from "./ReactView";
|
2025-01-31 13:37:06 +00:00
|
|
|
|
|
|
|
|
export const VIEW_TYPE_EXAMPLE = "example-view";
|
|
|
|
|
|
|
|
|
|
export class ExampleView extends ItemView {
|
2025-01-31 13:56:48 +00:00
|
|
|
root: Root | null = null;
|
|
|
|
|
|
2025-01-31 13:37:06 +00:00
|
|
|
constructor(leaf: WorkspaceLeaf) {
|
|
|
|
|
super(leaf);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getViewType() {
|
|
|
|
|
return VIEW_TYPE_EXAMPLE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getDisplayText() {
|
|
|
|
|
return "Example view";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onOpen() {
|
2025-01-31 13:56:48 +00:00
|
|
|
// const container = this.containerEl.children[1];
|
|
|
|
|
// container.empty();
|
|
|
|
|
// container.createEl("h4", { text: "Example view" });
|
|
|
|
|
this.root = createRoot(this.containerEl.children[1]);
|
|
|
|
|
// this.root.render(<div>asdf</div>);
|
|
|
|
|
// this.root.render(<ExampleReactView />);
|
|
|
|
|
this.root.render(React.createElement(ExampleReactView));
|
2025-01-31 13:37:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async onClose() {
|
|
|
|
|
// Nothing to clean up.
|
2025-01-31 13:56:48 +00:00
|
|
|
this.root?.unmount();
|
2025-01-31 13:37:06 +00:00
|
|
|
}
|
|
|
|
|
}
|