Spaces:
Running
Running
// 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); | |
} | |
}); | |
}, | |
}, | |
}; | |