UNPKG

dompro

Version:
83 lines (73 loc) 2.17 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.setBooleanProp = setBooleanProp; exports.removeBooleanProp = removeBooleanProp; exports.isEventProp = isEventProp; exports.isCustomProp = isCustomProp; exports.setProp = setProp; exports.removeProp = removeProp; exports.setProps = setProps; exports.updateProp = updateProp; exports.updateProps = updateProps; function setBooleanProp($target, name, value) { if (value) { $target.setAttribute(name, value); $target[name] = true; } else { $target[name] = false; } } function removeBooleanProp($target, name) { $target.removeAttribute(name); $target[name] = false; } function isEventProp(name) { return (/^on/.test(name) ); } function isCustomProp(name) { return isEventProp(name) || name === 'forceUpdate'; } 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); } } 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); } } function setProps($target, props) { Object.keys(props).forEach(function (name) { setProp($target, name, props[name]); }); } function updateProp($target, name, newVal, oldVal) { if (!newVal) { removeProp($target, name, oldVal); } else if (!oldVal || newVal !== oldVal) { setProp($target, name, newVal); } } function updateProps($target, newProps) { var oldProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var props = Object.assign({}, newProps, oldProps); Object.keys(props).forEach(function (name) { updateProp($target, name, newProps[name], oldProps[name]); }); }