rmm commited on
Commit
f3eb9f5
·
1 Parent(s): 96df9de

docs: docstrings, typehints for js iframe /tab fix code

Browse files
call_models/fix_tabrender.py CHANGED
@@ -10,6 +10,21 @@ import streamlit as st
10
  import uuid, html
11
  # workaround for streamlit making tabs height 0 when not active, breaks map
12
  def inject_iframe_js_code(source: str) -> None:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  div_id = uuid.uuid4()
14
 
15
  st.markdown(
@@ -28,7 +43,28 @@ def inject_iframe_js_code(source: str) -> None:
28
  unsafe_allow_html=True,
29
  )
30
 
31
- def js_show_zeroheight_iframe(component_iframe_title: str, height: str = "auto"):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  source = f"""
33
  (function() {{
34
  var attempts = 0;
 
10
  import uuid, html
11
  # workaround for streamlit making tabs height 0 when not active, breaks map
12
  def inject_iframe_js_code(source: str) -> None:
13
+ """
14
+ Injects JavaScript code into a Streamlit app using an iframe.
15
+
16
+ This function creates a hidden div with a unique ID and injects the provided
17
+ JavaScript code into the parent document using an iframe. The iframe's source
18
+ is a JavaScript URL that creates a script element, sets its type to 'text/javascript',
19
+ and assigns the provided JavaScript code to its text content. The script element
20
+ is then appended to the hidden div in the parent document.
21
+
22
+ Args:
23
+ source (str): The JavaScript code to be injected.
24
+
25
+ Returns:
26
+ None
27
+ """
28
  div_id = uuid.uuid4()
29
 
30
  st.markdown(
 
43
  unsafe_allow_html=True,
44
  )
45
 
46
+ def js_show_zeroheight_iframe(component_iframe_title: str, height: str = "auto") -> None:
47
+ """
48
+ Injects JavaScript code to dynamically set iframe height (located by title)
49
+
50
+ This function generates and injects JavaScript code that searches for
51
+ iframes with the given title and sets their height to the specified value.
52
+ The script attempts to find the iframes up to a maximum number of attempts,
53
+ and also listens for user interactions to reattempt setting the height.
54
+
55
+ See https://github.com/streamlit/streamlit/issues/7376
56
+
57
+
58
+ Args:
59
+ component_iframe_title (str): The title attribute of the iframes to target.
60
+ height (str, optional): The height to set for the iframes. Defaults to "auto".
61
+
62
+ Notes:
63
+ - The JavaScript code will attempt to find the iframes every 250
64
+ milliseconds, up to a maximum of 20 attempts.
65
+ - If the iframes are found, their height will be set to the specified value.
66
+ - User interactions (e.g., click events) triggers a reattempt to set the height.
67
+ """
68
  source = f"""
69
  (function() {{
70
  var attempts = 0;
docs/fix_tabrender.md CHANGED
@@ -1,4 +1,3 @@
1
-
2
  A js fix for certain UI elements, including maps, getting rendered into a
3
  zero-sized frame by default. Here we resize it so it is visible once the tab is
4
  clicked and no further interaction is required to see it.
 
 
1
  A js fix for certain UI elements, including maps, getting rendered into a
2
  zero-sized frame by default. Here we resize it so it is visible once the tab is
3
  clicked and no further interaction is required to see it.