@scalar/api-client
Version:
the open source API testing client
48 lines • 2.11 kB
TypeScript
import type { HttpMethod } from '@scalar/helpers/http/http-methods';
import type { WorkspaceStore } from '@scalar/workspace-store/client';
import type { TraversedEntry } from '@scalar/workspace-store/schemas/navigation';
import { type MaybeRefOrGetter } from 'vue';
/**
* useSidebarState - Custom hook to manage the sidebar state and navigation logic in the Scalar API client
*
* This composable manages the sidebar structure, synchronizes selection state
* with the current route, and provides a handler for selecting sidebar items.
*
* Example usage:
*
* const { handleSelectItem, sidebarState } = useSidebarState({
* workspaceStore,
* workspaceSlug,
* documentSlug,
* path,
* method,
* exampleName,
* })
*/
export declare const useSidebarState: ({ workspaceStore, documentSlug, path, method, exampleName, }: {
workspaceStore: MaybeRefOrGetter<WorkspaceStore | null>;
workspaceSlug: MaybeRefOrGetter<string | undefined>;
documentSlug: MaybeRefOrGetter<string | undefined>;
path: MaybeRefOrGetter<string | undefined>;
method: MaybeRefOrGetter<HttpMethod | undefined>;
exampleName: MaybeRefOrGetter<string | undefined>;
}) => {
handleSelectItem: (id: string) => Promise<void | import("vue-router").NavigationFailure | undefined> | undefined;
sidebarState: {
items: import("vue").ComputedRef<TraversedEntry[]>;
index: import("vue").ComputedRef<Map<string, TraversedEntry & {
parent?: TraversedEntry | undefined;
}>>;
selectedItems: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
expandedItems: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
setSelected: (id: string | null) => void;
setExpanded: (id: string, value: boolean) => void;
isExpanded: (id: string) => boolean;
isSelected: (id: string) => boolean;
getEntryById: (id: string) => (TraversedEntry & {
parent?: TraversedEntry | undefined;
}) | undefined;
reset: () => void;
};
};
//# sourceMappingURL=use-sidebar-state.d.ts.map