code: def setup_save_handler(self, button, func, components):
      button.click(
          fn=func,
          inputs=[self.edit_name_input, *components],
          outputs=[],
      ).then(
          fn=None,
          _js="function(name){closePopup(); extraNetworksRefreshSingleCard("
          + json.dumps(self.page.name)
          + ","
          + json.dumps(self.tabname)
          + ", name);}",
          inputs=[self.edit_name_input],
          outputs=[],
      )
  
imports: import datetime
  import html
  import json
  import os.path
  import gradio
  from modules import generation_parameters_copypaste, images, sysinfo, errors, ui_extra_networks
label_desc: Use image node_id 12 for calling the UserMetadataEditor obj's underlying member method code with example usage: obj.setup_save_handler(button, func, components) without return types