streamlit-js-callback


Namestreamlit-js-callback JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/dancingpeanut/streamlit-js-callback
SummaryEval js code with callbaack
upload_time2024-08-13 04:17:51
maintainerNone
docs_urlNone
authorTongshengzhou
requires_python>=3.7
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.09588s