streamlit-nightly 1.38.1.dev20240830__py2.py3-none-any.whl → 1.38.1.dev20240831__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/components/v1/component_registry.py +1 -1
- streamlit/components/v1/custom_component.py +3 -3
- streamlit/elements/arrow.py +2 -2
- streamlit/elements/iframe.py +2 -2
- streamlit/elements/layouts.py +20 -0
- streamlit/elements/media.py +3 -6
- streamlit/elements/plotly_chart.py +2 -2
- streamlit/elements/vega_charts.py +2 -2
- streamlit/elements/widgets/button.py +6 -6
- streamlit/elements/widgets/button_group.py +4 -4
- streamlit/elements/widgets/camera_input.py +3 -3
- streamlit/elements/widgets/chat.py +4 -4
- streamlit/elements/widgets/checkbox.py +3 -3
- streamlit/elements/widgets/color_picker.py +3 -3
- streamlit/elements/widgets/data_editor.py +8 -6
- streamlit/elements/widgets/file_uploader.py +3 -3
- streamlit/elements/widgets/multiselect.py +4 -4
- streamlit/elements/widgets/number_input.py +3 -3
- streamlit/elements/widgets/radio.py +4 -4
- streamlit/elements/widgets/select_slider.py +4 -4
- streamlit/elements/widgets/selectbox.py +4 -4
- streamlit/elements/widgets/slider.py +3 -3
- streamlit/elements/widgets/text_widgets.py +5 -5
- streamlit/elements/widgets/time_widgets.py +5 -5
- streamlit/proto/Block_pb2.py +7 -7
- streamlit/proto/Block_pb2.pyi +4 -1
- streamlit/runtime/state/common.py +24 -23
- streamlit/runtime/state/session_state.py +5 -5
- streamlit/runtime/state/widgets.py +2 -2
- streamlit/static/asset-manifest.json +5 -5
- streamlit/static/index.html +1 -1
- streamlit/static/static/js/583.61ac7fde.chunk.js +1 -0
- streamlit/static/static/js/6141.43a8fda3.chunk.js +1 -0
- streamlit/static/static/js/9060.1ec8dc2b.chunk.js +1 -0
- streamlit/static/static/js/main.f0eff620.js +28 -0
- streamlit/testing/v1/element_tree.py +2 -2
- {streamlit_nightly-1.38.1.dev20240830.dist-info → streamlit_nightly-1.38.1.dev20240831.dist-info}/METADATA +2 -2
- {streamlit_nightly-1.38.1.dev20240830.dist-info → streamlit_nightly-1.38.1.dev20240831.dist-info}/RECORD +43 -43
- streamlit/static/static/js/583.0933ee10.chunk.js +0 -1
- streamlit/static/static/js/6141.3a6bc340.chunk.js +0 -1
- streamlit/static/static/js/9060.d2bc110a.chunk.js +0 -1
- streamlit/static/static/js/main.f42f34e1.js +0 -28
- /streamlit/static/static/js/{main.f42f34e1.js.LICENSE.txt → main.f0eff620.js.LICENSE.txt} +0 -0
- {streamlit_nightly-1.38.1.dev20240830.data → streamlit_nightly-1.38.1.dev20240831.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.38.1.dev20240830.dist-info → streamlit_nightly-1.38.1.dev20240831.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.38.1.dev20240830.dist-info → streamlit_nightly-1.38.1.dev20240831.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.38.1.dev20240830.dist-info → streamlit_nightly-1.38.1.dev20240831.dist-info}/top_level.txt +0 -0
@@ -41,7 +41,7 @@ from streamlit.runtime.state import (
|
|
41
41
|
get_session_state,
|
42
42
|
register_widget,
|
43
43
|
)
|
44
|
-
from streamlit.runtime.state.common import
|
44
|
+
from streamlit.runtime.state.common import compute_element_id
|
45
45
|
from streamlit.type_util import (
|
46
46
|
SupportsStr,
|
47
47
|
)
|
@@ -275,7 +275,7 @@ class TextWidgetsMixin:
|
|
275
275
|
# Make sure value is always string or None:
|
276
276
|
value = str(value) if value is not None else None
|
277
277
|
|
278
|
-
|
278
|
+
element_id = compute_element_id(
|
279
279
|
"text_input",
|
280
280
|
user_key=key,
|
281
281
|
label=label,
|
@@ -295,7 +295,7 @@ class TextWidgetsMixin:
|
|
295
295
|
value = None
|
296
296
|
|
297
297
|
text_input_proto = TextInputProto()
|
298
|
-
text_input_proto.id =
|
298
|
+
text_input_proto.id = element_id
|
299
299
|
text_input_proto.label = label
|
300
300
|
if value is not None:
|
301
301
|
text_input_proto.default = value
|
@@ -548,7 +548,7 @@ class TextWidgetsMixin:
|
|
548
548
|
|
549
549
|
value = str(value) if value is not None else None
|
550
550
|
|
551
|
-
|
551
|
+
element_id = compute_element_id(
|
552
552
|
"text_area",
|
553
553
|
user_key=key,
|
554
554
|
label=label,
|
@@ -567,7 +567,7 @@ class TextWidgetsMixin:
|
|
567
567
|
value = None
|
568
568
|
|
569
569
|
text_area_proto = TextAreaProto()
|
570
|
-
text_area_proto.id =
|
570
|
+
text_area_proto.id = element_id
|
571
571
|
text_area_proto.label = label
|
572
572
|
if value is not None:
|
573
573
|
text_area_proto.default = value
|
@@ -55,7 +55,7 @@ from streamlit.runtime.state import (
|
|
55
55
|
get_session_state,
|
56
56
|
register_widget,
|
57
57
|
)
|
58
|
-
from streamlit.runtime.state.common import
|
58
|
+
from streamlit.runtime.state.common import compute_element_id
|
59
59
|
from streamlit.time_util import adjust_years
|
60
60
|
|
61
61
|
if TYPE_CHECKING:
|
@@ -454,7 +454,7 @@ class TimeWidgetsMixin:
|
|
454
454
|
"The type of value should be one of datetime, time or None"
|
455
455
|
)
|
456
456
|
|
457
|
-
|
457
|
+
element_id = compute_element_id(
|
458
458
|
"time_input",
|
459
459
|
user_key=key,
|
460
460
|
label=label,
|
@@ -472,7 +472,7 @@ class TimeWidgetsMixin:
|
|
472
472
|
parsed_time = None
|
473
473
|
|
474
474
|
time_input_proto = TimeInputProto()
|
475
|
-
time_input_proto.id =
|
475
|
+
time_input_proto.id = element_id
|
476
476
|
time_input_proto.label = label
|
477
477
|
if parsed_time is not None:
|
478
478
|
time_input_proto.default = time.strftime(parsed_time, "%H:%M")
|
@@ -730,7 +730,7 @@ class TimeWidgetsMixin:
|
|
730
730
|
|
731
731
|
# TODO this is missing the error path, integrate with the dateinputvalues parsing
|
732
732
|
|
733
|
-
|
733
|
+
element_id = compute_element_id(
|
734
734
|
"date_input",
|
735
735
|
user_key=key,
|
736
736
|
label=label,
|
@@ -775,7 +775,7 @@ class TimeWidgetsMixin:
|
|
775
775
|
del value, min_value, max_value
|
776
776
|
|
777
777
|
date_input_proto = DateInputProto()
|
778
|
-
date_input_proto.id =
|
778
|
+
date_input_proto.id = element_id
|
779
779
|
date_input_proto.is_range = parsed_values.is_range
|
780
780
|
date_input_proto.disabled = disabled
|
781
781
|
date_input_proto.label_visibility.value = get_label_visibility_proto_value(
|
streamlit/proto/Block_pb2.py
CHANGED
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Block.proto\"\
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bstreamlit/proto/Block.proto\"\xc0\t\n\x05\x42lock\x12#\n\x08vertical\x18\x01 \x01(\x0b\x32\x0f.Block.VerticalH\x00\x12\'\n\nhorizontal\x18\x02 \x01(\x0b\x32\x11.Block.HorizontalH\x00\x12\x1f\n\x06\x63olumn\x18\x03 \x01(\x0b\x32\r.Block.ColumnH\x00\x12\'\n\nexpandable\x18\x04 \x01(\x0b\x32\x11.Block.ExpandableH\x00\x12\x1b\n\x04\x66orm\x18\x05 \x01(\x0b\x32\x0b.Block.FormH\x00\x12,\n\rtab_container\x18\x06 \x01(\x0b\x32\x13.Block.TabContainerH\x00\x12\x19\n\x03tab\x18\x07 \x01(\x0b\x32\n.Block.TabH\x00\x12*\n\x0c\x63hat_message\x18\t \x01(\x0b\x32\x12.Block.ChatMessageH\x00\x12!\n\x07popover\x18\n \x01(\x0b\x32\x0e.Block.PopoverH\x00\x12\x1f\n\x06\x64ialog\x18\x0b \x01(\x0b\x32\r.Block.DialogH\x00\x12\x13\n\x0b\x61llow_empty\x18\x08 \x01(\x08\x1a*\n\x08Vertical\x12\x0e\n\x06\x62order\x18\x01 \x01(\x08\x12\x0e\n\x06height\x18\x02 \x01(\r\x1a\x19\n\nHorizontal\x12\x0b\n\x03gap\x18\x01 \x01(\t\x1a\x98\x01\n\x06\x43olumn\x12\x0e\n\x06weight\x18\x01 \x01(\x01\x12\x0b\n\x03gap\x18\x02 \x01(\t\x12;\n\x12vertical_alignment\x18\x03 \x01(\x0e\x32\x1f.Block.Column.VerticalAlignment\"4\n\x11VerticalAlignment\x12\x07\n\x03TOP\x10\x00\x12\n\n\x06\x43\x45NTER\x10\x01\x12\n\n\x06\x42OTTOM\x10\x02\x1aM\n\nExpandable\x12\r\n\x05label\x18\x01 \x01(\t\x12\x15\n\x08\x65xpanded\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x0c\n\x04icon\x18\x03 \x01(\tB\x0b\n\t_expanded\x1a\x9d\x01\n\x06\x44ialog\x12\r\n\x05title\x18\x01 \x01(\t\x12\x13\n\x0b\x64ismissible\x18\x02 \x01(\x08\x12(\n\x05width\x18\x03 \x01(\x0e\x32\x19.Block.Dialog.DialogWidth\x12\x14\n\x07is_open\x18\x04 \x01(\x08H\x00\x88\x01\x01\"#\n\x0b\x44ialogWidth\x12\t\n\x05SMALL\x10\x00\x12\t\n\x05LARGE\x10\x01\x42\n\n\x08_is_open\x1a@\n\x04\x46orm\x12\x0f\n\x07\x66orm_id\x18\x01 \x01(\t\x12\x17\n\x0f\x63lear_on_submit\x18\x02 \x01(\x08\x12\x0e\n\x06\x62order\x18\x03 \x01(\x08\x1a\x0e\n\x0cTabContainer\x1a\x14\n\x03Tab\x12\r\n\x05label\x18\x01 \x01(\t\x1a\x63\n\x07Popover\x12\r\n\x05label\x18\x01 \x01(\t\x12\x1b\n\x13use_container_width\x18\x02 \x01(\x08\x12\x0c\n\x04help\x18\x03 \x01(\t\x12\x10\n\x08\x64isabled\x18\x04 \x01(\x08\x12\x0c\n\x04icon\x18\x05 \x01(\t\x1a\x8d\x01\n\x0b\x43hatMessage\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x61vatar\x18\x02 \x01(\t\x12\x32\n\x0b\x61vatar_type\x18\x03 \x01(\x0e\x32\x1d.Block.ChatMessage.AvatarType\",\n\nAvatarType\x12\t\n\x05IMAGE\x10\x00\x12\t\n\x05\x45MOJI\x10\x01\x12\x08\n\x04ICON\x10\x02\x42\x06\n\x04typeB*\n\x1c\x63om.snowflake.apps.streamlitB\nBlockProtob\x06proto3')
|
18
18
|
|
19
19
|
_globals = globals()
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -23,7 +23,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
23
23
|
_globals['DESCRIPTOR']._loaded_options = None
|
24
24
|
_globals['DESCRIPTOR']._serialized_options = b'\n\034com.snowflake.apps.streamlitB\nBlockProto'
|
25
25
|
_globals['_BLOCK']._serialized_start=32
|
26
|
-
_globals['_BLOCK']._serialized_end=
|
26
|
+
_globals['_BLOCK']._serialized_end=1248
|
27
27
|
_globals['_BLOCK_VERTICAL']._serialized_start=428
|
28
28
|
_globals['_BLOCK_VERTICAL']._serialized_end=470
|
29
29
|
_globals['_BLOCK_HORIZONTAL']._serialized_start=472
|
@@ -45,9 +45,9 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
45
45
|
_globals['_BLOCK_TAB']._serialized_start=975
|
46
46
|
_globals['_BLOCK_TAB']._serialized_end=995
|
47
47
|
_globals['_BLOCK_POPOVER']._serialized_start=997
|
48
|
-
_globals['_BLOCK_POPOVER']._serialized_end=
|
49
|
-
_globals['_BLOCK_CHATMESSAGE']._serialized_start=
|
50
|
-
_globals['_BLOCK_CHATMESSAGE']._serialized_end=
|
51
|
-
_globals['_BLOCK_CHATMESSAGE_AVATARTYPE']._serialized_start=
|
52
|
-
_globals['_BLOCK_CHATMESSAGE_AVATARTYPE']._serialized_end=
|
48
|
+
_globals['_BLOCK_POPOVER']._serialized_end=1096
|
49
|
+
_globals['_BLOCK_CHATMESSAGE']._serialized_start=1099
|
50
|
+
_globals['_BLOCK_CHATMESSAGE']._serialized_end=1240
|
51
|
+
_globals['_BLOCK_CHATMESSAGE_AVATARTYPE']._serialized_start=1196
|
52
|
+
_globals['_BLOCK_CHATMESSAGE_AVATARTYPE']._serialized_end=1240
|
53
53
|
# @@protoc_insertion_point(module_scope)
|
streamlit/proto/Block_pb2.pyi
CHANGED
@@ -205,10 +205,12 @@ class Block(google.protobuf.message.Message):
|
|
205
205
|
USE_CONTAINER_WIDTH_FIELD_NUMBER: builtins.int
|
206
206
|
HELP_FIELD_NUMBER: builtins.int
|
207
207
|
DISABLED_FIELD_NUMBER: builtins.int
|
208
|
+
ICON_FIELD_NUMBER: builtins.int
|
208
209
|
label: builtins.str
|
209
210
|
use_container_width: builtins.bool
|
210
211
|
help: builtins.str
|
211
212
|
disabled: builtins.bool
|
213
|
+
icon: builtins.str
|
212
214
|
def __init__(
|
213
215
|
self,
|
214
216
|
*,
|
@@ -216,8 +218,9 @@ class Block(google.protobuf.message.Message):
|
|
216
218
|
use_container_width: builtins.bool = ...,
|
217
219
|
help: builtins.str = ...,
|
218
220
|
disabled: builtins.bool = ...,
|
221
|
+
icon: builtins.str = ...,
|
219
222
|
) -> None: ...
|
220
|
-
def ClearField(self, field_name: typing.Literal["disabled", b"disabled", "help", b"help", "label", b"label", "use_container_width", b"use_container_width"]) -> None: ...
|
223
|
+
def ClearField(self, field_name: typing.Literal["disabled", b"disabled", "help", b"help", "icon", b"icon", "label", b"label", "use_container_width", b"use_container_width"]) -> None: ...
|
221
224
|
|
222
225
|
@typing.final
|
223
226
|
class ChatMessage(google.protobuf.message.Message):
|
@@ -95,7 +95,7 @@ WidgetProto: TypeAlias = Union[
|
|
95
95
|
TimeInput,
|
96
96
|
]
|
97
97
|
|
98
|
-
|
98
|
+
GENERATED_ELEMENT_ID_PREFIX: Final = "$$ID"
|
99
99
|
TESTING_KEY = "$$STREAMLIT_INTERNAL_KEY_TESTING"
|
100
100
|
|
101
101
|
|
@@ -232,22 +232,22 @@ SAFE_VALUES = Union[
|
|
232
232
|
]
|
233
233
|
|
234
234
|
|
235
|
-
def
|
235
|
+
def compute_element_id(
|
236
236
|
element_type: str,
|
237
237
|
user_key: str | None = None,
|
238
238
|
**kwargs: SAFE_VALUES | Iterable[SAFE_VALUES],
|
239
239
|
) -> str:
|
240
|
-
"""Compute the
|
241
|
-
set of inputs to this function will always produce the same
|
240
|
+
"""Compute the id for the given element. This id is stable: a given
|
241
|
+
set of inputs to this function will always produce the same id output.
|
242
242
|
|
243
|
-
Only stable, deterministic values should be used to compute
|
244
|
-
nondeterministic values as inputs can cause the resulting
|
243
|
+
Only stable, deterministic values should be used to compute element ids. Using
|
244
|
+
nondeterministic values as inputs can cause the resulting element id to
|
245
245
|
change between runs.
|
246
246
|
|
247
|
-
The
|
247
|
+
The element id includes the user_key so elements with identical arguments can
|
248
248
|
use it to be distinct.
|
249
249
|
|
250
|
-
The
|
250
|
+
The element id includes an easily identified prefix, and the user_key as a
|
251
251
|
suffix, to make it easy to identify it and know if a key maps to it.
|
252
252
|
"""
|
253
253
|
h = hashlib.new("md5", **HASHLIB_KWARGS)
|
@@ -257,37 +257,38 @@ def compute_widget_id(
|
|
257
257
|
for k, v in kwargs.items():
|
258
258
|
h.update(str(k).encode("utf-8"))
|
259
259
|
h.update(str(v).encode("utf-8"))
|
260
|
-
return f"{
|
260
|
+
return f"{GENERATED_ELEMENT_ID_PREFIX}-{h.hexdigest()}-{user_key}"
|
261
261
|
|
262
262
|
|
263
|
-
def
|
264
|
-
"""Return the user key portion of a
|
263
|
+
def user_key_from_element_id(element_id: str) -> str | None:
|
264
|
+
"""Return the user key portion of a element id, or None if the id does not
|
265
265
|
have a user key.
|
266
266
|
|
267
267
|
TODO This will incorrectly indicate no user key if the user actually provides
|
268
268
|
"None" as a key, but we can't avoid this kind of problem while storing the
|
269
|
-
string representation of the no-user-key sentinel as part of the
|
269
|
+
string representation of the no-user-key sentinel as part of the element id.
|
270
270
|
"""
|
271
|
-
user_key: str | None =
|
272
|
-
|
273
|
-
return user_key
|
271
|
+
user_key: str | None = element_id.split("-", maxsplit=2)[-1]
|
272
|
+
return None if user_key == "None" else user_key
|
274
273
|
|
275
274
|
|
276
|
-
def
|
277
|
-
"""True if the given session_state key has the structure of a
|
278
|
-
return key.startswith(
|
275
|
+
def is_element_id(key: str) -> bool:
|
276
|
+
"""True if the given session_state key has the structure of a element ID."""
|
277
|
+
return key.startswith(GENERATED_ELEMENT_ID_PREFIX)
|
279
278
|
|
280
279
|
|
281
|
-
def
|
282
|
-
"""True if the given session_state key has the structure of a
|
283
|
-
|
280
|
+
def is_keyed_element_id(key: str) -> bool:
|
281
|
+
"""True if the given session_state key has the structure of a element ID
|
282
|
+
with a user_key.
|
283
|
+
"""
|
284
|
+
return is_element_id(key) and not key.endswith("-None")
|
284
285
|
|
285
286
|
|
286
287
|
def require_valid_user_key(key: str) -> None:
|
287
288
|
"""Raise an Exception if the given user_key is invalid."""
|
288
|
-
if
|
289
|
+
if is_element_id(key):
|
289
290
|
raise StreamlitAPIException(
|
290
|
-
f"Keys beginning with {
|
291
|
+
f"Keys beginning with {GENERATED_ELEMENT_ID_PREFIX} are reserved."
|
291
292
|
)
|
292
293
|
|
293
294
|
|
@@ -44,8 +44,8 @@ from streamlit.runtime.state.common import (
|
|
44
44
|
ValueFieldName,
|
45
45
|
WidgetMetadata,
|
46
46
|
is_array_value_field_name,
|
47
|
-
|
48
|
-
|
47
|
+
is_element_id,
|
48
|
+
is_keyed_element_id,
|
49
49
|
)
|
50
50
|
from streamlit.runtime.state.query_params import QueryParams
|
51
51
|
from streamlit.runtime.stats import CacheStat, CacheStatsProvider, group_stats
|
@@ -353,9 +353,9 @@ class SessionState:
|
|
353
353
|
# happens when the streamlit server restarted or the cache was cleared),
|
354
354
|
# then we receive a widget's state from a browser.
|
355
355
|
for k in self._keys():
|
356
|
-
if not
|
356
|
+
if not is_element_id(k) and not _is_internal_key(k):
|
357
357
|
state[k] = self[k]
|
358
|
-
elif
|
358
|
+
elif is_keyed_element_id(k):
|
359
359
|
try:
|
360
360
|
key = wid_key_map[k]
|
361
361
|
state[key] = self[k]
|
@@ -586,7 +586,7 @@ class SessionState:
|
|
586
586
|
k: v
|
587
587
|
for k, v in self._old_state.items()
|
588
588
|
if (
|
589
|
-
not
|
589
|
+
not is_element_id(k)
|
590
590
|
or not _is_stale_widget(
|
591
591
|
self._new_widget_state.widget_metadata.get(k),
|
592
592
|
active_widget_ids,
|
@@ -32,7 +32,7 @@ from streamlit.runtime.state.common import (
|
|
32
32
|
WidgetMetadata,
|
33
33
|
WidgetProto,
|
34
34
|
WidgetSerializer,
|
35
|
-
|
35
|
+
user_key_from_element_id,
|
36
36
|
)
|
37
37
|
|
38
38
|
if TYPE_CHECKING:
|
@@ -187,7 +187,7 @@ def register_widget_from_metadata(
|
|
187
187
|
return RegisterWidgetResult.failure(deserializer=metadata.deserializer)
|
188
188
|
|
189
189
|
widget_id = metadata.id
|
190
|
-
user_key =
|
190
|
+
user_key = user_key_from_element_id(widget_id)
|
191
191
|
|
192
192
|
# Ensure another widget with the same user key hasn't already been registered.
|
193
193
|
if user_key is not None:
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
3
|
"main.css": "./static/css/main.5513bd04.css",
|
4
|
-
"main.js": "./static/js/main.
|
4
|
+
"main.js": "./static/js/main.f0eff620.js",
|
5
5
|
"static/js/6679.265ca09c.chunk.js": "./static/js/6679.265ca09c.chunk.js",
|
6
6
|
"static/js/9464.7e9a3c0a.chunk.js": "./static/js/9464.7e9a3c0a.chunk.js",
|
7
7
|
"static/js/9077.8a0d79f6.chunk.js": "./static/js/9077.8a0d79f6.chunk.js",
|
@@ -16,13 +16,13 @@
|
|
16
16
|
"static/js/8148.f51df66c.chunk.js": "./static/js/8148.f51df66c.chunk.js",
|
17
17
|
"static/js/84.414fa87b.chunk.js": "./static/js/84.414fa87b.chunk.js",
|
18
18
|
"static/js/9923.7061d124.chunk.js": "./static/js/9923.7061d124.chunk.js",
|
19
|
-
"static/js/583.
|
19
|
+
"static/js/583.61ac7fde.chunk.js": "./static/js/583.61ac7fde.chunk.js",
|
20
20
|
"static/js/4827.f9cb5fa3.chunk.js": "./static/js/4827.f9cb5fa3.chunk.js",
|
21
21
|
"static/js/8237.ed5d881b.chunk.js": "./static/js/8237.ed5d881b.chunk.js",
|
22
22
|
"static/js/5828.f8572ba4.chunk.js": "./static/js/5828.f8572ba4.chunk.js",
|
23
|
-
"static/js/9060.
|
23
|
+
"static/js/9060.1ec8dc2b.chunk.js": "./static/js/9060.1ec8dc2b.chunk.js",
|
24
24
|
"static/js/5625.0394ecdc.chunk.js": "./static/js/5625.0394ecdc.chunk.js",
|
25
|
-
"static/js/6141.
|
25
|
+
"static/js/6141.43a8fda3.chunk.js": "./static/js/6141.43a8fda3.chunk.js",
|
26
26
|
"static/js/4103.2a961369.chunk.js": "./static/js/4103.2a961369.chunk.js",
|
27
27
|
"static/js/1086.1bb52316.chunk.js": "./static/js/1086.1bb52316.chunk.js",
|
28
28
|
"static/js/245.532167ed.chunk.js": "./static/js/245.532167ed.chunk.js",
|
@@ -153,6 +153,6 @@
|
|
153
153
|
},
|
154
154
|
"entrypoints": [
|
155
155
|
"static/css/main.5513bd04.css",
|
156
|
-
"static/js/main.
|
156
|
+
"static/js/main.f0eff620.js"
|
157
157
|
]
|
158
158
|
}
|
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.f0eff620.js"></script><link href="./static/css/main.5513bd04.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[583],{10583:(o,r,e)=>{e.r(r),e.d(r,{default:()=>h});e(58878);var i=e(84720),t=e(98350),l=e(88987),a=e(89653),s=e(32735);function d(o,r){switch(o){case i.Pj.XSMALL:return{padding:`${r.spacing.twoXS} ${r.spacing.sm}`,fontSize:r.fontSizes.sm};case i.Pj.SMALL:return{padding:`${r.spacing.twoXS} ${r.spacing.md}`};case i.Pj.LARGE:return{padding:`${r.spacing.md} ${r.spacing.md}`};default:return{padding:`${r.spacing.xs} ${r.spacing.md}`}}}const n=(0,a.A)("a",{target:"e16zdaao2"})((o=>{let{fluidWidth:r,size:e,theme:i}=o;const t="number"==typeof r?`${r}px`:"100%";return{display:"inline-flex",alignItems:"center",justifyContent:"center",fontWeight:i.fontWeights.normal,padding:`${i.spacing.xs} ${i.spacing.md}`,borderRadius:i.radii.default,minHeight:i.sizes.minElementHeight,margin:0,lineHeight:i.lineHeights.base,color:i.colors.primary,textDecoration:"none",width:r?t:"auto",userSelect:"none","&:visited":{color:i.colors.primary},"&:focus":{outline:"none"},"&:focus-visible":{boxShadow:`0 0 0 0.2rem ${(0,s.No)(i.colors.primary,.5)}`},"&:hover":{textDecoration:"none"},"&:active":{textDecoration:"none"},...d(e,i)}}),""),c=(0,a.A)(n,{target:"e16zdaao1"})((o=>{let{theme:r}=o;return{backgroundColor:r.colors.primary,color:r.colors.white,border:`${r.sizes.borderWidth} solid ${r.colors.primary}`,"&:hover":{backgroundColor:(0,s.e$)(r.colors.primary,.05),color:r.colors.white},"&:active":{backgroundColor:"transparent",color:r.colors.primary},"&:visited:not(:active)":{color:r.colors.white},"&[disabled], &[disabled]:hover, &[disabled]:active, &[disabled]:visited":{borderColor:r.colors.borderColor,backgroundColor:r.colors.transparent,color:r.colors.fadedText40,cursor:"not-allowed"}}}),""),u=(0,a.A)(n,{target:"e16zdaao0"})((o=>{let{theme:r}=o;return{backgroundColor:r.colors.lightenedBg05,color:r.colors.bodyText,border:`${r.sizes.borderWidth} solid ${r.colors.borderColor}`,"&:visited":{color:r.colors.bodyText},"&:hover":{borderColor:r.colors.primary,color:r.colors.primary},"&:active":{color:r.colors.white,borderColor:r.colors.primary,backgroundColor:r.colors.primary},"&:focus:not(:active)":{borderColor:r.colors.primary,color:r.colors.primary},"&[disabled], &[disabled]:hover, &[disabled]:active":{borderColor:r.colors.borderColor,backgroundColor:r.colors.transparent,color:r.colors.fadedText40,cursor:"not-allowed"}}}),"");var p=e(90782);const b=function(o){let{kind:r,size:e,disabled:t,fluidWidth:l,children:a,autoFocus:s,href:d,rel:n,target:b,onClick:h}=o,g=c;return r===i.KX.SECONDARY&&(g=u),(0,p.jsx)(g,{kind:r,size:e||i.Pj.MEDIUM,fluidWidth:l||!1,disabled:t||!1,autoFocus:s||!1,href:d,target:b,rel:n,onClick:h,tabIndex:t?-1:0,children:a})};const h=function(o){const{disabled:r,element:e,width:a}=o,s={width:a},d="primary"===e.type?i.KX.PRIMARY:i.KX.SECONDARY,n=!e.help||a;return(0,p.jsx)("div",{className:"stLinkButton","data-testid":"stLinkButton",style:s,children:(0,p.jsx)(t.F,{help:e.help,children:(0,p.jsx)(b,{kind:d,size:i.Pj.SMALL,disabled:r,onClick:r=>{o.disabled&&r.preventDefault()},fluidWidth:!!e.useContainerWidth&&n,href:e.url,target:"_blank",rel:"noreferrer","aria-disabled":r,children:(0,p.jsx)(l.Y,{icon:e.icon,label:e.label})})})})}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[6141],{96141:(t,e,n)=>{n.r(e),n.d(e,{default:()=>u});var i=n(58878),l=n(84720),s=n(98350),a=n(36459),r=n(88987),d=n(84152),o=n(90782);const u=function(t){const{disabled:e,element:n,widgetMgr:u,width:c,endpoints:b,fragmentId:h}=t,p={width:c},{libConfig:{enforceDownloadInNewTab:f=!1}}=i.useContext(d.n),w="primary"===n.type?l.KX.PRIMARY:l.KX.SECONDARY,m=!n.help||c;return(0,o.jsx)("div",{className:"stDownloadButton","data-testid":"stDownloadButton",style:p,children:(0,o.jsx)(s.F,{help:n.help,children:(0,o.jsx)(a.Ay,{kind:w,size:l.Pj.SMALL,disabled:e,onClick:()=>{u.setTriggerValue(n,{fromUi:!0},h);const t=function(t,e,n){const i=document.createElement("a"),l=t.buildMediaURL(e);return i.setAttribute("href",l),n?i.setAttribute("target","_blank"):i.setAttribute("target","_self"),i.setAttribute("download",""),i}(b,n.url,f);t.click()},fluidWidth:!!n.useContainerWidth&&m,children:(0,o.jsx)(r.Y,{icon:n.icon,label:n.label})})})})}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[9060],{79060:(e,t,i)=>{i.r(t),i.d(t,{default:()=>r});i(58878);var s=i(84720),l=i(98350),a=i(36459),d=i(88987),n=i(90782);const r=function(e){const{disabled:t,element:i,widgetMgr:r,width:c,fragmentId:h}=e,p={width:c},u="primary"===i.type?s.KX.PRIMARY:s.KX.SECONDARY,o=!i.help||c;return(0,n.jsx)("div",{className:"stButton","data-testid":"stButton",style:p,children:(0,n.jsx)(l.F,{help:i.help,children:(0,n.jsx)(a.Ay,{kind:u,size:s.Pj.SMALL,disabled:t,fluidWidth:!!i.useContainerWidth&&o,onClick:()=>r.setTriggerValue(i,{fromUi:!0},h),children:(0,n.jsx)(d.Y,{icon:i.icon,label:i.label})})})})}}}]);
|