const solverMetadata = {}; let solverMetadataCounter = 0; function createSolverMetadata(data) { const id = solverMetadataCounter; solverMetadata[id] = data; solverMetadataCounter++; return id; } export function setSolverMetadata(domNode, data) { if (domNode.dataset.solverMetadata) { solverMetadata[Number(domNode.dataset.solverMetadata)] = data; return; } domNode.dataset.solverMetadata = createSolverMetadata(data).toString(10); } export function getSolverMetadata(id) { if (typeof id === "object") { // assume DOM element if (id.dataset && id.dataset.solverMetadata) { return getSolverMetadata(id.dataset.solverMetadata); } return null; } if (typeof id === "string") { return getSolverMetadata(Number(id)); } return solverMetadata[id]; } export function deleteSolverMetadata(id) { if (typeof id === "object") { // assume DOM object if (id.dataset && id.dataset.solverMetadata) { return deleteSolverMetadata(id.dataset.solverMetadata); } } delete solverMetadata[id]; }