Naz786 commited on
Commit
4e952c1
·
verified ·
1 Parent(s): 8985573

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -9
app.py CHANGED
@@ -2,6 +2,7 @@ import streamlit as st
2
  import difflib
3
  import requests
4
  import datetime
 
5
 
6
  # --- CONFIG ---
7
  GROQ_API_KEY = st.secrets.get('GROQ_API_KEY', 'YOUR_GROQ_API_KEY')
@@ -162,7 +163,7 @@ elif page == "Semantic Search":
162
  st.caption("Example questions:")
163
  st.write(", ".join(EXAMPLE_QUESTIONS))
164
 
165
- # --- Custom input with mic button (HTML/JS) ---
166
  st.markdown("""
167
  <style>
168
  .input-mic-container {
@@ -211,12 +212,7 @@ elif page == "Semantic Search":
211
  recognition.onresult = function(event) {
212
  const transcript = event.results[0][0].transcript;
213
  input.value = transcript;
214
- // Copy to Streamlit input
215
- const streamlitInput = window.parent.document.querySelector('input[data-testid="stTextInput"]');
216
- if (streamlitInput) {
217
- streamlitInput.value = transcript;
218
- streamlitInput.dispatchEvent(new Event('input', { bubbles: true }));
219
- }
220
  micBtn.textContent = '🎤';
221
  };
222
  recognition.onerror = function() {
@@ -229,11 +225,14 @@ elif page == "Semantic Search":
229
  micBtn.disabled = true;
230
  micBtn.title = 'Voice not supported';
231
  }
 
 
 
232
  </script>
233
  """, unsafe_allow_html=True)
234
 
235
- # The actual Streamlit input (for Python to read)
236
- question = st.text_input("Ask a question about your code", key="sem_question")
237
 
238
  if st.button("Run Semantic Search"):
239
  if not code_input.strip() or not question.strip():
 
2
  import difflib
3
  import requests
4
  import datetime
5
+ from streamlit_js_eval import streamlit_js_eval
6
 
7
  # --- CONFIG ---
8
  GROQ_API_KEY = st.secrets.get('GROQ_API_KEY', 'YOUR_GROQ_API_KEY')
 
163
  st.caption("Example questions:")
164
  st.write(", ".join(EXAMPLE_QUESTIONS))
165
 
166
+ # --- Single input with mic button using streamlit_js_eval ---
167
  st.markdown("""
168
  <style>
169
  .input-mic-container {
 
212
  recognition.onresult = function(event) {
213
  const transcript = event.results[0][0].transcript;
214
  input.value = transcript;
215
+ window.dispatchEvent(new CustomEvent("streamlit_js_eval_result", {detail: transcript}));
 
 
 
 
 
216
  micBtn.textContent = '🎤';
217
  };
218
  recognition.onerror = function() {
 
225
  micBtn.disabled = true;
226
  micBtn.title = 'Voice not supported';
227
  }
228
+ input.onchange = function() {
229
+ window.dispatchEvent(new CustomEvent("streamlit_js_eval_result", {detail: input.value}));
230
+ }
231
  </script>
232
  """, unsafe_allow_html=True)
233
 
234
+ # Get the value from JS (typed or spoken)
235
+ question = streamlit_js_eval(js_expressions="document.getElementById('questionInput') ? document.getElementById('questionInput').value : ''", key="js_question")
236
 
237
  if st.button("Run Semantic Search"):
238
  if not code_input.strip() or not question.strip():