UNPKG

dompro

Version:
66 lines (58 loc) 1.74 kB
export function setBooleanProp($target, name, value) { if (value) { $target.setAttribute(name, value); $target[name] = true; } else { $target[name] = false; } } export function removeBooleanProp($target, name) { $target.removeAttribute(name); $target[name] = false; } export function isEventProp(name) { return /^on/.test(name); } export function isCustomProp(name) { return isEventProp(name) || name === 'forceUpdate'; } export function setProp($target, name, value) { if (isCustomProp(name)) { return; } else if (name === 'className') { $target.setAttribute('class', value); } else if (typeof value === 'boolean') { setBooleanProp($target, name, value); } else { $target.setAttribute(name, value); } } export function removeProp($target, name, value) { if (isCustomProp(name)) { return; } else if (name === 'className') { $target.removeAttribute('class'); } else if (typeof value === 'boolean') { removeBooleanProp($target, name); } else { $target.removeAttribute(name); } } export function setProps($target, props) { Object.keys(props).forEach(name => { setProp($target, name, props[name]); }); } export function updateProp($target, name, newVal, oldVal) { if (!newVal) { removeProp($target, name, oldVal); } else if (!oldVal || newVal !== oldVal) { setProp($target, name, newVal); } } export function updateProps($target, newProps, oldProps = {}) { const props = Object.assign({}, newProps, oldProps); Object.keys(props).forEach(name => { updateProp($target, name, newProps[name], oldProps[name]); }); }