streamlit-plugins 0.7.9__tar.gz → 0.7.11__tar.gz
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.
- {streamlit_plugins-0.7.9/streamlit_plugins.egg-info → streamlit_plugins-0.7.11}/PKG-INFO +1 -1
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/loader/__init__.py +7 -10
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/inject_script.py +22 -10
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/theme_changer/inject_script.py +18 -8
- streamlit_plugins-0.7.11/streamlit_plugins/framework/reactlit/__init__.py +79 -0
- streamlit_plugins-0.7.11/streamlit_plugins/framework/reactlit/advanced_patterns.py +633 -0
- streamlit_plugins-0.7.11/streamlit_plugins/framework/reactlit/lab.py +317 -0
- streamlit_plugins-0.7.11/streamlit_plugins/framework/reactlit/reactive.py +722 -0
- streamlit_plugins-0.7.11/streamlit_plugins/framework/reactlit/test_reactive.py +427 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11/streamlit_plugins.egg-info}/PKG-INFO +1 -1
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins.egg-info/SOURCES.txt +6 -1
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/LICENSE +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/README.md +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/setup.cfg +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/setup.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/annotated_text/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/input_chat_advance/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/asset-manifest.json +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/bootstrap.min.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/custom.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/index.html +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/css/2.4f758a59.chunk.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/css/2.4f758a59.chunk.css.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/2.524324ba.chunk.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/2.524324ba.chunk.js.LICENSE.txt +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/2.524324ba.chunk.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/main.34b82d10.chunk.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/main.34b82d10.chunk.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/runtime-main.65660c44.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/label_studio/frontend/build/static/js/runtime-main.65660c44.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/config.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/CrossOriginInterface.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/asset-manifest.json +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/bootstrap.min.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/bootstrap.min.css.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/index.html +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/material-fonts.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/material.woff2 +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/st-styles.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/static/js/main.8bc23bfa.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/static/js/main.8bc23bfa.js.LICENSE.txt +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/static/js/main.8bc23bfa.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/navbar/frontend/build/style.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/selectbox_enrich/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/asset-manifest.json +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/index.html +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/drawsvg.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/drawsvg.v7.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/favicon.ico +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/images/sort_asc.png +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/images/sort_both.png +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/images/sort_desc.png +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/2.9cedfdc4.chunk.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/2.9cedfdc4.chunk.js.LICENSE.txt +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/2.9cedfdc4.chunk.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/main.1dfd8582.chunk.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/main.1dfd8582.chunk.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/runtime-main.8efd821a.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/js/runtime-main.8efd821a.js.map +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/snakeviz.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/snakeviz.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/vendor/d3.v3.min.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/vendor/immutable.min.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/vendor/jquery-3.2.1.min.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/vendor/jquery.dataTables.min.css +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/vendor/jquery.dataTables.min.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/static/vendor/lodash.min.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/templates/dir.html +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/snakeviz/frontend/build/templates/viz.html +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/theme_changer/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/theme_changer/config.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/theme_changer/entity.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/theme_changer/frontend/build/CrossOriginInterface.js +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/extension/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/extension/button_group/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/framework/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/framework/multilit/__init__.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/framework/multilit/app_wrapper.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/framework/multilit/loading_engine.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/framework/multilit/multilit.py +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins.egg-info/dependency_links.txt +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins.egg-info/requires.txt +0 -0
- {streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins.egg-info/top_level.txt +0 -0
{streamlit_plugins-0.7.9 → streamlit_plugins-0.7.11}/streamlit_plugins/components/loader/__init__.py
RENAMED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import inspect
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
|
-
import atexit
|
|
4
3
|
import time
|
|
5
4
|
from enum import Enum, auto
|
|
6
5
|
from typing import TypeVar, Callable, Tuple, Optional
|
|
@@ -4425,8 +4424,6 @@ class BaseLoader(ABC):
|
|
|
4425
4424
|
)
|
|
4426
4425
|
self.loader_container = loader_container
|
|
4427
4426
|
|
|
4428
|
-
atexit.register(self.stop_loader)
|
|
4429
|
-
|
|
4430
4427
|
def recreate_loader_with(self, **loader_kwargs) -> "LoaderType":
|
|
4431
4428
|
return self.__class__(loader_container=self.loader_container, **loader_kwargs)
|
|
4432
4429
|
|
|
@@ -4446,10 +4443,11 @@ class DefaultLoader(BaseLoader):
|
|
|
4446
4443
|
loader_container=None,
|
|
4447
4444
|
label='', height=256,
|
|
4448
4445
|
primary_color=None, background_color=None,
|
|
4449
|
-
loader_lib: LoadersLib | Callable[..., Tuple[str, str ,str], ] = LoadersLib.book_loader, index=0, loader_lib_kwargs: dict = None
|
|
4446
|
+
loader_lib: LoadersLib | Callable[..., Tuple[str, str ,str], ] = LoadersLib.book_loader, index=0, loader_lib_kwargs: dict = None,
|
|
4447
|
+
sleep_animation_time: float = 0.1
|
|
4450
4448
|
):
|
|
4451
4449
|
super().__init__(loader_container=loader_container)
|
|
4452
|
-
|
|
4450
|
+
self.sleep_animation_time = sleep_animation_time
|
|
4453
4451
|
if primary_color is None:
|
|
4454
4452
|
if st.get_option('theme.primaryColor') is None:
|
|
4455
4453
|
primary_color = '#F63366'
|
|
@@ -4495,8 +4493,6 @@ class DefaultLoader(BaseLoader):
|
|
|
4495
4493
|
self.display_element = st.empty()
|
|
4496
4494
|
self.display_element_out = st.empty()
|
|
4497
4495
|
|
|
4498
|
-
atexit.register(self.stop_loader)
|
|
4499
|
-
|
|
4500
4496
|
@staticmethod
|
|
4501
4497
|
def _parse_height_css(height: int | str) -> str:
|
|
4502
4498
|
if isinstance(height, (int, float)):
|
|
@@ -4524,16 +4520,17 @@ class DefaultLoader(BaseLoader):
|
|
|
4524
4520
|
|
|
4525
4521
|
with self.loader_container:
|
|
4526
4522
|
self.display_element_out.empty()
|
|
4527
|
-
|
|
4523
|
+
if self.sleep_animation_time:
|
|
4524
|
+
time.sleep(self.sleep_animation_time) # Pequeña pausa para evitar parpadeos
|
|
4528
4525
|
self.display_element.markdown(element_style+element_code, unsafe_allow_html=True)
|
|
4529
|
-
time.sleep(5)
|
|
4530
4526
|
|
|
4531
4527
|
def stop_loader(self):
|
|
4532
4528
|
if self.running:
|
|
4533
4529
|
with self.loader_container:
|
|
4534
4530
|
self.display_element_out.markdown(self.element_out_style, unsafe_allow_html=True)
|
|
4535
4531
|
# Para que se termine la animacion de salida y no se vea como parpadeos
|
|
4536
|
-
|
|
4532
|
+
if self.sleep_animation_time:
|
|
4533
|
+
time.sleep(self.sleep_animation_time)
|
|
4537
4534
|
self.display_element.empty()
|
|
4538
4535
|
self.display_element_out.empty()
|
|
4539
4536
|
self.running = False
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import json
|
|
2
|
+
from typing import Literal
|
|
2
3
|
|
|
3
4
|
import requests
|
|
4
|
-
|
|
5
|
+
|
|
6
|
+
import streamlit as st
|
|
7
|
+
|
|
8
|
+
WIDTH: Literal["stretch", "content"] | int = "content"
|
|
9
|
+
HEIGHT: Literal["stretch", "content"] | int = "content"
|
|
10
|
+
try:
|
|
11
|
+
iframe = st.iframe
|
|
12
|
+
except Exception as e:
|
|
13
|
+
import streamlit.components.v1 as components
|
|
14
|
+
iframe = components.html
|
|
15
|
+
WIDTH = 0
|
|
16
|
+
HEIGHT = 0
|
|
5
17
|
|
|
6
18
|
from .config import _RELEASE, build_path, dev_url
|
|
7
19
|
|
|
@@ -25,7 +37,7 @@ def inject_crossorigin_interface():
|
|
|
25
37
|
# Same domain can bypass sandbox restrictions to create an interface for cross-origin iframes
|
|
26
38
|
# This allows custom components to interact with parent scope
|
|
27
39
|
escaped_content = content.replace("`", r"\`").replace("${", r"\${")
|
|
28
|
-
|
|
40
|
+
iframe(
|
|
29
41
|
f"""<script>
|
|
30
42
|
frameElement.parentElement.style.display = 'none';
|
|
31
43
|
if (!window.parent.NavbarCOI_injected) {{
|
|
@@ -36,22 +48,22 @@ if (!window.parent.NavbarCOI_injected) {{
|
|
|
36
48
|
window.parent.document.head.appendChild(script);
|
|
37
49
|
}}
|
|
38
50
|
</script>""",
|
|
39
|
-
height=
|
|
40
|
-
width=
|
|
51
|
+
height=HEIGHT,
|
|
52
|
+
width=WIDTH
|
|
41
53
|
)
|
|
42
54
|
|
|
43
55
|
|
|
44
56
|
def instantiate_crossorigin_interface(component_name: str, key: str, is_navigation: bool, default_page_id: str, position_mode: str, sticky_nav: bool):
|
|
45
57
|
"""Instantiate the CrossOriginInterface in the parent scope that responds to messages for key."""
|
|
46
|
-
|
|
58
|
+
iframe(
|
|
47
59
|
f"""<script>
|
|
48
60
|
frameElement.parentElement.style.display = 'none';
|
|
49
61
|
if (!window.parent.navbarCOI) {{
|
|
50
62
|
window.parent.navbarCOI = new window.parent.instantiateNavbarCOI('{component_name}', '{key}', {json.dumps(is_navigation)}, '{default_page_id}', '{position_mode}', {json.dumps(sticky_nav)});
|
|
51
63
|
}}
|
|
52
64
|
</script>""",
|
|
53
|
-
height=
|
|
54
|
-
width=
|
|
65
|
+
height=HEIGHT,
|
|
66
|
+
width=WIDTH,
|
|
55
67
|
)
|
|
56
68
|
|
|
57
69
|
def apply_styles(key: str, custom_styles: str):
|
|
@@ -65,10 +77,10 @@ def apply_styles(key: str, custom_styles: str):
|
|
|
65
77
|
content = response.text
|
|
66
78
|
pass
|
|
67
79
|
|
|
68
|
-
|
|
80
|
+
iframe(
|
|
69
81
|
f"""<script>
|
|
70
82
|
window.parent.navbarCOI.applyNavbarStyles('{key}', `{content}`, {custom_styles})
|
|
71
83
|
</script>""",
|
|
72
|
-
height=
|
|
73
|
-
width=
|
|
84
|
+
height=HEIGHT,
|
|
85
|
+
width=WIDTH,
|
|
74
86
|
)
|
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
from typing import Literal
|
|
2
2
|
|
|
3
|
-
import streamlit
|
|
3
|
+
import streamlit as st
|
|
4
|
+
|
|
5
|
+
WIDTH: Literal["stretch", "content"] | int = "content"
|
|
6
|
+
HEIGHT: Literal["stretch", "content"] | int = "content"
|
|
7
|
+
try:
|
|
8
|
+
iframe = st.iframe
|
|
9
|
+
except Exception as e:
|
|
10
|
+
import streamlit.components.v1 as components
|
|
11
|
+
iframe = components.html
|
|
12
|
+
WIDTH = 0
|
|
13
|
+
HEIGHT = 0
|
|
4
14
|
|
|
5
15
|
from .entity import ThemeInput
|
|
6
16
|
from .config import build_path
|
|
@@ -18,7 +28,7 @@ def inject_crossorigin_interface():
|
|
|
18
28
|
# This works because streamlit.components.v1.html() creates an iframe from same domain as the parent scope
|
|
19
29
|
# Same domain can bypass sandbox restrictions to create an interface for cross-origin iframes
|
|
20
30
|
# This allows custom components to interact with parent scope
|
|
21
|
-
|
|
31
|
+
iframe(
|
|
22
32
|
f"""<script>
|
|
23
33
|
frameElement.parentElement.style.display = 'none';
|
|
24
34
|
if (!window.parent.ThemeChangerCOI_injected) {{
|
|
@@ -29,18 +39,18 @@ if (!window.parent.ThemeChangerCOI_injected) {{
|
|
|
29
39
|
window.parent.document.head.appendChild(script);
|
|
30
40
|
}}
|
|
31
41
|
</script>""",
|
|
32
|
-
height=
|
|
33
|
-
width=
|
|
42
|
+
height=HEIGHT,
|
|
43
|
+
width=WIDTH
|
|
34
44
|
)
|
|
35
45
|
|
|
36
46
|
|
|
37
47
|
def change_theme_coi(key, theme_data: ThemeInput):
|
|
38
48
|
theme_data_raw = theme_data.model_dump_json(exclude_none=True)
|
|
39
|
-
|
|
49
|
+
iframe(
|
|
40
50
|
f"""<script>
|
|
41
51
|
// frameElement.parentElement.style.display = 'none';
|
|
42
52
|
window.parent.changeThemeWithCOI('{key}', {theme_data_raw});
|
|
43
53
|
</script>""",
|
|
44
|
-
height=
|
|
45
|
-
width=
|
|
54
|
+
height=HEIGHT,
|
|
55
|
+
width=WIDTH
|
|
46
56
|
)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Reactlit - Reactive Fragment Framework for Streamlit
|
|
3
|
+
|
|
4
|
+
Framework que permite crear componentes reactivos (fragmentos) que
|
|
5
|
+
se actualizan automáticamente cuando sus dependencias cambian.
|
|
6
|
+
|
|
7
|
+
Características:
|
|
8
|
+
- Fragmentos reactivos con detección de cambios
|
|
9
|
+
- Grafo de dependencias entre componentes
|
|
10
|
+
- Prevención de ciclos infinitos
|
|
11
|
+
- Cascadas automáticas de reruns
|
|
12
|
+
- Observación de state compartido
|
|
13
|
+
|
|
14
|
+
Uso básico:
|
|
15
|
+
|
|
16
|
+
from streamlit_plugins.framework.reactlit import reactive_fragment
|
|
17
|
+
|
|
18
|
+
@reactive_fragment(
|
|
19
|
+
dependencies=['user_id', 'filters'],
|
|
20
|
+
watch_params=True
|
|
21
|
+
)
|
|
22
|
+
def my_panel(user_id, filters=None):
|
|
23
|
+
st.write(f"Data for {user_id}")
|
|
24
|
+
|
|
25
|
+
@reactive_fragment(dependencies=['my_panel'])
|
|
26
|
+
def dependent_panel():
|
|
27
|
+
st.write("This updates when my_panel changes")
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
from .reactive import (
|
|
31
|
+
# Decorators
|
|
32
|
+
reactive_fragment,
|
|
33
|
+
# Registration
|
|
34
|
+
register_dependency,
|
|
35
|
+
register_dependencies,
|
|
36
|
+
# Query & Introspection
|
|
37
|
+
get_fragment_metadata,
|
|
38
|
+
get_all_fragments,
|
|
39
|
+
get_dependency_chain,
|
|
40
|
+
has_dependency_cycle,
|
|
41
|
+
# Utilities
|
|
42
|
+
get_fragment_state,
|
|
43
|
+
set_fragment_dirty,
|
|
44
|
+
enqueue_fragment_rerun,
|
|
45
|
+
manually_trigger_rerun_cascade,
|
|
46
|
+
# Debugging
|
|
47
|
+
debug_dependency_graph,
|
|
48
|
+
reset_reactive_state,
|
|
49
|
+
# Data Models
|
|
50
|
+
FragmentMetadata,
|
|
51
|
+
DependencyGraph,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
__all__ = [
|
|
55
|
+
# Decorators
|
|
56
|
+
"reactive_fragment",
|
|
57
|
+
# Registration
|
|
58
|
+
"register_dependency",
|
|
59
|
+
"register_dependencies",
|
|
60
|
+
# Query & Introspection
|
|
61
|
+
"get_fragment_metadata",
|
|
62
|
+
"get_all_fragments",
|
|
63
|
+
"get_dependency_chain",
|
|
64
|
+
"has_dependency_cycle",
|
|
65
|
+
# Utilities
|
|
66
|
+
"get_fragment_state",
|
|
67
|
+
"set_fragment_dirty",
|
|
68
|
+
"enqueue_fragment_rerun",
|
|
69
|
+
"manually_trigger_rerun_cascade",
|
|
70
|
+
# Debugging
|
|
71
|
+
"debug_dependency_graph",
|
|
72
|
+
"reset_reactive_state",
|
|
73
|
+
# Data Models
|
|
74
|
+
"FragmentMetadata",
|
|
75
|
+
"DependencyGraph",
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
__version__ = "0.1.0"
|
|
79
|
+
|