code: function updateOriginalProp(element, name, value) {
    let changes;
    switch (name) {
      
      case 'class': {
        const classes = parseClassProps(value);
        changes = { classes };
        break;
      }
  
      case 'style': {
        const style = parseStyleProps(value);
        changes = { style };
        break;
      }
      
      default:
        changes = {
          attributes: {
            [name]: value
          }
        };
        break;
    }
    const original = updates.merge(element.state.original, changes);
    element.setState({ original });
  }
docs: If we're changing an attribute outside of rendering, the element is being directly modified by its host. Update our notion of the element's "original" props, and give the component a chance to re-render based on this new information.  This is important when, for example, a mixin or component wants to provide a default value for an attribute. Suppose a mixin wants to set a default tabindex of zero if no tabindex is provided by the host. If/when the host eventually sets a tabindex, the mixin should see the change, and let the host's preferred tabindex stick instead of overwriting it with its default tabindex of zero.