@reactodia/workspace
Version:
Reactodia Workspace -- library for visual interaction with graphs in a form of a diagram.
89 lines • 2.95 kB
TypeScript
import { ElementIri, ElementModel, LinkTypeIri } from '../data/model';
import { Element, ElementTemplateState, Link, LinkTemplateState, LinkTypeVisibility } from '../diagram/elements';
import { Vector } from '../diagram/geometry';
export interface SerializedDiagram {
'@context': any;
'@type': 'Diagram';
layoutData: SerializedLayout;
linkTypeOptions?: ReadonlyArray<SerializedLinkOptions>;
}
export interface SerializedLinkOptions {
'@type': 'LinkTypeOptions';
property: LinkTypeIri;
visible: boolean;
showLabel?: boolean;
}
export interface SerializedLayout {
'@type': 'Layout';
elements: ReadonlyArray<SerializedLayoutElement | SerializedLayoutElementGroup>;
links: ReadonlyArray<SerializedLayoutLink | SerializedLayoutLinkGroup>;
}
export interface SerializedLayoutElement {
'@type': 'Element';
'@id': string;
iri?: ElementIri;
position: Vector;
isExpanded?: boolean;
elementState?: ElementTemplateState;
}
export interface SerializedLayoutElementGroup {
'@type': 'ElementGroup';
'@id': string;
items: ReadonlyArray<SerializedLayoutElementItem>;
position: Vector;
elementState?: ElementTemplateState;
}
export interface SerializedLayoutElementItem {
'@type': 'ElementItem';
iri: ElementIri;
elementState?: ElementTemplateState;
}
export interface SerializedLayoutLink {
'@type': 'Link';
'@id': string;
property: LinkTypeIri;
source: {
'@id': string;
};
target: {
'@id': string;
};
targetIri?: ElementIri;
sourceIri?: ElementIri;
vertices?: ReadonlyArray<Vector>;
linkState?: LinkTemplateState;
}
export interface SerializedLayoutLinkGroup {
'@type': 'LinkGroup';
'@id': string;
property: LinkTypeIri;
source: {
'@id': string;
};
target: {
'@id': string;
};
items: ReadonlyArray<SerializedLayoutLinkItem>;
vertices?: ReadonlyArray<Vector>;
linkState?: LinkTemplateState;
}
export interface SerializedLayoutLinkItem {
'@type': 'LinkItem';
targetIri: ElementIri;
sourceIri: ElementIri;
linkState?: LinkTemplateState;
}
export declare function emptyDiagram(): SerializedDiagram;
export interface DeserializedDiagram {
elements: ReadonlyArray<Element>;
links: ReadonlyArray<Link>;
linkTypeVisibility: ReadonlyMap<LinkTypeIri, LinkTypeVisibility>;
}
export declare function serializeDiagram(diagram: DeserializedDiagram): SerializedDiagram;
export interface DeserializeDiagramOptions {
readonly preloadedElements?: ReadonlyMap<ElementIri, ElementModel>;
readonly markLinksAsLayoutOnly?: boolean;
}
export declare function deserializeDiagram(diagram: SerializedDiagram, options?: DeserializeDiagramOptions): DeserializedDiagram;
export declare function markLayoutOnly(linkState: LinkTemplateState | undefined, value: boolean): LinkTemplateState | undefined;
//# sourceMappingURL=serializedDiagram.d.ts.map