streamlit-nightly 1.33.1.dev20240409__py2.py3-none-any.whl → 1.33.1.dev20240412__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.
- streamlit/__init__.py +4 -1
- streamlit/delta_generator.py +54 -36
- streamlit/elements/dialog_decorator.py +166 -0
- streamlit/elements/image.py +5 -3
- streamlit/elements/layouts.py +19 -0
- streamlit/elements/lib/dialog.py +148 -0
- streamlit/proto/Block_pb2.py +26 -22
- streamlit/proto/Block_pb2.pyi +43 -3
- streamlit/proto/Common_pb2.py +1 -1
- streamlit/runtime/scriptrunner/script_run_context.py +3 -0
- streamlit/runtime/scriptrunner/script_runner.py +16 -0
- streamlit/runtime/state/query_params.py +28 -11
- streamlit/runtime/state/query_params_proxy.py +51 -3
- streamlit/runtime/state/session_state.py +3 -0
- streamlit/static/asset-manifest.json +4 -4
- streamlit/static/index.html +1 -1
- streamlit/static/static/js/{1168.3029456a.chunk.js → 1168.1d6408e6.chunk.js} +1 -1
- streamlit/static/static/js/8427.d30dffe1.chunk.js +1 -0
- streamlit/static/static/js/main.46540eaf.js +2 -0
- {streamlit_nightly-1.33.1.dev20240409.dist-info → streamlit_nightly-1.33.1.dev20240412.dist-info}/METADATA +1 -1
- {streamlit_nightly-1.33.1.dev20240409.dist-info → streamlit_nightly-1.33.1.dev20240412.dist-info}/RECORD +26 -24
- streamlit/static/static/js/8427.b0ed496b.chunk.js +0 -1
- streamlit/static/static/js/main.37ad7d13.js +0 -2
- /streamlit/static/static/js/{main.37ad7d13.js.LICENSE.txt → main.46540eaf.js.LICENSE.txt} +0 -0
- {streamlit_nightly-1.33.1.dev20240409.data → streamlit_nightly-1.33.1.dev20240412.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.33.1.dev20240409.dist-info → streamlit_nightly-1.33.1.dev20240412.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.33.1.dev20240409.dist-info → streamlit_nightly-1.33.1.dev20240412.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.33.1.dev20240409.dist-info → streamlit_nightly-1.33.1.dev20240412.dist-info}/top_level.txt +0 -0
streamlit/proto/Common_pb2.py
CHANGED
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
|
|
13
13
|
|
14
14
|
|
15
15
|
|
16
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cstreamlit/proto/Common.proto\"\x1b\n\x0bStringArray\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\t\"\x1b\n\x0b\x44oubleArray\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x01\"\x1a\n\nInt32Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x05\"\x1a\n\nInt64Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x03\"\x1b\n\x0bSInt64Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x12\"\x1b\n\x0bUInt32Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\r\"0\n\x12StringTriggerValue\x12\x11\n\x04\x64\x61ta\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_data\"M\n\x0f\x46ileURLsRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x12\n\nfile_names\x18\x02 \x03(\t\x12\x12\n\nsession_id\x18\x03 \x01(\t\"C\n\x08\x46ileURLs\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x12\n\nupload_url\x18\x02 \x01(\t\x12\x12\n\ndelete_url\x18\x03 \x01(\t\"X\n\x10\x46ileURLsResponse\x12\x13\n\x0bresponse_id\x18\x01 \x01(\t\x12\x1c\n\tfile_urls\x18\x02 \x03(\x0b\x32\t.FileURLs\x12\x11\n\terror_msg\x18\x03 \x01(\t\"i\n\x10UploadedFileInfo\x12\n\n\x02id\x18\x01 \x01(\x12\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\
|
16
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cstreamlit/proto/Common.proto\"\x1b\n\x0bStringArray\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\t\"\x1b\n\x0b\x44oubleArray\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x01\"\x1a\n\nInt32Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x05\"\x1a\n\nInt64Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x03\"\x1b\n\x0bSInt64Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\x12\"\x1b\n\x0bUInt32Array\x12\x0c\n\x04\x64\x61ta\x18\x01 \x03(\r\"0\n\x12StringTriggerValue\x12\x11\n\x04\x64\x61ta\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_data\"M\n\x0f\x46ileURLsRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x12\n\nfile_names\x18\x02 \x03(\t\x12\x12\n\nsession_id\x18\x03 \x01(\t\"C\n\x08\x46ileURLs\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x12\n\nupload_url\x18\x02 \x01(\t\x12\x12\n\ndelete_url\x18\x03 \x01(\t\"X\n\x10\x46ileURLsResponse\x12\x13\n\x0bresponse_id\x18\x01 \x01(\t\x12\x1c\n\tfile_urls\x18\x02 \x03(\x0b\x32\t.FileURLs\x12\x11\n\terror_msg\x18\x03 \x01(\t\"i\n\x10UploadedFileInfo\x12\n\n\x02id\x18\x01 \x01(\x12\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04size\x18\x03 \x01(\x04\x12\x0f\n\x07\x66ile_id\x18\x04 \x01(\t\x12\x1c\n\tfile_urls\x18\x05 \x01(\x0b\x32\t.FileURLs\"W\n\x11\x46ileUploaderState\x12\x13\n\x0bmax_file_id\x18\x01 \x01(\x12\x12-\n\x12uploaded_file_info\x18\x02 \x03(\x0b\x32\x11.UploadedFileInfoB+\n\x1c\x63om.snowflake.apps.streamlitB\x0b\x43ommonProtob\x06proto3')
|
17
17
|
|
18
18
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
19
19
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'streamlit.proto.Common_pb2', globals())
|
@@ -77,6 +77,8 @@ class ScriptRunContext:
|
|
77
77
|
script_requests: ScriptRequests | None = None
|
78
78
|
current_fragment_id: str | None = None
|
79
79
|
fragment_ids_this_run: set[str] | None = None
|
80
|
+
# we allow only one dialog to be open at the same time
|
81
|
+
has_dialog_opened: bool = False
|
80
82
|
|
81
83
|
# TODO(willhuang1997): Remove this variable when experimental query params are removed
|
82
84
|
_experimental_query_params_used = False
|
@@ -102,6 +104,7 @@ class ScriptRunContext:
|
|
102
104
|
self.tracked_commands_counter = collections.Counter()
|
103
105
|
self.current_fragment_id = None
|
104
106
|
self.fragment_ids_this_run = fragment_ids_this_run
|
107
|
+
self.has_dialog_opened = False
|
105
108
|
|
106
109
|
parsed_query_params = parse.parse_qs(query_string, keep_blank_values=True)
|
107
110
|
with self.session_state.query_params() as qp:
|
@@ -46,6 +46,7 @@ from streamlit.runtime.state import (
|
|
46
46
|
SafeSessionState,
|
47
47
|
SessionState,
|
48
48
|
)
|
49
|
+
from streamlit.runtime.state.session_state import SCRIPT_RUN_PAGE_SCRIPT_HASH_KEY
|
49
50
|
from streamlit.runtime.uploaded_file_manager import UploadedFileManager
|
50
51
|
from streamlit.vendor.ipython.modified_sys_path import modified_sys_path
|
51
52
|
|
@@ -463,6 +464,18 @@ class ScriptRunner:
|
|
463
464
|
|
464
465
|
fragment_ids_this_run = set(rerun_data.fragment_id_queue)
|
465
466
|
|
467
|
+
# Clear widget state on page change. This normally happens implicitly
|
468
|
+
# in the script run cleanup steps, but doing it explicitly ensures
|
469
|
+
# it happens even if a script run was interrupted.
|
470
|
+
try:
|
471
|
+
old_hash = self._session_state[SCRIPT_RUN_PAGE_SCRIPT_HASH_KEY]
|
472
|
+
except KeyError:
|
473
|
+
old_hash = None
|
474
|
+
|
475
|
+
if old_hash != page_script_hash:
|
476
|
+
# Page changed, reset widget state
|
477
|
+
self._session_state.on_script_finished(set())
|
478
|
+
|
466
479
|
ctx = self._get_script_run_ctx()
|
467
480
|
ctx.reset(
|
468
481
|
query_string=rerun_data.query_string,
|
@@ -563,6 +576,9 @@ class ScriptRunner:
|
|
563
576
|
rerun_data.widget_states
|
564
577
|
)
|
565
578
|
|
579
|
+
self._session_state[
|
580
|
+
SCRIPT_RUN_PAGE_SCRIPT_HASH_KEY
|
581
|
+
] = page_script_hash
|
566
582
|
ctx.on_script_start()
|
567
583
|
prep_time = timer() - start_time
|
568
584
|
|
@@ -65,6 +65,7 @@ class QueryParams(MutableMapping[str, str]):
|
|
65
65
|
raise KeyError(missing_key_error_message(key))
|
66
66
|
|
67
67
|
def __setitem__(self, key: str, value: str | Iterable[str]) -> None:
|
68
|
+
self._ensure_single_query_api_used()
|
68
69
|
self.__set_item_internal(key, value)
|
69
70
|
self._send_query_param_msg()
|
70
71
|
|
@@ -86,6 +87,7 @@ class QueryParams(MutableMapping[str, str]):
|
|
86
87
|
self._query_params[key] = str(value)
|
87
88
|
|
88
89
|
def __delitem__(self, key: str) -> None:
|
90
|
+
self._ensure_single_query_api_used()
|
89
91
|
try:
|
90
92
|
if key in EMBED_QUERY_PARAMS_KEYS:
|
91
93
|
raise KeyError(missing_key_error_message(key))
|
@@ -100,13 +102,14 @@ class QueryParams(MutableMapping[str, str]):
|
|
100
102
|
/,
|
101
103
|
**kwds: str,
|
102
104
|
):
|
103
|
-
#
|
104
|
-
#
|
105
|
+
# This overrides the `update` provided by MutableMapping
|
106
|
+
# to ensure only one one ForwardMsg is sent.
|
107
|
+
self._ensure_single_query_api_used()
|
105
108
|
if hasattr(other, "keys") and hasattr(other, "__getitem__"):
|
106
109
|
for key in other.keys():
|
107
110
|
self.__set_item_internal(key, other[key])
|
108
111
|
else:
|
109
|
-
for
|
112
|
+
for key, value in other:
|
110
113
|
self.__set_item_internal(key, value)
|
111
114
|
for key, value in kwds.items():
|
112
115
|
self.__set_item_internal(key, value)
|
@@ -146,12 +149,8 @@ class QueryParams(MutableMapping[str, str]):
|
|
146
149
|
ctx.enqueue(msg)
|
147
150
|
|
148
151
|
def clear(self) -> None:
|
149
|
-
|
150
|
-
|
151
|
-
if key in EMBED_QUERY_PARAMS_KEYS:
|
152
|
-
new_query_params[key] = value
|
153
|
-
self._query_params = new_query_params
|
154
|
-
|
152
|
+
self._ensure_single_query_api_used()
|
153
|
+
self.clear_with_no_forward_msg(preserve_embed=True)
|
155
154
|
self._send_query_param_msg()
|
156
155
|
|
157
156
|
def to_dict(self) -> dict[str, str]:
|
@@ -163,11 +162,29 @@ class QueryParams(MutableMapping[str, str]):
|
|
163
162
|
if key not in EMBED_QUERY_PARAMS_KEYS
|
164
163
|
}
|
165
164
|
|
165
|
+
def from_dict(
|
166
|
+
self,
|
167
|
+
_dict: Iterable[tuple[str, str]] | SupportsKeysAndGetItem[str, str],
|
168
|
+
):
|
169
|
+
self._ensure_single_query_api_used()
|
170
|
+
old_value = self._query_params.copy()
|
171
|
+
self.clear_with_no_forward_msg(preserve_embed=True)
|
172
|
+
try:
|
173
|
+
self.update(_dict)
|
174
|
+
except StreamlitAPIException:
|
175
|
+
# restore the original from before we made any changes.
|
176
|
+
self._query_params = old_value
|
177
|
+
raise
|
178
|
+
|
166
179
|
def set_with_no_forward_msg(self, key: str, val: list[str] | str) -> None:
|
167
180
|
self._query_params[key] = val
|
168
181
|
|
169
|
-
def clear_with_no_forward_msg(self) -> None:
|
170
|
-
self._query_params
|
182
|
+
def clear_with_no_forward_msg(self, preserve_embed: bool = False) -> None:
|
183
|
+
self._query_params = {
|
184
|
+
key: value
|
185
|
+
for key, value in self._query_params.items()
|
186
|
+
if key in EMBED_QUERY_PARAMS_KEYS and preserve_embed
|
187
|
+
}
|
171
188
|
|
172
189
|
def _ensure_single_query_api_used(self):
|
173
190
|
# Avoid circular imports
|
@@ -72,18 +72,33 @@ class QueryParamsProxy(MutableMapping[str, str]):
|
|
72
72
|
raise AttributeError(missing_key_error_message(key))
|
73
73
|
|
74
74
|
@overload
|
75
|
-
def update(self, mapping: SupportsKeysAndGetItem[str, str], /, **kwds: str):
|
75
|
+
def update(self, mapping: SupportsKeysAndGetItem[str, str], /, **kwds: str) -> None:
|
76
76
|
...
|
77
77
|
|
78
78
|
@overload
|
79
|
-
def update(
|
79
|
+
def update(
|
80
|
+
self, keys_and_values: Iterable[tuple[str, str]], /, **kwds: str
|
81
|
+
) -> None:
|
80
82
|
...
|
81
83
|
|
82
84
|
@overload
|
83
|
-
def update(self, **kwds: str):
|
85
|
+
def update(self, **kwds: str) -> None:
|
84
86
|
...
|
85
87
|
|
86
88
|
def update(self, other=(), /, **kwds):
|
89
|
+
"""
|
90
|
+
Update one or more values in query_params at once from a dictionary or
|
91
|
+
dictionary-like object.
|
92
|
+
|
93
|
+
See `Mapping.update()` from Python's `collections` library.
|
94
|
+
|
95
|
+
Parameters
|
96
|
+
----------
|
97
|
+
other: SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]]
|
98
|
+
A dictionary or mapping of strings to strings.
|
99
|
+
**kwds: str
|
100
|
+
Additional key/value pairs to update passed as keyword arguments.
|
101
|
+
"""
|
87
102
|
with get_session_state().query_params() as qp:
|
88
103
|
qp.update(other, **kwds)
|
89
104
|
|
@@ -146,3 +161,36 @@ class QueryParamsProxy(MutableMapping[str, str]):
|
|
146
161
|
"""
|
147
162
|
with get_session_state().query_params() as qp:
|
148
163
|
return qp.to_dict()
|
164
|
+
|
165
|
+
@overload
|
166
|
+
def from_dict(self, keys_and_values: Iterable[tuple[str, str]]) -> None:
|
167
|
+
...
|
168
|
+
|
169
|
+
@overload
|
170
|
+
def from_dict(self, mapping: SupportsKeysAndGetItem[str, str]) -> None:
|
171
|
+
...
|
172
|
+
|
173
|
+
@gather_metrics("query_params.from_dict")
|
174
|
+
def from_dict(self, other):
|
175
|
+
"""
|
176
|
+
Set all of the query parameters from a dictionary or dictionary-like object.
|
177
|
+
|
178
|
+
This method primarily exists for advanced users who want to be able to control
|
179
|
+
multiple query string parameters in a single update. To set individual
|
180
|
+
query string parameters you should still use `st.query_params["parameter"] = "value"`
|
181
|
+
or `st.query_params.parameter = "value"`.
|
182
|
+
|
183
|
+
`embed` and `embed_options` may not be set via this method and may not be keys in the
|
184
|
+
`other` dictionary.
|
185
|
+
|
186
|
+
Note that this method is NOT a direct inverse of `st.query_params.to_dict()` when
|
187
|
+
the URL query string contains multiple values for a single key. A true inverse
|
188
|
+
operation for from_dict is `{key: st.query_params.get_all(key) for key st.query_params}`.
|
189
|
+
|
190
|
+
Parameters
|
191
|
+
-------
|
192
|
+
other: SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]]
|
193
|
+
A dictionary used to replace the current query_params.
|
194
|
+
"""
|
195
|
+
with get_session_state().query_params() as qp:
|
196
|
+
return qp.from_dict(other)
|
@@ -56,6 +56,9 @@ STREAMLIT_INTERNAL_KEY_PREFIX: Final = "$$STREAMLIT_INTERNAL_KEY"
|
|
56
56
|
SCRIPT_RUN_WITHOUT_ERRORS_KEY: Final = (
|
57
57
|
f"{STREAMLIT_INTERNAL_KEY_PREFIX}_SCRIPT_RUN_WITHOUT_ERRORS"
|
58
58
|
)
|
59
|
+
SCRIPT_RUN_PAGE_SCRIPT_HASH_KEY: Final = (
|
60
|
+
f"{STREAMLIT_INTERNAL_KEY_PREFIX}_PAGE_SCRIPT_HASH"
|
61
|
+
)
|
59
62
|
|
60
63
|
|
61
64
|
@dataclass(frozen=True)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
3
|
"main.css": "./static/css/main.bf304093.css",
|
4
|
-
"main.js": "./static/js/main.
|
4
|
+
"main.js": "./static/js/main.46540eaf.js",
|
5
5
|
"static/js/9336.2d95d840.chunk.js": "./static/js/9336.2d95d840.chunk.js",
|
6
6
|
"static/js/9330.d29313d4.chunk.js": "./static/js/9330.d29313d4.chunk.js",
|
7
7
|
"static/js/7217.d970c074.chunk.js": "./static/js/7217.d970c074.chunk.js",
|
@@ -10,7 +10,7 @@
|
|
10
10
|
"static/js/3092.ad569cc8.chunk.js": "./static/js/3092.ad569cc8.chunk.js",
|
11
11
|
"static/css/43.e3b876c5.chunk.css": "./static/css/43.e3b876c5.chunk.css",
|
12
12
|
"static/js/43.9ae03282.chunk.js": "./static/js/43.9ae03282.chunk.js",
|
13
|
-
"static/js/8427.
|
13
|
+
"static/js/8427.d30dffe1.chunk.js": "./static/js/8427.d30dffe1.chunk.js",
|
14
14
|
"static/js/7323.2808d029.chunk.js": "./static/js/7323.2808d029.chunk.js",
|
15
15
|
"static/js/4185.78230b2a.chunk.js": "./static/js/4185.78230b2a.chunk.js",
|
16
16
|
"static/js/7805.51638fbc.chunk.js": "./static/js/7805.51638fbc.chunk.js",
|
@@ -18,7 +18,7 @@
|
|
18
18
|
"static/js/1307.8ea033f1.chunk.js": "./static/js/1307.8ea033f1.chunk.js",
|
19
19
|
"static/js/2469.3e9c3ce9.chunk.js": "./static/js/2469.3e9c3ce9.chunk.js",
|
20
20
|
"static/js/4113.1e7eff4d.chunk.js": "./static/js/4113.1e7eff4d.chunk.js",
|
21
|
-
"static/js/1168.
|
21
|
+
"static/js/1168.1d6408e6.chunk.js": "./static/js/1168.1d6408e6.chunk.js",
|
22
22
|
"static/js/178.b5384fd0.chunk.js": "./static/js/178.b5384fd0.chunk.js",
|
23
23
|
"static/js/1792.b8efa879.chunk.js": "./static/js/1792.b8efa879.chunk.js",
|
24
24
|
"static/js/3513.e3e7300a.chunk.js": "./static/js/3513.e3e7300a.chunk.js",
|
@@ -152,6 +152,6 @@
|
|
152
152
|
},
|
153
153
|
"entrypoints": [
|
154
154
|
"static/css/main.bf304093.css",
|
155
|
-
"static/js/main.
|
155
|
+
"static/js/main.46540eaf.js"
|
156
156
|
]
|
157
157
|
}
|
streamlit/static/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./favicon.png"/><link rel="preload" href="./static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2" as="font" type="font/woff2" crossorigin><title>Streamlit</title><script>window.prerenderReady=!1</script><script defer="defer" src="./static/js/main.
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><link rel="shortcut icon" href="./favicon.png"/><link rel="preload" href="./static/media/SourceSansPro-Regular.0d69e5ff5e92ac64a0c9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-SemiBold.abed79cd0df1827e18cf.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="./static/media/SourceSansPro-Bold.118dea98980e20a81ced.woff2" as="font" type="font/woff2" crossorigin><title>Streamlit</title><script>window.prerenderReady=!1</script><script defer="defer" src="./static/js/main.46540eaf.js"></script><link href="./static/css/main.bf304093.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[1168],{71168:(l,e,o)=>{o.r(e),o.d(e,{default:()=>
|
1
|
+
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[1168],{71168:(l,e,o)=>{o.r(e),o.d(e,{default:()=>b});var r=o(66845),t=o(25621),c=o(62622),a=o(42736),n=o(96825),i=o.n(n),p=o(92627),s=o(63765),f=o(23849);function y(l,e,o){return l=function(l,e){return(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll("#000032",(0,p.By)(e))).replaceAll("#000033",(0,p.He)(e))).replaceAll("#000034",(0,p.Iy)(e)?e.colors.blue80:e.colors.blue40)).replaceAll("#000035",(0,p.ny)(e))).replaceAll("#000036",(0,p.Xy)(e))).replaceAll("#000037",(0,p.yq)(e))).replaceAll("#000038",e.colors.bgColor)).replaceAll("#000039",e.colors.fadedText05)).replaceAll("#000040",e.colors.bgMix)}(l,e),l=function(l,e,o){const r="#000001",t="#000002",c="#000003",a="#000004",n="#000005",i="#000006",s="#000007",f="#000008",y="#000009",d="#000010";if("streamlit"===o){const o=(0,p.iY)(e);l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll(r,o[0])).replaceAll(t,o[1])).replaceAll(c,o[2])).replaceAll(a,o[3])).replaceAll(n,o[4])).replaceAll(i,o[5])).replaceAll(s,o[6])).replaceAll(f,o[7])).replaceAll(y,o[8])).replaceAll(d,o[9])}else l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll(r,"#636efa")).replaceAll(t,"#EF553B")).replaceAll(c,"#00cc96")).replaceAll(a,"#ab63fa")).replaceAll(n,"#FFA15A")).replaceAll(i,"#19d3f3")).replaceAll(s,"#FF6692")).replaceAll(f,"#B6E880")).replaceAll(y,"#FF97FF")).replaceAll(d,"#FECB52");return l}(l,e,o),l=function(l,e,o){const r="#000011",t="#000012",c="#000013",a="#000014",n="#000015",i="#000016",s="#000017",f="#000018",y="#000019",d="#000020";if("streamlit"===o){const o=(0,p.Gy)(e);l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll(r,o[0])).replaceAll(t,o[1])).replaceAll(c,o[2])).replaceAll(a,o[3])).replaceAll(n,o[4])).replaceAll(i,o[5])).replaceAll(s,o[6])).replaceAll(f,o[7])).replaceAll(y,o[8])).replaceAll(d,o[9])}else l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll(r,"#0d0887")).replaceAll(t,"#46039f")).replaceAll(c,"#7201a8")).replaceAll(a,"#9c179e")).replaceAll(n,"#bd3786")).replaceAll(i,"#d8576b")).replaceAll(s,"#ed7953")).replaceAll(f,"#fb9f3a")).replaceAll(y,"#fdca26")).replaceAll(d,"#f0f921");return l}(l,e,o),l=function(l,e,o){const r="#000021",t="#000022",c="#000023",a="#000024",n="#000025",i="#000026",s="#000027",f="#000028",y="#000029",d="#000030",u="#000031";if("streamlit"===o){const o=(0,p.ru)(e);l=(l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll(r,o[0])).replaceAll(t,o[1])).replaceAll(c,o[2])).replaceAll(a,o[3])).replaceAll(n,o[4])).replaceAll(i,o[5])).replaceAll(s,o[6])).replaceAll(f,o[7])).replaceAll(y,o[8])).replaceAll(d,o[9])).replaceAll(u,o[10])}else l=(l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replaceAll(r,"#8e0152")).replaceAll(t,"#c51b7d")).replaceAll(c,"#de77ae")).replaceAll(a,"#f1b6da")).replaceAll(n,"#fde0ef")).replaceAll(i,"#f7f7f7")).replaceAll(s,"#e6f5d0")).replaceAll(f,"#b8e186")).replaceAll(y,"#7fbc41")).replaceAll(d,"#4d9221")).replaceAll(u,"#276419");return l}(l,e,o),l}function d(l,e){try{!function(l,e){const{genericFonts:o,colors:r,fontSizes:t}=e,c={font:{color:(0,p.Xy)(e),family:o.bodyFont,size:t.twoSmPx},title:{color:r.headingColor,subtitleColor:r.bodyText,font:{family:o.headingFont,size:t.mdPx,color:r.headingColor},pad:{l:e.spacing.twoXSPx},xanchor:"left",x:0},legend:{title:{font:{size:t.twoSmPx,color:(0,p.Xy)(e)},side:"top"},valign:"top",bordercolor:r.transparent,borderwidth:e.spacing.nonePx,font:{size:t.twoSmPx,color:(0,p.yq)(e)}},paper_bgcolor:r.bgColor,plot_bgcolor:r.bgColor,yaxis:{ticklabelposition:"outside",zerolinecolor:(0,p.ny)(e),title:{font:{color:(0,p.Xy)(e),size:t.smPx},standoff:e.spacing.twoXLPx},tickcolor:(0,p.ny)(e),tickfont:{color:(0,p.Xy)(e),size:t.twoSmPx},gridcolor:(0,p.ny)(e),minor:{gridcolor:(0,p.ny)(e)},automargin:!0},xaxis:{zerolinecolor:(0,p.ny)(e),gridcolor:(0,p.ny)(e),showgrid:!1,tickfont:{color:(0,p.Xy)(e),size:t.twoSmPx},tickcolor:(0,p.ny)(e),title:{font:{color:(0,p.Xy)(e),size:t.smPx},standoff:e.spacing.xlPx},minor:{gridcolor:(0,p.ny)(e)},zeroline:!1,automargin:!0,rangeselector:{bgcolor:r.bgColor,bordercolor:(0,p.ny)(e),borderwidth:1,x:0}},margin:{pad:e.spacing.smPx,r:e.spacing.nonePx,l:e.spacing.nonePx},hoverlabel:{bgcolor:r.bgColor,bordercolor:r.fadedText10,font:{color:(0,p.Xy)(e),family:o.bodyFont,size:t.twoSmPx}},coloraxis:{colorbar:{thickness:16,xpad:e.spacing.twoXLPx,ticklabelposition:"outside",outlinecolor:r.transparent,outlinewidth:8,len:.75,y:.5745,title:{font:{color:(0,p.Xy)(e),size:t.smPx}},tickfont:{color:(0,p.Xy)(e),size:t.twoSmPx}}},ternary:{gridcolor:(0,p.Xy)(e),bgcolor:r.bgColor,title:{font:{family:o.bodyFont,size:t.smPx}},color:(0,p.Xy)(e),aaxis:{gridcolor:(0,p.Xy)(e),linecolor:(0,p.Xy)(e),tickfont:{family:o.bodyFont,size:t.twoSmPx}},baxis:{linecolor:(0,p.Xy)(e),gridcolor:(0,p.Xy)(e),tickfont:{family:o.bodyFont,size:t.twoSmPx}},caxis:{linecolor:(0,p.Xy)(e),gridcolor:(0,p.Xy)(e),tickfont:{family:o.bodyFont,size:t.twoSmPx}}}};i()(l,c)}(l.layout.template.layout,e)}catch(o){const l=(0,s.b)(o);(0,f.H)(l)}"title"in l.layout&&(l.layout.title=i()(l.layout.title,{text:"<b>".concat(l.layout.title.text,"</b>")}))}var u=o(40864);const A=450;function g(l){let{element:e,width:o,height:c,isFullScreen:n}=l;const i=e.figure,p=(0,t.u)(),s=(0,r.useCallback)((()=>{const l=JSON.parse(y(i.spec,p,e.theme)),r=l.layout.height,t=l.layout.width;return n?(l.layout.width=o,l.layout.height=c):e.useContainerWidth?l.layout.width=o:(l.layout.width=t,l.layout.height=r),"streamlit"===e.theme?d(l,p):l.layout=function(l,e){const{colors:o,genericFonts:r}=e,t={font:{color:o.bodyText,family:r.bodyFont},paper_bgcolor:o.bgColor,plot_bgcolor:o.secondaryBg};return{...l,font:{...t.font,...l.font},paper_bgcolor:l.paper_bgcolor||t.paper_bgcolor,plot_bgcolor:l.plot_bgcolor||t.plot_bgcolor}}(l.layout,p),l}),[e.theme,e.useContainerWidth,i.spec,c,p,o,n]),[f,A]=(0,r.useState)(JSON.parse(i.config)),[g,b]=(0,r.useState)(s());(0,r.useLayoutEffect)((()=>{A(JSON.parse(i.config)),b(s())}),[e,p,c,o,i.config,s]);const{data:h,layout:m,frames:x}=g;return(0,u.jsx)(a.Z,{className:"stPlotlyChart",data:h,layout:m,config:f,frames:x},n?"fullscreen":"original")}const b=(0,c.Z)((function(l){let{width:e,element:o,height:r,isFullScreen:t}=l;switch(o.chart){case"url":return function(l){let{url:e,width:o,height:r}=l;const t=r||A;return(0,u.jsx)("iframe",{title:"Plotly",src:e,style:{width:o,height:t,colorScheme:"normal"}})}({url:o.url,height:r,width:e});case"figure":return(0,u.jsx)(g,{width:e,element:o,height:r,isFullScreen:t});default:throw new Error("Unrecognized PlotlyChart type: ".concat(o.chart))}}))}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[8427],{18427:(e,t,o)=>{o.r(t),o.d(t,{default:()=>b});var i=o(66845),r=o(25621),s=o(69021),n=o(92627),a=o(21e3),l=o(59033),d=o(36989),c=o(1515);const g=(0,c.Z)("button",{target:"elibz2u3"})((e=>{let{theme:t}=e;return{fontSize:t.fontSizes.sm,lineHeight:"1.4rem",color:t.colors.fadedText60,backgroundColor:t.colors.transparent,border:"none",boxShadow:"none",padding:"0px","&:hover, &:active, &:focus":{border:"none",outline:"none",boxShadow:"none"},"&:hover":{color:t.colors.primary}}}),""),p=(0,c.Z)("div",{target:"elibz2u2"})((e=>{let{theme:t}=e;return{display:"flex",flexDirection:"row",gap:t.spacing.lg}}),""),u=(0,c.Z)("div",{target:"elibz2u1"})((e=>{let{theme:t}=e;return{fontSize:t.fontSizes.xl}}),""),h=(0,c.Z)("div",{target:"elibz2u0"})((e=>{let{theme:t}=e;return{display:"flex",flexDirection:"column",gap:t.spacing.sm,alignItems:"start",justifyContent:"center",overflow:"hidden",minHeight:"100%",fontSize:t.fontSizes.sm,lineHeight:t.lineHeights.base}}),"");var f=o(40864);const b=(0,r.b)((function(e){let{theme:t,body:o,icon:r,width:c}=e;const b=function(e){if(e.length>109){let t=e.replace(/^(.{109}[^\s]*).*/,"$1");return t.length>109&&(t=t.substring(0,109).split(" ").slice(0,-1).join(" ")),t.trim()}return e}(o),m=o!==b,[x,w]=(0,i.useState)(!m),[y,S]=(0,i.useState)(0),v=(0,i.useCallback)((()=>{w(!x)}),[x]),z=(0,i.useMemo)((()=>function(e){const t=(0,n.Iy)(e);return{Body:{props:{"data-testid":"stToast"},style:{display:"flex",flexDirection:"row",gap:e.spacing.md,width:e.sizes.sidebar,marginTop:"8px",borderTopLeftRadius:e.radii.lg,borderTopRightRadius:e.radii.lg,borderBottomLeftRadius:e.radii.lg,borderBottomRightRadius:e.radii.lg,paddingTop:e.spacing.lg,paddingBottom:e.spacing.lg,paddingLeft:e.spacing.twoXL,paddingRight:e.spacing.twoXL,backgroundColor:t?e.colors.gray10:e.colors.gray90,color:e.colors.bodyText,boxShadow:t?"0px 4px 16px rgba(0, 0, 0, 0.16)":"0px 4px 16px rgba(0, 0, 0, 0.7)"}},CloseIcon:{style:{color:e.colors.fadedText40,width:e.fontSizes.lg,height:e.fontSizes.lg,marginRight:"calc(-1 * ".concat(e.spacing.lg," / 2)"),":hover":{color:e.colors.bodyText}}}}}(t)),[t]),R=(0,i.useMemo)((()=>(0,f.jsx)(f.Fragment,{children:(0,f.jsxs)(p,{expanded:x,children:[(0,f.jsx)(u,{children:r}),(0,f.jsxs)(h,{children:[(0,f.jsx)(a.ZP,{source:x?o:b,allowHTML:!1,isToast:!0}),m&&(0,f.jsx)(g,{"data-testid":"toastViewButton",className:"toastViewButton",onClick:v,children:x?"view less":"view more"})]})]})})),[m,x,o,r,b,v]);(0,i.useEffect)((()=>{if(t.inSidebar)return;const e=s.Z.info(R,{overrides:{...z}});return S(e),()=>{s.Z.update(e,{overrides:{Body:{style:{transitionDuration:0}}}}),s.Z.clear(e)}}),[]),(0,i.useEffect)((()=>{s.Z.update(y,{children:R,overrides:{...z}})}),[y,R,z]);const T=(0,f.jsx)(d.Z,{kind:l.h.ERROR,body:"Streamlit API Error: `st.toast` cannot be called directly on the sidebar with `st.sidebar.toast`. See our `st.toast` API [docs](https://docs.streamlit.io/library/api-reference/status/st.toast) for more information.",width:c});return(0,f.jsx)(f.Fragment,{children:t.inSidebar&&T})}))}}]);
|