import { NamedNode, IndexedFormula } from 'rdflib'
// Note: there might be a more appropriate project to hold this definition:
export interface PaneDefinition {
icon: string;
name: string;
label: (subject: NamedNode) => string | null;
render: (subject: NamedNode, dom: HTMLDocument, options?: unknown) => HTMLElement;
shouldGetFocus?: (subject: NamedNode) => boolean;
requireQueryButton?: boolean;
mintClass?: NamedNode;
mintNew?: (options: NewPaneOptions) => Promise;
};
export interface NewPaneOptions {
appPathSegment: string;
div: HTMLDivElement;
dom: HTMLDocument;
folder: NamedNode;
iconEle: HTMLImageElement;
me?: NamedNode;
newBase: string;
newInstance: NamedNode;
noIndexHTML: boolean;
noun: string;
pane: PaneDefinition;
refreshTarget: HTMLTableElement;
}
export interface ViewParams {
container: HTMLElement;
subject: NamedNode;
store: IndexedFormula;
visitNode: (node: NamedNode) => void;
user?: NamedNode;
};
export interface RevampPaneDefinition {
canHandle: (subject: NamedNode, store: IndexedFormula) => boolean;
view: (params: ViewParams) => void;
label: (subject: NamedNode, store: IndexedFormula) => string | null;
};
export interface ContainerProps {
store: IndexedFormula;
subject: NamedNode;
}