import { useCallback, useState } from "preact/hooks";
import { Loro, setPanicHook, enableDebug } from "loro-wasm/bundler/loro_wasm";
import "./app.css";
// enableDebug();
async function testListInsert() {
const loro = new Loro();
const loroB = new Loro();
const a = loro.getList("list");
loro.subscribe((local: boolean) => {
if (local) {
loroB.importUpdates(loro.exportUpdates(loroB.version()));
}
})
for (let i = 0; i < 1000; i++) {
a.insert(loro, i, i);
}
}
function testManyActors() {
const actors = new Array(200).fill(0).map(() => new Loro());
console.log(actors);
for (let i = 0; i < actors.length; i++) {
const list = actors[i].getList("list");
list.insert(actors[i], 0, i);
}
for (let i = 1; i < actors.length; i++) {
actors[0].importUpdates(actors[i].exportUpdates(undefined));
}
for (let i = 1; i < actors.length; i++) {
actors[i].importUpdates(actors[0].exportUpdates(undefined));
}
console.log(actors[0].getList("list").value);
for (let i = 0; i < actors.length - 1; i++) {
const listA = actors[i].getList("list").value;
const listB = actors[i + 1].getList("list").value;
if (listA.length != listB.length) {
console.log(listA.value);
console.log(listB.value);
throw new Error("not eq");
}
for (let j = 0; j < listA.length; j++) {
if (listA[j] != listB[j]) {
console.log(listA.value);
console.log(listB.value);
throw new Error("not eq");
}
}
}
}
export function App() {
return (
<>
{ duration != 0 ? ( {duration.toFixed(0)} ms ) : undefined }
) }