├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── documentation.yml │ └── feature_request.yml ├── py-shiny │ ├── check │ │ └── action.yaml │ ├── pytest-browsers │ │ └── action.yaml │ └── setup │ │ └── action.yaml └── workflows │ ├── build-docs.yaml │ ├── conventional-commits.yaml │ ├── deploy-tests.yaml │ ├── pytest.yaml │ ├── triage-issues.yaml │ └── verify-js-built.yaml ├── .gitignore ├── .pre-commit-config.yaml ├── .prettierrc ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── CHANGELOG.md ├── CITATION.cff ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.md ├── docs ├── .gitignore ├── Makefile ├── README.md ├── _combine_objects_json.py ├── _extensions │ ├── machow │ │ └── interlinks │ │ │ ├── .gitignore │ │ │ ├── _extension.yml │ │ │ └── interlinks.lua │ └── quarto-ext │ │ └── shinylive │ │ ├── README.md │ │ ├── _extension.yml │ │ ├── resources │ │ └── css │ │ │ └── shinylive-quarto.css │ │ └── shinylive.lua ├── _quarto.yml ├── _quartodoc-core.yml ├── _quartodoc-express.yml ├── _quartodoc-testing.yml ├── _renderer.py └── shiny-docs.css ├── examples ├── airmass │ ├── README.md │ ├── app.py │ ├── location.py │ └── requirements.txt ├── annotation-export │ ├── README.md │ ├── app.py │ ├── boulder_temp.csv │ └── requirements.txt ├── brand │ ├── Monda-OFL.txt │ ├── Monda.ttf │ ├── _brand.yml │ ├── _colors.scss │ ├── app-express.py │ ├── app.py │ └── requirements.txt ├── brownian │ ├── README.md │ ├── app.py │ ├── brownian_motion.py │ ├── mediapipe.py │ ├── requirements.txt │ └── shinymediapipe │ │ ├── .gitignore │ │ ├── __init__.py │ │ ├── _hand.py │ │ ├── index.js │ │ ├── package-lock.json │ │ └── package.json ├── busy_indicators │ ├── README.md │ ├── app.py │ └── requirements.txt ├── cpuinfo │ ├── README.md │ ├── app.py │ ├── fakepsutil.py │ └── requirements.txt ├── dataframe │ ├── README.md │ ├── app.py │ └── requirements.txt ├── duckdb │ ├── .gitignore │ ├── README.md │ ├── app.py │ ├── manifest.json │ ├── query.py │ └── requirements.txt ├── event │ ├── README.md │ ├── app.py │ └── requirements.txt ├── express │ ├── README.md │ ├── accordion_app.py │ ├── basic_app.py │ ├── column_wrap_app.py │ ├── expressify_app.py │ ├── hold_app.py │ ├── nav_app.py │ ├── plot_app.py │ ├── render_express_app.py │ ├── requirements.txt │ ├── shared.py │ ├── shared_app.py │ └── sidebar_app.py ├── global_pyplot │ ├── README.md │ ├── app.py │ └── requirements.txt ├── headers │ ├── README.md │ ├── app.py │ └── requirements.txt ├── inputs-update │ ├── README.md │ ├── app.py │ └── requirements.txt ├── load_balance │ ├── README.md │ ├── app.py │ └── requirements.txt ├── model-score │ ├── .gitignore │ ├── README.md │ ├── app.py │ ├── fake_accuracy_scores.csv │ ├── plotly_streaming.py │ ├── requirements.txt │ └── scoredata.py ├── moduleapp │ ├── README.md │ ├── app.py │ └── requirements.txt ├── penguins │ ├── README.md │ ├── app.py │ ├── colors.py │ ├── penguins.csv │ ├── requirements.txt │ └── www │ │ ├── Adelie.png │ │ ├── Chinstrap.png │ │ ├── Gentoo.png │ │ ├── palmerpenguins.png │ │ └── penguins.png ├── req │ ├── README.md │ ├── app.py │ └── requirements.txt ├── static_plots │ ├── README.md │ ├── app.py │ └── requirements.txt ├── typed_inputs │ ├── README.md │ ├── app.py │ └── requirements.txt └── ui-func │ ├── README.md │ ├── app.py │ └── requirements.txt ├── js ├── .eslintrc.js ├── .gitignore ├── .nvmrc ├── build.ts ├── chat │ ├── chat.scss │ └── chat.ts ├── data-frame │ ├── cell-edit-map.tsx │ ├── cell.tsx │ ├── data-update.tsx │ ├── dom-utils.tsx │ ├── filter-numeric.tsx │ ├── filter.tsx │ ├── globals.d.ts │ ├── immutable-set.tsx │ ├── index.tsx │ ├── request.ts │ ├── selection.tsx │ ├── sort-arrows.tsx │ ├── sort.ts │ ├── style-info.ts │ ├── styles.scss │ ├── tabindex-group.ts │ ├── table-summary.tsx │ └── types.ts ├── markdown-stream │ ├── highlight_styles.scss │ ├── markdown-stream.scss │ └── markdown-stream.ts ├── package-lock.json ├── package.json ├── page-output │ └── page-output.ts ├── spin │ └── spin.scss ├── tsconfig.json └── utils │ └── _utils.ts ├── pyproject.toml ├── pyrightconfig.json ├── pytest.ini ├── scripts ├── _functions_deps.R ├── _functions_sass.R ├── _functions_setup.R ├── _pkg-sources.R ├── define-shims.js ├── generate-imports.py └── htmlDependencies.R ├── shiny ├── __init__.py ├── __main__.py ├── _app.py ├── _autoreload.py ├── _connection.py ├── _datastructures.py ├── _deprecated.py ├── _docstring.py ├── _error.py ├── _fileupload.py ├── _hostenv.py ├── _launchbrowser.py ├── _main.py ├── _main_add_test.py ├── _main_create.py ├── _main_create_custom.py ├── _main_utils.py ├── _namespaces.py ├── _shinyenv.py ├── _static.py ├── _typing_extensions.py ├── _utils.py ├── _validation.py ├── _versions.py ├── api-examples │ ├── Chat │ │ ├── _template.json │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── requirements.txt │ ├── ClientData │ │ ├── app-core.py │ │ └── app-express.py │ ├── MarkdownStream │ │ ├── app-core.py │ │ └── app-express.py │ ├── Module │ │ ├── app-core.py │ │ └── app-express.py │ ├── Progress │ │ ├── app-core.py │ │ └── app-express.py │ ├── Renderer │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── renderers.py │ ├── SafeException │ │ ├── app-core.py │ │ └── app-express.py │ ├── SilentCancelOutputException │ │ ├── app-core.py │ │ └── app-express.py │ ├── SilentException │ │ ├── app-core.py │ │ └── app-express.py │ ├── Value │ │ ├── app-core.py │ │ └── app-express.py │ ├── accordion │ │ ├── app-core.py │ │ └── app-express.py │ ├── accordion_panel │ │ ├── app-core.py │ │ └── app-express.py │ ├── as_fill_item │ │ ├── app-core.py │ │ └── app-express.py │ ├── as_fillable_container │ │ ├── app-core.py │ │ └── app-express.py │ ├── bookmark_callbacks │ │ └── app.py │ ├── busy_indicators │ │ ├── app-core.py │ │ └── app-express.py │ ├── calc │ │ ├── app-core.py │ │ └── app-express.py │ ├── card │ │ ├── app-core.py │ │ └── app-express.py │ ├── card_body │ │ └── app-core.py │ ├── card_footer │ │ ├── app-core.py │ │ └── app-express.py │ ├── card_header │ │ ├── app-core.py │ │ └── app-express.py │ ├── data_frame │ │ ├── app-core.py │ │ └── app-express.py │ ├── data_frame_data_view │ │ ├── app-core.py │ │ ├── app-express.py │ │ ├── mtcars.csv │ │ └── shared.py │ ├── data_frame_grid_table │ │ ├── app-core.py │ │ └── app-express.py │ ├── data_frame_set_patches │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── mtcars.csv │ ├── data_frame_styles │ │ ├── app-core.py │ │ └── app-express.py │ ├── data_frame_update_filter │ │ ├── app-core.py │ │ ├── app-express.py │ │ ├── mtcars.csv │ │ └── shared.py │ ├── data_frame_update_sort │ │ ├── app-core.py │ │ ├── app-express.py │ │ ├── mtcars.csv │ │ └── shared.py │ ├── download │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── mtcars.csv │ ├── download_button │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── mtcars.csv │ ├── download_link │ │ ├── app-core.py │ │ └── mtcars.csv │ ├── effect │ │ ├── app-core.py │ │ └── app-express.py │ ├── event │ │ ├── app-core.py │ │ └── app-express.py │ ├── extended_task │ │ ├── app-core.py │ │ └── app-express.py │ ├── file_reader │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── mtcars.csv │ ├── include_css │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── css │ │ │ └── styles.css │ ├── include_js │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── js │ │ │ └── app.js │ ├── input_action_button │ │ ├── app-core.py │ │ ├── app-disabled-core.py │ │ ├── app-disabled-express.py │ │ └── app-express.py │ ├── input_action_link │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_bookmark_button │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_checkbox │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_checkbox_group │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_dark_mode │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_date │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_date_range │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_file │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_numeric │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_password │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_radio_buttons │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_select │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_selectize │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_slider │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_switch │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_text │ │ ├── app-core.py │ │ └── app-express.py │ ├── input_text_area │ │ ├── app-core.py │ │ └── app-express.py │ ├── insert_accordion_panel │ │ ├── app-core.py │ │ └── app-express.py │ ├── insert_ui │ │ ├── app-core.py │ │ └── app-express.py │ ├── invalidate_later │ │ ├── app-core.py │ │ └── app-express.py │ ├── isolate │ │ ├── app-core.py │ │ └── app-express.py │ ├── layout_column_wrap │ │ ├── app-core.py │ │ └── app-express.py │ ├── layout_columns │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── model_plots.py │ ├── layout_sidebar │ │ ├── app-core.py │ │ └── app-express.py │ ├── markdown │ │ ├── app-core.py │ │ └── app-express.py │ ├── modal │ │ ├── app-core.py │ │ └── app-express.py │ ├── modal_remove │ │ ├── app-core.py │ │ └── app-express.py │ ├── nav_control │ │ ├── app-core.py │ │ └── app-express.py │ ├── nav_menu │ │ ├── app-core.py │ │ └── app-express.py │ ├── nav_panel │ │ ├── app-core.py │ │ └── app-express.py │ ├── nav_spacer │ │ ├── app-core.py │ │ └── app-express.py │ ├── navbar_options │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_bar │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_card_pill │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_card_tab │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_card_underline │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_hidden │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_pill │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_pill_list │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_tab │ │ ├── app-core.py │ │ └── app-express.py │ ├── navset_underline │ │ ├── app-core.py │ │ └── app-express.py │ ├── notification_show │ │ ├── app-core.py │ │ └── app-express.py │ ├── output_image │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── posit-logo.png │ ├── output_plot │ │ ├── app-core.py │ │ └── app-express.py │ ├── output_table │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── mtcars.csv │ ├── output_text │ │ ├── app-core.py │ │ └── app-express.py │ ├── output_transformer │ │ └── app-core.py │ ├── output_ui │ │ ├── app-core.py │ │ └── app-express.py │ ├── page_fixed │ │ ├── app-core.py │ │ └── app-express.py │ ├── page_fluid │ │ ├── app-core.py │ │ └── app-express.py │ ├── page_opts │ │ └── app-express.py │ ├── page_sidebar │ │ ├── app-core.py │ │ └── app-express.py │ ├── panel_absolute │ │ ├── app-core.py │ │ └── app-express.py │ ├── panel_conditional │ │ ├── app-core.py │ │ └── app-express.py │ ├── panel_title │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── app.py │ ├── poll │ │ ├── app-core.py │ │ └── app-express.py │ ├── popover │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── icons.py │ ├── remove_accordion_panel │ │ ├── app-core.py │ │ └── app-express.py │ ├── remove_ui │ │ ├── app-core.py │ │ └── app-express.py │ ├── render_express │ │ ├── app-core.py │ │ └── app-express.py │ ├── render_image │ │ └── app-core.py │ ├── req │ │ ├── app-core.py │ │ └── app-express.py │ ├── restore_input │ │ └── app.py │ ├── row │ │ └── app-core.py │ ├── session_close │ │ ├── app-core.py │ │ └── app-express.py │ ├── session_dynamic_route │ │ ├── app-core.py │ │ └── app-express.py │ ├── session_on_ended │ │ ├── app-core.py │ │ └── app-express.py │ ├── session_on_flush │ │ ├── app-core.py │ │ └── app-express.py │ ├── session_on_flushed │ │ ├── app-core.py │ │ └── app-express.py │ ├── session_send_custom_message │ │ ├── app-core.py │ │ └── app-express.py │ ├── showcase_bottom │ │ ├── app-core.py │ │ └── icons.py │ ├── showcase_left_center │ │ ├── app-core.py │ │ └── icons.py │ ├── showcase_top_right │ │ ├── app-core.py │ │ └── icons.py │ ├── sidebar │ │ ├── app-core-dynamic.py │ │ ├── app-core.py │ │ └── app-express.py │ ├── template │ │ └── app-core.py │ ├── theme │ │ ├── __purgecss.py │ │ ├── app-core-local.py │ │ ├── app-core-remote.py │ │ ├── app-core-shinyswatch.py │ │ ├── app-core.py │ │ ├── app-express-local.py │ │ ├── app-express-remote.py │ │ ├── app-express-shinyswatch.py │ │ ├── app-express.py │ │ ├── css │ │ │ ├── rules.scss │ │ │ └── shiny-theme-demo.css │ │ └── shared.py │ ├── todo_list │ │ ├── app-core.py │ │ └── requirements.txt │ ├── tooltip │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── icons.py │ ├── update_accordion │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_accordion_panel │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_action_button │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_checkbox │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_checkbox_group │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_date │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_date_range │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_navs │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_numeric │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_popover │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_radio_buttons │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_select │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_selectize │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_sidebar │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_slider │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_text │ │ ├── app-core.py │ │ └── app-express.py │ ├── update_tooltip │ │ ├── app-core.py │ │ └── app-express.py │ ├── value_box │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── icons.py │ └── www_dir │ │ ├── app-core.py │ │ └── www │ │ ├── css │ │ ├── more-styles.css │ │ └── styles.css │ │ └── js │ │ └── changetext.js ├── bookmark │ ├── README.md │ ├── __init__.py │ ├── _bookmark.py │ ├── _bookmark_state.py │ ├── _button.py │ ├── _global.py │ ├── _restore_state.py │ ├── _save_state.py │ ├── _serializers.py │ ├── _types.py │ └── _utils.py ├── experimental │ ├── __init__.py │ ├── api-examples │ │ └── card_image │ │ │ └── app.py │ └── ui │ │ ├── __init__.py │ │ ├── _card.py │ │ └── _deprecated.py ├── express │ ├── __init__.py │ ├── _is_express.py │ ├── _module.py │ ├── _output.py │ ├── _recall_context.py │ ├── _run.py │ ├── _stub_session.py │ ├── _utils.py │ ├── app.py │ ├── expressify_decorator │ │ ├── __init__.py │ │ ├── _expressify.py │ │ ├── _func_displayhook.py │ │ ├── _helpers.py │ │ └── _node_transformers.py │ ├── layout.py │ └── ui │ │ ├── __init__.py │ │ ├── _cm_components.py │ │ ├── _hold.py │ │ └── _page.py ├── html_dependencies.py ├── http_staticfiles.py ├── input_handler.py ├── module.py ├── playwright │ ├── __init__.py │ ├── _types.py │ ├── controller │ │ ├── __init__.py │ │ ├── _accordion.py │ │ ├── _base.py │ │ ├── _card.py │ │ ├── _chat.py │ │ ├── _expect.py │ │ ├── _file.py │ │ ├── _input_buttons.py │ │ ├── _input_controls.py │ │ ├── _input_fields.py │ │ ├── _layout.py │ │ ├── _navs.py │ │ ├── _output.py │ │ └── _overlay.py │ └── expect │ │ ├── __init__.py │ │ ├── _expect.py │ │ ├── _expect_to_change.py │ │ └── _internal.py ├── plotutils.py ├── py.typed ├── pytest │ ├── __init__.py │ ├── _fixture.py │ └── _pytest.py ├── quarto.py ├── reactive │ ├── __init__.py │ ├── _core.py │ ├── _extended_task.py │ ├── _poll.py │ └── _reactives.py ├── render │ ├── __init__.py │ ├── _coordmap.py │ ├── _data_frame.py │ ├── _data_frame_utils │ │ ├── __init__.py │ │ ├── _datagridtable.py │ │ ├── _html.py │ │ ├── _patch.py │ │ ├── _reactive_method.py │ │ ├── _selection.py │ │ ├── _styles.py │ │ ├── _tbl_data.py │ │ └── _types.py │ ├── _deprecated.py │ ├── _express.py │ ├── _render.py │ ├── _try_render_plot.py │ ├── renderer │ │ ├── __init__.py │ │ ├── _renderer.py │ │ └── _utils.py │ └── transformer │ │ ├── __init__.py │ │ └── _transformer.py ├── run │ ├── __init__.py │ └── _run.py ├── session │ ├── __init__.py │ ├── _session.py │ └── _utils.py ├── templates │ ├── app │ │ ├── 01-basic-app │ │ │ ├── _template.json │ │ │ ├── app-core.py │ │ │ └── app-express.py │ │ ├── 02-basic-sidebar │ │ │ ├── _template.json │ │ │ ├── app-core.py │ │ │ ├── app-express.py │ │ │ ├── penguins.csv │ │ │ ├── requirements.txt │ │ │ └── shared.py │ │ ├── 03-dashboard │ │ │ ├── _template.json │ │ │ ├── app-core.py │ │ │ ├── app-express.py │ │ │ ├── penguins.csv │ │ │ ├── requirements.txt │ │ │ ├── shared.py │ │ │ └── styles.css │ │ ├── 04-dashboard-tips │ │ │ ├── README.md │ │ │ ├── _template.json │ │ │ ├── app-core.py │ │ │ ├── app-express.py │ │ │ ├── requirements.txt │ │ │ ├── shared.py │ │ │ ├── styles.css │ │ │ └── tips.csv │ │ └── 05-basic-navigation │ │ │ ├── _template.json │ │ │ ├── app-core.py │ │ │ ├── app-express.py │ │ │ ├── penguins.csv │ │ │ ├── requirements.txt │ │ │ └── shared.py │ ├── chat │ │ ├── llm-enterprise │ │ │ ├── aws-bedrock-anthropic │ │ │ │ ├── _template.json │ │ │ │ ├── app.py │ │ │ │ ├── app_utils.py │ │ │ │ ├── requirements.txt │ │ │ │ └── template.env │ │ │ └── azure-openai │ │ │ │ ├── _template.json │ │ │ │ ├── app.py │ │ │ │ ├── app_utils.py │ │ │ │ ├── requirements.txt │ │ │ │ └── template.env │ │ └── llms │ │ │ ├── anthropic │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ ├── google │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ ├── langchain │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ ├── ollama │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ └── requirements.txt │ │ │ ├── openai │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ └── playground │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ ├── markdown-stream │ │ ├── llm-enterprise │ │ │ ├── aws-bedrock-anthropic │ │ │ │ ├── _template.json │ │ │ │ ├── app.py │ │ │ │ ├── app_utils.py │ │ │ │ ├── requirements.txt │ │ │ │ └── template.env │ │ │ └── azure-openai │ │ │ │ ├── _template.json │ │ │ │ ├── app.py │ │ │ │ ├── app_utils.py │ │ │ │ ├── requirements.txt │ │ │ │ └── template.env │ │ └── llms │ │ │ ├── anthropic │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ ├── google │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ ├── langchain │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ │ │ ├── ollama │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ └── requirements.txt │ │ │ └── openai │ │ │ ├── _template.json │ │ │ ├── app.py │ │ │ ├── app_utils.py │ │ │ ├── requirements.txt │ │ │ └── template.env │ └── package │ │ ├── .gitignore │ │ ├── js-input │ │ ├── .gitignore │ │ ├── README.md │ │ ├── _template.json │ │ ├── custom_component │ │ │ ├── __init__.py │ │ │ └── custom_component.py │ │ ├── example-app │ │ │ └── app.py │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── pyproject.toml │ │ ├── srcts │ │ │ └── index.ts │ │ └── tsconfig.json │ │ ├── js-output │ │ ├── .gitignore │ │ ├── README.md │ │ ├── _template.json │ │ ├── custom_component │ │ │ ├── __init__.py │ │ │ └── custom_component.py │ │ ├── example-app │ │ │ └── app.py │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── pyproject.toml │ │ ├── srcts │ │ │ └── index.ts │ │ └── tsconfig.json │ │ └── js-react │ │ ├── .gitignore │ │ ├── README.md │ │ ├── _template.json │ │ ├── custom_component │ │ ├── __init__.py │ │ └── custom_component.py │ │ ├── example-app │ │ └── app.py │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── pyproject.toml │ │ ├── srcts │ │ └── index.tsx │ │ └── tsconfig.json ├── types.py ├── ui │ ├── __init__.py │ ├── _accordion.py │ ├── _bootstrap.py │ ├── _busy_spinner_types.py │ ├── _card.py │ ├── _chat.py │ ├── _chat_bookmark.py │ ├── _chat_normalize.py │ ├── _chat_provider_types.py │ ├── _chat_tokenizer.py │ ├── _chat_types.py │ ├── _download_button.py │ ├── _html_deps_external.py │ ├── _html_deps_py_shiny.py │ ├── _html_deps_shinyverse.py │ ├── _include_helpers.py │ ├── _input_action_button.py │ ├── _input_check_radio.py │ ├── _input_dark_mode.py │ ├── _input_date.py │ ├── _input_file.py │ ├── _input_numeric.py │ ├── _input_password.py │ ├── _input_select.py │ ├── _input_slider.py │ ├── _input_task_button.py │ ├── _input_text.py │ ├── _input_update.py │ ├── _insert.py │ ├── _layout.py │ ├── _layout_columns.py │ ├── _markdown.py │ ├── _markdown_stream.py │ ├── _modal.py │ ├── _navs.py │ ├── _notification.py │ ├── _output.py │ ├── _page.py │ ├── _plot_output_opts.py │ ├── _popover.py │ ├── _progress.py │ ├── _sidebar.py │ ├── _tag.py │ ├── _theme.py │ ├── _theme_brand.py │ ├── _theme_presets.py │ ├── _tooltip.py │ ├── _utils.py │ ├── _valuebox.py │ ├── _web_component.py │ ├── busy_indicators.py │ ├── css │ │ ├── __init__.py │ │ └── _css_unit.py │ ├── dataframe │ │ ├── __init__.py │ │ └── _data_frame.py │ └── fill │ │ ├── __init__.py │ │ └── _fill.py └── www │ ├── py-shiny │ ├── brand │ │ └── _brand-yml.scss │ ├── chat │ │ ├── chat.css │ │ ├── chat.css.map │ │ ├── chat.js │ │ └── chat.js.map │ ├── data-frame │ │ ├── data-frame.js │ │ └── data-frame.js.map │ ├── markdown-stream │ │ ├── markdown-stream.css │ │ ├── markdown-stream.css.map │ │ ├── markdown-stream.js │ │ └── markdown-stream.js.map │ ├── page-output │ │ ├── page-output.js │ │ └── page-output.js.map │ └── spin │ │ ├── spin.css │ │ └── spin.css.map │ └── shared │ ├── _version.json │ ├── bootstrap │ ├── _version.json │ ├── bootstrap.bundle.min.js │ ├── bootstrap.bundle.min.js.map │ ├── bootstrap.min.css │ ├── font.css │ └── fonts │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 │ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 │ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 │ │ ├── bootstrap │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 │ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 │ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 │ │ └── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 │ ├── bslib │ ├── _version.json │ └── components │ │ ├── components.css │ │ ├── components.min.js │ │ ├── components.min.js.map │ │ ├── web-components.min.js │ │ ├── web-components.min.js.map │ │ └── webComponents │ │ └── webComponents.min.js │ ├── busy-indicators │ ├── busy-indicators.css │ └── spinners │ │ ├── LICENSE │ │ ├── bars.svg │ │ ├── bars2.svg │ │ ├── bars3.svg │ │ ├── dots.svg │ │ ├── dots2.svg │ │ ├── dots3.svg │ │ ├── pulse.svg │ │ ├── pulse2.svg │ │ ├── pulse3.svg │ │ ├── ring.svg │ │ ├── ring2.svg │ │ └── ring3.svg │ ├── datepicker │ ├── css │ │ └── bootstrap-datepicker3.min.css │ └── js │ │ ├── bootstrap-datepicker.min.js │ │ └── locales │ │ ├── bootstrap-datepicker-en-CA.min.js │ │ ├── bootstrap-datepicker.ar-tn.min.js │ │ ├── bootstrap-datepicker.ar.min.js │ │ ├── bootstrap-datepicker.az.min.js │ │ ├── bootstrap-datepicker.bg.min.js │ │ ├── bootstrap-datepicker.bm.min.js │ │ ├── bootstrap-datepicker.bn.min.js │ │ ├── bootstrap-datepicker.br.min.js │ │ ├── bootstrap-datepicker.bs.min.js │ │ ├── bootstrap-datepicker.ca.min.js │ │ ├── bootstrap-datepicker.cs.min.js │ │ ├── bootstrap-datepicker.cy.min.js │ │ ├── bootstrap-datepicker.da.min.js │ │ ├── bootstrap-datepicker.de.min.js │ │ ├── bootstrap-datepicker.el.min.js │ │ ├── bootstrap-datepicker.en-AU.min.js │ │ ├── bootstrap-datepicker.en-CA.min.js │ │ ├── bootstrap-datepicker.en-GB.min.js │ │ ├── bootstrap-datepicker.en-IE.min.js │ │ ├── bootstrap-datepicker.en-NZ.min.js │ │ ├── bootstrap-datepicker.en-ZA.min.js │ │ ├── bootstrap-datepicker.eo.min.js │ │ ├── bootstrap-datepicker.es.min.js │ │ ├── bootstrap-datepicker.et.min.js │ │ ├── bootstrap-datepicker.eu.min.js │ │ ├── bootstrap-datepicker.fa.min.js │ │ ├── bootstrap-datepicker.fi.min.js │ │ ├── bootstrap-datepicker.fo.min.js │ │ ├── bootstrap-datepicker.fr-CH.min.js │ │ ├── bootstrap-datepicker.fr.min.js │ │ ├── bootstrap-datepicker.gl.min.js │ │ ├── bootstrap-datepicker.he.min.js │ │ ├── bootstrap-datepicker.hi.min.js │ │ ├── bootstrap-datepicker.hr.min.js │ │ ├── bootstrap-datepicker.hu.min.js │ │ ├── bootstrap-datepicker.hy.min.js │ │ ├── bootstrap-datepicker.id.min.js │ │ ├── bootstrap-datepicker.is.min.js │ │ ├── bootstrap-datepicker.it-CH.min.js │ │ ├── bootstrap-datepicker.it.min.js │ │ ├── bootstrap-datepicker.ja.min.js │ │ ├── bootstrap-datepicker.ka.min.js │ │ ├── bootstrap-datepicker.kh.min.js │ │ ├── bootstrap-datepicker.kk.min.js │ │ ├── bootstrap-datepicker.km.min.js │ │ ├── bootstrap-datepicker.ko.min.js │ │ ├── bootstrap-datepicker.kr.min.js │ │ ├── bootstrap-datepicker.lt.min.js │ │ ├── bootstrap-datepicker.lv.min.js │ │ ├── bootstrap-datepicker.me.min.js │ │ ├── bootstrap-datepicker.mk.min.js │ │ ├── bootstrap-datepicker.mn.min.js │ │ ├── bootstrap-datepicker.ms.min.js │ │ ├── bootstrap-datepicker.nl-BE.min.js │ │ ├── bootstrap-datepicker.nl.min.js │ │ ├── bootstrap-datepicker.no.min.js │ │ ├── bootstrap-datepicker.oc.min.js │ │ ├── bootstrap-datepicker.pl.min.js │ │ ├── bootstrap-datepicker.pt-BR.min.js │ │ ├── bootstrap-datepicker.pt.min.js │ │ ├── bootstrap-datepicker.ro.min.js │ │ ├── bootstrap-datepicker.rs-latin.min.js │ │ ├── bootstrap-datepicker.rs.min.js │ │ ├── bootstrap-datepicker.ru.min.js │ │ ├── bootstrap-datepicker.si.min.js │ │ ├── bootstrap-datepicker.sk.min.js │ │ ├── bootstrap-datepicker.sl.min.js │ │ ├── bootstrap-datepicker.sq.min.js │ │ ├── bootstrap-datepicker.sr-latin.min.js │ │ ├── bootstrap-datepicker.sr.min.js │ │ ├── bootstrap-datepicker.sv.min.js │ │ ├── bootstrap-datepicker.sw.min.js │ │ ├── bootstrap-datepicker.ta.min.js │ │ ├── bootstrap-datepicker.tg.min.js │ │ ├── bootstrap-datepicker.th.min.js │ │ ├── bootstrap-datepicker.tk.min.js │ │ ├── bootstrap-datepicker.tr.min.js │ │ ├── bootstrap-datepicker.uk.min.js │ │ ├── bootstrap-datepicker.uz-cyrl.min.js │ │ ├── bootstrap-datepicker.uz-latn.min.js │ │ ├── bootstrap-datepicker.vi.min.js │ │ ├── bootstrap-datepicker.zh-CN.min.js │ │ └── bootstrap-datepicker.zh-TW.min.js │ ├── highlight │ ├── LICENSE │ ├── classref.txt │ ├── highlight.pack.js │ └── rstudio.css │ ├── htmltools │ ├── _version.json │ └── fill │ │ └── fill.css │ ├── ionrangeslider │ ├── css │ │ └── ion.rangeSlider.css │ └── js │ │ └── ion.rangeSlider.min.js │ ├── jquery │ ├── jquery-3.6.0.min.js │ └── jquery-3.6.0.min.map │ ├── jqueryui │ ├── AUTHORS.txt │ ├── LICENSE.txt │ ├── images │ │ ├── ui-icons_444444_256x240.png │ │ ├── ui-icons_555555_256x240.png │ │ ├── ui-icons_777620_256x240.png │ │ ├── ui-icons_777777_256x240.png │ │ ├── ui-icons_cc0000_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ ├── index.html │ ├── jquery-ui.min.css │ └── jquery-ui.min.js │ ├── requirejs │ └── require.min.js │ ├── sass │ ├── _sass_layer_markers.scss │ ├── bslib │ │ ├── bs3compat │ │ │ ├── _declarations.scss │ │ │ ├── _defaults.scss │ │ │ ├── _dropdown_compat.scss │ │ │ ├── _dt_compat.scss │ │ │ ├── _glyphicons.scss │ │ │ ├── _headers.scss │ │ │ ├── _help_text.scss │ │ │ ├── _nav_compat.scss │ │ │ ├── _navbar_compat.scss │ │ │ ├── _progress_compat.scss │ │ │ ├── _rules.scss │ │ │ ├── _shiny_input.scss │ │ │ ├── _shiny_misc.scss │ │ │ └── _wells.scss │ │ ├── bslib-scss │ │ │ ├── bslib.scss │ │ │ ├── color-utilities.scss │ │ │ ├── functions.scss │ │ │ ├── spacer.scss │ │ │ └── tab-fill.scss │ │ ├── builtin │ │ │ └── bs5 │ │ │ │ └── shiny │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _rules.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── ionrangeslider │ │ │ │ ├── _rules.scss │ │ │ │ └── _variables.scss │ │ │ │ └── tables │ │ │ │ └── _rules.scss │ │ ├── components │ │ │ └── scss │ │ │ │ ├── accordion.scss │ │ │ │ ├── card.scss │ │ │ │ ├── grid.scss │ │ │ │ ├── mixins │ │ │ │ └── _mixins.scss │ │ │ │ ├── nav_spacer.scss │ │ │ │ ├── page_fillable.scss │ │ │ │ ├── page_navbar.scss │ │ │ │ ├── page_sidebar.scss │ │ │ │ ├── sidebar.scss │ │ │ │ └── value_box.scss │ │ ├── lib │ │ │ ├── bs5 │ │ │ │ └── scss │ │ │ │ │ ├── _accordion.scss │ │ │ │ │ ├── _alert.scss │ │ │ │ │ ├── _badge.scss │ │ │ │ │ ├── _breadcrumb.scss │ │ │ │ │ ├── _button-group.scss │ │ │ │ │ ├── _buttons.scss │ │ │ │ │ ├── _card.scss │ │ │ │ │ ├── _carousel.scss │ │ │ │ │ ├── _close.scss │ │ │ │ │ ├── _containers.scss │ │ │ │ │ ├── _dropdown.scss │ │ │ │ │ ├── _forms.scss │ │ │ │ │ ├── _functions.scss │ │ │ │ │ ├── _grid.scss │ │ │ │ │ ├── _helpers.scss │ │ │ │ │ ├── _images.scss │ │ │ │ │ ├── _list-group.scss │ │ │ │ │ ├── _maps.scss │ │ │ │ │ ├── _mixins.scss │ │ │ │ │ ├── _modal.scss │ │ │ │ │ ├── _nav.scss │ │ │ │ │ ├── _navbar.scss │ │ │ │ │ ├── _offcanvas.scss │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ ├── _placeholders.scss │ │ │ │ │ ├── _popover.scss │ │ │ │ │ ├── _progress.scss │ │ │ │ │ ├── _reboot.scss │ │ │ │ │ ├── _root.scss │ │ │ │ │ ├── _spinners.scss │ │ │ │ │ ├── _tables.scss │ │ │ │ │ ├── _toasts.scss │ │ │ │ │ ├── _tooltip.scss │ │ │ │ │ ├── _transitions.scss │ │ │ │ │ ├── _type.scss │ │ │ │ │ ├── _utilities.scss │ │ │ │ │ ├── _variables-dark.scss │ │ │ │ │ ├── _variables.scss │ │ │ │ │ ├── forms │ │ │ │ │ ├── _floating-labels.scss │ │ │ │ │ ├── _form-check.scss │ │ │ │ │ ├── _form-control.scss │ │ │ │ │ ├── _form-range.scss │ │ │ │ │ ├── _form-select.scss │ │ │ │ │ ├── _form-text.scss │ │ │ │ │ ├── _input-group.scss │ │ │ │ │ ├── _labels.scss │ │ │ │ │ └── _validation.scss │ │ │ │ │ ├── helpers │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _color-bg.scss │ │ │ │ │ ├── _colored-links.scss │ │ │ │ │ ├── _focus-ring.scss │ │ │ │ │ ├── _icon-link.scss │ │ │ │ │ ├── _position.scss │ │ │ │ │ ├── _ratio.scss │ │ │ │ │ ├── _stacks.scss │ │ │ │ │ ├── _stretched-link.scss │ │ │ │ │ ├── _text-truncation.scss │ │ │ │ │ ├── _visually-hidden.scss │ │ │ │ │ └── _vr.scss │ │ │ │ │ ├── mixins │ │ │ │ │ ├── _backdrop.scss │ │ │ │ │ ├── _banner.scss │ │ │ │ │ ├── _border-radius.scss │ │ │ │ │ ├── _box-shadow.scss │ │ │ │ │ ├── _breakpoints.scss │ │ │ │ │ ├── _buttons.scss │ │ │ │ │ ├── _caret.scss │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _color-mode.scss │ │ │ │ │ ├── _color-scheme.scss │ │ │ │ │ ├── _container.scss │ │ │ │ │ ├── _deprecate.scss │ │ │ │ │ ├── _forms.scss │ │ │ │ │ ├── _gradients.scss │ │ │ │ │ ├── _grid.scss │ │ │ │ │ ├── _image.scss │ │ │ │ │ ├── _lists.scss │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ ├── _reset-text.scss │ │ │ │ │ ├── _resize.scss │ │ │ │ │ ├── _table-variants.scss │ │ │ │ │ ├── _text-truncate.scss │ │ │ │ │ ├── _transition.scss │ │ │ │ │ ├── _utilities.scss │ │ │ │ │ └── _visually-hidden.scss │ │ │ │ │ ├── utilities │ │ │ │ │ └── _api.scss │ │ │ │ │ └── vendor │ │ │ │ │ └── _rfs.scss │ │ │ └── bsw5 │ │ │ │ └── dist │ │ │ │ ├── cerulean │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── cosmo │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── cyborg │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── darkly │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── flatly │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── journal │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── litera │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── lumen │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── lux │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── materia │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── minty │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── morph │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── pulse │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── quartz │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── sandstone │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── simplex │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── sketchy │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── slate │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── solar │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── spacelab │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── superhero │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── united │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── vapor │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ ├── yeti │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ │ │ └── zephyr │ │ │ │ ├── _bootswatch.scss │ │ │ │ └── _variables.scss │ │ └── sass-utils │ │ │ └── color-contrast.scss │ ├── preset │ │ ├── bootstrap │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ ├── _04_rules.scss │ │ │ └── bootstrap.min.css │ │ ├── cerulean │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── cosmo │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── cyborg │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── darkly │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── flatly │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── journal │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── litera │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── lumen │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── lux │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── materia │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── minty │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── morph │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── pulse │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── quartz │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── sandstone │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── shiny │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ ├── _04_rules.scss │ │ │ └── bootstrap.min.css │ │ ├── simplex │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── sketchy │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── slate │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── solar │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── spacelab │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── superhero │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── united │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── vapor │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ ├── yeti │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ │ └── zephyr │ │ │ ├── _01_functions.scss │ │ │ ├── _02_defaults.scss │ │ │ ├── _03_mixins.scss │ │ │ └── _04_rules.scss │ └── shiny │ │ └── www │ │ └── shared │ │ ├── datepicker │ │ └── scss │ │ │ ├── build3.scss │ │ │ └── datepicker3.scss │ │ ├── ionrangeslider │ │ └── scss │ │ │ ├── _base.scss │ │ │ ├── _mixins.scss │ │ │ └── shiny.scss │ │ ├── selectize │ │ └── scss │ │ │ ├── plugins │ │ │ ├── auto_position.scss │ │ │ ├── clear_button.scss │ │ │ ├── drag_drop.scss │ │ │ ├── dropdown_header.scss │ │ │ ├── optgroup_columns.scss │ │ │ └── remove_button.scss │ │ │ ├── selectize.bootstrap5.scss │ │ │ └── selectize.scss │ │ └── shiny_scss │ │ ├── shiny.bootstrap5.scss │ │ └── shiny.scss │ ├── selectize │ ├── accessibility │ │ └── js │ │ │ └── selectize-plugin-a11y.min.js │ ├── css │ │ └── selectize.min.css │ ├── js │ │ └── selectize.min.js │ └── scss │ │ ├── plugins │ │ ├── auto_position.scss │ │ ├── clear_button.scss │ │ ├── drag_drop.scss │ │ ├── dropdown_header.scss │ │ ├── optgroup_columns.scss │ │ └── remove_button.scss │ │ ├── selectize.bootstrap3.scss │ │ ├── selectize.bootstrap4.scss │ │ ├── selectize.bootstrap5.scss │ │ ├── selectize.default.scss │ │ └── selectize.scss │ ├── shiny-autoreload.js │ ├── shiny-autoreload.js.map │ ├── shiny-showcase.css │ ├── shiny-showcase.js │ ├── shiny-showcase.js.map │ ├── shiny-testmode.js │ ├── shiny-testmode.js.map │ ├── shiny.js │ ├── shiny.js.map │ ├── shiny.min.css │ ├── shiny.min.js │ ├── shiny.min.js.map │ ├── showdown │ ├── compressed │ │ └── showdown.js │ ├── license.txt │ └── src │ │ └── showdown.js │ └── strftime │ └── strftime-min.js └── tests ├── __init__.py ├── playwright ├── README.md ├── ai_generated_apps │ ├── bookmark │ │ ├── accordion │ │ │ ├── app-express.py │ │ │ └── test_accordion_bookmarking.py │ │ ├── bookmark_exclude │ │ │ ├── app-core.py │ │ │ └── test_bookmark_exclusion.py │ │ ├── input_checkbox │ │ │ ├── app-express.py │ │ │ └── test_input_checkbox_express_bookmarking.py │ │ ├── input_checkbox_group │ │ │ ├── app-express.py │ │ │ └── test_input_checkbox_group_express_bookmarking.py │ │ ├── input_dark_mode │ │ │ ├── app-express.py │ │ │ └── test_input_dark_mode_express_bookmarking.py │ │ ├── input_date │ │ │ ├── app-express.py │ │ │ └── test_bookmark_input_date_express_bookmarking.py │ │ ├── input_date_range │ │ │ ├── app-express.py │ │ │ └── test_input_date_range_express_bookmarking.py │ │ ├── input_file │ │ │ ├── app-express.py │ │ │ └── test_input_file_express_bookmarking.py │ │ ├── input_password │ │ │ ├── app-express.py │ │ │ └── test_input_password_express_bookmarking.py │ │ ├── input_radio_buttons │ │ │ ├── app-express.py │ │ │ └── test_input_radio_buttons_express_bookmarking.py │ │ ├── input_select │ │ │ ├── app-express.py │ │ │ └── test_input_select_express_bookmarking.py │ │ ├── input_slider │ │ │ ├── app-express.py │ │ │ └── test_input_slider_express_bookmarking.py │ │ ├── input_switch │ │ │ ├── app-express.py │ │ │ └── test_input_switch_express_bookmarking.py │ │ ├── input_text │ │ │ ├── app-express.py │ │ │ └── test_input_text_express_bookmarking.py │ │ ├── input_text_area │ │ │ ├── app-express.py │ │ │ └── test_input_text_area_express_bookmarking.py │ │ ├── navsets │ │ │ ├── app-express.py │ │ │ ├── app-hidden.py │ │ │ ├── test_navsets_express_bookmarking.py │ │ │ └── test_navsets_hidden_bookmarking.py │ │ └── sidebar │ │ │ ├── app-express.py │ │ │ └── test_sidebar_express_bookmarking.py │ └── core_express │ │ ├── accordion │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_accordion_core_express.py │ │ ├── accordion_panel │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_accordion_panel_core_express.py │ │ ├── card │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_card_core_express.py │ │ ├── card_footer │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_card_footer_core_express.py │ │ ├── input_action_button │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_action_button_core_express.py │ │ ├── input_action_link │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_action_link_core_express.py │ │ ├── input_checkbox │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_checkbox_core_express.py │ │ ├── input_checkbox_group │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_checkbox_group_core_express.py │ │ ├── input_dark_mode │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_dark_mode_core_express.py │ │ ├── input_date │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_date_core_express.py │ │ ├── input_date_range │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_date_range_core_express.py │ │ ├── input_file │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_file_core_express.py │ │ ├── input_numeric │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_numeric_core_express.py │ │ ├── input_password │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_password_core_express.py │ │ ├── input_radio_buttons │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_radio_buttons_core_express.py │ │ ├── input_select │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_select_core_express.py │ │ ├── input_slider │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_slider_core_express.py │ │ ├── input_switch │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_switch_core_express.py │ │ ├── input_task_button │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_task_button_core_express.py │ │ ├── input_text │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_text_core_express.py │ │ ├── input_text_area │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_input_text_area_core_express.py │ │ ├── navset_pill │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_navset_pill_core_express.py │ │ ├── update_text │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_update_text_core_express.py │ │ ├── update_text_area │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_update_text_area_core_express.py │ │ ├── update_tooltip │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_update_tooltip_core_express.py │ │ └── value_box │ │ ├── app-core.py │ │ ├── app-express.py │ │ └── test_value_box_core_express.py ├── conftest.py ├── deploys │ ├── __init__.py │ ├── express-accordion │ │ ├── __init__.py │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-accordion.json │ │ └── test_deploys_express_accordion.py │ ├── express-dataframe │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-dataframe.json │ │ └── test_deploys_express_dataframe.py │ ├── express-folium │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-folium.json │ │ └── test_deploys_express_folium.py │ ├── express-page_default │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-page_default.json │ │ └── test_deploys_express_page_default.py │ ├── express-page_fillable │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-page_fillable.json │ │ └── test_deploys_express_page_fillable.py │ ├── express-page_fluid │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-page_fluid.json │ │ └── test_deploys_express_page_fluid.py │ ├── express-page_sidebar │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── express-page_sidebar.json │ │ └── test_deploys_express_page_sidebar.py │ ├── plotly │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ │ └── plotly.json │ │ └── test_plotly_app.py │ └── shiny-client-console-error │ │ ├── app.py │ │ ├── app_requirements.txt │ │ ├── rsconnect-python │ │ └── shiny-client-console-error.json │ │ └── test_shiny_client_error.py ├── examples │ ├── example_apps.py │ ├── test_api_examples.py │ ├── test_cpuinfo.py │ ├── test_examples.py │ └── test_shiny_create.py ├── playwright-pytest.ini ├── shiny │ ├── TODO │ │ ├── navbar │ │ │ └── app.py │ │ ├── sidebar │ │ │ ├── app.py │ │ │ └── data.py │ │ └── update_popover │ │ │ └── app.py │ ├── _internal │ │ └── test_e2e_regex_matching.py │ ├── async │ │ ├── app.py │ │ └── test_async.py │ ├── bookmark │ │ ├── chat │ │ │ ├── chatlas │ │ │ │ ├── app.py │ │ │ │ └── test_bookmark_chatlas.py │ │ │ └── client_state │ │ │ │ ├── app.py │ │ │ │ └── test_bookmark_chat.py │ │ ├── dir │ │ │ ├── .gitignore │ │ │ ├── app-attr.py │ │ │ ├── app-global.py │ │ │ └── test_bookmark_global.py │ │ ├── modal │ │ │ ├── app.py │ │ │ └── test_bookmark_modal.py │ │ └── modules │ │ │ ├── app-core-recursive.py │ │ │ ├── app-core.py │ │ │ ├── app-express.py │ │ │ └── test_bookmark_modules.py │ ├── brand_kitchensink │ │ └── test_brand_yml.py │ ├── bugs │ │ ├── 0648-update-slider-datetime-value │ │ │ ├── app.py │ │ │ └── test_update_slider_datetime_value.py │ │ ├── 0666-sidebar │ │ │ ├── app.py │ │ │ ├── colors.py │ │ │ └── test_sidebar_colors.py │ │ ├── 0676-row-selection │ │ │ ├── app.py │ │ │ └── test_0676_row_selection.py │ │ ├── 0696-resolve-id │ │ │ ├── app.py │ │ │ ├── check.py │ │ │ ├── imgs │ │ │ │ ├── Adelie_sm.png │ │ │ │ ├── Chinstrap_sm.png │ │ │ │ ├── Gentoo_sm.png │ │ │ │ └── palmerpenguins_sm.png │ │ │ ├── mod_state.py │ │ │ ├── test_0696_resolve_id.py │ │ │ └── test_file.txt │ │ ├── 1345-render-data-frame-input │ │ │ ├── app.py │ │ │ └── test_1345_input_selected_rows.py │ │ ├── 1351-render-data-frame-selected │ │ │ ├── app.py │ │ │ └── test_1351_selected_row.py │ │ └── 1390-df-selected-row-filtered │ │ │ ├── app.py │ │ │ └── test_1390_selected_row_filtered.py │ ├── components │ │ ├── MarkdownStream │ │ │ ├── basic │ │ │ │ ├── README.md │ │ │ │ ├── app.py │ │ │ │ └── test_stream_basic.py │ │ │ ├── shiny_ui │ │ │ │ ├── app.py │ │ │ │ └── test_stream_shiny_ui.py │ │ │ └── stream-result │ │ │ │ ├── app.py │ │ │ │ └── test_latest_stream_result.py │ │ ├── accordion │ │ │ ├── app.py │ │ │ └── test_accordion.py │ │ ├── busy_indicators │ │ │ ├── app.py │ │ │ └── test_busy_indicators.py │ │ ├── card-input │ │ │ ├── app-express.py │ │ │ ├── app-module.py │ │ │ └── test_card-input.py │ │ ├── chat │ │ │ ├── append_user_msg │ │ │ │ ├── app.py │ │ │ │ └── test_chat_append_user_msg.py │ │ │ ├── basic │ │ │ │ ├── app.py │ │ │ │ └── test_chat_basic.py │ │ │ ├── dynamic_ui │ │ │ │ ├── app.py │ │ │ │ └── test_chat_dynamic_ui.py │ │ │ ├── errors │ │ │ │ ├── app.py │ │ │ │ └── test_chat_errors.py │ │ │ ├── icon │ │ │ │ ├── app.py │ │ │ │ ├── img │ │ │ │ │ ├── grace-hopper.jpg │ │ │ │ │ └── shiny.png │ │ │ │ └── test_chat_icon.py │ │ │ ├── input-suggestion │ │ │ │ ├── app.py │ │ │ │ ├── test_chat_input_suggestion.py │ │ │ │ └── www │ │ │ │ │ └── shiny-hex.svg │ │ │ ├── message_stream_context │ │ │ │ ├── app.py │ │ │ │ └── test_chat_message_stream_context.py │ │ │ ├── module │ │ │ │ ├── app.py │ │ │ │ └── test_chat_module.py │ │ │ ├── shiny_input │ │ │ │ ├── app.py │ │ │ │ └── test_chat_shiny_input.py │ │ │ ├── shiny_output │ │ │ │ ├── app.py │ │ │ │ └── test_chat_shiny_output.py │ │ │ ├── stream-result │ │ │ │ ├── app.py │ │ │ │ └── test_chat_stream_result.py │ │ │ ├── stream │ │ │ │ ├── app.py │ │ │ │ └── test_chat_stream.py │ │ │ ├── transform │ │ │ │ ├── app.py │ │ │ │ └── test_chat_transform.py │ │ │ ├── transform_assistant │ │ │ │ ├── app.py │ │ │ │ └── test_chat_transform_assistant.py │ │ │ ├── transform_assistant_stream │ │ │ │ ├── app.py │ │ │ │ └── test_chat_transform_assistant_stream.py │ │ │ └── update_user_input │ │ │ │ ├── app.py │ │ │ │ └── test_chat_update_user_input.py │ │ ├── data_frame │ │ │ ├── column_types │ │ │ │ └── app.py │ │ │ ├── data_type │ │ │ │ ├── app.py │ │ │ │ └── test_df_data_type.py │ │ │ ├── data_view_info │ │ │ │ ├── app.py │ │ │ │ └── test_df_data_view_info.py │ │ │ ├── df_methods │ │ │ │ ├── app.py │ │ │ │ └── test_df_methods.py │ │ │ ├── dtypes │ │ │ │ ├── app.py │ │ │ │ └── test_df_dtypes.py │ │ │ ├── edit │ │ │ │ └── app.py │ │ │ ├── example │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── test_data_frame.ambr │ │ │ │ └── test_data_frame.py │ │ │ ├── filter_reset │ │ │ │ ├── app.py │ │ │ │ └── test_filter_reset.py │ │ │ ├── html_columns │ │ │ │ ├── app.py │ │ │ │ ├── test_edit_cell_content.py │ │ │ │ └── test_html_columns.py │ │ │ ├── pandas_compatible │ │ │ │ ├── app.py │ │ │ │ └── test_df_pandas_compatible.py │ │ │ ├── patch_save_state │ │ │ │ ├── app.py │ │ │ │ └── test_patch_state_state.py │ │ │ ├── return_type │ │ │ │ └── app.py │ │ │ ├── row_selection │ │ │ │ ├── app.py │ │ │ │ └── test_row_selection.py │ │ │ ├── select_multiple_rows_mode │ │ │ │ └── app.py │ │ │ ├── select_single_row_mode │ │ │ │ └── app.py │ │ │ ├── styles │ │ │ │ ├── app.py │ │ │ │ ├── great_tables_test_utils.py │ │ │ │ └── test_df_styles.py │ │ │ ├── styles_class │ │ │ │ ├── app.py │ │ │ │ └── test_df_styles_class.py │ │ │ ├── tabbing │ │ │ │ ├── app.py │ │ │ │ └── test_tabbing.py │ │ │ ├── update_cell_value │ │ │ │ ├── app.py │ │ │ │ └── test_cell_value.py │ │ │ ├── update_data │ │ │ │ ├── app.py │ │ │ │ └── test_update_data.py │ │ │ ├── validate_column_labels │ │ │ │ ├── app.py │ │ │ │ └── test_validate_column_labels.py │ │ │ ├── validate_data_edit_mode │ │ │ │ ├── app.py │ │ │ │ └── test_validate_data_edit_mode.py │ │ │ ├── validate_data_save │ │ │ │ ├── app.py │ │ │ │ └── test_validate_data_save.py │ │ │ └── validate_row_selection_edit_mode │ │ │ │ ├── app.py │ │ │ │ └── test_validate_row_selection_edit_mode.py │ │ ├── layout_columns │ │ │ └── test_layout_columns.py │ │ ├── nav │ │ │ ├── app.py │ │ │ ├── navset_bar_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_navset_bar.py │ │ │ ├── navset_bar_options │ │ │ │ ├── app.py │ │ │ │ └── test_navset_bar_options.py │ │ │ ├── navset_hidden_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_navset_hidden_kitchensink.py │ │ │ ├── navsets_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_navsets_kitchensink.py │ │ │ ├── page_navbar_kitchensink │ │ │ │ ├── default_page_navbar │ │ │ │ │ ├── app.py │ │ │ │ │ └── test_default_page_navbar_app.py │ │ │ │ ├── page_navbar_fillable │ │ │ │ │ ├── app.py │ │ │ │ │ └── test_page_navbar_fillable_app.py │ │ │ │ ├── page_navbar_fixed_bottom_inverse_bg │ │ │ │ │ ├── app.py │ │ │ │ │ └── test_page_navbar_fixed_bottom_inverse_bg_app.py │ │ │ │ ├── page_navbar_header_footer_fixed_top │ │ │ │ │ ├── app.py │ │ │ │ │ └── test_page_navbar_header_footer_fixed_top_app.py │ │ │ │ ├── page_navbar_selected │ │ │ │ │ ├── app.py │ │ │ │ │ └── test_page_navbar_selected_app.py │ │ │ │ └── page_navbar_sidebar │ │ │ │ │ ├── app.py │ │ │ │ │ └── test_page_navbar_sidebar_app.py │ │ │ └── test_nav.py │ │ ├── navset_hidden │ │ │ ├── app.py │ │ │ └── test_nav_hidden.py │ │ ├── popover │ │ │ ├── popover_test_kitchen │ │ │ │ ├── app.py │ │ │ │ └── test_popover_kitchensink.py │ │ │ └── update_popover │ │ │ │ ├── app.py │ │ │ │ └── test_popover.py │ │ ├── table │ │ │ ├── app.py │ │ │ └── test_table.py │ │ ├── test_sidebar.py │ │ ├── tooltip │ │ │ ├── tooltip_test_kitchen │ │ │ │ ├── app.py │ │ │ │ └── test_tooltip_test_kitchen.py │ │ │ └── update_tooltip │ │ │ │ ├── app.py │ │ │ │ └── test_tooltip.py │ │ └── value_box │ │ │ ├── kitchensink │ │ │ ├── app.py │ │ │ └── test_valuebox_ks.py │ │ │ └── smoke │ │ │ ├── app.py │ │ │ └── test_valuebox.py │ ├── default-render-ui │ │ ├── app.py │ │ └── test_default_render_ui.py │ ├── deprecated │ │ └── output_transformer │ │ │ ├── app.py │ │ │ └── test_output_transformer_example.py │ ├── experimental │ │ └── card │ │ │ ├── app.py │ │ │ ├── kitchensink │ │ │ ├── app.py │ │ │ └── test_card_ks.py │ │ │ └── test_card.py │ ├── implicit-register │ │ ├── app.py │ │ └── test_implicit_register.py │ ├── inputs │ │ ├── accordion_kitchensink │ │ │ ├── app.py │ │ │ └── test_accordion_kitchensink.py │ │ ├── input_file │ │ │ ├── app.py │ │ │ └── test_input_file.py │ │ ├── input_kitchensink │ │ │ ├── input_action_button_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_action_button_kitchensink.py │ │ │ ├── input_action_link_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_action_link_kitchensink.py │ │ │ ├── input_checkbox │ │ │ │ ├── app.py │ │ │ │ └── test_input_checkbox_kitchensink.py │ │ │ ├── input_checkbox_group │ │ │ │ ├── app.py │ │ │ │ └── test_input_checkbox_group_kitchensink.py │ │ │ ├── input_numeric_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_numeric_kitchensink.py │ │ │ ├── input_password_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_password_kitchensink.py │ │ │ ├── input_radio_buttons_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_radio_buttons_kitchensink.py │ │ │ ├── input_select │ │ │ │ ├── app.py │ │ │ │ └── test_input_select_kitchensink.py │ │ │ ├── input_selectize │ │ │ │ ├── app.py │ │ │ │ └── test_input_selectize_kitchensink.py │ │ │ ├── input_switch_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_switch_kitchensink.py │ │ │ ├── input_text_area_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_text_area_kitchensink.py │ │ │ └── input_text_kitchensink │ │ │ │ ├── app.py │ │ │ │ └── test_input_text_kitchensink.py │ │ ├── input_radio_checkbox_group │ │ │ ├── app.py │ │ │ └── test_input_radio_checkbox_group_app.py │ │ ├── input_selectize │ │ │ ├── app.py │ │ │ └── test_input_selectize.py │ │ ├── input_slider │ │ │ ├── app.py │ │ │ └── test_input_slider_app.py │ │ ├── input_task_button │ │ │ ├── app.py │ │ │ └── test_input_task_button.py │ │ ├── input_task_button2 │ │ │ ├── app.py │ │ │ └── test_input_task_button2.py │ │ ├── input_text_area │ │ │ └── autoresize │ │ │ │ ├── app.py │ │ │ │ └── test_accordion_autoresize.py │ │ ├── input_text_update_on │ │ │ ├── app.py │ │ │ └── test_input_text_update_on.py │ │ ├── sidebar_kitchensink │ │ │ ├── app.py │ │ │ └── test_sidebar_kitchensink.py │ │ ├── test_input_action_button_link.py │ │ ├── test_input_checkbox.py │ │ ├── test_input_checkbox_group.py │ │ ├── test_input_dark_mode.py │ │ ├── test_input_date.py │ │ ├── test_input_date_range.py │ │ ├── test_input_numeric.py │ │ ├── test_input_password.py │ │ ├── test_input_radio_buttons.py │ │ ├── test_input_select.py │ │ ├── test_input_slider.py │ │ ├── test_input_switch.py │ │ ├── test_input_text.py │ │ ├── test_input_text_area.py │ │ └── test_inputs_update.py │ ├── module-conditional │ │ ├── app.py │ │ └── test_module_conditional.py │ ├── outputs │ │ ├── test_output_image.py │ │ ├── test_output_plot.py │ │ ├── test_output_table.py │ │ ├── test_output_text.py │ │ └── test_output_ui.py │ ├── plot-sizing │ │ ├── app.py │ │ ├── bike.jpg │ │ └── test_plot_sizing.py │ ├── server │ │ ├── output_transformer │ │ │ ├── app.py │ │ │ └── test_output_transformer_async.py │ │ └── reactive_event │ │ │ ├── app.py │ │ │ └── test_reactive_event.py │ ├── session │ │ ├── clientdata │ │ │ ├── app.py │ │ │ └── test_clientdata.py │ │ └── flush │ │ │ ├── app.py │ │ │ └── test_on_flush.py │ └── shiny-express │ │ ├── hold │ │ ├── app.py │ │ └── test_hold.py │ │ └── render_express │ │ └── test_render_express.py └── utils │ ├── __init__.py │ └── deploy_utils.py └── pytest ├── __init__.py ├── _utils.py ├── asyncio_prevent.py ├── mocktime.py ├── test_annotations.py ├── test_chat.py ├── test_datastructures.py ├── test_display_decorator.py ├── test_express.py ├── test_express_ui.py ├── test_express_utils.py ├── test_input_dark_mode.py ├── test_layout_column_wrap.py ├── test_markdown.py ├── test_modules.py ├── test_named_temporary_file.py ├── test_namespaces.py ├── test_navs.py ├── test_output_transformer.py ├── test_playwright_filter.py ├── test_plot_sizing.py ├── test_poll.py ├── test_reactive_method.py ├── test_reactives.py ├── test_render_data_frame.py ├── test_render_data_frame_tbl_data.py ├── test_renderer.py ├── test_shiny_import.py ├── test_shinysession.py ├── test_sidebar.py ├── test_static.py ├── test_theme.py ├── test_ui.py ├── test_ui_dependencies.py ├── test_utils.py └── test_utils_async.py /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/psf/black 3 | rev: "24.2.0" 4 | hooks: 5 | - id: black 6 | language_version: python3 7 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "organizeImportsSkipDestructiveCodeActions": true, 3 | "overrides": [ 4 | { 5 | "files": "**/*.scss", 6 | "options": { 7 | "printWidth": 150 8 | } 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "posit.shiny", 4 | "esbenp.prettier-vscode", 5 | "ms-python.black-formatter", 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | title: "Shiny for Python" 3 | message: "If you use this software, please cite it as below." 4 | authors: 5 | - name: "The Shiny development team" 6 | license: MIT 7 | license-url: "https://github.com/posit-dev/py-shiny/blob/main/LICENSE" 8 | repository-code: "https://github.com/posit-dev/py-shiny" 9 | type: software 10 | url: "https://shiny.posit.co/py/" 11 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | 3 | recursive-include tests * 4 | recursive-exclude * __pycache__ 5 | recursive-exclude * shiny_bookmarks 6 | recursive-exclude * *.py[co] 7 | 8 | recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif 9 | 10 | recursive-include shiny/www * 11 | recursive-include shiny/experimental/www * 12 | recursive-include shiny/api-examples * 13 | recursive-include shiny/templates * 14 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | api/ 3 | _inv/ 4 | _sidebar.yml 5 | /.quarto/ 6 | objects.json 7 | site_libs/ 8 | _objects_*.json 9 | -------------------------------------------------------------------------------- /docs/_extensions/machow/interlinks/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.pdf 3 | *_files/ 4 | -------------------------------------------------------------------------------- /docs/_extensions/machow/interlinks/_extension.yml: -------------------------------------------------------------------------------- 1 | title: Interlinks 2 | author: Michael Chow 3 | version: 1.0.0 4 | quarto-required: ">=1.2.0" 5 | contributes: 6 | filters: 7 | - interlinks.lua 8 | -------------------------------------------------------------------------------- /docs/_extensions/quarto-ext/shinylive/_extension.yml: -------------------------------------------------------------------------------- 1 | name: shinylive 2 | title: Embedded Shinylive applications 3 | author: Winston Chang 4 | version: 0.1.0 5 | quarto-required: ">=1.2.198" 6 | contributes: 7 | filters: 8 | - shinylive.lua 9 | -------------------------------------------------------------------------------- /docs/shiny-docs.css: -------------------------------------------------------------------------------- 1 | #parameters dd { 2 | margin-top: 0.5rem; 3 | margin-left: 2rem; 4 | } 5 | -------------------------------------------------------------------------------- /examples/airmass/README.md: -------------------------------------------------------------------------------- 1 | ## Airmass app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/airmass/requirements.txt: -------------------------------------------------------------------------------- 1 | astropy 2 | ipyleaflet 3 | matplotlib 4 | numpy 5 | pandas 6 | pytz 7 | shiny 8 | shinywidgets 9 | suntime 10 | timezonefinder 11 | -------------------------------------------------------------------------------- /examples/annotation-export/README.md: -------------------------------------------------------------------------------- 1 | ## Plot annotation app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/annotation-export/requirements.txt: -------------------------------------------------------------------------------- 1 | seaborn 2 | pandas 3 | shiny 4 | matplotlib 5 | -------------------------------------------------------------------------------- /examples/brand/Monda.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/brand/Monda.ttf -------------------------------------------------------------------------------- /examples/brand/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.page_opts(theme=ui.Theme.from_brand(__file__)) 4 | 5 | ui.input_slider("n", "N", 0, 100, 20) 6 | 7 | 8 | @render.code 9 | def txt(): 10 | return f"n*2 is {input.n() * 2}" 11 | -------------------------------------------------------------------------------- /examples/brand/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny[theme] 2 | matplotlib 3 | numpy 4 | -------------------------------------------------------------------------------- /examples/brownian/README.md: -------------------------------------------------------------------------------- 1 | ## Hand-driven data exploration app 2 | -------------------------------------------------------------------------------- /examples/brownian/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | shiny 3 | plotly 4 | shinywidgets 5 | -------------------------------------------------------------------------------- /examples/brownian/shinymediapipe/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /examples/brownian/shinymediapipe/__init__.py: -------------------------------------------------------------------------------- 1 | from ._hand import dependencies, input_hand, hand_options 2 | 3 | __all__ = ( 4 | "dependencies", 5 | "hand_options", 6 | "input_hand", 7 | ) 8 | -------------------------------------------------------------------------------- /examples/brownian/shinymediapipe/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shinymediapipe", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "@mediapipe/camera_utils": "^0.3.1640029074", 13 | "@mediapipe/control_utils": "^0.6.1629159505", 14 | "@mediapipe/drawing_utils": "^0.3.1620248257", 15 | "@mediapipe/hands": "^0.4.1646424915" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /examples/busy_indicators/README.md: -------------------------------------------------------------------------------- 1 | ## Busy indicators app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/busy_indicators/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | seaborn 3 | shiny 4 | -------------------------------------------------------------------------------- /examples/cpuinfo/README.md: -------------------------------------------------------------------------------- 1 | ## CPU usage app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/cpuinfo/fakepsutil.py: -------------------------------------------------------------------------------- 1 | """Generates synthetic data""" 2 | 3 | import numpy as np 4 | 5 | 6 | def cpu_count(logical: bool = True): 7 | return 8 if logical else 4 8 | 9 | 10 | last_sample = np.random.uniform(0, 100, size=cpu_count(True)) 11 | 12 | 13 | def cpu_percent(percpu: bool = False): 14 | global last_sample 15 | delta = np.random.normal(scale=10, size=len(last_sample)) 16 | last_sample = (last_sample + delta).clip(0, 100) 17 | if percpu: 18 | return last_sample.tolist() 19 | else: 20 | return last_sample.mean() 21 | -------------------------------------------------------------------------------- /examples/cpuinfo/requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib 2 | numpy 3 | pandas 4 | psutil 5 | shiny 6 | -------------------------------------------------------------------------------- /examples/dataframe/README.md: -------------------------------------------------------------------------------- 1 | ## Data frame viewer 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/dataframe/requirements.txt: -------------------------------------------------------------------------------- 1 | pandas 2 | seaborn 3 | shiny 4 | shinyswatch 5 | -------------------------------------------------------------------------------- /examples/duckdb/.gitignore: -------------------------------------------------------------------------------- 1 | cities.csv 2 | weather_forecasts.csv 3 | weather.db 4 | -------------------------------------------------------------------------------- /examples/duckdb/README.md: -------------------------------------------------------------------------------- 1 | ## DuckDB query weather explorer 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/duckdb/requirements.txt: -------------------------------------------------------------------------------- 1 | duckdb 2 | pandas 3 | shiny 4 | shinyswatch 5 | -------------------------------------------------------------------------------- /examples/event/README.md: -------------------------------------------------------------------------------- 1 | ## Sync / Async events 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/event/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /examples/express/basic_app.py: -------------------------------------------------------------------------------- 1 | from shiny import render 2 | from shiny.express import input, ui 3 | 4 | ui.input_slider("n", "N", 1, 100, 50) 5 | 6 | 7 | @render.code() 8 | def txt(): 9 | return f"n = {input.n()}" 10 | -------------------------------------------------------------------------------- /examples/express/plot_app.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | 4 | from shiny import render 5 | from shiny.express import input, ui 6 | 7 | ui.input_slider("n", "N", 1, 100, 50) 8 | 9 | 10 | @render.plot 11 | def histogram(): 12 | np.random.seed(19680801) 13 | x = 100 + 15 * np.random.randn(437) 14 | plt.hist(x, input.n(), density=True) 15 | -------------------------------------------------------------------------------- /examples/express/render_express_app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_slider("n", "N", 1, 100, 50) 4 | 5 | 6 | # @render.express is like @render.ui, but with Express syntax 7 | @render.express 8 | def render_express1(): 9 | "Slider value:" 10 | input.n() 11 | 12 | 13 | # @render.express() also works with parens 14 | @render.express() 15 | def render_express2(): 16 | "Slider value:" 17 | input.n() 18 | -------------------------------------------------------------------------------- /examples/express/requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib 2 | numpy 3 | shiny 4 | -------------------------------------------------------------------------------- /examples/express/sidebar_app.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | 4 | from shiny import render 5 | from shiny.express import input, ui 6 | 7 | with ui.sidebar(): 8 | ui.input_slider("n", "N", 1, 100, 50) 9 | 10 | 11 | @render.plot 12 | def histogram(): 13 | np.random.seed(19680801) 14 | x = 100 + 15 * np.random.randn(437) 15 | plt.hist(x, input.n(), density=True) 16 | -------------------------------------------------------------------------------- /examples/global_pyplot/README.md: -------------------------------------------------------------------------------- 1 | ## Plotting with `matplotlib.pyplot` 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/global_pyplot/requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib 2 | shiny 3 | -------------------------------------------------------------------------------- /examples/headers/README.md: -------------------------------------------------------------------------------- 1 | ## HTTP request headers app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/headers/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /examples/inputs-update/README.md: -------------------------------------------------------------------------------- 1 | ## Updating shiny inputs 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/inputs-update/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /examples/load_balance/README.md: -------------------------------------------------------------------------------- 1 | ## Sticky load balance test app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/load_balance/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | starlette 3 | -------------------------------------------------------------------------------- /examples/model-score/.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | -------------------------------------------------------------------------------- /examples/model-score/README.md: -------------------------------------------------------------------------------- 1 | ## Model monitoring dashboard 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/model-score/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | pandas 3 | plotly 4 | shiny 5 | shinywidgets 6 | -------------------------------------------------------------------------------- /examples/moduleapp/README.md: -------------------------------------------------------------------------------- 1 | ## Model monitoring dashboard 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/moduleapp/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /examples/penguins/README.md: -------------------------------------------------------------------------------- 1 | ## Penguins dashboard 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/penguins/requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib 2 | pandas 3 | seaborn 4 | shiny 5 | -------------------------------------------------------------------------------- /examples/penguins/www/Adelie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/Adelie.png -------------------------------------------------------------------------------- /examples/penguins/www/Chinstrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/Chinstrap.png -------------------------------------------------------------------------------- /examples/penguins/www/Gentoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/Gentoo.png -------------------------------------------------------------------------------- /examples/penguins/www/palmerpenguins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/palmerpenguins.png -------------------------------------------------------------------------------- /examples/penguins/www/penguins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/penguins.png -------------------------------------------------------------------------------- /examples/req/README.md: -------------------------------------------------------------------------------- 1 | ## Error handling example app 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/req/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /examples/static_plots/README.md: -------------------------------------------------------------------------------- 1 | ## Static Plots 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/static_plots/requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib 2 | numpy 3 | pandas 4 | seaborn 5 | plotnine 6 | shiny 7 | -------------------------------------------------------------------------------- /examples/typed_inputs/README.md: -------------------------------------------------------------------------------- 1 | ## Typed inputs 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/typed_inputs/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /examples/ui-func/README.md: -------------------------------------------------------------------------------- 1 | ## UI as a function 2 | 3 | 4 | -------------------------------------------------------------------------------- /examples/ui-func/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | starlette 3 | -------------------------------------------------------------------------------- /js/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | esbuild-metadata.json 3 | -------------------------------------------------------------------------------- /js/.nvmrc: -------------------------------------------------------------------------------- 1 | v18 2 | -------------------------------------------------------------------------------- /js/data-frame/globals.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.scss"; 2 | -------------------------------------------------------------------------------- /js/spin/spin.scss: -------------------------------------------------------------------------------- 1 | @keyframes py-shiny-spin { 2 | 0% { 3 | transform: rotate(0deg); 4 | } 5 | 100% { 6 | transform: rotate(360deg); 7 | } 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .py-shiny-spin { 12 | animation: py-shiny-spin 2s linear infinite; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /pyrightconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": [ 3 | "shiny/api-examples", 4 | "examples", 5 | "build", 6 | "dist", 7 | "typings", 8 | "sandbox", 9 | "_dev", 10 | "docs", 11 | "tests/playwright/deploys/*/app.py", 12 | "shiny/templates", 13 | "tests/playwright/ai_generated_apps", 14 | ], 15 | "typeCheckingMode": "strict", 16 | "reportImportCycles": "none", 17 | "reportUnusedFunction": "none", 18 | "reportPrivateUsage": "none", 19 | "reportUnnecessaryIsInstance": "none", 20 | "executionEnvironments": [{ "root": "examples/" }] 21 | } 22 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | asyncio_mode=strict 3 | # Used for ./tests/pytest/asyncio_prevent.py 4 | asyncio_default_fixture_loop_scope=fixture 5 | testpaths=tests/pytest/ 6 | ; Note: Browsers are set within `./Makefile` 7 | addopts = --strict-markers --durations=6 --durations-min=5.0 --numprocesses auto 8 | verbosity_test_cases=2 9 | -------------------------------------------------------------------------------- /scripts/_pkg-sources.R: -------------------------------------------------------------------------------- 1 | list( 2 | bslib = "rstudio/bslib@main", 3 | shiny = "rstudio/shiny@main", 4 | sass = "sass", 5 | htmltools = "rstudio/htmltools@main" 6 | ) 7 | -------------------------------------------------------------------------------- /shiny/__main__.py: -------------------------------------------------------------------------------- 1 | from ._main import main 2 | 3 | if __name__ == "__main__": 4 | main() 5 | -------------------------------------------------------------------------------- /shiny/_shinyenv.py: -------------------------------------------------------------------------------- 1 | """ 2 | Information about the execution environment for Shiny 3 | """ 4 | 5 | import sys 6 | 7 | # True if we're executing in WASM mode, False if we're executing using actual Python 8 | is_pyodide: bool = "pyodide" in sys.modules 9 | -------------------------------------------------------------------------------- /shiny/_versions.py: -------------------------------------------------------------------------------- 1 | shiny_html_deps = "1.10.0.9001" 2 | bslib = "0.9.0.9000" 3 | htmltools = "0.5.8.9000" 4 | bootstrap = "5.3.1" 5 | requirejs = "2.3.6" 6 | 7 | __all__ = ( 8 | "shiny_html_deps", 9 | "bslib", 10 | "htmltools", 11 | "bootstrap", 12 | "requirejs", 13 | ) 14 | -------------------------------------------------------------------------------- /shiny/api-examples/Chat/_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "app", 3 | "id": "chat-hello", 4 | "title": "Hello Shiny Chat", 5 | "next_steps": [ 6 | "Run the app with `shiny run app.py`." 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /shiny/api-examples/Chat/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | -------------------------------------------------------------------------------- /shiny/api-examples/SafeException/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | from shiny.types import SafeException 3 | 4 | app_ui = ui.page_fluid(ui.output_ui("safe"), ui.output_ui("unsafe")) 5 | 6 | 7 | def server(input: Inputs, output: Outputs, session: Session): 8 | @render.ui 9 | def safe(): 10 | raise SafeException("This is a safe exception") 11 | 12 | @render.ui 13 | def unsafe(): 14 | raise Exception("This is an unsafe exception") 15 | 16 | 17 | app = App(app_ui, server) 18 | app.sanitize_errors = True 19 | -------------------------------------------------------------------------------- /shiny/api-examples/SafeException/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import render 2 | from shiny.types import SafeException 3 | 4 | 5 | @render.ui 6 | def safe(): 7 | # This error _won't_ be sanitized when deployed 8 | raise SafeException("This is a safe exception") 9 | 10 | 11 | @render.ui 12 | def unsafe(): 13 | # This error _will_ be sanitized when deployed 14 | raise Exception("This is an unsafe exception") 15 | -------------------------------------------------------------------------------- /shiny/api-examples/SilentCancelOutputException/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | from shiny.types import SilentCancelOutputException 3 | 4 | ui.input_text( 5 | "txt", 6 | "Delete the input text completely: it won't get removed below the input", 7 | "Some text", 8 | width="400px", 9 | ) 10 | 11 | 12 | @render.ui 13 | def txt_out(): 14 | if not input.txt(): 15 | raise SilentCancelOutputException() 16 | return "Your input: " + input.txt() 17 | -------------------------------------------------------------------------------- /shiny/api-examples/SilentException/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | from shiny.types import SilentException 3 | 4 | ui.input_text( 5 | "txt", 6 | "Enter text to see it displayed below the input", 7 | width="400px", 8 | ) 9 | 10 | 11 | @render.ui 12 | def txt_out(): 13 | if not input.txt(): 14 | raise SilentException() 15 | return "Your input: " + input.txt() 16 | -------------------------------------------------------------------------------- /shiny/api-examples/accordion_panel/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | with ui.accordion(id="acc"): 4 | for letter in "ABCDE": 5 | with ui.accordion_panel(f"Section {letter}"): 6 | f"Some narrative for section {letter}" 7 | 8 | 9 | @render.code 10 | def acc_val(): 11 | return "input.acc(): " + str(input.acc()) 12 | -------------------------------------------------------------------------------- /shiny/api-examples/card/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.card( 5 | ui.card_header("This is the header"), 6 | ui.p("This is the body."), 7 | ui.p("This is still the body."), 8 | ui.card_footer("This is the footer"), 9 | full_screen=True, 10 | ), 11 | ) 12 | 13 | 14 | app = App(app_ui, server=None) 15 | -------------------------------------------------------------------------------- /shiny/api-examples/card/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | with ui.card(full_screen=True): 4 | ui.card_header("This is the header") 5 | ui.p("This is the body.") 6 | ui.p("This is still the body.") 7 | ui.card_footer("This is the footer") 8 | -------------------------------------------------------------------------------- /shiny/api-examples/card_footer/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.card( 5 | ui.card_header("This is the header"), 6 | ui.p("This is the body."), 7 | ui.p("This is still the body."), 8 | ui.card_footer("This is the footer"), 9 | full_screen=True, 10 | ) 11 | ) 12 | 13 | 14 | app = App(app_ui, server=None) 15 | -------------------------------------------------------------------------------- /shiny/api-examples/card_footer/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | with ui.card(full_screen=True): 4 | ui.card_header("This is the header") 5 | ui.p("This is the body.") 6 | ui.p("This is still the body.") 7 | ui.card_footer("This is the footer") 8 | -------------------------------------------------------------------------------- /shiny/api-examples/card_header/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.card( 5 | ui.card_header("This is the header"), 6 | ui.p("This is the body."), 7 | ui.p("This is still the body."), 8 | ui.card_footer("This is the footer"), 9 | full_screen=True, 10 | ) 11 | ) 12 | 13 | 14 | app = App(app_ui, server=None) 15 | -------------------------------------------------------------------------------- /shiny/api-examples/card_header/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | with ui.card(full_screen=True): 4 | ui.card_header("This is the header") 5 | ui.p("This is the body.") 6 | ui.p("This is still the body.") 7 | ui.card_footer("This is the footer") 8 | -------------------------------------------------------------------------------- /shiny/api-examples/data_frame_data_view/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | mtcars = pd.read_csv(app_dir / "mtcars.csv") 7 | -------------------------------------------------------------------------------- /shiny/api-examples/data_frame_update_filter/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | mtcars = pd.read_csv(app_dir / "mtcars.csv") 7 | -------------------------------------------------------------------------------- /shiny/api-examples/data_frame_update_sort/app-express.py: -------------------------------------------------------------------------------- 1 | from shared import mtcars 2 | 3 | from shiny import reactive 4 | from shiny.express import input, render, ui 5 | 6 | data = reactive.value(mtcars.iloc[:, range(4)]) 7 | 8 | with ui.card(): 9 | ui.input_action_button("btn", "Sort on columns 1↑ and 3↓") 10 | 11 | @render.data_frame 12 | def df(): 13 | return render.DataGrid(data()) 14 | 15 | 16 | @reactive.effect 17 | @reactive.event(input.btn) 18 | async def _(): 19 | await df.update_sort([{"col": 1, "desc": False}, {"col": 3, "desc": True}]) 20 | -------------------------------------------------------------------------------- /shiny/api-examples/data_frame_update_sort/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | mtcars = pd.read_csv(app_dir / "mtcars.csv") 7 | -------------------------------------------------------------------------------- /shiny/api-examples/download_button/app-express.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import random 3 | from datetime import date 4 | 5 | from shiny.express import render 6 | 7 | 8 | @render.download( 9 | filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100, 999)}.csv" 10 | ) 11 | async def downloadData(): 12 | await asyncio.sleep(0.25) 13 | yield "one,two,three\n" 14 | yield "新,1,2\n" 15 | yield "型,4,5\n" 16 | -------------------------------------------------------------------------------- /shiny/api-examples/effect/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, reactive, ui 2 | 3 | app_ui = ui.page_fluid(ui.input_action_button("btn", "Press me!")) 4 | 5 | 6 | def server(input: Inputs, output: Outputs, session: Session): 7 | @reactive.effect 8 | @reactive.event(input.btn) 9 | def _(): 10 | ui.insert_ui( 11 | ui.p("Number of clicks: ", input.btn()), 12 | selector="#btn", 13 | where="afterEnd", 14 | ) 15 | 16 | 17 | app = App(app_ui, server) 18 | -------------------------------------------------------------------------------- /shiny/api-examples/effect/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, ui 3 | 4 | ui.input_action_button("show", "Show modal dialog") 5 | 6 | 7 | @reactive.effect 8 | @reactive.event(input.show) 9 | def show_important_message(): 10 | m = ui.modal( 11 | "This is a somewhat important message.", 12 | easy_close=True, 13 | footer=None, 14 | ) 15 | ui.modal_show(m) 16 | -------------------------------------------------------------------------------- /shiny/api-examples/file_reader/app-express.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | 3 | import pandas as pd 4 | 5 | from shiny import reactive 6 | from shiny.express import render 7 | 8 | file = pathlib.Path(__file__).parent / "mtcars.csv" 9 | 10 | 11 | @reactive.file_reader(file) 12 | def read_file(): 13 | return pd.read_csv(file) 14 | 15 | 16 | @render.table 17 | def result(): 18 | return read_file() 19 | -------------------------------------------------------------------------------- /shiny/api-examples/include_css/app-core.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from shiny import App, ui 4 | 5 | css_file = Path(__file__).parent / "css" / "styles.css" 6 | 7 | app_ui = ui.page_fluid( 8 | "Almost before we knew it, we had left the ground!!!", 9 | ui.include_css(css_file), 10 | ui.div( 11 | # Style individual elements with an attribute dictionary. 12 | {"style": "font-weight: bold"}, 13 | ui.p("Bold text"), 14 | ), 15 | ) 16 | 17 | app = App(app_ui, None) 18 | -------------------------------------------------------------------------------- /shiny/api-examples/include_css/app-express.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from shiny.express import ui 4 | 5 | css_file = Path(__file__).parent / "css" / "styles.css" 6 | 7 | "Almost before we knew it, we had left the ground!!!" 8 | 9 | ui.include_css(css_file) 10 | 11 | # Style individual elements with an attribute dictionary. 12 | ui.p("Bold text", {"style": "font-weight: bold"}) 13 | -------------------------------------------------------------------------------- /shiny/api-examples/include_css/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 3rem; 3 | background-color: pink 4 | } 5 | -------------------------------------------------------------------------------- /shiny/api-examples/include_js/app-core.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from shiny import App, ui 4 | 5 | js_file = Path(__file__).parent / "js" / "app.js" 6 | 7 | app_ui = ui.page_fluid( 8 | "If you see this page before 'OK'-ing the alert box, something went wrong", 9 | ui.include_js(js_file), 10 | ) 11 | 12 | 13 | app = App(app_ui, None) 14 | -------------------------------------------------------------------------------- /shiny/api-examples/include_js/app-express.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from shiny.express import ui 4 | 5 | js_file = Path(__file__).parent / "js" / "app.js" 6 | 7 | "If you see this page before 'OK'-ing the alert box, something went wrong" 8 | 9 | ui.include_js(js_file) 10 | -------------------------------------------------------------------------------- /shiny/api-examples/include_js/js/app.js: -------------------------------------------------------------------------------- 1 | alert("If you're seeing this, the javascript file was included successfully."); 2 | -------------------------------------------------------------------------------- /shiny/api-examples/input_checkbox/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_checkbox("somevalue", "Some value", False), 5 | ui.output_ui("value"), 6 | ) 7 | 8 | 9 | def server(input: Inputs, output: Outputs, session: Session): 10 | @render.ui 11 | def value(): 12 | return input.somevalue() 13 | 14 | 15 | app = App(app_ui, server) 16 | -------------------------------------------------------------------------------- /shiny/api-examples/input_checkbox/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_checkbox("somevalue", "Some value", False) 4 | 5 | 6 | @render.ui 7 | def value(): 8 | return input.somevalue() 9 | -------------------------------------------------------------------------------- /shiny/api-examples/input_checkbox_group/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import req 2 | from shiny.express import input, render, ui 3 | 4 | ui.input_checkbox_group( 5 | "colors", 6 | "Choose color(s):", 7 | { 8 | "red": ui.span("Red", style="color: #FF0000;"), 9 | "green": ui.span("Green", style="color: #00AA00;"), 10 | "blue": ui.span("Blue", style="color: #0000AA;"), 11 | }, 12 | ) 13 | 14 | 15 | @render.ui 16 | def val(): 17 | req(input.colors()) 18 | return "You chose " + ", ".join(input.colors()) 19 | -------------------------------------------------------------------------------- /shiny/api-examples/input_numeric/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_numeric("obs", "Observations:", 10, min=1, max=100), 5 | ui.output_text_verbatim("value"), 6 | ) 7 | 8 | 9 | def server(input: Inputs, output: Outputs, session: Session): 10 | @render.text 11 | def value(): 12 | return input.obs() 13 | 14 | 15 | app = App(app_ui, server) 16 | -------------------------------------------------------------------------------- /shiny/api-examples/input_numeric/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_numeric("obs", "Observations:", 10, min=1, max=100) 4 | 5 | 6 | @render.code 7 | def value(): 8 | return input.obs() 9 | -------------------------------------------------------------------------------- /shiny/api-examples/input_password/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, reactive, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_password("password", "Password:"), 5 | ui.input_action_button("go", "Go"), 6 | ui.output_text_verbatim("value"), 7 | ) 8 | 9 | 10 | def server(input: Inputs, output: Outputs, session: Session): 11 | @render.text 12 | @reactive.event(input.go) 13 | def value(): 14 | return input.password() 15 | 16 | 17 | app = App(app_ui, server) 18 | -------------------------------------------------------------------------------- /shiny/api-examples/input_password/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, render, ui 3 | 4 | ui.input_password("password", "Password:") 5 | ui.input_action_button("go", "Go") 6 | 7 | 8 | @render.code 9 | @reactive.event(input.go) 10 | def value(): 11 | return input.password() 12 | -------------------------------------------------------------------------------- /shiny/api-examples/input_radio_buttons/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_radio_buttons( 4 | "rb", 5 | "Choose one:", 6 | { 7 | "html": ui.HTML("Red Text"), 8 | "text": "Normal text", 9 | }, 10 | ) 11 | 12 | 13 | @render.express 14 | def val(): 15 | "You chose " + input.rb() 16 | -------------------------------------------------------------------------------- /shiny/api-examples/input_select/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_select( 4 | "state", 5 | "Choose a state:", 6 | { 7 | "East Coast": {"NY": "New York", "NJ": "New Jersey", "CT": "Connecticut"}, 8 | "West Coast": {"WA": "Washington", "OR": "Oregon", "CA": "California"}, 9 | "Midwest": {"MN": "Minnesota", "WI": "Wisconsin", "IA": "Iowa"}, 10 | }, 11 | ) 12 | 13 | 14 | @render.text 15 | def value(): 16 | return "You choose: " + str(input.state()) 17 | -------------------------------------------------------------------------------- /shiny/api-examples/input_slider/app-express.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | 4 | from shiny.express import input, render, ui 5 | 6 | ui.input_slider("obs", "Number of bins:", min=10, max=100, value=30) 7 | 8 | 9 | @render.plot 10 | def distPlot(): 11 | np.random.seed(19680801) 12 | x = 100 + 15 * np.random.randn(437) 13 | 14 | fig, ax = plt.subplots() 15 | ax.hist(x, input.obs(), density=True) 16 | return fig 17 | -------------------------------------------------------------------------------- /shiny/api-examples/input_switch/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_switch("somevalue", "Some value", False), 5 | ui.output_text("value"), 6 | ) 7 | 8 | 9 | def server(input: Inputs, output: Outputs, session: Session): 10 | @render.text 11 | def value(): 12 | return input.somevalue() 13 | 14 | 15 | app = App(app_ui, server) 16 | -------------------------------------------------------------------------------- /shiny/api-examples/input_switch/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_switch("somevalue", "Some value", False) 4 | 5 | 6 | @render.text 7 | def value(): 8 | return input.somevalue() 9 | -------------------------------------------------------------------------------- /shiny/api-examples/input_text/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_text("caption", "Caption:", "Data summary"), 5 | ui.output_text_verbatim("value"), 6 | ) 7 | 8 | 9 | def server(input: Inputs, output: Outputs, session: Session): 10 | @render.text 11 | def value(): 12 | return input.caption() 13 | 14 | 15 | app = App(app_ui, server) 16 | -------------------------------------------------------------------------------- /shiny/api-examples/input_text/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_text("caption", "Caption:", "Data summary") 4 | 5 | 6 | @render.code 7 | def value(): 8 | return input.caption() 9 | -------------------------------------------------------------------------------- /shiny/api-examples/insert_ui/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, reactive, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_action_button("add", "Add UI"), 5 | ) 6 | 7 | 8 | def server(input: Inputs, output: Outputs, session: Session): 9 | @reactive.effect 10 | @reactive.event(input.add) 11 | def _(): 12 | ui.insert_ui( 13 | ui.input_text("txt" + str(input.add()), "Enter some text"), 14 | selector="#add", 15 | where="afterEnd", 16 | ) 17 | 18 | 19 | app = App(app_ui, server) 20 | -------------------------------------------------------------------------------- /shiny/api-examples/insert_ui/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, ui 3 | 4 | ui.input_action_button("add", "Add UI") 5 | 6 | 7 | @reactive.effect 8 | @reactive.event(input.add) 9 | def _(): 10 | ui.insert_ui( 11 | ui.input_text("txt" + str(input.add()), "Enter some text"), 12 | selector="#add", 13 | where="afterEnd", 14 | ) 15 | -------------------------------------------------------------------------------- /shiny/api-examples/invalidate_later/app-core.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | from shiny import App, Inputs, Outputs, Session, reactive, render, ui 4 | 5 | app_ui = ui.page_fluid(ui.output_text("value")) 6 | 7 | 8 | def server(input: Inputs, output: Outputs, session: Session): 9 | @render.text 10 | def value(): 11 | reactive.invalidate_later(0.5) 12 | return "Random int: " + str(random.randint(0, 10000)) 13 | 14 | 15 | app = App(app_ui, server) 16 | -------------------------------------------------------------------------------- /shiny/api-examples/invalidate_later/app-express.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | from shiny import reactive 4 | from shiny.express import render 5 | 6 | 7 | @render.text 8 | def value(): 9 | reactive.invalidate_later(0.5) 10 | return "Random int: " + str(random.randint(0, 10000)) 11 | -------------------------------------------------------------------------------- /shiny/api-examples/layout_column_wrap/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, ui 2 | 3 | y = ui.card("A simple card") 4 | 5 | app_ui = ui.page_fluid( 6 | # Always has 2 columns (on non-mobile) 7 | ui.layout_column_wrap(y, y, y, width=1 / 2), 8 | ui.hr(), 9 | # Has three columns when viewport is wider than 750px 10 | ui.layout_column_wrap(y, y, y, width="250px"), 11 | ) 12 | 13 | 14 | app = App(app_ui, server=None) 15 | -------------------------------------------------------------------------------- /shiny/api-examples/layout_column_wrap/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | with ui.hold() as a_card: 4 | with ui.card(): 5 | "A simple card" 6 | 7 | # Always has 2 columns (on non-mobile) 8 | with ui.layout_column_wrap(width=1 / 2): 9 | a_card 10 | a_card 11 | a_card 12 | 13 | ui.hr() 14 | 15 | # Has three columns when viewport is wider than 750px 16 | with ui.layout_column_wrap(width="250px"): 17 | a_card 18 | a_card 19 | a_card 20 | -------------------------------------------------------------------------------- /shiny/api-examples/layout_sidebar/app-express.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | 4 | from shiny.express import input, render, ui 5 | 6 | with ui.layout_sidebar(): 7 | with ui.sidebar(): 8 | ui.input_slider("n", "N", min=0, max=100, value=20) 9 | 10 | @render.plot(alt="A histogram") 11 | def plot() -> object: 12 | np.random.seed(19680801) 13 | x = 100 + 15 * np.random.randn(437) 14 | 15 | fig, ax = plt.subplots() 16 | ax.hist(x, input.n(), density=True) 17 | return fig 18 | -------------------------------------------------------------------------------- /shiny/api-examples/markdown/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, ui 2 | 3 | ui_app = ui.page_fluid( 4 | ui.markdown( 5 | """ 6 | # Hello World 7 | 8 | This is **markdown** and here is some `code`: 9 | 10 | ```python 11 | print('Hello world!') 12 | ``` 13 | """ 14 | ) 15 | ) 16 | 17 | 18 | def server(input: Inputs, output: Outputs, session: Session): 19 | pass 20 | 21 | 22 | app = App(ui_app, server) 23 | -------------------------------------------------------------------------------- /shiny/api-examples/markdown/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.markdown( 4 | """ 5 | # Hello World 6 | 7 | This is **markdown** and here is some `code`: 8 | 9 | ```python 10 | print('Hello world!') 11 | ``` 12 | """ 13 | ) 14 | -------------------------------------------------------------------------------- /shiny/api-examples/modal/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, ui 3 | 4 | ui.input_action_button("show", "Show modal dialog") 5 | 6 | 7 | @reactive.effect 8 | @reactive.event(input.show) 9 | def _(): 10 | m = ui.modal( 11 | "This is a somewhat important message.", 12 | title="Somewhat important message", 13 | easy_close=True, 14 | footer=None, 15 | ) 16 | ui.modal_show(m) 17 | -------------------------------------------------------------------------------- /shiny/api-examples/nav_control/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | with ui.navset_card_underline(id="tab"): 4 | with ui.nav_control(): 5 | ui.a("Shiny", href="https://shiny.posit.co", target="_blank") 6 | 7 | with ui.nav_control(): 8 | ui.a( 9 | "Learn Shiny", 10 | href="https://shiny.posit.co/py/docs/overview.html", 11 | target="_blank", 12 | ) 13 | -------------------------------------------------------------------------------- /shiny/api-examples/nav_menu/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | with ui.navset_card_pill(id="selected_card_pill"): 4 | with ui.nav_menu("Nav Menu items"): 5 | with ui.nav_panel("A"): 6 | "Page A content" 7 | with ui.nav_panel("B"): 8 | "Page B content" 9 | with ui.nav_panel("C"): 10 | "Page C content" 11 | ui.h5("Selected:") 12 | 13 | 14 | @render.code 15 | def _(): 16 | return input.selected_card_pill() 17 | -------------------------------------------------------------------------------- /shiny/api-examples/nav_panel/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.page_opts(title="Nav Panel Example") 4 | 5 | with ui.nav_panel("Page 1"): 6 | "Page 1 content" 7 | 8 | with ui.nav_panel("Page 2"): 9 | with ui.navset_card_underline(): 10 | with ui.nav_panel("Tab 1"): 11 | "Tab 1 content" 12 | with ui.nav_panel("Tab 2"): 13 | "Tab 2 content" 14 | with ui.nav_panel("Tab 3"): 15 | "Tab 3 content" 16 | -------------------------------------------------------------------------------- /shiny/api-examples/nav_spacer/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | with ui.navset_underline(id="selected_navset_underline"): 4 | with ui.nav_panel("Tab 1"): 5 | "Tab 1 content" 6 | ui.nav_spacer() 7 | with ui.nav_panel("Tab 2"): 8 | "Tab 2 content" 9 | with ui.nav_panel("Tab 3"): 10 | "Tab 3 content" 11 | ui.h5("Selected:") 12 | 13 | 14 | @render.code 15 | def _(): 16 | return input.selected_navset_underline() 17 | -------------------------------------------------------------------------------- /shiny/api-examples/output_image/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | from shiny.types import ImgData 3 | 4 | app_ui = ui.page_fluid(ui.output_image("image")) 5 | 6 | 7 | def server(input: Inputs, output: Outputs, session: Session): 8 | @render.image 9 | def image(): 10 | from pathlib import Path 11 | 12 | dir = Path(__file__).resolve().parent 13 | img: ImgData = {"src": str(dir / "posit-logo.png"), "width": "100px"} 14 | return img 15 | 16 | 17 | app = App(app_ui, server) 18 | -------------------------------------------------------------------------------- /shiny/api-examples/output_image/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import render 2 | 3 | 4 | @render.image 5 | def image(): 6 | from pathlib import Path 7 | 8 | dir = Path(__file__).resolve().parent 9 | img = {"src": str(dir / "posit-logo.png"), "width": "100px"} 10 | return img 11 | -------------------------------------------------------------------------------- /shiny/api-examples/output_image/posit-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/api-examples/output_image/posit-logo.png -------------------------------------------------------------------------------- /shiny/api-examples/output_plot/app-express.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | 4 | from shiny.express import input, render, ui 5 | 6 | ui.input_slider("n", "input_slider()", min=10, max=100, value=50, step=5, animate=True) 7 | 8 | 9 | @render.plot 10 | def p(): 11 | np.random.seed(19680801) 12 | x_rand = 100 + 15 * np.random.randn(437) 13 | fig, ax = plt.subplots() 14 | ax.hist(x_rand, int(input.n()), density=True) 15 | return fig 16 | -------------------------------------------------------------------------------- /shiny/api-examples/output_ui/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, render, ui 3 | 4 | ui.input_action_button("add", "Add more controls") 5 | 6 | 7 | @render.ui 8 | @reactive.event(input.add) 9 | def moreControls(): 10 | return [ 11 | ui.input_slider("n", "N", min=1, max=1000, value=500), 12 | ui.input_text("label", "Label"), 13 | ] 14 | -------------------------------------------------------------------------------- /shiny/api-examples/page_sidebar/app-express.py: -------------------------------------------------------------------------------- 1 | import matplotlib.pyplot as plt 2 | import numpy as np 3 | 4 | from shiny.express import input, render, ui 5 | 6 | with ui.sidebar(): 7 | ui.input_slider("n", "N", min=0, max=100, value=20) 8 | 9 | 10 | @render.plot(alt="A histogram") 11 | def plot() -> object: 12 | np.random.seed(19680801) 13 | x = 100 + 15 * np.random.randn(437) 14 | 15 | fig, ax = plt.subplots() 16 | ax.hist(x, input.n(), density=True) 17 | return fig 18 | -------------------------------------------------------------------------------- /shiny/api-examples/panel_absolute/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.h2("A basic absolute panel example") 4 | 5 | with ui.panel_absolute(draggable=True, width="300px", right="50px", top="25%"): 6 | with ui.panel_well(): 7 | "Drag me around!" 8 | ui.input_slider("n", "N", min=0, max=100, value=20) 9 | -------------------------------------------------------------------------------- /shiny/api-examples/panel_conditional/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.input_checkbox("show", "Show radio buttons", False) 4 | 5 | with ui.panel_conditional("input.show"): 6 | ui.input_radio_buttons("radio", "Choose ", ["slider", "select"]) 7 | 8 | with ui.panel_conditional("input.show && input.radio === 'slider'"): 9 | ui.input_slider("slider", None, min=0, max=100, value=50) 10 | 11 | with ui.panel_conditional("input.show && input.radio === 'select'"): 12 | ui.input_select("select", None, ["A", "B", "C"]) 13 | -------------------------------------------------------------------------------- /shiny/api-examples/panel_title/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, ui 2 | 3 | app_ui = ui.page_fluid(ui.panel_title("Page title", "Window title")) 4 | 5 | 6 | def server(input: Inputs, output: Outputs, session: Session): 7 | pass 8 | 9 | 10 | app = App(app_ui, server) 11 | -------------------------------------------------------------------------------- /shiny/api-examples/panel_title/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.panel_title("Page title", "Window title") 4 | -------------------------------------------------------------------------------- /shiny/api-examples/panel_title/app.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, ui 2 | 3 | app_ui = ui.page_fluid(ui.panel_title("Page title", "Window title")) 4 | 5 | 6 | def server(input: Inputs, output: Outputs, session: Session): 7 | pass 8 | 9 | 10 | app = App(app_ui, server) 11 | -------------------------------------------------------------------------------- /shiny/api-examples/remove_ui/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, reactive, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_action_button("rmv", "Remove UI"), 5 | ui.input_text("txt", "Click button above to remove me"), 6 | ) 7 | 8 | 9 | def server(input: Inputs, output: Outputs, session: Session): 10 | @reactive.effect 11 | @reactive.event(input.rmv) 12 | def _(): 13 | ui.remove_ui(selector="div:has(> #txt)") 14 | 15 | 16 | app = App(app_ui, server) 17 | -------------------------------------------------------------------------------- /shiny/api-examples/remove_ui/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, ui 3 | 4 | ui.input_action_button("rmv", "Remove UI") 5 | ui.input_text("txt", "Click button above to remove me") 6 | 7 | 8 | @reactive.effect 9 | @reactive.event(input.rmv) 10 | def _(): 11 | ui.remove_ui(selector="div:has(> #txt)") 12 | -------------------------------------------------------------------------------- /shiny/api-examples/render_express/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.input_text("name", "Name", "Socrates"), 5 | ui.input_text("years", "Years", "470-399 BC"), 6 | ui.output_ui("person"), 7 | ) 8 | 9 | 10 | def server(input, output, session): 11 | 12 | @render.express 13 | def person(): 14 | from shiny.express import ui 15 | 16 | with ui.card(class_="mt-3"): 17 | ui.h3(input.name()) 18 | input.years() 19 | 20 | 21 | app = App(app_ui, server) 22 | -------------------------------------------------------------------------------- /shiny/api-examples/render_express/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny.express import input, render, ui 2 | 3 | ui.input_text("name", "Name", "Socrates") 4 | ui.input_text("years", "Years", "470-399 BC") 5 | 6 | 7 | @render.express 8 | def person(): 9 | with ui.card(class_="mt-3"): 10 | ui.h3(input.name()) 11 | input.years() 12 | -------------------------------------------------------------------------------- /shiny/api-examples/session_on_ended/app-express.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from shiny import reactive 4 | from shiny.express import input, session, ui 5 | 6 | ui.input_action_button("close", "Close the session") 7 | 8 | 9 | def log(): 10 | print("Session ended at: " + datetime.now().strftime("%H:%M:%S")) 11 | 12 | 13 | _ = session.on_ended(log) 14 | 15 | 16 | @reactive.effect 17 | @reactive.event(input.close) 18 | async def _(): 19 | await session.close() 20 | -------------------------------------------------------------------------------- /shiny/api-examples/template/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.panel_title("Hello Shiny!"), 5 | ui.input_slider("n", "N", 0, 100, 20), 6 | ui.output_text_verbatim("txt"), 7 | ) 8 | 9 | 10 | def server(input, output, session): 11 | @render.text 12 | def txt(): 13 | return f"n*2 is {input.n() * 2}" 14 | 15 | 16 | app = App(app_ui, server) 17 | -------------------------------------------------------------------------------- /shiny/api-examples/theme/app-express-local.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from shared import filler_text 4 | 5 | from shiny.express import input, render, ui 6 | 7 | ui.page_opts( 8 | title="Theme Example", 9 | theme=Path(__file__).parent / "css" / "shiny-theme-demo.css", 10 | ) 11 | 12 | with ui.sidebar(title="Parameters"): 13 | ui.input_numeric("n", "N", min=0, max=100, value=20) 14 | 15 | ui.h2("Output") 16 | 17 | 18 | @render.code 19 | def txt(): 20 | return f"n*2 is {input.n() * 2}" 21 | 22 | 23 | ui.markdown(filler_text) 24 | -------------------------------------------------------------------------------- /shiny/api-examples/theme/app-express-remote.py: -------------------------------------------------------------------------------- 1 | from shared import filler_text 2 | 3 | from shiny.express import input, render, ui 4 | 5 | ui.page_opts( 6 | title="Theme Example", 7 | theme="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sketchy/bootstrap.min.css", 8 | ) 9 | 10 | with ui.sidebar(title="Parameters"): 11 | ui.input_numeric("n", "N", min=0, max=100, value=20) 12 | 13 | ui.h2("Output") 14 | 15 | 16 | @render.code 17 | def txt(): 18 | return f"n*2 is {input.n() * 2}" 19 | 20 | 21 | ui.markdown(filler_text) 22 | -------------------------------------------------------------------------------- /shiny/api-examples/theme/app-express-shinyswatch.py: -------------------------------------------------------------------------------- 1 | import shinyswatch 2 | from shared import filler_text 3 | 4 | from shiny.express import input, render, ui 5 | 6 | ui.page_opts( 7 | title="Theme Example", 8 | theme=shinyswatch.theme.slate, 9 | ) 10 | 11 | with ui.sidebar(title="Parameters"): 12 | ui.input_numeric("n", "N", min=0, max=100, value=20) 13 | 14 | ui.h2("Output") 15 | 16 | 17 | @render.code 18 | def txt(): 19 | return f"n*2 is {input.n() * 2}" 20 | 21 | 22 | ui.markdown(filler_text) 23 | -------------------------------------------------------------------------------- /shiny/api-examples/theme/css/rules.scss: -------------------------------------------------------------------------------- 1 | strong { 2 | color: $danger; 3 | } 4 | -------------------------------------------------------------------------------- /shiny/api-examples/todo_list/requirements.txt: -------------------------------------------------------------------------------- 1 | shinyswatch 2 | -------------------------------------------------------------------------------- /shiny/api-examples/tooltip/app-express.py: -------------------------------------------------------------------------------- 1 | from icons import question_circle_fill 2 | 3 | from shiny.express import ui 4 | 5 | with ui.tooltip(id="btn_tooltip"): 6 | ui.input_action_button("btn", "A button", class_="mt-3") 7 | 8 | "A message" 9 | 10 | with ui.card(class_="mt-3"): 11 | with ui.card_header(): 12 | with ui.tooltip(placement="right", id="card_tooltip"): 13 | ui.span("Card title ", question_circle_fill) 14 | "Additional info" 15 | 16 | "Card body content..." 17 | -------------------------------------------------------------------------------- /shiny/api-examples/update_checkbox/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import input, ui 3 | 4 | ui.input_slider("controller", "Controller", min=0, max=1, value=0, step=1) 5 | ui.input_checkbox("inCheckbox", "Input checkbox") 6 | 7 | 8 | @reactive.effect 9 | def _(): 10 | # True if controller is odd, False if even. 11 | x_even = input.controller() % 2 == 1 12 | ui.update_checkbox("inCheckbox", value=x_even) 13 | -------------------------------------------------------------------------------- /shiny/api-examples/update_date/app-express.py: -------------------------------------------------------------------------------- 1 | from datetime import date, timedelta 2 | 3 | from shiny import reactive 4 | from shiny.express import input, ui 5 | 6 | ui.input_slider("n", "Day of month", min=1, max=30, value=10) 7 | ui.input_date("inDate", "Input date") 8 | 9 | 10 | @reactive.effect 11 | def _(): 12 | d = date(2013, 4, input.n()) 13 | ui.update_date( 14 | "inDate", 15 | label="Date label " + str(input.n()), 16 | value=d, 17 | min=d - timedelta(days=3), 18 | max=d + timedelta(days=3), 19 | ) 20 | -------------------------------------------------------------------------------- /shiny/api-examples/update_selectize/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import ui 3 | 4 | ui.input_selectize("x", "Server side selectize", choices=[], multiple=True) 5 | 6 | 7 | @reactive.effect 8 | def _(): 9 | ui.update_selectize( 10 | "x", 11 | choices=[f"Foo {i}" for i in range(10000)], 12 | selected=["Foo 0", "Foo 1"], 13 | server=True, 14 | ) 15 | -------------------------------------------------------------------------------- /shiny/api-examples/www_dir/www/css/more-styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: limegreen; 3 | } 4 | -------------------------------------------------------------------------------- /shiny/api-examples/www_dir/www/css/styles.css: -------------------------------------------------------------------------------- 1 | @import url('more-styles.css'); 2 | body { 3 | font-size: 2rem; 4 | } 5 | -------------------------------------------------------------------------------- /shiny/api-examples/www_dir/www/js/changetext.js: -------------------------------------------------------------------------------- 1 | document.getElementById("target").innerText = "If you see this text, it worked!"; 2 | document.getElementById("target").style.backgroundColor = "limegreen"; 3 | -------------------------------------------------------------------------------- /shiny/experimental/__init__.py: -------------------------------------------------------------------------------- 1 | from . import ui 2 | 3 | __all__ = ("ui",) 4 | -------------------------------------------------------------------------------- /shiny/experimental/ui/__init__.py: -------------------------------------------------------------------------------- 1 | # Experimental 2 | 3 | from ._card import card_image 4 | from ._deprecated import card, card_body, card_title 5 | 6 | __all__ = ( 7 | # Deprecated 8 | "card", 9 | "card_body", 10 | "card_title", 11 | # Still experimental 12 | "card_image", 13 | ) 14 | -------------------------------------------------------------------------------- /shiny/express/app.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from pathlib import Path 4 | 5 | from ._run import wrap_express_app 6 | from ._utils import unescape_from_var_name 7 | 8 | 9 | # If someone requests shiny.express.app:_2f_path_2f_to_2f_app_2e_py, then we will call 10 | # wrap_express_app(Path("/path/to/app.py")) and return the result. 11 | def __getattr__(name: str) -> object: 12 | name = unescape_from_var_name(name) 13 | return wrap_express_app(Path(name)) 14 | -------------------------------------------------------------------------------- /shiny/express/expressify_decorator/__init__.py: -------------------------------------------------------------------------------- 1 | from ._expressify import expressify 2 | 3 | __all__ = ("expressify",) 4 | -------------------------------------------------------------------------------- /shiny/express/expressify_decorator/_func_displayhook.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from htmltools import Tag, Tagifiable, TagList 4 | 5 | 6 | # A decorator used for `def` statements. It makes sure that any `def` statement which 7 | # returns a tag-like object, or one with a `_repr_html` method, will be passed on to 8 | # the current sys.displayhook. 9 | def _expressify_decorator_function_def(fn: object) -> object: 10 | if isinstance(fn, (Tag, TagList, Tagifiable)) or hasattr(fn, "_repr_html_"): 11 | sys.displayhook(fn) 12 | 13 | return fn 14 | -------------------------------------------------------------------------------- /shiny/express/layout.py: -------------------------------------------------------------------------------- 1 | import warnings 2 | 3 | from . import ui 4 | 5 | warnings.warn( 6 | "shiny.express.layout has been deprecated and renamed to shiny.express.ui. " 7 | "Please import shiny.express.ui instead of shiny.express.layout.", 8 | ImportWarning, 9 | stacklevel=2, 10 | ) 11 | 12 | 13 | def __getattr__(name: str) -> object: 14 | return getattr(ui, name) 15 | -------------------------------------------------------------------------------- /shiny/playwright/expect/__init__.py: -------------------------------------------------------------------------------- 1 | from ._expect import ( 2 | expect_not_to_have_attribute, 3 | expect_not_to_have_class, 4 | expect_to_have_class, 5 | expect_to_have_style, 6 | expect_not_to_have_style, 7 | ) 8 | from ._expect_to_change import expect_to_change 9 | 10 | __all__ = [ 11 | "expect_to_change", 12 | "expect_not_to_have_attribute", 13 | "expect_to_have_class", 14 | "expect_not_to_have_class", 15 | "expect_to_have_style", 16 | "expect_not_to_have_style", 17 | ] 18 | -------------------------------------------------------------------------------- /shiny/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/py.typed -------------------------------------------------------------------------------- /shiny/pytest/__init__.py: -------------------------------------------------------------------------------- 1 | try: 2 | import pytest # noqa: F401 # pyright: ignore[reportUnusedImport, reportMissingTypeStubs] 3 | except ImportError: 4 | raise ImportError( 5 | "The shiny.pytest module requires the pytest package to be installed." 6 | " Please install it with this command:" 7 | "\n\n pip install pytest" 8 | ) 9 | 10 | from ._fixture import ScopeName, create_app_fixture 11 | 12 | __all__ = ("create_app_fixture", "ScopeName") 13 | -------------------------------------------------------------------------------- /shiny/render/_data_frame_utils/__init__.py: -------------------------------------------------------------------------------- 1 | # Empty on purpose. File required for quartodoc 2 | -------------------------------------------------------------------------------- /shiny/render/renderer/__init__.py: -------------------------------------------------------------------------------- 1 | from ._renderer import ( 2 | AsyncValueFn, 3 | Jsonifiable, 4 | Renderer, 5 | RendererT, 6 | ValueFn, 7 | ) 8 | 9 | __all__ = ( 10 | "Renderer", 11 | "ValueFn", 12 | "Jsonifiable", 13 | "AsyncValueFn", 14 | "RendererT", 15 | ) 16 | -------------------------------------------------------------------------------- /shiny/run/__init__.py: -------------------------------------------------------------------------------- 1 | from ._run import ShinyAppProc, run_shiny_app 2 | 3 | __all__ = ( 4 | "run_shiny_app", 5 | "ShinyAppProc", 6 | ) 7 | -------------------------------------------------------------------------------- /shiny/session/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Tools for working within a (user) session context. 3 | """ 4 | 5 | from ._session import ClientData, Inputs, Outputs, Session 6 | from ._utils import ( # noqa: F401 7 | get_current_session, 8 | session_context as session_context, 9 | require_active_session, 10 | ) 11 | 12 | __all__ = ( 13 | "Session", 14 | "Inputs", 15 | "Outputs", 16 | "ClientData", 17 | "get_current_session", 18 | "require_active_session", 19 | ) 20 | -------------------------------------------------------------------------------- /shiny/templates/app/01-basic-app/_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "app", 3 | "id": "basic-app", 4 | "title": "Basic app", 5 | "description": "A basic Shiny app template.", 6 | "next_steps": [ 7 | "Run the app with `shiny run app.py` from the app directory." 8 | ], 9 | "follow_up": [ 10 | { 11 | "type": "info", 12 | "text": "Just getting started with Shiny?" 13 | }, 14 | { 15 | "type": "action", 16 | "text": "Learn more at https://shiny.posit.co/py/docs/overview.html" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /shiny/templates/app/01-basic-app/app-core.py: -------------------------------------------------------------------------------- 1 | from shiny import App, render, ui 2 | 3 | app_ui = ui.page_fluid( 4 | ui.panel_title("Hello Shiny!"), 5 | ui.input_slider("n", "N", 0, 100, 20), 6 | ui.output_text_verbatim("txt"), 7 | ) 8 | 9 | 10 | def server(input, output, session): 11 | @render.text 12 | def txt(): 13 | return f"n*2 is {input.n() * 2}" 14 | 15 | 16 | app = App(app_ui, server) 17 | -------------------------------------------------------------------------------- /shiny/templates/app/01-basic-app/app-express.py: -------------------------------------------------------------------------------- 1 | from shiny import render, ui 2 | from shiny.express import input 3 | 4 | ui.panel_title("Hello Shiny!") 5 | ui.input_slider("n", "N", 0, 100, 20) 6 | 7 | 8 | @render.text 9 | def txt(): 10 | return f"n*2 is {input.n() * 2}" 11 | -------------------------------------------------------------------------------- /shiny/templates/app/02-basic-sidebar/_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "app", 3 | "id": "basic-sidebar", 4 | "title": "Sidebar layout", 5 | "description": "An app with inputs in a sidebar and a plot in the main area.", 6 | "next_steps": [ 7 | "Run the app with `shiny run app.py`." 8 | ], 9 | "follow_up": [ 10 | { 11 | "type": "info", 12 | "text": "Just getting started with Shiny?" 13 | }, 14 | { 15 | "type": "action", 16 | "text": "Learn more at https://shiny.posit.co/py/docs/overview.html" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /shiny/templates/app/02-basic-sidebar/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | seaborn 3 | pandas -------------------------------------------------------------------------------- /shiny/templates/app/02-basic-sidebar/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | df = pd.read_csv(app_dir / "penguins.csv") 7 | -------------------------------------------------------------------------------- /shiny/templates/app/03-dashboard/requirements.txt: -------------------------------------------------------------------------------- 1 | faicons 2 | shiny 3 | seaborn 4 | pandas 5 | -------------------------------------------------------------------------------- /shiny/templates/app/03-dashboard/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | df = pd.read_csv(app_dir / "penguins.csv") 7 | -------------------------------------------------------------------------------- /shiny/templates/app/03-dashboard/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bslib-sidebar-main-bg: #f8f8f8; 3 | } -------------------------------------------------------------------------------- /shiny/templates/app/04-dashboard-tips/README.md: -------------------------------------------------------------------------------- 1 | This template gives you a more "complete" dashboard for exploring the tips dataset. For an overview of what's here, visit [this article](https://shiny.posit.co/py/docs/user-interfaces.html). -------------------------------------------------------------------------------- /shiny/templates/app/04-dashboard-tips/requirements.txt: -------------------------------------------------------------------------------- 1 | faicons 2 | shiny 3 | shinywidgets 4 | plotly 5 | pandas 6 | ridgeplot 7 | -------------------------------------------------------------------------------- /shiny/templates/app/04-dashboard-tips/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | tips = pd.read_csv(app_dir / "tips.csv") 7 | -------------------------------------------------------------------------------- /shiny/templates/app/04-dashboard-tips/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bslib-sidebar-main-bg: #f8f8f8; 3 | } 4 | 5 | .popover { 6 | --bs-popover-header-bg: #222; 7 | --bs-popover-header-color: #fff; 8 | } 9 | 10 | .popover .btn-close { 11 | filter: var(--bs-btn-close-white-filter); 12 | } -------------------------------------------------------------------------------- /shiny/templates/app/05-basic-navigation/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | seaborn 3 | pandas -------------------------------------------------------------------------------- /shiny/templates/app/05-basic-navigation/shared.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | app_dir = Path(__file__).parent 6 | df = pd.read_csv(app_dir / "penguins.csv") 7 | -------------------------------------------------------------------------------- /shiny/templates/chat/llm-enterprise/aws-bedrock-anthropic/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | chatlas 4 | anthropic[bedrock] 5 | -------------------------------------------------------------------------------- /shiny/templates/chat/llm-enterprise/aws-bedrock-anthropic/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | AWS_SECRET_KEY= 4 | AWS_ACCESS_KEY= 5 | AWS_REGION= 6 | AWS_ACCOUNT_ID= 7 | -------------------------------------------------------------------------------- /shiny/templates/chat/llm-enterprise/azure-openai/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | chatlas 4 | openai 5 | -------------------------------------------------------------------------------- /shiny/templates/chat/llm-enterprise/azure-openai/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | AZURE_OPENAI_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/anthropic/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | tokenizers 4 | chatlas 5 | anthropic 6 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/anthropic/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | ANTHROPIC_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/google/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | chatlas>=0.4.0 4 | google-genai 5 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/google/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | GOOGLE_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/langchain/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | langchain-openai 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/langchain/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | OPENAI_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/ollama/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | chatlas 3 | ollama 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/openai/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | chatlas 4 | openai 5 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/openai/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | OPENAI_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/playground/requirements.txt: -------------------------------------------------------------------------------- 1 | chatlas>=0.4 2 | openai 3 | anthropic 4 | google-genai 5 | python-dotenv 6 | shiny 7 | -------------------------------------------------------------------------------- /shiny/templates/chat/llms/playground/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | ANTHROPIC_API_KEY= 4 | OPENAI_API_KEY= 5 | GOOGLE_API_KEY= 6 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llm-enterprise/aws-bedrock-anthropic/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | dotenv 3 | chatlas[anthropic-bedrock] 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llm-enterprise/aws-bedrock-anthropic/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | AWS_SECRET_KEY= 4 | AWS_ACCESS_KEY= 5 | AWS_REGION= 6 | AWS_ACCOUNT_ID= 7 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llm-enterprise/azure-openai/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | dotenv 3 | chatlas[openai] 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llm-enterprise/azure-openai/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | AZURE_OPENAI_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/anthropic/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | dotenv 3 | chatlas[anthropic] 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/anthropic/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | ANTHROPIC_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/google/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | dotenv 3 | chatlas[google] 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/google/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | GOOGLE_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/langchain/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | python-dotenv 3 | langchain-openai 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/langchain/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | OPENAI_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/ollama/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | chatlas[ollama] 3 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/openai/requirements.txt: -------------------------------------------------------------------------------- 1 | shiny 2 | dotenv 3 | chatlas[openai] 4 | -------------------------------------------------------------------------------- /shiny/templates/markdown-stream/llms/openai/template.env: -------------------------------------------------------------------------------- 1 | # Once you provided your API key, rename this file to .env 2 | # The load_dotenv() in the app.py will then load this env variable 3 | OPENAI_API_KEY= 4 | -------------------------------------------------------------------------------- /shiny/templates/package/.gitignore: -------------------------------------------------------------------------------- 1 | **/distjs/ 2 | -------------------------------------------------------------------------------- /shiny/templates/package/js-input/_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "package", 3 | "id": "js-input", 4 | "title": "Input component", 5 | "description": "A Python package template providing a custom Shiny input component.", 6 | "follow_up": [ 7 | { 8 | "type": "action", 9 | "text": "Learn more about custom components for Shiny at https://shiny.posit.co/py/docs/custom-components-pkg.html" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /shiny/templates/package/js-input/custom_component/__init__.py: -------------------------------------------------------------------------------- 1 | from .custom_component import custom_component 2 | 3 | __all__ = [ 4 | "custom_component", 5 | ] 6 | -------------------------------------------------------------------------------- /shiny/templates/package/js-input/example-app/app.py: -------------------------------------------------------------------------------- 1 | # pyright: basic 2 | 3 | from custom_component import custom_component 4 | 5 | from shiny import App, render, ui 6 | 7 | app_ui = ui.page_fluid( 8 | custom_component("myComponent"), 9 | ui.output_text("valueOut"), 10 | ) 11 | 12 | 13 | def server(input, output, session): 14 | @render.text 15 | def valueOut(): 16 | return f"Value from input is {input.myComponent()}" 17 | 18 | 19 | app = App(app_ui, server) 20 | -------------------------------------------------------------------------------- /shiny/templates/package/js-input/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=40.6.0", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | [project] 6 | name = "custom_component" 7 | version = "0.1" 8 | dependencies = ["shiny >= 0.6.0"] 9 | 10 | [tool.setuptools] 11 | packages = ["custom_component"] 12 | include-package-data = true 13 | zip-safe = false 14 | -------------------------------------------------------------------------------- /shiny/templates/package/js-output/_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "package", 3 | "id": "js-output", 4 | "title": "Output component", 5 | "description": "A Python package template providing a custom Shiny output component.", 6 | "follow_up": [ 7 | { 8 | "type": "action", 9 | "text": "Learn more about custom components for Shiny at https://shiny.posit.co/py/docs/custom-components-pkg.html" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /shiny/templates/package/js-output/custom_component/__init__.py: -------------------------------------------------------------------------------- 1 | from .custom_component import custom_component, render_custom_component 2 | 3 | __all__ = ["custom_component", "render_custom_component"] 4 | -------------------------------------------------------------------------------- /shiny/templates/package/js-output/example-app/app.py: -------------------------------------------------------------------------------- 1 | from custom_component import custom_component, render_custom_component 2 | 3 | from shiny import App, ui 4 | 5 | app_ui = ui.page_fluid( 6 | ui.input_slider("n", "Choose a value", 1, 20, 5), 7 | custom_component("myOutput"), 8 | ) 9 | 10 | 11 | def server(input, output, session): 12 | @render_custom_component 13 | def myOutput(): 14 | return input.n() 15 | 16 | 17 | app = App(app_ui, server) 18 | -------------------------------------------------------------------------------- /shiny/templates/package/js-output/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=40.6.0", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | [project] 6 | name = "custom_component" 7 | version = "0.1" 8 | dependencies = ["shiny >= 0.6.0"] 9 | 10 | [tool.setuptools] 11 | packages = ["custom_component"] 12 | include-package-data = true 13 | zip-safe = false 14 | -------------------------------------------------------------------------------- /shiny/templates/package/js-react/_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "package", 3 | "id": "js-react", 4 | "title": "React component", 5 | "description": "A Python package template providing a custom React-based Shiny component.", 6 | "follow_up": [ 7 | { 8 | "type": "action", 9 | "text": "Learn more about custom components for Shiny at https://shiny.posit.co/py/docs/custom-components-pkg.html" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /shiny/templates/package/js-react/custom_component/__init__.py: -------------------------------------------------------------------------------- 1 | from .custom_component import ( 2 | input_custom_component, 3 | output_custom_component, 4 | render_custom_component, 5 | ) 6 | 7 | __all__ = [ 8 | "input_custom_component", 9 | "output_custom_component", 10 | "render_custom_component", 11 | ] 12 | -------------------------------------------------------------------------------- /shiny/templates/package/js-react/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=40.6.0", "wheel"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | [project] 6 | name = "custom_component" 7 | version = "0.1" 8 | dependencies = ["shiny >= 0.6.0"] 9 | 10 | [tool.setuptools] 11 | packages = ["custom_component"] 12 | include-package-data = true 13 | zip-safe = false 14 | -------------------------------------------------------------------------------- /shiny/ui/_busy_spinner_types.py: -------------------------------------------------------------------------------- 1 | # Generated by scripts/htmlDependencies.R: do not edit by hand 2 | 3 | from __future__ import annotations 4 | 5 | from typing import Literal 6 | 7 | BusySpinnerType = Literal[ 8 | "bars", 9 | "bars2", 10 | "bars3", 11 | "dots", 12 | "dots2", 13 | "dots3", 14 | "pulse", 15 | "pulse2", 16 | "pulse3", 17 | "ring", 18 | "ring2", 19 | "ring3", 20 | ] 21 | -------------------------------------------------------------------------------- /shiny/ui/_web_component.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from htmltools import Tag, TagAttrs, TagAttrValue, TagChild 4 | 5 | from ._html_deps_shinyverse import components_dependencies 6 | 7 | 8 | def web_component( 9 | tag_name: str, 10 | *args: TagChild | TagAttrs, 11 | **kwargs: TagAttrValue, 12 | ) -> Tag: 13 | return Tag( 14 | tag_name, 15 | components_dependencies(), 16 | *args, 17 | _add_ws=False, 18 | **kwargs, 19 | ) 20 | -------------------------------------------------------------------------------- /shiny/ui/css/__init__.py: -------------------------------------------------------------------------------- 1 | from ._css_unit import CssUnit, as_css_unit, as_css_padding 2 | 3 | __all__ = ( 4 | "CssUnit", 5 | "as_css_unit", 6 | "as_css_padding", 7 | ) 8 | -------------------------------------------------------------------------------- /shiny/ui/dataframe/__init__.py: -------------------------------------------------------------------------------- 1 | from ._data_frame import output_data_frame 2 | 3 | __all__ = ("output_data_frame",) 4 | -------------------------------------------------------------------------------- /shiny/ui/fill/__init__.py: -------------------------------------------------------------------------------- 1 | from ._fill import ( 2 | as_fill_item, 3 | as_fillable_container, 4 | remove_all_fill, 5 | # is_fill_item, 6 | # is_fillable_container, 7 | ) 8 | 9 | __all__ = ( 10 | "as_fillable_container", 11 | "as_fill_item", 12 | "remove_all_fill", 13 | # "is_fillable_container", 14 | # "is_fill_item", 15 | ) 16 | -------------------------------------------------------------------------------- /shiny/www/py-shiny/spin/spin.css: -------------------------------------------------------------------------------- 1 | @keyframes py-shiny-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){.py-shiny-spin{animation:py-shiny-spin 2s linear infinite}} 2 | /*# sourceMappingURL=spin.css.map */ 3 | -------------------------------------------------------------------------------- /shiny/www/py-shiny/spin/spin.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "sources": ["../../../../js/spin/spin.scss"], 4 | "sourcesContent": ["@keyframes py-shiny-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: no-preference) {\n .py-shiny-spin {\n animation: py-shiny-spin 2s linear infinite;\n }\n}"], 5 | "mappings": "AAAA,4BAEI,uBAGA,0BAGJ,+CACE,eACE", 6 | "names": [] 7 | } 8 | -------------------------------------------------------------------------------- /shiny/www/shared/_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand", 3 | "package": "shiny", 4 | "version": "1.10.0.9001 (rstudio/shiny@ca41c0831befcf8feea17980a91983ce21d1b8a2)" 5 | } 6 | -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand", 3 | "shiny_version": "1.10.0.9001 (rstudio/shiny@ca41c0831befcf8feea17980a91983ce21d1b8a2)", 4 | "bslib_version": "0.9.0.9000 (rstudio/bslib@7cf80506c6beb9d7e5f2f146d2c9c935bbaf1635)", 5 | "htmltools_version": "0.5.8.9000 (rstudio/htmltools@487aa0bed7313d7597b6edd5810e53cab0061198)", 6 | "bootstrap_version": "5.3.1" 7 | } 8 | -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2 -------------------------------------------------------------------------------- /shiny/www/shared/bslib/_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand", 3 | "package": "bslib", 4 | "version": "0.9.0.9000 (rstudio/bslib@7cf80506c6beb9d7e5f2f146d2c9c935bbaf1635)" 5 | } 6 | -------------------------------------------------------------------------------- /shiny/www/shared/busy-indicators/spinners/bars.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/busy-indicators/spinners/dots.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/busy-indicators/spinners/pulse.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/busy-indicators/spinners/ring2.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/busy-indicators/spinners/ring3.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ar-tn.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["ar-tn"]={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ar.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.az.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1,clear:"Təmizlə",monthsTitle:"Aylar"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bg.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.br.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.br={days:["Sul","Lun","Meurzh","Merc'her","Yaou","Gwener","Sadorn"],daysShort:["Sul","Lun","Meu.","Mer.","Yao.","Gwe.","Sad."],daysMin:["Su","L","Meu","Mer","Y","G","Sa"],months:["Genver","C'hwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"],monthsShort:["Genv.","C'hw.","Meur.","Ebre.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kerz."],today:"Hiziv",monthsTitle:"Miz",clear:"Dilemel",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bs.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ca.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.cs.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.cy.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.da.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"Måneder"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.de.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.el.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-AU.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-CA.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-GB.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-IE.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-IE"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-NZ.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-NZ"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-ZA.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-ZA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"yyyy/mm/d"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.eo.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.es.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.et.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.eu.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur",monthsTitle:"Hilabeteak",clear:"Ezabatu",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fa.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fa={days:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fi.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fo.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fr-CH.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.gl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.he.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hi.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hu.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hy.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.id.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.is.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.it-CH.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.it.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ja.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ka.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.km.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ko.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.lv.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.me.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.mk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.mn.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ms.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.nl-BE.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.nl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.no.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.oc.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pt-BR.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pt.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ro.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ru.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sq.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sr-latin.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sv.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sw.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ta.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tg.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.th.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uz-cyrl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uz-latn.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.vi.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.zh-CN.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.zh-TW.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery); -------------------------------------------------------------------------------- /shiny/www/shared/htmltools/_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand", 3 | "package": "htmltools", 4 | "version": "0.5.8.9000 (rstudio/htmltools@487aa0bed7313d7597b6edd5810e53cab0061198)" 5 | } 6 | -------------------------------------------------------------------------------- /shiny/www/shared/jqueryui/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /shiny/www/shared/jqueryui/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /shiny/www/shared/jqueryui/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /shiny/www/shared/jqueryui/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /shiny/www/shared/jqueryui/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /shiny/www/shared/jqueryui/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /shiny/www/shared/sass/_sass_layer_markers.scss: -------------------------------------------------------------------------------- 1 | /*-- scss:functions --*/ 2 | // SPLIT: functions 3 | 4 | /*-- scss:defaults --*/ 5 | // SPLIT: defaults 6 | 7 | /*-- scss:rules --*/ 8 | // SPLIT: rules 9 | 10 | /*-- scss:mixins --*/ 11 | // SPLIT: mixins 12 | 13 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bs3compat/_defaults.scss: -------------------------------------------------------------------------------- 1 | // BS3 had .navbar { margin-bottom: 20px; } 2 | $navbar-margin-bottom: 20px !default; 3 | 4 | // BS5+ variable used for prefixing CSS vars 5 | $prefix: bs- !default; -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bs3compat/_dt_compat.scss: -------------------------------------------------------------------------------- 1 | // For DataTables with BS 5+ 2 | @if $bootstrap-version >= 5 { 3 | // Currently not possible through DT: rstudio/DT#1081 4 | .datatables thead .form-group.has-feedback + div { 5 | background-color: var(--bs-body-bg) !important; 6 | color: var(--bs-body-color) !important; 7 | border-color: var(--bs-border-color) !important; 8 | border-width: var(--bs-border-width); 9 | border-radius: var(--bs-border-radius); 10 | border-style: var(--bs-border-style); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bs3compat/_help_text.scss: -------------------------------------------------------------------------------- 1 | .help-text, .help-block { 2 | @extend .form-text; @extend .text-muted; 3 | } 4 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bs3compat/_progress_compat.scss: -------------------------------------------------------------------------------- 1 | @each $color, $value in $theme-colors { 2 | .progress-bar-#{$color} { 3 | background-color: $value; 4 | color: color-contrast($value); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bs3compat/_rules.scss: -------------------------------------------------------------------------------- 1 | @import "wells"; 2 | @import "help_text"; 3 | @import "dropdown_compat"; 4 | @import "navbar_compat"; 5 | @import "nav_compat"; 6 | @import "progress_compat"; 7 | @import "dt_compat"; 8 | 9 | @import "glyphicons"; 10 | 11 | @import "shiny_input"; 12 | @import "shiny_misc"; 13 | 14 | @import "headers"; 15 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bs3compat/_shiny_misc.scss: -------------------------------------------------------------------------------- 1 | // For code inside of showcase mode 2 | // TODO: this should probably ported to shiny itself 3 | // if and when shiny-showcase.css is ported to sass 4 | pre.shiny-code { 5 | padding: 0.5 * $spacer; 6 | } 7 | 8 | // BS5 changed float-left -> float-start 9 | @if $bootstrap-version != 4 { 10 | .float-left { 11 | @extend .float-start; 12 | } 13 | .float-right { 14 | @extend .float-end; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/bslib-scss/bslib.scss: -------------------------------------------------------------------------------- 1 | @import "spacer"; 2 | @import "tab-fill"; 3 | @import "color-utilities"; 4 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/builtin/bs5/shiny/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Accordions 2 | // These definitions can't go in _defaults.scss with a !default flag (because !default doesn't respect null) 3 | $accordion-button-active-bg: null; 4 | $accordion-button-active-color: null; 5 | $accordion-icon-active-color: null; 6 | 7 | // Component Variables 8 | @import "ionrangeslider/_variables.scss"; 9 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/_helpers.scss: -------------------------------------------------------------------------------- 1 | @import "helpers/clearfix"; 2 | @import "helpers/color-bg"; 3 | @import "helpers/colored-links"; 4 | @import "helpers/focus-ring"; 5 | @import "helpers/icon-link"; 6 | @import "helpers/ratio"; 7 | @import "helpers/position"; 8 | @import "helpers/stacks"; 9 | @import "helpers/visually-hidden"; 10 | @import "helpers/stretched-link"; 11 | @import "helpers/text-truncation"; 12 | @import "helpers/vr"; 13 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/forms/_form-text.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Form text 3 | // 4 | 5 | .form-text { 6 | margin-top: $form-text-margin-top; 7 | @include font-size($form-text-font-size); 8 | font-style: $form-text-font-style; 9 | font-weight: $form-text-font-weight; 10 | color: $form-text-color; 11 | } 12 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_color-bg.scss: -------------------------------------------------------------------------------- 1 | // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251 2 | @each $color, $value in $theme-colors { 3 | .text-bg-#{$color} { 4 | color: color-contrast($value) if($enable-important-utilities, !important, null); 5 | background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_focus-ring.scss: -------------------------------------------------------------------------------- 1 | .focus-ring:focus { 2 | outline: 0; 3 | // By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values 4 | box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color); 5 | } 6 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_ratio.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .ratio { 4 | position: relative; 5 | width: 100%; 6 | 7 | &::before { 8 | display: block; 9 | padding-top: var(--#{$prefix}aspect-ratio); 10 | content: ""; 11 | } 12 | 13 | > * { 14 | position: absolute; 15 | top: 0; 16 | left: 0; 17 | width: 100%; 18 | height: 100%; 19 | } 20 | } 21 | 22 | @each $key, $ratio in $aspect-ratios { 23 | .ratio-#{$key} { 24 | --#{$prefix}aspect-ratio: #{$ratio}; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_stretched-link.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Stretched link 3 | // 4 | 5 | .stretched-link { 6 | &::#{$stretched-link-pseudo-element} { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: $stretched-link-z-index; 13 | content: ""; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_text-truncation.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Text truncation 3 | // 4 | 5 | .text-truncate { 6 | @include text-truncate(); 7 | } 8 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_visually-hidden.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Visually hidden 3 | // 4 | 5 | .visually-hidden, 6 | .visually-hidden-focusable:not(:focus):not(:focus-within) { 7 | @include visually-hidden(); 8 | } 9 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_vr.scss: -------------------------------------------------------------------------------- 1 | .vr { 2 | display: inline-block; 3 | align-self: stretch; 4 | -webkit-align-self: stretch; 5 | width: $vr-border-width; 6 | min-height: 1em; 7 | background-color: currentcolor; 8 | opacity: $hr-opacity; 9 | } 10 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_backdrop.scss: -------------------------------------------------------------------------------- 1 | // Shared between modals and offcanvases 2 | @mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) { 3 | position: fixed; 4 | top: 0; 5 | left: 0; 6 | z-index: $zindex; 7 | width: 100vw; 8 | height: 100vh; 9 | background-color: $backdrop-bg; 10 | 11 | // Fade for backdrop 12 | &.fade { opacity: 0; } 13 | &.show { opacity: $backdrop-opacity; } 14 | } 15 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_banner.scss: -------------------------------------------------------------------------------- 1 | @mixin bsBanner($file) { 2 | /*! 3 | * Bootstrap #{$file} v5.3.1 (https://getbootstrap.com/) 4 | * Copyright 2011-2023 The Bootstrap Authors 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | } 8 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | $result: (); 4 | 5 | @each $value in $shadow { 6 | @if $value != null { 7 | $result: append($result, $value, "comma"); 8 | } 9 | @if $value == none and length($shadow) > 1 { 10 | @warn "The keyword 'none' must be used as a single argument."; 11 | } 12 | } 13 | 14 | @if (length($result) > 0) { 15 | box-shadow: $result; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start clearfix 2 | @mixin clearfix() { 3 | &::after { 4 | display: block; 5 | clear: both; 6 | content: ""; 7 | } 8 | } 9 | // scss-docs-end clearfix 10 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_color-scheme.scss: -------------------------------------------------------------------------------- 1 | // scss-docs-start mixin-color-scheme 2 | @mixin color-scheme($name) { 3 | @media (prefers-color-scheme: #{$name}) { 4 | @content; 5 | } 6 | } 7 | // scss-docs-end mixin-color-scheme 8 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_container.scss: -------------------------------------------------------------------------------- 1 | // Container mixins 2 | 3 | @mixin make-container($gutter: $container-padding-x) { 4 | --#{$prefix}gutter-x: #{$gutter}; 5 | --#{$prefix}gutter-y: 0; 6 | width: 100%; 7 | padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list 8 | padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list 9 | margin-right: auto; 10 | margin-left: auto; 11 | } 12 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | 10 | @mixin img-fluid { 11 | // Part 1: Set a maximum relative to the parent 12 | max-width: 100%; 13 | // Part 2: Override the height to auto, otherwise images will be stretched 14 | // when setting a width and height attribute on the img element. 15 | height: auto; 16 | } 17 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | // scss-docs-start pagination-mixin 4 | @mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) { 5 | --#{$prefix}pagination-padding-x: #{$padding-x}; 6 | --#{$prefix}pagination-padding-y: #{$padding-y}; 7 | @include rfs($font-size, --#{$prefix}pagination-font-size); 8 | --#{$prefix}pagination-border-radius: #{$border-radius}; 9 | } 10 | // scss-docs-end pagination-mixin 11 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/bslib/lib/bsw5/dist/united/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // United 5.3.1 2 | // Bootswatch 3 | 4 | 5 | // Variables 6 | 7 | $web-font-path: "https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;700&display=swap" !default; 8 | @if $web-font-path { 9 | @import url($web-font-path); 10 | } 11 | 12 | // Indicators 13 | 14 | .badge { 15 | &.bg-light { 16 | color: $body-color; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/bootstrap/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/bootstrap/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/bootstrap/_03_mixins.scss: -------------------------------------------------------------------------------- 1 | $enable-cssgrid: true !default; 2 | @import "../../bslib/bs3compat/_defaults.scss"; 3 | @import "../../bslib/lib/bs5/scss/_variables.scss"; 4 | @import "../../bslib/lib/bs5/scss/_variables-dark.scss"; 5 | $bootstrap-version: 5; 6 | $bslib-preset-name: null !default; 7 | $bslib-preset-type: null !default; 8 | @import "../../bslib/lib/bs5/scss/_maps.scss"; 9 | @import "../../bslib/lib/bs5/scss/_mixins.scss"; 10 | @import "../../bslib/bs3compat/_declarations.scss"; 11 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/cerulean/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/cerulean/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/cosmo/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/cosmo/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/cyborg/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/cyborg/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/darkly/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/darkly/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/flatly/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/flatly/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/journal/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/journal/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/litera/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/litera/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/lumen/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/lumen/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/lux/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/lux/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/materia/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/materia/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/minty/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/minty/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/morph/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/morph/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/pulse/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/pulse/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/quartz/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/quartz/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/sandstone/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/sandstone/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/shiny/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/shiny/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/simplex/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/simplex/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/sketchy/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/sketchy/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/slate/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/slate/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/solar/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/solar/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/spacelab/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/spacelab/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/superhero/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/superhero/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/united/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/united/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/vapor/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/vapor/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/yeti/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/yeti/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/zephyr/_01_functions.scss: -------------------------------------------------------------------------------- 1 | @import "../../bslib/lib/bs5/scss/_functions.scss"; 2 | @import "../../bslib/bslib-scss/functions.scss"; 3 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/preset/zephyr/_02_defaults.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/shiny/www/shared/ionrangeslider/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin no-click() { 2 | -webkit-user-select: none; 3 | -khtml-user-select: none; 4 | -moz-user-select: none; 5 | -ms-user-select: none; 6 | user-select: none; 7 | } 8 | 9 | @mixin pos-r() { 10 | position: relative; 11 | display: block; 12 | } 13 | 14 | @mixin pos-a() { 15 | position: absolute; 16 | display: block; 17 | } 18 | -------------------------------------------------------------------------------- /shiny/www/shared/sass/shiny/www/shared/selectize/scss/plugins/optgroup_columns.scss: -------------------------------------------------------------------------------- 1 | .#{$selectize}-dropdown.plugin-optgroup_columns { 2 | .#{$selectize}-dropdown-content { 3 | display: flex; 4 | } 5 | 6 | .optgroup { 7 | border-right: 1px solid #f2f2f2; 8 | border-top: 0 none; 9 | flex-grow: 1; 10 | flex-basis: 0; 11 | min-width: 0; 12 | } 13 | .optgroup:last-child { 14 | border-right: 0 none; 15 | } 16 | .optgroup:before { 17 | display: none; 18 | } 19 | .optgroup-header { 20 | border-top: 0 none; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shiny/www/shared/selectize/scss/plugins/optgroup_columns.scss: -------------------------------------------------------------------------------- 1 | .#{$selectize}-dropdown.plugin-optgroup_columns { 2 | .#{$selectize}-dropdown-content { 3 | display: flex; 4 | } 5 | 6 | .optgroup { 7 | border-right: 1px solid #f2f2f2; 8 | border-top: 0 none; 9 | flex-grow: 1; 10 | flex-basis: 0; 11 | min-width: 0; 12 | } 13 | .optgroup:last-child { 14 | border-right: 0 none; 15 | } 16 | .optgroup:before { 17 | display: none; 18 | } 19 | .optgroup-header { 20 | border-top: 0 none; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shiny/www/shared/shiny-testmode.js: -------------------------------------------------------------------------------- 1 | /*! shiny 1.10.0.9001 | (c) 2012-2025 Posit Software, PBC. | License: GPL-3 | file LICENSE */ 2 | "use strict";(()=>{var t=eval;window.addEventListener("message",function(a){let e=a.data;e.code&&t(e.code)});})(); 3 | //# sourceMappingURL=shiny-testmode.js.map 4 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Testing package for shiny. (Used by pytest)""" 2 | -------------------------------------------------------------------------------- /tests/playwright/deploys/__init__.py: -------------------------------------------------------------------------------- 1 | """Deploy package used to test deploys""" 2 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-accordion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/deploys/express-accordion/__init__.py -------------------------------------------------------------------------------- /tests/playwright/deploys/express-accordion/app.py: -------------------------------------------------------------------------------- 1 | from shiny import render 2 | from shiny.express import input, ui 3 | 4 | with ui.accordion(id="express_accordion", open=["Panel 1", "Panel 2"]): 5 | with ui.accordion_panel("Panel 1"): 6 | ui.input_slider("n", "N", 1, 100, 50) 7 | 8 | with ui.accordion_panel("Panel 2"): 9 | 10 | @render.text 11 | def txt(): 12 | return f"n = {input.n()}" 13 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-accordion/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-accordion/rsconnect-python/express-accordion.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/shiny_express_accordion/", 5 | "app_id": 10800240, 6 | "app_guid": null, 7 | "title": "shiny_express_accordion", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-dataframe/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | pandas 3 | 4 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-dataframe/rsconnect-python/express-dataframe.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/shiny-express-dataframe/", 5 | "app_id": 10800260, 6 | "app_guid": null, 7 | "title": "shiny-express-dataframe", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-folium/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | folium 3 | 4 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-folium/rsconnect-python/express-folium.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/shiny-express-folium/", 5 | "app_id": 10827011, 6 | "app_guid": null, 7 | "title": "shiny-express-folium", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_default/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | 3 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_default/rsconnect-python/express-page_default.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/shiny_express_page_default/", 5 | "app_id": 10800233, 6 | "app_guid": null, 7 | "title": "shiny-express-folium", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_fillable/app.py: -------------------------------------------------------------------------------- 1 | from shiny import render 2 | from shiny.express import input, ui 3 | 4 | ui.page_opts(fillable=True) 5 | 6 | with ui.card(id="card"): 7 | ui.input_slider("a", "A", 1, 100, 50) 8 | 9 | @render.code 10 | def txt(): 11 | return input.a() 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_fillable/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_fillable/rsconnect-python/express-page_fillable.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/express_page_fillable/", 5 | "app_id": 10800242, 6 | "app_guid": null, 7 | "title": "express_page_fillable", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_fluid/app.py: -------------------------------------------------------------------------------- 1 | from shiny import render 2 | from shiny.express import input, ui 3 | 4 | ui.page_opts(full_width=True) 5 | 6 | with ui.card(id="card"): 7 | ui.input_slider("a", "A", 1, 100, 50) 8 | 9 | @render.code 10 | def txt(): 11 | return input.a() 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_fluid/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | 3 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_fluid/rsconnect-python/express-page_fluid.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/express_page_fluid/", 5 | "app_id": 10800235, 6 | "app_guid": null, 7 | "title": "express_page_fluid", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_sidebar/app.py: -------------------------------------------------------------------------------- 1 | from shiny import render 2 | from shiny.express import input, ui 3 | 4 | ui.page_opts(title="PageTitle") 5 | 6 | with ui.sidebar(id="sidebar", title="SidebarTitle"): 7 | "Sidebar Content" 8 | 9 | with ui.card(id="card"): 10 | ui.input_slider("a", "A", 1, 100, 50) 11 | 12 | @render.code 13 | def txt(): 14 | return input.a() 15 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_sidebar/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | 3 | -------------------------------------------------------------------------------- /tests/playwright/deploys/express-page_sidebar/rsconnect-python/express-page_sidebar.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/express_page_sidebar/", 5 | "app_id": 10800234, 6 | "app_guid": null, 7 | "title": "express_page_sidebar", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/plotly/app_requirements.txt: -------------------------------------------------------------------------------- 1 | pandas 2 | plotly 3 | anywidget 4 | htmltools 5 | git+https://github.com/posit-dev/py-shinywidgets.git#egg=shinywidgets 6 | 7 | -------------------------------------------------------------------------------- /tests/playwright/deploys/plotly/rsconnect-python/plotly.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/example_deploy_app_a1/", 5 | "app_id": 10800241, 6 | "app_guid": null, 7 | "title": "example_deploy_app_a1", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/shiny-client-console-error/app.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive, render 2 | from shiny.express import input, ui 3 | 4 | ui.input_action_button("same_id", "Action") 5 | ui.input_action_button("same_id", "Action") 6 | 7 | 8 | @render.text() 9 | @reactive.event(input.same_id) 10 | def counter(): 11 | return f"{input.same_id()}" 12 | -------------------------------------------------------------------------------- /tests/playwright/deploys/shiny-client-console-error/app_requirements.txt: -------------------------------------------------------------------------------- 1 | htmltools 2 | 3 | -------------------------------------------------------------------------------- /tests/playwright/deploys/shiny-client-console-error/rsconnect-python/shiny-client-console-error.json: -------------------------------------------------------------------------------- 1 | { 2 | "https://api.shinyapps.io": { 3 | "server_url": "https://api.shinyapps.io", 4 | "app_url": "https://testing-apps.shinyapps.io/shiny_client_console_error/", 5 | "app_id": 11634266, 6 | "app_guid": null, 7 | "title": "shiny_client_console_error", 8 | "app_mode": "python-shiny", 9 | "app_store_version": 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tests/playwright/examples/test_api_examples.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | from example_apps import get_apps, reruns, reruns_delay, validate_example 3 | from playwright.sync_api import Page 4 | 5 | 6 | @pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay) 7 | @pytest.mark.parametrize("ex_app_path", get_apps("shiny/api-examples")) 8 | def test_api_examples(page: Page, ex_app_path: str) -> None: 9 | validate_example(page, ex_app_path) 10 | -------------------------------------------------------------------------------- /tests/playwright/examples/test_cpuinfo.py: -------------------------------------------------------------------------------- 1 | # pyright: reportUnknownMemberType=false 2 | 3 | import re 4 | 5 | from conftest import create_example_fixture 6 | from playwright.sync_api import Page, expect 7 | 8 | from shiny.run import ShinyAppProc 9 | 10 | cpuinfo_app = create_example_fixture("cpuinfo") 11 | 12 | 13 | def test_cpuinfo(page: Page, cpuinfo_app: ShinyAppProc): 14 | page.goto(cpuinfo_app.url) 15 | plot = page.locator("#plot") 16 | expect(plot).to_have_class(re.compile(r"\bshiny-bound-output\b")) 17 | -------------------------------------------------------------------------------- /tests/playwright/shiny/bookmark/dir/.gitignore: -------------------------------------------------------------------------------- 1 | bookmarks-*/ 2 | -------------------------------------------------------------------------------- /tests/playwright/shiny/bugs/0666-sidebar/colors.py: -------------------------------------------------------------------------------- 1 | # Must use resolved rgb colors 2 | 3 | bg_color: str = "rgb(0, 100, 0)" # `darkgreen` 4 | fg_color: str = "rgb(254, 254, 254)" # ~`white` - 1 5 | -------------------------------------------------------------------------------- /tests/playwright/shiny/bugs/0696-resolve-id/imgs/Adelie_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Adelie_sm.png -------------------------------------------------------------------------------- /tests/playwright/shiny/bugs/0696-resolve-id/imgs/Chinstrap_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Chinstrap_sm.png -------------------------------------------------------------------------------- /tests/playwright/shiny/bugs/0696-resolve-id/imgs/Gentoo_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Gentoo_sm.png -------------------------------------------------------------------------------- /tests/playwright/shiny/bugs/0696-resolve-id/imgs/palmerpenguins_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/palmerpenguins_sm.png -------------------------------------------------------------------------------- /tests/playwright/shiny/bugs/0696-resolve-id/test_file.txt: -------------------------------------------------------------------------------- 1 | test file content43 2 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/chat/append_user_msg/app.py: -------------------------------------------------------------------------------- 1 | from shiny import reactive 2 | from shiny.express import render, ui 3 | 4 | chat = ui.Chat(id="chat") 5 | chat.ui() 6 | 7 | 8 | @reactive.effect 9 | async def _(): 10 | await chat.append_message({"content": "A user message", "role": "user"}) 11 | 12 | 13 | "chat.messages():" 14 | 15 | 16 | @render.code 17 | def message_state(): 18 | return str(chat.messages()) 19 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/chat/dynamic_ui/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import render, ui 2 | 3 | chat = ui.Chat(id="chat") 4 | 5 | 6 | @render.ui 7 | def chat_output(): 8 | return chat.ui(messages=["A starting message"]) 9 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/chat/errors/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import render, ui 2 | 3 | # Set some Shiny page options 4 | ui.page_opts(title="Hello Chat") 5 | 6 | 7 | chat = ui.Chat(id="chat") 8 | chat.ui() 9 | 10 | 11 | @chat.on_user_submit 12 | async def _(): 13 | raise Exception("boom!") 14 | 15 | 16 | "Message state:" 17 | 18 | 19 | @render.code 20 | def message_state(): 21 | return str(chat.messages()) 22 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/chat/icon/img/grace-hopper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/components/chat/icon/img/grace-hopper.jpg -------------------------------------------------------------------------------- /tests/playwright/shiny/components/chat/icon/img/shiny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/components/chat/icon/img/shiny.png -------------------------------------------------------------------------------- /tests/playwright/shiny/components/nav/page_navbar_kitchensink/default_page_navbar/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.page_opts( 4 | id="default_page_navbar", 5 | title="Default Page Navbar", 6 | window_title="Page NavBar title", 7 | lang="en", 8 | fillable_mobile=True, 9 | fillable=True, 10 | ) 11 | 12 | with ui.nav_panel("Data"): 13 | "This page could be used to pick a dataset." 14 | 15 | with ui.nav_panel("View"): 16 | "This page could be used to view the dataset." 17 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_fillable/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.page_opts( 4 | id="page_navbar_fillable", 5 | fillable=True, 6 | gap="300px", 7 | ) 8 | 9 | with ui.nav_panel("Data"): 10 | "This page could be used to pick a dataset." 11 | 12 | with ui.nav_panel("View"): 13 | "This page could be used to view the dataset." 14 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_fixed_bottom_inverse_bg/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.page_opts( 4 | id="page_fixed_bottom_inverse_bg", 5 | position="fixed-bottom", 6 | bg="dodgerBlue", 7 | inverse=True, 8 | ) 9 | 10 | with ui.nav_panel("Data"): 11 | "This page could be used to pick a dataset." 12 | 13 | with ui.nav_panel("View"): 14 | "This page could be used to view the dataset." 15 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_header_footer_fixed_top/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.page_opts( 4 | id="page_navbar_header_footer_fixed_top", 5 | header=ui.tags.div("Header", id="page_navbar_header"), 6 | footer=ui.tags.div("Footer", id="page_navbar_footer"), 7 | position="fixed-top", 8 | fluid=False, 9 | ) 10 | 11 | with ui.nav_panel("Data"): 12 | "This page could be used to pick a dataset." 13 | 14 | with ui.nav_panel("View"): 15 | "This page could be used to view the dataset." 16 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_selected/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | ui.page_opts(id="page_navbar_selected", selected="View", fluid=False) 4 | 5 | with ui.nav_panel("Data"): 6 | "This page could be used to pick a dataset." 7 | 8 | with ui.nav_panel("View"): 9 | "This page could be used to view the dataset." 10 | -------------------------------------------------------------------------------- /tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_sidebar/app.py: -------------------------------------------------------------------------------- 1 | from shiny.express import ui 2 | 3 | 4 | def navset_sidebar(): 5 | from shiny import ui as core_ui 6 | 7 | return core_ui.sidebar(core_ui.markdown("Sidebar content")) 8 | 9 | 10 | ui.page_opts(id="page_navbar_sidebar", sidebar=navset_sidebar()) 11 | 12 | with ui.nav_panel("Data"): 13 | "This page could be used to pick a dataset." 14 | 15 | with ui.nav_panel("View"): 16 | "This page could be used to view the dataset." 17 | -------------------------------------------------------------------------------- /tests/playwright/shiny/default-render-ui/app.py: -------------------------------------------------------------------------------- 1 | from shiny import App, Inputs, Outputs, Session, render, ui 2 | 3 | app_ui = ui.page_fluid(ui.output_ui("dynamic_ui")) 4 | 5 | 6 | def server(input: Inputs, output: Outputs, session: Session): 7 | @render.ui 8 | def dynamic_ui(): 9 | @render.text 10 | def txt(): 11 | return "Hello" 12 | 13 | return txt 14 | 15 | 16 | app = App(app_ui, server) 17 | -------------------------------------------------------------------------------- /tests/playwright/shiny/default-render-ui/test_default_render_ui.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import Page, expect 2 | 3 | from shiny.run import ShinyAppProc 4 | 5 | 6 | def test_implicit_register(page: Page, local_app: ShinyAppProc) -> None: 7 | page.goto(local_app.url) 8 | 9 | expect(page.locator("#txt")).to_have_text("Hello") 10 | -------------------------------------------------------------------------------- /tests/playwright/shiny/implicit-register/test_implicit_register.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import Page, expect 2 | 3 | from shiny.run import ShinyAppProc 4 | 5 | 6 | def test_implicit_register(page: Page, local_app: ShinyAppProc) -> None: 7 | page.goto(local_app.url) 8 | 9 | expect(page.locator("#out2")).to_have_text("One") 10 | expect(page.locator("#out3")).to_have_text("Two") 11 | expect(page.locator("#out4")).to_have_text("Two") 12 | expect(page.locator("#out1")).to_be_empty() 13 | -------------------------------------------------------------------------------- /tests/playwright/shiny/plot-sizing/bike.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/plot-sizing/bike.jpg -------------------------------------------------------------------------------- /tests/playwright/shiny/shiny-express/hold/test_hold.py: -------------------------------------------------------------------------------- 1 | from playwright.sync_api import Page, expect 2 | 3 | from shiny.playwright import controller 4 | from shiny.run import ShinyAppProc 5 | 6 | 7 | def test_express_page_fluid(page: Page, local_app: ShinyAppProc) -> None: 8 | page.goto(local_app.url) 9 | 10 | txt = controller.OutputTextVerbatim(page, "visible") 11 | txt.expect_value("40") 12 | 13 | expect(page.locator("#visible")).to_have_count(1) 14 | expect(page.locator("#hidden")).to_have_count(0) 15 | -------------------------------------------------------------------------------- /tests/playwright/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/utils/__init__.py -------------------------------------------------------------------------------- /tests/pytest/__init__.py: -------------------------------------------------------------------------------- 1 | """Pytest test module for shiny. (Used by pytest)""" 2 | -------------------------------------------------------------------------------- /tests/pytest/_utils.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sys 4 | from typing import Any, Callable, TypeVar 5 | 6 | import pytest 7 | 8 | CallableT = TypeVar("CallableT", bound=Callable[..., Any]) 9 | 10 | 11 | def skip_on_windows(fn: CallableT) -> CallableT: 12 | fn = pytest.mark.skipif( 13 | sys.platform.startswith("win"), 14 | reason="Does not run on windows", 15 | )(fn) 16 | 17 | return fn 18 | --------------------------------------------------------------------------------