code: function renderAttrs (attrs, node) {
    let result = "";
  
    if (node) {
      if (node.type === "input") {
        // from ReactDOMInput.getHostProps
        attrs = assign({
          type: undefined,
          step: undefined,
          min: undefined,
          max: undefined
        }, attrs);
      } else if (node.type === "textarea") {
        attrs = omit(attrs, "value");
      }
    }
  
    for (const attrKey in attrs) {
      let attrValue = attrs[attrKey];
  
      if (attrKey === "style") {
        if (!isObject(attrValue)) {
          continue;
        }
        attrValue = CSSPropertyOperations.createMarkupForStyles(mapValues(attrValue, value => {
          if (isString(value)) {
            return value.trim();
          }
          return value;
        }));
      }
  
      let markup = null;
      if (DOMProperty.isCustomAttribute(attrKey) || node && isCustomNode(node)) {
        if (!RESERVED_PROPS[attrKey]) {
          markup = DOMPropertyOperations.createMarkupForCustomAttribute(attrKey, attrValue);
        }
      } else {
        markup = DOMPropertyOperations.createMarkupForProperty(attrKey, attrValue);
      }
      if (markup) {
        result += ` ${markup}`;
      }
    }
  
    return result;
  }
docs: Render an object of key/value pairs into their HTML attribute equivalent.
  
  @param      {Object}  attrs   Attributes in object form.
  @param      {VDOM}    node    VDOM node.
  
  @return     {String}          Generated HTML attribute output.
   eslint-disable-next-line max-statements