@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
168 lines (167 loc) • 4.44 kB
TypeScript
import type { PageParams, PageRef, PageHashState, PageHashStateWithAnchor, PageAnchor } from '../main/model.js';
import type { ColorSchemeState, SerializedColorSchemeValue } from '../core/color-scheme.js';
import { ProgressbarState } from '../core/utils/progressbar.js';
import { LoadDataResourceMetadata, LoadDataState } from '../core/utils/load-data.types.js';
import { NavItemConfig } from '../nav/index.js';
export type CreateMessageType<T extends Record<string, any>> = {
[K in keyof T]: {
from: 'discoveryjs-app';
id: string;
type: K;
payload: T[K];
};
}[keyof T];
export type NavSection = 'primary' | 'secondary' | 'menu';
export type NavInsertPosition = 'before' | 'after' | number;
export type NavMessageCommon = {
section: NavSection;
commands: string[];
};
export type EmbedHostToPreinitMessage = CreateMessageType<{
defineAction: string;
setPageHash: {
hash: string;
replace?: boolean;
};
setRouterPreventLocationUpdate: boolean;
}>;
export type EmbedPreinitToHostMessage = CreateMessageType<{
preinit: {
page: {
hash: string;
};
};
loadingState: LoadDataState;
destroy: null;
}>;
export type EmbedHostToClientPostponeMessage = Extract<EmbedHostToPreinitMessage, {
type: 'defineAction' | 'setPageHash' | 'setRouterPreventLocationUpdate';
}>;
export type EmbedHostToClientMessage = CreateMessageType<{
defineAction: string;
notification: {
name: string;
details: any;
};
setPageHash: {
hash: string;
replace?: boolean;
};
setPageHashState: Partial<PageHashState> & {
replace?: boolean;
};
setPageHashStateWithAnchor: Partial<PageHashStateWithAnchor> & {
replace?: boolean;
};
setPage: PageHashState & {
replace?: boolean;
};
setPageRef: {
ref: PageRef;
replace?: boolean;
};
setPageParams: {
params: PageParams;
replace: boolean;
};
setPageAnchor: {
anchor: PageAnchor;
replace: boolean;
};
setColorSchemeState: ColorSchemeState;
setRouterPreventLocationUpdate: boolean;
unloadData: null;
actionResult: {
callId: string;
value: unknown;
} | {
callId: string;
error: string;
};
changeNavButtons: {
section: NavSection;
action: 'insert';
name: string;
position: NavInsertPosition;
config: NavItemConfig;
commands: string[];
} | {
section: NavSection;
action: 'prepend';
config: NavItemConfig;
commands: string[];
} | {
section: NavSection;
action: 'append';
config: NavItemConfig;
commands: string[];
} | {
section: NavSection;
action: 'before';
name: string;
config: NavItemConfig;
commands: string[];
} | {
section: NavSection;
action: 'after';
name: string;
config: NavItemConfig;
commands: string[];
} | {
section: NavSection;
action: 'replace';
name: string;
config: NavItemConfig;
commands: string[];
} | {
section: NavSection;
action: 'remove';
name: string;
};
dataStream: {
stream: ReadableStream;
resource: LoadDataResourceMetadata;
};
startChunkedDataUpload: {
acceptToken: string;
resource: LoadDataResourceMetadata;
};
dataChunk: {
acceptToken: string;
value: Uint8Array | undefined;
done: boolean;
};
cancelChunkedDataUpload: {
acceptToken: string;
error: string;
};
}>;
export type EmbedClientToHostMessage = CreateMessageType<{
ready: {
page: PageHashStateWithAnchor & {
hash: string;
};
colorScheme: {
value: SerializedColorSchemeValue;
state: ColorSchemeState;
};
};
pageHashChanged: PageHashStateWithAnchor & {
hash: string;
replace: boolean;
};
colorSchemeChanged: {
value: SerializedColorSchemeValue;
state: ColorSchemeState;
};
action: {
callId: string;
name: string;
args: unknown[];
};
navMethod: string;
loadingState: ProgressbarState;
data: null;
unloadData: null;
destroy: null;
}>;