common.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. export function setAttributeInner(node, field, value, ns) {
  2. const name = field;
  3. if (ns === "style") {
  4. // ????? why do we need to do this
  5. if (node.style === undefined) {
  6. node.style = {};
  7. }
  8. node.style[name] = value;
  9. } else if (ns != null && ns != undefined) {
  10. node.setAttributeNS(ns, name, value);
  11. } else {
  12. switch (name) {
  13. case "value":
  14. if (value !== node.value) {
  15. node.value = value;
  16. }
  17. break;
  18. case "initial_value":
  19. node.defaultValue = value;
  20. break;
  21. case "checked":
  22. node.checked = value === "true" || value === true;
  23. break;
  24. case "selected":
  25. node.selected = value === "true" || value === true;
  26. break;
  27. case "dangerous_inner_html":
  28. node.innerHTML = value;
  29. break;
  30. default:
  31. // https://github.com/facebook/react/blob/8b88ac2592c5f555f315f9440cbb665dd1e7457a/packages/react-dom/src/shared/DOMProperty.js#L352-L364
  32. if (value === "false" && bool_attrs.hasOwnProperty(name)) {
  33. node.removeAttribute(name);
  34. } else {
  35. node.setAttribute(name, value);
  36. }
  37. }
  38. }
  39. }