code: func New(key string, config map[string]string, cbs *Callbacks) react.Element {
  	if cbs == nil {
  		fmt.Println("Nil callbacks for SelectAllBtn")
  		return nil
  	}
  	if cbs.GetQuery == nil {
  		fmt.Println("Nil GetQuery callback for SelectAllBtn")
  		return nil
  	}
  	if cbs.GetQuery() == "" {
  		// This makes sure we don't enable the button when we're on the "main" page,
  		// with no search.
  		return nil
  	}
  	if cbs.SetSelection == nil {
  		fmt.Println("Nil SetSelection callback for SelectAllBtn")
  		return nil
  	}
  	if config == nil {
  		fmt.Println("Nil config for SelectAllBtn")
  		return nil
  	}
  	authToken, ok := config["authToken"]
  	if !ok {
  		fmt.Println("No authToken in config for SelectAllBtn")
  		return nil
  	}
  	if key == "" {
  		// A key is only needed in the context of a list, which is why
  		// it is up to the caller to choose it. Just creating it here for
  		// the sake of consistency.
  		key = "selectAllButton"
  	}
  	props := SelectAllBtnProps{
  		key:       key,
  		callbacks: cbs,
  		authToken: authToken,
  	}
  	return SelectAllBtn(props)
  }
docs: // New returns the button element. It should be used as the entry point, to
  // create the needed React element.
  //
  // key is the id for when the button is in a list, see
  // https://facebook.github.io/react/docs/lists-and-keys.html
  //
  // config is the web UI config that was fetched from the server.
  //
  // cbs is a wrapper around the callback functions required by this component.