blob: 58abdb28f1b2705e10f5683490598fabde2d6127 [file] [log] [blame]
Sean McCullough86b56862025-04-18 13:04:03 -07001<html>
2 <head>
3 <title>sketch-timeline demo</title>
4 <link rel="stylesheet" href="demo.css" />
Pokey Rulee2a8c2f2025-04-23 15:09:25 +01005 <script type="module" src="../sketch-timeline.ts"
Sean McCullough71941bd2025-04-18 13:31:48 -07006 ></script>
Sean McCullough86b56862025-04-18 13:04:03 -07007 <script>
8 const messages = [
9 {
10 type: "user",
11 content: "a user message",
12 },
13 {
14 type: "agent",
15 content: "an agent message",
16 },
17 {
18 type: "agent",
19 content: "an agent message",
20 },
21 {
22 type: "agent",
23 content: "an agent message",
24 },
25 {
26 type: "user",
27 content: "a user message",
28 },
29 {
30 type: "user",
31 content: "a user message",
32 },
Sean McCullough2c5bba42025-04-20 19:33:17 -070033 {
34 type: "agent",
35 content: "an agent message",
36 },
37 {
38 type: "user",
39 content: "a user message",
40 },
41 {
42 type: "tool",
43 content: "a tool use message",
44 },
45 {
46 type: "commit",
47 end_of_turn: false,
48 content: "",
49 commits: [
50 {
51 hash: "ece101c103ec231da87f4df05c1b5e6a24e13add",
52 subject: "Add README.md for web components directory",
53 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 loop/webui/src/web-components",
54 pushed_branch:
55 "sketch/create-readmemd-for-web-components-directory",
56 },
57 ],
58 timestamp: "2025-04-14T16:39:33.639533919Z",
59 conversation_id: "",
60 idx: 17,
61 },
62 {
63 type: "agent",
64 content: "an end-of-turn agent message",
65 end_of_turn: true,
66 },
Sean McCullough86b56862025-04-18 13:04:03 -070067 ];
Sean McCullough2c5bba42025-04-20 19:33:17 -070068
Sean McCullough86b56862025-04-18 13:04:03 -070069 document.addEventListener("DOMContentLoaded", () => {
Sean McCullough2c5bba42025-04-20 19:33:17 -070070 const appShell = document.querySelector(".app-shell");
Sean McCullough71941bd2025-04-18 13:31:48 -070071 const timelineEl = document.querySelector("sketch-timeline");
Sean McCullough86b56862025-04-18 13:04:03 -070072 timelineEl.messages = messages;
Sean McCullough2c5bba42025-04-20 19:33:17 -070073 timelineEl.scrollContainer = appShell;
74 const addMessagesCheckbox = document.querySelector("#addMessages");
75 addMessagesCheckbox.addEventListener("change", toggleAddMessages);
76
77 let addingMessages = false;
78 const addNewMessagesInterval = 1000;
79
80 function addNewMessages() {
81 if (!addingMessages) {
82 return;
83 }
84 const n = new Date().getMilliseconds() % messages.length;
85 const msgToDup = messages[n];
86 const dup = JSON.parse(JSON.stringify(msgToDup));
87 dup.idx = messages.length;
88 dup.timestamp = new Date().toISOString();
89 messages.push(dup);
90 timelineEl.messages = messages.concat();
91 timelineEl.prop;
92 timelineEl.requestUpdate();
93 }
94
95 let addMessagesHandler = setInterval(
96 addNewMessages,
97 addNewMessagesInterval,
98 );
99
100 function toggleAddMessages() {
101 addingMessages = !addingMessages;
102 if (addingMessages) {
103 } else {
104 }
105 }
Sean McCullough86b56862025-04-18 13:04:03 -0700106 });
107 </script>
Sean McCullough2c5bba42025-04-20 19:33:17 -0700108 <style>
109 .app-shell {
110 display: block;
111 font-family:
112 system-ui,
113 -apple-system,
114 BlinkMacSystemFont,
115 "Segoe UI",
116 Roboto,
117 sans-serif;
118 color: rgb(51, 51, 51);
119 line-height: 1.4;
120 min-height: 100vh;
121 width: 100%;
122 position: relative;
123 overflow-x: hidden;
124 }
125 .app-header {
126 flex-grow: 0;
127 }
128 .view-container {
129 flex-grow: 2;
130 }
131 </style>
Sean McCullough86b56862025-04-18 13:04:03 -0700132 </head>
133 <body>
Sean McCullough2c5bba42025-04-20 19:33:17 -0700134 <div class="app-shell">
135 <div class="app-header">
136 <h1>sketch-timeline demo</h1>
137 <input
138 type="checkbox"
139 id="addMessages"
140 title="Automatically add new messages"
141 /><label for="addMessages">Automatically add new messages</label>
142 </div>
143 <div class="view-container">
144 <div class="chat-view view-active">
145 <sketch-timeline></sketch-timeline>
146 </div>
147 </div>
148 </div>
Sean McCullough86b56862025-04-18 13:04:03 -0700149 </body>
Sean McCullough71941bd2025-04-18 13:31:48 -0700150</html>