22 lines
1.2 KiB
TypeScript
22 lines
1.2 KiB
TypeScript
import type { InjectionKey } from "vue";
|
|
import type { FlatTreeNode } from "@/composables/useFlatTree";
|
|
import type { TreeNode } from "@/types/database";
|
|
|
|
export interface SidebarTreeContext {
|
|
getVisibleNodes: () => TreeNode[];
|
|
getVisibleNodeIndex: (id: string) => number;
|
|
getProjectedConnectionIds?: () => ReadonlySet<string> | null;
|
|
isSearchProjectionActive?: () => boolean;
|
|
getTreeLoadSearchOptions?: (node: TreeNode) => { searchFilter: string; allowGlobalSearchMismatch: true; expectedSidebarSearchQuery: string } | undefined;
|
|
setTableSearchQuery?: (parentNodeId: string, query: string, local: boolean) => void;
|
|
refreshTableSearchIndex?: (parentNodeId: string) => void;
|
|
registerPasteHandler?: (nodeId: string, callback: () => void) => () => void;
|
|
/** Selectable visible rows (pseudo rows like table search controls are already
|
|
* filtered out) driving keyboard arrow navigation. */
|
|
getVisibleFlatNodes?: () => readonly FlatTreeNode[];
|
|
/** Moves DOM focus to a rendered row after keyboard navigation changed the selection. */
|
|
focusTreeNode?: (nodeId: string) => void;
|
|
}
|
|
|
|
export const sidebarTreeContextKey: InjectionKey<SidebarTreeContext> = Symbol("sidebar-tree-context");
|