blob: 58ff5d9750d5ea87556e7a964690decd17a820e4 [file] [log] [blame]
<html>
<head>
<title>sketch-timeline demo</title>
<link rel="stylesheet" href="demo.css" />
<script type="module" src="../sketch-timeline.ts"></script>
<script>
const messages = [
{
type: "user",
content: "a user message",
},
{
type: "agent",
content: "an agent message",
},
{
type: "agent",
content: "an agent message",
},
{
type: "agent",
content: "an agent message",
},
{
type: "user",
content: "a user message",
},
{
type: "user",
content: "a user message",
},
{
type: "agent",
content: "an agent message",
},
{
type: "user",
content: "a user message",
},
{
type: "tool",
content: "a tool use message",
},
{
type: "commit",
end_of_turn: false,
content: "",
commits: [
{
hash: "ece101c103ec231da87f4df05c1b5e6a24e13add",
subject: "Add README.md for web components directory",
body: "This adds documentation for the web components used in the Loop UI,\nincluding a description of each component, usage examples, and\ndevelopment guidelines.\n\nCo-Authored-By: sketch\nadd README.md for webui/src/web-components",
pushed_branch:
"sketch/create-readmemd-for-web-components-directory",
},
],
timestamp: "2025-04-14T16:39:33.639533919Z",
conversation_id: "",
idx: 17,
},
{
type: "agent",
content: "an end-of-turn agent message",
end_of_turn: true,
},
];
document.addEventListener("DOMContentLoaded", () => {
const appShell = document.querySelector(".app-shell");
const timelineEl = document.querySelector("sketch-timeline");
timelineEl.messages = messages;
timelineEl.scrollContainer = appShell;
const addMessagesCheckbox = document.querySelector("#addMessages");
addMessagesCheckbox.addEventListener("change", toggleAddMessages);
let addingMessages = false;
const addNewMessagesInterval = 1000;
function addNewMessages() {
if (!addingMessages) {
return;
}
const n = new Date().getMilliseconds() % messages.length;
const msgToDup = messages[n];
const dup = JSON.parse(JSON.stringify(msgToDup));
dup.idx = messages.length;
dup.timestamp = new Date().toISOString();
messages.push(dup);
timelineEl.messages = messages.concat();
timelineEl.prop;
timelineEl.requestUpdate();
}
let addMessagesHandler = setInterval(
addNewMessages,
addNewMessagesInterval,
);
function toggleAddMessages() {
addingMessages = !addingMessages;
if (addingMessages) {
} else {
}
}
});
</script>
<style>
.app-shell {
display: block;
font-family:
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
Roboto,
sans-serif;
color: rgb(51, 51, 51);
line-height: 1.4;
min-height: 100vh;
width: 100%;
position: relative;
overflow-x: hidden;
}
.app-header {
flex-grow: 0;
}
.view-container {
flex-grow: 2;
}
</style>
</head>
<body>
<div class="app-shell">
<div class="app-header">
<h1>sketch-timeline demo</h1>
<input
type="checkbox"
id="addMessages"
title="Automatically add new messages"
/><label for="addMessages">Automatically add new messages</label>
</div>
<div class="view-container">
<div class="chat-view view-active">
<sketch-timeline></sketch-timeline>
</div>
</div>
</div>
</body>
</html>