import solara
import solara.lab
import plotly
df = solara.reactive(plotly.data.gapminder())
def reset():
# by changing the database object, the cross filters
# will use a new key
df.value = df.value.copy()
@solara.component
def Page():
solara.provide_cross_filter()
# but that even doesn't seem enough, by making a key dependent on the object id
# we force new component instances when the dataframe changes
solara.CrossFilterReport(df.value, classes=["py-2"]).key(f"report-{id(df.value)}")
solara.CrossFilterSlider(df.value, "pop", mode=">").key(f"slider1-{id(df.value)}")
solara.CrossFilterSlider(df.value, "gdpPercap", mode="<").key(f"slider2-{id(df.value)}")
solara.Button("Reset", on_click=reset, outlined=True, color="primary")