snabbdom
Version:
A virtual DOM library with focus on simplicity, modularity, powerful features and performance.
28 lines (24 loc) • 781 B
text/typescript
import {VNode, VNodeData} from '../vnode';
import {Module} from './module';
function updateDataset(oldVnode: VNode, vnode: VNode): void {
var elm: HTMLElement = vnode.elm as HTMLElement,
oldDataset = (oldVnode.data as VNodeData).dataset,
dataset = (vnode.data as VNodeData).dataset,
key: string;
if (!oldDataset && !dataset) return;
if (oldDataset === dataset) return;
oldDataset = oldDataset || {};
dataset = dataset || {};
for (key in oldDataset) {
if (!dataset[key]) {
delete elm.dataset[key];
}
}
for (key in dataset) {
if (oldDataset[key] !== dataset[key]) {
elm.dataset[key] = dataset[key];
}
}
}
export const datasetModule = {create: updateDataset, update: updateDataset} as Module;
export default datasetModule;