solara-ui 1.31.0__py2.py3-none-any.whl

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