Custom Function as Dash Row Style

Ok, I see the issue with the maximum call stack. here is the smallest reproducible:

import dash_ag_grid as dag
from dash import Dash, html, Output, Input, callback, State, no_update
import dash_mantine_components as dmc

app = Dash(__name__)

data = [
    {
        "localTime": "5:00am",
        "a": 0.231,
        "b": 0.523,
        "c": 0.423,
        "d": 0.527,
    },
    {
        "localTime": "5:15am",
        "a": 0.423,
        "b": 0.452,
        "c": 0.523,
        "d": 0.543,
    },
    {
        "localTime": "5:30am",
        "a": 0.537,
        "b": 0.246,
        "c": 0.426,
        "d": 0.421,
    },
    {
        "localTime": "5:45am",
        "a": 0.893,
        "b": 0.083,
        "c": 0.532,
        "d": 0.983,
    },
    {
        "localTime": "6:00am",
        "a": 0.231,
        "b": 0.523,
        "c": 0.423,
        "d": 0.527,
    },
    {
        "localTime": "6:15am",
        "a": 0.423,
        "b": 0.452,
        "c": 0.523,
        "d": 0.543,
    },
    {
        "localTime": "6:30am",
        "a": 0.537,
        "b": 0.246,
        "c": 0.426,
        "d": 0.421,
    },
    {
        "localTime": "6:45am",
        "a": 0.893,
        "b": 0.083,
        "c": 0.532,
        "d": 0.983,
    },
    {
        "localTime": "7:00am",
        "a": 0.231,
        "b": 0.523,
        "c": 0.423,
        "d": 0.527,
    },
    {
        "localTime": "7:15am",
        "a": 0.423,
        "b": 0.452,
        "c": 0.523,
        "d": 0.543,
    },
    {
        "localTime": "7:30am",
        "a": 0.537,
        "b": 0.246,
        "c": 0.426,
        "d": 0.421,
    },
    {
        "localTime": "7:45am",
        "a": 0.893,
        "b": 0.083,
        "c": 0.532,
        "d": 0.983,
    },
    {
        "localTime": "8:00am",
        "a": 0.231,
        "b": 0.523,
        "c": 0.423,
        "d": 0.527,
    },
    {
        "localTime": "8:15am",
        "a": 0.423,
        "b": 0.452,
        "c": 0.523,
        "d": 0.543,
    },
    {
        "localTime": "8:30am",
        "a": 0.537,
        "b": 0.246,
        "c": 0.426,
        "d": 0.421,
    },
    {
        "localTime": "8:45am",
        "a": 0.893,
        "b": 0.083,
        "c": 0.532,
        "d": 0.983,
    },
    {
        "localTime": "8:00am",
        "a": 0.231,
        "b": 0.523,
        "c": 0.423,
        "d": 0.527,
    },
    {
        "localTime": "8:15am",
        "a": 0.423,
        "b": 0.452,
        "c": 0.523,
        "d": 0.543,
    },
    {
        "localTime": "8:30am",
        "a": 0.537,
        "b": 0.246,
        "c": 0.426,
        "d": 0.421,
    },
    {
        "localTime": "8:45am",
        "a": 0.893,
        "b": 0.083,
        "c": 0.532,
        "d": 0.983,
    },
]

columnDefs = [
    {"field": "localTime"},
    {"field": "a"},
    {"field": "b"},
    {"field": "c"},
    {"field": "d"},
]

popover = dmc.Stack(
    [
        dmc.Select(
        value=None,
        data=[x["field"] for x in columnDefs],
        id="column_populate",
        clearable=True,
        # comboboxProps=dict(withInPortal=True),
    ),
    dmc.Button("Remove Column", id="my-button", color="blue",fullWidth=True),
    ]
)

ag_grid = dag.AgGrid(
    id="grid",
    rowData=data,
    columnDefs=columnDefs,
    defaultColDef={
        "resizable": True,
        "sortable": True,
        "filter": True,
        "flex": 1,
    },
    dashGridOptions={"suppressRowTransform": True},
)

app.layout = dmc.MantineProvider(
    html.Div([
        dmc.Grid(children=[
            dmc.GridCol(span=12,children=popover),
            dmc.GridCol(span=12,children=ag_grid),
        ],align='flex-end')
    ],style={'height':'100vh','width':'100vw','padding':'20px'})
)

@callback(
    Output("grid", "columnDefs"),
    Input("my-button", "n_clicks"),
    State("column_populate", "value"),
    State("grid", "columnDefs"),
)
def remove_column(n_clicks, column_name, input_columnDefs):
    if n_clicks is None or column_name is None:
        return no_update
    return [
        col for col in input_columnDefs if col["field"] != column_name
    ]

if __name__ == "__main__":
    app.run(debug=True)