whole_func_string: function updateAttributes(el, prevProps, props) {
    var propName;
  
    if (!props || prevProps === props) {
      return;
    }
  
    // Set attributes.
    for (propName in props) {
      if (!filterNonEntityPropNames(propName)) {
        continue;
      }
      doSetAttribute(el, props, propName);
    }
  
    // See if attributes were removed.
    if (prevProps) {
      for (propName in prevProps) {
        if (!filterNonEntityPropNames(propName)) {
          continue;
        }
        if (props[propName] === undefined) {
          el.removeAttribute(propName);
        }
      }
    }
  }
func_code_string: function updateAttributes(el, prevProps, props) {
    var propName;
  
    if (!props || prevProps === props) {
      return;
    }
  
    // Set attributes.
    for (propName in props) {
      if (!filterNonEntityPropNames(propName)) {
        continue;
      }
      doSetAttribute(el, props, propName);
    }
  
    // See if attributes were removed.
    if (prevProps) {
      for (propName in prevProps) {
        if (!filterNonEntityPropNames(propName)) {
          continue;
        }
        if (props[propName] === undefined) {
          el.removeAttribute(propName);
        }
      }
    }
  }
func_documentation_string: Handle diffing of previous and current attributes.
  
  @param {Element} el
  @param {Object|null} prevProps - Previous props map.
  @param {Object} props - Current props map.