code: def reloadable_app(**props_override):
      app = Dash(__name__)
      app.persistence = Value("i", 1)
  
      def layout():
          return html.Div(
              [
                  html.Div(id="out"),
                  simple_table(
                      persistence=app.persistence.value,
                      **props_override,
                  ),
              ]
          )
  
      app.layout = layout
  
      @app.callback(
          Output("out", "children"),
          [Input("table", "columns"), Input("table", "hidden_columns")],
      )
      def report_props(columns, hidden_columns):
          return "names: [{}]; hidden: [{}]".format(
              ", ".join([col["name"] for col in columns]),
              ", ".join(hidden_columns or []),
          )
  
      return app
  
imports: from multiprocessing import Value
  import pytest
  import time
  from selenium.webdriver.common.keys import Keys
  import dash
  from dash import Dash, Input, Output, State, MATCH, dcc, html, dash_table
  from dash_test_components import MyPersistedComponent
  from dash_test_components import MyPersistedComponentNested
label_desc: Use image node_id 4 for calling a global function with example usage: reloadable_app() and returns: app, html, str