streamlit-nightly 1.38.1.dev20240926__py2.py3-none-any.whl → 1.38.1.dev20240927__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/commands/logo.py +22 -14
- streamlit/commands/navigation.py +12 -7
- streamlit/components/v1/component_registry.py +2 -2
- streamlit/components/v1/custom_component.py +2 -2
- streamlit/config.py +31 -9
- streamlit/elements/arrow.py +11 -9
- streamlit/elements/deck_gl_json_chart.py +134 -24
- streamlit/elements/empty.py +38 -13
- streamlit/elements/form.py +26 -8
- streamlit/elements/lib/column_types.py +14 -0
- streamlit/elements/plotly_chart.py +7 -7
- streamlit/elements/vega_charts.py +8 -8
- streamlit/elements/widgets/audio_input.py +13 -9
- streamlit/elements/widgets/button.py +25 -11
- streamlit/elements/widgets/button_group.py +3 -4
- streamlit/elements/widgets/camera_input.py +12 -8
- streamlit/elements/widgets/chat.py +3 -3
- streamlit/elements/widgets/checkbox.py +4 -6
- streamlit/elements/widgets/color_picker.py +3 -4
- streamlit/elements/widgets/data_editor.py +5 -4
- streamlit/elements/widgets/file_uploader.py +6 -7
- streamlit/elements/widgets/multiselect.py +3 -4
- streamlit/elements/widgets/number_input.py +3 -4
- streamlit/elements/widgets/radio.py +3 -4
- streamlit/elements/widgets/select_slider.py +3 -4
- streamlit/elements/widgets/selectbox.py +3 -4
- streamlit/elements/widgets/slider.py +3 -4
- streamlit/elements/widgets/text_widgets.py +6 -8
- streamlit/elements/widgets/time_widgets.py +6 -8
- streamlit/navigation/page.py +7 -5
- streamlit/runtime/state/common.py +0 -51
- streamlit/runtime/state/widgets.py +17 -53
- streamlit/static/asset-manifest.json +3 -3
- streamlit/static/index.html +1 -1
- streamlit/static/static/css/{5711.c24b25fa.chunk.css → 5711.a29b5d98.chunk.css} +1 -1
- streamlit/static/static/js/{main.45415ac9.js → main.db770de6.js} +2 -2
- streamlit/testing/v1/app_test.py +2 -2
- {streamlit_nightly-1.38.1.dev20240926.dist-info → streamlit_nightly-1.38.1.dev20240927.dist-info}/METADATA +1 -1
- {streamlit_nightly-1.38.1.dev20240926.dist-info → streamlit_nightly-1.38.1.dev20240927.dist-info}/RECORD +44 -44
- /streamlit/static/static/js/{main.45415ac9.js.LICENSE.txt → main.db770de6.js.LICENSE.txt} +0 -0
- {streamlit_nightly-1.38.1.dev20240926.data → streamlit_nightly-1.38.1.dev20240927.data}/scripts/streamlit.cmd +0 -0
- {streamlit_nightly-1.38.1.dev20240926.dist-info → streamlit_nightly-1.38.1.dev20240927.dist-info}/WHEEL +0 -0
- {streamlit_nightly-1.38.1.dev20240926.dist-info → streamlit_nightly-1.38.1.dev20240927.dist-info}/entry_points.txt +0 -0
- {streamlit_nightly-1.38.1.dev20240926.dist-info → streamlit_nightly-1.38.1.dev20240927.dist-info}/top_level.txt +0 -0
@@ -227,8 +227,7 @@ class SelectSliderMixin:
|
|
227
227
|
key : str or int
|
228
228
|
An optional string or integer to use as the unique key for the widget.
|
229
229
|
If this is omitted, a key will be generated for the widget
|
230
|
-
based on its content.
|
231
|
-
not share the same key.
|
230
|
+
based on its content. No two widgets may have the same key.
|
232
231
|
|
233
232
|
help : str
|
234
233
|
An optional tooltip that gets displayed next to the select slider.
|
@@ -399,14 +398,14 @@ class SelectSliderMixin:
|
|
399
398
|
serde = SelectSliderSerde(opt, slider_value, _is_range_value(value))
|
400
399
|
|
401
400
|
widget_state = register_widget(
|
402
|
-
|
403
|
-
slider_proto,
|
401
|
+
slider_proto.id,
|
404
402
|
on_change_handler=on_change,
|
405
403
|
args=args,
|
406
404
|
kwargs=kwargs,
|
407
405
|
deserializer=serde.deserialize,
|
408
406
|
serializer=serde.serialize,
|
409
407
|
ctx=ctx,
|
408
|
+
value_type="double_array_value",
|
410
409
|
)
|
411
410
|
if isinstance(widget_state.value, tuple):
|
412
411
|
widget_state = maybe_coerce_enum_sequence(
|
@@ -170,8 +170,7 @@ class SelectboxMixin:
|
|
170
170
|
key : str or int
|
171
171
|
An optional string or integer to use as the unique key for the widget.
|
172
172
|
If this is omitted, a key will be generated for the widget
|
173
|
-
based on its content.
|
174
|
-
not share the same key.
|
173
|
+
based on its content. No two widgets may have the same key.
|
175
174
|
|
176
175
|
help : str
|
177
176
|
An optional tooltip that gets displayed next to the selectbox.
|
@@ -328,14 +327,14 @@ class SelectboxMixin:
|
|
328
327
|
serde = SelectboxSerde(opt, index)
|
329
328
|
|
330
329
|
widget_state = register_widget(
|
331
|
-
|
332
|
-
selectbox_proto,
|
330
|
+
selectbox_proto.id,
|
333
331
|
on_change_handler=on_change,
|
334
332
|
args=args,
|
335
333
|
kwargs=kwargs,
|
336
334
|
deserializer=serde.deserialize,
|
337
335
|
serializer=serde.serialize,
|
338
336
|
ctx=ctx,
|
337
|
+
value_type="int_value",
|
339
338
|
)
|
340
339
|
widget_state = maybe_coerce_enum(widget_state, options, opt)
|
341
340
|
|
@@ -423,8 +423,7 @@ class SliderMixin:
|
|
423
423
|
key : str or int
|
424
424
|
An optional string or integer to use as the unique key for the widget.
|
425
425
|
If this is omitted, a key will be generated for the widget
|
426
|
-
based on its content.
|
427
|
-
not share the same key.
|
426
|
+
based on its content. No two widgets may have the same key.
|
428
427
|
|
429
428
|
help : str
|
430
429
|
An optional tooltip that gets displayed next to the slider.
|
@@ -822,14 +821,14 @@ class SliderMixin:
|
|
822
821
|
serde = SliderSerde(value, data_type, single_value, orig_tz)
|
823
822
|
|
824
823
|
widget_state = register_widget(
|
825
|
-
|
826
|
-
slider_proto,
|
824
|
+
slider_proto.id,
|
827
825
|
on_change_handler=on_change,
|
828
826
|
args=args,
|
829
827
|
kwargs=kwargs,
|
830
828
|
deserializer=serde.deserialize,
|
831
829
|
serializer=serde.serialize,
|
832
830
|
ctx=ctx,
|
831
|
+
value_type="double_array_value",
|
833
832
|
)
|
834
833
|
|
835
834
|
if widget_state.value_changed:
|
@@ -168,8 +168,7 @@ class TextWidgetsMixin:
|
|
168
168
|
key : str or int
|
169
169
|
An optional string or integer to use as the unique key for the widget.
|
170
170
|
If this is omitted, a key will be generated for the widget
|
171
|
-
based on its content.
|
172
|
-
not share the same key.
|
171
|
+
based on its content. No two widgets may have the same key.
|
173
172
|
|
174
173
|
type : "default" or "password"
|
175
174
|
The type of the text input. This can be either "default" (for
|
@@ -331,14 +330,14 @@ class TextWidgetsMixin:
|
|
331
330
|
serde = TextInputSerde(value)
|
332
331
|
|
333
332
|
widget_state = register_widget(
|
334
|
-
|
335
|
-
text_input_proto,
|
333
|
+
text_input_proto.id,
|
336
334
|
on_change_handler=on_change,
|
337
335
|
args=args,
|
338
336
|
kwargs=kwargs,
|
339
337
|
deserializer=serde.deserialize,
|
340
338
|
serializer=serde.serialize,
|
341
339
|
ctx=ctx,
|
340
|
+
value_type="string_value",
|
342
341
|
)
|
343
342
|
|
344
343
|
if widget_state.value_changed:
|
@@ -445,8 +444,7 @@ class TextWidgetsMixin:
|
|
445
444
|
key : str or int
|
446
445
|
An optional string or integer to use as the unique key for the widget.
|
447
446
|
If this is omitted, a key will be generated for the widget
|
448
|
-
based on its content.
|
449
|
-
not share the same key.
|
447
|
+
based on its content. No two widgets may have the same key.
|
450
448
|
|
451
449
|
help : str
|
452
450
|
An optional tooltip that gets displayed next to the textarea.
|
@@ -586,14 +584,14 @@ class TextWidgetsMixin:
|
|
586
584
|
|
587
585
|
serde = TextAreaSerde(value)
|
588
586
|
widget_state = register_widget(
|
589
|
-
|
590
|
-
text_area_proto,
|
587
|
+
text_area_proto.id,
|
591
588
|
on_change_handler=on_change,
|
592
589
|
args=args,
|
593
590
|
kwargs=kwargs,
|
594
591
|
deserializer=serde.deserialize,
|
595
592
|
serializer=serde.serialize,
|
596
593
|
ctx=ctx,
|
594
|
+
value_type="string_value",
|
597
595
|
)
|
598
596
|
|
599
597
|
if widget_state.value_changed:
|
@@ -339,8 +339,7 @@ class TimeWidgetsMixin:
|
|
339
339
|
key : str or int
|
340
340
|
An optional string or integer to use as the unique key for the widget.
|
341
341
|
If this is omitted, a key will be generated for the widget
|
342
|
-
based on its content.
|
343
|
-
not share the same key.
|
342
|
+
based on its content. No two widgets may have the same key.
|
344
343
|
|
345
344
|
help : str
|
346
345
|
An optional tooltip that gets displayed next to the input.
|
@@ -496,14 +495,14 @@ class TimeWidgetsMixin:
|
|
496
495
|
|
497
496
|
serde = TimeInputSerde(parsed_time)
|
498
497
|
widget_state = register_widget(
|
499
|
-
|
500
|
-
time_input_proto,
|
498
|
+
time_input_proto.id,
|
501
499
|
on_change_handler=on_change,
|
502
500
|
args=args,
|
503
501
|
kwargs=kwargs,
|
504
502
|
deserializer=serde.deserialize,
|
505
503
|
serializer=serde.serialize,
|
506
504
|
ctx=ctx,
|
505
|
+
value_type="string_value",
|
507
506
|
)
|
508
507
|
|
509
508
|
if widget_state.value_changed:
|
@@ -576,8 +575,7 @@ class TimeWidgetsMixin:
|
|
576
575
|
key : str or int
|
577
576
|
An optional string or integer to use as the unique key for the widget.
|
578
577
|
If this is omitted, a key will be generated for the widget
|
579
|
-
based on its content.
|
580
|
-
not share the same key.
|
578
|
+
based on its content. No two widgets may have the same key.
|
581
579
|
|
582
580
|
help : str
|
583
581
|
An optional tooltip that gets displayed next to the input.
|
@@ -797,14 +795,14 @@ class TimeWidgetsMixin:
|
|
797
795
|
serde = DateInputSerde(parsed_values)
|
798
796
|
|
799
797
|
widget_state = register_widget(
|
800
|
-
|
801
|
-
date_input_proto,
|
798
|
+
date_input_proto.id,
|
802
799
|
on_change_handler=on_change,
|
803
800
|
args=args,
|
804
801
|
kwargs=kwargs,
|
805
802
|
deserializer=serde.deserialize,
|
806
803
|
serializer=serde.serialize,
|
807
804
|
ctx=ctx,
|
805
|
+
value_type="string_array_value",
|
808
806
|
)
|
809
807
|
|
810
808
|
if widget_state.value_changed:
|
streamlit/navigation/page.py
CHANGED
@@ -55,21 +55,21 @@ def Page(
|
|
55
55
|
Parameters
|
56
56
|
----------
|
57
57
|
|
58
|
-
page: str, Path, or callable
|
58
|
+
page : str, Path, or callable
|
59
59
|
The page source as a ``Callable`` or path to a Python file. If the page
|
60
60
|
source is defined by a Python file, the path can be a string or
|
61
61
|
``pathlib.Path`` object, but must be declared relative to the
|
62
62
|
entrypoint file. If the page source is defined by a ``Callable``, the
|
63
63
|
``Callable`` can't accept arguments.
|
64
64
|
|
65
|
-
title: str or None
|
65
|
+
title : str or None
|
66
66
|
The title of the page. If this is ``None`` (default), the page title
|
67
67
|
(in the browser tab) and label (in the navigation menu) will be
|
68
68
|
inferred from the filename or callable name in ``page``. For more
|
69
69
|
information, see `Overview of multipage apps
|
70
70
|
<https://docs.streamlit.io/st.page.automatic-page-labels>`_.
|
71
71
|
|
72
|
-
icon: str or None
|
72
|
+
icon : str or None
|
73
73
|
An optional emoji or icon to display next to the page title and label.
|
74
74
|
If ``icon`` is ``None`` (default), no icon is displayed next to the
|
75
75
|
page label in the navigation menu, and a Streamlit icon is displayed
|
@@ -88,7 +88,7 @@ def Page(
|
|
88
88
|
<https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
|
89
89
|
font library.
|
90
90
|
|
91
|
-
url_path: str or None
|
91
|
+
url_path : str or None
|
92
92
|
The page's URL pathname, which is the path relative to the app's root
|
93
93
|
URL. If this is ``None`` (default), the URL pathname will be inferred
|
94
94
|
from the filename or callable name in ``page``. For more information,
|
@@ -97,8 +97,10 @@ def Page(
|
|
97
97
|
|
98
98
|
The default page will have a pathname of ``""``, indicating the root
|
99
99
|
URL of the app. If you set ``default=True``, ``url_path`` is ignored.
|
100
|
+
``url_path`` can't include forward slashes; paths can't include
|
101
|
+
subdirectories.
|
100
102
|
|
101
|
-
default: bool
|
103
|
+
default : bool
|
102
104
|
Whether this page is the default page to be shown when the app is
|
103
105
|
loaded. If ``default`` is ``False`` (default), the page will have a
|
104
106
|
nonempty URL pathname. However, if no default page is passed to
|
@@ -26,7 +26,6 @@ from typing import (
|
|
26
26
|
Literal,
|
27
27
|
Tuple,
|
28
28
|
TypeVar,
|
29
|
-
Union,
|
30
29
|
cast,
|
31
30
|
get_args,
|
32
31
|
)
|
@@ -37,56 +36,6 @@ from streamlit import util
|
|
37
36
|
from streamlit.errors import (
|
38
37
|
StreamlitAPIException,
|
39
38
|
)
|
40
|
-
from streamlit.proto.Arrow_pb2 import Arrow
|
41
|
-
from streamlit.proto.ArrowVegaLiteChart_pb2 import ArrowVegaLiteChart
|
42
|
-
from streamlit.proto.AudioInput_pb2 import AudioInput
|
43
|
-
from streamlit.proto.Button_pb2 import Button
|
44
|
-
from streamlit.proto.ButtonGroup_pb2 import ButtonGroup
|
45
|
-
from streamlit.proto.CameraInput_pb2 import CameraInput
|
46
|
-
from streamlit.proto.ChatInput_pb2 import ChatInput
|
47
|
-
from streamlit.proto.Checkbox_pb2 import Checkbox
|
48
|
-
from streamlit.proto.ColorPicker_pb2 import ColorPicker
|
49
|
-
from streamlit.proto.Components_pb2 import ComponentInstance
|
50
|
-
from streamlit.proto.DateInput_pb2 import DateInput
|
51
|
-
from streamlit.proto.DeckGlJsonChart_pb2 import DeckGlJsonChart
|
52
|
-
from streamlit.proto.DownloadButton_pb2 import DownloadButton
|
53
|
-
from streamlit.proto.FileUploader_pb2 import FileUploader
|
54
|
-
from streamlit.proto.MultiSelect_pb2 import MultiSelect
|
55
|
-
from streamlit.proto.NumberInput_pb2 import NumberInput
|
56
|
-
from streamlit.proto.PlotlyChart_pb2 import PlotlyChart
|
57
|
-
from streamlit.proto.Radio_pb2 import Radio
|
58
|
-
from streamlit.proto.Selectbox_pb2 import Selectbox
|
59
|
-
from streamlit.proto.Slider_pb2 import Slider
|
60
|
-
from streamlit.proto.TextArea_pb2 import TextArea
|
61
|
-
from streamlit.proto.TextInput_pb2 import TextInput
|
62
|
-
from streamlit.proto.TimeInput_pb2 import TimeInput
|
63
|
-
|
64
|
-
# Protobuf types for all widgets.
|
65
|
-
WidgetProto: TypeAlias = Union[
|
66
|
-
Arrow,
|
67
|
-
ArrowVegaLiteChart,
|
68
|
-
AudioInput,
|
69
|
-
Button,
|
70
|
-
ButtonGroup,
|
71
|
-
CameraInput,
|
72
|
-
ChatInput,
|
73
|
-
Checkbox,
|
74
|
-
ColorPicker,
|
75
|
-
ComponentInstance,
|
76
|
-
DateInput,
|
77
|
-
DeckGlJsonChart,
|
78
|
-
DownloadButton,
|
79
|
-
FileUploader,
|
80
|
-
MultiSelect,
|
81
|
-
NumberInput,
|
82
|
-
PlotlyChart,
|
83
|
-
Radio,
|
84
|
-
Selectbox,
|
85
|
-
Slider,
|
86
|
-
TextArea,
|
87
|
-
TextInput,
|
88
|
-
TimeInput,
|
89
|
-
]
|
90
39
|
|
91
40
|
GENERATED_ELEMENT_ID_PREFIX: Final = "$$ID"
|
92
41
|
TESTING_KEY = "$$STREAMLIT_INTERNAL_KEY_TESTING"
|
@@ -14,10 +14,7 @@
|
|
14
14
|
|
15
15
|
from __future__ import annotations
|
16
16
|
|
17
|
-
from
|
18
|
-
from typing import TYPE_CHECKING, Final, Mapping
|
19
|
-
|
20
|
-
from typing_extensions import TypeAlias
|
17
|
+
from typing import TYPE_CHECKING
|
21
18
|
|
22
19
|
from streamlit.runtime.state.common import (
|
23
20
|
RegisterWidgetResult,
|
@@ -28,7 +25,6 @@ from streamlit.runtime.state.common import (
|
|
28
25
|
WidgetDeserializer,
|
29
26
|
WidgetKwargs,
|
30
27
|
WidgetMetadata,
|
31
|
-
WidgetProto,
|
32
28
|
WidgetSerializer,
|
33
29
|
user_key_from_element_id,
|
34
30
|
)
|
@@ -37,65 +33,24 @@ if TYPE_CHECKING:
|
|
37
33
|
from streamlit.runtime.scriptrunner import ScriptRunContext
|
38
34
|
|
39
35
|
|
40
|
-
ElementType: TypeAlias = str
|
41
|
-
|
42
|
-
# NOTE: We use this table to start with a best-effort guess for the value_type
|
43
|
-
# of each widget. Once we actually receive a proto for a widget from the
|
44
|
-
# frontend, the guess is updated to be the correct type. Unfortunately, we're
|
45
|
-
# not able to always rely on the proto as the type may be needed earlier.
|
46
|
-
# Thankfully, in these cases (when value_type == "trigger_value"), the static
|
47
|
-
# table here being slightly inaccurate should never pose a problem.
|
48
|
-
ELEMENT_TYPE_TO_VALUE_TYPE: Final[Mapping[ElementType, ValueFieldName]] = (
|
49
|
-
MappingProxyType(
|
50
|
-
{
|
51
|
-
"audio_input": "file_uploader_state_value",
|
52
|
-
"button": "trigger_value",
|
53
|
-
"button_group": "int_array_value",
|
54
|
-
"camera_input": "file_uploader_state_value",
|
55
|
-
"chat_input": "string_trigger_value",
|
56
|
-
"checkbox": "bool_value",
|
57
|
-
"color_picker": "string_value",
|
58
|
-
"component_instance": "json_value",
|
59
|
-
"data_editor": "string_value",
|
60
|
-
"dataframe": "string_value",
|
61
|
-
"date_input": "string_array_value",
|
62
|
-
"deck_gl_json_chart": "string_value",
|
63
|
-
"download_button": "trigger_value",
|
64
|
-
"file_uploader": "file_uploader_state_value",
|
65
|
-
"multiselect": "int_array_value",
|
66
|
-
"number_input": "double_value",
|
67
|
-
"plotly_chart": "string_value",
|
68
|
-
"radio": "int_value",
|
69
|
-
"selectbox": "int_value",
|
70
|
-
"slider": "double_array_value",
|
71
|
-
"text_area": "string_value",
|
72
|
-
"text_input": "string_value",
|
73
|
-
"time_input": "string_value",
|
74
|
-
"vega_lite_chart": "string_value",
|
75
|
-
}
|
76
|
-
)
|
77
|
-
)
|
78
|
-
|
79
|
-
|
80
36
|
def register_widget(
|
81
|
-
|
82
|
-
|
37
|
+
element_id: str,
|
38
|
+
*,
|
83
39
|
deserializer: WidgetDeserializer[T],
|
84
40
|
serializer: WidgetSerializer[T],
|
85
41
|
ctx: ScriptRunContext | None,
|
86
42
|
on_change_handler: WidgetCallback | None = None,
|
87
43
|
args: WidgetArgs | None = None,
|
88
44
|
kwargs: WidgetKwargs | None = None,
|
45
|
+
value_type: ValueFieldName,
|
89
46
|
) -> RegisterWidgetResult[T]:
|
90
47
|
"""Register a widget with Streamlit, and return its current value.
|
91
48
|
NOTE: This function should be called after the proto has been filled.
|
92
49
|
|
93
50
|
Parameters
|
94
51
|
----------
|
95
|
-
|
96
|
-
The
|
97
|
-
element_proto : WidgetProto
|
98
|
-
The proto of the specified type (e.g. Button/Multiselect/Slider proto)
|
52
|
+
element_id : str
|
53
|
+
The id of the element. Must be unique.
|
99
54
|
deserializer : WidgetDeserializer[T]
|
100
55
|
Called to convert a widget's protobuf value to the value returned by
|
101
56
|
its st.<widget_name> function.
|
@@ -109,6 +64,15 @@ def register_widget(
|
|
109
64
|
args to pass to on_change_handler when invoked
|
110
65
|
kwargs : WidgetKwargs or None
|
111
66
|
kwargs to pass to on_change_handler when invoked
|
67
|
+
value_type: ValueType
|
68
|
+
The value_type the widget is going to use.
|
69
|
+
We use this information to start with a best-effort guess for the value_type
|
70
|
+
of each widget. Once we actually receive a proto for a widget from the
|
71
|
+
frontend, the guess is updated to be the correct type. Unfortunately, we're
|
72
|
+
not able to always rely on the proto as the type may be needed earlier.
|
73
|
+
Thankfully, in these cases (when value_type == "trigger_value"), the static
|
74
|
+
table here being slightly inaccurate should never pose a problem.
|
75
|
+
|
112
76
|
|
113
77
|
Returns
|
114
78
|
-------
|
@@ -136,10 +100,10 @@ def register_widget(
|
|
136
100
|
"""
|
137
101
|
# Create the widget's updated metadata, and register it with session_state.
|
138
102
|
metadata = WidgetMetadata(
|
139
|
-
|
103
|
+
element_id,
|
140
104
|
deserializer,
|
141
105
|
serializer,
|
142
|
-
value_type=
|
106
|
+
value_type=value_type,
|
143
107
|
callback=on_change_handler,
|
144
108
|
callback_args=args,
|
145
109
|
callback_kwargs=kwargs,
|
@@ -1,14 +1,14 @@
|
|
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.db770de6.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.e0a8db2a.chunk.js": "./static/js/9077.e0a8db2a.chunk.js",
|
8
8
|
"static/js/3391.663b9d47.chunk.js": "./static/js/3391.663b9d47.chunk.js",
|
9
9
|
"static/css/9943.93909c7e.chunk.css": "./static/css/9943.93909c7e.chunk.css",
|
10
10
|
"static/js/9943.6af344bb.chunk.js": "./static/js/9943.6af344bb.chunk.js",
|
11
|
-
"static/css/5711.
|
11
|
+
"static/css/5711.a29b5d98.chunk.css": "./static/css/5711.a29b5d98.chunk.css",
|
12
12
|
"static/js/5711.229cb7d0.chunk.js": "./static/js/5711.229cb7d0.chunk.js",
|
13
13
|
"static/js/3861.0dedcd19.chunk.js": "./static/js/3861.0dedcd19.chunk.js",
|
14
14
|
"static/js/8642.58110d15.chunk.js": "./static/js/8642.58110d15.chunk.js",
|
@@ -156,6 +156,6 @@
|
|
156
156
|
},
|
157
157
|
"entrypoints": [
|
158
158
|
"static/css/main.5513bd04.css",
|
159
|
-
"static/js/main.
|
159
|
+
"static/js/main.db770de6.js"
|
160
160
|
]
|
161
161
|
}
|
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.db770de6.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>
|
@@ -1 +1 @@
|
|
1
|
-
.vega-embed{box-sizing:border-box;display:inline-block;position:relative}.vega-embed.has-actions{padding-right:38px}.vega-embed details:not([open])>:not(summary){display:none!important}.vega-embed summary{background:#fff;border:1px solid #aaa;border-radius:999px;box-shadow:1px 1px 3px rgba(0,0,0,.1);color:#1b1e23;cursor:pointer;line-height:0px;list-style:none;opacity:.2;padding:6px;position:absolute;right:0;top:0;transition:opacity .4s ease-in;z-index:1000}.vega-embed summary::-webkit-details-marker{display:none}.vega-embed summary:active{box-shadow:inset 0 0 0 1px #aaa}.vega-embed summary svg{height:14px;width:14px}.vega-embed details[open] summary{opacity:.7}.vega-embed:focus-within summary,.vega-embed:hover summary{opacity:1!important;transition:opacity .2s ease}.vega-embed .vega-actions{animation-duration:.15s;animation-name:scale-in;animation-timing-function:cubic-bezier(.2,0,.13,1.5);background:#fff;border:1px solid #d9d9d9;border-radius:4px;box-shadow:0 2px 8px 0 rgba(0,0,0,.2);display:flex;flex-direction:column;padding-bottom:8px;padding-top:8px;position:absolute;right:-9px;text-align:left;top:35px;z-index:1001}.vega-embed .vega-actions a{color:#434a56;font-family:sans-serif;font-size:14px;font-weight:600;padding:8px 16px;text-decoration:none;white-space:nowrap}.vega-embed .vega-actions a:focus,.vega-embed .vega-actions a:hover{background-color:#f7f7f9;color:#000}.vega-embed .vega-actions:after,.vega-embed .vega-actions:before{content:"";display:inline-block;position:absolute}.vega-embed .vega-actions:before{border:8px solid transparent;border-bottom-color:#d9d9d9;left:auto;right:14px;top:-16px}.vega-embed .vega-actions:after{border:7px solid transparent;border-bottom-color:#fff;left:auto;right:15px;top:-14px}.vega-embed .chart-wrapper.fit-x{width:100%}.vega-embed .chart-wrapper.fit-y{height:100%}.vega-embed-wrapper{max-width:100%;overflow:auto;padding-right:14px}@keyframes scale-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}#vg-tooltip-element{border-radius:3px;box-shadow:2px 2px 4px rgba(0,0,0,.1);font-family:sans-serif;font-size:11px;padding:8px;position:fixed;visibility:hidden;z-index:
|
1
|
+
.vega-embed{box-sizing:border-box;display:inline-block;position:relative}.vega-embed.has-actions{padding-right:38px}.vega-embed details:not([open])>:not(summary){display:none!important}.vega-embed summary{background:#fff;border:1px solid #aaa;border-radius:999px;box-shadow:1px 1px 3px rgba(0,0,0,.1);color:#1b1e23;cursor:pointer;line-height:0px;list-style:none;opacity:.2;padding:6px;position:absolute;right:0;top:0;transition:opacity .4s ease-in;z-index:1000}.vega-embed summary::-webkit-details-marker{display:none}.vega-embed summary:active{box-shadow:inset 0 0 0 1px #aaa}.vega-embed summary svg{height:14px;width:14px}.vega-embed details[open] summary{opacity:.7}.vega-embed:focus-within summary,.vega-embed:hover summary{opacity:1!important;transition:opacity .2s ease}.vega-embed .vega-actions{animation-duration:.15s;animation-name:scale-in;animation-timing-function:cubic-bezier(.2,0,.13,1.5);background:#fff;border:1px solid #d9d9d9;border-radius:4px;box-shadow:0 2px 8px 0 rgba(0,0,0,.2);display:flex;flex-direction:column;padding-bottom:8px;padding-top:8px;position:absolute;right:-9px;text-align:left;top:35px;z-index:1001}.vega-embed .vega-actions a{color:#434a56;font-family:sans-serif;font-size:14px;font-weight:600;padding:8px 16px;text-decoration:none;white-space:nowrap}.vega-embed .vega-actions a:focus,.vega-embed .vega-actions a:hover{background-color:#f7f7f9;color:#000}.vega-embed .vega-actions:after,.vega-embed .vega-actions:before{content:"";display:inline-block;position:absolute}.vega-embed .vega-actions:before{border:8px solid transparent;border-bottom-color:#d9d9d9;left:auto;right:14px;top:-16px}.vega-embed .vega-actions:after{border:7px solid transparent;border-bottom-color:#fff;left:auto;right:15px;top:-14px}.vega-embed .chart-wrapper.fit-x{width:100%}.vega-embed .chart-wrapper.fit-y{height:100%}.vega-embed-wrapper{max-width:100%;overflow:auto;padding-right:14px}@keyframes scale-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}#vg-tooltip-element{border-radius:3px;box-shadow:2px 2px 4px rgba(0,0,0,.1);font-family:sans-serif;font-size:11px;padding:8px;position:fixed;visibility:hidden;z-index:1000050}#vg-tooltip-element.visible{visibility:visible}#vg-tooltip-element h2{font-size:13px;margin-bottom:10px;margin-top:0}#vg-tooltip-element table{border-spacing:0}#vg-tooltip-element table tr{border:none}#vg-tooltip-element table tr td{overflow:hidden;padding-bottom:2px;padding-top:2px;text-overflow:ellipsis}#vg-tooltip-element table tr td.key{color:grey;max-width:150px;padding-right:4px;text-align:right}#vg-tooltip-element table tr td.value{display:block;max-height:7em;max-width:300px;text-align:left}
|