solara-ui 1.45.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
  2. prefix/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
  3. solara/__init__.py +124 -0
  4. solara/__main__.py +765 -0
  5. solara/_stores.py +297 -0
  6. solara/alias.py +6 -0
  7. solara/autorouting.py +555 -0
  8. solara/cache.py +305 -0
  9. solara/checks.html +71 -0
  10. solara/checks.py +227 -0
  11. solara/comm.py +28 -0
  12. solara/components/__init__.py +77 -0
  13. solara/components/alert.py +155 -0
  14. solara/components/applayout.py +397 -0
  15. solara/components/button.py +85 -0
  16. solara/components/card.py +87 -0
  17. solara/components/checkbox.py +50 -0
  18. solara/components/code_highlight_css.py +11 -0
  19. solara/components/code_highlight_css.vue +63 -0
  20. solara/components/columns.py +159 -0
  21. solara/components/component_vue.py +134 -0
  22. solara/components/cross_filter.py +335 -0
  23. solara/components/dataframe.py +546 -0
  24. solara/components/datatable.py +214 -0
  25. solara/components/datatable.vue +175 -0
  26. solara/components/details.py +56 -0
  27. solara/components/download.vue +35 -0
  28. solara/components/echarts.py +86 -0
  29. solara/components/echarts.vue +139 -0
  30. solara/components/figure_altair.py +39 -0
  31. solara/components/file_browser.py +181 -0
  32. solara/components/file_download.py +199 -0
  33. solara/components/file_drop.py +159 -0
  34. solara/components/file_drop.vue +83 -0
  35. solara/components/file_list_widget.vue +78 -0
  36. solara/components/head.py +27 -0
  37. solara/components/head_tag.py +49 -0
  38. solara/components/head_tag.vue +60 -0
  39. solara/components/image.py +173 -0
  40. solara/components/input.py +456 -0
  41. solara/components/input_text_area.py +86 -0
  42. solara/components/link.py +55 -0
  43. solara/components/markdown.py +441 -0
  44. solara/components/markdown_editor.py +33 -0
  45. solara/components/markdown_editor.vue +359 -0
  46. solara/components/matplotlib.py +74 -0
  47. solara/components/meta.py +47 -0
  48. solara/components/misc.py +333 -0
  49. solara/components/pivot_table.py +258 -0
  50. solara/components/pivot_table.vue +158 -0
  51. solara/components/progress.py +47 -0
  52. solara/components/select.py +182 -0
  53. solara/components/select.vue +27 -0
  54. solara/components/slider.py +442 -0
  55. solara/components/slider_date.vue +56 -0
  56. solara/components/spinner-solara.vue +105 -0
  57. solara/components/spinner.py +45 -0
  58. solara/components/sql_code.py +41 -0
  59. solara/components/sql_code.vue +125 -0
  60. solara/components/style.py +105 -0
  61. solara/components/switch.py +71 -0
  62. solara/components/tab_navigation.py +37 -0
  63. solara/components/title.py +90 -0
  64. solara/components/title.vue +38 -0
  65. solara/components/togglebuttons.py +200 -0
  66. solara/components/tooltip.py +61 -0
  67. solara/core.py +42 -0
  68. solara/datatypes.py +143 -0
  69. solara/express.py +241 -0
  70. solara/hooks/__init__.py +4 -0
  71. solara/hooks/dataframe.py +99 -0
  72. solara/hooks/misc.py +263 -0
  73. solara/hooks/use_reactive.py +151 -0
  74. solara/hooks/use_thread.py +129 -0
  75. solara/kitchensink.py +8 -0
  76. solara/lab/__init__.py +34 -0
  77. solara/lab/components/__init__.py +7 -0
  78. solara/lab/components/chat.py +215 -0
  79. solara/lab/components/confirmation_dialog.py +163 -0
  80. solara/lab/components/cross_filter.py +7 -0
  81. solara/lab/components/input_date.py +339 -0
  82. solara/lab/components/input_time.py +133 -0
  83. solara/lab/components/menu.py +181 -0
  84. solara/lab/components/menu.vue +38 -0
  85. solara/lab/components/tabs.py +274 -0
  86. solara/lab/components/theming.py +98 -0
  87. solara/lab/components/theming.vue +72 -0
  88. solara/lab/hooks/__init__.py +0 -0
  89. solara/lab/hooks/dataframe.py +2 -0
  90. solara/lab/toestand.py +3 -0
  91. solara/lab/utils/__init__.py +2 -0
  92. solara/lab/utils/cookies.py +5 -0
  93. solara/lab/utils/dataframe.py +165 -0
  94. solara/lab/utils/headers.py +5 -0
  95. solara/layout.py +44 -0
  96. solara/lifecycle.py +46 -0
  97. solara/minisettings.py +141 -0
  98. solara/py.typed +0 -0
  99. solara/reactive.py +99 -0
  100. solara/routing.py +268 -0
  101. solara/scope/__init__.py +88 -0
  102. solara/scope/types.py +55 -0
  103. solara/server/__init__.py +0 -0
  104. solara/server/app.py +527 -0
  105. solara/server/assets/custom.css +1 -0
  106. solara/server/assets/custom.js +1 -0
  107. solara/server/assets/favicon.png +0 -0
  108. solara/server/assets/favicon.svg +5 -0
  109. solara/server/assets/style.css +1681 -0
  110. solara/server/assets/theme-dark.css +437 -0
  111. solara/server/assets/theme-light.css +420 -0
  112. solara/server/assets/theme.js +3 -0
  113. solara/server/cdn_helper.py +91 -0
  114. solara/server/esm.py +71 -0
  115. solara/server/fastapi.py +5 -0
  116. solara/server/flask.py +297 -0
  117. solara/server/jupyter/__init__.py +2 -0
  118. solara/server/jupyter/cdn_handler.py +28 -0
  119. solara/server/jupyter/server_extension.py +40 -0
  120. solara/server/jupyter/solara.py +91 -0
  121. solara/server/jupytertools.py +46 -0
  122. solara/server/kernel.py +388 -0
  123. solara/server/kernel_context.py +467 -0
  124. solara/server/patch.py +564 -0
  125. solara/server/pyinstaller/__init__.py +9 -0
  126. solara/server/pyinstaller/hook-ipyreact.py +5 -0
  127. solara/server/pyinstaller/hook-ipyvuetify.py +5 -0
  128. solara/server/pyinstaller/hook-solara.py +9 -0
  129. solara/server/qt.py +113 -0
  130. solara/server/reload.py +251 -0
  131. solara/server/server.py +484 -0
  132. solara/server/settings.py +249 -0
  133. solara/server/shell.py +269 -0
  134. solara/server/starlette.py +770 -0
  135. solara/server/static/ansi.js +270 -0
  136. solara/server/static/highlight-dark.css +82 -0
  137. solara/server/static/highlight.css +43 -0
  138. solara/server/static/main-vuetify.js +272 -0
  139. solara/server/static/main.js +163 -0
  140. solara/server/static/solara_bootstrap.py +129 -0
  141. solara/server/static/sun.svg +23 -0
  142. solara/server/static/webworker.js +42 -0
  143. solara/server/telemetry.py +212 -0
  144. solara/server/templates/index.html.j2 +1 -0
  145. solara/server/templates/loader-plain.css +11 -0
  146. solara/server/templates/loader-plain.html +20 -0
  147. solara/server/templates/loader-solara.css +111 -0
  148. solara/server/templates/loader-solara.html +40 -0
  149. solara/server/templates/plain.html +82 -0
  150. solara/server/templates/solara.html.j2 +486 -0
  151. solara/server/threaded.py +84 -0
  152. solara/server/utils.py +44 -0
  153. solara/server/websocket.py +45 -0
  154. solara/settings.py +86 -0
  155. solara/tasks.py +893 -0
  156. solara/template/button.py +16 -0
  157. solara/template/markdown.py +42 -0
  158. solara/template/portal/.flake8 +6 -0
  159. solara/template/portal/.pre-commit-config.yaml +28 -0
  160. solara/template/portal/LICENSE +21 -0
  161. solara/template/portal/Procfile +7 -0
  162. solara/template/portal/mypy.ini +3 -0
  163. solara/template/portal/pyproject.toml +26 -0
  164. solara/template/portal/solara_portal/__init__.py +4 -0
  165. solara/template/portal/solara_portal/components/__init__.py +2 -0
  166. solara/template/portal/solara_portal/components/article.py +28 -0
  167. solara/template/portal/solara_portal/components/data.py +28 -0
  168. solara/template/portal/solara_portal/components/header.py +6 -0
  169. solara/template/portal/solara_portal/components/layout.py +6 -0
  170. solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +85 -0
  171. solara/template/portal/solara_portal/content/articles/substiterat-vati.md +70 -0
  172. solara/template/portal/solara_portal/data.py +60 -0
  173. solara/template/portal/solara_portal/pages/__init__.py +67 -0
  174. solara/template/portal/solara_portal/pages/article/__init__.py +26 -0
  175. solara/template/portal/solara_portal/pages/tabular.py +29 -0
  176. solara/template/portal/solara_portal/pages/viz/__init__.py +70 -0
  177. solara/template/portal/solara_portal/pages/viz/overview.py +14 -0
  178. solara/test/__init__.py +0 -0
  179. solara/test/pytest_plugin.py +783 -0
  180. solara/toestand.py +998 -0
  181. solara/util.py +348 -0
  182. solara/validate_hooks.py +258 -0
  183. solara/website/__init__.py +0 -0
  184. solara/website/assets/custom.css +444 -0
  185. solara/website/assets/images/logo-small.png +0 -0
  186. solara/website/assets/images/logo.svg +17 -0
  187. solara/website/assets/images/logo_white.svg +50 -0
  188. solara/website/assets/theme.js +8 -0
  189. solara/website/components/__init__.py +5 -0
  190. solara/website/components/algolia.py +6 -0
  191. solara/website/components/algolia.vue +24 -0
  192. solara/website/components/algolia_api.vue +202 -0
  193. solara/website/components/breadcrumbs.py +28 -0
  194. solara/website/components/contact.py +144 -0
  195. solara/website/components/docs.py +143 -0
  196. solara/website/components/header.py +75 -0
  197. solara/website/components/mailchimp.py +12 -0
  198. solara/website/components/mailchimp.vue +47 -0
  199. solara/website/components/markdown.py +99 -0
  200. solara/website/components/markdown_nav.vue +34 -0
  201. solara/website/components/notebook.py +171 -0
  202. solara/website/components/sidebar.py +105 -0
  203. solara/website/pages/__init__.py +370 -0
  204. solara/website/pages/about/__init__.py +9 -0
  205. solara/website/pages/about/about.md +3 -0
  206. solara/website/pages/apps/__init__.py +16 -0
  207. solara/website/pages/apps/authorization/__init__.py +119 -0
  208. solara/website/pages/apps/authorization/admin.py +12 -0
  209. solara/website/pages/apps/authorization/users.py +12 -0
  210. solara/website/pages/apps/jupyter-dashboard-1.py +116 -0
  211. solara/website/pages/apps/layout-demo.py +40 -0
  212. solara/website/pages/apps/multipage/__init__.py +38 -0
  213. solara/website/pages/apps/multipage/page1.py +26 -0
  214. solara/website/pages/apps/multipage/page2.py +34 -0
  215. solara/website/pages/apps/scatter.py +136 -0
  216. solara/website/pages/apps/scrolling.py +63 -0
  217. solara/website/pages/apps/tutorial-streamlit.py +18 -0
  218. solara/website/pages/careers/__init__.py +27 -0
  219. solara/website/pages/changelog/__init__.py +10 -0
  220. solara/website/pages/changelog/changelog.md +372 -0
  221. solara/website/pages/contact/__init__.py +34 -0
  222. solara/website/pages/doc_use_download.py +85 -0
  223. solara/website/pages/documentation/__init__.py +90 -0
  224. solara/website/pages/documentation/advanced/__init__.py +9 -0
  225. solara/website/pages/documentation/advanced/content/00-overview.md +1 -0
  226. solara/website/pages/documentation/advanced/content/10-howto/00-overview.md +6 -0
  227. solara/website/pages/documentation/advanced/content/10-howto/10-multipage.md +196 -0
  228. solara/website/pages/documentation/advanced/content/10-howto/20-layout.md +125 -0
  229. solara/website/pages/documentation/advanced/content/10-howto/30-testing.md +417 -0
  230. solara/website/pages/documentation/advanced/content/10-howto/31-debugging.md +69 -0
  231. solara/website/pages/documentation/advanced/content/10-howto/40-embed.md +50 -0
  232. solara/website/pages/documentation/advanced/content/10-howto/50-ipywidget_libraries.md +124 -0
  233. solara/website/pages/documentation/advanced/content/15-reference/00-overview.md +3 -0
  234. solara/website/pages/documentation/advanced/content/15-reference/40-static_files.md +31 -0
  235. solara/website/pages/documentation/advanced/content/15-reference/41-asset-files.md +72 -0
  236. solara/website/pages/documentation/advanced/content/15-reference/60-static-site-generation.md +59 -0
  237. solara/website/pages/documentation/advanced/content/15-reference/70-search.md +34 -0
  238. solara/website/pages/documentation/advanced/content/15-reference/80-reloading.md +34 -0
  239. solara/website/pages/documentation/advanced/content/15-reference/90-notebook-support.md +7 -0
  240. solara/website/pages/documentation/advanced/content/15-reference/95-caching.md +148 -0
  241. solara/website/pages/documentation/advanced/content/20-understanding/00-introduction.md +10 -0
  242. solara/website/pages/documentation/advanced/content/20-understanding/05-ipywidgets.md +35 -0
  243. solara/website/pages/documentation/advanced/content/20-understanding/06-ipyvuetify.md +42 -0
  244. solara/website/pages/documentation/advanced/content/20-understanding/10-reacton.md +28 -0
  245. solara/website/pages/documentation/advanced/content/20-understanding/12-reacton-basics.md +108 -0
  246. solara/website/pages/documentation/advanced/content/20-understanding/15-anatomy.md +23 -0
  247. solara/website/pages/documentation/advanced/content/20-understanding/17-rules-of-hooks.md +192 -0
  248. solara/website/pages/documentation/advanced/content/20-understanding/18-containers.md +166 -0
  249. solara/website/pages/documentation/advanced/content/20-understanding/20-solara.md +18 -0
  250. solara/website/pages/documentation/advanced/content/20-understanding/40-routing.md +256 -0
  251. solara/website/pages/documentation/advanced/content/20-understanding/50-solara-server.md +108 -0
  252. solara/website/pages/documentation/advanced/content/20-understanding/60-voila.md +12 -0
  253. solara/website/pages/documentation/advanced/content/30-enterprise/00-overview.md +7 -0
  254. solara/website/pages/documentation/advanced/content/30-enterprise/10-oauth.md +187 -0
  255. solara/website/pages/documentation/advanced/content/40-development/00-overview.md +0 -0
  256. solara/website/pages/documentation/advanced/content/40-development/01-contribute.md +45 -0
  257. solara/website/pages/documentation/advanced/content/40-development/10-setup.md +76 -0
  258. solara/website/pages/documentation/api/__init__.py +19 -0
  259. solara/website/pages/documentation/api/cross_filter/__init__.py +9 -0
  260. solara/website/pages/documentation/api/cross_filter/cross_filter_dataframe.py +22 -0
  261. solara/website/pages/documentation/api/cross_filter/cross_filter_report.py +20 -0
  262. solara/website/pages/documentation/api/cross_filter/cross_filter_select.py +20 -0
  263. solara/website/pages/documentation/api/cross_filter/cross_filter_slider.py +20 -0
  264. solara/website/pages/documentation/api/hooks/__init__.py +9 -0
  265. solara/website/pages/documentation/api/hooks/use_cross_filter.py +23 -0
  266. solara/website/pages/documentation/api/hooks/use_dark_effective.py +12 -0
  267. solara/website/pages/documentation/api/hooks/use_effect.md +43 -0
  268. solara/website/pages/documentation/api/hooks/use_effect.py +9 -0
  269. solara/website/pages/documentation/api/hooks/use_exception.py +31 -0
  270. solara/website/pages/documentation/api/hooks/use_memo.md +16 -0
  271. solara/website/pages/documentation/api/hooks/use_memo.py +9 -0
  272. solara/website/pages/documentation/api/hooks/use_previous.py +30 -0
  273. solara/website/pages/documentation/api/hooks/use_reactive.py +16 -0
  274. solara/website/pages/documentation/api/hooks/use_state.py +10 -0
  275. solara/website/pages/documentation/api/hooks/use_state_or_update.py +66 -0
  276. solara/website/pages/documentation/api/hooks/use_thread.md +64 -0
  277. solara/website/pages/documentation/api/hooks/use_thread.py +42 -0
  278. solara/website/pages/documentation/api/hooks/use_trait_observe.py +12 -0
  279. solara/website/pages/documentation/api/routing/__init__.py +9 -0
  280. solara/website/pages/documentation/api/routing/generate_routes.py +10 -0
  281. solara/website/pages/documentation/api/routing/generate_routes_directory.py +10 -0
  282. solara/website/pages/documentation/api/routing/resolve_path.py +35 -0
  283. solara/website/pages/documentation/api/routing/route.py +29 -0
  284. solara/website/pages/documentation/api/routing/use_route.py +76 -0
  285. solara/website/pages/documentation/api/routing/use_router.py +16 -0
  286. solara/website/pages/documentation/api/utilities/__init__.py +9 -0
  287. solara/website/pages/documentation/api/utilities/component_vue.py +10 -0
  288. solara/website/pages/documentation/api/utilities/computed.py +16 -0
  289. solara/website/pages/documentation/api/utilities/display.py +16 -0
  290. solara/website/pages/documentation/api/utilities/get_kernel_id.py +16 -0
  291. solara/website/pages/documentation/api/utilities/get_session_id.py +16 -0
  292. solara/website/pages/documentation/api/utilities/memoize.py +35 -0
  293. solara/website/pages/documentation/api/utilities/on_kernel_start.py +44 -0
  294. solara/website/pages/documentation/api/utilities/reactive.py +16 -0
  295. solara/website/pages/documentation/api/utilities/widget.py +104 -0
  296. solara/website/pages/documentation/components/__init__.py +12 -0
  297. solara/website/pages/documentation/components/advanced/__init__.py +9 -0
  298. solara/website/pages/documentation/components/advanced/link.py +25 -0
  299. solara/website/pages/documentation/components/advanced/meta.py +17 -0
  300. solara/website/pages/documentation/components/advanced/style.py +43 -0
  301. solara/website/pages/documentation/components/common.py +9 -0
  302. solara/website/pages/documentation/components/data/__init__.py +9 -0
  303. solara/website/pages/documentation/components/data/dataframe.py +44 -0
  304. solara/website/pages/documentation/components/data/pivot_table.py +81 -0
  305. solara/website/pages/documentation/components/enterprise/__init__.py +9 -0
  306. solara/website/pages/documentation/components/enterprise/avatar.py +24 -0
  307. solara/website/pages/documentation/components/enterprise/avatar_menu.py +25 -0
  308. solara/website/pages/documentation/components/input/__init__.py +9 -0
  309. solara/website/pages/documentation/components/input/button.py +23 -0
  310. solara/website/pages/documentation/components/input/checkbox.py +10 -0
  311. solara/website/pages/documentation/components/input/file_browser.py +30 -0
  312. solara/website/pages/documentation/components/input/file_drop.py +76 -0
  313. solara/website/pages/documentation/components/input/input.py +43 -0
  314. solara/website/pages/documentation/components/input/select.py +22 -0
  315. solara/website/pages/documentation/components/input/slider.py +29 -0
  316. solara/website/pages/documentation/components/input/switch.py +10 -0
  317. solara/website/pages/documentation/components/input/togglebuttons.py +21 -0
  318. solara/website/pages/documentation/components/lab/__init__.py +9 -0
  319. solara/website/pages/documentation/components/lab/chat.py +109 -0
  320. solara/website/pages/documentation/components/lab/confirmation_dialog.py +55 -0
  321. solara/website/pages/documentation/components/lab/cookies_headers.py +48 -0
  322. solara/website/pages/documentation/components/lab/input_date.py +20 -0
  323. solara/website/pages/documentation/components/lab/input_time.py +15 -0
  324. solara/website/pages/documentation/components/lab/menu.py +22 -0
  325. solara/website/pages/documentation/components/lab/tab.py +25 -0
  326. solara/website/pages/documentation/components/lab/tabs.py +45 -0
  327. solara/website/pages/documentation/components/lab/task.py +11 -0
  328. solara/website/pages/documentation/components/lab/theming.py +74 -0
  329. solara/website/pages/documentation/components/lab/use_task.py +11 -0
  330. solara/website/pages/documentation/components/layout/__init__.py +9 -0
  331. solara/website/pages/documentation/components/layout/app_bar.py +16 -0
  332. solara/website/pages/documentation/components/layout/app_bar_title.py +16 -0
  333. solara/website/pages/documentation/components/layout/app_layout.py +24 -0
  334. solara/website/pages/documentation/components/layout/card.py +15 -0
  335. solara/website/pages/documentation/components/layout/card_actions.py +16 -0
  336. solara/website/pages/documentation/components/layout/column.py +30 -0
  337. solara/website/pages/documentation/components/layout/columns.py +27 -0
  338. solara/website/pages/documentation/components/layout/columns_responsive.py +66 -0
  339. solara/website/pages/documentation/components/layout/details.py +13 -0
  340. solara/website/pages/documentation/components/layout/griddraggable.py +62 -0
  341. solara/website/pages/documentation/components/layout/gridfixed.py +19 -0
  342. solara/website/pages/documentation/components/layout/hbox.py +18 -0
  343. solara/website/pages/documentation/components/layout/row.py +30 -0
  344. solara/website/pages/documentation/components/layout/sidebar.py +24 -0
  345. solara/website/pages/documentation/components/layout/vbox.py +19 -0
  346. solara/website/pages/documentation/components/output/__init__.py +9 -0
  347. solara/website/pages/documentation/components/output/file_download.py +11 -0
  348. solara/website/pages/documentation/components/output/html.py +19 -0
  349. solara/website/pages/documentation/components/output/image.py +11 -0
  350. solara/website/pages/documentation/components/output/markdown.py +57 -0
  351. solara/website/pages/documentation/components/output/markdown_editor.py +51 -0
  352. solara/website/pages/documentation/components/output/sql_code.py +83 -0
  353. solara/website/pages/documentation/components/output/tooltip.py +11 -0
  354. solara/website/pages/documentation/components/page/__init__.py +9 -0
  355. solara/website/pages/documentation/components/page/head.py +15 -0
  356. solara/website/pages/documentation/components/page/title.py +25 -0
  357. solara/website/pages/documentation/components/status/__init__.py +9 -0
  358. solara/website/pages/documentation/components/status/error.py +39 -0
  359. solara/website/pages/documentation/components/status/info.py +39 -0
  360. solara/website/pages/documentation/components/status/progress.py +10 -0
  361. solara/website/pages/documentation/components/status/spinner.py +11 -0
  362. solara/website/pages/documentation/components/status/success.py +40 -0
  363. solara/website/pages/documentation/components/status/warning.py +47 -0
  364. solara/website/pages/documentation/components/viz/__init__.py +9 -0
  365. solara/website/pages/documentation/components/viz/altair.py +42 -0
  366. solara/website/pages/documentation/components/viz/echarts.py +77 -0
  367. solara/website/pages/documentation/components/viz/matplotlib.py +30 -0
  368. solara/website/pages/documentation/components/viz/plotly.py +63 -0
  369. solara/website/pages/documentation/components/viz/plotly_express.py +41 -0
  370. solara/website/pages/documentation/examples/__init__.py +54 -0
  371. solara/website/pages/documentation/examples/ai/__init__.py +11 -0
  372. solara/website/pages/documentation/examples/ai/chatbot.py +113 -0
  373. solara/website/pages/documentation/examples/ai/tokenizer.py +107 -0
  374. solara/website/pages/documentation/examples/basics/__init__.py +10 -0
  375. solara/website/pages/documentation/examples/basics/sine.py +28 -0
  376. solara/website/pages/documentation/examples/fullscreen/__init__.py +10 -0
  377. solara/website/pages/documentation/examples/fullscreen/authorization.py +3 -0
  378. solara/website/pages/documentation/examples/fullscreen/layout_demo.py +3 -0
  379. solara/website/pages/documentation/examples/fullscreen/multipage.py +3 -0
  380. solara/website/pages/documentation/examples/fullscreen/scatter.py +3 -0
  381. solara/website/pages/documentation/examples/fullscreen/scrolling.py +3 -0
  382. solara/website/pages/documentation/examples/fullscreen/tutorial_streamlit.py +3 -0
  383. solara/website/pages/documentation/examples/general/__init__.py +10 -0
  384. solara/website/pages/documentation/examples/general/custom_storage.py +70 -0
  385. solara/website/pages/documentation/examples/general/deploy_model.py +115 -0
  386. solara/website/pages/documentation/examples/general/live_update.py +32 -0
  387. solara/website/pages/documentation/examples/general/login_oauth.py +81 -0
  388. solara/website/pages/documentation/examples/general/mycard.vue +58 -0
  389. solara/website/pages/documentation/examples/general/pokemon_search.py +51 -0
  390. solara/website/pages/documentation/examples/general/vue_component.py +50 -0
  391. solara/website/pages/documentation/examples/ipycanvas.py +49 -0
  392. solara/website/pages/documentation/examples/libraries/__init__.py +10 -0
  393. solara/website/pages/documentation/examples/libraries/altair.py +65 -0
  394. solara/website/pages/documentation/examples/libraries/bqplot.py +39 -0
  395. solara/website/pages/documentation/examples/libraries/ipyleaflet.py +33 -0
  396. solara/website/pages/documentation/examples/libraries/ipyleaflet_advanced.py +66 -0
  397. solara/website/pages/documentation/examples/utilities/__init__.py +10 -0
  398. solara/website/pages/documentation/examples/utilities/calculator.py +157 -0
  399. solara/website/pages/documentation/examples/utilities/countdown_timer.py +62 -0
  400. solara/website/pages/documentation/examples/utilities/todo.py +196 -0
  401. solara/website/pages/documentation/examples/visualization/__init__.py +6 -0
  402. solara/website/pages/documentation/examples/visualization/annotator.py +67 -0
  403. solara/website/pages/documentation/examples/visualization/linked_views.py +81 -0
  404. solara/website/pages/documentation/examples/visualization/plotly.py +44 -0
  405. solara/website/pages/documentation/faq/__init__.py +12 -0
  406. solara/website/pages/documentation/faq/content/99-faq.md +112 -0
  407. solara/website/pages/documentation/getting_started/__init__.py +9 -0
  408. solara/website/pages/documentation/getting_started/content/00-quickstart.md +107 -0
  409. solara/website/pages/documentation/getting_started/content/01-introduction.md +125 -0
  410. solara/website/pages/documentation/getting_started/content/02-installing.md +134 -0
  411. solara/website/pages/documentation/getting_started/content/04-tutorials/00-overview.md +14 -0
  412. solara/website/pages/documentation/getting_started/content/04-tutorials/10_data_science.py +13 -0
  413. solara/website/pages/documentation/getting_started/content/04-tutorials/20-web-app.md +89 -0
  414. solara/website/pages/documentation/getting_started/content/04-tutorials/30-ipywidgets.md +124 -0
  415. solara/website/pages/documentation/getting_started/content/04-tutorials/40-streamlit.md +146 -0
  416. solara/website/pages/documentation/getting_started/content/04-tutorials/50-dash.md +144 -0
  417. solara/website/pages/documentation/getting_started/content/04-tutorials/60-jupyter-dashboard-part1.py +65 -0
  418. solara/website/pages/documentation/getting_started/content/04-tutorials/SF_crime_sample.csv.gz +0 -0
  419. solara/website/pages/documentation/getting_started/content/04-tutorials/_data_science.ipynb +445 -0
  420. solara/website/pages/documentation/getting_started/content/04-tutorials/_jupyter_dashboard_1.ipynb +1021 -0
  421. solara/website/pages/documentation/getting_started/content/05-fundamentals/00-overview.md +11 -0
  422. solara/website/pages/documentation/getting_started/content/05-fundamentals/10-components.md +228 -0
  423. solara/website/pages/documentation/getting_started/content/05-fundamentals/50-state-management.md +278 -0
  424. solara/website/pages/documentation/getting_started/content/07-deploying/00-overview.md +7 -0
  425. solara/website/pages/documentation/getting_started/content/07-deploying/10-self-hosted.md +305 -0
  426. solara/website/pages/documentation/getting_started/content/07-deploying/20-cloud-hosted.md +80 -0
  427. solara/website/pages/documentation/getting_started/content/80-what-is-lab.md +7 -0
  428. solara/website/pages/documentation/getting_started/content/90-troubleshoot.md +26 -0
  429. solara/website/pages/docutils.py +38 -0
  430. solara/website/pages/home.vue +1199 -0
  431. solara/website/pages/our_team/__init__.py +83 -0
  432. solara/website/pages/pricing/__init__.py +31 -0
  433. solara/website/pages/roadmap/__init__.py +11 -0
  434. solara/website/pages/roadmap/roadmap.md +47 -0
  435. solara/website/pages/scale_ipywidgets.py +45 -0
  436. solara/website/pages/showcase/__init__.py +105 -0
  437. solara/website/pages/showcase/domino_code_assist.py +60 -0
  438. solara/website/pages/showcase/planeto_tessa.py +19 -0
  439. solara/website/pages/showcase/solara_dev.py +54 -0
  440. solara/website/pages/showcase/solarathon_2023_team_2.py +22 -0
  441. solara/website/pages/showcase/solarathon_2023_team_4.py +22 -0
  442. solara/website/pages/showcase/solarathon_2023_team_5.py +23 -0
  443. solara/website/pages/showcase/solarathon_2023_team_6.py +34 -0
  444. solara/website/pages/showcase/wanderlust.py +27 -0
  445. solara/website/public/beach.jpeg +0 -0
  446. solara/website/public/logo.svg +6 -0
  447. solara/website/public/social/discord.svg +1 -0
  448. solara/website/public/social/github.svg +1 -0
  449. solara/website/public/social/twitter.svg +3 -0
  450. solara/website/public/success.html +25 -0
  451. solara/website/templates/index.html.j2 +117 -0
  452. solara/website/utils.py +51 -0
  453. solara/widgets/__init__.py +1 -0
  454. solara/widgets/vue/gridlayout.vue +107 -0
  455. solara/widgets/vue/html.vue +4 -0
  456. solara/widgets/vue/navigator.vue +134 -0
  457. solara/widgets/vue/vegalite.vue +130 -0
  458. solara/widgets/widgets.py +74 -0
  459. solara_ui-1.45.0.data/data/etc/jupyter/jupyter_notebook_config.d/solara.json +7 -0
  460. solara_ui-1.45.0.data/data/etc/jupyter/jupyter_server_config.d/solara.json +7 -0
  461. solara_ui-1.45.0.dist-info/METADATA +162 -0
  462. solara_ui-1.45.0.dist-info/RECORD +464 -0
  463. solara_ui-1.45.0.dist-info/WHEEL +4 -0
  464. solara_ui-1.45.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,1681 @@
1
+ html {
2
+ /* override vuetify's css reset ress.css */
3
+ overflow-y: auto;
4
+ scroll-behavior: smooth;
5
+ }
6
+
7
+ .jupyter-widgets code {
8
+ /* background-color: unset; */
9
+ /* padding: 10px; */
10
+ }
11
+
12
+ code::after,
13
+ code::before {
14
+ content: unset !important;
15
+ }
16
+
17
+ .vuetify-styles .v-application code,
18
+ .v-application code {
19
+ color: unset !important;
20
+ background-color: unset !important;
21
+ /* font-family: Hack !important; */
22
+ font-size: 14px !important;
23
+ font-weight: 400 !important;
24
+ box-shadow: unset !important;
25
+ }
26
+
27
+ .v-application--wrap .v-application--wrap {
28
+ /* disable min-height: 100vh set by vuetify for nested apps */
29
+ min-height: unset;
30
+ }
31
+
32
+
33
+ div.highlight pre code {
34
+ /* box-shadow: 0 2px 1px -1px rgb(0 0 0 / 20%), 0 1px 1px 0 rgb(0 0 0 / 14%), 0 1px 3px 0 rgb(0 0 0 / 12%); */
35
+ /* border: 1px #333 solid; */
36
+ }
37
+
38
+ .emojione {
39
+ width: 1.2em;
40
+ }
41
+
42
+
43
+ .solara-progress .v-progress-linear,
44
+ .solara-progress .v-progress-circular,
45
+ .solara-progress .v-progress-circular__overlay {
46
+ transition: none !important
47
+ }
48
+
49
+
50
+ /* see https://github.com/mariobuikhuizen/voila-vuetify/commit/70441763d9039dff2fe044f61a7651769a2151d4 */
51
+ .v-application * {
52
+ box-sizing: border-box;
53
+ }
54
+
55
+
56
+ .solara-markdown img {
57
+ max-width: 100%;
58
+ }
59
+
60
+ .solara-markdown {
61
+ max-width: 1024px;
62
+ padding-top: 10px;
63
+ }
64
+
65
+
66
+ div.solara-markdown-output>.v-messages {
67
+ font-style: italic;
68
+ margin-top: 10px;
69
+ }
70
+
71
+ div.solara-markdown-output {
72
+ padding: 30px;
73
+ margin-top: 15px;
74
+ margin-bottom: 15px;
75
+ }
76
+
77
+
78
+ div.highlight {
79
+ border: 1px solid var(--color-border-appbar);
80
+ background-color: #fafafa;
81
+ padding: 30px;
82
+ border-radius: 20px;
83
+ margin-top: 15px;
84
+ margin-bottom: 15px;
85
+ }
86
+
87
+ .solara-markdown pre,
88
+ .solara-markdown .jp-RenderedHTMLCommon pre {
89
+ margin: 0 !important;
90
+ padding: 0 !important;
91
+ }
92
+
93
+ .solara-markdown pre {
94
+ background-color: unset !important
95
+ }
96
+
97
+ .jp-OutputArea-prompt {
98
+ display: none;
99
+ }
100
+
101
+ /* See https://github.com/jupyter-widgets/ipywidgets/issues/3692
102
+ TODO: this fixes the cursor in Solara, but not in the notebook
103
+ */
104
+ .solara-image {
105
+ cursor: unset !important;
106
+ }
107
+
108
+ @keyframes solara-fade-in {
109
+ 0% {
110
+ opacity: 0.2;
111
+ }
112
+
113
+ 100% {
114
+ opacity: 1.0;
115
+ }
116
+ }
117
+
118
+ .solara-page-loading .solara-content-main {
119
+ opacity: 0.2;
120
+ }
121
+
122
+ .solara-content-main {
123
+ animation: solara-fade-in 0.5s ease;
124
+ }
125
+
126
+ .solara-autorouter-content {
127
+ height: 100%;
128
+ max-width: 100%;
129
+ }
130
+
131
+ /* originally from index.css */
132
+
133
+ .p-Widget, /* </DEPRECATED> */
134
+ .lm-Widget {
135
+ position: relative;
136
+ overflow: hidden;
137
+ cursor: default;
138
+ }
139
+
140
+ /* Originally from nbconvert, required for accordion widget to work correctly */
141
+ .p-Widget.p-mod-hidden, /* </DEPRECATED> */
142
+ .lm-Widget.lm-mod-hidden {
143
+ display: none !important;
144
+ }
145
+
146
+ .lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
147
+ /* Title is rotated for horizontal accordion panel using CSS */
148
+ display: block;
149
+ transform-origin: top left;
150
+ transform: rotate(-90deg) translate(-100%);
151
+ }
152
+
153
+ /* change font settings for ipywidgets */
154
+ .jupyter-widgets {
155
+ font-weight:400;
156
+ letter-spacing:0;
157
+ text-transform:none;
158
+ font-family: var(--jp-ui-font-family);
159
+ }
160
+
161
+
162
+ :root {
163
+ --jp-warn-color0: var(--md-orange-700);
164
+ }
165
+
166
+ p {
167
+ margin-top: unset;
168
+ margin-bottom: unset;
169
+ }
170
+
171
+ small {
172
+ font-size: unset;
173
+ }
174
+
175
+ strong {
176
+ font-weight: unset;
177
+ }
178
+
179
+ /* Override Blueprint's _typography.scss styles */
180
+ a {
181
+ text-decoration: unset;
182
+ color: unset;
183
+ }
184
+
185
+ a:hover {
186
+ text-decoration: unset;
187
+ color: unset;
188
+ }
189
+
190
+ /* Override Blueprint's _accessibility.scss styles */
191
+ :focus {
192
+ outline: unset;
193
+ outline-offset: unset;
194
+ -moz-outline-radius: unset;
195
+ }
196
+
197
+
198
+ /** manually stripped down version of the nbconvert css
199
+ * only contains css for the mime renderer and output area
200
+ * and things I (MB) wasn't sure about.
201
+ **/
202
+ /**
203
+ * google-material-color v1.2.6
204
+ * https://github.com/danlevan/google-material-color
205
+ */
206
+ :root {
207
+ --md-red-50: #ffebee;
208
+ --md-red-100: #ffcdd2;
209
+ --md-red-200: #ef9a9a;
210
+ --md-red-300: #e57373;
211
+ --md-red-400: #ef5350;
212
+ --md-red-500: #f44336;
213
+ --md-red-600: #e53935;
214
+ --md-red-700: #d32f2f;
215
+ --md-red-800: #c62828;
216
+ --md-red-900: #b71c1c;
217
+ --md-red-A100: #ff8a80;
218
+ --md-red-A200: #ff5252;
219
+ --md-red-A400: #ff1744;
220
+ --md-red-A700: #d50000;
221
+
222
+ --md-pink-50: #fce4ec;
223
+ --md-pink-100: #f8bbd0;
224
+ --md-pink-200: #f48fb1;
225
+ --md-pink-300: #f06292;
226
+ --md-pink-400: #ec407a;
227
+ --md-pink-500: #e91e63;
228
+ --md-pink-600: #d81b60;
229
+ --md-pink-700: #c2185b;
230
+ --md-pink-800: #ad1457;
231
+ --md-pink-900: #880e4f;
232
+ --md-pink-A100: #ff80ab;
233
+ --md-pink-A200: #ff4081;
234
+ --md-pink-A400: #f50057;
235
+ --md-pink-A700: #c51162;
236
+
237
+ --md-purple-50: #f3e5f5;
238
+ --md-purple-100: #e1bee7;
239
+ --md-purple-200: #ce93d8;
240
+ --md-purple-300: #ba68c8;
241
+ --md-purple-400: #ab47bc;
242
+ --md-purple-500: #9c27b0;
243
+ --md-purple-600: #8e24aa;
244
+ --md-purple-700: #7b1fa2;
245
+ --md-purple-800: #6a1b9a;
246
+ --md-purple-900: #4a148c;
247
+ --md-purple-A100: #ea80fc;
248
+ --md-purple-A200: #e040fb;
249
+ --md-purple-A400: #d500f9;
250
+ --md-purple-A700: #aa00ff;
251
+
252
+ --md-deep-purple-50: #ede7f6;
253
+ --md-deep-purple-100: #d1c4e9;
254
+ --md-deep-purple-200: #b39ddb;
255
+ --md-deep-purple-300: #9575cd;
256
+ --md-deep-purple-400: #7e57c2;
257
+ --md-deep-purple-500: #673ab7;
258
+ --md-deep-purple-600: #5e35b1;
259
+ --md-deep-purple-700: #512da8;
260
+ --md-deep-purple-800: #4527a0;
261
+ --md-deep-purple-900: #311b92;
262
+ --md-deep-purple-A100: #b388ff;
263
+ --md-deep-purple-A200: #7c4dff;
264
+ --md-deep-purple-A400: #651fff;
265
+ --md-deep-purple-A700: #6200ea;
266
+
267
+ --md-indigo-50: #e8eaf6;
268
+ --md-indigo-100: #c5cae9;
269
+ --md-indigo-200: #9fa8da;
270
+ --md-indigo-300: #7986cb;
271
+ --md-indigo-400: #5c6bc0;
272
+ --md-indigo-500: #3f51b5;
273
+ --md-indigo-600: #3949ab;
274
+ --md-indigo-700: #303f9f;
275
+ --md-indigo-800: #283593;
276
+ --md-indigo-900: #1a237e;
277
+ --md-indigo-A100: #8c9eff;
278
+ --md-indigo-A200: #536dfe;
279
+ --md-indigo-A400: #3d5afe;
280
+ --md-indigo-A700: #304ffe;
281
+
282
+ --md-blue-50: #e3f2fd;
283
+ --md-blue-100: #bbdefb;
284
+ --md-blue-200: #90caf9;
285
+ --md-blue-300: #64b5f6;
286
+ --md-blue-400: #42a5f5;
287
+ --md-blue-500: #2196f3;
288
+ --md-blue-600: #1e88e5;
289
+ --md-blue-700: #1976d2;
290
+ --md-blue-800: #1565c0;
291
+ --md-blue-900: #0d47a1;
292
+ --md-blue-A100: #82b1ff;
293
+ --md-blue-A200: #448aff;
294
+ --md-blue-A400: #2979ff;
295
+ --md-blue-A700: #2962ff;
296
+
297
+ --md-light-blue-50: #e1f5fe;
298
+ --md-light-blue-100: #b3e5fc;
299
+ --md-light-blue-200: #81d4fa;
300
+ --md-light-blue-300: #4fc3f7;
301
+ --md-light-blue-400: #29b6f6;
302
+ --md-light-blue-500: #03a9f4;
303
+ --md-light-blue-600: #039be5;
304
+ --md-light-blue-700: #0288d1;
305
+ --md-light-blue-800: #0277bd;
306
+ --md-light-blue-900: #01579b;
307
+ --md-light-blue-A100: #80d8ff;
308
+ --md-light-blue-A200: #40c4ff;
309
+ --md-light-blue-A400: #00b0ff;
310
+ --md-light-blue-A700: #0091ea;
311
+
312
+ --md-cyan-50: #e0f7fa;
313
+ --md-cyan-100: #b2ebf2;
314
+ --md-cyan-200: #80deea;
315
+ --md-cyan-300: #4dd0e1;
316
+ --md-cyan-400: #26c6da;
317
+ --md-cyan-500: #00bcd4;
318
+ --md-cyan-600: #00acc1;
319
+ --md-cyan-700: #0097a7;
320
+ --md-cyan-800: #00838f;
321
+ --md-cyan-900: #006064;
322
+ --md-cyan-A100: #84ffff;
323
+ --md-cyan-A200: #18ffff;
324
+ --md-cyan-A400: #00e5ff;
325
+ --md-cyan-A700: #00b8d4;
326
+
327
+ --md-teal-50: #e0f2f1;
328
+ --md-teal-100: #b2dfdb;
329
+ --md-teal-200: #80cbc4;
330
+ --md-teal-300: #4db6ac;
331
+ --md-teal-400: #26a69a;
332
+ --md-teal-500: #009688;
333
+ --md-teal-600: #00897b;
334
+ --md-teal-700: #00796b;
335
+ --md-teal-800: #00695c;
336
+ --md-teal-900: #004d40;
337
+ --md-teal-A100: #a7ffeb;
338
+ --md-teal-A200: #64ffda;
339
+ --md-teal-A400: #1de9b6;
340
+ --md-teal-A700: #00bfa5;
341
+
342
+ --md-green-50: #e8f5e9;
343
+ --md-green-100: #c8e6c9;
344
+ --md-green-200: #a5d6a7;
345
+ --md-green-300: #81c784;
346
+ --md-green-400: #66bb6a;
347
+ --md-green-500: #4caf50;
348
+ --md-green-600: #43a047;
349
+ --md-green-700: #388e3c;
350
+ --md-green-800: #2e7d32;
351
+ --md-green-900: #1b5e20;
352
+ --md-green-A100: #b9f6ca;
353
+ --md-green-A200: #69f0ae;
354
+ --md-green-A400: #00e676;
355
+ --md-green-A700: #00c853;
356
+
357
+ --md-light-green-50: #f1f8e9;
358
+ --md-light-green-100: #dcedc8;
359
+ --md-light-green-200: #c5e1a5;
360
+ --md-light-green-300: #aed581;
361
+ --md-light-green-400: #9ccc65;
362
+ --md-light-green-500: #8bc34a;
363
+ --md-light-green-600: #7cb342;
364
+ --md-light-green-700: #689f38;
365
+ --md-light-green-800: #558b2f;
366
+ --md-light-green-900: #33691e;
367
+ --md-light-green-A100: #ccff90;
368
+ --md-light-green-A200: #b2ff59;
369
+ --md-light-green-A400: #76ff03;
370
+ --md-light-green-A700: #64dd17;
371
+
372
+ --md-lime-50: #f9fbe7;
373
+ --md-lime-100: #f0f4c3;
374
+ --md-lime-200: #e6ee9c;
375
+ --md-lime-300: #dce775;
376
+ --md-lime-400: #d4e157;
377
+ --md-lime-500: #cddc39;
378
+ --md-lime-600: #c0ca33;
379
+ --md-lime-700: #afb42b;
380
+ --md-lime-800: #9e9d24;
381
+ --md-lime-900: #827717;
382
+ --md-lime-A100: #f4ff81;
383
+ --md-lime-A200: #eeff41;
384
+ --md-lime-A400: #c6ff00;
385
+ --md-lime-A700: #aeea00;
386
+
387
+ --md-yellow-50: #fffde7;
388
+ --md-yellow-100: #fff9c4;
389
+ --md-yellow-200: #fff59d;
390
+ --md-yellow-300: #fff176;
391
+ --md-yellow-400: #ffee58;
392
+ --md-yellow-500: #ffeb3b;
393
+ --md-yellow-600: #fdd835;
394
+ --md-yellow-700: #fbc02d;
395
+ --md-yellow-800: #f9a825;
396
+ --md-yellow-900: #f57f17;
397
+ --md-yellow-A100: #ffff8d;
398
+ --md-yellow-A200: #ffff00;
399
+ --md-yellow-A400: #ffea00;
400
+ --md-yellow-A700: #ffd600;
401
+
402
+ --md-amber-50: #fff8e1;
403
+ --md-amber-100: #ffecb3;
404
+ --md-amber-200: #ffe082;
405
+ --md-amber-300: #ffd54f;
406
+ --md-amber-400: #ffca28;
407
+ --md-amber-500: #ffc107;
408
+ --md-amber-600: #ffb300;
409
+ --md-amber-700: #ffa000;
410
+ --md-amber-800: #ff8f00;
411
+ --md-amber-900: #ff6f00;
412
+ --md-amber-A100: #ffe57f;
413
+ --md-amber-A200: #ffd740;
414
+ --md-amber-A400: #ffc400;
415
+ --md-amber-A700: #ffab00;
416
+
417
+ --md-orange-50: #fff3e0;
418
+ --md-orange-100: #ffe0b2;
419
+ --md-orange-200: #ffcc80;
420
+ --md-orange-300: #ffb74d;
421
+ --md-orange-400: #ffa726;
422
+ --md-orange-500: #ff9800;
423
+ --md-orange-600: #fb8c00;
424
+ --md-orange-700: #f57c00;
425
+ --md-orange-800: #ef6c00;
426
+ --md-orange-900: #e65100;
427
+ --md-orange-A100: #ffd180;
428
+ --md-orange-A200: #ffab40;
429
+ --md-orange-A400: #ff9100;
430
+ --md-orange-A700: #ff6d00;
431
+
432
+ --md-deep-orange-50: #fbe9e7;
433
+ --md-deep-orange-100: #ffccbc;
434
+ --md-deep-orange-200: #ffab91;
435
+ --md-deep-orange-300: #ff8a65;
436
+ --md-deep-orange-400: #ff7043;
437
+ --md-deep-orange-500: #ff5722;
438
+ --md-deep-orange-600: #f4511e;
439
+ --md-deep-orange-700: #e64a19;
440
+ --md-deep-orange-800: #d84315;
441
+ --md-deep-orange-900: #bf360c;
442
+ --md-deep-orange-A100: #ff9e80;
443
+ --md-deep-orange-A200: #ff6e40;
444
+ --md-deep-orange-A400: #ff3d00;
445
+ --md-deep-orange-A700: #dd2c00;
446
+
447
+ --md-brown-50: #efebe9;
448
+ --md-brown-100: #d7ccc8;
449
+ --md-brown-200: #bcaaa4;
450
+ --md-brown-300: #a1887f;
451
+ --md-brown-400: #8d6e63;
452
+ --md-brown-500: #795548;
453
+ --md-brown-600: #6d4c41;
454
+ --md-brown-700: #5d4037;
455
+ --md-brown-800: #4e342e;
456
+ --md-brown-900: #3e2723;
457
+
458
+ --md-grey-50: #fafafa;
459
+ --md-grey-100: #f5f5f5;
460
+ --md-grey-200: #eeeeee;
461
+ --md-grey-300: #e0e0e0;
462
+ --md-grey-400: #bdbdbd;
463
+ --md-grey-500: #9e9e9e;
464
+ --md-grey-600: #757575;
465
+ --md-grey-700: #616161;
466
+ --md-grey-800: #424242;
467
+ --md-grey-900: #212121;
468
+
469
+ --md-blue-grey-50: #eceff1;
470
+ --md-blue-grey-100: #cfd8dc;
471
+ --md-blue-grey-200: #b0bec5;
472
+ --md-blue-grey-300: #90a4ae;
473
+ --md-blue-grey-400: #78909c;
474
+ --md-blue-grey-500: #607d8b;
475
+ --md-blue-grey-600: #546e7a;
476
+ --md-blue-grey-700: #455a64;
477
+ --md-blue-grey-800: #37474f;
478
+ --md-blue-grey-900: #263238;
479
+ }
480
+
481
+ :root {
482
+ /* This is the padding value to fill the gaps between lines containing spans with background color. */
483
+ --jp-private-code-span-padding: calc(
484
+ (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
485
+ );
486
+ }
487
+
488
+ .jp-RenderedText {
489
+ text-align: left;
490
+ padding-left: var(--jp-code-padding);
491
+ line-height: var(--jp-code-line-height);
492
+ font-family: var(--jp-code-font-family);
493
+ }
494
+
495
+ .jp-RenderedText pre,
496
+ .jp-RenderedJavaScript pre,
497
+ .jp-RenderedHTMLCommon pre {
498
+ color: var(--jp-content-font-color1);
499
+ font-size: var(--jp-code-font-size);
500
+ border: none;
501
+ margin: 0px;
502
+ padding: 0px;
503
+ }
504
+
505
+ .jp-RenderedText pre a:link {
506
+ text-decoration: none;
507
+ color: var(--jp-content-link-color);
508
+ }
509
+ .jp-RenderedText pre a:hover {
510
+ text-decoration: underline;
511
+ color: var(--jp-content-link-color);
512
+ }
513
+ .jp-RenderedText pre a:visited {
514
+ text-decoration: none;
515
+ color: var(--jp-content-link-color);
516
+ }
517
+
518
+ /* console foregrounds and backgrounds */
519
+ .jp-RenderedText pre .ansi-black-fg {
520
+ color: #3e424d;
521
+ }
522
+ .jp-RenderedText pre .ansi-red-fg {
523
+ color: #e75c58;
524
+ }
525
+ .jp-RenderedText pre .ansi-green-fg {
526
+ color: #00a250;
527
+ }
528
+ .jp-RenderedText pre .ansi-yellow-fg {
529
+ color: #ddb62b;
530
+ }
531
+ .jp-RenderedText pre .ansi-blue-fg {
532
+ color: #208ffb;
533
+ }
534
+ .jp-RenderedText pre .ansi-magenta-fg {
535
+ color: #d160c4;
536
+ }
537
+ .jp-RenderedText pre .ansi-cyan-fg {
538
+ color: #60c6c8;
539
+ }
540
+ .jp-RenderedText pre .ansi-white-fg {
541
+ color: #c5c1b4;
542
+ }
543
+
544
+ .jp-RenderedText pre .ansi-black-bg {
545
+ background-color: #3e424d;
546
+ padding: var(--jp-private-code-span-padding) 0;
547
+ }
548
+ .jp-RenderedText pre .ansi-red-bg {
549
+ background-color: #e75c58;
550
+ padding: var(--jp-private-code-span-padding) 0;
551
+ }
552
+ .jp-RenderedText pre .ansi-green-bg {
553
+ background-color: #00a250;
554
+ padding: var(--jp-private-code-span-padding) 0;
555
+ }
556
+ .jp-RenderedText pre .ansi-yellow-bg {
557
+ background-color: #ddb62b;
558
+ padding: var(--jp-private-code-span-padding) 0;
559
+ }
560
+ .jp-RenderedText pre .ansi-blue-bg {
561
+ background-color: #208ffb;
562
+ padding: var(--jp-private-code-span-padding) 0;
563
+ }
564
+ .jp-RenderedText pre .ansi-magenta-bg {
565
+ background-color: #d160c4;
566
+ padding: var(--jp-private-code-span-padding) 0;
567
+ }
568
+ .jp-RenderedText pre .ansi-cyan-bg {
569
+ background-color: #60c6c8;
570
+ padding: var(--jp-private-code-span-padding) 0;
571
+ }
572
+ .jp-RenderedText pre .ansi-white-bg {
573
+ background-color: #c5c1b4;
574
+ padding: var(--jp-private-code-span-padding) 0;
575
+ }
576
+
577
+ .jp-RenderedText pre .ansi-black-intense-fg {
578
+ color: #282c36;
579
+ }
580
+ .jp-RenderedText pre .ansi-red-intense-fg {
581
+ color: #b22b31;
582
+ }
583
+ .jp-RenderedText pre .ansi-green-intense-fg {
584
+ color: #007427;
585
+ }
586
+ .jp-RenderedText pre .ansi-yellow-intense-fg {
587
+ color: #b27d12;
588
+ }
589
+ .jp-RenderedText pre .ansi-blue-intense-fg {
590
+ color: #0065ca;
591
+ }
592
+ .jp-RenderedText pre .ansi-magenta-intense-fg {
593
+ color: #a03196;
594
+ }
595
+ .jp-RenderedText pre .ansi-cyan-intense-fg {
596
+ color: #258f8f;
597
+ }
598
+ .jp-RenderedText pre .ansi-white-intense-fg {
599
+ color: #a1a6b2;
600
+ }
601
+
602
+ .jp-RenderedText pre .ansi-black-intense-bg {
603
+ background-color: #282c36;
604
+ padding: var(--jp-private-code-span-padding) 0;
605
+ }
606
+ .jp-RenderedText pre .ansi-red-intense-bg {
607
+ background-color: #b22b31;
608
+ padding: var(--jp-private-code-span-padding) 0;
609
+ }
610
+ .jp-RenderedText pre .ansi-green-intense-bg {
611
+ background-color: #007427;
612
+ padding: var(--jp-private-code-span-padding) 0;
613
+ }
614
+ .jp-RenderedText pre .ansi-yellow-intense-bg {
615
+ background-color: #b27d12;
616
+ padding: var(--jp-private-code-span-padding) 0;
617
+ }
618
+ .jp-RenderedText pre .ansi-blue-intense-bg {
619
+ background-color: #0065ca;
620
+ padding: var(--jp-private-code-span-padding) 0;
621
+ }
622
+ .jp-RenderedText pre .ansi-magenta-intense-bg {
623
+ background-color: #a03196;
624
+ padding: var(--jp-private-code-span-padding) 0;
625
+ }
626
+ .jp-RenderedText pre .ansi-cyan-intense-bg {
627
+ background-color: #258f8f;
628
+ padding: var(--jp-private-code-span-padding) 0;
629
+ }
630
+ .jp-RenderedText pre .ansi-white-intense-bg {
631
+ background-color: #a1a6b2;
632
+ padding: var(--jp-private-code-span-padding) 0;
633
+ }
634
+
635
+ .jp-RenderedText pre .ansi-default-inverse-fg {
636
+ color: var(--jp-ui-inverse-font-color0);
637
+ }
638
+ .jp-RenderedText pre .ansi-default-inverse-bg {
639
+ background-color: var(--jp-inverse-layout-color0);
640
+ padding: var(--jp-private-code-span-padding) 0;
641
+ }
642
+
643
+ .jp-RenderedText pre .ansi-bold {
644
+ font-weight: bold;
645
+ }
646
+ .jp-RenderedText pre .ansi-underline {
647
+ text-decoration: underline;
648
+ }
649
+
650
+ .jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
651
+ background: var(--jp-rendermime-error-background);
652
+ padding-top: var(--jp-code-padding);
653
+ }
654
+
655
+ /*-----------------------------------------------------------------------------
656
+ | RenderedLatex
657
+ |----------------------------------------------------------------------------*/
658
+
659
+ .jp-RenderedLatex {
660
+ color: var(--jp-content-font-color1);
661
+ font-size: var(--jp-content-font-size1);
662
+ line-height: var(--jp-content-line-height);
663
+ }
664
+
665
+ /* Left-justify outputs.*/
666
+ .jp-OutputArea-output.jp-RenderedLatex {
667
+ padding: var(--jp-code-padding);
668
+ text-align: left;
669
+ }
670
+
671
+ /*-----------------------------------------------------------------------------
672
+ | RenderedHTML
673
+ |----------------------------------------------------------------------------*/
674
+
675
+ .jp-RenderedHTMLCommon {
676
+ color: var(--jp-content-font-color1);
677
+ font-family: var(--jp-content-font-family);
678
+ font-size: var(--jp-content-font-size1);
679
+ line-height: var(--jp-content-line-height);
680
+ /* Give a bit more R padding on Markdown text to keep line lengths reasonable */
681
+ padding-right: 20px;
682
+ }
683
+
684
+ .jp-RenderedHTMLCommon em {
685
+ font-style: italic;
686
+ }
687
+
688
+ .jp-RenderedHTMLCommon strong {
689
+ font-weight: bold;
690
+ }
691
+
692
+ .jp-RenderedHTMLCommon u {
693
+ text-decoration: underline;
694
+ }
695
+
696
+ .jp-RenderedHTMLCommon a:link {
697
+ text-decoration: none;
698
+ color: var(--jp-content-link-color);
699
+ }
700
+
701
+ .jp-RenderedHTMLCommon a:hover {
702
+ text-decoration: underline;
703
+ color: var(--jp-content-link-color);
704
+ }
705
+
706
+ .jp-RenderedHTMLCommon a:visited {
707
+ text-decoration: none;
708
+ color: var(--jp-content-link-color);
709
+ }
710
+
711
+ /* Headings */
712
+
713
+ .jp-RenderedHTMLCommon h1,
714
+ .jp-RenderedHTMLCommon h2,
715
+ .jp-RenderedHTMLCommon h3,
716
+ .jp-RenderedHTMLCommon h4,
717
+ .jp-RenderedHTMLCommon h5,
718
+ .jp-RenderedHTMLCommon h6 {
719
+ line-height: var(--jp-content-heading-line-height);
720
+ font-weight: var(--jp-content-heading-font-weight);
721
+ font-style: normal;
722
+ margin: var(--jp-content-heading-margin-top) 0
723
+ var(--jp-content-heading-margin-bottom) 0;
724
+ }
725
+
726
+ .jp-RenderedHTMLCommon h1:first-child,
727
+ .jp-RenderedHTMLCommon h2:first-child,
728
+ .jp-RenderedHTMLCommon h3:first-child,
729
+ .jp-RenderedHTMLCommon h4:first-child,
730
+ .jp-RenderedHTMLCommon h5:first-child,
731
+ .jp-RenderedHTMLCommon h6:first-child {
732
+ margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
733
+ }
734
+
735
+ .jp-RenderedHTMLCommon h1:last-child,
736
+ .jp-RenderedHTMLCommon h2:last-child,
737
+ .jp-RenderedHTMLCommon h3:last-child,
738
+ .jp-RenderedHTMLCommon h4:last-child,
739
+ .jp-RenderedHTMLCommon h5:last-child,
740
+ .jp-RenderedHTMLCommon h6:last-child {
741
+ margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
742
+ }
743
+
744
+ .jp-RenderedHTMLCommon h1 {
745
+ font-size: var(--jp-content-font-size5);
746
+ }
747
+
748
+ .jp-RenderedHTMLCommon h2 {
749
+ font-size: var(--jp-content-font-size4);
750
+ }
751
+
752
+ .jp-RenderedHTMLCommon h3 {
753
+ font-size: var(--jp-content-font-size3);
754
+ }
755
+
756
+ .jp-RenderedHTMLCommon h4 {
757
+ font-size: var(--jp-content-font-size2);
758
+ }
759
+
760
+ .jp-RenderedHTMLCommon h5 {
761
+ font-size: var(--jp-content-font-size1);
762
+ }
763
+
764
+ .jp-RenderedHTMLCommon h6 {
765
+ font-size: var(--jp-content-font-size0);
766
+ }
767
+
768
+ /* Lists */
769
+
770
+ .jp-RenderedHTMLCommon ul:not(.list-inline),
771
+ .jp-RenderedHTMLCommon ol:not(.list-inline) {
772
+ padding-left: 2em;
773
+ }
774
+
775
+ .jp-RenderedHTMLCommon ul {
776
+ list-style: disc;
777
+ }
778
+
779
+ .jp-RenderedHTMLCommon ul ul {
780
+ list-style: square;
781
+ }
782
+
783
+ .jp-RenderedHTMLCommon ul ul ul {
784
+ list-style: circle;
785
+ }
786
+
787
+ .jp-RenderedHTMLCommon ol {
788
+ list-style: decimal;
789
+ }
790
+
791
+ .jp-RenderedHTMLCommon ol ol {
792
+ list-style: upper-alpha;
793
+ }
794
+
795
+ .jp-RenderedHTMLCommon ol ol ol {
796
+ list-style: lower-alpha;
797
+ }
798
+
799
+ .jp-RenderedHTMLCommon ol ol ol ol {
800
+ list-style: lower-roman;
801
+ }
802
+
803
+ .jp-RenderedHTMLCommon ol ol ol ol ol {
804
+ list-style: decimal;
805
+ }
806
+
807
+ .jp-RenderedHTMLCommon ol,
808
+ .jp-RenderedHTMLCommon ul {
809
+ margin-bottom: 1em;
810
+ }
811
+
812
+ .jp-RenderedHTMLCommon ul ul,
813
+ .jp-RenderedHTMLCommon ul ol,
814
+ .jp-RenderedHTMLCommon ol ul,
815
+ .jp-RenderedHTMLCommon ol ol {
816
+ margin-bottom: 0em;
817
+ }
818
+
819
+ .jp-RenderedHTMLCommon hr {
820
+ color: var(--jp-border-color2);
821
+ background-color: var(--jp-border-color1);
822
+ margin-top: 1em;
823
+ margin-bottom: 1em;
824
+ }
825
+
826
+ .jp-RenderedHTMLCommon > pre {
827
+ margin: 1.5em 2em;
828
+ }
829
+
830
+ .jp-RenderedHTMLCommon pre,
831
+ .jp-RenderedHTMLCommon code {
832
+ border: 0;
833
+ background-color: var(--jp-layout-color0);
834
+ color: var(--jp-content-font-color1);
835
+ font-family: var(--jp-code-font-family);
836
+ font-size: inherit;
837
+ line-height: var(--jp-code-line-height);
838
+ padding: 0;
839
+ white-space: pre-wrap;
840
+ }
841
+
842
+ .jp-RenderedHTMLCommon :not(pre) > code {
843
+ background-color: var(--jp-layout-color2);
844
+ padding: 1px 5px;
845
+ }
846
+
847
+ /* Tables */
848
+
849
+ .jp-RenderedHTMLCommon table {
850
+ border-collapse: collapse;
851
+ border-spacing: 0;
852
+ border: none;
853
+ color: var(--jp-ui-font-color1);
854
+ font-size: var(--jp-ui-font-size1);
855
+ table-layout: fixed;
856
+ margin-left: auto;
857
+ margin-right: auto;
858
+ }
859
+
860
+ .jp-RenderedHTMLCommon thead {
861
+ border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
862
+ vertical-align: bottom;
863
+ }
864
+
865
+ .jp-RenderedHTMLCommon td,
866
+ .jp-RenderedHTMLCommon th,
867
+ .jp-RenderedHTMLCommon tr {
868
+ vertical-align: middle;
869
+ padding: 0.5em 0.5em;
870
+ line-height: normal;
871
+ white-space: normal;
872
+ max-width: none;
873
+ border: none;
874
+ }
875
+
876
+ .jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
877
+ .jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
878
+ max-width: none;
879
+ }
880
+
881
+ :not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
882
+ :not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
883
+ :not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
884
+ text-align: right;
885
+ }
886
+
887
+ .jp-RenderedHTMLCommon th {
888
+ font-weight: bold;
889
+ }
890
+
891
+ .jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
892
+ background: var(--jp-layout-color0);
893
+ }
894
+
895
+ .jp-RenderedHTMLCommon tbody tr:nth-child(even) {
896
+ background: var(--jp-rendermime-table-row-background);
897
+ }
898
+
899
+ .jp-RenderedHTMLCommon tbody tr:hover {
900
+ background: var(--jp-rendermime-table-row-hover-background);
901
+ }
902
+
903
+ .jp-RenderedHTMLCommon table {
904
+ margin-bottom: 1em;
905
+ }
906
+
907
+ .jp-RenderedHTMLCommon p {
908
+ text-align: left;
909
+ margin: 0px;
910
+ }
911
+
912
+ .jp-RenderedHTMLCommon p {
913
+ margin-bottom: 1em;
914
+ }
915
+
916
+ .jp-RenderedHTMLCommon img {
917
+ -moz-force-broken-image-icon: 1;
918
+ }
919
+
920
+ /* Restrict to direct children as other images could be nested in other content. */
921
+ .jp-RenderedHTMLCommon > img {
922
+ display: block;
923
+ margin-left: 0;
924
+ margin-right: 0;
925
+ margin-bottom: 1em;
926
+ }
927
+
928
+ /* Change color behind transparent images if they need it... */
929
+ [data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
930
+ background-color: var(--jp-inverse-layout-color1);
931
+ }
932
+ [data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
933
+ background-color: var(--jp-inverse-layout-color1);
934
+ }
935
+ /* ...or leave it untouched if they don't */
936
+ [data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-dark-background {
937
+ }
938
+ [data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-light-background {
939
+ }
940
+
941
+ .jp-RenderedHTMLCommon img,
942
+ .jp-RenderedImage img,
943
+ .jp-RenderedHTMLCommon svg,
944
+ .jp-RenderedSVG svg {
945
+ max-width: 100%;
946
+ height: auto;
947
+ }
948
+
949
+ .jp-RenderedHTMLCommon img.jp-mod-unconfined,
950
+ .jp-RenderedImage img.jp-mod-unconfined,
951
+ .jp-RenderedHTMLCommon svg.jp-mod-unconfined,
952
+ .jp-RenderedSVG svg.jp-mod-unconfined {
953
+ max-width: none;
954
+ }
955
+
956
+ .jp-RenderedHTMLCommon .alert {
957
+ padding: var(--jp-notebook-padding);
958
+ border: var(--jp-border-width) solid transparent;
959
+ border-radius: var(--jp-border-radius);
960
+ margin-bottom: 1em;
961
+ }
962
+
963
+ .jp-RenderedHTMLCommon .alert-info {
964
+ color: var(--jp-info-color0);
965
+ background-color: var(--jp-info-color3);
966
+ border-color: var(--jp-info-color2);
967
+ }
968
+ .jp-RenderedHTMLCommon .alert-info hr {
969
+ border-color: var(--jp-info-color3);
970
+ }
971
+ .jp-RenderedHTMLCommon .alert-info > p:last-child,
972
+ .jp-RenderedHTMLCommon .alert-info > ul:last-child {
973
+ margin-bottom: 0;
974
+ }
975
+
976
+ .jp-RenderedHTMLCommon .alert-warning {
977
+ color: var(--jp-warn-color0);
978
+ background-color: var(--jp-warn-color3);
979
+ border-color: var(--jp-warn-color2);
980
+ }
981
+ .jp-RenderedHTMLCommon .alert-warning hr {
982
+ border-color: var(--jp-warn-color3);
983
+ }
984
+ .jp-RenderedHTMLCommon .alert-warning > p:last-child,
985
+ .jp-RenderedHTMLCommon .alert-warning > ul:last-child {
986
+ margin-bottom: 0;
987
+ }
988
+
989
+ .jp-RenderedHTMLCommon .alert-success {
990
+ color: var(--jp-success-color0);
991
+ background-color: var(--jp-success-color3);
992
+ border-color: var(--jp-success-color2);
993
+ }
994
+ .jp-RenderedHTMLCommon .alert-success hr {
995
+ border-color: var(--jp-success-color3);
996
+ }
997
+ .jp-RenderedHTMLCommon .alert-success > p:last-child,
998
+ .jp-RenderedHTMLCommon .alert-success > ul:last-child {
999
+ margin-bottom: 0;
1000
+ }
1001
+
1002
+ .jp-RenderedHTMLCommon .alert-danger {
1003
+ color: var(--jp-error-color0);
1004
+ background-color: var(--jp-error-color3);
1005
+ border-color: var(--jp-error-color2);
1006
+ }
1007
+ .jp-RenderedHTMLCommon .alert-danger hr {
1008
+ border-color: var(--jp-error-color3);
1009
+ }
1010
+ .jp-RenderedHTMLCommon .alert-danger > p:last-child,
1011
+ .jp-RenderedHTMLCommon .alert-danger > ul:last-child {
1012
+ margin-bottom: 0;
1013
+ }
1014
+
1015
+ .jp-RenderedHTMLCommon blockquote {
1016
+ margin: 1em 2em;
1017
+ padding: 0 1em;
1018
+ border-left: 5px solid var(--jp-border-color2);
1019
+ }
1020
+
1021
+ a.jp-InternalAnchorLink {
1022
+ visibility: hidden;
1023
+ margin-left: 8px;
1024
+ color: var(--md-blue-800);
1025
+ }
1026
+
1027
+ h1:hover .jp-InternalAnchorLink,
1028
+ h2:hover .jp-InternalAnchorLink,
1029
+ h3:hover .jp-InternalAnchorLink,
1030
+ h4:hover .jp-InternalAnchorLink,
1031
+ h5:hover .jp-InternalAnchorLink,
1032
+ h6:hover .jp-InternalAnchorLink {
1033
+ visibility: visible;
1034
+ }
1035
+
1036
+ .jp-RenderedHTMLCommon kbd {
1037
+ background-color: var(--jp-rendermime-table-row-background);
1038
+ border: 1px solid var(--jp-border-color0);
1039
+ border-bottom-color: var(--jp-border-color2);
1040
+ border-radius: 3px;
1041
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1042
+ display: inline-block;
1043
+ font-size: var(--jp-ui-font-size0);
1044
+ line-height: 1em;
1045
+ padding: 0.2em 0.5em;
1046
+ }
1047
+
1048
+ /* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
1049
+ * At the bottom of cells this is a bit too much as there is also spacing
1050
+ * between cells. Going all the way to 0 gets too tight between markdown and
1051
+ * code cells.
1052
+ */
1053
+ .jp-RenderedHTMLCommon > *:last-child {
1054
+ margin-bottom: 0.5em;
1055
+ }
1056
+
1057
+ /*-----------------------------------------------------------------------------
1058
+ | Copyright (c) Jupyter Development Team.
1059
+ | Distributed under the terms of the Modified BSD License.
1060
+ |----------------------------------------------------------------------------*/
1061
+
1062
+ .jp-MimeDocument {
1063
+ outline: none;
1064
+ }
1065
+
1066
+
1067
+ /*-----------------------------------------------------------------------------
1068
+ | Copyright (c) Jupyter Development Team.
1069
+ | Distributed under the terms of the Modified BSD License.
1070
+ |----------------------------------------------------------------------------*/
1071
+
1072
+ /*-----------------------------------------------------------------------------
1073
+ | Private CSS variables
1074
+ |----------------------------------------------------------------------------*/
1075
+
1076
+ :root {
1077
+ }
1078
+
1079
+ /*-----------------------------------------------------------------------------
1080
+ | Main OutputArea
1081
+ | OutputArea has a list of Outputs
1082
+ |----------------------------------------------------------------------------*/
1083
+
1084
+ .jp-OutputArea {
1085
+ overflow-y: auto;
1086
+ }
1087
+
1088
+ .jp-OutputArea-child {
1089
+ display: flex;
1090
+ flex-direction: row;
1091
+ }
1092
+
1093
+ body[data-format='mobile'] .jp-OutputArea-child {
1094
+ flex-direction: column;
1095
+ }
1096
+
1097
+ .jp-OutputPrompt {
1098
+ flex: 0 0 var(--jp-cell-prompt-width);
1099
+ color: var(--jp-cell-outprompt-font-color);
1100
+ font-family: var(--jp-cell-prompt-font-family);
1101
+ padding: var(--jp-code-padding);
1102
+ letter-spacing: var(--jp-cell-prompt-letter-spacing);
1103
+ line-height: var(--jp-code-line-height);
1104
+ font-size: var(--jp-code-font-size);
1105
+ border: var(--jp-border-width) solid transparent;
1106
+ opacity: var(--jp-cell-prompt-opacity);
1107
+ /* Right align prompt text, don't wrap to handle large prompt numbers */
1108
+ text-align: right;
1109
+ white-space: nowrap;
1110
+ overflow: hidden;
1111
+ text-overflow: ellipsis;
1112
+ /* Disable text selection */
1113
+ -webkit-user-select: none;
1114
+ -moz-user-select: none;
1115
+ -ms-user-select: none;
1116
+ user-select: none;
1117
+ }
1118
+
1119
+ body[data-format='mobile'] .jp-OutputPrompt {
1120
+ flex: 0 0 auto;
1121
+ text-align: left;
1122
+ }
1123
+
1124
+ .jp-OutputArea-output {
1125
+ height: auto;
1126
+ overflow: auto;
1127
+ user-select: text;
1128
+ -moz-user-select: text;
1129
+ -webkit-user-select: text;
1130
+ -ms-user-select: text;
1131
+ }
1132
+
1133
+ .jp-OutputArea-child .jp-OutputArea-output {
1134
+ flex-grow: 1;
1135
+ flex-shrink: 1;
1136
+ }
1137
+
1138
+ body[data-format='mobile'] .jp-OutputArea-child .jp-OutputArea-output {
1139
+ margin-left: var(--jp-notebook-padding);
1140
+ }
1141
+
1142
+ /**
1143
+ * Isolated output.
1144
+ */
1145
+ .jp-OutputArea-output.jp-mod-isolated {
1146
+ width: 100%;
1147
+ display: block;
1148
+ }
1149
+
1150
+ /*
1151
+ When drag events occur, `p-mod-override-cursor` is added to the body.
1152
+ Because iframes steal all cursor events, the following two rules are necessary
1153
+ to suppress pointer events while resize drags are occurring. There may be a
1154
+ better solution to this problem.
1155
+ */
1156
+ body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
1157
+ position: relative;
1158
+ }
1159
+
1160
+ body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated:before {
1161
+ content: '';
1162
+ position: absolute;
1163
+ top: 0;
1164
+ left: 0;
1165
+ right: 0;
1166
+ bottom: 0;
1167
+ background: transparent;
1168
+ }
1169
+
1170
+ /* pre */
1171
+
1172
+ .jp-OutputArea-output pre {
1173
+ border: none;
1174
+ margin: 0px;
1175
+ padding: 0px;
1176
+ overflow-x: auto;
1177
+ overflow-y: auto;
1178
+ word-break: break-all;
1179
+ word-wrap: break-word;
1180
+ white-space: pre-wrap;
1181
+ }
1182
+
1183
+ /* tables */
1184
+
1185
+ .jp-OutputArea-output.jp-RenderedHTMLCommon table {
1186
+ margin-left: 0;
1187
+ margin-right: 0;
1188
+ }
1189
+
1190
+ /* description lists */
1191
+
1192
+ .jp-OutputArea-output dl,
1193
+ .jp-OutputArea-output dt,
1194
+ .jp-OutputArea-output dd {
1195
+ display: block;
1196
+ }
1197
+
1198
+ .jp-OutputArea-output dl {
1199
+ width: 100%;
1200
+ overflow: hidden;
1201
+ padding: 0;
1202
+ margin: 0;
1203
+ }
1204
+
1205
+ .jp-OutputArea-output dt {
1206
+ font-weight: bold;
1207
+ float: left;
1208
+ width: 20%;
1209
+ padding: 0;
1210
+ margin: 0;
1211
+ }
1212
+
1213
+ .jp-OutputArea-output dd {
1214
+ float: left;
1215
+ width: 80%;
1216
+ padding: 0;
1217
+ margin: 0;
1218
+ }
1219
+
1220
+ .jp-TrimmedOutputs a {
1221
+ margin: 10px;
1222
+ text-decoration: none;
1223
+ cursor: pointer;
1224
+ }
1225
+
1226
+ /* Hide the gutter in case of
1227
+ * - nested output areas (e.g. in the case of output widgets)
1228
+ * - mirrored output areas
1229
+ */
1230
+ .jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
1231
+ display: none;
1232
+ }
1233
+
1234
+ /* Hide empty lines in the output area, for instance due to cleared widgets */
1235
+ .jp-OutputArea-prompt:empty {
1236
+ padding: 0;
1237
+ border: 0;
1238
+ }
1239
+
1240
+ /*-----------------------------------------------------------------------------
1241
+ | executeResult is added to any Output-result for the display of the object
1242
+ | returned by a cell
1243
+ |----------------------------------------------------------------------------*/
1244
+
1245
+ .jp-OutputArea-output.jp-OutputArea-executeResult {
1246
+ margin-left: 0px;
1247
+ flex: 1 1 auto;
1248
+ }
1249
+
1250
+ /* Text output with the Out[] prompt needs a top padding to match the
1251
+ * alignment of the Out[] prompt itself.
1252
+ */
1253
+ .jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
1254
+ padding-top: var(--jp-code-padding);
1255
+ border-top: var(--jp-border-width) solid transparent;
1256
+ }
1257
+
1258
+ /*-----------------------------------------------------------------------------
1259
+ | The Stdin output
1260
+ |----------------------------------------------------------------------------*/
1261
+
1262
+ .jp-Stdin-prompt {
1263
+ color: var(--jp-content-font-color0);
1264
+ padding-right: var(--jp-code-padding);
1265
+ vertical-align: baseline;
1266
+ flex: 0 0 auto;
1267
+ }
1268
+
1269
+ .jp-Stdin-input {
1270
+ font-family: var(--jp-code-font-family);
1271
+ font-size: inherit;
1272
+ color: inherit;
1273
+ background-color: inherit;
1274
+ width: 42%;
1275
+ min-width: 200px;
1276
+ /* make sure input baseline aligns with prompt */
1277
+ vertical-align: baseline;
1278
+ /* padding + margin = 0.5em between prompt and cursor */
1279
+ padding: 0em 0.25em;
1280
+ margin: 0em 0.25em;
1281
+ flex: 0 0 70%;
1282
+ }
1283
+
1284
+ .jp-Stdin-input::placeholder {
1285
+ opacity: 0;
1286
+ }
1287
+
1288
+ .jp-Stdin-input:focus {
1289
+ box-shadow: none;
1290
+ }
1291
+
1292
+ .jp-Stdin-input:focus::placeholder {
1293
+ opacity: 1;
1294
+ }
1295
+
1296
+ /*-----------------------------------------------------------------------------
1297
+ | Output Area View
1298
+ |----------------------------------------------------------------------------*/
1299
+
1300
+ .jp-LinkedOutputView .jp-OutputArea {
1301
+ height: 100%;
1302
+ display: block;
1303
+ }
1304
+
1305
+ .jp-LinkedOutputView .jp-OutputArea-output:only-child {
1306
+ height: 100%;
1307
+ }
1308
+
1309
+ /*-----------------------------------------------------------------------------
1310
+ | Copyright (c) Jupyter Development Team.
1311
+ | Distributed under the terms of the Modified BSD License.
1312
+ |----------------------------------------------------------------------------*/
1313
+
1314
+ /*-----------------------------------------------------------------------------
1315
+ | Private CSS variables
1316
+ |----------------------------------------------------------------------------*/
1317
+
1318
+ :root {
1319
+ --jp-private-cell-scrolling-output-offset: 5px;
1320
+ }
1321
+
1322
+ /*-----------------------------------------------------------------------------
1323
+ | Cell
1324
+ |----------------------------------------------------------------------------*/
1325
+
1326
+ .jp-Cell {
1327
+ padding: var(--jp-cell-padding);
1328
+ margin: 0px;
1329
+ border: none;
1330
+ outline: none;
1331
+ background: transparent;
1332
+ }
1333
+
1334
+ /*-----------------------------------------------------------------------------
1335
+ | Common input/output
1336
+ |----------------------------------------------------------------------------*/
1337
+
1338
+ .jp-Cell-inputWrapper,
1339
+ .jp-Cell-outputWrapper {
1340
+ display: flex;
1341
+ flex-direction: row;
1342
+ padding: 0px;
1343
+ margin: 0px;
1344
+ /* Added to reveal the box-shadow on the input and output collapsers. */
1345
+ overflow: visible;
1346
+ }
1347
+
1348
+ /* Only input/output areas inside cells */
1349
+ .jp-Cell-inputArea,
1350
+ .jp-Cell-outputArea {
1351
+ flex: 1 1 auto;
1352
+ }
1353
+
1354
+
1355
+ /*-----------------------------------------------------------------------------
1356
+ | Output
1357
+ |----------------------------------------------------------------------------*/
1358
+
1359
+ /* Put a space between input and output when there IS output */
1360
+ .jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
1361
+ margin-top: 5px;
1362
+ }
1363
+
1364
+ .jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
1365
+ overflow-y: auto;
1366
+ max-height: 24em;
1367
+ margin-left: var(--jp-private-cell-scrolling-output-offset);
1368
+ }
1369
+
1370
+ .jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
1371
+ content: ' ';
1372
+ box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
1373
+ width: 100%;
1374
+ height: 100%;
1375
+ position: sticky;
1376
+ bottom: 0;
1377
+ top: 0;
1378
+ margin-top: -50%;
1379
+ float: left;
1380
+ display: block;
1381
+ pointer-events: none;
1382
+ }
1383
+
1384
+ .jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
1385
+ padding-top: 6px;
1386
+ }
1387
+
1388
+ .jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
1389
+ flex: 0 0
1390
+ calc(
1391
+ var(--jp-cell-prompt-width) -
1392
+ var(--jp-private-cell-scrolling-output-offset)
1393
+ );
1394
+ }
1395
+
1396
+ /*-----------------------------------------------------------------------------
1397
+ | CodeCell
1398
+ |----------------------------------------------------------------------------*/
1399
+
1400
+ /*-----------------------------------------------------------------------------
1401
+ | MarkdownCell
1402
+ |----------------------------------------------------------------------------*/
1403
+
1404
+ .jp-MarkdownOutput {
1405
+ flex: 1 1 auto;
1406
+ margin-top: 0;
1407
+ margin-bottom: 0;
1408
+ padding-left: var(--jp-code-padding);
1409
+ }
1410
+
1411
+ .jp-MarkdownOutput.jp-RenderedHTMLCommon {
1412
+ overflow: auto;
1413
+ }
1414
+
1415
+ /* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
1416
+ .jp-collapseHeadingButton {
1417
+ display: none;
1418
+ min-height: var(--jp-cell-collapser-min-height);
1419
+ font-size: var(--jp-code-font-size);
1420
+ position: absolute;
1421
+ right: 0;
1422
+ top: 0;
1423
+ bottom: 0;
1424
+ background-color: transparent;
1425
+ background-size: 25px;
1426
+ background-repeat: no-repeat;
1427
+ background-position-x: center;
1428
+ background-position-y: top;
1429
+ background-image: var(--jp-icon-caret-down);
1430
+ border: none;
1431
+ cursor: pointer;
1432
+ }
1433
+
1434
+ .jp-collapseHeadingButton:hover {
1435
+ background-color: var(--jp-layout-color2);
1436
+ }
1437
+
1438
+ .jp-collapseHeadingButton.jp-mod-collapsed {
1439
+ background-image: var(--jp-icon-caret-right);
1440
+ }
1441
+
1442
+ :is(.jp-MarkdownCell:hover, .jp-mod-active) .jp-collapseHeadingButton {
1443
+ display: flex;
1444
+ }
1445
+
1446
+ /*
1447
+ set the container font size to match that of content
1448
+ so that the nested collapse buttons have the right size
1449
+ */
1450
+ .jp-MarkdownCell .jp-InputPrompt {
1451
+ font-size: var(--jp-content-font-size1);
1452
+ }
1453
+
1454
+ /*
1455
+ Align collapseHeadingButton with cell top header
1456
+ The font sizes are identical to the ones in packages/rendermime/style/base.css
1457
+ */
1458
+ .jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
1459
+ font-size: var(--jp-content-font-size5);
1460
+ background-position-y: calc(0.3 * var(--jp-content-font-size5));
1461
+ }
1462
+
1463
+ .jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
1464
+ font-size: var(--jp-content-font-size4);
1465
+ background-position-y: calc(0.3 * var(--jp-content-font-size4));
1466
+ }
1467
+
1468
+ .jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
1469
+ font-size: var(--jp-content-font-size3);
1470
+ background-position-y: calc(0.3 * var(--jp-content-font-size3));
1471
+ }
1472
+
1473
+ .jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
1474
+ font-size: var(--jp-content-font-size2);
1475
+ background-position-y: calc(0.3 * var(--jp-content-font-size2));
1476
+ }
1477
+
1478
+ .jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
1479
+ font-size: var(--jp-content-font-size1);
1480
+ background-position-y: top;
1481
+ }
1482
+
1483
+ .jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
1484
+ font-size: var(--jp-content-font-size0);
1485
+ background-position-y: top;
1486
+ }
1487
+
1488
+ .jp-showHiddenCellsButton {
1489
+ margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
1490
+ margin-top: var(--jp-code-padding);
1491
+ border: 1px solid var(--jp-border-color2);
1492
+ background-color: var(--jp-border-color3) !important;
1493
+ color: var(--jp-content-font-color0) !important;
1494
+ }
1495
+
1496
+ .jp-showHiddenCellsButton:hover {
1497
+ background-color: var(--jp-border-color2) !important;
1498
+ }
1499
+
1500
+ /*-----------------------------------------------------------------------------
1501
+ | Copyright (c) Jupyter Development Team.
1502
+ | Distributed under the terms of the Modified BSD License.
1503
+ |----------------------------------------------------------------------------*/
1504
+
1505
+
1506
+ /*-----------------------------------------------------------------------------
1507
+ | Presentation Mode (.jp-mod-presentationMode)
1508
+ |----------------------------------------------------------------------------*/
1509
+
1510
+ .jp-mod-presentationMode .jp-Notebook {
1511
+ --jp-content-font-size1: var(--jp-content-presentation-font-size1);
1512
+ --jp-code-font-size: var(--jp-code-presentation-font-size);
1513
+ }
1514
+
1515
+ .jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
1516
+ .jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
1517
+ flex: 0 0 110px;
1518
+ }
1519
+
1520
+ /*-----------------------------------------------------------------------------
1521
+ | Side-by-side Mode (.jp-mod-sideBySide)
1522
+ |----------------------------------------------------------------------------*/
1523
+ :root {
1524
+ --jp-side-by-side-output-size: 1fr;
1525
+ --jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
1526
+ }
1527
+
1528
+ .jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
1529
+ margin-top: 3em;
1530
+ margin-bottom: 3em;
1531
+ margin-left: 5%;
1532
+ margin-right: 5%;
1533
+ }
1534
+
1535
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
1536
+ display: grid;
1537
+ grid-template-columns: minmax(0, 1fr) min-content minmax(
1538
+ 0,
1539
+ var(--jp-side-by-side-output-size)
1540
+ );
1541
+ grid-template-rows: auto minmax(0, 1fr) auto;
1542
+ grid-template-areas:
1543
+ 'header header header'
1544
+ 'input handle output'
1545
+ 'footer footer footer';
1546
+ }
1547
+
1548
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
1549
+ grid-template-columns: minmax(0, 1fr) min-content minmax(
1550
+ 0,
1551
+ var(--jp-side-by-side-resized-cell)
1552
+ );
1553
+ }
1554
+
1555
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
1556
+ grid-area: header;
1557
+ }
1558
+
1559
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
1560
+ grid-area: input;
1561
+ }
1562
+
1563
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
1564
+ /* overwrite the default margin (no vertical separation needed in side by side move */
1565
+ margin-top: 0;
1566
+ grid-area: output;
1567
+ }
1568
+
1569
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
1570
+ grid-area: footer;
1571
+ }
1572
+
1573
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
1574
+ grid-area: handle;
1575
+ user-select: none;
1576
+ display: block;
1577
+ height: 100%;
1578
+ cursor: ew-resize;
1579
+ padding: 0 var(--jp-cell-padding);
1580
+ }
1581
+
1582
+ .jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
1583
+ content: '';
1584
+ display: block;
1585
+ background: var(--jp-border-color2);
1586
+ height: 100%;
1587
+ width: 5px;
1588
+ }
1589
+
1590
+ .jp-mod-sideBySide.jp-Notebook
1591
+ .jp-CodeCell.jp-mod-resizedCell
1592
+ .jp-CellResizeHandle::after {
1593
+ background: var(--jp-border-color0);
1594
+ }
1595
+
1596
+ .jp-CellResizeHandle {
1597
+ display: none;
1598
+ }
1599
+
1600
+ /*-----------------------------------------------------------------------------
1601
+ | Placeholder
1602
+ |----------------------------------------------------------------------------*/
1603
+
1604
+ .jp-Cell-Placeholder {
1605
+ padding-left: 55px;
1606
+ }
1607
+
1608
+ .jp-Cell-Placeholder-wrapper {
1609
+ background: #fff;
1610
+ border: 1px solid;
1611
+ border-color: #e5e6e9 #dfe0e4 #d0d1d5;
1612
+ border-radius: 4px;
1613
+ -webkit-border-radius: 4px;
1614
+ margin: 10px 15px;
1615
+ }
1616
+
1617
+ .jp-Cell-Placeholder-wrapper-inner {
1618
+ padding: 15px;
1619
+ position: relative;
1620
+ }
1621
+
1622
+ .jp-Cell-Placeholder-wrapper-body {
1623
+ background-repeat: repeat;
1624
+ background-size: 50% auto;
1625
+ }
1626
+
1627
+ .jp-Cell-Placeholder-wrapper-body div {
1628
+ background: #f6f7f8;
1629
+ background-image: -webkit-linear-gradient(
1630
+ left,
1631
+ #f6f7f8 0%,
1632
+ #edeef1 20%,
1633
+ #f6f7f8 40%,
1634
+ #f6f7f8 100%
1635
+ );
1636
+ background-repeat: no-repeat;
1637
+ background-size: 800px 104px;
1638
+ height: 104px;
1639
+ position: relative;
1640
+ }
1641
+
1642
+ .jp-Cell-Placeholder-wrapper-body div {
1643
+ position: absolute;
1644
+ right: 15px;
1645
+ left: 15px;
1646
+ top: 15px;
1647
+ }
1648
+
1649
+ div.jp-Cell-Placeholder-h1 {
1650
+ top: 20px;
1651
+ height: 20px;
1652
+ left: 15px;
1653
+ width: 150px;
1654
+ }
1655
+
1656
+ div.jp-Cell-Placeholder-h2 {
1657
+ left: 15px;
1658
+ top: 50px;
1659
+ height: 10px;
1660
+ width: 100px;
1661
+ }
1662
+
1663
+ div.jp-Cell-Placeholder-content-1,
1664
+ div.jp-Cell-Placeholder-content-2,
1665
+ div.jp-Cell-Placeholder-content-3 {
1666
+ left: 15px;
1667
+ right: 15px;
1668
+ height: 10px;
1669
+ }
1670
+
1671
+ div.jp-Cell-Placeholder-content-1 {
1672
+ top: 100px;
1673
+ }
1674
+
1675
+ div.jp-Cell-Placeholder-content-2 {
1676
+ top: 120px;
1677
+ }
1678
+
1679
+ div.jp-Cell-Placeholder-content-3 {
1680
+ top: 140px;
1681
+ }