streamlit-nightly 1.35.1.dev20240601__py2.py3-none-any.whl → 1.35.1.dev20240604__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. streamlit/commands/navigation.py +8 -5
  2. streamlit/elements/deck_gl_json_chart.py +1 -1
  3. streamlit/elements/form.py +8 -3
  4. streamlit/elements/layouts.py +11 -3
  5. streamlit/elements/lib/policies.py +28 -2
  6. streamlit/elements/map.py +6 -6
  7. streamlit/elements/plotly_chart.py +3 -0
  8. streamlit/elements/pyplot.py +6 -5
  9. streamlit/elements/vega_charts.py +26 -16
  10. streamlit/elements/widgets/button.py +28 -11
  11. streamlit/elements/widgets/camera_input.py +2 -0
  12. streamlit/elements/widgets/chat.py +7 -6
  13. streamlit/elements/widgets/checkbox.py +2 -0
  14. streamlit/elements/widgets/color_picker.py +2 -0
  15. streamlit/elements/widgets/data_editor.py +2 -2
  16. streamlit/elements/widgets/file_uploader.py +2 -0
  17. streamlit/elements/widgets/multiselect.py +2 -0
  18. streamlit/elements/widgets/number_input.py +2 -0
  19. streamlit/elements/widgets/radio.py +2 -0
  20. streamlit/elements/widgets/selectbox.py +2 -0
  21. streamlit/elements/widgets/slider.py +2 -0
  22. streamlit/elements/widgets/text_widgets.py +4 -0
  23. streamlit/elements/widgets/time_widgets.py +4 -0
  24. streamlit/elements/write.py +3 -0
  25. streamlit/hello/Hello.py +22 -28
  26. streamlit/hello/streamlit_app.py +37 -0
  27. streamlit/proto/Alert_pb2.py +12 -11
  28. streamlit/proto/Alert_pb2.pyi +4 -2
  29. streamlit/proto/AppPage_pb2.py +10 -9
  30. streamlit/proto/AppPage_pb2.pyi +4 -7
  31. streamlit/proto/ArrowNamedDataSet_pb2.py +10 -9
  32. streamlit/proto/ArrowNamedDataSet_pb2.pyi +6 -8
  33. streamlit/proto/ArrowVegaLiteChart_pb2.py +10 -9
  34. streamlit/proto/ArrowVegaLiteChart_pb2.pyi +16 -16
  35. streamlit/proto/Arrow_pb2.py +16 -15
  36. streamlit/proto/Arrow_pb2.pyi +14 -8
  37. streamlit/proto/Audio_pb2.py +10 -9
  38. streamlit/proto/Audio_pb2.pyi +4 -7
  39. streamlit/proto/AutoRerun_pb2.py +9 -8
  40. streamlit/proto/AutoRerun_pb2.pyi +4 -7
  41. streamlit/proto/BackMsg_pb2.py +10 -9
  42. streamlit/proto/BackMsg_pb2.pyi +18 -19
  43. streamlit/proto/Balloons_pb2.py +10 -9
  44. streamlit/proto/Balloons_pb2.pyi +4 -7
  45. streamlit/proto/Block_pb2.py +34 -33
  46. streamlit/proto/Block_pb2.pyi +31 -19
  47. streamlit/proto/BokehChart_pb2.py +10 -9
  48. streamlit/proto/BokehChart_pb2.pyi +4 -7
  49. streamlit/proto/Button_pb2.py +10 -9
  50. streamlit/proto/Button_pb2.pyi +4 -7
  51. streamlit/proto/CameraInput_pb2.py +10 -9
  52. streamlit/proto/CameraInput_pb2.pyi +5 -8
  53. streamlit/proto/ChatInput_pb2.py +12 -11
  54. streamlit/proto/ChatInput_pb2.pyi +4 -2
  55. streamlit/proto/Checkbox_pb2.py +12 -11
  56. streamlit/proto/Checkbox_pb2.pyi +6 -4
  57. streamlit/proto/ClientState_pb2.py +10 -9
  58. streamlit/proto/ClientState_pb2.pyi +7 -10
  59. streamlit/proto/Code_pb2.py +10 -9
  60. streamlit/proto/Code_pb2.pyi +4 -7
  61. streamlit/proto/ColorPicker_pb2.py +10 -9
  62. streamlit/proto/ColorPicker_pb2.pyi +5 -8
  63. streamlit/proto/Common_pb2.py +32 -31
  64. streamlit/proto/Common_pb2.pyi +32 -23
  65. streamlit/proto/Components_pb2.py +18 -17
  66. streamlit/proto/Components_pb2.pyi +25 -23
  67. streamlit/proto/DataFrame_pb2.py +38 -37
  68. streamlit/proto/DataFrame_pb2.pyi +52 -33
  69. streamlit/proto/DateInput_pb2.py +10 -9
  70. streamlit/proto/DateInput_pb2.pyi +10 -13
  71. streamlit/proto/DeckGlJsonChart_pb2.py +10 -9
  72. streamlit/proto/DeckGlJsonChart_pb2.pyi +4 -7
  73. streamlit/proto/Delta_pb2.py +10 -9
  74. streamlit/proto/Delta_pb2.pyi +10 -10
  75. streamlit/proto/DocString_pb2.py +12 -11
  76. streamlit/proto/DocString_pb2.pyi +9 -10
  77. streamlit/proto/DownloadButton_pb2.py +10 -9
  78. streamlit/proto/DownloadButton_pb2.pyi +4 -7
  79. streamlit/proto/Element_pb2.py +10 -9
  80. streamlit/proto/Element_pb2.pyi +10 -9
  81. streamlit/proto/Empty_pb2.py +10 -9
  82. streamlit/proto/Empty_pb2.pyi +3 -0
  83. streamlit/proto/Exception_pb2.py +10 -9
  84. streamlit/proto/Exception_pb2.pyi +8 -10
  85. streamlit/proto/Favicon_pb2.py +10 -9
  86. streamlit/proto/Favicon_pb2.pyi +4 -7
  87. streamlit/proto/FileUploader_pb2.py +10 -9
  88. streamlit/proto/FileUploader_pb2.pyi +9 -11
  89. streamlit/proto/ForwardMsg_pb2.py +16 -15
  90. streamlit/proto/ForwardMsg_pb2.pyi +36 -24
  91. streamlit/proto/GitInfo_pb2.py +12 -11
  92. streamlit/proto/GitInfo_pb2.pyi +5 -3
  93. streamlit/proto/GraphVizChart_pb2.py +10 -9
  94. streamlit/proto/GraphVizChart_pb2.pyi +4 -7
  95. streamlit/proto/Heading_pb2.py +10 -9
  96. streamlit/proto/Heading_pb2.pyi +4 -7
  97. streamlit/proto/Html_pb2.py +10 -9
  98. streamlit/proto/Html_pb2.pyi +4 -7
  99. streamlit/proto/IFrame_pb2.py +10 -9
  100. streamlit/proto/IFrame_pb2.pyi +6 -9
  101. streamlit/proto/Image_pb2.py +12 -11
  102. streamlit/proto/Image_pb2.pyi +8 -10
  103. streamlit/proto/Json_pb2.py +10 -9
  104. streamlit/proto/Json_pb2.pyi +4 -7
  105. streamlit/proto/LabelVisibilityMessage_pb2.py +12 -11
  106. streamlit/proto/LabelVisibilityMessage_pb2.pyi +4 -2
  107. streamlit/proto/LinkButton_pb2.py +10 -9
  108. streamlit/proto/LinkButton_pb2.pyi +4 -7
  109. streamlit/proto/Logo_pb2.py +10 -9
  110. streamlit/proto/Logo_pb2.pyi +4 -7
  111. streamlit/proto/Markdown_pb2.py +12 -11
  112. streamlit/proto/Markdown_pb2.pyi +4 -2
  113. streamlit/proto/Metric_pb2.py +14 -13
  114. streamlit/proto/Metric_pb2.pyi +6 -4
  115. streamlit/proto/MultiSelect_pb2.py +10 -9
  116. streamlit/proto/MultiSelect_pb2.pyi +11 -14
  117. streamlit/proto/NamedDataSet_pb2.py +10 -9
  118. streamlit/proto/NamedDataSet_pb2.pyi +6 -8
  119. streamlit/proto/Navigation_pb2.py +12 -11
  120. streamlit/proto/Navigation_pb2.pyi +7 -5
  121. streamlit/proto/NewSession_pb2.py +32 -31
  122. streamlit/proto/NewSession_pb2.pyi +52 -36
  123. streamlit/proto/NumberInput_pb2.py +12 -11
  124. streamlit/proto/NumberInput_pb2.pyi +8 -6
  125. streamlit/proto/PageConfig_pb2.py +16 -15
  126. streamlit/proto/PageConfig_pb2.pyi +8 -5
  127. streamlit/proto/PageInfo_pb2.py +10 -9
  128. streamlit/proto/PageInfo_pb2.pyi +4 -7
  129. streamlit/proto/PageLink_pb2.py +10 -9
  130. streamlit/proto/PageLink_pb2.pyi +6 -9
  131. streamlit/proto/PageNotFound_pb2.py +10 -9
  132. streamlit/proto/PageNotFound_pb2.pyi +4 -7
  133. streamlit/proto/PageProfile_pb2.py +14 -13
  134. streamlit/proto/PageProfile_pb2.pyi +15 -16
  135. streamlit/proto/PagesChanged_pb2.py +10 -9
  136. streamlit/proto/PagesChanged_pb2.pyi +4 -7
  137. streamlit/proto/ParentMessage_pb2.py +10 -9
  138. streamlit/proto/ParentMessage_pb2.pyi +4 -7
  139. streamlit/proto/PlotlyChart_pb2.py +14 -13
  140. streamlit/proto/PlotlyChart_pb2.pyi +13 -8
  141. streamlit/proto/Progress_pb2.py +10 -9
  142. streamlit/proto/Progress_pb2.pyi +4 -7
  143. streamlit/proto/Radio_pb2.py +10 -9
  144. streamlit/proto/Radio_pb2.pyi +8 -12
  145. streamlit/proto/RootContainer_pb2.py +10 -9
  146. streamlit/proto/RootContainer_pb2.pyi +2 -1
  147. streamlit/proto/Selectbox_pb2.py +10 -9
  148. streamlit/proto/Selectbox_pb2.pyi +9 -13
  149. streamlit/proto/SessionEvent_pb2.py +10 -9
  150. streamlit/proto/SessionEvent_pb2.pyi +7 -9
  151. streamlit/proto/SessionStatus_pb2.py +10 -9
  152. streamlit/proto/SessionStatus_pb2.pyi +4 -7
  153. streamlit/proto/Skeleton_pb2.py +12 -11
  154. streamlit/proto/Skeleton_pb2.pyi +6 -4
  155. streamlit/proto/Slider_pb2.py +14 -13
  156. streamlit/proto/Slider_pb2.pyi +12 -10
  157. streamlit/proto/Snow_pb2.py +10 -9
  158. streamlit/proto/Snow_pb2.pyi +4 -7
  159. streamlit/proto/Spinner_pb2.py +10 -9
  160. streamlit/proto/Spinner_pb2.pyi +4 -7
  161. streamlit/proto/TextArea_pb2.py +10 -9
  162. streamlit/proto/TextArea_pb2.pyi +6 -10
  163. streamlit/proto/TextInput_pb2.py +12 -11
  164. streamlit/proto/TextInput_pb2.pyi +7 -5
  165. streamlit/proto/Text_pb2.py +10 -9
  166. streamlit/proto/Text_pb2.pyi +4 -7
  167. streamlit/proto/TimeInput_pb2.py +10 -9
  168. streamlit/proto/TimeInput_pb2.pyi +7 -11
  169. streamlit/proto/Toast_pb2.py +10 -9
  170. streamlit/proto/Toast_pb2.pyi +4 -7
  171. streamlit/proto/VegaLiteChart_pb2.py +10 -9
  172. streamlit/proto/VegaLiteChart_pb2.pyi +9 -10
  173. streamlit/proto/Video_pb2.py +14 -13
  174. streamlit/proto/Video_pb2.pyi +10 -6
  175. streamlit/proto/WidgetStates_pb2.py +12 -11
  176. streamlit/proto/WidgetStates_pb2.pyi +11 -12
  177. streamlit/proto/openmetrics_data_model_pb2.py +42 -41
  178. streamlit/proto/openmetrics_data_model_pb2.pyi +64 -31
  179. streamlit/runtime/caching/cached_message_replay.py +14 -29
  180. streamlit/runtime/fragment.py +3 -0
  181. streamlit/runtime/scriptrunner/script_run_context.py +1 -0
  182. streamlit/runtime/secrets.py +14 -0
  183. streamlit/static/asset-manifest.json +19 -19
  184. streamlit/static/index.html +1 -1
  185. streamlit/static/static/js/{1074.73973756.chunk.js → 1074.a92bc15f.chunk.js} +1 -1
  186. streamlit/static/static/js/1307.36b77087.chunk.js +1 -0
  187. streamlit/static/static/js/1451.229b62c4.chunk.js +1 -0
  188. streamlit/static/static/js/2469.5a75ba8e.chunk.js +1 -0
  189. streamlit/static/static/js/3599.565b1eba.chunk.js +1 -0
  190. streamlit/static/static/js/{4477.1bd49702.chunk.js → 4477.87935ac8.chunk.js} +1 -1
  191. streamlit/static/static/js/4500.be0eb305.chunk.js +1 -0
  192. streamlit/static/static/js/4666.a9344a3a.chunk.js +1 -0
  193. streamlit/static/static/js/5441.87f335e6.chunk.js +1 -0
  194. streamlit/static/static/js/6013.f6083314.chunk.js +1 -0
  195. streamlit/static/static/js/{6718.802da17e.chunk.js → 6718.2e6586ef.chunk.js} +1 -1
  196. streamlit/static/static/js/7175.8f4014ec.chunk.js +1 -0
  197. streamlit/static/static/js/7602.a20a999b.chunk.js +1 -0
  198. streamlit/static/static/js/8148.1b2c085e.chunk.js +1 -0
  199. streamlit/static/static/js/8427.59805a7f.chunk.js +1 -0
  200. streamlit/static/static/js/{8492.0d93bd08.chunk.js → 8492.8ad745d1.chunk.js} +1 -1
  201. streamlit/static/static/js/8691.cb9c04cf.chunk.js +1 -0
  202. streamlit/static/static/js/main.ea823277.js +2 -0
  203. streamlit/type_util.py +7 -0
  204. streamlit/web/cli.py +2 -2
  205. streamlit/web/server/server.py +2 -2
  206. {streamlit_nightly-1.35.1.dev20240601.dist-info → streamlit_nightly-1.35.1.dev20240604.dist-info}/METADATA +5 -5
  207. {streamlit_nightly-1.35.1.dev20240601.dist-info → streamlit_nightly-1.35.1.dev20240604.dist-info}/RECORD +216 -215
  208. streamlit/static/static/js/1307.0f0cca93.chunk.js +0 -1
  209. streamlit/static/static/js/1451.3b0a3e31.chunk.js +0 -1
  210. streamlit/static/static/js/2469.09ea79bb.chunk.js +0 -1
  211. streamlit/static/static/js/4500.b6f348d1.chunk.js +0 -1
  212. streamlit/static/static/js/4666.c4b22a63.chunk.js +0 -1
  213. streamlit/static/static/js/5379.f08eddd1.chunk.js +0 -1
  214. streamlit/static/static/js/5441.1b94928f.chunk.js +0 -1
  215. streamlit/static/static/js/6013.4ba2d616.chunk.js +0 -1
  216. streamlit/static/static/js/7175.583ff733.chunk.js +0 -1
  217. streamlit/static/static/js/7602.e8abc06b.chunk.js +0 -1
  218. streamlit/static/static/js/8148.293984e0.chunk.js +0 -1
  219. streamlit/static/static/js/8427.bd0a7cf3.chunk.js +0 -1
  220. streamlit/static/static/js/8691.4211c305.chunk.js +0 -1
  221. streamlit/static/static/js/main.707da454.js +0 -2
  222. /streamlit/hello/{pages/0_Animation_Demo.py → Animation_Demo.py} +0 -0
  223. /streamlit/hello/{pages/3_DataFrame_Demo.py → Dataframe_Demo.py} +0 -0
  224. /streamlit/hello/{pages/2_Mapping_Demo.py → Mapping_Demo.py} +0 -0
  225. /streamlit/hello/{pages/1_Plotting_Demo.py → Plotting_Demo.py} +0 -0
  226. /streamlit/static/static/js/{main.707da454.js.LICENSE.txt → main.ea823277.js.LICENSE.txt} +0 -0
  227. {streamlit_nightly-1.35.1.dev20240601.data → streamlit_nightly-1.35.1.dev20240604.data}/scripts/streamlit.cmd +0 -0
  228. {streamlit_nightly-1.35.1.dev20240601.dist-info → streamlit_nightly-1.35.1.dev20240604.dist-info}/WHEEL +0 -0
  229. {streamlit_nightly-1.35.1.dev20240601.dist-info → streamlit_nightly-1.35.1.dev20240604.dist-info}/entry_points.txt +0 -0
  230. {streamlit_nightly-1.35.1.dev20240601.dist-info → streamlit_nightly-1.35.1.dev20240604.dist-info}/top_level.txt +0 -0
@@ -5,6 +5,7 @@ The OpenMetrics protobuf schema which defines the protobuf wire format.
5
5
  Ensure to interpret "required" as semantically required for a valid message.
6
6
  All string fields MUST be UTF-8 encoded strings.
7
7
  """
8
+
8
9
  import builtins
9
10
  import collections.abc
10
11
  import google.protobuf.descriptor
@@ -26,7 +27,7 @@ class _MetricType:
26
27
  ValueType = typing.NewType("ValueType", builtins.int)
27
28
  V: typing_extensions.TypeAlias = ValueType
28
29
 
29
- class _MetricTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MetricType.ValueType], builtins.type): # noqa: F821
30
+ class _MetricTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MetricType.ValueType], builtins.type):
30
31
  DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
31
32
  UNKNOWN: _MetricType.ValueType # 0
32
33
  """Unknown must use unknown MetricPoint values."""
@@ -66,6 +67,7 @@ SUMMARY: MetricType.ValueType # 7
66
67
  """Summary quantiles must use summary value MetricPoint values."""
67
68
  global___MetricType = MetricType
68
69
 
70
+ @typing.final
69
71
  class MetricSet(google.protobuf.message.Message):
70
72
  """The top-level container type that is encoded and sent over the wire."""
71
73
 
@@ -75,15 +77,17 @@ class MetricSet(google.protobuf.message.Message):
75
77
  @property
76
78
  def metric_families(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetricFamily]:
77
79
  """Each MetricFamily has one or more MetricPoints for a single Metric."""
80
+
78
81
  def __init__(
79
82
  self,
80
83
  *,
81
84
  metric_families: collections.abc.Iterable[global___MetricFamily] | None = ...,
82
85
  ) -> None: ...
83
- def ClearField(self, field_name: typing_extensions.Literal["metric_families", b"metric_families"]) -> None: ...
86
+ def ClearField(self, field_name: typing.Literal["metric_families", b"metric_families"]) -> None: ...
84
87
 
85
88
  global___MetricSet = MetricSet
86
89
 
90
+ @typing.final
87
91
  class MetricFamily(google.protobuf.message.Message):
88
92
  """One or more Metrics for a single MetricFamily, where each Metric
89
93
  has one or more MetricPoints.
@@ -107,6 +111,7 @@ class MetricFamily(google.protobuf.message.Message):
107
111
  @property
108
112
  def metrics(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Metric]:
109
113
  """Optional."""
114
+
110
115
  def __init__(
111
116
  self,
112
117
  *,
@@ -116,10 +121,11 @@ class MetricFamily(google.protobuf.message.Message):
116
121
  help: builtins.str = ...,
117
122
  metrics: collections.abc.Iterable[global___Metric] | None = ...,
118
123
  ) -> None: ...
119
- def ClearField(self, field_name: typing_extensions.Literal["help", b"help", "metrics", b"metrics", "name", b"name", "type", b"type", "unit", b"unit"]) -> None: ...
124
+ def ClearField(self, field_name: typing.Literal["help", b"help", "metrics", b"metrics", "name", b"name", "type", b"type", "unit", b"unit"]) -> None: ...
120
125
 
121
126
  global___MetricFamily = MetricFamily
122
127
 
128
+ @typing.final
123
129
  class Metric(google.protobuf.message.Message):
124
130
  """A single metric with a unique set of labels within a metric family."""
125
131
 
@@ -130,19 +136,22 @@ class Metric(google.protobuf.message.Message):
130
136
  @property
131
137
  def labels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Label]:
132
138
  """Optional."""
139
+
133
140
  @property
134
141
  def metric_points(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetricPoint]:
135
142
  """Optional."""
143
+
136
144
  def __init__(
137
145
  self,
138
146
  *,
139
147
  labels: collections.abc.Iterable[global___Label] | None = ...,
140
148
  metric_points: collections.abc.Iterable[global___MetricPoint] | None = ...,
141
149
  ) -> None: ...
142
- def ClearField(self, field_name: typing_extensions.Literal["labels", b"labels", "metric_points", b"metric_points"]) -> None: ...
150
+ def ClearField(self, field_name: typing.Literal["labels", b"labels", "metric_points", b"metric_points"]) -> None: ...
143
151
 
144
152
  global___Metric = Metric
145
153
 
154
+ @typing.final
146
155
  class Label(google.protobuf.message.Message):
147
156
  """A name-value pair. These are used in multiple places: identifying
148
157
  timeseries, value of INFO metrics, and exemplars in Histograms.
@@ -162,10 +171,11 @@ class Label(google.protobuf.message.Message):
162
171
  name: builtins.str = ...,
163
172
  value: builtins.str = ...,
164
173
  ) -> None: ...
165
- def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "value", b"value"]) -> None: ...
174
+ def ClearField(self, field_name: typing.Literal["name", b"name", "value", b"value"]) -> None: ...
166
175
 
167
176
  global___Label = Label
168
177
 
178
+ @typing.final
169
179
  class MetricPoint(google.protobuf.message.Message):
170
180
  """A MetricPoint in a Metric."""
171
181
 
@@ -196,6 +206,7 @@ class MetricPoint(google.protobuf.message.Message):
196
206
  @property
197
207
  def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
198
208
  """Optional."""
209
+
199
210
  def __init__(
200
211
  self,
201
212
  *,
@@ -208,12 +219,13 @@ class MetricPoint(google.protobuf.message.Message):
208
219
  summary_value: global___SummaryValue | None = ...,
209
220
  timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
210
221
  ) -> None: ...
211
- def HasField(self, field_name: typing_extensions.Literal["counter_value", b"counter_value", "gauge_value", b"gauge_value", "histogram_value", b"histogram_value", "info_value", b"info_value", "state_set_value", b"state_set_value", "summary_value", b"summary_value", "timestamp", b"timestamp", "unknown_value", b"unknown_value", "value", b"value"]) -> builtins.bool: ...
212
- def ClearField(self, field_name: typing_extensions.Literal["counter_value", b"counter_value", "gauge_value", b"gauge_value", "histogram_value", b"histogram_value", "info_value", b"info_value", "state_set_value", b"state_set_value", "summary_value", b"summary_value", "timestamp", b"timestamp", "unknown_value", b"unknown_value", "value", b"value"]) -> None: ...
213
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["unknown_value", "gauge_value", "counter_value", "histogram_value", "state_set_value", "info_value", "summary_value"] | None: ...
222
+ def HasField(self, field_name: typing.Literal["counter_value", b"counter_value", "gauge_value", b"gauge_value", "histogram_value", b"histogram_value", "info_value", b"info_value", "state_set_value", b"state_set_value", "summary_value", b"summary_value", "timestamp", b"timestamp", "unknown_value", b"unknown_value", "value", b"value"]) -> builtins.bool: ...
223
+ def ClearField(self, field_name: typing.Literal["counter_value", b"counter_value", "gauge_value", b"gauge_value", "histogram_value", b"histogram_value", "info_value", b"info_value", "state_set_value", b"state_set_value", "summary_value", b"summary_value", "timestamp", b"timestamp", "unknown_value", b"unknown_value", "value", b"value"]) -> None: ...
224
+ def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["unknown_value", "gauge_value", "counter_value", "histogram_value", "state_set_value", "info_value", "summary_value"] | None: ...
214
225
 
215
226
  global___MetricPoint = MetricPoint
216
227
 
228
+ @typing.final
217
229
  class UnknownValue(google.protobuf.message.Message):
218
230
  """Value for UNKNOWN MetricPoint."""
219
231
 
@@ -229,12 +241,13 @@ class UnknownValue(google.protobuf.message.Message):
229
241
  double_value: builtins.float = ...,
230
242
  int_value: builtins.int = ...,
231
243
  ) -> None: ...
232
- def HasField(self, field_name: typing_extensions.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> builtins.bool: ...
233
- def ClearField(self, field_name: typing_extensions.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> None: ...
234
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["double_value", "int_value"] | None: ...
244
+ def HasField(self, field_name: typing.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> builtins.bool: ...
245
+ def ClearField(self, field_name: typing.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> None: ...
246
+ def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["double_value", "int_value"] | None: ...
235
247
 
236
248
  global___UnknownValue = UnknownValue
237
249
 
250
+ @typing.final
238
251
  class GaugeValue(google.protobuf.message.Message):
239
252
  """Value for GAUGE MetricPoint."""
240
253
 
@@ -250,12 +263,13 @@ class GaugeValue(google.protobuf.message.Message):
250
263
  double_value: builtins.float = ...,
251
264
  int_value: builtins.int = ...,
252
265
  ) -> None: ...
253
- def HasField(self, field_name: typing_extensions.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> builtins.bool: ...
254
- def ClearField(self, field_name: typing_extensions.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> None: ...
255
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["double_value", "int_value"] | None: ...
266
+ def HasField(self, field_name: typing.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> builtins.bool: ...
267
+ def ClearField(self, field_name: typing.Literal["double_value", b"double_value", "int_value", b"int_value", "value", b"value"]) -> None: ...
268
+ def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["double_value", "int_value"] | None: ...
256
269
 
257
270
  global___GaugeValue = GaugeValue
258
271
 
272
+ @typing.final
259
273
  class CounterValue(google.protobuf.message.Message):
260
274
  """Value for COUNTER MetricPoint."""
261
275
 
@@ -272,9 +286,11 @@ class CounterValue(google.protobuf.message.Message):
272
286
  """The time values began being collected for this counter.
273
287
  Optional.
274
288
  """
289
+
275
290
  @property
276
291
  def exemplar(self) -> global___Exemplar:
277
292
  """Optional."""
293
+
278
294
  def __init__(
279
295
  self,
280
296
  *,
@@ -283,17 +299,19 @@ class CounterValue(google.protobuf.message.Message):
283
299
  created: google.protobuf.timestamp_pb2.Timestamp | None = ...,
284
300
  exemplar: global___Exemplar | None = ...,
285
301
  ) -> None: ...
286
- def HasField(self, field_name: typing_extensions.Literal["created", b"created", "double_value", b"double_value", "exemplar", b"exemplar", "int_value", b"int_value", "total", b"total"]) -> builtins.bool: ...
287
- def ClearField(self, field_name: typing_extensions.Literal["created", b"created", "double_value", b"double_value", "exemplar", b"exemplar", "int_value", b"int_value", "total", b"total"]) -> None: ...
288
- def WhichOneof(self, oneof_group: typing_extensions.Literal["total", b"total"]) -> typing_extensions.Literal["double_value", "int_value"] | None: ...
302
+ def HasField(self, field_name: typing.Literal["created", b"created", "double_value", b"double_value", "exemplar", b"exemplar", "int_value", b"int_value", "total", b"total"]) -> builtins.bool: ...
303
+ def ClearField(self, field_name: typing.Literal["created", b"created", "double_value", b"double_value", "exemplar", b"exemplar", "int_value", b"int_value", "total", b"total"]) -> None: ...
304
+ def WhichOneof(self, oneof_group: typing.Literal["total", b"total"]) -> typing.Literal["double_value", "int_value"] | None: ...
289
305
 
290
306
  global___CounterValue = CounterValue
291
307
 
308
+ @typing.final
292
309
  class HistogramValue(google.protobuf.message.Message):
293
310
  """Value for HISTOGRAM or GAUGE_HISTOGRAM MetricPoint."""
294
311
 
295
312
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
296
313
 
314
+ @typing.final
297
315
  class Bucket(google.protobuf.message.Message):
298
316
  """Bucket is the number of values for a bucket in the histogram
299
317
  with an optional exemplar.
@@ -311,6 +329,7 @@ class HistogramValue(google.protobuf.message.Message):
311
329
  @property
312
330
  def exemplar(self) -> global___Exemplar:
313
331
  """Optional."""
332
+
314
333
  def __init__(
315
334
  self,
316
335
  *,
@@ -318,8 +337,8 @@ class HistogramValue(google.protobuf.message.Message):
318
337
  upper_bound: builtins.float = ...,
319
338
  exemplar: global___Exemplar | None = ...,
320
339
  ) -> None: ...
321
- def HasField(self, field_name: typing_extensions.Literal["exemplar", b"exemplar"]) -> builtins.bool: ...
322
- def ClearField(self, field_name: typing_extensions.Literal["count", b"count", "exemplar", b"exemplar", "upper_bound", b"upper_bound"]) -> None: ...
340
+ def HasField(self, field_name: typing.Literal["exemplar", b"exemplar"]) -> builtins.bool: ...
341
+ def ClearField(self, field_name: typing.Literal["count", b"count", "exemplar", b"exemplar", "upper_bound", b"upper_bound"]) -> None: ...
323
342
 
324
343
  DOUBLE_VALUE_FIELD_NUMBER: builtins.int
325
344
  INT_VALUE_FIELD_NUMBER: builtins.int
@@ -335,9 +354,11 @@ class HistogramValue(google.protobuf.message.Message):
335
354
  """The time values began being collected for this histogram.
336
355
  Optional.
337
356
  """
357
+
338
358
  @property
339
359
  def buckets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___HistogramValue.Bucket]:
340
360
  """Optional."""
361
+
341
362
  def __init__(
342
363
  self,
343
364
  *,
@@ -347,12 +368,13 @@ class HistogramValue(google.protobuf.message.Message):
347
368
  created: google.protobuf.timestamp_pb2.Timestamp | None = ...,
348
369
  buckets: collections.abc.Iterable[global___HistogramValue.Bucket] | None = ...,
349
370
  ) -> None: ...
350
- def HasField(self, field_name: typing_extensions.Literal["created", b"created", "double_value", b"double_value", "int_value", b"int_value", "sum", b"sum"]) -> builtins.bool: ...
351
- def ClearField(self, field_name: typing_extensions.Literal["buckets", b"buckets", "count", b"count", "created", b"created", "double_value", b"double_value", "int_value", b"int_value", "sum", b"sum"]) -> None: ...
352
- def WhichOneof(self, oneof_group: typing_extensions.Literal["sum", b"sum"]) -> typing_extensions.Literal["double_value", "int_value"] | None: ...
371
+ def HasField(self, field_name: typing.Literal["created", b"created", "double_value", b"double_value", "int_value", b"int_value", "sum", b"sum"]) -> builtins.bool: ...
372
+ def ClearField(self, field_name: typing.Literal["buckets", b"buckets", "count", b"count", "created", b"created", "double_value", b"double_value", "int_value", b"int_value", "sum", b"sum"]) -> None: ...
373
+ def WhichOneof(self, oneof_group: typing.Literal["sum", b"sum"]) -> typing.Literal["double_value", "int_value"] | None: ...
353
374
 
354
375
  global___HistogramValue = HistogramValue
355
376
 
377
+ @typing.final
356
378
  class Exemplar(google.protobuf.message.Message):
357
379
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
358
380
 
@@ -364,11 +386,13 @@ class Exemplar(google.protobuf.message.Message):
364
386
  @property
365
387
  def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
366
388
  """Optional."""
389
+
367
390
  @property
368
391
  def label(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Label]:
369
392
  """Labels are additional information about the exemplar value (e.g. trace id).
370
393
  Optional.
371
394
  """
395
+
372
396
  def __init__(
373
397
  self,
374
398
  *,
@@ -376,16 +400,18 @@ class Exemplar(google.protobuf.message.Message):
376
400
  timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
377
401
  label: collections.abc.Iterable[global___Label] | None = ...,
378
402
  ) -> None: ...
379
- def HasField(self, field_name: typing_extensions.Literal["timestamp", b"timestamp"]) -> builtins.bool: ...
380
- def ClearField(self, field_name: typing_extensions.Literal["label", b"label", "timestamp", b"timestamp", "value", b"value"]) -> None: ...
403
+ def HasField(self, field_name: typing.Literal["timestamp", b"timestamp"]) -> builtins.bool: ...
404
+ def ClearField(self, field_name: typing.Literal["label", b"label", "timestamp", b"timestamp", "value", b"value"]) -> None: ...
381
405
 
382
406
  global___Exemplar = Exemplar
383
407
 
408
+ @typing.final
384
409
  class StateSetValue(google.protobuf.message.Message):
385
410
  """Value for STATE_SET MetricPoint."""
386
411
 
387
412
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
388
413
 
414
+ @typing.final
389
415
  class State(google.protobuf.message.Message):
390
416
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
391
417
 
@@ -401,21 +427,23 @@ class StateSetValue(google.protobuf.message.Message):
401
427
  enabled: builtins.bool = ...,
402
428
  name: builtins.str = ...,
403
429
  ) -> None: ...
404
- def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "name", b"name"]) -> None: ...
430
+ def ClearField(self, field_name: typing.Literal["enabled", b"enabled", "name", b"name"]) -> None: ...
405
431
 
406
432
  STATES_FIELD_NUMBER: builtins.int
407
433
  @property
408
434
  def states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StateSetValue.State]:
409
435
  """Optional."""
436
+
410
437
  def __init__(
411
438
  self,
412
439
  *,
413
440
  states: collections.abc.Iterable[global___StateSetValue.State] | None = ...,
414
441
  ) -> None: ...
415
- def ClearField(self, field_name: typing_extensions.Literal["states", b"states"]) -> None: ...
442
+ def ClearField(self, field_name: typing.Literal["states", b"states"]) -> None: ...
416
443
 
417
444
  global___StateSetValue = StateSetValue
418
445
 
446
+ @typing.final
419
447
  class InfoValue(google.protobuf.message.Message):
420
448
  """Value for INFO MetricPoint."""
421
449
 
@@ -425,20 +453,23 @@ class InfoValue(google.protobuf.message.Message):
425
453
  @property
426
454
  def info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Label]:
427
455
  """Optional."""
456
+
428
457
  def __init__(
429
458
  self,
430
459
  *,
431
460
  info: collections.abc.Iterable[global___Label] | None = ...,
432
461
  ) -> None: ...
433
- def ClearField(self, field_name: typing_extensions.Literal["info", b"info"]) -> None: ...
462
+ def ClearField(self, field_name: typing.Literal["info", b"info"]) -> None: ...
434
463
 
435
464
  global___InfoValue = InfoValue
436
465
 
466
+ @typing.final
437
467
  class SummaryValue(google.protobuf.message.Message):
438
468
  """Value for SUMMARY MetricPoint."""
439
469
 
440
470
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
441
471
 
472
+ @typing.final
442
473
  class Quantile(google.protobuf.message.Message):
443
474
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
444
475
 
@@ -454,7 +485,7 @@ class SummaryValue(google.protobuf.message.Message):
454
485
  quantile: builtins.float = ...,
455
486
  value: builtins.float = ...,
456
487
  ) -> None: ...
457
- def ClearField(self, field_name: typing_extensions.Literal["quantile", b"quantile", "value", b"value"]) -> None: ...
488
+ def ClearField(self, field_name: typing.Literal["quantile", b"quantile", "value", b"value"]) -> None: ...
458
489
 
459
490
  DOUBLE_VALUE_FIELD_NUMBER: builtins.int
460
491
  INT_VALUE_FIELD_NUMBER: builtins.int
@@ -470,9 +501,11 @@ class SummaryValue(google.protobuf.message.Message):
470
501
  """The time sum and count values began being collected for this summary.
471
502
  Optional.
472
503
  """
504
+
473
505
  @property
474
506
  def quantile(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SummaryValue.Quantile]:
475
507
  """Optional."""
508
+
476
509
  def __init__(
477
510
  self,
478
511
  *,
@@ -482,8 +515,8 @@ class SummaryValue(google.protobuf.message.Message):
482
515
  created: google.protobuf.timestamp_pb2.Timestamp | None = ...,
483
516
  quantile: collections.abc.Iterable[global___SummaryValue.Quantile] | None = ...,
484
517
  ) -> None: ...
485
- def HasField(self, field_name: typing_extensions.Literal["created", b"created", "double_value", b"double_value", "int_value", b"int_value", "sum", b"sum"]) -> builtins.bool: ...
486
- def ClearField(self, field_name: typing_extensions.Literal["count", b"count", "created", b"created", "double_value", b"double_value", "int_value", b"int_value", "quantile", b"quantile", "sum", b"sum"]) -> None: ...
487
- def WhichOneof(self, oneof_group: typing_extensions.Literal["sum", b"sum"]) -> typing_extensions.Literal["double_value", "int_value"] | None: ...
518
+ def HasField(self, field_name: typing.Literal["created", b"created", "double_value", b"double_value", "int_value", b"int_value", "sum", b"sum"]) -> builtins.bool: ...
519
+ def ClearField(self, field_name: typing.Literal["count", b"count", "created", b"created", "double_value", b"double_value", "int_value", b"int_value", "quantile", b"quantile", "sum", b"sum"]) -> None: ...
520
+ def WhichOneof(self, oneof_group: typing.Literal["sum", b"sum"]) -> typing.Literal["double_value", "int_value"] | None: ...
488
521
 
489
522
  global___SummaryValue = SummaryValue
@@ -19,21 +19,12 @@ import hashlib
19
19
  import threading
20
20
  import types
21
21
  from dataclasses import dataclass
22
- from typing import (
23
- TYPE_CHECKING,
24
- Any,
25
- Final,
26
- Iterator,
27
- Protocol,
28
- Union,
29
- runtime_checkable,
30
- )
22
+ from typing import TYPE_CHECKING, Any, Iterator, Union
31
23
 
32
24
  from google.protobuf.message import Message
33
25
 
34
26
  import streamlit as st
35
27
  from streamlit import runtime, util
36
- from streamlit.logger import get_logger
37
28
  from streamlit.proto.Block_pb2 import Block
38
29
  from streamlit.runtime.caching.cache_errors import CacheReplayClosureError
39
30
  from streamlit.runtime.caching.cache_type import CacheType
@@ -48,13 +39,6 @@ from streamlit.util import HASHLIB_KWARGS
48
39
  if TYPE_CHECKING:
49
40
  from streamlit.delta_generator import DeltaGenerator
50
41
 
51
- _LOGGER: Final = get_logger(__name__)
52
-
53
-
54
- @runtime_checkable
55
- class Widget(Protocol):
56
- id: str
57
-
58
42
 
59
43
  @dataclass(frozen=True)
60
44
  class WidgetMsgMetadata:
@@ -301,19 +285,20 @@ class CachedMessageReplayContext(threading.local):
301
285
  return
302
286
  if len(self._cached_message_stack) >= 1:
303
287
  id_to_save = self.select_dg_to_save(invoked_dg_id, used_dg_id)
304
- # Arrow dataframes have an ID but only set it when used as data editor
305
- # widgets, so we have to check that the ID has been actually set to
306
- # know if an element is a widget.
307
- if isinstance(element_proto, Widget) and element_proto.id:
308
- wid = element_proto.id
309
- # TODO replace `Message` with a more precise type
310
- if not self._registered_metadata:
311
- _LOGGER.error(
312
- "Trying to save widget message that wasn't registered. This should not be possible."
313
- )
314
- raise AttributeError
288
+
289
+ # Widget replay is deprecated and will be removed soon:
290
+ # https://github.com/streamlit/streamlit/pull/8817.
291
+ # Therefore, its fine to keep this part a bit messy for now.
292
+
293
+ if (
294
+ hasattr(element_proto, "id")
295
+ and element_proto.id
296
+ and self._registered_metadata
297
+ ):
298
+ # The element has an ID and has associated widget metadata
299
+ # -> looks like a valid registered widget
315
300
  widget_meta = WidgetMsgMetadata(
316
- wid, None, metadata=self._registered_metadata
301
+ element_proto.id, None, metadata=self._registered_metadata
317
302
  )
318
303
  else:
319
304
  widget_meta = None
@@ -174,6 +174,9 @@ def _fragment(
174
174
  )
175
175
  with active_hash_context:
176
176
  with st.container():
177
+ ctx.current_fragment_delta_path = (
178
+ active_dg._cursor.delta_path if active_dg._cursor else []
179
+ )
177
180
  result = non_optional_func(*args, **kwargs)
178
181
  finally:
179
182
  ctx.current_fragment_id = None
@@ -115,6 +115,7 @@ class ScriptRunContext:
115
115
  self.tracked_commands = []
116
116
  self.tracked_commands_counter = collections.Counter()
117
117
  self.current_fragment_id = None
118
+ self.current_fragment_delta_path: list[int] = []
118
119
  self.fragment_ids_this_run = fragment_ids_this_run
119
120
  self.has_dialog_opened = False
120
121
  self.disallow_cached_widget_usage = False
@@ -25,6 +25,7 @@ from typing import (
25
25
  KeysView,
26
26
  Mapping,
27
27
  NoReturn,
28
+ Union,
28
29
  ValuesView,
29
30
  )
30
31
 
@@ -44,6 +45,14 @@ SECRETS_FILE_LOCS: Final[list[str]] = [
44
45
  ]
45
46
 
46
47
 
48
+ def _convert_to_dict(obj: Union[Mapping[str, Any], AttrDict]) -> dict[str, Any]:
49
+ """Recursively convert Mapping or AttrDict objects to dictionaries."""
50
+ if isinstance(obj, AttrDict):
51
+ return obj.to_dict()
52
+ elif isinstance(obj, Mapping):
53
+ return {k: _convert_to_dict(v) for k, v in obj.items()}
54
+
55
+
47
56
  def _missing_attr_error_message(attr_name: str) -> str:
48
57
  return (
49
58
  f'st.secrets has no attribute "{attr_name}". '
@@ -227,6 +236,11 @@ class Secrets(Mapping[str, Any]):
227
236
 
228
237
  return self._secrets
229
238
 
239
+ def to_dict(self) -> dict[str, Any]:
240
+ """Converts the secrets store into a nested dictionary, where nested AttrDict objects are also converted into dictionaries."""
241
+ secrets = self._parse(True)
242
+ return _convert_to_dict(secrets)
243
+
230
244
  @staticmethod
231
245
  def _maybe_set_environment_variable(k: Any, v: Any) -> None:
232
246
  """Add the given key/value pair to os.environ if the value
@@ -1,44 +1,44 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "./static/css/main.3aaaea00.css",
4
- "main.js": "./static/js/main.707da454.js",
4
+ "main.js": "./static/js/main.ea823277.js",
5
5
  "static/js/9336.3e046ad7.chunk.js": "./static/js/9336.3e046ad7.chunk.js",
6
6
  "static/js/9330.2b4c99e0.chunk.js": "./static/js/9330.2b4c99e0.chunk.js",
7
7
  "static/js/2736.4336e2b9.chunk.js": "./static/js/2736.4336e2b9.chunk.js",
8
8
  "static/js/3301.1d1b10bb.chunk.js": "./static/js/3301.1d1b10bb.chunk.js",
9
9
  "static/css/8148.49dfd2ce.chunk.css": "./static/css/8148.49dfd2ce.chunk.css",
10
- "static/js/8148.293984e0.chunk.js": "./static/js/8148.293984e0.chunk.js",
10
+ "static/js/8148.1b2c085e.chunk.js": "./static/js/8148.1b2c085e.chunk.js",
11
11
  "static/css/5441.e3b876c5.chunk.css": "./static/css/5441.e3b876c5.chunk.css",
12
- "static/js/5441.1b94928f.chunk.js": "./static/js/5441.1b94928f.chunk.js",
13
- "static/js/8427.bd0a7cf3.chunk.js": "./static/js/8427.bd0a7cf3.chunk.js",
12
+ "static/js/5441.87f335e6.chunk.js": "./static/js/5441.87f335e6.chunk.js",
13
+ "static/js/8427.59805a7f.chunk.js": "./static/js/8427.59805a7f.chunk.js",
14
14
  "static/js/7323.b74cc85b.chunk.js": "./static/js/7323.b74cc85b.chunk.js",
15
15
  "static/js/8536.f8de3d9a.chunk.js": "./static/js/8536.f8de3d9a.chunk.js",
16
16
  "static/js/7805.acc6316a.chunk.js": "./static/js/7805.acc6316a.chunk.js",
17
- "static/js/4500.b6f348d1.chunk.js": "./static/js/4500.b6f348d1.chunk.js",
18
- "static/js/1307.0f0cca93.chunk.js": "./static/js/1307.0f0cca93.chunk.js",
19
- "static/js/2469.09ea79bb.chunk.js": "./static/js/2469.09ea79bb.chunk.js",
17
+ "static/js/4500.be0eb305.chunk.js": "./static/js/4500.be0eb305.chunk.js",
18
+ "static/js/1307.36b77087.chunk.js": "./static/js/1307.36b77087.chunk.js",
19
+ "static/js/2469.5a75ba8e.chunk.js": "./static/js/2469.5a75ba8e.chunk.js",
20
20
  "static/js/4113.99983645.chunk.js": "./static/js/4113.99983645.chunk.js",
21
21
  "static/js/1168.14f7c6ff.chunk.js": "./static/js/1168.14f7c6ff.chunk.js",
22
22
  "static/js/178.7bea8c5d.chunk.js": "./static/js/178.7bea8c5d.chunk.js",
23
23
  "static/js/1792.8bd6ce2a.chunk.js": "./static/js/1792.8bd6ce2a.chunk.js",
24
24
  "static/js/3513.7dedbda2.chunk.js": "./static/js/3513.7dedbda2.chunk.js",
25
- "static/js/7602.e8abc06b.chunk.js": "./static/js/7602.e8abc06b.chunk.js",
26
- "static/js/6013.4ba2d616.chunk.js": "./static/js/6013.4ba2d616.chunk.js",
27
- "static/js/8492.0d93bd08.chunk.js": "./static/js/8492.0d93bd08.chunk.js",
25
+ "static/js/7602.a20a999b.chunk.js": "./static/js/7602.a20a999b.chunk.js",
26
+ "static/js/6013.f6083314.chunk.js": "./static/js/6013.f6083314.chunk.js",
27
+ "static/js/8492.8ad745d1.chunk.js": "./static/js/8492.8ad745d1.chunk.js",
28
28
  "static/js/4177.69f9f18d.chunk.js": "./static/js/4177.69f9f18d.chunk.js",
29
- "static/js/1451.3b0a3e31.chunk.js": "./static/js/1451.3b0a3e31.chunk.js",
29
+ "static/js/1451.229b62c4.chunk.js": "./static/js/1451.229b62c4.chunk.js",
30
30
  "static/js/2634.1249dc7a.chunk.js": "./static/js/2634.1249dc7a.chunk.js",
31
- "static/js/1074.73973756.chunk.js": "./static/js/1074.73973756.chunk.js",
31
+ "static/js/1074.a92bc15f.chunk.js": "./static/js/1074.a92bc15f.chunk.js",
32
32
  "static/js/8477.de889fe5.chunk.js": "./static/js/8477.de889fe5.chunk.js",
33
33
  "static/js/6853.93dd1c4c.chunk.js": "./static/js/6853.93dd1c4c.chunk.js",
34
- "static/js/4477.1bd49702.chunk.js": "./static/js/4477.1bd49702.chunk.js",
34
+ "static/js/4477.87935ac8.chunk.js": "./static/js/4477.87935ac8.chunk.js",
35
35
  "static/js/4319.bf1c86bf.chunk.js": "./static/js/4319.bf1c86bf.chunk.js",
36
36
  "static/js/5106.44f0ff51.chunk.js": "./static/js/5106.44f0ff51.chunk.js",
37
- "static/js/4666.c4b22a63.chunk.js": "./static/js/4666.c4b22a63.chunk.js",
38
- "static/js/5379.f08eddd1.chunk.js": "./static/js/5379.f08eddd1.chunk.js",
39
- "static/js/8691.4211c305.chunk.js": "./static/js/8691.4211c305.chunk.js",
40
- "static/js/6718.802da17e.chunk.js": "./static/js/6718.802da17e.chunk.js",
41
- "static/js/7175.583ff733.chunk.js": "./static/js/7175.583ff733.chunk.js",
37
+ "static/js/4666.a9344a3a.chunk.js": "./static/js/4666.a9344a3a.chunk.js",
38
+ "static/js/3599.565b1eba.chunk.js": "./static/js/3599.565b1eba.chunk.js",
39
+ "static/js/8691.cb9c04cf.chunk.js": "./static/js/8691.cb9c04cf.chunk.js",
40
+ "static/js/6718.2e6586ef.chunk.js": "./static/js/6718.2e6586ef.chunk.js",
41
+ "static/js/7175.8f4014ec.chunk.js": "./static/js/7175.8f4014ec.chunk.js",
42
42
  "static/js/5345.73d26e5d.chunk.js": "./static/js/5345.73d26e5d.chunk.js",
43
43
  "static/js/9865.fd93213d.chunk.js": "./static/js/9865.fd93213d.chunk.js",
44
44
  "static/js/6405.ac5a6f23.chunk.js": "./static/js/6405.ac5a6f23.chunk.js",
@@ -151,6 +151,6 @@
151
151
  },
152
152
  "entrypoints": [
153
153
  "static/css/main.3aaaea00.css",
154
- "static/js/main.707da454.js"
154
+ "static/js/main.ea823277.js"
155
155
  ]
156
156
  }
@@ -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.707da454.js"></script><link href="./static/css/main.3aaaea00.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
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.ea823277.js"></script><link href="./static/css/main.3aaaea00.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([[1074],{87814:(e,t,s)=>{s.d(t,{K:()=>o});var i=s(50641);class o{constructor(){this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}manageFormClearListener(e,t,s){null!=this.formClearListener&&this.lastWidgetMgr===e&&this.lastFormId===t||(this.disconnect(),(0,i.bM)(t)&&(this.formClearListener=e.addFormClearedListener(t,s),this.lastWidgetMgr=e,this.lastFormId=t))}disconnect(){var e;null===(e=this.formClearListener)||void 0===e||e.disconnect(),this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}}},91074:(e,t,s)=>{s.r(t),s.d(t,{default:()=>w});var i=s(66845),o=s(91706),r=s(81810),l=s.n(r),a=s(25621),n=s(87814),d=s(90481),p=s(91034),h=s(12576),c=s(98478),m=s(86659);const u=(0,s(1515).Z)("div",{target:"e6zijwc0"})((e=>{let{theme:t}=e;return{"span[aria-disabled='true']":{background:t.colors.fadedText05}}}),"");var g=s(8879),v=s(68411),f=s(7978),b=s(97965),S=s(50641),y=s(40864);class x extends i.PureComponent{constructor(){super(...arguments),this.formClearHelper=new n.K,this.state={value:this.initialValue},this.commitWidgetValue=e=>{const{widgetMgr:t,element:s,fragmentId:i}=this.props;t.setIntArrayValue(s,this.state.value,e,i)},this.onFormCleared=()=>{this.setState(((e,t)=>({value:t.element.default})),(()=>this.commitWidgetValue({fromUi:!0})))},this.onChange=e=>{this.props.element.maxSelections&&"select"===e.type&&this.state.value.length>=this.props.element.maxSelections||this.setState(this.generateNewState(e),(()=>{this.commitWidgetValue({fromUi:!0})}))},this.filterOptions=(e,t)=>{if(this.overMaxSelections())return[];const s=e.filter((e=>!this.state.value.includes(Number(e.value))));return(0,b.HX)(s,t)}}overMaxSelections(){return this.props.element.maxSelections>0&&this.state.value.length>=this.props.element.maxSelections}getNoResultsMsg(){const{maxSelections:e}=this.props.element,{value:t}=this.state;if(0===e)return"No results";if(t.length===e){const t=1!==e?"options":"option";return"You can only select up to ".concat(e," ").concat(t,". Remove an option first.")}return"No results"}get initialValue(){const e=this.props.widgetMgr.getIntArrayValue(this.props.element);return void 0!==e?e:this.props.element.default}componentDidMount(){this.props.element.setValue?this.updateFromProtobuf():this.commitWidgetValue({fromUi:!1})}componentDidUpdate(){this.maybeUpdateFromProtobuf()}componentWillUnmount(){this.formClearHelper.disconnect()}maybeUpdateFromProtobuf(){const{setValue:e}=this.props.element;e&&this.updateFromProtobuf()}updateFromProtobuf(){const{value:e}=this.props.element;this.props.element.setValue=!1,this.setState({value:e},(()=>{this.commitWidgetValue({fromUi:!1})}))}get valueFromState(){return this.state.value.map((e=>{const t=this.props.element.options[e];return{value:e.toString(),label:t}}))}generateNewState(e){const t=()=>{var t;const s=null===(t=e.option)||void 0===t?void 0:t.value;return parseInt(s,10)};switch(e.type){case"remove":return{value:l()(this.state.value,t())};case"clear":return{value:[]};case"select":return{value:this.state.value.concat([t()])};default:throw new Error("State transition is unknown: ".concat(e.type))}}render(){var e;const{element:t,theme:s,width:i,widgetMgr:r}=this.props,l={width:i},{options:a}=t,n=0===a.length||this.props.disabled,b=0===a.length?"No options to select.":t.placeholder,x=a.map(((e,t)=>({label:e,value:t.toString()})));this.formClearHelper.manageFormClearListener(r,t.formId,this.onFormCleared);const w=a.length>10;return(0,y.jsxs)("div",{className:"row-widget stMultiSelect","data-testid":"stMultiSelect",style:l,children:[(0,y.jsx)(c.O,{label:t.label,disabled:n,labelVisibility:(0,S.iF)(null===(e=t.labelVisibility)||void 0===e?void 0:e.value),children:t.help&&(0,y.jsx)(m.dT,{children:(0,y.jsx)(g.Z,{content:t.help,placement:v.u.TOP_RIGHT})})}),(0,y.jsx)(u,{children:(0,y.jsx)(p.Z,{options:x,labelKey:"label",valueKey:"value","aria-label":t.label,placeholder:b,type:h.wD.select,multi:!0,onChange:this.onChange,value:this.valueFromState,disabled:n,size:"compact",noResultsMsg:this.getNoResultsMsg(),filterOptions:this.filterOptions,closeOnSelect:!1,overrides:{SelectArrow:{component:d.Z,props:{overrides:{Svg:{style:()=>({width:s.iconSizes.xl,height:s.iconSizes.xl})}}}},IconsContainer:{style:()=>({paddingRight:s.spacing.sm})},ControlContainer:{style:{borderLeftWidth:"1px",borderRightWidth:"1px",borderTopWidth:"1px",borderBottomWidth:"1px"}},Placeholder:{style:()=>({flex:"inherit"})},ValueContainer:{style:()=>({minHeight:"38.4px",paddingLeft:s.spacing.sm,paddingTop:0,paddingBottom:0,paddingRight:0})},ClearIcon:{props:{overrides:{Svg:{style:{color:s.colors.darkGray,transform:"scale(1.5)",width:s.spacing.twoXL,":hover":{fill:s.colors.bodyText}}}}}},SearchIcon:{style:{color:s.colors.darkGray}},Tag:{props:{overrides:{Root:{style:{borderTopLeftRadius:s.radii.md,borderTopRightRadius:s.radii.md,borderBottomRightRadius:s.radii.md,borderBottomLeftRadius:s.radii.md,fontSize:s.fontSizes.sm,paddingLeft:s.spacing.sm,marginLeft:0,marginRight:s.spacing.sm,height:"28px"}},Action:{style:{paddingLeft:0}},ActionIcon:{props:{overrides:{Svg:{style:{width:"10px",height:"10px"}}}}},Text:{style:{fontSize:s.fontSizes.md}}}}},MultiValue:{props:{overrides:{Root:{style:{fontSize:s.fontSizes.sm}}}}},Input:{props:{readOnly:o.tq&&!1===w?"readonly":null}},Dropdown:{component:f.Z}}})})]})}}const w=(0,a.b)(x)}}]);
1
+ "use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[1074],{87814:(e,t,s)=>{s.d(t,{K:()=>o});var i=s(50641);class o{constructor(){this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}manageFormClearListener(e,t,s){null!=this.formClearListener&&this.lastWidgetMgr===e&&this.lastFormId===t||(this.disconnect(),(0,i.bM)(t)&&(this.formClearListener=e.addFormClearedListener(t,s),this.lastWidgetMgr=e,this.lastFormId=t))}disconnect(){var e;null===(e=this.formClearListener)||void 0===e||e.disconnect(),this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}}},91074:(e,t,s)=>{s.r(t),s.d(t,{default:()=>C});var i=s(66845),o=s(91706),r=s(81810),l=s.n(r),a=s(25621),n=s(87814),d=s(90481),h=s(91034),p=s(12576),c=s(98478),m=s(86659);const u=(0,s(1515).Z)("div",{target:"e6zijwc0"})((e=>{let{theme:t}=e;return{"span[aria-disabled='true']":{background:t.colors.fadedText05}}}),"");var g=s(8879),v=s(68411),f=s(7978),b=s(97965),S=s(50641),y=s(40864);class w extends i.PureComponent{constructor(){super(...arguments),this.formClearHelper=new n.K,this.state={value:this.initialValue},this.commitWidgetValue=e=>{const{widgetMgr:t,element:s,fragmentId:i}=this.props;t.setIntArrayValue(s,this.state.value,e,i)},this.onFormCleared=()=>{this.setState(((e,t)=>({value:t.element.default})),(()=>this.commitWidgetValue({fromUi:!0})))},this.onChange=e=>{this.props.element.maxSelections&&"select"===e.type&&this.state.value.length>=this.props.element.maxSelections||this.setState(this.generateNewState(e),(()=>{this.commitWidgetValue({fromUi:!0})}))},this.filterOptions=(e,t)=>{if(this.overMaxSelections())return[];const s=e.filter((e=>!this.state.value.includes(Number(e.value))));return(0,b.HX)(s,t)}}overMaxSelections(){return this.props.element.maxSelections>0&&this.state.value.length>=this.props.element.maxSelections}getNoResultsMsg(){const{maxSelections:e}=this.props.element,{value:t}=this.state;if(0===e)return"No results";if(t.length===e){const t=1!==e?"options":"option";return"You can only select up to ".concat(e," ").concat(t,". Remove an option first.")}return"No results"}get initialValue(){const e=this.props.widgetMgr.getIntArrayValue(this.props.element);return void 0!==e?e:this.props.element.default}componentDidMount(){this.props.element.setValue?this.updateFromProtobuf():this.commitWidgetValue({fromUi:!1})}componentDidUpdate(){this.maybeUpdateFromProtobuf()}componentWillUnmount(){this.formClearHelper.disconnect()}maybeUpdateFromProtobuf(){const{setValue:e}=this.props.element;e&&this.updateFromProtobuf()}updateFromProtobuf(){const{value:e}=this.props.element;this.props.element.setValue=!1,this.setState({value:e},(()=>{this.commitWidgetValue({fromUi:!1})}))}get valueFromState(){return this.state.value.map((e=>{const t=this.props.element.options[e];return{value:e.toString(),label:t}}))}generateNewState(e){const t=()=>{var t;const s=null===(t=e.option)||void 0===t?void 0:t.value;return parseInt(s,10)};switch(e.type){case"remove":return{value:l()(this.state.value,t())};case"clear":return{value:[]};case"select":return{value:this.state.value.concat([t()])};default:throw new Error("State transition is unknown: ".concat(e.type))}}render(){var e;const{element:t,theme:s,width:i,widgetMgr:r}=this.props,l={width:i},{options:a}=t,n=0===a.length||this.props.disabled,b=0===a.length?"No options to select.":t.placeholder,w=a.map(((e,t)=>({label:e,value:t.toString()})));this.formClearHelper.manageFormClearListener(r,t.formId,this.onFormCleared);const C=a.length>10;return(0,y.jsxs)("div",{className:"row-widget stMultiSelect","data-testid":"stMultiSelect",style:l,children:[(0,y.jsx)(c.O,{label:t.label,disabled:n,labelVisibility:(0,S.iF)(null===(e=t.labelVisibility)||void 0===e?void 0:e.value),children:t.help&&(0,y.jsx)(m.dT,{children:(0,y.jsx)(g.Z,{content:t.help,placement:v.u.TOP_RIGHT})})}),(0,y.jsx)(u,{children:(0,y.jsx)(h.Z,{options:w,labelKey:"label",valueKey:"value","aria-label":t.label,placeholder:b,type:p.wD.select,multi:!0,onChange:this.onChange,value:this.valueFromState,disabled:n,size:"compact",noResultsMsg:this.getNoResultsMsg(),filterOptions:this.filterOptions,closeOnSelect:!1,overrides:{SelectArrow:{component:d.Z,props:{overrides:{Svg:{style:()=>({width:s.iconSizes.xl,height:s.iconSizes.xl})}}}},IconsContainer:{style:()=>({paddingRight:s.spacing.sm})},ControlContainer:{style:{minHeight:s.sizes.minElementHeight,borderLeftWidth:s.sizes.borderWidth,borderRightWidth:s.sizes.borderWidth,borderTopWidth:s.sizes.borderWidth,borderBottomWidth:s.sizes.borderWidth}},Placeholder:{style:()=>({flex:"inherit"})},ValueContainer:{style:()=>({paddingLeft:s.spacing.sm,paddingTop:0,paddingBottom:0,paddingRight:0})},ClearIcon:{props:{overrides:{Svg:{style:{color:s.colors.darkGray,transform:"scale(1.5)",width:s.spacing.twoXL,":hover":{fill:s.colors.bodyText}}}}}},SearchIcon:{style:{color:s.colors.darkGray}},Tag:{props:{overrides:{Root:{style:{borderTopLeftRadius:s.radii.md,borderTopRightRadius:s.radii.md,borderBottomRightRadius:s.radii.md,borderBottomLeftRadius:s.radii.md,fontSize:s.fontSizes.sm,paddingLeft:s.spacing.sm,marginLeft:0,marginRight:s.spacing.sm,height:"28px"}},Action:{style:{paddingLeft:0}},ActionIcon:{props:{overrides:{Svg:{style:{width:"10px",height:"10px"}}}}},Text:{style:{fontSize:s.fontSizes.md}}}}},MultiValue:{props:{overrides:{Root:{style:{fontSize:s.fontSizes.sm}}}}},Input:{props:{readOnly:o.tq&&!1===C?"readonly":null}},Dropdown:{component:f.Z}}})})]})}}const C=(0,a.b)(w)}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[1307],{51307:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});n(66845);var i=n(23593),o=n(1515);const s=(0,o.Z)("div",{target:"e115fcil2"})((e=>{let{theme:t}=e;return{display:"flex",flexDirection:"row",flexWrap:"wrap",rowGap:t.spacing.lg}}),""),r=(0,o.Z)("div",{target:"e115fcil1"})((()=>({display:"flex",flexDirection:"column",alignItems:"stretch",width:"auto",flexGrow:0})),""),l=(0,o.Z)("div",{target:"e115fcil0"})((e=>{let{theme:t}=e;return{fontFamily:t.genericFonts.bodyFont,fontSize:t.fontSizes.sm,color:t.colors.fadedText60,textAlign:"center",marginTop:t.spacing.xs,wordWrap:"break-word",padding:t.spacing.threeXS}}),"");var d,a=n(40864);!function(e){e[e.OriginalWidth=-1]="OriginalWidth",e[e.ColumnWidth=-2]="ColumnWidth",e[e.AutoWidth=-3]="AutoWidth"}(d||(d={}));const c=(0,i.Z)((function(e){let t,{width:n,isFullScreen:i,element:o,height:c,endpoints:h}=e;const m=o.width;if(m===d.OriginalWidth||m===d.AutoWidth)t=void 0;else if(m===d.ColumnWidth)t=n;else{if(!(m>0))throw Error("Invalid image width: ".concat(m));t=m}const u={};return c&&i?(u.maxHeight=c,u["object-fit"]="contain"):(u.width=t,m===d.AutoWidth&&(u.maxWidth="100%")),(0,a.jsx)(s,{style:{width:n},children:o.imgs.map(((e,t)=>{const n=e;return(0,a.jsxs)(r,{"data-testid":"stImage",children:[(0,a.jsx)("img",{style:u,src:h.buildMediaURL(n.url),alt:t.toString()}),n.caption&&(0,a.jsx)(l,{"data-testid":"stImageCaption",style:u,children:" ".concat(n.caption," ")})]},t)}))})}))},23593:(e,t,n)=>{n.d(t,{Z:()=>x});var i=n(66845),o=n(13005),s=n.n(o),r=n(25621),l=n(82218),d=n(97781),a=n(46927),c=n(66694),h=n(1515);const m=(0,h.Z)("button",{target:"e1vs0wn31"})((e=>{let{isExpanded:t,theme:n}=e;const i=t?{right:"0.4rem",top:"0.5rem",backgroundColor:"transparent"}:{right:"-3.0rem",top:"-0.375rem",opacity:0,transform:"scale(0)",backgroundColor:n.colors.lightenedBg05};return{position:"absolute",display:"flex",alignItems:"center",justifyContent:"center",zIndex:n.zIndices.sidebar+1,height:"2.5rem",width:"2.5rem",transition:"opacity 300ms 150ms, transform 300ms 150ms",border:"none",color:n.colors.fadedText60,borderRadius:"50%",...i,"&:focus":{outline:"none"},"&:active, &:focus-visible, &:hover":{opacity:1,outline:"none",transform:"scale(1)",color:n.colors.bodyText,transition:"none"}}}),""),u=(0,h.Z)("div",{target:"e1vs0wn30"})((e=>{let{theme:t,isExpanded:n}=e;return{"&:hover":{[m]:{opacity:1,transform:"scale(1)",transition:"none"}},...n?{position:"fixed",top:0,left:0,bottom:0,right:0,background:t.colors.bgColor,zIndex:t.zIndices.fullscreenWrapper,padding:t.spacing.md,paddingTop:"2.875rem",overflow:["auto","overlay"],display:"flex",alignItems:"center",justifyContent:"center"}:{}}}),"");var p=n(40864);class g extends i.PureComponent{constructor(e){super(e),this.context=void 0,this.controlKeys=e=>{const{expanded:t}=this.state;27===e.keyCode&&t&&this.zoomOut()},this.zoomIn=()=>{document.body.style.overflow="hidden",this.context.setFullScreen(!0),this.setState({expanded:!0})},this.zoomOut=()=>{document.body.style.overflow="unset",this.context.setFullScreen(!1),this.setState({expanded:!1})},this.convertScssRemValueToPixels=e=>parseFloat(e)*parseFloat(getComputedStyle(document.documentElement).fontSize),this.getWindowDimensions=()=>{const e=this.convertScssRemValueToPixels(this.props.theme.spacing.md),t=this.convertScssRemValueToPixels("2.875rem");return{fullWidth:window.innerWidth-2*e,fullHeight:window.innerHeight-(e+t)}},this.updateWindowDimensions=()=>{this.setState(this.getWindowDimensions())},this.state={expanded:!1,...this.getWindowDimensions()}}componentDidMount(){window.addEventListener("resize",this.updateWindowDimensions),document.addEventListener("keydown",this.controlKeys,!1)}componentWillUnmount(){window.removeEventListener("resize",this.updateWindowDimensions),document.removeEventListener("keydown",this.controlKeys,!1)}render(){const{expanded:e,fullWidth:t,fullHeight:n}=this.state,{children:i,width:o,height:s,disableFullscreenMode:r}=this.props;let c=l.d,h=this.zoomIn,g="View fullscreen";return e&&(c=d.m,h=this.zoomOut,g="Exit fullscreen"),(0,p.jsxs)(u,{isExpanded:e,"data-testid":"stFullScreenFrame",children:[!r&&(0,p.jsx)(m,{"data-testid":"StyledFullScreenButton",onClick:h,title:g,isExpanded:e,children:(0,p.jsx)(a.Z,{content:c})}),i(e?{width:t,height:n,expanded:e,expand:this.zoomIn,collapse:this.zoomOut}:{width:o,height:s,expanded:e,expand:this.zoomIn,collapse:this.zoomOut})]})}}g.contextType=c.E;const w=(0,r.b)(g);const x=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];class n extends i.PureComponent{constructor(){super(...arguments),this.render=()=>{const{width:n,height:i,disableFullscreenMode:o}=this.props;return(0,p.jsx)(w,{width:n,height:i,disableFullscreenMode:t||o,children:t=>{let{width:n,height:i,expanded:o,expand:s,collapse:r}=t;return(0,p.jsx)(e,{...this.props,width:n,height:i,isFullScreen:o,expand:s,collapse:r})}})}}}return n.displayName="withFullScreenWrapper(".concat(e.displayName||e.name,")"),s()(n,e)}},82218:(e,t,n)=>{n.d(t,{d:()=>r});var i=n(25773),o=n(66845),s=n(69),r=o.forwardRef((function(e,t){return o.createElement(s.D,(0,i.Z)({iconAttrs:{fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},iconVerticalAlign:"middle",iconViewBox:"0 0 8 8"},e,{ref:t}),o.createElement("path",{d:"M0 0v4l1.5-1.5L3 4l1-1-1.5-1.5L4 0H0zm5 4L4 5l1.5 1.5L4 8h4V4L6.5 5.5 5 4z"}))}));r.displayName="FullscreenEnter"},97781:(e,t,n)=>{n.d(t,{m:()=>r});var i=n(25773),o=n(66845),s=n(69),r=o.forwardRef((function(e,t){return o.createElement(s.D,(0,i.Z)({iconAttrs:{fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},iconVerticalAlign:"middle",iconViewBox:"0 0 8 8"},e,{ref:t}),o.createElement("path",{d:"M1 0L0 1l1.5 1.5L0 4h4V0L2.5 1.5 1 0zm3 4v4l1.5-1.5L7 8l1-1-1.5-1.5L8 4H4z"}))}));r.displayName="FullscreenExit"}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_streamlit_app=self.webpackChunk_streamlit_app||[]).push([[1451],{61451:(t,e,s)=>{s.r(e),s.d(e,{default:()=>C});var i=s(66845),r=s(53608),a=s.n(r),o=s(25621),n=s(15791),l=s(28278),d=s(13553),m=s(87814),p=s(98478),h=s(86659),c=s(8879),u=s(68411),g=s(50641),f=s(40864);const b="YYYY/MM/DD";function v(t){return t.map((t=>new Date(t)))}class y extends i.PureComponent{constructor(){super(...arguments),this.formClearHelper=new m.K,this.state={values:this.initialValue,isRange:this.props.element.isRange,isEmpty:!1},this.commitWidgetValue=t=>{const{widgetMgr:e,element:s,fragmentId:i}=this.props;var r;e.setStringArrayValue(s,(r=this.state.values)?r.map((t=>a()(t).format(b))):[],t,i)},this.onFormCleared=()=>{const t=v(this.props.element.default);this.setState({values:t,isEmpty:!t},(()=>this.commitWidgetValue({fromUi:!0})))},this.handleChange=t=>{let{date:e}=t;if(null===e||void 0===e)return void this.setState({values:[],isEmpty:!0});const s=[];Array.isArray(e)?e.forEach((t=>{t&&s.push(t)})):s.push(e),this.setState({values:s,isEmpty:!s},(()=>{this.state.isEmpty||this.commitWidgetValue({fromUi:!0})}))},this.handleClose=()=>{const{isEmpty:t}=this.state;t&&this.setState(((t,e)=>({values:v(e.element.default),isEmpty:!v(e.element.default)})),(()=>{this.commitWidgetValue({fromUi:!0})}))},this.getMaxDate=()=>{const{element:t}=this.props,e=t.max;return e&&e.length>0?a()(e,b).toDate():void 0}}get initialValue(){const t=this.props.widgetMgr.getStringArrayValue(this.props.element);return v(void 0!==t?t:this.props.element.default||[])}componentDidMount(){this.props.element.setValue?this.updateFromProtobuf():this.commitWidgetValue({fromUi:!1})}componentDidUpdate(){this.maybeUpdateFromProtobuf()}componentWillUnmount(){this.formClearHelper.disconnect()}maybeUpdateFromProtobuf(){const{setValue:t}=this.props.element;t&&this.updateFromProtobuf()}updateFromProtobuf(){const{value:t}=this.props.element;this.props.element.setValue=!1;const e=t.map((t=>new Date(t)));this.setState({values:e,isEmpty:!e},(()=>{this.commitWidgetValue({fromUi:!1})}))}render(){var t;const{width:e,element:s,disabled:i,theme:r,widgetMgr:o}=this.props,{values:m,isRange:v}=this.state,{colors:y,fontSizes:C,lineHeights:W,spacing:D}=r,x={width:e},I=a()(s.min,b).toDate(),F=this.getMaxDate(),V=0===s.default.length&&!i,S=s.format.replaceAll(/[a-zA-Z]/g,"9"),k=s.format.replaceAll("Y","y").replaceAll("D","d");return this.formClearHelper.manageFormClearListener(o,s.formId,this.onFormCleared),(0,f.jsxs)("div",{className:"stDateInput","data-testid":"stDateInput",style:x,children:[(0,f.jsx)(p.O,{label:s.label,disabled:i,labelVisibility:(0,g.iF)(null===(t=s.labelVisibility)||void 0===t?void 0:t.value),children:s.help&&(0,f.jsx)(h.dT,{children:(0,f.jsx)(c.Z,{content:s.help,placement:u.u.TOP_RIGHT})})}),(0,f.jsx)(n.Z,{density:l.pw.high,formatString:k,mask:v?"".concat(S," \u2013 ").concat(S):S,placeholder:v?"".concat(s.format," \u2013 ").concat(s.format):s.format,disabled:i,onChange:this.handleChange,onClose:this.handleClose,overrides:{Popover:{props:{placement:d.r4.bottomLeft,overrides:{Body:{style:{border:"".concat(r.sizes.borderWidth," solid ").concat(y.fadedText10)}}}}},CalendarContainer:{style:{fontSize:C.sm,paddingRight:r.spacing.sm,paddingLeft:r.spacing.sm,paddingBottom:r.spacing.sm,paddingTop:r.spacing.sm}},Week:{style:{fontSize:C.sm}},Day:{style:t=>{let{$pseudoHighlighted:e,$pseudoSelected:s,$selected:i,$isHovered:r}=t;return{fontSize:C.sm,lineHeight:W.base,"::before":{backgroundColor:i||s||e||r?"".concat(y.secondaryBg," !important"):y.transparent},"::after":{borderColor:y.transparent}}}},PrevButton:{style:()=>({display:"flex",alignItems:"center",justifyContent:"center",":active":{backgroundColor:y.transparent},":focus":{backgroundColor:y.transparent,outline:0}})},NextButton:{style:{display:"flex",alignItems:"center",justifyContent:"center",":active":{backgroundColor:y.transparent},":focus":{backgroundColor:y.transparent,outline:0}}},Input:{props:{maskChar:null,overrides:{Root:{style:{borderLeftWidth:r.sizes.borderWidth,borderRightWidth:r.sizes.borderWidth,borderTopWidth:r.sizes.borderWidth,borderBottomWidth:r.sizes.borderWidth}},ClearIcon:{props:{overrides:{Svg:{style:{color:r.colors.darkGray,transform:"scale(1.41)",width:r.spacing.twoXL,marginRight:"-8px",":hover":{fill:r.colors.bodyText}}}}}},Input:{style:{paddingRight:D.sm,paddingLeft:D.sm,paddingBottom:D.sm,paddingTop:D.sm,lineHeight:W.inputWidget},props:{"data-testid":"stDateInput-Input"}}}}}},value:m,minDate:I,maxDate:F,range:v,clearable:V})]})}}const C=(0,o.b)(y)},87814:(t,e,s)=>{s.d(e,{K:()=>r});var i=s(50641);class r{constructor(){this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}manageFormClearListener(t,e,s){null!=this.formClearListener&&this.lastWidgetMgr===t&&this.lastFormId===e||(this.disconnect(),(0,i.bM)(e)&&(this.formClearListener=t.addFormClearedListener(e,s),this.lastWidgetMgr=t,this.lastFormId=e))}disconnect(){var t;null===(t=this.formClearListener)||void 0===t||t.disconnect(),this.formClearListener=void 0,this.lastWidgetMgr=void 0,this.lastFormId=void 0}}}}]);