import streamlit as st import uuid import streamlit.components.v1 as components import base64 # Lista de estilos de sombra shadow_list = [ "box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;", "box-shadow: rgba(0, 0, 0, 0.15) 0px 5px 15px 0px;", "box-shadow: rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px;", "box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;", ] # Lista de estilos de transiciĆ³n transition_list = [ "transition: all 0.3s ease;", "transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);", "transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);", ] ################################################################################### def semantic_float_init(): st.markdown(""" <style> #semantic-float-container { position: fixed; top: 0; right: 0; width: 800px; height: 100vh; z-index: 9999; background-color: white; border-left: 1px solid #ddd; box-shadow: -5px 0 15px rgba(0,0,0,0.1); overflow: auto; transition: transform 0.3s ease-in-out; transform: translateX(100%); } #semantic-float-container.visible { transform: translateX(0); } #semantic-float-container img { max-width: 100%; height: auto; } </style> """, unsafe_allow_html=True) components.html(""" <div id="semantic-float-container"></div> <script> const container = document.getElementById('semantic-float-container'); if (!container) { const newContainer = document.createElement('div'); newContainer.id = 'semantic-float-container'; document.body.appendChild(newContainer); } </script> """, height=0) def float_graph(content): js = f""" <script> const container = document.getElementById('semantic-float-container'); if (container) {{ container.innerHTML = `{content}`; container.classList.add('visible'); }} </script> """ components.html(js, height=0) def toggle_float_visibility(visible): js = f""" <script> const container = document.getElementById('semantic-float-container'); if (container) {{ container.classList.{'add' if visible else 'remove'}('visible'); }} </script> """ components.html(js, height=0) def update_float_content(new_content): js = f""" <script> const container = document.getElementById('semantic-float-container'); if (container) {{ container.innerHTML = `{new_content}`; }} </script> """ components.html(js, height=0)