import { clearCellOverlays, processCellOverlays } from "./overlays.js"; const metadata = {}; let metadataCounter = 0; function createMetadata(data) { const id = metadataCounter; metadata[id] = data; metadataCounter++; return id; } export function setDomMetadata(domNode, data) { if (domNode.dataset.metadata) { metadata[Number(domNode.dataset.metadata)] = data; return; } domNode.dataset.metadata = createMetadata(data).toString(10); } export function setCellMetadata(node, key, value) { if (!node.dataset.metadata) { node.dataset.metadata = createMetadata({ [key]: value }).toString(10); } else { metadata[Number(node.dataset.metadata)][key] = value; } processCellOverlays(node, key, true); } export function getMetadata(id) { if (typeof id === "object") { // assume DOM element if (id.dataset && id.dataset.metadata) { return getMetadata(id.dataset.metadata); } return null; } if (typeof id === "string") { return getMetadata(Number(id)); } return metadata[id]; } export function getCellMetadata(node, key) { return metadata[Number(node.dataset.metadata)][key]; } export function deleteMetadata(id) { if (typeof id === "object") { // assume DOM object if (id.dataset && id.dataset.metadata) { clearCellOverlays(id); return deleteMetadata(id.dataset.metadata); } } delete metadata[id]; } export function clearCellMetadata(node, key) { if (!node.dataset.metadata) return; delete metadata[Number(node.dataset.metadata)][key]; processCellOverlays(node, key, false); }