馃悕馃悕馃悕
1const decoder = new TextDecoder();
2export const defaults = {};
3const foo = 'acemnorsuvwxz';
4const bar = 'bdfghijklpqt';
5const baru = 'bdfhijklt';
6const barl = 'gjpq';
7export function instantiate(target, settings = defaults) {
8 m.websocket.connect('diffusion', 'localhost:8765', (event) => {
9 console.log("FOO");
10 if (typeof event.data === 'string') {
11 console.log(event.data);
12 return;
13 }
14 if (event.data instanceof ArrayBuffer) {
15 const view = new DataView(event.data);
16 // first 4 bytes: N = length of json metadata
17 const jsonLength = view.getUint32(0);
18 // next N bytes: utf-8 json string
19 const jsonBytes = new Uint8Array(event.data, 4, jsonLength);
20 const metadata = JSON.parse(decoder.decode(jsonBytes));
21 console.log(metadata);
22 const blob = new Blob([new Uint8Array(event.data, 4 + jsonLength)], { type: 'image/png' });
23 const img = document.createElement('img');
24 img.src = URL.createObjectURL(blob);
25 document.body.appendChild(img);
26 return;
27 }
28 });
29 const fragment = document.createDocumentFragment();
30 const button = document.createElement('button');
31 const statusDisplay = document.createElement('p');
32 const input = document.createElement('input');
33 fragment.appendChild(button);
34 fragment.appendChild(statusDisplay);
35 fragment.appendChild(input);
36 button.innerText = 'Connect to SD API';
37 button.addEventListener('click', () => m.websocket.connect('diffusion'));
38 statusDisplay.innerText = 'no connection';
39 m.websocket.onStatusUpdate('diffusion', (status) => {
40 if (status === 'open') {
41 statusDisplay.innerText = 'connected';
42 }
43 else {
44 statusDisplay.innerText = 'no connection';
45 }
46 });
47 m.diffusion.send = m.websocket.sender('diffusion');
48 input.addEventListener('keydown', (event) => {
49 if (event.key === 'Enter') {
50 m.diffusion.send({
51 command: input.value
52 });
53 input.value = '';
54 }
55 });
56 fragment.appendChild(document.createElement('br'));
57 target.appendChild(fragment);
58}