Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add reactive execution on ui.array and ui.dictionary's contained elements #690

Merged
merged 17 commits into from
Jan 29, 2024

Conversation

akshayka
Copy link
Contributor

This change makes it possible to extract elements contained in mo.ui.array and mo.ui.dictionary objects, embed them in other outputs, and have reactivity flow through the original container elements.

This means that it is now possible to create outputs with a dynamic number of elements (eg, a table with a column of ui.button objects) at runtime, and have reactivity + on_change handlers work, without using ui.batch.

A simple example:

# first cell
array = mo.ui.array([mo.ui.slider(1, 10) for i in range(10))
# second cell
mo.md(f"This is a slider {array[0]}")
# third cell
array.value

The smoke test has more interesting examples.

This change also adds methods to array, dictionary to make them emulate Python's list and dict containers.

In the implementation, we make it possible to register a UI element as a view of another UI element; ui.array and batch_base are updated to make use of this method. A new function is added to the registry that recursively resolves a value update on a view of a UI element to a value update on the source/parent element. The runtime uses this method to resolve SetUIElementValueRequests on views to their parents.

Copy link

vercel bot commented Jan 29, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
marimo-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jan 29, 2024 11:20pm
marimo-storybook ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jan 29, 2024 11:20pm

mscolnick
mscolnick previously approved these changes Jan 29, 2024
@github-actions github-actions bot locked and limited conversation to collaborators Jan 29, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants