// Borrowed minimalistic Streamlit API from Thiago // https://discuss.streamlit.io/t/code-snippet-create-components-without-any-frontend-tooling-no-react-babel-webpack-etc/13064 function sendMessageToStreamlitClient(type, data) { console.log(type, data); const outData = Object.assign( { isStreamlitMessage: true, type: type, }, data ); window.parent.postMessage(outData, '*'); } const Streamlit = { setComponentReady: function () { sendMessageToStreamlitClient('streamlit:componentReady', { apiVersion: 1 }); }, setFrameHeight: function (height) { sendMessageToStreamlitClient('streamlit:setFrameHeight', { height: height }); }, setComponentValue: function (value) { sendMessageToStreamlitClient('streamlit:setComponentValue', { value: value }); }, RENDER_EVENT: 'streamlit:render', events: { addEventListener: function (type, callback) { window.addEventListener('message', function (event) { if (event.data.type === type) { event.detail = event.data; callback(event); } }); }, }, };