# streamlit-js-callback
Eval js code with callbaack.
## Installation instructions
```sh
pip install streamlit-js-callback
```
## Usage instructions
```python
import random
import streamlit as st
from streamlit_js_callback import streamlit_js_callback
print("Start render..")
st.subheader("JS Callback Component")
def use_return():
result1 = streamlit_js_callback("""
console.log("eval 1 + 1")
return 1 + 1
""")
if result1:
st.text("Received by use_return: " + str(result1))
def use_send_message():
result2 = streamlit_js_callback("""
console.log("hello")
sendMessage("hello")
""")
if result2:
st.text("Received by use_send_message: " + str(result2))
def exec_async():
res = streamlit_js_callback("""
return await fetch("https://reqres.in/api/products/3").then(function(response) {
return response.json();
})
""")
if res:
st.text("Received by exec_async: " + str(res))
def exec_event_listen():
if st.button("btn1"):
print("btn1 click")
result3 = streamlit_js_callback("""
console.log("init 3..")
let clickCount = 0
window.parent.document.querySelectorAll('button[kind="secondary"]').forEach((item) => {
item.addEventListener("click", function(e) {
clickCount += 1
console.log(clickCount)
sendMessage(clickCount)
});
})
""")
if result3:
st.text(f"Received event: {result3}")
print(f"Received event: {result3}")
use_return()
use_send_message()
exec_async()
exec_event_listen()
# my_key = "my_key"
#
#
# @st.fragment
# def exec_in_context_2():
# global my_key
# print("my_key", my_key)
# result4 = streamlit_js_callback("""
# const res = String(new Date())
# console.log(res)
# return res
# """, key=my_key)
# if result4:
# st.text("Received by exec_in_context: " + str(result4))
# print(f"Received by exec_in_context: {result4}")
# my_key = str(random.randint(0, 99999))
# print("my_key", my_key)
#
#
# @st.fragment
# def exec_in_context():
# if st.button("btn2"):
# print("btn2 click")
# exec_in_context_2()
# print('exec_in_context finish.')
#
#
# exec_in_context()
print("Finish render")
```
Raw data
{
"_id": null,
"home_page": "https://github.com/dancingpeanut/streamlit-js-callback",
"name": "streamlit-js-callback",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": null,
"author": "Tongshengzhou",
"author_email": "tongshengzhou@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/79/aa/9cfb9178dd464775179dbbba4152ab2700bbf5d5e079da33bfc2e7cfc986/streamlit-js-callback-1.0.2.tar.gz",
"platform": null,
"description": "# streamlit-js-callback\n\nEval js code with callbaack.\n\n## Installation instructions\n\n```sh\npip install streamlit-js-callback\n```\n\n## Usage instructions\n\n```python\nimport random\nimport streamlit as st\nfrom streamlit_js_callback import streamlit_js_callback\n\n\nprint(\"Start render..\")\n\nst.subheader(\"JS Callback Component\")\n\n\ndef use_return():\n result1 = streamlit_js_callback(\"\"\"\n console.log(\"eval 1 + 1\")\n return 1 + 1\n \"\"\")\n if result1:\n st.text(\"Received by use_return: \" + str(result1))\n\n\ndef use_send_message():\n result2 = streamlit_js_callback(\"\"\"\n console.log(\"hello\")\n sendMessage(\"hello\")\n \"\"\")\n if result2:\n st.text(\"Received by use_send_message: \" + str(result2))\n\n\ndef exec_async():\n res = streamlit_js_callback(\"\"\"\n return await fetch(\"https://reqres.in/api/products/3\").then(function(response) {\n return response.json();\n })\n \"\"\")\n if res:\n st.text(\"Received by exec_async: \" + str(res))\n\n\ndef exec_event_listen():\n if st.button(\"btn1\"):\n print(\"btn1 click\")\n result3 = streamlit_js_callback(\"\"\"\n console.log(\"init 3..\")\n let clickCount = 0\n window.parent.document.querySelectorAll('button[kind=\"secondary\"]').forEach((item) => {\n item.addEventListener(\"click\", function(e) {\n clickCount += 1\n console.log(clickCount)\n sendMessage(clickCount)\n });\n })\n \"\"\")\n if result3:\n st.text(f\"Received event: {result3}\")\n print(f\"Received event: {result3}\")\n\n\nuse_return()\nuse_send_message()\nexec_async()\nexec_event_listen()\n\n\n# my_key = \"my_key\"\n#\n#\n# @st.fragment\n# def exec_in_context_2():\n# global my_key\n# print(\"my_key\", my_key)\n# result4 = streamlit_js_callback(\"\"\"\n# const res = String(new Date())\n# console.log(res)\n# return res\n# \"\"\", key=my_key)\n# if result4:\n# st.text(\"Received by exec_in_context: \" + str(result4))\n# print(f\"Received by exec_in_context: {result4}\")\n# my_key = str(random.randint(0, 99999))\n# print(\"my_key\", my_key)\n#\n#\n# @st.fragment\n# def exec_in_context():\n# if st.button(\"btn2\"):\n# print(\"btn2 click\")\n# exec_in_context_2()\n# print('exec_in_context finish.')\n#\n#\n# exec_in_context()\n\n\nprint(\"Finish render\")\n\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Eval js code with callbaack",
"version": "1.0.2",
"project_urls": {
"Homepage": "https://github.com/dancingpeanut/streamlit-js-callback"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "79aa9cfb9178dd464775179dbbba4152ab2700bbf5d5e079da33bfc2e7cfc986",
"md5": "c46d35949119455381709d9344b56a77",
"sha256": "5097fdb157e9dba835f140393fd494c28bf1c1ed0794b8ba2191cb9aae1be20b"
},
"downloads": -1,
"filename": "streamlit-js-callback-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "c46d35949119455381709d9344b56a77",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 403476,
"upload_time": "2024-08-13T04:17:51",
"upload_time_iso_8601": "2024-08-13T04:17:51.038534Z",
"url": "https://files.pythonhosted.org/packages/79/aa/9cfb9178dd464775179dbbba4152ab2700bbf5d5e079da33bfc2e7cfc986/streamlit-js-callback-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-13 04:17:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dancingpeanut",
"github_project": "streamlit-js-callback",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "streamlit-js-callback"
}