mirror of
https://github.com/decaf-dev/obsidian-vault-explorer.git
synced 2026-07-22 10:10:31 +00:00
44 lines
899 B
TypeScript
44 lines
899 B
TypeScript
import { App, WorkspaceLeaf } from "obsidian";
|
|
|
|
import React from "react";
|
|
import { VaultExplorerPluginSettings, onSettingsChange } from "src/types";
|
|
|
|
interface ContextProps {
|
|
app: App;
|
|
leaf: WorkspaceLeaf;
|
|
settings: VaultExplorerPluginSettings;
|
|
onSettingsChange: onSettingsChange;
|
|
}
|
|
|
|
const MountContext = React.createContext<ContextProps | null>(null);
|
|
|
|
export const useAppMount = () => {
|
|
const value = React.useContext(MountContext);
|
|
if (value === null) {
|
|
throw new Error(
|
|
"useAppMount() called without a <AppMountProvider /> in the tree."
|
|
);
|
|
}
|
|
|
|
return value;
|
|
};
|
|
|
|
interface Props extends ContextProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export default function AppMountProvider({
|
|
app,
|
|
leaf,
|
|
settings,
|
|
onSettingsChange,
|
|
children,
|
|
}: Props) {
|
|
return (
|
|
<MountContext.Provider
|
|
value={{ app, leaf, settings, onSettingsChange }}
|
|
>
|
|
{children}
|
|
</MountContext.Provider>
|
|
);
|
|
}
|