graph-explorer
Version:
Graph Explorer can be used to explore and RDF graphs in SPARQL endpoints or on the web.
44 lines (38 loc) • 1.2 kB
text/typescript
import {
ElementModel,
LinkModel,
ElementIri,
sameLink,
hashLink,
} from "../data/model";
import { HashMap, ReadonlyHashMap, cloneMap } from "../viewUtils/collections";
export interface TemporaryState {
readonly elements: ReadonlyMap<ElementIri, ElementModel>;
readonly links: ReadonlyHashMap<LinkModel, LinkModel>;
}
export const TemporaryState = {
empty: {
elements: new Map<ElementIri, ElementModel>(),
links: new HashMap<LinkModel, LinkModel>(hashLink, sameLink),
} as TemporaryState,
addElement(state: TemporaryState, element: ElementModel) {
const elements = cloneMap(state.elements);
elements.set(element.id, element);
return { ...state, elements };
},
deleteElement(state: TemporaryState, element: ElementModel) {
const elements = cloneMap(state.elements);
elements.delete(element.id);
return { ...state, elements };
},
addLink(state: TemporaryState, link: LinkModel) {
const links = state.links.clone();
links.set(link, link);
return { ...state, links };
},
deleteLink(state: TemporaryState, link: LinkModel) {
const links = state.links.clone();
links.delete(link);
return { ...state, links };
},
};