|
import gradio as gr |
|
|
|
get_local_storage = """ |
|
function() { |
|
globalThis.setStorage = (key, value)=>{ |
|
localStorage.setItem(key, JSON.stringify(value)) |
|
} |
|
globalThis.getStorage = (key, value)=>{ |
|
return JSON.parse(localStorage.getItem(key)) |
|
} |
|
const text_input = getStorage('text_input') |
|
const dropdown = getStorage('dropdown') |
|
const local_data = getStorage('local_data') |
|
return [text_input, dropdown, local_data]; |
|
} |
|
""" |
|
|
|
|
|
def predict(text_input, dropdown): |
|
return { |
|
"text": text_input, |
|
"dropdown": dropdown, |
|
"something_else": [text_input] * 3 + [dropdown], |
|
} |
|
|
|
|
|
with gr.Blocks() as block: |
|
text_input = gr.Text(label="Input") |
|
dropdown = gr.Dropdown(["first", "second", "third"], type="index") |
|
local_data = gr.JSON({}, label="Local Storage") |
|
|
|
dropdown.change(None, dropdown, None, _js="(v)=>{ setStorage('dropdown',v) }") |
|
text_input.change(None, text_input, None, _js="(v)=>{ setStorage('text_input',v) }") |
|
local_data.change(None, local_data, None, _js="(v)=>{ setStorage('local_data',v) }") |
|
btn = gr.Button("Set New Data") |
|
btn.click(fn=predict, inputs=[text_input, dropdown], outputs=[local_data]) |
|
block.load( |
|
None, |
|
inputs=None, |
|
outputs=[text_input, dropdown, local_data], |
|
_js=get_local_storage, |
|
) |
|
block.launch(debug=True) |
|
|