dom-layer
Version:
Virtual DOM implementation.
36 lines (31 loc) • 740 B
JavaScript
/**
* Maintains state of element dataset.
*
* @param Object element A DOM element.
* @param Object previous The previous state of dataset.
* @param Object dataset The dataset to match on.
* @return Object dataset The element dataset state.
*/
function patch(element, previous, dataset) {
if (!previous && !dataset) {
return dataset;
}
var name;
previous = previous || {};
dataset = dataset || {};
for (name in previous) {
if (dataset[name] === undefined) {
delete element.dataset[name];
}
}
for (name in dataset) {
if (previous[name] === dataset[name]) {
continue;
}
element.dataset[name] = dataset[name];
}
return dataset;
}
module.exports = {
patch: patch
};