@graphql-hive/laboratory
Version:
[Hive](https://the-guild.dev/graphql/hive) is a fully open-source schema registry, analytics, metrics and gateway for [GraphQL federation](https://the-guild.dev/graphql/hive/federation) and other GraphQL APIs.
67 lines (66 loc) • 2.22 kB
TypeScript
import { LaboratoryEnv } from './env';
import { LaboratoryHistoryRequest } from './history';
import { LaboratoryOperation } from './operations';
import { LaboratoryPreflight } from './preflight';
import { LaboratoryTest } from './tests';
export interface LaboratoryTabOperation {
id: string;
type: 'operation';
data: Pick<LaboratoryOperation, 'id' | 'name'>;
readOnly?: boolean;
}
export interface LaboratoryTabHistory {
id: string;
type: 'history';
data: Pick<LaboratoryHistoryRequest, 'id'>;
readOnly?: boolean;
}
export interface LaboratoryTabPreflight {
id: string;
type: 'preflight';
data: LaboratoryPreflight;
readOnly?: boolean;
}
export interface LaboratoryTabEnv {
id: string;
type: 'env';
data: LaboratoryEnv;
readOnly?: boolean;
}
export interface LaboratoryTabTest {
id: string;
type: 'test';
data: Pick<LaboratoryTest, 'id' | 'name'>;
readOnly?: boolean;
}
export interface LaboratoryTabSettings {
id: string;
type: 'settings';
data: unknown;
readOnly?: boolean;
}
export interface LaboratoryTabCustom {
id: string;
type: string;
data: unknown;
readOnly?: boolean;
}
export type LaboratoryTabData = Pick<LaboratoryOperation, 'id' | 'name'> | Pick<LaboratoryHistoryRequest, 'id'> | LaboratoryPreflight | LaboratoryEnv;
export type LaboratoryTab = LaboratoryTabOperation | LaboratoryTabPreflight | LaboratoryTabEnv | LaboratoryTabHistory | LaboratoryTabSettings | LaboratoryTabTest | LaboratoryTabCustom;
export interface LaboratoryTabsState {
tabs: LaboratoryTab[];
}
export interface LaboratoryTabsActions {
activeTab: LaboratoryTab | null;
setActiveTab: (tab: LaboratoryTab) => void;
setTabs: (tabs: LaboratoryTab[]) => void;
addTab: (tab: Omit<LaboratoryTab, 'id'>) => LaboratoryTab;
updateTab: (id: string, data: LaboratoryTabData) => void;
deleteTab: (tabId: string) => void;
}
export declare const useTabs: (props: {
defaultTabs?: LaboratoryTab[] | null;
defaultActiveTabId?: string | null;
onTabsChange?: (tabs: LaboratoryTab[]) => void;
onActiveTabIdChange?: (tabId: string | null) => void;
}) => LaboratoryTabsState & LaboratoryTabsActions;