@reactodia/workspace
Version:
Reactodia Workspace -- library for visual interaction with graphs in a form of a diagram.
75 lines • 3.44 kB
TypeScript
import { EventSource, Events, EventObserver, AnyEvent, PropertyChange } from '../coreUtils/events';
import { Translation } from '../coreUtils/i18n';
import { LinkTypeIri } from '../data/model';
import * as Rdf from '../data/rdf/rdfModel';
import { Element, ElementEvents, Link, LinkEvents, LinkTypeVisibility } from './elements';
import { Graph, CellsChangedEvent } from './graph';
import { CommandHistory } from './history';
export interface DiagramModelEvents {
changeLanguage: PropertyChange<DiagramModel, string>;
changeSelection: PropertyChange<DiagramModel, ReadonlyArray<Element | Link>>;
changeCells: CellsChangedEvent;
changeCellOrder: {
readonly source: DiagramModel;
};
elementEvent: AnyEvent<ElementEvents>;
linkEvent: AnyEvent<LinkEvents>;
changeLinkVisibility: PropertyChange<LinkTypeIri, LinkTypeVisibility>;
discardGraph: {
readonly source: DiagramModel;
};
}
export interface GraphStructure {
get factory(): Rdf.DataFactory;
get elements(): ReadonlyArray<Element>;
get links(): ReadonlyArray<Link>;
getElement(elementId: string): Element | undefined;
getElementLinks(element: Element): ReadonlyArray<Link>;
getLink(linkId: string): Link | undefined;
findLink(linkTypeId: LinkTypeIri, sourceId: string, targetId: string): Link | undefined;
sourceOf(link: Link): Element | undefined;
targetOf(link: Link): Element | undefined;
getLinkVisibility(linkTypeId: LinkTypeIri): LinkTypeVisibility;
}
export interface DiagramModelOptions {
history: CommandHistory;
translation: Translation;
}
export declare class DiagramModel implements GraphStructure {
protected readonly source: EventSource<DiagramModelEvents>;
readonly events: Events<DiagramModelEvents>;
private _language;
private _selection;
protected graph: Graph;
protected graphListener: EventObserver;
readonly history: CommandHistory;
constructor(options: DiagramModelOptions);
get language(): string;
setLanguage(value: string): void;
get selection(): readonly (Element | Link)[];
setSelection(value: ReadonlyArray<Element | Link>): void;
get factory(): Rdf.DataFactory;
get elements(): ReadonlyArray<Element>;
get links(): ReadonlyArray<Link>;
protected getTermFactory(): Rdf.DataFactory;
getElement(elementId: string): Element | undefined;
getElementLinks(element: Element): ReadonlyArray<Link>;
getLink(linkId: string): Link | undefined;
findLink(linkTypeId: LinkTypeIri, sourceId: string, targetId: string): Link | undefined;
sourceOf(link: Link): Element | undefined;
targetOf(link: Link): Element | undefined;
getLinkVisibility(linkTypeId: LinkTypeIri): LinkTypeVisibility;
setLinkVisibility(linkTypeId: LinkTypeIri, value: LinkTypeVisibility): void;
protected resetGraph(): void;
protected subscribeGraph(): void;
protected triggerChangeCells(e: CellsChangedEvent): void;
protected triggerElementEvent(e: AnyEvent<ElementEvents>): void;
protected triggerLinkEvent(e: AnyEvent<LinkEvents>): void;
reorderElements(compare: (a: Element, b: Element) => number): void;
bringElements(targets: ReadonlyArray<Element>, to: 'front' | 'back'): void;
addElement(element: Element): void;
removeElement(elementId: string): void;
addLink(link: Link): void;
removeLink(linkId: string): void;
}
//# sourceMappingURL=model.d.ts.map