File size: 1,045 Bytes
a9340d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 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);
				}
			});
		},
	},
};