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