solara 1.30.1__py2.py3-none-any.whl → 1.32.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {solara-1.30.1.dist-info → solara-1.32.0.dist-info}/METADATA +12 -42
- solara-1.32.0.dist-info/RECORD +5 -0
- {solara-1.30.1.dist-info → solara-1.32.0.dist-info}/WHEEL +1 -1
- {solara/template/portal → solara-1.32.0.dist-info/licenses}/LICENSE +1 -1
- solara/__init__.py +0 -123
- solara/__main__.py +0 -734
- solara/alias.py +0 -6
- solara/autorouting.py +0 -545
- solara/cache.py +0 -294
- solara/checks.html +0 -71
- solara/checks.py +0 -224
- solara/comm.py +0 -28
- solara/components/__init__.py +0 -59
- solara/components/alert.py +0 -155
- solara/components/applayout.py +0 -393
- solara/components/button.py +0 -85
- solara/components/card.py +0 -87
- solara/components/checkbox.py +0 -50
- solara/components/code_highlight_css.py +0 -11
- solara/components/code_highlight_css.vue +0 -63
- solara/components/columns.py +0 -159
- solara/components/component_vue.py +0 -110
- solara/components/cross_filter.py +0 -335
- solara/components/dataframe.py +0 -546
- solara/components/datatable.py +0 -221
- solara/components/datatable.vue +0 -175
- solara/components/details.py +0 -21
- solara/components/download.vue +0 -35
- solara/components/echarts.py +0 -75
- solara/components/echarts.vue +0 -128
- solara/components/figure_altair.py +0 -39
- solara/components/file_browser.py +0 -182
- solara/components/file_download.py +0 -199
- solara/components/file_drop.py +0 -139
- solara/components/file_drop.vue +0 -83
- solara/components/file_list_widget.vue +0 -78
- solara/components/head.py +0 -27
- solara/components/head_tag.py +0 -49
- solara/components/head_tag.vue +0 -60
- solara/components/image.py +0 -173
- solara/components/input.py +0 -440
- solara/components/link.py +0 -55
- solara/components/markdown.py +0 -371
- solara/components/markdown_editor.py +0 -25
- solara/components/markdown_editor.vue +0 -362
- solara/components/matplotlib.py +0 -74
- solara/components/meta.py +0 -47
- solara/components/misc.py +0 -333
- solara/components/pivot_table.py +0 -258
- solara/components/pivot_table.vue +0 -158
- solara/components/progress.py +0 -47
- solara/components/select.py +0 -186
- solara/components/select.vue +0 -27
- solara/components/slider.py +0 -442
- solara/components/slider_date.vue +0 -56
- solara/components/spinner-solara.vue +0 -105
- solara/components/spinner.py +0 -30
- solara/components/sql_code.py +0 -33
- solara/components/sql_code.vue +0 -128
- solara/components/style.py +0 -105
- solara/components/switch.py +0 -68
- solara/components/tab_navigation.py +0 -37
- solara/components/title.py +0 -90
- solara/components/title.vue +0 -38
- solara/components/togglebuttons.py +0 -202
- solara/components/tooltip.py +0 -61
- solara/datatypes.py +0 -143
- solara/express.py +0 -241
- solara/hooks/__init__.py +0 -4
- solara/hooks/dataframe.py +0 -99
- solara/hooks/misc.py +0 -263
- solara/hooks/use_reactive.py +0 -129
- solara/hooks/use_thread.py +0 -129
- solara/kitchensink.py +0 -8
- solara/lab/__init__.py +0 -34
- solara/lab/components/__init__.py +0 -6
- solara/lab/components/chat.py +0 -203
- solara/lab/components/confirmation_dialog.py +0 -165
- solara/lab/components/cross_filter.py +0 -7
- solara/lab/components/input_date.py +0 -298
- solara/lab/components/menu.py +0 -181
- solara/lab/components/menu.vue +0 -38
- solara/lab/components/tabs.py +0 -274
- solara/lab/components/theming.py +0 -98
- solara/lab/components/theming.vue +0 -72
- solara/lab/hooks/__init__.py +0 -0
- solara/lab/hooks/dataframe.py +0 -12
- solara/lab/toestand.py +0 -3
- solara/lab/utils/__init__.py +0 -2
- solara/lab/utils/cookies.py +0 -5
- solara/lab/utils/dataframe.py +0 -115
- solara/lab/utils/headers.py +0 -5
- solara/layout.py +0 -44
- solara/minisettings.py +0 -133
- solara/py.typed +0 -0
- solara/reactive.py +0 -93
- solara/routing.py +0 -268
- solara/scope/__init__.py +0 -88
- solara/scope/types.py +0 -55
- solara/server/__init__.py +0 -0
- solara/server/app.py +0 -490
- solara/server/assets/custom.css +0 -1
- solara/server/assets/custom.js +0 -1
- solara/server/assets/favicon.png +0 -0
- solara/server/assets/favicon.svg +0 -5
- solara/server/assets/style.css +0 -1665
- solara/server/assets/theme-dark.css +0 -437
- solara/server/assets/theme-light.css +0 -420
- solara/server/assets/theme.js +0 -3
- solara/server/cdn_helper.py +0 -77
- solara/server/esm.py +0 -69
- solara/server/fastapi.py +0 -5
- solara/server/flask.py +0 -286
- solara/server/jupyter/__init__.py +0 -2
- solara/server/jupyter/cdn_handler.py +0 -28
- solara/server/jupyter/server_extension.py +0 -29
- solara/server/jupytertools.py +0 -46
- solara/server/kernel.py +0 -319
- solara/server/kernel_context.py +0 -396
- solara/server/patch.py +0 -552
- solara/server/reload.py +0 -242
- solara/server/server.py +0 -437
- solara/server/settings.py +0 -212
- solara/server/shell.py +0 -240
- solara/server/starlette.py +0 -597
- solara/server/static/ansi.js +0 -270
- solara/server/static/highlight-dark.css +0 -82
- solara/server/static/highlight.css +0 -43
- solara/server/static/main-vuetify.js +0 -260
- solara/server/static/main.js +0 -163
- solara/server/static/solara_bootstrap.py +0 -129
- solara/server/static/sun.svg +0 -23
- solara/server/static/webworker.js +0 -42
- solara/server/telemetry.py +0 -212
- solara/server/templates/index.html.j2 +0 -1
- solara/server/templates/loader-plain.css +0 -11
- solara/server/templates/loader-plain.html +0 -20
- solara/server/templates/loader-solara.css +0 -111
- solara/server/templates/loader-solara.html +0 -40
- solara/server/templates/plain.html +0 -82
- solara/server/templates/solara.html.j2 +0 -446
- solara/server/threaded.py +0 -75
- solara/server/utils.py +0 -30
- solara/server/websocket.py +0 -44
- solara/settings.py +0 -56
- solara/tasks.py +0 -847
- solara/template/button.py +0 -16
- solara/template/markdown.py +0 -42
- solara/template/portal/.flake8 +0 -6
- solara/template/portal/.pre-commit-config.yaml +0 -28
- solara/template/portal/Procfile +0 -7
- solara/template/portal/mypy.ini +0 -3
- solara/template/portal/pyproject.toml +0 -26
- solara/template/portal/solara_portal/__init__.py +0 -3
- solara/template/portal/solara_portal/components/__init__.py +0 -2
- solara/template/portal/solara_portal/components/article.py +0 -28
- solara/template/portal/solara_portal/components/data.py +0 -28
- solara/template/portal/solara_portal/components/header.py +0 -6
- solara/template/portal/solara_portal/components/layout.py +0 -6
- solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +0 -85
- solara/template/portal/solara_portal/content/articles/substiterat-vati.md +0 -70
- solara/template/portal/solara_portal/data.py +0 -60
- solara/template/portal/solara_portal/pages/__init__.py +0 -67
- solara/template/portal/solara_portal/pages/article/__init__.py +0 -26
- solara/template/portal/solara_portal/pages/tabular.py +0 -29
- solara/template/portal/solara_portal/pages/viz/__init__.py +0 -69
- solara/template/portal/solara_portal/pages/viz/overview.py +0 -14
- solara/test/__init__.py +0 -0
- solara/test/pytest_plugin.py +0 -698
- solara/toestand.py +0 -772
- solara/util.py +0 -308
- solara/website/__init__.py +0 -0
- solara/website/assets/custom.css +0 -462
- solara/website/assets/images/logo-small.png +0 -0
- solara/website/assets/images/logo.svg +0 -17
- solara/website/assets/images/logo_white.svg +0 -50
- solara/website/assets/theme.js +0 -8
- solara/website/components/__init__.py +0 -5
- solara/website/components/algolia.vue +0 -24
- solara/website/components/algolia_api.vue +0 -157
- solara/website/components/docs.py +0 -118
- solara/website/components/header.py +0 -72
- solara/website/components/hero.py +0 -15
- solara/website/components/mailchimp.py +0 -12
- solara/website/components/mailchimp.vue +0 -47
- solara/website/components/markdown.py +0 -30
- solara/website/components/notebook.py +0 -172
- solara/website/pages/__init__.py +0 -575
- solara/website/pages/apps/__init__.py +0 -16
- solara/website/pages/apps/authorization/__init__.py +0 -118
- solara/website/pages/apps/authorization/admin.py +0 -12
- solara/website/pages/apps/authorization/users.py +0 -12
- solara/website/pages/apps/jupyter-dashboard-1.py +0 -116
- solara/website/pages/apps/layout-demo.py +0 -40
- solara/website/pages/apps/multipage/__init__.py +0 -38
- solara/website/pages/apps/multipage/page1.py +0 -26
- solara/website/pages/apps/multipage/page2.py +0 -34
- solara/website/pages/apps/scatter.py +0 -136
- solara/website/pages/apps/scrolling.py +0 -63
- solara/website/pages/apps/tutorial-streamlit.py +0 -18
- solara/website/pages/changelog/__init__.py +0 -8
- solara/website/pages/changelog/changelog.md +0 -195
- solara/website/pages/contact/__init__.py +0 -8
- solara/website/pages/contact/contact.md +0 -17
- solara/website/pages/doc_use_download.py +0 -85
- solara/website/pages/documentation/__init__.py +0 -184
- solara/website/pages/documentation/advanced/__init__.py +0 -9
- solara/website/pages/documentation/advanced/content/00-overview.md +0 -1
- solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +0 -6
- solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +0 -196
- solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +0 -125
- solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +0 -154
- solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +0 -69
- solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +0 -49
- solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +0 -124
- solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +0 -10
- solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +0 -35
- solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +0 -42
- solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +0 -28
- solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +0 -108
- solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +0 -23
- solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +0 -7
- solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +0 -166
- solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +0 -18
- solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +0 -240
- solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +0 -86
- solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +0 -12
- solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +0 -1
- solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +0 -171
- solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
- solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +0 -45
- solara/website/pages/documentation/advanced/content/40-development/10-setup.md +0 -76
- solara/website/pages/documentation/api/__init__.py +0 -19
- solara/website/pages/documentation/api/cross_filter/__init__.py +0 -9
- solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +0 -23
- solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +0 -22
- solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +0 -22
- solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +0 -22
- solara/website/pages/documentation/api/hooks/__init__.py +0 -9
- solara/website/pages/documentation/api/hooks/use_cross_filter.py +0 -25
- solara/website/pages/documentation/api/hooks/use_dark_effective.py +0 -13
- solara/website/pages/documentation/api/hooks/use_effect.md +0 -43
- solara/website/pages/documentation/api/hooks/use_effect.py +0 -9
- solara/website/pages/documentation/api/hooks/use_exception.py +0 -33
- solara/website/pages/documentation/api/hooks/use_memo.md +0 -16
- solara/website/pages/documentation/api/hooks/use_memo.py +0 -9
- solara/website/pages/documentation/api/hooks/use_previous.py +0 -32
- solara/website/pages/documentation/api/hooks/use_reactive.py +0 -15
- solara/website/pages/documentation/api/hooks/use_state.py +0 -11
- solara/website/pages/documentation/api/hooks/use_state_or_update.py +0 -68
- solara/website/pages/documentation/api/hooks/use_thread.md +0 -58
- solara/website/pages/documentation/api/hooks/use_thread.py +0 -44
- solara/website/pages/documentation/api/hooks/use_trait_observe.py +0 -13
- solara/website/pages/documentation/api/routing/__init__.py +0 -9
- solara/website/pages/documentation/api/routing/generate_routes.py +0 -11
- solara/website/pages/documentation/api/routing/generate_routes_directory.py +0 -11
- solara/website/pages/documentation/api/routing/resolve_path.py +0 -36
- solara/website/pages/documentation/api/routing/route.py +0 -32
- solara/website/pages/documentation/api/routing/use_route.py +0 -80
- solara/website/pages/documentation/api/routing/use_router.py +0 -15
- solara/website/pages/documentation/api/utilities/__init__.py +0 -9
- solara/website/pages/documentation/api/utilities/component_vue.py +0 -11
- solara/website/pages/documentation/api/utilities/computed.py +0 -16
- solara/website/pages/documentation/api/utilities/display.py +0 -15
- solara/website/pages/documentation/api/utilities/get_kernel_id.py +0 -16
- solara/website/pages/documentation/api/utilities/get_session_id.py +0 -16
- solara/website/pages/documentation/api/utilities/memoize.py +0 -36
- solara/website/pages/documentation/api/utilities/on_kernel_start.py +0 -27
- solara/website/pages/documentation/api/utilities/reactive.py +0 -15
- solara/website/pages/documentation/api/utilities/widget.py +0 -104
- solara/website/pages/documentation/components/__init__.py +0 -12
- solara/website/pages/documentation/components/advanced/__init__.py +0 -9
- solara/website/pages/documentation/components/advanced/link.py +0 -28
- solara/website/pages/documentation/components/advanced/meta.py +0 -21
- solara/website/pages/documentation/components/advanced/style.py +0 -44
- solara/website/pages/documentation/components/common.py +0 -9
- solara/website/pages/documentation/components/data/__init__.py +0 -9
- solara/website/pages/documentation/components/data/dataframe.py +0 -44
- solara/website/pages/documentation/components/data/pivot_table.py +0 -81
- solara/website/pages/documentation/components/enterprise/__init__.py +0 -9
- solara/website/pages/documentation/components/enterprise/avatar.py +0 -19
- solara/website/pages/documentation/components/enterprise/avatar_menu.py +0 -20
- solara/website/pages/documentation/components/input/__init__.py +0 -9
- solara/website/pages/documentation/components/input/button.py +0 -22
- solara/website/pages/documentation/components/input/checkbox.py +0 -12
- solara/website/pages/documentation/components/input/file_browser.py +0 -33
- solara/website/pages/documentation/components/input/file_drop.py +0 -75
- solara/website/pages/documentation/components/input/input.py +0 -18
- solara/website/pages/documentation/components/input/select.py +0 -21
- solara/website/pages/documentation/components/input/slider.py +0 -28
- solara/website/pages/documentation/components/input/switch.py +0 -12
- solara/website/pages/documentation/components/input/togglebuttons.py +0 -20
- solara/website/pages/documentation/components/lab/__init__.py +0 -9
- solara/website/pages/documentation/components/lab/chat.py +0 -108
- solara/website/pages/documentation/components/lab/confirmation_dialog.py +0 -55
- solara/website/pages/documentation/components/lab/cookies_headers.py +0 -48
- solara/website/pages/documentation/components/lab/input_date.py +0 -19
- solara/website/pages/documentation/components/lab/menu.py +0 -21
- solara/website/pages/documentation/components/lab/tab.py +0 -24
- solara/website/pages/documentation/components/lab/tabs.py +0 -44
- solara/website/pages/documentation/components/lab/task.py +0 -12
- solara/website/pages/documentation/components/lab/theming.py +0 -72
- solara/website/pages/documentation/components/lab/use_task.py +0 -12
- solara/website/pages/documentation/components/layout/__init__.py +0 -9
- solara/website/pages/documentation/components/layout/app_bar.py +0 -15
- solara/website/pages/documentation/components/layout/app_bar_title.py +0 -15
- solara/website/pages/documentation/components/layout/app_layout.py +0 -23
- solara/website/pages/documentation/components/layout/card.py +0 -14
- solara/website/pages/documentation/components/layout/card_actions.py +0 -15
- solara/website/pages/documentation/components/layout/column.py +0 -29
- solara/website/pages/documentation/components/layout/columns.py +0 -26
- solara/website/pages/documentation/components/layout/columns_responsive.py +0 -67
- solara/website/pages/documentation/components/layout/griddraggable.py +0 -61
- solara/website/pages/documentation/components/layout/gridfixed.py +0 -21
- solara/website/pages/documentation/components/layout/hbox.py +0 -17
- solara/website/pages/documentation/components/layout/row.py +0 -29
- solara/website/pages/documentation/components/layout/sidebar.py +0 -23
- solara/website/pages/documentation/components/layout/vbox.py +0 -19
- solara/website/pages/documentation/components/output/__init__.py +0 -9
- solara/website/pages/documentation/components/output/file_download.py +0 -12
- solara/website/pages/documentation/components/output/html.py +0 -22
- solara/website/pages/documentation/components/output/image.py +0 -12
- solara/website/pages/documentation/components/output/markdown.py +0 -59
- solara/website/pages/documentation/components/output/markdown_editor.py +0 -53
- solara/website/pages/documentation/components/output/sql_code.py +0 -84
- solara/website/pages/documentation/components/output/tooltip.py +0 -12
- solara/website/pages/documentation/components/page/__init__.py +0 -9
- solara/website/pages/documentation/components/page/head.py +0 -19
- solara/website/pages/documentation/components/page/title.py +0 -28
- solara/website/pages/documentation/components/status/__init__.py +0 -9
- solara/website/pages/documentation/components/status/error.py +0 -40
- solara/website/pages/documentation/components/status/info.py +0 -40
- solara/website/pages/documentation/components/status/progress.py +0 -10
- solara/website/pages/documentation/components/status/spinner.py +0 -10
- solara/website/pages/documentation/components/status/success.py +0 -40
- solara/website/pages/documentation/components/status/warning.py +0 -47
- solara/website/pages/documentation/components/viz/__init__.py +0 -9
- solara/website/pages/documentation/components/viz/altair.py +0 -44
- solara/website/pages/documentation/components/viz/echarts.py +0 -78
- solara/website/pages/documentation/components/viz/matplotlib.py +0 -32
- solara/website/pages/documentation/components/viz/plotly.py +0 -63
- solara/website/pages/documentation/components/viz/plotly_express.py +0 -41
- solara/website/pages/documentation/examples/__init__.py +0 -52
- solara/website/pages/documentation/examples/ai/__init__.py +0 -10
- solara/website/pages/documentation/examples/ai/chatbot.py +0 -96
- solara/website/pages/documentation/examples/ai/tokenizer.py +0 -106
- solara/website/pages/documentation/examples/basics/__init__.py +0 -2
- solara/website/pages/documentation/examples/basics/sine.py +0 -28
- solara/website/pages/documentation/examples/fullscreen/__init__.py +0 -9
- solara/website/pages/documentation/examples/fullscreen/authorization.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/layout_demo.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/multipage.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/scatter.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/scrolling.py +0 -3
- solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +0 -3
- solara/website/pages/documentation/examples/general/__init__.py +0 -9
- solara/website/pages/documentation/examples/general/custom_storage.py +0 -69
- solara/website/pages/documentation/examples/general/deploy_model.py +0 -114
- solara/website/pages/documentation/examples/general/live_update.py +0 -38
- solara/website/pages/documentation/examples/general/login_oauth.py +0 -76
- solara/website/pages/documentation/examples/general/mycard.vue +0 -58
- solara/website/pages/documentation/examples/general/pokemon_search.py +0 -51
- solara/website/pages/documentation/examples/general/vue_component.py +0 -50
- solara/website/pages/documentation/examples/ipycanvas.py +0 -49
- solara/website/pages/documentation/examples/libraries/__init__.py +0 -9
- solara/website/pages/documentation/examples/libraries/altair.py +0 -63
- solara/website/pages/documentation/examples/libraries/bqplot.py +0 -39
- solara/website/pages/documentation/examples/libraries/ipyleaflet.py +0 -32
- solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +0 -65
- solara/website/pages/documentation/examples/utilities/__init__.py +0 -9
- solara/website/pages/documentation/examples/utilities/calculator.py +0 -157
- solara/website/pages/documentation/examples/utilities/countdown_timer.py +0 -64
- solara/website/pages/documentation/examples/utilities/todo.py +0 -195
- solara/website/pages/documentation/examples/visualization/__init__.py +0 -6
- solara/website/pages/documentation/examples/visualization/annotator.py +0 -68
- solara/website/pages/documentation/examples/visualization/linked_views.py +0 -84
- solara/website/pages/documentation/examples/visualization/plotly.py +0 -43
- solara/website/pages/documentation/faq/__init__.py +0 -12
- solara/website/pages/documentation/faq/content/99-faq.md +0 -76
- solara/website/pages/documentation/getting_started/__init__.py +0 -9
- solara/website/pages/documentation/getting_started/content/00-quickstart.md +0 -89
- solara/website/pages/documentation/getting_started/content/01-introduction.md +0 -125
- solara/website/pages/documentation/getting_started/content/02-installing.md +0 -85
- solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +0 -14
- solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +0 -13
- solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +0 -89
- solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +0 -124
- solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +0 -146
- solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +0 -144
- solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +0 -64
- solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
- solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +0 -445
- solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +0 -1000
- solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +0 -11
- solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +0 -223
- solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +0 -88
- solara/website/pages/documentation/getting_started/content/06-reference/00-overview.md +0 -3
- solara/website/pages/documentation/getting_started/content/06-reference/40-static_files.md +0 -31
- solara/website/pages/documentation/getting_started/content/06-reference/41-asset-files.md +0 -36
- solara/website/pages/documentation/getting_started/content/06-reference/60-static-site-generation.md +0 -59
- solara/website/pages/documentation/getting_started/content/06-reference/70-search.md +0 -34
- solara/website/pages/documentation/getting_started/content/06-reference/80-reloading.md +0 -34
- solara/website/pages/documentation/getting_started/content/06-reference/90-notebook-support.md +0 -7
- solara/website/pages/documentation/getting_started/content/06-reference/95-caching.md +0 -148
- solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +0 -7
- solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +0 -273
- solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +0 -80
- solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +0 -7
- solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +0 -26
- solara/website/pages/docutils.py +0 -38
- solara/website/pages/showcase/__init__.py +0 -105
- solara/website/pages/showcase/domino_code_assist.py +0 -60
- solara/website/pages/showcase/planeto_tessa.py +0 -19
- solara/website/pages/showcase/solara_dev.py +0 -54
- solara/website/pages/showcase/solarathon_2023_team_2.py +0 -22
- solara/website/pages/showcase/solarathon_2023_team_4.py +0 -22
- solara/website/pages/showcase/solarathon_2023_team_5.py +0 -23
- solara/website/pages/showcase/solarathon_2023_team_6.py +0 -34
- solara/website/pages/showcase/wanderlust.py +0 -27
- solara/website/public/beach.jpeg +0 -0
- solara/website/public/logo.svg +0 -6
- solara/website/public/social/discord.svg +0 -1
- solara/website/public/social/github.svg +0 -1
- solara/website/public/social/twitter.svg +0 -3
- solara/website/public/success.html +0 -25
- solara/website/templates/index.html.j2 +0 -117
- solara/website/utils.py +0 -51
- solara/widgets/__init__.py +0 -1
- solara/widgets/vue/gridlayout.vue +0 -110
- solara/widgets/vue/html.vue +0 -4
- solara/widgets/vue/navigator.vue +0 -104
- solara/widgets/vue/vegalite.vue +0 -115
- solara/widgets/widgets.py +0 -65
- solara-1.30.1.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -7
- solara-1.30.1.data/data/etc/jupyter/jupyter_server_config.d/solara.json +0 -7
- solara-1.30.1.dist-info/RECORD +0 -437
- solara-1.30.1.dist-info/entry_points.txt +0 -5
- /solara-1.30.1.dist-info/licenses/LICENSE → /LICENSE +0 -0
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# AvatarMenu
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
try:
|
|
6
|
-
from solara_enterprise import auth
|
|
7
|
-
except ImportError:
|
|
8
|
-
auth = None
|
|
9
|
-
from solara.website.components import NoPage
|
|
10
|
-
from solara.website.utils import apidoc
|
|
11
|
-
|
|
12
|
-
title = "AvatarMenu"
|
|
13
|
-
|
|
14
|
-
Page = NoPage
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if auth:
|
|
18
|
-
__doc__ += apidoc(auth.AvatarMenu.f) # type: ignore
|
|
19
|
-
else:
|
|
20
|
-
__doc__ += "solara-enterprise not installed."
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Button
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
from solara.website.utils import apidoc
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@solara.component
|
|
10
|
-
def Page():
|
|
11
|
-
count, set_count = solara.use_state(0)
|
|
12
|
-
|
|
13
|
-
def increment():
|
|
14
|
-
set_count(count + 1)
|
|
15
|
-
|
|
16
|
-
with solara.VBox() as main:
|
|
17
|
-
with solara.HBox():
|
|
18
|
-
solara.Button(label=f"Clicked {count} times", on_click=increment, icon_name="mdi-thumb-up")
|
|
19
|
-
return main
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
__doc__ += apidoc(solara.Button.f) # type: ignore
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"""# FileBrowser
|
|
2
|
-
|
|
3
|
-
"""
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Optional, cast
|
|
6
|
-
|
|
7
|
-
import solara
|
|
8
|
-
from solara.website.utils import apidoc
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@solara.component
|
|
12
|
-
def Page():
|
|
13
|
-
file, set_file = solara.use_state(cast(Optional[Path], None))
|
|
14
|
-
path, set_path = solara.use_state(cast(Optional[Path], None))
|
|
15
|
-
directory, set_directory = solara.use_state(Path("~").expanduser())
|
|
16
|
-
|
|
17
|
-
with solara.VBox() as main:
|
|
18
|
-
can_select = solara.ui_checkbox("Enable select")
|
|
19
|
-
|
|
20
|
-
def reset_path():
|
|
21
|
-
set_path(None)
|
|
22
|
-
set_file(None)
|
|
23
|
-
|
|
24
|
-
# reset path and file when can_select changes
|
|
25
|
-
solara.use_memo(reset_path, [can_select])
|
|
26
|
-
solara.FileBrowser(directory, on_directory_change=set_directory, on_path_select=set_path, on_file_open=set_file, can_select=can_select)
|
|
27
|
-
solara.Info(f"You are in directory: {directory}")
|
|
28
|
-
solara.Info(f"You selected path: {path}")
|
|
29
|
-
solara.Info(f"You opened file: {file}")
|
|
30
|
-
return main
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
__doc__ += apidoc(solara.FileBrowser.f) # type: ignore
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# FileDrop components
|
|
3
|
-
|
|
4
|
-
FileDrop comes in two flavours:
|
|
5
|
-
|
|
6
|
-
* `FileDrop` for a single file upload
|
|
7
|
-
* `FileDropMultiple` which allows for multiple file upload
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"""
|
|
11
|
-
import textwrap
|
|
12
|
-
from typing import List, cast
|
|
13
|
-
|
|
14
|
-
import solara
|
|
15
|
-
from solara.components.file_drop import FileInfo
|
|
16
|
-
from solara.website.utils import apidoc
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@solara.component
|
|
20
|
-
def FileDropMultipleDemo():
|
|
21
|
-
content, set_content = solara.use_state(cast(List[bytes], []))
|
|
22
|
-
filename, set_filename = solara.use_state(cast(List[str], []))
|
|
23
|
-
size, set_size = solara.use_state(cast(List[int], []))
|
|
24
|
-
|
|
25
|
-
def on_file(files: List[FileInfo]):
|
|
26
|
-
set_filename([f["name"] for f in files])
|
|
27
|
-
set_size([f["size"] for f in files])
|
|
28
|
-
set_content([f["file_obj"].read(100) for f in files])
|
|
29
|
-
|
|
30
|
-
solara.FileDropMultiple(
|
|
31
|
-
label="Drag and drop files(s) here to read the first 100 bytes.",
|
|
32
|
-
on_file=on_file,
|
|
33
|
-
lazy=True, # We will only read the first 100 bytes
|
|
34
|
-
)
|
|
35
|
-
if content:
|
|
36
|
-
solara.Info(f"Number of uploaded files: {len(filename)}")
|
|
37
|
-
for f, s, c in zip(filename, size, content):
|
|
38
|
-
solara.Info(f"File {f} has total length: {s}\n, first 100 bytes:")
|
|
39
|
-
solara.Preformatted("\n".join(textwrap.wrap(repr(c))))
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@solara.component
|
|
43
|
-
def FileDropDemo():
|
|
44
|
-
content, set_content = solara.use_state(b"")
|
|
45
|
-
filename, set_filename = solara.use_state("")
|
|
46
|
-
size, set_size = solara.use_state(0)
|
|
47
|
-
|
|
48
|
-
def on_file(f: FileInfo):
|
|
49
|
-
set_filename(f["name"])
|
|
50
|
-
set_size(f["size"])
|
|
51
|
-
set_content(f["file_obj"].read(100))
|
|
52
|
-
|
|
53
|
-
solara.FileDrop(
|
|
54
|
-
label="Drag and drop a file here to read the first 100 bytes.",
|
|
55
|
-
on_file=on_file,
|
|
56
|
-
lazy=True, # We will only read the first 100 bytes
|
|
57
|
-
)
|
|
58
|
-
if content:
|
|
59
|
-
solara.Info(f"File {filename} has total length: {size}\n, first 100 bytes:")
|
|
60
|
-
solara.Preformatted("\n".join(textwrap.wrap(repr(content))))
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
@solara.component
|
|
64
|
-
def Page():
|
|
65
|
-
with solara.Row():
|
|
66
|
-
with solara.Card(title="FileDrop"):
|
|
67
|
-
FileDropDemo()
|
|
68
|
-
with solara.Card(title="FileDropMultiple"):
|
|
69
|
-
FileDropMultipleDemo()
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
__doc__ += "# FileDrop"
|
|
73
|
-
__doc__ += apidoc(solara.FileDrop.f) # type: ignore
|
|
74
|
-
__doc__ += "# FileDropMultiple"
|
|
75
|
-
__doc__ += apidoc(solara.FileDropMultiple.f) # type: ignore
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"""# Input fields
|
|
2
|
-
|
|
3
|
-
This page contains all the input fields available in Solara.
|
|
4
|
-
|
|
5
|
-
# InputText
|
|
6
|
-
"""
|
|
7
|
-
import solara
|
|
8
|
-
from solara.website.components import NoPage
|
|
9
|
-
from solara.website.utils import apidoc
|
|
10
|
-
|
|
11
|
-
Page = NoPage
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
__doc__ += apidoc(solara.InputText.f) # type: ignore
|
|
15
|
-
__doc__ += "# InputFloat"
|
|
16
|
-
__doc__ += apidoc(solara.InputFloat.f) # type: ignore
|
|
17
|
-
__doc__ += "# InputInt"
|
|
18
|
-
__doc__ += apidoc(solara.InputInt.f) # type: ignore
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Select components
|
|
3
|
-
|
|
4
|
-
Select comes in two flavours:
|
|
5
|
-
|
|
6
|
-
* `Select` for a singular selection
|
|
7
|
-
* `SelectMultiple` which allows for multiple selections
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"""
|
|
11
|
-
import solara
|
|
12
|
-
from solara.website.components import NoPage
|
|
13
|
-
from solara.website.utils import apidoc
|
|
14
|
-
|
|
15
|
-
Page = NoPage
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
__doc__ += "# Select"
|
|
19
|
-
__doc__ += apidoc(solara.Select.f) # type: ignore
|
|
20
|
-
__doc__ += "# SelectMultiple"
|
|
21
|
-
__doc__ += apidoc(solara.SelectMultiple.f) # type: ignore
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Sliders
|
|
3
|
-
|
|
4
|
-
To support proper typechecks, we have multiple slider (all wrapping the ipyvuetify sliders).
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
import solara
|
|
9
|
-
from solara.website.components import NoPage
|
|
10
|
-
from solara.website.utils import apidoc
|
|
11
|
-
|
|
12
|
-
Page = NoPage
|
|
13
|
-
|
|
14
|
-
__doc__ += "# SliderInt"
|
|
15
|
-
__doc__ += apidoc(solara.SliderInt.f) # type: ignore
|
|
16
|
-
__doc__ += "# SliderRangeInt"
|
|
17
|
-
__doc__ += apidoc(solara.SliderRangeInt.f) # type: ignore
|
|
18
|
-
|
|
19
|
-
__doc__ += "# SliderFloat"
|
|
20
|
-
__doc__ += apidoc(solara.SliderFloat.f) # type: ignore
|
|
21
|
-
__doc__ += "# SliderRangeFloat"
|
|
22
|
-
__doc__ += apidoc(solara.SliderRangeFloat.f) # type: ignore
|
|
23
|
-
|
|
24
|
-
__doc__ += "# SliderValue"
|
|
25
|
-
__doc__ += apidoc(solara.SliderValue.f) # type: ignore
|
|
26
|
-
|
|
27
|
-
__doc__ += "# SliderDate"
|
|
28
|
-
__doc__ += apidoc(solara.SliderDate.f) # type: ignore
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# ToggleButtons
|
|
3
|
-
|
|
4
|
-
ToggleButtons are in two flavours, for single, and for multiple selections.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
import solara
|
|
9
|
-
from solara.website.components import NoPage
|
|
10
|
-
from solara.website.utils import apidoc
|
|
11
|
-
|
|
12
|
-
title = "ToggleButtons"
|
|
13
|
-
|
|
14
|
-
Page = NoPage
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
__doc__ += "# ToggleButtonsSingle"
|
|
18
|
-
__doc__ += apidoc(solara.ToggleButtonsSingle.f) # type: ignore
|
|
19
|
-
__doc__ += "# ToggleButtonsMultiple"
|
|
20
|
-
__doc__ += apidoc(solara.ToggleButtonsMultiple.f) # type: ignore
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Chat Components
|
|
3
|
-
|
|
4
|
-
These are the components available in Solara to build chat interfaces.
|
|
5
|
-
Although they can be used together to create a pre-built chat interface, inserting custom components is also possible.
|
|
6
|
-
For an example of how to use a custom message component, see the bottom of the page.
|
|
7
|
-
|
|
8
|
-
Also check out the [Chatbot](/documentation/examples/ai/chatbot) example.
|
|
9
|
-
|
|
10
|
-
# ChatBox
|
|
11
|
-
"""
|
|
12
|
-
import solara
|
|
13
|
-
from solara.website.components import NoPage
|
|
14
|
-
from solara.website.utils import apidoc
|
|
15
|
-
|
|
16
|
-
title = "Chat Components"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
__doc__ += apidoc(solara.lab.components.chat.ChatBox.f) # type: ignore
|
|
20
|
-
__doc__ += "# ChatInput"
|
|
21
|
-
__doc__ += apidoc(solara.lab.components.chat.ChatInput.f) # type: ignore
|
|
22
|
-
__doc__ += "# ChatMessage"
|
|
23
|
-
__doc__ += apidoc(solara.lab.components.chat.ChatMessage.f) # type: ignore
|
|
24
|
-
__doc__ += """## Different Message Styles
|
|
25
|
-
|
|
26
|
-
The `ChatMessage` component has a few different styles available. These are shown below.
|
|
27
|
-
|
|
28
|
-
```solara
|
|
29
|
-
import solara
|
|
30
|
-
|
|
31
|
-
@solara.component
|
|
32
|
-
def Page():
|
|
33
|
-
with solara.Column():
|
|
34
|
-
solara.lab.ChatMessage(["Default"])
|
|
35
|
-
solara.lab.ChatMessage(["`color`"], color="#ff991f")
|
|
36
|
-
solara.lab.ChatMessage(["`avatar_background_color`"], avatar_background_color="success")
|
|
37
|
-
solara.lab.ChatMessage(["`border_radius='20px'`"], border_radius="20px")
|
|
38
|
-
solara.lab.ChatMessage(["`notch=True`"], notch=True)
|
|
39
|
-
```
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
__doc__ += """
|
|
43
|
-
# A Basic Example
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
```solara
|
|
47
|
-
import solara
|
|
48
|
-
|
|
49
|
-
messages = solara.reactive([])
|
|
50
|
-
name = solara.reactive("User")
|
|
51
|
-
|
|
52
|
-
def send(new_message):
|
|
53
|
-
messages.set([
|
|
54
|
-
*messages.value,
|
|
55
|
-
{"user": True, "name": name.value, "message": new_message,},
|
|
56
|
-
])
|
|
57
|
-
|
|
58
|
-
@solara.component
|
|
59
|
-
def Page():
|
|
60
|
-
solara.InputText("username", value=name)
|
|
61
|
-
with solara.Column(style={"min-height": "50vh"}):
|
|
62
|
-
with solara.lab.ChatBox():
|
|
63
|
-
for item in messages.value:
|
|
64
|
-
with solara.lab.ChatMessage(
|
|
65
|
-
user=item["user"],
|
|
66
|
-
name=item["name"],
|
|
67
|
-
):
|
|
68
|
-
solara.Markdown(item["message"])
|
|
69
|
-
solara.lab.ChatInput(send_callback=send)
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
# A Custom Message Component
|
|
73
|
-
|
|
74
|
-
```solara
|
|
75
|
-
import solara
|
|
76
|
-
|
|
77
|
-
messages = solara.reactive([])
|
|
78
|
-
|
|
79
|
-
def send(new_message):
|
|
80
|
-
messages.set([
|
|
81
|
-
*messages.value,
|
|
82
|
-
{"name": "User", "message": new_message},
|
|
83
|
-
])
|
|
84
|
-
|
|
85
|
-
@solara.component
|
|
86
|
-
def CustomMessage(
|
|
87
|
-
message,
|
|
88
|
-
name = "User",
|
|
89
|
-
):
|
|
90
|
-
with solara.Column(gap=0):
|
|
91
|
-
with solara.Row():
|
|
92
|
-
solara.Markdown(f"**{name}**: {message}")
|
|
93
|
-
solara.v.Divider(style_="margin: 0;")
|
|
94
|
-
|
|
95
|
-
@solara.component
|
|
96
|
-
def Page():
|
|
97
|
-
with solara.Column(style={"min-height": "50vh"}):
|
|
98
|
-
with solara.lab.ChatBox():
|
|
99
|
-
for item in messages.value:
|
|
100
|
-
CustomMessage(
|
|
101
|
-
message=item["message"],
|
|
102
|
-
name=item["name"],
|
|
103
|
-
)
|
|
104
|
-
solara.lab.ChatInput(send_callback=send)
|
|
105
|
-
```
|
|
106
|
-
"""
|
|
107
|
-
|
|
108
|
-
Page = NoPage
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# ConfirmationDialog
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from typing import Union
|
|
7
|
-
|
|
8
|
-
import solara
|
|
9
|
-
from solara.lab.components.confirmation_dialog import ConfirmationDialog
|
|
10
|
-
from solara.website.utils import apidoc
|
|
11
|
-
|
|
12
|
-
title = "ConfirmationDialog"
|
|
13
|
-
users = solara.reactive("Alice Bob Cindy Dirk Eve Fred".split())
|
|
14
|
-
user_to_be_deleted: solara.Reactive[Union[str, None]] = solara.reactive(None)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def ask_to_delete_user(user):
|
|
18
|
-
user_to_be_deleted.value = user
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def clear_user_to_be_deleted():
|
|
22
|
-
user_to_be_deleted.value = None
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def delete_user():
|
|
26
|
-
users.set([u for u in users.value if u != user_to_be_deleted.value])
|
|
27
|
-
clear_user_to_be_deleted()
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
@solara.component
|
|
31
|
-
def Page():
|
|
32
|
-
"""Create a list of users with a button to delete them.
|
|
33
|
-
|
|
34
|
-
A confirmation dialog will pop up first before deletion."""
|
|
35
|
-
solara.Markdown("#### Users:")
|
|
36
|
-
with solara.Column(style={"max-width": "300px"}):
|
|
37
|
-
for user in users.value:
|
|
38
|
-
with solara.Row(style={"align-items": "center"}):
|
|
39
|
-
solara.Text(user)
|
|
40
|
-
solara.v.Spacer()
|
|
41
|
-
solara.Button(icon_name="mdi-delete", on_click=lambda user=user: ask_to_delete_user(user), icon=True)
|
|
42
|
-
if not users.value:
|
|
43
|
-
solara.Text("(no users left)")
|
|
44
|
-
|
|
45
|
-
with ConfirmationDialog(
|
|
46
|
-
user_to_be_deleted.value is not None,
|
|
47
|
-
on_ok=delete_user,
|
|
48
|
-
on_close=clear_user_to_be_deleted,
|
|
49
|
-
ok="Ok, Delete",
|
|
50
|
-
title="Delete user",
|
|
51
|
-
):
|
|
52
|
-
solara.Markdown(f"Are you sure you want to delete user **{user_to_be_deleted.value}**?")
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
__doc__ += apidoc(solara.lab.components.confirmation_dialog.ConfirmationDialog.f) # type: ignore
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Cookies and Headers
|
|
3
|
-
|
|
4
|
-
## Cookies
|
|
5
|
-
|
|
6
|
-
Solara provides access to cookies through `solara.lab.cookies`.
|
|
7
|
-
|
|
8
|
-
```python
|
|
9
|
-
cookies: Reactive[Optional[Dict[str, str]]] = reactive(cast(Optional[Dict[str, str]], None))
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
This is a reactive object that can be used to read the cookies transferred with the the initial request sent to the server by the client.
|
|
13
|
-
Thus it is possible to access also HTTPOnly cookies. The cookies will be updated whenever the client sends a new request to the server,
|
|
14
|
-
i.e. only when the client connects to a kernel.
|
|
15
|
-
|
|
16
|
-
The cookies are read into a dictionary with the cookie names as keys and the cookie values as values.
|
|
17
|
-
|
|
18
|
-
## Headers
|
|
19
|
-
|
|
20
|
-
Solara provides access to headers in the form of `solara.lab.headers`.
|
|
21
|
-
|
|
22
|
-
```python
|
|
23
|
-
headers: Reactive[Optional[Dict[str, List[str]]]] = reactive(cast(Optional[Dict[str, List[str]]], None))
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
`headers` concatenates the values of multiple header fields with the same name into a list of strings. However, it is still possible that multiple
|
|
27
|
-
values are present in one field already in the request, in which case one string will contain multiple values. Unfortunately reversing this is
|
|
28
|
-
highly non-trivial.
|
|
29
|
-
|
|
30
|
-
Note that the header field names are all lower-case.
|
|
31
|
-
|
|
32
|
-
```solara
|
|
33
|
-
import solara
|
|
34
|
-
from solara.lab import headers
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
@solara.component
|
|
38
|
-
def Page():
|
|
39
|
-
solara.Markdown(f"Your 'user-agent' is: {headers.value['user-agent']}")
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
from solara.website.components import NoPage
|
|
46
|
-
|
|
47
|
-
title = "Cookies and Headers"
|
|
48
|
-
Page = NoPage
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# InputDate
|
|
3
|
-
|
|
4
|
-
This page contains the two variants of datepickers available in solara
|
|
5
|
-
|
|
6
|
-
# InputDate
|
|
7
|
-
"""
|
|
8
|
-
import solara
|
|
9
|
-
from solara.website.components import NoPage
|
|
10
|
-
from solara.website.utils import apidoc
|
|
11
|
-
|
|
12
|
-
title = "InputDate"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
__doc__ += apidoc(solara.lab.components.input_date.InputDate.f) # type: ignore
|
|
16
|
-
__doc__ += "# InputDateRange"
|
|
17
|
-
__doc__ += apidoc(solara.lab.components.input_date.InputDateRange.f) # type: ignore
|
|
18
|
-
|
|
19
|
-
Page = NoPage
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Menus
|
|
3
|
-
|
|
4
|
-
This page contains the various kinds of menu elements available to use in solara
|
|
5
|
-
|
|
6
|
-
# Menu
|
|
7
|
-
"""
|
|
8
|
-
import solara
|
|
9
|
-
from solara.website.components import NoPage
|
|
10
|
-
from solara.website.utils import apidoc
|
|
11
|
-
|
|
12
|
-
title = "Menus"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
__doc__ += apidoc(solara.lab.components.menu.Menu.f) # type: ignore
|
|
16
|
-
__doc__ += "# ClickMenu"
|
|
17
|
-
__doc__ += apidoc(solara.lab.components.menu.ClickMenu.f) # type: ignore
|
|
18
|
-
__doc__ += "# ContextMenu"
|
|
19
|
-
__doc__ += apidoc(solara.lab.components.menu.ContextMenu.f) # type: ignore
|
|
20
|
-
|
|
21
|
-
Page = NoPage
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Tab
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
disabled = solara.reactive(False)
|
|
10
|
-
icon = solara.reactive(True)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@solara.component
|
|
14
|
-
def Page():
|
|
15
|
-
solara.Checkbox(label="Disable Tab 2", value=disabled)
|
|
16
|
-
solara.Checkbox(label="Show icon", value=icon)
|
|
17
|
-
with solara.lab.Tabs():
|
|
18
|
-
with solara.lab.Tab("Tab 1"):
|
|
19
|
-
solara.Markdown("Hello")
|
|
20
|
-
with solara.lab.Tab("Tab 2", disabled=disabled.value, icon_name="mdi-home" if icon.value else None):
|
|
21
|
-
solara.Markdown("World")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
__doc__ += apidoc(solara.lab.Tab.f) # type: ignore
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
# Tabs
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
import solara
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.utils import apidoc
|
|
8
|
-
|
|
9
|
-
disabled = solara.reactive(False)
|
|
10
|
-
align = solara.reactive("center")
|
|
11
|
-
grow = solara.reactive(False)
|
|
12
|
-
vertical = solara.reactive(False)
|
|
13
|
-
dark = solara.reactive(False)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
@solara.component
|
|
17
|
-
def Page():
|
|
18
|
-
with solara.Card("Controls"):
|
|
19
|
-
with solara.Row():
|
|
20
|
-
solara.Checkbox(label="Grow", value=grow)
|
|
21
|
-
solara.Checkbox(label="Vertical", value=vertical)
|
|
22
|
-
solara.Checkbox(label="Dark", value=dark)
|
|
23
|
-
if vertical.value:
|
|
24
|
-
align.value = "start"
|
|
25
|
-
else:
|
|
26
|
-
if not grow.value:
|
|
27
|
-
with solara.Row(style={"align-items": "center"}):
|
|
28
|
-
solara.Text("Align:")
|
|
29
|
-
solara.ToggleButtonsSingle(value=align, values=["start", "center", "end"], dense=True)
|
|
30
|
-
with solara.lab.Tabs(
|
|
31
|
-
vertical=vertical.value,
|
|
32
|
-
grow=grow.value,
|
|
33
|
-
align=align.value,
|
|
34
|
-
dark=dark.value,
|
|
35
|
-
background_color="primary" if dark.value else None,
|
|
36
|
-
slider_color="secondary" if dark.value else None,
|
|
37
|
-
):
|
|
38
|
-
with solara.lab.Tab("Tab 1"):
|
|
39
|
-
solara.Markdown("Hello")
|
|
40
|
-
with solara.lab.Tab("Tab 2"):
|
|
41
|
-
solara.Markdown("World")
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
__doc__ += apidoc(solara.lab.Tabs.f) # type: ignore
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"""# Task
|
|
2
|
-
|
|
3
|
-
"""
|
|
4
|
-
import solara
|
|
5
|
-
import solara.autorouting
|
|
6
|
-
import solara.lab
|
|
7
|
-
from solara.website.components import NoPage
|
|
8
|
-
from solara.website.utils import apidoc
|
|
9
|
-
|
|
10
|
-
title = "Task"
|
|
11
|
-
Page = NoPage
|
|
12
|
-
__doc__ += apidoc(solara.lab.task) # type: ignore
|