1import { p as prop, e as init, i as if_block, k as each, f as set_style, u as index, b as set_class, g as spread_props, d as bind_this, a as set_attribute, h as clsx, r as rest_props } from './i18n-CMo5lpzy.js'; 2import { a as append, f as from_svg, R as push, a1 as legacy_pre_effect, x as set, G as deep_read_state, a2 as legacy_pre_effect_reset, S as first_child, z as untrack, X as sibling, w as get, T as pop, a3 as mutable_source, U as flushSync, V as child, Y as reset, t as template_effect, a0 as set_text, Z as event, W as from_html, ad as derived_safe_equal, a4 as createEventDispatcher, ae as onDestroy, a6 as comment, y as user_effect, u as state, a5 as user_derived, a7 as text, a8 as next, as as mutate, ak as remove_textarea_child, al as autofocus, aa as onMount, M as tick } from './index-BvBk1Iap.js'; 3import { a as action } from './actions-Cit_UA5S.js'; 4import { u as uploadToHuggingFace, S as ShareError, a as copy, G as Gradio } from './utils.svelte-CYLB_jIA.js'; 5import { b as bind_value } from './input-C317uaXR.js'; 6import { I as Image } from './Image-CDw5qb5O.js'; 7import { I as IconButton, c as component } from './ScrollFade.svelte_svelte_type_style_lang-Xm-PLg9E.js'; 8/* empty css */ 9import { C as Check } from './Check-BlnBgjLT.js'; 10import { C as Copy } from './Copy-DFFray7x.js'; 11import { C as Clear } from './Clear-Dgs5UhTO.js'; 12import { D as Download } from './Download-pFhUaTl4.js'; 13import { E as Edit } from './Edit-Dr58YXBX.js'; 14import { U as Undo } from './Undo-BxcJDM8E.js'; 15import { D as DownloadLink } from './DownloadLink-KvrFKyMn.js'; 16import { S as ShareButton, C as Community } from './ShareButton-Dz0y1C1K.js'; 17import { I as IconButtonWrapper } from './IconButtonWrapper-Ba0GidgU.js'; 18import { F as File } from './File-_cC4Z_uD.js'; 19import { b as bubble_event } from './misc-ByVveAau.js'; 20import { M as MarkdownCode } from './MarkdownCode-Cg7CjFvQ.js'; 21import { t as transition, s as slide } from './StreamingBar.svelte_svelte_type_style_lang-CdFIGsJa.js'; 22import { s as stopPropagation } from './event-modifiers-DanhKw3_.js'; 23import { T as Trash } from './Trash-CGTLExrZ.js'; 24import { M as Music } from './Music-D0NN2hV9.js'; 25import { B as Block } from './Block-Bx3BikCN.js'; 26import { B as BlockLabel } from './BlockLabel-oGSqUii_.js'; 27import { S as Static } from './index-Lz7fsHFt.js'; 28import './clone-DaB-S2nH.js'; 29/* empty css */ 30import './snippet-Bl5YVoCg.js'; 31import './html-CdUEtR5E.js'; 32import './prism-python-CbXMXbdR.js'; 33import './index-C7e-J7CF.js'; 34 35var root$f = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M17.74 30L16 29l4-7h6a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h9v2H6a4 4 0 0 1-4-4V8a4 4 0 0 1 4-4h20a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4h-4.84Z"></path><path fill="currentColor" d="M8 10h16v2H8zm0 6h10v2H8z"></path></svg>`); 36 37function Chat($$anchor) { 38 var svg = root$f(); 39 40 append($$anchor, svg); 41} 42 43var root$e = from_svg(`<svg class="dropdown-arrow svelte-1w1fnc7" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 18 18"><circle cx="9" cy="9" r="8" class="circle svelte-1w1fnc7"></circle><path d="M5 8l4 4 4-4z"></path></svg>`); 44 45function DropdownCircularArrow($$anchor) { 46 var svg = root$e(); 47 48 append($$anchor, svg); 49} 50 51var root$d = from_svg(`<svg width="100%" height="100%" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" color="currentColor"><path d="M19.1679 9C18.0247 6.46819 15.3006 4.5 11.9999 4.5C8.31459 4.5 5.05104 7.44668 4.54932 11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M16 9H19.4C19.7314 9 20 8.73137 20 8.4V5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M4.88146 15C5.92458 17.5318 8.64874 19.5 12.0494 19.5C15.7347 19.5 18.9983 16.5533 19.5 13" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8.04932 15H4.64932C4.31795 15 4.04932 15.2686 4.04932 15.6V19" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>`); 52 53function Retry($$anchor) { 54 var svg = root$d(); 55 56 append($$anchor, svg); 57} 58
59var root$c = from_svg(`<svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 20L12 4M12 20L7 15M12 20L17 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>`); 60 61function ScrollDownArrow($$anchor) { 62 var svg = root$c(); 63 64 append($$anchor, svg); 65} 66 67const format_chat_for_sharing = async (chat, url_length_limit = 1800) => { 68 let messages_to_share = [...chat]; 69 let formatted = await format_messages(messages_to_share); 70 if (formatted.length > url_length_limit && messages_to_share.length > 2) { 71 const first_message = messages_to_share[0]; 72 const last_message = messages_to_share[messages_to_share.length - 1]; 73 messages_to_share = [first_message, last_message]; 74 formatted = await format_messages(messages_to_share); 75 } 76 if (formatted.length > url_length_limit && messages_to_share.length > 0) { 77 const truncated_messages = messages_to_share.map((msg) => { 78 if (msg.type === "text") { 79 const max_length = Math.floor(url_length_limit / messages_to_share.length) - 20; 80 if (msg.content.length > max_length) { 81 return { 82 ...msg, 83 content: msg.content.substring(0, max_length) + "..." 84 }; 85 } 86 } 87 return msg; 88 }); 89 messages_to_share = truncated_messages; 90 formatted = await format_messages(messages_to_share); 91 } 92 return formatted; 93}; 94const format_messages = async (chat) => { 95 let messages = await Promise.all( 96 chat.map(async (message) => { 97 if (message.role === "system") return ""; 98 let speaker_emoji = message.role === "user" ? "ð" : "ð¤"; 99 let html_content = ""; 100 if (message.type === "text") { 101 const regexPatterns = { 102 audio: /<audio.*?src="(\/file=.*?)"/g, 103 video: /<video.*?src="(\/file=.*?)"/g, 104 image: /<img.*?src="(\/file=.*?)".*?\/>|!\[.*?\]\((\/file=.*?)\)/g 105 }; 106 html_content = message.content; 107 for (let [_, regex] of Object.entries(regexPatterns)) { 108 let match; 109 while ((match = regex.exec(message.content)) !== null) { 110 const fileUrl = match[1] || match[2]; 111 const newUrl = await uploadToHuggingFace(fileUrl); 112 html_content = html_content.replace(fileUrl, newUrl); 113 } 114 } 115 } else { 116 if (!message.content.value) return ""; 117 const url = message.content.component === "video" ? message.content.value?.video.path : message.content.value; 118 const file_url = await uploadToHuggingFace(url); 119 if (message.content.component === "audio") { 120 html_content = `<audio controls src="${file_url}"></audio>`; 121 } else if (message.content.component === "video") { 122 html_content = file_url; 123 } else if (message.content.component === "image") { 124 html_content = `<img src="${file_url}" />`; 125 } 126 } 127 return `${speaker_emoji}: ${html_content}`; 128 }) 129 ); 130 return messages.filter((msg) => msg !== "").join("\n"); 131}; 132const redirect_src_url = (src, root) => src.replace('src="/file', `src="${root}file`); 133function get_component_for_mime_type(mime_type, file) { 134 if (!mime_type) { 135 const path = file?.path; 136 if (path) { 137 const lower_path = path.toLowerCase(); 138 if (lower_path.endsWith(".glb") || lower_path.endsWith(".gltf") || lower_path.endsWith(".obj") || lower_path.endsWith(".stl") || lower_path.endsWith(".splat") || lower_path.endsWith(".ply")) { 139 return "model3d"; 140 } 141 } 142 return "file"; 143 } 144 if (mime_type.includes("audio")) return "audio"; 145 if (mime_type.includes("video")) return "video"; 146 if (mime_type.includes("image")) return "image"; 147 if (mime_type.includes("model")) return "model3d"; 148 return "file"; 149} 150function convert_file_message_to_component_message(message) { 151 const _file = Array.isArray(message.file) ? message.file[0] : message.file; 152 const component = get_component_for_mime_type(_file?.mime_type, _file); 153 return { 154 component, 155 value: component === "file" ? Array.isArray(message.file) ? message.file : [message.file] : message.file, 156 alt_text: message.alt_text, 157 constructor_args: {}, 158 props: {} 159 }; 160} 161function normalise_message(message, content, root, i) { 162 let normalized; 163 if (content.type === "text") { 164 normalized = { 165 role: message.role, 166 metadata: message.metadata, 167 content: redirect_src_url(content.text, root), 168 type: "text", 169 index: i, 170 options: message.options 171 }; 172 } else if (content.type === "file") { 173 normalized = { 174 role: message.role, 175 metadata: message.metadata, 176 content: convert_file_message_to_component_message(content), 177 type: "component", 178 index: i, 179 options: message.options 180 }; 181 } else { 182 normalized = { 183 role: message.role, 184 metadata: message.metadata, 185 content, 186 type: "component", 187 index: i, 188 options: message.options 189 }; 190 } 191 return normalized; 192} 193function normalise_messages(messages, root) { 194 if (messages === null) return messages; 195 const thought_map = /* @__PURE__ */ new Map(); 196 return messages.flatMap((message, i) => { 197 const normalized = message.content.map( 198 (content) => normalise_message(message, content, root, i) 199 ); 200 for (const msg of normalized) { 201 const { id, title, parent_id } = message.metadata || {}; 202 if (parent_id) { 203 const parent = thought_map.get(String(parent_id)); 204 if (parent) { 205 const thought = { ...msg, children: [] }; 206 parent.children.push(thought); 207 if (id && title) { 208 thought_map.set(String(id), thought); 209 } 210 return null; 211 } 212 } 213 if (id && title) { 214 const thought = { ...msg, children: [] }; 215 thought_map.set(String(id), thought); 216 return thought; 217 } 218 } 219 return normalized; 220 }).filter((msg) => msg !== null); 221} 222function is_component_message(message) { 223 return message.type === "component"; 224} 225function is_last_bot_message(messages, all_messages) { 226 const is_bot = messages[messages.length - 1].role === "assistant"; 227 const last_index = messages[messages.length - 1].index; 228 const is_last = JSON.stringify(last_index) === JSON.stringify(all_messages[all_messages.length - 1].index); 229 return is_last && is_bot; 230} 231function group_messages(messages, display_consecutive_in_same_bubble = true) { 232 const groupedMessages = []; 233 let currentGroup = []; 234 let currentRole = null; 235 for (const message of messages) { 236 if (!(message.role === "assistant" || message.role === "user")) { 237 continue; 238 } 239 if (!display_consecutive_in_same_bubble) { 240 groupedMessages.push([message]); 241 continue; 242 } 243 if (message.role === currentRole) { 244 currentGroup.push(message); 245 } else { 246 if (currentGroup.length > 0) { 247 groupedMessages.push(currentGroup); 248 } 249 currentGroup = [message]; 250 currentRole = message.role; 251 } 252 } 253 if (currentGroup.length > 0) { 254 groupedMessages.push(currentGroup); 255 } 256 return groupedMessages; 257} 258async function load_components(component_names, _components, load_component) { 259 for (const component_name of component_names) { 260 if (_components[component_name] || component_name === "file") { 261 continue; 262 } 263 const variant = component_name === "dataframe" ? "component" : "base"; 264 const { component } = load_component(component_name, variant); 265 const comp = await component; 266 _components[component_name] = comp.default; 267 } 268 return _components; 269} 270function get_components_from_messages(messages) { 271 if (!messages) return []; 272 let components = /* @__PURE__ */ new Set();
273 messages.forEach((message) => { 274 if (message.type === "component") { 275 components.add(message.content.component); 276 } 277 }); 278 return Array.from(components); 279} 280function get_thought_content(msg, depth = 0) { 281 let content = ""; 282 const indent = " ".repeat(depth); 283 if (msg.metadata?.title) { 284 content += `${indent}${depth > 0 ? "- " : ""}${msg.metadata.title} 285`; 286 } 287 if (typeof msg.content === "string") { 288 content += `${indent} ${msg.content} 289`; 290 } 291 const thought = msg; 292 if (thought.children?.length > 0) { 293 content += thought.children.map((child) => get_thought_content(child, depth + 1)).join(""); 294 } 295 return content; 296} 297function all_text(message) { 298 if (Array.isArray(message)) { 299 return message.map((m) => { 300 if (m.metadata?.title) { 301 return get_thought_content(m); 302 } 303 return m.content; 304 }).join("\n"); 305 } 306 if (message.metadata?.title) { 307 return get_thought_content(message); 308 } 309 return message.content; 310} 311function is_all_text(message) { 312 return Array.isArray(message) && message.every((m) => typeof m.content === "string") || !Array.isArray(message) && typeof message.content === "string"; 313} 314 315var root$b = from_svg(`<svg width="100%" height="100%" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.25 6.61523H9.375V1.36523H11.25V6.61523ZM3.375 1.36523H8.625V6.91636L7.48425 8.62748L7.16737 10.8464C7.14108 11.0248 7.05166 11.1879 6.91535 11.3061C6.77904 11.4242 6.60488 11.4896 6.4245 11.4902H6.375C6.07672 11.4899 5.79075 11.3713 5.57983 11.1604C5.36892 10.9495 5.2503 10.6635 5.25 10.3652V8.11523H2.25C1.85233 8.11474 1.47109 7.95654 1.18989 7.67535C0.908691 7.39415 0.750496 7.01291 0.75 6.61523V3.99023C0.750992 3.29435 1.02787 2.62724 1.51994 2.13517C2.01201 1.64311 2.67911 1.36623 3.375 1.36523Z" fill="currentColor"></path></svg>`); 316 317function ThumbDownActive($$anchor) { 318 var svg = root$b(); 319 320 append($$anchor, svg); 321} 322 323var root$a = from_svg(`<svg width="100%" height="100%" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2.25 8.11523H4.5V10.3652C4.5003 10.6635 4.61892 10.9495 4.82983 11.1604C5.04075 11.3713 5.32672 11.4899 5.625 11.4902H6.42488C6.60519 11.4895 6.77926 11.4241 6.91549 11.3059C7.05172 11.1878 7.14109 11.0248 7.16737 10.8464L7.48425 8.62748L8.82562 6.61523H11.25V1.36523H3.375C2.67911 1.36623 2.01201 1.64311 1.51994 2.13517C1.02787 2.62724 0.750992 3.29435 0.75 3.99023V6.61523C0.750496 7.01291 0.908691 7.39415 1.18989 7.67535C1.47109 7.95654 1.85233 8.11474 2.25 8.11523ZM9 2.11523H10.5V5.86523H9V2.11523ZM1.5 3.99023C1.5006 3.49314 1.69833 3.01657 2.04983 2.66507C2.40133 2.31356 2.8779 2.11583 3.375 2.11523H8.25V6.12661L6.76575 8.35298L6.4245 10.7402H5.625C5.52554 10.7402 5.43016 10.7007 5.35983 10.6304C5.28951 10.5601 5.25 10.4647 5.25 10.3652V7.36523H2.25C2.05118 7.36494 1.86059 7.28582 1.72 7.14524C1.57941 7.00465 1.5003 6.81406 1.5 6.61523V3.99023Z" fill="currentColor"></path></svg>`); 324 325function ThumbDownDefault($$anchor) { 326 var svg = root$a(); 327 328 append($$anchor, svg); 329} 330 331var root$9 = from_svg(`<svg width="100%" height="100%" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.75 6.24023H2.625V11.4902H0.75V6.24023ZM8.625 11.4902H3.375V5.93911L4.51575 4.22798L4.83263 2.00911C4.85892 1.83065 4.94834 1.66754 5.08465 1.5494C5.22096 1.43125 5.39512 1.36591 5.5755 1.36523H5.625C5.92328 1.36553 6.20925 1.48415 6.42017 1.69507C6.63108 1.90598 6.7497 2.19196 6.75 2.49023V4.74023H9.75C10.1477 4.74073 10.5289 4.89893 10.8101 5.18012C11.0913 5.46132 11.2495 5.84256 11.25 6.24023V8.86523C11.249 9.56112 10.9721 10.2282 10.4801 10.7203C9.98799 11.2124 9.32089 11.4892 8.625 11.4902Z" fill="currentColor"></path></svg>`); 332 333function ThumbUpActive($$anchor) { 334 var svg = root$9(); 335 336 append($$anchor, svg); 337} 338 339var root$8 = from_svg(`<svg width="100%" height="100%" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 4.74023H7.5V2.49023C7.4997 2.19196 7.38108 1.90598 7.17017 1.69507C6.95925 1.48415 6.67328 1.36553 6.375 1.36523H5.57512C5.39481 1.366 5.22074 1.43138 5.08451 1.54952C4.94828 1.66766 4.85891 1.83072 4.83262 2.00911L4.51575 4.22798L3.17438 6.24023H0.75V11.4902H8.625C9.32089 11.4892 9.98799 11.2124 10.4801 10.7203C10.9721 10.2282 11.249 9.56112 11.25 8.86523V6.24023C11.2495 5.84256 11.0913 5.46132 10.8101 5.18012C10.5289 4.89893 10.1477 4.74073 9.75 4.74023ZM3 10.7402H1.5V6.99
339023H3V10.7402ZM10.5 8.86523C10.4994 9.36233 10.3017 9.8389 9.95017 10.1904C9.59867 10.5419 9.1221 10.7396 8.625 10.7402H3.75V6.72886L5.23425 4.50248L5.5755 2.11523H6.375C6.47446 2.11523 6.56984 2.15474 6.64017 2.22507C6.71049 2.2954 6.75 2.39078 6.75 2.49023V5.49023H9.75C9.94882 5.49053 10.1394 5.56965 10.28 5.71023C10.4206 5.85082 10.4997 6.04141 10.5 6.24023V8.86523Z" fill="currentColor"></path></svg>`); 340 341function ThumbUpDefault($$anchor) { 342 var svg = root$8(); 343 344 append($$anchor, svg); 345} 346 347var root$7 = from_svg(`<svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none"><path fill="currentColor" d="M6,30H4V2H28l-5.8,9L28,20H6ZM6,18H24.33L19.8,11l4.53-7H6Z"></path></svg>`); 348 349function Flag($$anchor) { 350 var svg = root$7(); 351 352 append($$anchor, svg); 353} 354 355var root$6 = from_svg(`<svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none"><path fill="currentColor" d="M4,2H28l-5.8,9L28,20H6v10H4V2z"></path></svg>`); 356 357function FlagActive($$anchor) { 358 var svg = root$6(); 359 360 append($$anchor, svg); 361} 362 363var root_1$7 = from_html(`<!> <!>`, 1); 364var root_5$1 = from_html(`<button class="extra-feedback-option svelte-fvat56"> </button>`); 365var root_4$4 = from_html(`<div class="extra-feedback no-border svelte-fvat56"><!> <div class="extra-feedback-options svelte-fvat56"></div></div>`); 366var root$5 = from_html(`<!> <!>`, 1); 367 368function LikeDislike($$anchor, $$props) { 369 push($$props, false); 370 371 const extra_feedback = mutable_source(); 372 let i18n = prop($$props, 'i18n', 12); 373 let handle_action = prop($$props, 'handle_action', 12); 374 let feedback_options = prop($$props, 'feedback_options', 12); 375 let selected = prop($$props, 'selected', 12, null); 376 377 function toggleSelection(newSelection) { 378 selected(selected() === newSelection ? null : newSelection); 379 handle_action()(selected()); 380 } 381 382 legacy_pre_effect(() => (deep_read_state(feedback_options())), () => { 383 set(extra_feedback, feedback_options().filter((option) => option !== "Like" && option !== "Dislike")); 384 }); 385 386 legacy_pre_effect_reset(); 387 388 var $$exports = { 389 get i18n() { 390 return i18n(); 391 }, 392 393 set i18n($$value) { 394 i18n($$value); 395 flushSync(); 396 }, 397 398 get handle_action() { 399 return handle_action(); 400 }, 401 402 set handle_action($$value) { 403 handle_action($$value); 404 flushSync(); 405 }, 406 407 get feedback_options() { 408 return feedback_options(); 409 }, 410 411 set feedback_options($$value) { 412 feedback_options($$value); 413 flushSync(); 414 }, 415 416 get selected() { 417 return selected(); 418 }, 419 420 set selected($$value) { 421 selected($$value); 422 flushSync(); 423 } 424 }; 425 426 init(); 427 428 var fragment = root$5(); 429 var node = first_child(fragment); 430 431 { 432 var consequent_2 = ($$anchor) => { 433 var fragment_1 = root_1$7(); 434 var node_1 = first_child(fragment_1); 435 436 { 437 var consequent = ($$anchor) => { 438 { 439 let $0 = derived_safe_equal(() => selected() === "Dislike" ? ThumbDownActive : ThumbDownDefault); 440 441 let $1 = derived_safe_equal(() => ( 442 deep_read_state(selected()), 443 deep_read_state(i18n()), 444 untrack(() => selected() === "Dislike" ? "Disliked" : i18n()("chatbot.dislike")) 445 )); 446 447 let $2 = derived_safe_equal(() => selected() === "Dislike" 448 ? "var(--color-accent)" 449 : "var(--block-label-text-color)"); 450 451 IconButton($$anchor, { 452 get Icon() { 453 return get($0); 454 }, 455 456 get label() { 457 return get($1); 458 }, 459 460 get color() { 461 return get($2); 462 }, 463 onclick: () => toggleSelection("Dislike") 464 }); 465 } 466 }; 467 468 if_block(node_1, ($$render) => { 469 if (( 470 deep_read_state(feedback_options()), 471 untrack(() => feedback_options().includes("Dislike")) 472 )) $$render(consequent); 473 }); 474 } 475 476 var node_2 = sibling(node_1, 2); 477 478 { 479 var consequent_1 = ($$anchor) => { 480 { 481 let $0 = derived_safe_equal(() => selected() === "Like" ? ThumbUpActive : ThumbUpDefault); 482 483 let $1 = derived_safe_equal(() => ( 484 deep_read_state(selected()), 485 deep_read_state(i18n()), 486 untrack(() => selected() === "Like" ? "Liked" : i18n()("chatbot.like")) 487 )); 488 489 let $2 = derived_safe_equal(() => selected() === "Like" 490 ? "var(--color-accent)" 491 : "var(--block-label-text-color)"); 492 493 IconButton($$anchor, { 494 get Icon() { 495 return get($0); 496 }, 497 498 get label() { 499 return get($1); 500 }, 501 502 get color() { 503 return get($2); 504 }, 505 onclick: () => toggleSelection("Like") 506 }); 507 } 508 }; 509 510 if_block(node_2, ($$render) => { 511 if (( 512 deep_read_state(feedback_options()), 513 untrack(() => feedback_options().includes("Like")) 514 )) $$render(consequent_1); 515 }); 516 } 517 518 append($$anchor, fragment_1); 519 }; 520 521 if_block(node, ($$render) => { 522 if (( 523 deep_read_state(feedback_options()), 524 untrack(() => feedback_options().includes("Like") || feedback_options().includes("Dislike")) 525 )) $$render(consequent_2); 526 }); 527 } 528 529 var node_3 = sibling(node, 2); 530 531 { 532 var consequent_3 = ($$anchor) => { 533 var div = root_4$4(); 534 var node_4 = child(div); 535 536 { 537 let $0 = derived_safe_equal(() => ( 538 deep_read_state(selected()), 539 get(extra_feedback), 540 deep_read_state(FlagActive), 541 deep_read_state(Flag), 542 untrack(() => selected() && get(extra_feedback).includes(selected()) ? FlagActive : Flag) 543 )); 544 545 let $1 = derived_safe_equal(() => ( 546 deep_read_state(selected()), 547 get(extra_feedback), 548 untrack(() => selected() && get(extra_feedback).includes(selected()) 549 ? "var(--color-accent)" 550 : "var(--block-label-text-color)") 551 )); 552 553 IconButton(node_4, { 554 get Icon() { 555 return get($0); 556 }, 557 label: 'Feedback', 558 get color() { 559 return get($1); 560 } 561 }); 562 } 563 564 var div_1 = sibling(node_4, 2); 565 566 each(div_1, 5, () => get(extra_feedback), index, ($$anchor, option) => { 567 var button = root_5$1(); 568 let styles; 569 var text = child(button, true); 570 571 reset(button); 572 573 template_effect(() => { 574 styles = set_style(button, '', styles, { 575 'font-weight': selected() === get(option) ? "bold" : "normal" 576 }); 577 578 set_text(text, get(option)); 579 }); 580 581 event('click', button, () => { 582 toggleSelection(get(option)); 583 handle_action()(selected() ? selected() : null); 584 }); 585 586 append($$anchor, button); 587 }); 588 589 reset(div_1); 590 reset(div); 591 append($$anchor, div); 592 }; 593 594 if_block(node_3, ($$render) => { 595 if (( 596 get(extra_feedback), 597 untrack(() => get(extra_feedback).length > 0) 598 )) $$render(consequent_3); 599 }); 600 } 601 602 append($$anchor, fragment); 603 604 return pop($$exports); 605} 606 607function Copy_1($$anchor, $$props) { 608 push($$props, false); 609 610 const dispatch = createEventDispatcher(); 611 let copied = mutable_source(false); 612 let value = prop($$props, 'value', 12); 613 let watermark = prop($$props, 'watermark', 12, null); 614 let i18n = prop($$props, 'i18n', 12); 615 let timer; 616 617 function copy_feedback() { 618 set(copied, true); 619 620 if (timer) clearTimeout(timer); 621 622 timer = setTimeout( 623 () => { 624 set(copied, false); 625 }, 626 2000 627 ); 628 } 629 630 async function handle_copy() { 631 if ("clipboard" in navigator) { 632 dispatch("copy", { value: value() }); 633
634 const text_to_copy = watermark() ? `${value()}\n\n${watermark()}` : value(); 635 636 await navigator.clipboard.writeText(text_to_copy); 637 copy_feedback(); 638 } else { 639 const textArea = document.createElement("textarea"); 640 const text_to_copy = watermark() ? `${value()}\n\n${watermark()}` : value(); 641 642 textArea.value = text_to_copy; 643 textArea.style.position = "absolute"; 644 textArea.style.left = "-999999px"; 645 document.body.prepend(textArea); 646 textArea.select(); 647 648 try { 649 document.execCommand("copy"); 650 copy_feedback(); 651 } catch(error) { 652 console.error(error); 653 } finally { 654 textArea.remove(); 655 } 656 } 657 } 658 659 onDestroy(() => { 660 if (timer) clearTimeout(timer); 661 }); 662 663 var $$exports = { 664 get value() { 665 return value(); 666 }, 667 668 set value($$value) { 669 value($$value); 670 flushSync(); 671 }, 672 673 get watermark() { 674 return watermark(); 675 }, 676 677 set watermark($$value) { 678 watermark($$value); 679 flushSync(); 680 }, 681 682 get i18n() { 683 return i18n(); 684 }, 685 686 set i18n($$value) { 687 i18n($$value); 688 flushSync(); 689 } 690 }; 691 692 init(); 693 694 { 695 let $0 = derived_safe_equal(() => ( 696 get(copied), 697 deep_read_state(i18n()), 698 untrack(() => get(copied) 699 ? i18n()("chatbot.copied_message") 700 : i18n()("chatbot.copy_message")) 701 )); 702 703 let $1 = derived_safe_equal(() => get(copied) ? Check : Copy); 704 705 IconButton($$anchor, { 706 onclick: handle_copy, 707 get label() { 708 return get($0); 709 }, 710 711 get Icon() { 712 return get($1); 713 } 714 }); 715 } 716 717 return pop($$exports); 718} 719 720var root_3$2 = from_html(`<!> <!>`, 1); 721var root_4$3 = from_html(`<!> <!> <!> <!> <!> <!> <!>`, 1); 722var root_1$6 = from_html(`<div><!></div>`); 723 724function ButtonPanel($$anchor, $$props) { 725 push($$props, false); 726 727 const message_text = mutable_source(); 728 const show_copy = mutable_source(); 729 let i18n = prop($$props, 'i18n', 12); 730 let likeable = prop($$props, 'likeable', 12); 731 let feedback_options = prop($$props, 'feedback_options', 12); 732 let show_retry = prop($$props, 'show_retry', 12); 733 let show_undo = prop($$props, 'show_undo', 12); 734 let show_edit = prop($$props, 'show_edit', 12); 735 let in_edit_mode = prop($$props, 'in_edit_mode', 12); 736 let show_copy_button = prop($$props, 'show_copy_button', 12); 737 let watermark = prop($$props, 'watermark', 12, null); 738 let message = prop($$props, 'message', 12); 739 let position = prop($$props, 'position', 12); 740 let avatar = prop($$props, 'avatar', 12); 741 let generating = prop($$props, 'generating', 12); 742 let current_feedback = prop($$props, 'current_feedback', 12); 743 let file = prop($$props, 'file', 12, null); 744 let show_download_button = prop($$props, 'show_download_button', 12, false); 745 let show_share_button = prop($$props, 'show_share_button', 12, false); 746 let handle_action = prop($$props, 'handle_action', 12); 747 let layout = prop($$props, 'layout', 12); 748 let dispatch = prop($$props, 'dispatch', 12); 749 750 legacy_pre_effect(() => (deep_read_state(message()), all_text), () => { 751 set(message_text, is_all_text(message()) ? all_text(message()) : ""); 752 }); 753 754 legacy_pre_effect( 755 () => ( 756 deep_read_state(show_copy_button()), 757 deep_read_state(message()), 758 is_all_text 759 ), 760 () => { 761 set(show_copy, show_copy_button() && message() && is_all_text(message())); 762 } 763 ); 764 765 legacy_pre_effect_reset(); 766 767 var $$exports = { 768 get i18n() { 769 return i18n(); 770 }, 771 772 set i18n($$value) { 773 i18n($$value); 774 flushSync(); 775 }, 776 777 get likeable() { 778 return likeable(); 779 }, 780 781 set likeable($$value) { 782 likeable($$value); 783 flushSync(); 784 }, 785 786 get feedback_options() { 787 return feedback_options(); 788 }, 789 790 set feedback_options($$value) { 791 feedback_options($$value); 792 flushSync(); 793 }, 794 795 get show_retry() { 796 return show_retry(); 797 }, 798 799 set show_retry($$value) { 800 show_retry($$value); 801 flushSync(); 802 }, 803 804 get show_undo() { 805 return show_undo(); 806 }, 807 808 set show_undo($$value) { 809 show_undo($$value); 810 flushSync(); 811 }, 812 813 get show_edit() { 814 return show_edit(); 815 }, 816 817 set show_edit($$value) { 818 show_edit($$value); 819 flushSync(); 820 }, 821 822 get in_edit_mode() { 823 return in_edit_mode(); 824 }, 825 826 set in_edit_mode($$value) { 827 in_edit_mode($$value); 828 flushSync(); 829 }, 830 831 get show_copy_button() { 832 return show_copy_button(); 833 }, 834 835 set show_copy_button($$value) { 836 show_copy_button($$value); 837 flushSync(); 838 }, 839 840 get watermark() { 841 return watermark(); 842 }, 843 844 set watermark($$value) { 845 watermark($$value); 846 flushSync(); 847 }, 848 849 get message() { 850 return message(); 851 }, 852 853 set message($$value) { 854 message($$value); 855 flushSync(); 856 }, 857 858 get position() { 859 return position(); 860 }, 861 862 set position($$value) { 863 position($$value); 864 flushSync(); 865 }, 866 867 get avatar() { 868 return avatar(); 869 }, 870 871 set avatar($$value) { 872 avatar($$value); 873 flushSync(); 874 }, 875
876 get generating() { 877 return generating(); 878 }, 879 880 set generating($$value) { 881 generating($$value); 882 flushSync(); 883 }, 884 885 get current_feedback() { 886 return current_feedback(); 887 }, 888 889 set current_feedback($$value) { 890 current_feedback($$value); 891 flushSync(); 892 }, 893 894 get file() { 895 return file(); 896 }, 897 898 set file($$value) { 899 file($$value); 900 flushSync(); 901 }, 902 903 get show_download_button() { 904 return show_download_button(); 905 }, 906 907 set show_download_button($$value) { 908 show_download_button($$value); 909 flushSync(); 910 }, 911 912 get show_share_button() { 913 return show_share_button(); 914 }, 915 916 set show_share_button($$value) { 917 show_share_button($$value); 918 flushSync(); 919 }, 920 921 get handle_action() { 922 return handle_action(); 923 }, 924 925 set handle_action($$value) { 926 handle_action($$value); 927 flushSync(); 928 }, 929 930 get layout() { 931 return layout(); 932 }, 933 934 set layout($$value) { 935 layout($$value); 936 flushSync(); 937 }, 938 939 get dispatch() { 940 return dispatch(); 941 }, 942 943 set dispatch($$value) { 944 dispatch($$value); 945 flushSync(); 946 } 947 }; 948 949 init(); 950 951 var fragment = comment(); 952 var node = first_child(fragment); 953 954 { 955 var consequent_8 = ($$anchor) => { 956 var div = root_1$6(); 957 var node_1 = child(div); 958 959 IconButtonWrapper(node_1, { 960 top_panel: false, 961 children: ($$anchor, $$slotProps) => { 962 var fragment_1 = comment(); 963 var node_2 = first_child(fragment_1); 964 965 { 966 var consequent = ($$anchor) => { 967 var fragment_2 = root_3$2(); 968 var node_3 = first_child(fragment_2); 969 970 { 971 let $0 = derived_safe_equal(() => ( 972 deep_read_state(i18n()), 973 untrack(() => i18n()("chatbot.submit")) 974 )); 975 976 IconButton(node_3, { 977 get label() { 978 return get($0); 979 }, 980 981 get Icon() { 982 return Check; 983 }, 984 onclick: () => handle_action()("edit_submit"), 985 get disabled() { 986 return generating(); 987 } 988 }); 989 } 990 991 var node_4 = sibling(node_3, 2); 992 993 { 994 let $0 = derived_safe_equal(() => ( 995 deep_read_state(i18n()), 996 untrack(() => i18n()("chatbot.cancel")) 997 )); 998 999 IconButton(node_4, { 1000 get label() { 1001 return get($0); 1002 }, 1003 1004 get Icon() { 1005 return Clear; 1006 }, 1007 onclick: () => handle_action()("edit_cancel"), 1008 get disabled() { 1009 return generating(); 1010 } 1011 }); 1012 } 1013 1014 append($$anchor, fragment_2); 1015 }; 1016 1017 var alternate = ($$anchor) => { 1018 var fragment_3 = root_4$3(); 1019 var node_5 = first_child(fragment_3); 1020 1021 { 1022 var consequent_1 = ($$anchor) => { 1023 Copy_1($$anchor, { 1024 get value() { 1025 return get(message_text); 1026 }, 1027 1028 get watermark() { 1029 return watermark(); 1030 }, 1031 1032 get i18n() { 1033 return i18n(); 1034 }, 1035 $$events: { copy: (e) => dispatch()("copy", e.detail) } 1036 }); 1037 }; 1038 1039 if_block(node_5, ($$render) => { 1040 if (get(show_copy)) $$render(consequent_1); 1041 }); 1042 } 1043 1044 var node_6 = sibling(node_5, 2); 1045 1046 { 1047 var consequent_2 = ($$anchor) => { 1048 { 1049 let $0 = derived_safe_equal(() => ( 1050 deep_read_state(file()), 1051 untrack(() => file().is_stream 1052 ? file().url?.replace("playlist.m3u8", "playlist-file") 1053 : file().url) 1054 )); 1055 1056 let $1 = derived_safe_equal(() => ( 1057 deep_read_state(file()), 1058 untrack(() => file().orig_name || file().path || "file") 1059 )); 1060 1061 DownloadLink($$anchor, { 1062 get href() { 1063 return get($0); 1064 }, 1065 1066 get download() { 1067 return get($1); 1068 }, 1069 1070 children: ($$anchor, $$slotProps) => { 1071 { 1072 let $0 = derived_safe_equal(() => ( 1073 deep_read_state(i18n()), 1074 untrack(() => i18n()("common.download")) 1075 )); 1076 1077 IconButton($$anchor, { 1078 get Icon() { 1079 return Download; 1080 }, 1081 1082 get label() { 1083 return get($0); 1084 } 1085 }); 1086 } 1087 }, 1088 $$slots: { default: true } 1089 }); 1090 } 1091 }; 1092 1093 if_block(node_6, ($$render) => { 1094 if (( 1095 deep_read_state(show_download_button()), 1096 deep_read_state(file()), 1097 untrack(() => show_download_button() && file()?.url) 1098 )) $$render(consequent_2); 1099 }); 1100 } 1101 1102 var node_7 = sibling(node_6, 2); 1103 1104 { 1105 var consequent_3 = ($$anchor) => { 1106 ShareButton($$anchor, { 1107 get i18n() { 1108 return i18n(); 1109 }, 1110 1111 formatter: async (value) => { 1112 if (!value) return ""; 1113 1114 let url = await uploadToHuggingFace(value.url); 1115 const mime_type = value.mime_type || ""; 1116 1117 if (mime_type.startsWith("audio/")) { 1118 return `<audio controls src="${url}"></audio>`; 1119 } else if (mime_type.startsWith("video/")) { 1120 return `<video controls src="${url}"></video>`; 1121 } else if (mime_type.startsWith("image/")) { 1122 return `<img src="${url}" />`; 1123 } 1124 1125 return ""; 1126 }, 1127 1128 get value() { 1129 return file(); 1130 }, 1131 1132 $$events: { 1133 error: (e) => dispatch()("error", e.detail), 1134 share: (e) => dispatch()("share", e.detail) 1135 } 1136 }); 1137 }; 1138 1139 if_block(node_7, ($$render) => { 1140 if (show_share_button() && file()) $$render(consequent_3); 1141 }); 1142 } 1143 1144 var node_8 = sibling(node_7, 2); 1145 1146 { 1147 var consequent_4 = ($$anchor) => { 1148 { 1149 let $0 = derived_safe_equal(() => (
1150 deep_read_state(i18n()), 1151 untrack(() => i18n()("chatbot.retry")) 1152 )); 1153 1154 IconButton($$anchor, { 1155 get Icon() { 1156 return Retry; 1157 }, 1158 1159 get label() { 1160 return get($0); 1161 }, 1162 onclick: () => handle_action()("retry"), 1163 get disabled() { 1164 return generating(); 1165 } 1166 }); 1167 } 1168 }; 1169 1170 if_block(node_8, ($$render) => { 1171 if (show_retry()) $$render(consequent_4); 1172 }); 1173 } 1174 1175 var node_9 = sibling(node_8, 2); 1176 1177 { 1178 var consequent_5 = ($$anchor) => { 1179 { 1180 let $0 = derived_safe_equal(() => ( 1181 deep_read_state(i18n()), 1182 untrack(() => i18n()("chatbot.undo")) 1183 )); 1184 1185 IconButton($$anchor, { 1186 get label() { 1187 return get($0); 1188 }, 1189 1190 get Icon() { 1191 return Undo; 1192 }, 1193 onclick: () => handle_action()("undo"), 1194 get disabled() { 1195 return generating(); 1196 } 1197 }); 1198 } 1199 }; 1200 1201 if_block(node_9, ($$render) => { 1202 if (show_undo()) $$render(consequent_5); 1203 }); 1204 } 1205
1206 var node_10 = sibling(node_9, 2); 1207 1208 { 1209 var consequent_6 = ($$anchor) => { 1210 { 1211 let $0 = derived_safe_equal(() => ( 1212 deep_read_state(i18n()), 1213 untrack(() => i18n()("chatbot.edit")) 1214 )); 1215 1216 IconButton($$anchor, { 1217 get label() { 1218 return get($0); 1219 }, 1220 1221 get Icon() { 1222 return Edit; 1223 }, 1224 onclick: () => handle_action()("edit"), 1225 get disabled() { 1226 return generating(); 1227 } 1228 }); 1229 } 1230 }; 1231 1232 if_block(node_10, ($$render) => { 1233 if (show_edit()) $$render(consequent_6); 1234 }); 1235 } 1236 1237 var node_11 = sibling(node_10, 2); 1238 1239 { 1240 var consequent_7 = ($$anchor) => { 1241 LikeDislike($$anchor, { 1242 get handle_action() { 1243 return handle_action(); 1244 }, 1245 1246 get feedback_options() { 1247 return feedback_options(); 1248 }, 1249 1250 get selected() { 1251 return current_feedback(); 1252 }, 1253 1254 get i18n() { 1255 return i18n(); 1256 } 1257 }); 1258 }; 1259 1260 if_block(node_11, ($$render) => { 1261 if (likeable()) $$render(consequent_7); 1262 }); 1263 } 1264 1265 append($$anchor, fragment_3); 1266 }; 1267 1268 if_block(node_2, ($$render) => { 1269 if (in_edit_mode()) $$render(consequent); else $$render(alternate, false); 1270 }); 1271 } 1272 1273 append($$anchor, fragment_1); 1274 }, 1275 $$slots: { default: true } 1276 }); 1277 1278 reset(div); 1279 template_effect(() => set_class(div, 1, `message-buttons-${position() ?? ''} ${layout() ?? ''} message-buttons ${avatar() !== null && 'with-avatar'}`, 'svelte-704d7y')); 1280 append($$anchor, div); 1281 }; 1282 1283 if_block(node, ($$render) => { 1284 if (( 1285 get(show_copy), 1286 deep_read_state(show_retry()), 1287 deep_read_state(show_undo()), 1288 deep_read_state(show_edit()), 1289 deep_read_state(likeable()), 1290 deep_read_state(show_download_button()), 1291 deep_read_state(file()), 1292 deep_read_state(show_share_button()), 1293 untrack(() => get(show_copy) || show_retry() || show_undo() || show_edit() || likeable() || show_download_button() && file()?.url || show_share_button() && file()) 1294 )) $$render(consequent_8); 1295 }); 1296 } 1297 1298 append($$anchor, fragment); 1299 1300 return pop($$exports); 1301} 1302 1303var root_10$2 = from_html(`<track kind="captions"/>`); 1304var root_12$1 = from_html(`<div><!></div>`); 1305 1306function Component($$anchor, $$props) { 1307 push($$props, false); 1308 1309 let type = prop($$props, 'type', 12); 1310 let components = prop($$props, 'components', 12); 1311 let value = prop($$props, 'value', 12); 1312 let target = prop($$props, 'target', 12); 1313 let theme_mode = prop($$props, 'theme_mode', 12); 1314 let props = prop($$props, 'props', 12); 1315 let i18n = prop($$props, 'i18n', 12); 1316 let upload = prop($$props, 'upload', 12); 1317 let _fetch = prop($$props, '_fetch', 12); 1318 let allow_file_downloads = prop($$props, 'allow_file_downloads', 12); 1319 let display_icon_button_wrapper_top_corner = prop($$props, 'display_icon_button_wrapper_top_corner', 12, false); 1320 let image_fullscreen = mutable_source(false); 1321 let image_container = mutable_source(); 1322 1323 function handle_fullscreen(event) { 1324 set(image_fullscreen, event.detail); 1325 1326 if (get(image_fullscreen) && get(image_container)) { 1327 get(image_container).requestFullscreen?.(); 1328 } else if (document.fullscreenElement) { 1329 document.exitFullscreen?.(); 1330 } 1331 } 1332 1333 var $$exports = { 1334 get type() { 1335 return type(); 1336 }, 1337 1338 set type($$value) { 1339 type($$value); 1340 flushSync(); 1341 }, 1342 1343 get components() { 1344 return components(); 1345 }, 1346 1347 set components($$value) { 1348 components($$value); 1349 flushSync(); 1350 }, 1351 1352 get value() { 1353 return value(); 1354 }, 1355 1356 set value($$value) { 1357 value($$value); 1358 flushSync(); 1359 }, 1360 1361 get target() { 1362 return target(); 1363 }, 1364 1365 set target($$value) { 1366 target($$value); 1367 flushSync(); 1368 }, 1369 1370 get theme_mode() { 1371 return theme_mode(); 1372 }, 1373 1374 set theme_mode($$value) { 1375 theme_mode($$value); 1376 flushSync(); 1377 }, 1378 1379 get props() { 1380 return props(); 1381 }, 1382 1383 set props($$value) { 1384 props($$value); 1385 flushSync(); 1386 }, 1387 1388 get i18n() { 1389 return i18n(); 1390 }, 1391 1392 set i18n($$value) { 1393 i18n($$value); 1394 flushSync(); 1395 }, 1396 1397 get upload() { 1398 return upload(); 1399 }, 1400 1401 set upload($$value) { 1402 upload($$value); 1403 flushSync(); 1404 }, 1405 1406 get _fetch() { 1407 return _fetch(); 1408 }, 1409 1410 set _fetch($$value) { 1411 _fetch($$value); 1412 flushSync(); 1413 }, 1414 1415 get allow_file_downloads() { 1416 return allow_file_downloads(); 1417 }, 1418 1419 set allow_file_downloads($$value) { 1420 allow_file_downloads($$value); 1421 flushSync(); 1422 }, 1423 1424 get display_icon_button_wrapper_top_corner() {
1425 return display_icon_button_wrapper_top_corner(); 1426 }, 1427 1428 set display_icon_button_wrapper_top_corner($$value) { 1429 display_icon_button_wrapper_top_corner($$value); 1430 flushSync(); 1431 } 1432 }; 1433 1434 init(); 1435 1436 var fragment = comment(); 1437 var node = first_child(fragment); 1438 1439 { 1440 var consequent = ($$anchor) => { 1441 var fragment_1 = comment(); 1442 var node_1 = first_child(fragment_1); 1443 1444 { 1445 let $0 = derived_safe_equal(() => ( 1446 deep_read_state(props()), 1447 untrack(() => props().label ? true : false) 1448 )); 1449 1450 component(node_1, () => components()[type()], ($$anchor, $$component) => { 1451 $$component($$anchor, spread_props(props, { 1452 get value() { 1453 return value(); 1454 }, 1455 display_icon_button_wrapper_top_corner: false, 1456 get show_label() { 1457 return get($0); 1458 }, 1459 1460 get i18n() { 1461 return i18n(); 1462 }, 1463 1464 get _fetch() { 1465 return _fetch(); 1466 }, 1467 allow_preview: false, 1468 interactive: false, 1469 mode: 'minimal', 1470 fixed_height: 1, 1471 $$events: { 1472 load($$arg) { 1473 bubble_event.call(this, $$props, $$arg); 1474 } 1475 } 1476 })); 1477 }); 1478 } 1479 1480 append($$anchor, fragment_1); 1481 }; 1482 1483 var alternate_6 = ($$anchor) => { 1484 var fragment_2 = comment(); 1485 var node_2 = first_child(fragment_2); 1486 1487 { 1488 var consequent_1 = ($$anchor) => { 1489 var fragment_3 = comment(); 1490 var node_3 = first_child(fragment_3); 1491 1492 { 1493 let $0 = derived_safe_equal(() => ( 1494 deep_read_state(props()), 1495 untrack(() => props().label ? true : false) 1496 )); 1497 1498 let $1 = derived_safe_equal(() => ({ dispatch: () => {}, i18n: i18n() })); 1499 1500 component(node_3, () => components()[type()], ($$anchor, $$component) => { 1501 $$component($$anchor, spread_props(props, { 1502 get value() { 1503 return value(); 1504 }, 1505 1506 get show_label() { 1507 return get($0); 1508 }, 1509 1510 get i18n() { 1511 return i18n(); 1512 }, 1513 interactive: false, 1514 get line_breaks() { 1515 return ( 1516 deep_read_state(props()), 1517 untrack(() => props().line_breaks) 1518 ); 1519 }, 1520 wrap: true, 1521 root: '', 1522 get gradio() { 1523 return get($1); 1524 }, 1525 1526 get datatype() { 1527 return ( 1528 deep_read_state(props()), 1529 untrack(() => props().datatype) 1530 ); 1531 }, 1532 1533 get latex_delimiters() { 1534 return ( 1535 deep_read_state(props()), 1536 untrack(() => props().latex_delimiters) 1537 ); 1538 }, 1539 1540 get col_count() { 1541 return ( 1542 deep_read_state(props()), 1543 untrack(() => props().col_count) 1544 ); 1545 }, 1546 1547 get row_count() { 1548 return ( 1549 deep_read_state(props()), 1550 untrack(() => props().row_count) 1551 ); 1552 }, 1553 1554 $$events: { 1555 load($$arg) { 1556 bubble_event.call(this, $$props, $$arg); 1557 } 1558 } 1559 })); 1560 }); 1561 } 1562 1563 append($$anchor, fragment_3); 1564 }; 1565 1566 var alternate_5 = ($$anchor) => { 1567 var fragment_4 = comment(); 1568 var node_4 = first_child(fragment_4); 1569 1570 { 1571 var consequent_2 = ($$anchor) => { 1572 var fragment_5 = comment(); 1573 var node_5 = first_child(fragment_5); 1574 1575 { 1576 let $0 = derived_safe_equal(() => ( 1577 deep_read_state(props()), 1578 untrack(() => props().caption || "") 1579 )); 1580 1581 component(node_5, () => components()[type()], ($$anchor, $$component) => { 1582 $$component($$anchor, spread_props(props, { 1583 get value() { 1584 return value(); 1585 }, 1586 1587 get target() { 1588 return target(); 1589 }, 1590 1591 get theme_mode() { 1592 return theme_mode(); 1593 }, 1594 on_change: () => {}, 1595 get bokeh_version() { 1596 return ( 1597 deep_read_state(props()), 1598 untrack(() => props().bokeh_version) 1599 ); 1600 }, 1601 1602 get caption() { 1603 return get($0); 1604 }, 1605 show_actions_button: true, 1606 $$events: { 1607 load($$arg) { 1608 bubble_event.call(this, $$props, $$arg); 1609 } 1610 } 1611 })); 1612 }); 1613 } 1614 1615 append($$anchor, fragment_5); 1616 }; 1617 1618 var alternate_4 = ($$anchor) => { 1619 var fragment_6 = comment(); 1620 var node_6 = first_child(fragment_6); 1621 1622 { 1623 var consequent_3 = ($$anchor) => { 1624 var fragment_7 = comment(); 1625 var node_7 = first_child(fragment_7); 1626 1627 { 1628 let $0 = derived_safe_equal(() => ( 1629 deep_read_state(props()), 1630 untrack(() => props().label ? true : false) 1631 )); 1632 1633 let $1 = derived_safe_equal(() => ( 1634 deep_read_state(props()), 1635 untrack(() => ({ ...props().waveform_settings, autoplay: props().autoplay })) 1636 )); 1637 1638 component(node_7, () => components()[type()], ($$anchor, $$component) => { 1639 $$component($$anchor, spread_props(props, { 1640 get value() { 1641 return value(); 1642 }, 1643 1644 get show_label() { 1645 return get($0); 1646 },
1647 show_share_button: false, 1648 get i18n() { 1649 return i18n(); 1650 }, 1651 1652 get waveform_settings() { 1653 return get($1); 1654 }, 1655 show_download_button: false, 1656 display_icon_button_wrapper_top_corner: false, 1657 minimal: true, 1658 $$events: { 1659 load($$arg) { 1660 bubble_event.call(this, $$props, $$arg); 1661 } 1662 } 1663 })); 1664 }); 1665 } 1666 1667 append($$anchor, fragment_7); 1668 }; 1669 1670 var alternate_3 = ($$anchor) => { 1671 var fragment_8 = comment(); 1672 var node_8 = first_child(fragment_8); 1673 1674 { 1675 var consequent_4 = ($$anchor) => { 1676 var fragment_9 = comment(); 1677 var node_9 = first_child(fragment_9); 1678 1679 { 1680 let $0 = derived_safe_equal(() => ( 1681 deep_read_state(value()), 1682 untrack(() => value().video || value()) 1683 )); 1684 1685 let $1 = derived_safe_equal(() => ( 1686 deep_read_state(props()), 1687 untrack(() => props().label ? true : false) 1688 )); 1689 1690 component(node_9, () => components()[type()], ($$anchor, $$component) => { 1691 $$component($$anchor, spread_props(props, { 1692 get autoplay() { 1693 return ( 1694 deep_read_state(props()), 1695 untrack(() => props().autoplay) 1696 ); 1697 }, 1698 1699 get value() { 1700 return get($0); 1701 }, 1702 1703 get show_label() { 1704 return get($1); 1705 }, 1706 show_share_button: false, 1707 get i18n() { 1708 return i18n(); 1709 }, 1710 1711 get upload() { 1712 return upload(); 1713 }, 1714 display_icon_button_wrapper_top_corner: false, 1715 show_download_button: false, 1716 $$events: { 1717 load($$arg) { 1718 bubble_event.call(this, $$props, $$arg); 1719 } 1720 }, 1721 1722 children: ($$anchor, $$slotProps) => { 1723 var track = root_10$2(); 1724 1725 append($$anchor, track); 1726 }, 1727 $$slots: { default: true } 1728 })); 1729 }); 1730 } 1731 1732 append($$anchor, fragment_9); 1733 }; 1734 1735 var alternate_2 = ($$anchor) => { 1736 var fragment_10 = comment();
1737 var node_10 = first_child(fragment_10); 1738 1739 { 1740 var consequent_5 = ($$anchor) => { 1741 var div = root_12$1(); 1742 var node_11 = child(div); 1743 1744 { 1745 let $0 = derived_safe_equal(() => ( 1746 deep_read_state(props()), 1747 untrack(() => props().label ? true : false) 1748 )); 1749 1750 component(node_11, () => components()[type()], ($$anchor, $$component) => { 1751 $$component($$anchor, spread_props(props, { 1752 get value() { 1753 return value(); 1754 }, 1755 1756 get show_label() { 1757 return get($0); 1758 }, 1759 display_icon_button_wrapper_top_corner: false, 1760 buttons: ["fullscreen"], 1761 get fullscreen() { 1762 return get(image_fullscreen); 1763 }, 1764 show_button_background: false, 1765 get i18n() { 1766 return i18n(); 1767 }, 1768 1769 $$events: { 1770 fullscreen: handle_fullscreen, 1771 load($$arg) { 1772 bubble_event.call(this, $$props, $$arg); 1773 } 1774 } 1775 })); 1776 }); 1777 } 1778 1779 reset(div); 1780 bind_this(div, ($$value) => set(image_container, $$value), () => get(image_container)); 1781 append($$anchor, div); 1782 }; 1783 1784 var alternate_1 = ($$anchor) => { 1785 var fragment_11 = comment();
1786 var node_12 = first_child(fragment_11); 1787 1788 { 1789 var consequent_6 = ($$anchor) => { 1790 var fragment_12 = comment(); 1791 var node_13 = first_child(fragment_12); 1792 1793 { 1794 let $0 = derived_safe_equal(() => ({ value: value() })); 1795 1796 component(node_13, () => components()[type()], ($$anchor, $$component) => { 1797 $$component($$anchor, spread_props(props, { 1798 get props() { 1799 return get($0); 1800 }, 1801 1802 $$events: { 1803 load($$arg) { 1804 bubble_event.call(this, $$props, $$arg); 1805 } 1806 } 1807 })); 1808 }); 1809 } 1810 1811 append($$anchor, fragment_12); 1812 }; 1813 1814 var alternate = ($$anchor) => { 1815 var fragment_13 = comment(); 1816 var node_14 = first_child(fragment_13); 1817 1818 { 1819 var consequent_7 = ($$anchor) => { 1820 var fragment_14 = comment();
1821 var node_15 = first_child(fragment_14); 1822 1823 { 1824 let $0 = derived_safe_equal(() => ( 1825 deep_read_state(props()), 1826 untrack(() => props().label ? true : false) 1827 )); 1828 1829 let $1 = derived_safe_equal(() => ({ dispatch: () => {}, i18n: i18n() })); 1830 1831 component(node_15, () => components()[type()], ($$anchor, $$component) => { 1832 $$component($$anchor, spread_props( 1833 props, 1834 { 1835 get value() { 1836 return value(); 1837 }, 1838 1839 get clear_color() { 1840 return ( 1841 deep_read_state(props()), 1842 untrack(() => props().clear_color) 1843 ); 1844 }, 1845 1846 get display_mode() { 1847 return ( 1848 deep_read_state(props()), 1849 untrack(() => props().display_mode) 1850 ); 1851 }, 1852 1853 get zoom_speed() { 1854 return ( 1855 deep_read_state(props()), 1856 untrack(() => props().zoom_speed) 1857 ); 1858 }, 1859 1860 get pan_speed() { 1861 return ( 1862 deep_read_state(props()), 1863 untrack(() => props().pan_speed) 1864 ); 1865 } 1866 }, 1867 () => props().camera_position !== undefined && { camera_position: props().camera_position }, 1868 { 1869 has_change_history: true, 1870 get show_label() { 1871 return get($0); 1872 }, 1873 root: '', 1874 interactive: false, 1875 show_share_button: false, 1876 get gradio() { 1877 return get($1); 1878 }, 1879 1880 get i18n() { 1881 return i18n(); 1882 }, 1883 1884 $$events: { 1885 load($$arg) { 1886 bubble_event.call(this, $$props, $$arg); 1887 } 1888 } 1889 } 1890 )); 1891 }); 1892 } 1893 1894 append($$anchor, fragment_14); 1895 }; 1896 1897 if_block( 1898 node_14, 1899 ($$render) => { 1900 if (type() === "model3d") $$render(consequent_7); 1901 }, 1902 true 1903 ); 1904 } 1905 1906 append($$anchor, fragment_13); 1907 }; 1908 1909 if_block( 1910 node_12, 1911 ($$render) => { 1912 if (type() === "html") $$render(consequent_6); else $$render(alternate, false); 1913 }, 1914 true 1915 ); 1916 } 1917 1918 append($$anchor, fragment_11); 1919 }; 1920 1921 if_block( 1922 node_10, 1923 ($$render) => { 1924 if (type() === "image") $$render(consequent_5); else $$render(alternate_1, false); 1925 }, 1926 true 1927 ); 1928 } 1929 1930 append($$anchor, fragment_10); 1931 }; 1932 1933 if_block( 1934 node_8, 1935 ($$render) => { 1936 if (type() === "video") $$render(consequent_4); else $$render(alternate_2, false); 1937 }, 1938 true 1939 ); 1940 } 1941 1942 append($$anchor, fragment_8); 1943 }; 1944 1945 if_block( 1946 node_6, 1947 ($$render) => { 1948 if (type() === "audio") $$render(consequent_3); else $$render(alternate_3, false); 1949 }, 1950 true 1951 ); 1952 } 1953 1954 append($$anchor, fragment_6); 1955 }; 1956 1957 if_block( 1958 node_4, 1959 ($$render) => { 1960 if (type() === "plot") $$render(consequent_2); else $$render(alternate_4, false); 1961 }, 1962 true 1963 ); 1964 } 1965 1966 append($$anchor, fragment_4); 1967 }; 1968 1969 if_block( 1970 node_2, 1971 ($$render) => { 1972 if (type() === "dataframe") $$render(consequent_1); else $$render(alternate_5, false); 1973 }, 1974 true 1975 ); 1976 } 1977 1978 append($$anchor, fragment_2); 1979 }; 1980 1981 if_block(node, ($$render) => { 1982 if (type() === "gallery") $$render(consequent); else $$render(alternate_6, false); 1983 }); 1984 } 1985 1986 append($$anchor, fragment); 1987 1988 return pop($$exports); 1989} 1990 1991var root_1$5 = from_html(`<div class="message-content"><!></div>`); 1992var root_6$2 = from_html(`<div class="file-container svelte-e5gd5s"><div class="file-icon svelte-e5gd5s"><!></div> <div class="file-info svelte-e5gd5s"><a data-testid="chatbot-file" class="file-link svelte-e5gd5s" target="_blank"><span class="file-name svelte-e5gd5s"> </span></a> <span class="file-type svelte-e5gd5s"> </span></div></div>`); 1993 1994function MessageContent($$anchor, $$props) { 1995 push($$props, false); 1996 1997 let latex_delimiters = prop($$props, 'latex_delimiters', 12); 1998 let sanitize_html = prop($$props, 'sanitize_html', 12); 1999 let _fetch = prop($$props, '_fetch', 12); 2000 let i18n = prop($$props, 'i18n', 12); 2001 let line_breaks = prop($$props, 'line_breaks', 12); 2002 let upload = prop($$props, 'upload', 12); 2003 let target = prop($$props, 'target', 12); 2004 let theme_mode = prop($$props, 'theme_mode', 12); 2005 let _components = prop($$props, '_components', 12); 2006 let render_markdown = prop($$props, 'render_markdown', 12); 2007 let scroll = prop($$props, 'scroll', 12); 2008 let allow_file_downloads = prop($$props, 'allow_file_downloads', 12);
2009 let display_consecutive_in_same_bubble = prop($$props, 'display_consecutive_in_same_bubble', 12); 2010 let thought_index = prop($$props, 'thought_index', 12); 2011 let allow_tags = prop($$props, 'allow_tags', 12, false); 2012 let message = prop($$props, 'message', 12); 2013 2014 var $$exports = { 2015 get latex_delimiters() { 2016 return latex_delimiters(); 2017 }, 2018 2019 set latex_delimiters($$value) { 2020 latex_delimiters($$value); 2021 flushSync(); 2022 }, 2023 2024 get sanitize_html() { 2025 return sanitize_html(); 2026 }, 2027 2028 set sanitize_html($$value) { 2029 sanitize_html($$value); 2030 flushSync(); 2031 }, 2032 2033 get _fetch() { 2034 return _fetch(); 2035 }, 2036 2037 set _fetch($$value) { 2038 _fetch($$value); 2039 flushSync(); 2040 }, 2041 2042 get i18n() { 2043 return i18n(); 2044 }, 2045 2046 set i18n($$value) { 2047 i18n($$value); 2048 flushSync(); 2049 }, 2050 2051 get line_breaks() { 2052 return line_breaks(); 2053 }, 2054 2055 set line_breaks($$value) { 2056 line_breaks($$value); 2057 flushSync(); 2058 }, 2059 2060 get upload() { 2061 return upload(); 2062 }, 2063 2064 set upload($$value) { 2065 upload($$value); 2066 flushSync(); 2067 }, 2068 2069 get target() { 2070 return target(); 2071 }, 2072 2073 set target($$value) { 2074 target($$value); 2075 flushSync(); 2076 }, 2077 2078 get theme_mode() { 2079 return theme_mode(); 2080 }, 2081 2082 set theme_mode($$value) { 2083 theme_mode($$value); 2084 flushSync(); 2085 }, 2086 2087 get _components() { 2088 return _components(); 2089 }, 2090 2091 set _components($$value) { 2092 _components($$value); 2093 flushSync(); 2094 }, 2095 2096 get render_markdown() { 2097 return render_markdown(); 2098 }, 2099 2100 set render_markdown($$value) { 2101 render_markdown($$value); 2102 flushSync(); 2103 }, 2104 2105 get scroll() { 2106 return scroll(); 2107 }, 2108 2109 set scroll($$value) { 2110 scroll($$value); 2111 flushSync(); 2112 }, 2113 2114 get allow_file_downloads() { 2115 return allow_file_downloads(); 2116 }, 2117 2118 set allow_file_downloads($$value) { 2119 allow_file_downloads($$value); 2120 flushSync(); 2121 }, 2122 2123 get display_consecutive_in_same_bubble() { 2124 return display_consecutive_in_same_bubble(); 2125 }, 2126 2127 set display_consecutive_in_same_bubble($$value) { 2128 display_consecutive_in_same_bubble($$value); 2129 flushSync(); 2130 }, 2131 2132 get thought_index() { 2133 return thought_index(); 2134 }, 2135 2136 set thought_index($$value) { 2137 thought_index($$value); 2138 flushSync(); 2139 }, 2140 2141 get allow_tags() { 2142 return allow_tags(); 2143 }, 2144 2145 set allow_tags($$value) { 2146 allow_tags($$value); 2147 flushSync(); 2148 }, 2149 2150 get message() { 2151 return message(); 2152 }, 2153 2154 set message($$value) { 2155 message($$value); 2156 flushSync(); 2157 } 2158 }; 2159 2160 init(); 2161 2162 var fragment = comment(); 2163 var node = first_child(fragment); 2164 2165 { 2166 var consequent = ($$anchor) => { 2167 var div = root_1$5(); 2168 var node_1 = child(div); 2169 2170 MarkdownCode(node_1, { 2171 get message() { 2172 return ( 2173 deep_read_state(message()), 2174 untrack(() => message().content) 2175 ); 2176 }, 2177 2178 get latex_delimiters() { 2179 return latex_delimiters(); 2180 }, 2181 2182 get sanitize_html() { 2183 return sanitize_html(); 2184 }, 2185 2186 get render_markdown() { 2187 return render_markdown(); 2188 }, 2189 2190 get line_breaks() { 2191 return line_breaks(); 2192 }, 2193 2194 get onload() { 2195 return scroll(); 2196 }, 2197 2198 get allow_tags() { 2199 return allow_tags(); 2200 }, 2201 2202 get theme_mode() { 2203 return theme_mode(); 2204 } 2205 }); 2206 2207 reset(div); 2208 append($$anchor, div); 2209 }; 2210 2211 var alternate_1 = ($$anchor) => { 2212 var fragment_1 = comment(); 2213 var node_2 = first_child(fragment_1); 2214 2215 { 2216 var consequent_1 = ($$anchor) => { 2217 { 2218 let $0 = derived_safe_equal(() => thought_index() > 0 && display_consecutive_in_same_bubble()); 2219 2220 Component($$anchor, { 2221 get target() { 2222 return target(); 2223 }, 2224 2225 get theme_mode() { 2226 return theme_mode(); 2227 }, 2228 2229 get props() { 2230 return ( 2231 deep_read_state(message()), 2232 untrack(() => message().content.props) 2233 ); 2234 }, 2235 2236 get type() { 2237 return ( 2238 deep_read_state(message()), 2239 untrack(() => message().content.component) 2240 ); 2241 }, 2242 2243 get components() { 2244 return _components(); 2245 }, 2246 2247 get value() { 2248 return ( 2249 deep_read_state(message()), 2250 untrack(() => message().content.value) 2251 ); 2252 }, 2253 2254 get display_icon_button_wrapper_top_corner() { 2255 return get($0); 2256 }, 2257 2258 get i18n() { 2259 return i18n(); 2260 }, 2261 2262 get upload() { 2263 return upload(); 2264 }, 2265 2266 get _fetch() { 2267 return _fetch(); 2268 }, 2269 2270 get allow_file_downloads() { 2271 return allow_file_downloads(); 2272 }, 2273 $$events: { load: () => scroll()() } 2274 }); 2275 } 2276 }; 2277 2278 var alternate = ($$anchor) => { 2279 var fragment_3 = comment(); 2280 var node_3 = first_child(fragment_3); 2281 2282 { 2283 var consequent_2 = ($$anchor) => { 2284 var fragment_4 = comment(); 2285 var node_4 = first_child(fragment_4); 2286 2287 each( 2288 node_4, 2289 1, 2290 () => ( 2291 deep_read_state(message()), 2292 untrack(() => message().content.value) 2293 ), 2294 index, 2295 ($$anchor, file_) => { 2296 const file = derived_safe_equal(() => get(file_)); 2297 var div_1 = root_6$2(); 2298 var div_2 = child(div_1); 2299 var node_5 = child(div_2); 2300
2301 File(node_5); 2302 reset(div_2); 2303 2304 var div_3 = sibling(div_2, 2); 2305 var a = child(div_3); 2306 var span = child(a); 2307 var text = child(span, true); 2308 2309 reset(span); 2310 reset(a); 2311 2312 var span_1 = sibling(a, 2); 2313 var text_1 = child(span_1, true); 2314 2315 reset(span_1); 2316 reset(div_3); 2317 reset(div_1); 2318 2319 template_effect( 2320 ($0, $1, $2) => { 2321 set_attribute(a, 'href', ( 2322 deep_read_state(get(file)), 2323 untrack(() => get(file).url) 2324 )); 2325 2326 set_attribute(a, 'download', $0); 2327 set_text(text, $1); 2328 set_text(text_1, $2); 2329 }, 2330 [ 2331 () => ( 2332 deep_read_state(get(file)), 2333 untrack(() => window.__is_colab__ 2334 ? null 2335 : get(file)?.orig_name || get(file)?.path.split("/").pop() || "file") 2336 ), 2337 2338 () => ( 2339 deep_read_state(get(file)), 2340 untrack(() => get(file)?.orig_name || get(file)?.path.split("/").pop() || "file") 2341 ), 2342 2343 () => ( 2344 deep_read_state(get(file)), 2345 untrack(() => (get(file).orig_name || get(file).path || "").split(".").pop().toUpperCase()) 2346 ) 2347 ] 2348 ); 2349 2350 append($$anchor, div_1); 2351 } 2352 ); 2353 2354 append($$anchor, fragment_4); 2355 }; 2356 2357 if_block( 2358 node_3, 2359 ($$render) => { 2360 if (( 2361 deep_read_state(message()), 2362 untrack(() => message().type === "component" && message().content.component === "file") 2363 )) $$render(consequent_2); 2364 }, 2365 true 2366 ); 2367 } 2368 2369 append($$anchor, fragment_3); 2370 }; 2371 2372 if_block( 2373 node_2, 2374 ($$render) => { 2375 if (( 2376 deep_read_state(message()), 2377 deep_read_state(_components()), 2378 untrack(() => message().type === "component" && message().content.component in _components()) 2379 )) $$render(consequent_1); else $$render(alternate, false); 2380 }, 2381 true 2382 ); 2383 } 2384 2385 append($$anchor, fragment_1); 2386 }; 2387 2388 if_block(node, ($$render) => { 2389 if (( 2390 deep_read_state(message()), 2391 untrack(() => message().type === "text") 2392 )) $$render(consequent); else $$render(alternate_1, false); 2393 }); 2394 } 2395 2396 append($$anchor, fragment); 2397 2398 return pop($$exports); 2399} 2400 2401var root_1$4 = from_html(`<span class="loading-spinner svelte-18cn3o3"></span>`); 2402var root_4$2 = from_html(`(<!>)`, 1); 2403var root_2$3 = from_html(`<span class="duration svelte-18cn3o3"><!> <!></span>`); 2404var root_10$1 = from_html(`<div class="children svelte-18cn3o3"></div>`); 2405var root_9$1 = from_html(`<div><!> <!></div>`); 2406var root$4 = from_html(`<div class="thought-group svelte-18cn3o3"><div role="button" tabindex="0"><span class="arrow svelte-18cn3o3"><!></span> <!> <!> <!></div> <!></div>`); 2407 2408function Thought($$anchor, $$props) { 2409 push($$props, true); 2410 2411 function is_thought_node(msg) { 2412 return "children" in msg; 2413 } 2414 2415 let user_expanded_toggled = state(false); 2416 let content_preview_element; 2417 let user_is_scrolling = state(false); 2418 2419 let thought_node = user_derived(() => ({ 2420 ...$$props.thought, 2421 children: is_thought_node($$props.thought) ? $$props.thought.children : [] 2422 })); 2423 2424 let expanded = state(false); 2425 2426 user_effect(() => { 2427 if (!get(user_expanded_toggled)) { 2428 set(expanded, get(thought_node)?.metadata?.status !== "done"); 2429 } 2430 }); 2431 2432 function toggleExpanded() { 2433 set(expanded, !get(expanded)); 2434 set(user_expanded_toggled, true); 2435 } 2436 2437 function scrollToBottom() { 2438 if (content_preview_element && !get(user_is_scrolling)) { 2439 content_preview_element.scrollTop = content_preview_element.scrollHeight; 2440 } 2441 } 2442 2443 function handleScroll() { 2444 if (content_preview_element) { 2445 const is_at_bottom = content_preview_element.scrollHeight - content_preview_element.scrollTop <= content_preview_element.clientHeight + 10; 2446 2447 if (!is_at_bottom) { 2448 set(user_is_scrolling, true); 2449 } 2450 } 2451 } 2452 2453 user_effect(() => { 2454 if (get(thought_node).content && get(thought_node).metadata?.status !== "done") setTimeout(scrollToBottom, 0); 2455 }); 2456 2457 var div = root$4(); 2458 var div_1 = child(div); 2459 let classes; 2460 var span = child(div_1); 2461 let styles; 2462 var node = child(span); 2463 2464 IconButton(node, { 2465 get Icon() { 2466 return DropdownCircularArrow; 2467 } 2468 }); 2469 2470 reset(span); 2471
2472 var node_1 = sibling(span, 2); 2473 2474 { 2475 let $0 = user_derived(() => get(thought_node).metadata?.title || ""); 2476 let $1 = user_derived(() => $$props.allow_tags || false); 2477 2478 MarkdownCode(node_1, { 2479 get message() { 2480 return get($0); 2481 }, 2482 2483 get render_markdown() { 2484 return $$props.render_markdown; 2485 }, 2486 2487 get latex_delimiters() { 2488 return $$props.latex_delimiters; 2489 }, 2490 2491 get sanitize_html() { 2492 return $$props.sanitize_html; 2493 }, 2494 2495 get allow_tags() { 2496 return get($1); 2497 } 2498 }); 2499 } 2500 2501 var node_2 = sibling(node_1, 2); 2502 2503 { 2504 var consequent = ($$anchor) => { 2505 var span_1 = root_1$4(); 2506 2507 append($$anchor, span_1); 2508 }; 2509 2510 if_block(node_2, ($$render) => { 2511 if (get(thought_node).metadata?.status === "pending") $$render(consequent); 2512 }); 2513 } 2514 2515 var node_3 = sibling(node_2, 2); 2516 2517 { 2518 var consequent_5 = ($$anchor) => { 2519 var span_2 = root_2$3(); 2520 var node_4 = child(span_2); 2521 2522 { 2523 var consequent_1 = ($$anchor) => { 2524 var text$1 = text(); 2525 2526 template_effect(() => set_text(text$1, get(thought_node).metadata.log)); 2527 append($$anchor, text$1); 2528 }; 2529 2530 if_block(node_4, ($$render) => { 2531 if (get(thought_node).metadata.log) $$render(consequent_1); 2532 }); 2533 } 2534 2535 var node_5 = sibling(node_4, 2); 2536 2537 { 2538 var consequent_4 = ($$anchor) => { 2539 var fragment_1 = root_4$2(); 2540 var node_6 = sibling(first_child(fragment_1)); 2541 2542 { 2543 var consequent_2 = ($$anchor) => { 2544 var text_1 = text(); 2545 2546 template_effect(() => set_text(text_1, `${get(thought_node).metadata.duration ?? ''}s`)); 2547 append($$anchor, text_1); 2548 }; 2549 2550 var alternate_1 = ($$anchor) => { 2551 var fragment_3 = comment(); 2552 var node_7 = first_child(fragment_3); 2553 2554 { 2555 var consequent_3 = ($$anchor) => { 2556 var text_2 = text(); 2557 2558 template_effect(($0) => set_text(text_2, `${$0 ?? ''}s`), [() => get(thought_node).metadata.duration.toFixed(1)]); 2559 append($$anchor, text_2); 2560 }; 2561 2562 var alternate = ($$anchor) => { 2563 var text_3 = text(); 2564 2565 template_effect(($0) => set_text(text_3, `${$0 ?? ''}ms`), [ 2566 () => (get(thought_node).metadata.duration * 1000).toFixed(1) 2567 ]); 2568 2569 append($$anchor, text_3); 2570 }; 2571 2572 if_block( 2573 node_7, 2574 ($$render) => { 2575 if (get(thought_node).metadata.duration >= 0.1) $$render(consequent_3); else $$render(alternate, false); 2576 }, 2577 true 2578 ); 2579 } 2580 2581 append($$anchor, fragment_3); 2582 }; 2583 2584 if_block(node_6, ($$render) => { 2585 if (Number.isInteger(get(thought_node).metadata.duration)) $$render(consequent_2); else $$render(alternate_1, false); 2586 }); 2587 } 2588 2589 next(); 2590 append($$anchor, fragment_1); 2591 }; 2592 2593 if_block(node_5, ($$render) => { 2594 if (get(thought_node).metadata.duration !== undefined) $$render(consequent_4); 2595 }); 2596 } 2597 2598 reset(span_2); 2599 append($$anchor, span_2); 2600 }; 2601 2602 if_block(node_3, ($$render) => { 2603 if (get(thought_node)?.metadata?.log || get(thought_node)?.metadata?.duration) $$render(consequent_5); 2604 }); 2605 } 2606 2607 reset(div_1); 2608 2609 var node_8 = sibling(div_1, 2); 2610 2611 { 2612 var consequent_7 = ($$anchor) => { 2613 var div_2 = root_9$1(); 2614 let classes_1; 2615 var node_9 = child(div_2); 2616 2617 MessageContent(node_9, { 2618 get message() { 2619 return get(thought_node); 2620 }, 2621 2622 get sanitize_html() { 2623 return $$props.sanitize_html; 2624 }, 2625 2626 get allow_tags() { 2627 return $$props.allow_tags; 2628 }, 2629 2630 get latex_delimiters() { 2631 return $$props.latex_delimiters; 2632 }, 2633 2634 get render_markdown() { 2635 return $$props.render_markdown; 2636 }, 2637 2638 get _components() { 2639 return $$props._components; 2640 }, 2641 2642 get upload() { 2643 return $$props.upload; 2644 }, 2645 2646 get thought_index() { 2647 return $$props.thought_index; 2648 }, 2649 2650 get target() { 2651 return $$props.target; 2652 }, 2653 2654 get theme_mode() { 2655 return $$props.theme_mode; 2656 }, 2657 2658 get _fetch() { 2659 return $$props._fetch; 2660 }, 2661 2662 get scroll() { 2663 return $$props.scroll; 2664 }, 2665 2666 get allow_file_downloads() { 2667 return $$props.allow_file_downloads; 2668 }, 2669 2670 get display_consecutive_in_same_bubble() { 2671 return $$props.display_consecutive_in_same_bubble; 2672 }, 2673 2674 get i18n() { 2675 return $$props.i18n; 2676 }, 2677 2678 get line_breaks() { 2679 return $$props.line_breaks; 2680 } 2681 }); 2682
2683 var node_10 = sibling(node_9, 2); 2684 2685 { 2686 var consequent_6 = ($$anchor) => { 2687 var div_3 = root_10$1(); 2688 2689 each(div_3, 21, () => get(thought_node).children, index, ($$anchor, child) => { 2690 var fragment_6 = comment(); 2691 var node_11 = first_child(fragment_6); 2692 2693 { 2694 let $0 = user_derived(() => $$props.rtl || false); 2695 let $1 = user_derived(() => $$props.thought_index + 1); 2696 2697 Thought(node_11, { 2698 get thought() { 2699 return get(child); 2700 }, 2701 2702 get rtc() { 2703 return get($0); 2704 }, 2705 2706 get sanitize_html() { 2707 return $$props.sanitize_html; 2708 }, 2709 2710 get latex_delimiters() { 2711 return $$props.latex_delimiters; 2712 }, 2713 2714 get render_markdown() { 2715 return $$props.render_markdown; 2716 }, 2717 2718 get _components() { 2719 return $$props._components; 2720 }, 2721 2722 get upload() { 2723 return $$props.upload; 2724 }, 2725 2726 get thought_index() { 2727 return get($1); 2728 }, 2729 2730 get target() { 2731 return $$props.target; 2732 }, 2733 2734 get theme_mode() { 2735 return $$props.theme_mode; 2736 }, 2737 2738 get _fetch() { 2739 return $$props._fetch; 2740 }, 2741 2742 get scroll() { 2743 return $$props.scroll; 2744 }, 2745 2746 get allow_file_downloads() { 2747 return $$props.allow_file_downloads; 2748 }, 2749 2750 get display_consecutive_in_same_bubble() { 2751 return $$props.display_consecutive_in_same_bubble; 2752 }, 2753 2754 get i18n() { 2755 return $$props.i18n; 2756 }, 2757 2758 get line_breaks() { 2759 return $$props.line_breaks; 2760 } 2761 }); 2762 } 2763 2764 append($$anchor, fragment_6); 2765 }); 2766 2767 reset(div_3); 2768 append($$anchor, div_3); 2769 }; 2770 2771 if_block(node_10, ($$render) => { 2772 if (get(thought_node).children?.length > 0) $$render(consequent_6); 2773 }); 2774 } 2775 2776 reset(div_2); 2777 bind_this(div_2, ($$value) => content_preview_element = $$value, () => content_preview_element); 2778 2779 template_effect(() => classes_1 = set_class(div_2, 1, 'svelte-18cn3o3', null, classes_1, { 2780 content: get(expanded), 2781 'content-preview': !get(expanded) && get(thought_node).metadata?.status !== "done" 2782 })); 2783 2784 event('scroll', div_2, handleScroll); 2785 transition(3, div_2, () => slide); 2786 append($$anchor, div_2); 2787 }; 2788 2789 if_block(node_8, ($$render) => { 2790 if (get(expanded)) $$render(consequent_7); 2791 }); 2792 } 2793 2794 reset(div); 2795 2796 template_effect(() => { 2797 classes = set_class(div_1, 1, 'title svelte-18cn3o3', null, classes, { expanded: get(expanded) }); 2798 set_attribute(div_1, 'aria-busy', get(thought_node).content === "" || get(thought_node).content === null); 2799 2800 styles = set_style(span, '', styles, { 2801 transform: get(expanded) ? "rotate(180deg)" : "rotate(0deg)" 2802 }); 2803 }); 2804 2805 event('click', div_1, stopPropagation(toggleExpanded)); 2806 event('keydown', div_1, (e) => e.key === "Enter" && toggleExpanded()); 2807 append($$anchor, div); 2808 pop(); 2809} 2810 2811var root_1$3 = from_html(`<div class="avatar-container svelte-1nr59td"><!></div>`); 2812var root_3$1 = from_html(`<textarea class="edit-textarea svelte-1nr59td"></textarea>`); 2813var root_4$1 = from_html(`<div><!></div>`); 2814var root_2$2 = from_html(`<div><!></div> <!>`, 1); 2815var root$3 = from_html(`<div><!> <div><div></div></div></div> <!>`, 1); 2816 2817function Message($$anchor, $$props) { 2818 push($$props, false); 2819 2820 let value = prop($$props, 'value', 12); 2821 let avatar_img = prop($$props, 'avatar_img', 12); 2822 let opposite_avatar_img = prop($$props, 'opposite_avatar_img', 12, null); 2823 let role = prop($$props, 'role', 12, "user"); 2824 let messages = prop($$props, 'messages', 28, () => []); 2825 let layout = prop($$props, 'layout', 12); 2826 let render_markdown = prop($$props, 'render_markdown', 12); 2827 let latex_delimiters = prop($$props, 'latex_delimiters', 12); 2828 let sanitize_html = prop($$props, 'sanitize_html', 12); 2829 let selectable = prop($$props, 'selectable', 12); 2830 let _fetch = prop($$props, '_fetch', 12); 2831 let rtl = prop($$props, 'rtl', 12); 2832 let dispatch = prop($$props, 'dispatch', 12); 2833 let i18n = prop($$props, 'i18n', 12); 2834 let line_breaks = prop($$props, 'line_breaks', 12); 2835 let upload = prop($$props, 'upload', 12); 2836 let target = prop($$props, 'target', 12); 2837 let theme_mode = prop($$props, 'theme_mode', 12); 2838 let _components = prop($$props, '_components', 12); 2839 let i = prop($$props, 'i', 12); 2840 let show_copy_button = prop($$props, 'show_copy_button', 12); 2841 let generating = prop($$props, 'generating', 12); 2842 let feedback_options = prop($$props, 'feedback_options', 12); 2843 let show_like = prop($$props, 'show_like', 12); 2844 let show_edit = prop($$props, 'show_edit', 12); 2845 let show_retry = prop($$props, 'show_retry', 12); 2846 let show_undo = prop($$props, 'show_undo', 12); 2847 let handle_action = prop($$props, 'handle_action', 12); 2848 let scroll = prop($$props, 'scroll', 12); 2849 let allow_file_downloads = prop($$props, 'allow_file_downloads', 12); 2850 let in_edit_mode = prop($$props, 'in_edit_mode', 12); 2851 let edit_messages = prop($$props, 'edit_messages', 12);
2852 let display_consecutive_in_same_bubble = prop($$props, 'display_consecutive_in_same_bubble', 12); 2853 let current_feedback = prop($$props, 'current_feedback', 12, null); 2854 let allow_tags = prop($$props, 'allow_tags', 12, false); 2855 let watermark = prop($$props, 'watermark', 12, null); 2856 let messageElements = mutable_source([]); 2857 let message_widths = mutable_source(Array(messages().length).fill(160)); 2858 let message_heights = mutable_source(Array(messages().length).fill(0)); 2859 2860 function handle_select(i, message) { 2861 dispatch()("select", { index: message.index, value: message.content }); 2862 } 2863 2864 function get_message_label_data(message) { 2865 if (message.type === "text") { 2866 return message.content; 2867 } else if (message.type === "component" && message.content.component === "file") { 2868 if (Array.isArray(message.content.value)) { 2869 return `file of extension type: ${message.content.value[0].orig_name?.split(".").pop()}`; 2870 } 2871 2872 return `file of extension type: ${message.content.value?.orig_name?.split(".").pop()}` + (message.content.value?.orig_name ?? ""); 2873 } 2874 2875 return `a component of type ${message.content.component ?? "unknown"}`; 2876 } 2877 2878 function get_file(messages) { 2879 for (const message of messages) { 2880 if (message.type === "component" && (message.content.component === "audio" || message.content.component === "video" || message.content.component === "image" || message.content.component === "file") && message.content.value) { 2881 return message.content.value; 2882 } 2883 } 2884 2885 return null; 2886 } 2887 2888 let button_panel_props = mutable_source(); 2889 2890 legacy_pre_effect( 2891 () => ( 2892 deep_read_state(in_edit_mode()), 2893 get(messageElements), 2894 deep_read_state(messages()) 2895 ), 2896 () => { 2897 if (in_edit_mode() && true) { 2898 const offset = get(messageElements).length - messages().length; 2899 2900 for (let idx = offset; idx < get(messageElements).length; idx++) { 2901 if (idx >= 0) { 2902 mutate(message_widths, get(message_widths)[idx - offset] = get(messageElements)[idx]?.clientWidth); 2903 mutate(message_heights, get(message_heights)[idx - offset] = get(messageElements)[idx]?.clientHeight); 2904 } 2905 } 2906 } 2907 } 2908 ); 2909 2910 legacy_pre_effect( 2911 () => ( 2912 deep_read_state(handle_action()), 2913 deep_read_state(show_like()), 2914 deep_read_state(feedback_options()), 2915 deep_read_state(show_retry()), 2916 deep_read_state(show_undo()), 2917 deep_read_state(show_edit()), 2918 deep_read_state(in_edit_mode()), 2919 deep_read_state(generating()), 2920 deep_read_state(show_copy_button()), 2921 deep_read_state(messages()), 2922 deep_read_state(role()), 2923 deep_read_state(avatar_img()), 2924 deep_read_state(layout()), 2925 deep_read_state(dispatch()), 2926 deep_read_state(current_feedback()), 2927 deep_read_state(watermark()), 2928 deep_read_state(allow_file_downloads()) 2929 ), 2930 () => { 2931 set(button_panel_props, { 2932 handle_action: handle_action(), 2933 likeable: show_like(), 2934 feedback_options: feedback_options(), 2935 show_retry: show_retry(), 2936 show_undo: show_undo(), 2937 show_edit: show_edit(), 2938 in_edit_mode: in_edit_mode(), 2939 generating: generating(), 2940 show_copy_button: show_copy_button(), 2941 message: messages(), 2942 position: role() === "user" ? "right" : "left", 2943 avatar: avatar_img(), 2944 layout: layout(), 2945 dispatch: dispatch(), 2946 current_feedback: current_feedback(), 2947 watermark: watermark(), 2948 file: get_file(messages()), 2949 show_download_button: allow_file_downloads(), 2950 show_share_button: true 2951 }); 2952 } 2953 ); 2954 2955 legacy_pre_effect_reset(); 2956 2957 var $$exports = { 2958 get value() { 2959 return value(); 2960 }, 2961 2962 set value($$value) { 2963 value($$value); 2964 flushSync(); 2965 }, 2966 2967 get avatar_img() { 2968 return avatar_img(); 2969 }, 2970 2971 set avatar_img($$value) { 2972 avatar_img($$value); 2973 flushSync(); 2974 }, 2975 2976 get opposite_avatar_img() { 2977 return opposite_avatar_img(); 2978 }, 2979 2980 set opposite_avatar_img($$value) { 2981 opposite_avatar_img($$value); 2982 flushSync(); 2983 }, 2984 2985 get role() { 2986 return role(); 2987 }, 2988 2989 set role($$value) { 2990 role($$value); 2991 flushSync(); 2992 }, 2993 2994 get messages() { 2995 return messages(); 2996 }, 2997 2998 set messages($$value) { 2999 messages($$value); 3000 flushSync(); 3001 }, 3002 3003 get layout() { 3004 return layout(); 3005 }, 3006 3007 set layout($$value) { 3008 layout($$value); 3009 flushSync(); 3010 }, 3011 3012 get render_markdown() { 3013 return render_markdown(); 3014 }, 3015 3016 set render_markdown($$value) { 3017 render_markdown($$value); 3018 flushSync(); 3019 }, 3020 3021 get latex_delimiters() { 3022 return latex_delimiters(); 3023 }, 3024 3025 set latex_delimiters($$value) { 3026 latex_delimiters($$value); 3027 flushSync(); 3028 }, 3029 3030 get sanitize_html() { 3031 return sanitize_html(); 3032 }, 3033 3034 set sanitize_html($$value) { 3035 sanitize_html($$value); 3036 flushSync(); 3037 }, 3038 3039 get selectable() { 3040 return selectable(); 3041 }, 3042 3043 set selectable($$value) { 3044 selectable($$value); 3045 flushSync(); 3046 }, 3047 3048 get _fetch() { 3049 return _fetch(); 3050 }, 3051 3052 set _fetch($$value) { 3053 _fetch($$value); 3054 flushSync(); 3055 }, 3056 3057 get rtl() { 3058 return rtl(); 3059 }, 3060 3061 set rtl($$value) { 3062 rtl($$value); 3063 flushSync(); 3064 }, 3065 3066 get dispatch() {
3067 return dispatch(); 3068 }, 3069 3070 set dispatch($$value) { 3071 dispatch($$value); 3072 flushSync(); 3073 }, 3074 3075 get i18n() { 3076 return i18n(); 3077 }, 3078 3079 set i18n($$value) { 3080 i18n($$value); 3081 flushSync(); 3082 }, 3083 3084 get line_breaks() { 3085 return line_breaks(); 3086 }, 3087 3088 set line_breaks($$value) { 3089 line_breaks($$value); 3090 flushSync(); 3091 }, 3092 3093 get upload() { 3094 return upload(); 3095 }, 3096 3097 set upload($$value) { 3098 upload($$value); 3099 flushSync(); 3100 }, 3101 3102 get target() { 3103 return target(); 3104 }, 3105 3106 set target($$value) { 3107 target($$value); 3108 flushSync(); 3109 }, 3110 3111 get theme_mode() { 3112 return theme_mode(); 3113 }, 3114 3115 set theme_mode($$value) { 3116 theme_mode($$value); 3117 flushSync(); 3118 }, 3119 3120 get _components() { 3121 return _components(); 3122 }, 3123 3124 set _components($$value) { 3125 _components($$value); 3126 flushSync(); 3127 }, 3128 3129 get i() { 3130 return i(); 3131 }, 3132 3133 set i($$value) { 3134 i($$value); 3135 flushSync(); 3136 }, 3137 3138 get show_copy_button() { 3139 return show_copy_button(); 3140 }, 3141 3142 set show_copy_button($$value) { 3143 show_copy_button($$value); 3144 flushSync(); 3145 }, 3146
3147 get generating() { 3148 return generating(); 3149 }, 3150 3151 set generating($$value) { 3152 generating($$value); 3153 flushSync(); 3154 }, 3155 3156 get feedback_options() { 3157 return feedback_options(); 3158 }, 3159 3160 set feedback_options($$value) { 3161 feedback_options($$value); 3162 flushSync(); 3163 }, 3164 3165 get show_like() { 3166 return show_like(); 3167 }, 3168 3169 set show_like($$value) { 3170 show_like($$value); 3171 flushSync(); 3172 }, 3173 3174 get show_edit() { 3175 return show_edit(); 3176 }, 3177 3178 set show_edit($$value) { 3179 show_edit($$value); 3180 flushSync(); 3181 }, 3182 3183 get show_retry() { 3184 return show_retry(); 3185 }, 3186 3187 set show_retry($$value) { 3188 show_retry($$value); 3189 flushSync(); 3190 }, 3191 3192 get show_undo() { 3193 return show_undo(); 3194 }, 3195 3196 set show_undo($$value) { 3197 show_undo($$value); 3198 flushSync(); 3199 }, 3200 3201 get handle_action() { 3202 return handle_action(); 3203 }, 3204 3205 set handle_action($$value) { 3206 handle_action($$value); 3207 flushSync(); 3208 }, 3209 3210 get scroll() { 3211 return scroll(); 3212 }, 3213 3214 set scroll($$value) { 3215 scroll($$value); 3216 flushSync(); 3217 }, 3218 3219 get allow_file_downloads() { 3220 return allow_file_downloads(); 3221 }, 3222 3223 set allow_file_downloads($$value) { 3224 allow_file_downloads($$value); 3225 flushSync(); 3226 }, 3227 3228 get in_edit_mode() { 3229 return in_edit_mode(); 3230 }, 3231 3232 set in_edit_mode($$value) { 3233 in_edit_mode($$value); 3234 flushSync(); 3235 }, 3236 3237 get edit_messages() { 3238 return edit_messages(); 3239 }, 3240 3241 set edit_messages($$value) { 3242 edit_messages($$value); 3243 flushSync(); 3244 }, 3245 3246 get display_consecutive_in_same_bubble() { 3247 return display_consecutive_in_same_bubble(); 3248 }, 3249 3250 set display_consecutive_in_same_bubble($$value) { 3251 display_consecutive_in_same_bubble($$value); 3252 flushSync(); 3253 }, 3254 3255 get current_feedback() { 3256 return current_feedback(); 3257 }, 3258 3259 set current_feedback($$value) { 3260 current_feedback($$value); 3261 flushSync(); 3262 }, 3263 3264 get allow_tags() { 3265 return allow_tags(); 3266 }, 3267 3268 set allow_tags($$value) { 3269 allow_tags($$value); 3270 flushSync(); 3271 }, 3272 3273 get watermark() { 3274 return watermark(); 3275 }, 3276 3277 set watermark($$value) { 3278 watermark($$value); 3279 flushSync(); 3280 } 3281 }; 3282 3283 init(); 3284 3285 var fragment = root$3(); 3286 var div = first_child(fragment); 3287 let classes; 3288 var node = child(div); 3289 3290 { 3291 var consequent = ($$anchor) => { 3292 var div_1 = root_1$3(); 3293 var node_1 = child(div_1); 3294 3295 { 3296 let $0 = derived_safe_equal(() => ( 3297 deep_read_state(avatar_img()), 3298 untrack(() => avatar_img()?.url) 3299 )); 3300 3301 Image(node_1, { 3302 class: 'avatar-image', 3303 get src() { 3304 return get($0); 3305 }, 3306 3307 get alt() { 3308 return `${role() ?? ''} avatar`; 3309 } 3310 }); 3311 } 3312 3313 reset(div_1); 3314 append($$anchor, div_1); 3315 }; 3316 3317 if_block(node, ($$render) => { 3318 if (avatar_img() !== null) $$render(consequent); 3319 }); 3320 } 3321 3322 var div_2 = sibling(node, 2); 3323 let classes_1; 3324 var div_3 = child(div_2); 3325 let classes_2; 3326 3327 each(div_3, 5, messages, index, ($$anchor, message, thought_index) => { 3328 var fragment_1 = root_2$2(); 3329 var div_4 = first_child(fragment_1); 3330 let classes_3; 3331 var node_2 = child(div_4); 3332 3333 { 3334 var consequent_1 = ($$anchor) => { 3335 var textarea = root_3$1(); 3336 3337 remove_textarea_child(textarea); 3338 autofocus(textarea, true); 3339 3340 let styles; 3341 3342 template_effect(() => styles = set_style(textarea, '', styles, { 3343 width: ( 3344 get(message_widths), 3345 untrack(() => `max(${get(message_widths)[thought_index]}px, 160px)`) 3346 ), 3347 3348 'min-height': ( 3349 get(message_heights), 3350 untrack(() => `${get(message_heights)[thought_index]}px`) 3351 ) 3352 })); 3353 3354 bind_value(textarea, () => edit_messages()[thought_index], ($$value) => edit_messages(edit_messages()[thought_index] = $$value, true)); 3355 append($$anchor, textarea); 3356 }; 3357 3358 var alternate_1 = ($$anchor) => { 3359 var div_5 = root_4$1(); 3360 let classes_4; 3361 let styles_1; 3362 var node_3 = child(div_5); 3363 3364 { 3365 var consequent_2 = ($$anchor) => { 3366 Thought($$anchor, { 3367 get thought() { 3368 return get(message); 3369 }, 3370 3371 get rtl() { 3372 return rtl(); 3373 }, 3374 3375 get sanitize_html() { 3376 return sanitize_html(); 3377 }, 3378 3379 get allow_tags() { 3380 return allow_tags(); 3381 }, 3382 3383 get latex_delimiters() { 3384 return latex_delimiters(); 3385 }, 3386 3387 get render_markdown() { 3388 return render_markdown(); 3389 }, 3390 3391 get _components() { 3392 return _components(); 3393 }, 3394 3395 get upload() { 3396 return upload(); 3397 }, 3398 thought_index, 3399 get target() { 3400 return target(); 3401 }, 3402 3403 get theme_mode() { 3404 return theme_mode(); 3405 }, 3406 3407 get _fetch() { 3408 return _fetch(); 3409 }, 3410 3411 get scroll() { 3412 return scroll(); 3413 }, 3414 3415 get allow_file_downloads() { 3416 return allow_file_downloads(); 3417 }, 3418 3419 get display_consecutive_in_same_bubble() {
3420 return display_consecutive_in_same_bubble(); 3421 }, 3422 3423 get i18n() { 3424 return i18n(); 3425 }, 3426 3427 get line_breaks() { 3428 return line_breaks(); 3429 } 3430 }); 3431 }; 3432 3433 var alternate = ($$anchor) => { 3434 MessageContent($$anchor, { 3435 get message() { 3436 return get(message); 3437 }, 3438 3439 get sanitize_html() { 3440 return sanitize_html(); 3441 }, 3442 3443 get allow_tags() { 3444 return allow_tags(); 3445 }, 3446 3447 get latex_delimiters() { 3448 return latex_delimiters(); 3449 }, 3450 3451 get render_markdown() { 3452 return render_markdown(); 3453 }, 3454 3455 get _components() { 3456 return _components(); 3457 }, 3458 3459 get upload() { 3460 return upload(); 3461 }, 3462 thought_index, 3463 get target() { 3464 return target(); 3465 }, 3466 3467 get theme_mode() { 3468 return theme_mode(); 3469 }, 3470 3471 get _fetch() { 3472 return _fetch(); 3473 }, 3474 3475 get scroll() { 3476 return scroll(); 3477 }, 3478 3479 get allow_file_downloads() { 3480 return allow_file_downloads(); 3481 }, 3482 3483 get display_consecutive_in_same_bubble() { 3484 return display_consecutive_in_same_bubble(); 3485 }, 3486 3487 get i18n() { 3488 return i18n(); 3489 }, 3490 3491 get line_breaks() { 3492 return line_breaks(); 3493 } 3494 }); 3495 }; 3496 3497 if_block(node_3, ($$render) => { 3498 if (( 3499 get(message), 3500 untrack(() => get(message)?.metadata?.title) 3501 )) $$render(consequent_2); else $$render(alternate, false); 3502 }); 3503 } 3504 3505 reset(div_5); 3506 bind_this(div_5, ($$value, thought_index) => mutate(messageElements, get(messageElements)[thought_index] = $$value), (thought_index) => get(messageElements)?.[thought_index], () => [thought_index]); 3507 3508 template_effect( 3509 ($0) => { 3510 set_attribute(div_5, 'data-testid', role()); 3511 set_attribute(div_5, 'dir', rtl() ? "rtl" : "ltr"); 3512 set_attribute(div_5, 'aria-label', $0); 3513 3514 classes_4 = set_class(div_5, 1, 'svelte-1nr59td', null, classes_4, { 3515 latest: i() === value().length - 1, 3516 'message-markdown-disabled': !render_markdown(), 3517 selectable: selectable() 3518 }); 3519 3520 styles_1 = set_style(div_5, '', styles_1, { 3521 'user-select': 'text', 3522 cursor: selectable() ? "pointer" : "auto", 3523 'text-align': rtl() ? "right" : "left" 3524 }); 3525 3526 div_5.dir = div_5.dir; 3527 }, 3528 [ 3529 () => ( 3530 deep_read_state(role()), 3531 get(message), 3532 untrack(() => role() + "'s message: " + get_message_label_data(get(message))) 3533 ) 3534 ] 3535 ); 3536 3537 event('click', div_5, () => handle_select(i(), get(message))); 3538 3539 event('keydown', div_5, (e) => { 3540 if (e.key === "Enter") { 3541 handle_select(i(), get(message)); 3542 } 3543 }); 3544 3545 append($$anchor, div_5); 3546 }; 3547 3548 if_block(node_2, ($$render) => { 3549 if (( 3550 deep_read_state(in_edit_mode()), 3551 get(message), 3552 untrack(() => in_edit_mode() && get(message).type === "text") 3553 )) $$render(consequent_1); else $$render(alternate_1, false); 3554 }); 3555 } 3556 3557 reset(div_4); 3558 3559 var node_4 = sibling(div_4, 2); 3560 3561 { 3562 var consequent_3 = ($$anchor) => { 3563 ButtonPanel($$anchor, spread_props(() => get(button_panel_props), { 3564 get current_feedback() { 3565 return current_feedback(); 3566 }, 3567 3568 get watermark() { 3569 return watermark(); 3570 }, 3571 3572 get i18n() { 3573 return i18n(); 3574 }, 3575 $$events: { copy: (e) => dispatch()("copy", e.detail) } 3576 })); 3577 }; 3578 3579 if_block(node_4, ($$render) => { 3580 if (layout() === "panel") $$render(consequent_3); 3581 }); 3582 } 3583 3584 template_effect(($0) => classes_3 = set_class(div_4, 1, `message ${(!display_consecutive_in_same_bubble() ? role() : '') ?? ''}`, 'svelte-1nr59td', classes_3, $0), [ 3585 () => ({ 3586 'panel-full-width': true, 3587 'message-markdown-disabled': !render_markdown(), 3588 component: get(message).type === "component", 3589 html: is_component_message(get(message)) && get(message).content.component === "html", 3590 thought: thought_index > 0 3591 }) 3592 ]); 3593 3594 append($$anchor, fragment_1); 3595 }); 3596 3597 reset(div_3); 3598 reset(div_2); 3599 reset(div); 3600 3601 var node_5 = sibling(div, 2); 3602 3603 { 3604 var consequent_4 = ($$anchor) => { 3605 ButtonPanel($$anchor, spread_props(() => get(button_panel_props), { 3606 get i18n() { 3607 return i18n(); 3608 } 3609 })); 3610 }; 3611 3612 if_block(node_5, ($$render) => { 3613 if (layout() === "bubble") $$render(consequent_4); 3614 }); 3615 } 3616 3617 template_effect(() => { 3618 classes = set_class(div, 1, `message-row ${layout() ?? ''} ${role() ?? ''}-row`, 'svelte-1nr59td', classes, { 3619 with_avatar: avatar_img() !== null, 3620 with_opposite_avatar: opposite_avatar_img() !== null 3621 }); 3622 3623 classes_1 = set_class(div_2, 1, 'flex-wrap svelte-1nr59td', null, classes_1, { 3624 role: role(), 3625 'component-wrap': messages()[0].type === "component" 3626 }); 3627 3628 classes_2 = set_class(div_3, 1, clsx(display_consecutive_in_same_bubble() ? role() : ""), 'svelte-1nr59td', classes_2, { message: display_consecutive_in_same_bubble() }); 3629 }); 3630 3631 append($$anchor, fragment); 3632 3633 return pop($$exports); 3634} 3635 3636var has = Object.prototype.hasOwnProperty; 3637 3638function dequal(foo, bar) { 3639 var ctor, len; 3640 if (foo === bar) return true; 3641
3642 if (foo && bar && (ctor=foo.constructor) === bar.constructor) { 3643 if (ctor === Date) return foo.getTime() === bar.getTime(); 3644 if (ctor === RegExp) return foo.toString() === bar.toString(); 3645 3646 if (ctor === Array) { 3647 if ((len=foo.length) === bar.length) { 3648 while (len-- && dequal(foo[len], bar[len])); 3649 } 3650 return len === -1; 3651 } 3652 3653 if (!ctor || typeof foo === 'object') { 3654 len = 0; 3655 for (ctor in foo) { 3656 if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; 3657 if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; 3658 } 3659 return Object.keys(bar).length === len; 3660 } 3661 } 3662 3663 return foo !== foo && bar !== bar; 3664} 3665 3666var root_1$2 = from_html(`<div class="avatar-container svelte-stpvyx"><!></div>`); 3667var root$2 = from_html(`<div class="container svelte-stpvyx"><!> <div role="status" aria-label="Loading response" aria-live="polite"><div class="message-content svelte-stpvyx"><span class="sr-only svelte-stpvyx">Loading content</span> <div class="dots svelte-stpvyx"><div class="dot svelte-stpvyx"></div> <div class="dot svelte-stpvyx"></div> <div class="dot svelte-stpvyx"></div></div></div></div></div>`); 3668 3669function Pending($$anchor, $$props) { 3670 push($$props, false); 3671 3672 let layout = prop($$props, 'layout', 12, "bubble"); 3673 let avatar_images = prop($$props, 'avatar_images', 28, () => [null, null]); 3674 3675 var $$exports = { 3676 get layout() { 3677 return layout(); 3678 }, 3679 3680 set layout($$value) { 3681 layout($$value); 3682 flushSync(); 3683 }, 3684 3685 get avatar_images() { 3686 return avatar_images(); 3687 }, 3688 3689 set avatar_images($$value) { 3690 avatar_images($$value); 3691 flushSync(); 3692 } 3693 }; 3694 3695 init(); 3696 3697 var div = root$2(); 3698 var node = child(div); 3699 3700 { 3701 var consequent = ($$anchor) => { 3702 var div_1 = root_1$2(); 3703 var node_1 = child(div_1); 3704 3705 Image(node_1, { 3706 class: 'avatar-image', 3707 get src() { 3708 return ( 3709 deep_read_state(avatar_images()), 3710 untrack(() => avatar_images()[1].url) 3711 ); 3712 }, 3713 alt: 'bot avatar' 3714 }); 3715 3716 reset(div_1); 3717 append($$anchor, div_1); 3718 }; 3719 3720 if_block(node, ($$render) => { 3721 if (( 3722 deep_read_state(avatar_images()), 3723 untrack(() => avatar_images()[1] !== null) 3724 )) $$render(consequent); 3725 }); 3726 } 3727 3728 var div_2 = sibling(node, 2); 3729 let classes; 3730 3731 reset(div); 3732 3733 template_effect(() => classes = set_class(div_2, 1, `message bot pending ${layout() ?? ''}`, 'svelte-stpvyx', classes, { 3734 with_avatar: avatar_images()[1] !== null, 3735 with_opposite_avatar: avatar_images()[0] !== null 3736 })); 3737 3738 append($$anchor, div); 3739 3740 return pop($$exports); 3741} 3742 3743var root_1$1 = from_html(`<div class="placeholder svelte-1rn3hyj"><!></div>`); 3744var root_4 = from_html(`<div class="example-image-container svelte-1rn3hyj"><!></div>`); 3745var root_6$1 = from_html(`<div class="example-icon svelte-1rn3hyj" aria-hidden="true"><span class="text-icon-aa svelte-1rn3hyj">Aa</span></div>`); 3746var root_12 = from_html(`<div class="image-overlay svelte-1rn3hyj" role="status"> </div>`); 3747var root_11$1 = from_html(`<div class="example-image-container svelte-1rn3hyj"><!> <!></div>`); 3748var root_15 = from_html(`<div class="image-overlay svelte-1rn3hyj" role="status"> </div>`); 3749var root_14 = from_html(`<div class="example-image-container svelte-1rn3hyj"><video class="example-image" aria-hidden="true"></video> <!></div>`, 2); 3750var root_16 = from_html(`<div class="example-icon svelte-1rn3hyj"><!></div>`); 3751var root_19 = from_html(`<div class="example-icon svelte-1rn3hyj"><div class="file-overlay svelte-1rn3hyj" role="status"> </div></div>`); 3752var root_9 = from_html(`<div class="example-icons-grid svelte-1rn3hyj" role="group" aria-label="Example attachments"><!> <!></div>`); 3753var root_21 = from_html(`<div class="example-image-container svelte-1rn3hyj"><!></div>`); 3754var root_23 = from_html(`<div class="example-image-container svelte-1rn3hyj"><video class="example-image" aria-hidden="true"></video></div>`, 2); 3755var root_25 = from_html(`<div class="example-icon svelte-1rn3hyj"><!></div>`); 3756var root_26 = from_html(`<div class="example-icon svelte-1rn3hyj"><!></div>`); 3757var root_3 = from_html(`<button class="example svelte-1rn3hyj"><div class="example-content svelte-1rn3hyj"><!> <div class="example-text-content svelte-1rn3hyj"><span class="example-text svelte-1rn3hyj"> </span></div></div></button>`); 3758var root_2$1 = from_html(`<div class="examples svelte-1rn3hyj" role="list"></div>`); 3759var root$1 = from_html(`<div class="placeholder-content svelte-1rn3hyj" role="complementary"><!> <!></div>`); 3760 3761function Examples($$anchor, $$props) { 3762 push($$props, false); 3763 3764 let examples = prop($$props, 'examples', 12, null);
3765 let placeholder = prop($$props, 'placeholder', 12, null); 3766 let latex_delimiters = prop($$props, 'latex_delimiters', 12); 3767 const dispatch = createEventDispatcher(); 3768 3769 function handle_example_select(i, example) { 3770 const example_obj = typeof example === "string" ? { text: example } : example; 3771 3772 dispatch("example_select", { 3773 index: i, 3774 value: { text: example_obj.text, files: example_obj.files } 3775 }); 3776 } 3777 3778 var $$exports = { 3779 get examples() { 3780 return examples(); 3781 }, 3782 3783 set examples($$value) { 3784 examples($$value); 3785 flushSync(); 3786 }, 3787 3788 get placeholder() { 3789 return placeholder(); 3790 }, 3791 3792 set placeholder($$value) { 3793 placeholder($$value); 3794 flushSync(); 3795 }, 3796 3797 get latex_delimiters() { 3798 return latex_delimiters(); 3799 }, 3800 3801 set latex_delimiters($$value) { 3802 latex_delimiters($$value); 3803 flushSync(); 3804 } 3805 }; 3806 3807 init(); 3808 3809 var div = root$1(); 3810 var node = child(div); 3811 3812 { 3813 var consequent = ($$anchor) => { 3814 var div_1 = root_1$1(); 3815 var node_1 = child(div_1); 3816 3817 MarkdownCode(node_1, { 3818 get message() { 3819 return placeholder(); 3820 }, 3821 3822 get latex_delimiters() { 3823 return latex_delimiters(); 3824 } 3825 }); 3826 3827 reset(div_1); 3828 append($$anchor, div_1); 3829 }; 3830 3831 if_block(node, ($$render) => { 3832 if (placeholder() !== null) $$render(consequent); 3833 }); 3834 } 3835 3836 var node_2 = sibling(node, 2); 3837 3838 { 3839 var consequent_14 = ($$anchor) => { 3840 var div_2 = root_2$1(); 3841 3842 each(div_2, 5, examples, index, ($$anchor, example, i) => { 3843 var button = root_3(); 3844 var div_3 = child(button); 3845 var node_3 = child(div_3); 3846 3847 { 3848 var consequent_1 = ($$anchor) => { 3849 var div_4 = root_4(); 3850 var node_4 = child(div_4); 3851 3852 Image(node_4, { 3853 class: 'example-image', 3854 get src() { 3855 return (get(example), untrack(() => get(example).icon.url)); 3856 }, 3857 alt: 'Example icon' 3858 }); 3859 3860 reset(div_4); 3861 append($$anchor, div_4); 3862 }; 3863 3864 var alternate_8 = ($$anchor) => { 3865 var fragment = comment(); 3866 var node_5 = first_child(fragment); 3867 3868 { 3869 var consequent_2 = ($$anchor) => { 3870 var div_5 = root_6$1(); 3871 3872 append($$anchor, div_5); 3873 }; 3874 3875 var alternate_7 = ($$anchor) => { 3876 var fragment_1 = comment(); 3877 var node_6 = first_child(fragment_1); 3878 3879 { 3880 var consequent_13 = ($$anchor) => { 3881 var fragment_2 = comment(); 3882 var node_7 = first_child(fragment_2); 3883 3884 { 3885 var consequent_9 = ($$anchor) => { 3886 var div_6 = root_9(); 3887 var node_8 = child(div_6); 3888 3889 each( 3890 node_8, 3891 1, 3892 () => ( 3893 get(example), 3894 untrack(() => get(example).files.slice(0, 4)) 3895 ), 3896 index, 3897 ($$anchor, file, i, $$array) => { 3898 var fragment_3 = comment(); 3899 var node_9 = first_child(fragment_3); 3900 3901 { 3902 var consequent_4 = ($$anchor) => { 3903 var div_7 = root_11$1();
3904 var node_10 = child(div_7); 3905 3906 { 3907 let $0 = derived_safe_equal(() => ( 3908 get(file), 3909 untrack(() => get(file).orig_name || `Example image ${i + 1}`) 3910 )); 3911 3912 Image(node_10, { 3913 class: 'example-image', 3914 get src() { 3915 return (get(file), untrack(() => get(file).url)); 3916 }, 3917 3918 get alt() { 3919 return get($0); 3920 } 3921 }); 3922 } 3923 3924 var node_11 = sibling(node_10, 2); 3925 3926 { 3927 var consequent_3 = ($$anchor) => { 3928 var div_8 = root_12(); 3929 var text = child(div_8); 3930 3931 reset(div_8); 3932 3933 template_effect(() => { 3934 set_attribute(div_8, 'aria-label', ( 3935 get(example), 3936 untrack(() => `${get(example).files.length - 4} more files`) 3937 )); 3938 3939 set_text(text, `+${( 3940 get(example), 3941 untrack(() => get(example).files.length - 4) 3942 ) ?? ''}`); 3943 }); 3944 3945 append($$anchor, div_8); 3946 }; 3947 3948 if_block(node_11, ($$render) => { 3949 if (( 3950 get(example), 3951 untrack(() => i === 3 && get(example).files.length > 4) 3952 )) $$render(consequent_3); 3953 }); 3954 } 3955 3956 reset(div_7); 3957 append($$anchor, div_7); 3958 }; 3959 3960 var alternate_2 = ($$anchor) => { 3961 var fragment_4 = comment();
3962 var node_12 = first_child(fragment_4); 3963 3964 { 3965 var consequent_6 = ($$anchor) => { 3966 var div_9 = root_14(); 3967 var video = child(div_9); 3968 var node_13 = sibling(video, 2); 3969 3970 { 3971 var consequent_5 = ($$anchor) => { 3972 var div_10 = root_15(); 3973 var text_1 = child(div_10); 3974 3975 reset(div_10); 3976 3977 template_effect(() => { 3978 set_attribute(div_10, 'aria-label', ( 3979 get(example), 3980 untrack(() => `${get(example).files.length - 4} more files`) 3981 )); 3982 3983 set_text(text_1, `+${( 3984 get(example), 3985 untrack(() => get(example).files.length - 4) 3986 ) ?? ''}`); 3987 }); 3988 3989 append($$anchor, div_10); 3990 }; 3991 3992 if_block(node_13, ($$render) => { 3993 if (( 3994 get(example), 3995 untrack(() => i === 3 && get(example).files.length > 4) 3996 )) $$render(consequent_5); 3997 }); 3998 } 3999 4000 reset(div_9); 4001 template_effect(() => set_attribute(video, 'src', (get(file), untrack(() => get(file).url)))); 4002 append($$anchor, div_9); 4003 }; 4004 4005 var alternate_1 = ($$anchor) => { 4006 var div_11 = root_16();
4007 var node_14 = child(div_11); 4008 4009 { 4010 var consequent_7 = ($$anchor) => { 4011 Music($$anchor); 4012 }; 4013 4014 var alternate = ($$anchor) => { 4015 File($$anchor); 4016 }; 4017 4018 if_block(node_14, ($$render) => { 4019 if (( 4020 get(file), 4021 untrack(() => get(file).mime_type?.includes("audio")) 4022 )) $$render(consequent_7); else $$render(alternate, false); 4023 }); 4024 } 4025 4026 reset(div_11); 4027 4028 template_effect(() => set_attribute(div_11, 'aria-label', ( 4029 get(file), 4030 untrack(() => `File: ${get(file).orig_name}`) 4031 ))); 4032 4033 append($$anchor, div_11); 4034 }; 4035 4036 if_block( 4037 node_12, 4038 ($$render) => { 4039 if (( 4040 get(file), 4041 untrack(() => get(file).mime_type?.includes("video")) 4042 )) $$render(consequent_6); else $$render(alternate_1, false); 4043 }, 4044 true 4045 ); 4046 } 4047 4048 append($$anchor, fragment_4); 4049 }; 4050 4051 if_block(node_9, ($$render) => { 4052 if (( 4053 get(file), 4054 untrack(() => get(file).mime_type?.includes("image")) 4055 )) $$render(consequent_4); else $$render(alternate_2, false); 4056 }); 4057 } 4058 4059 append($$anchor, fragment_3); 4060 } 4061 ); 4062
4063 var node_15 = sibling(node_8, 2); 4064 4065 { 4066 var consequent_8 = ($$anchor) => { 4067 var div_12 = root_19(); 4068 var div_13 = child(div_12); 4069 var text_2 = child(div_13); 4070 4071 reset(div_13); 4072 reset(div_12); 4073 4074 template_effect(() => { 4075 set_attribute(div_13, 'aria-label', ( 4076 get(example), 4077 untrack(() => `${get(example).files.length - 4} more files`) 4078 )); 4079 4080 set_text(text_2, `+${( 4081 get(example), 4082 untrack(() => get(example).files.length - 4) 4083 ) ?? ''}`); 4084 }); 4085 4086 append($$anchor, div_12); 4087 }; 4088 4089 if_block(node_15, ($$render) => { 4090 if (( 4091 get(example), 4092 untrack(() => get(example).files.length > 4) 4093 )) $$render(consequent_8); 4094 }); 4095 } 4096 4097 reset(div_6); 4098 append($$anchor, div_6); 4099 }; 4100 4101 var alternate_6 = ($$anchor) => { 4102 var fragment_7 = comment();
4103 var node_16 = first_child(fragment_7); 4104 4105 { 4106 var consequent_10 = ($$anchor) => { 4107 var div_14 = root_21(); 4108 var node_17 = child(div_14); 4109 4110 { 4111 let $0 = derived_safe_equal(() => ( 4112 get(example), 4113 untrack(() => get(example).files[0].orig_name || "Example image") 4114 )); 4115 4116 Image(node_17, { 4117 class: 'example-image', 4118 get src() { 4119 return (get(example), untrack(() => get(example).files[0].url)); 4120 }, 4121 4122 get alt() { 4123 return get($0); 4124 } 4125 }); 4126 } 4127 4128 reset(div_14); 4129 append($$anchor, div_14); 4130 }; 4131 4132 var alternate_5 = ($$anchor) => { 4133 var fragment_8 = comment(); 4134 var node_18 = first_child(fragment_8); 4135 4136 { 4137 var consequent_11 = ($$anchor) => { 4138 var div_15 = root_23(); 4139 var video_1 = child(div_15); 4140 4141 reset(div_15); 4142 template_effect(() => set_attribute(video_1, 'src', (get(example), untrack(() => get(example).files[0].url)))); 4143 append($$anchor, div_15); 4144 }; 4145 4146 var alternate_4 = ($$anchor) => { 4147 var fragment_9 = comment();
4148 var node_19 = first_child(fragment_9); 4149 4150 { 4151 var consequent_12 = ($$anchor) => { 4152 var div_16 = root_25(); 4153 var node_20 = child(div_16); 4154 4155 Music(node_20); 4156 reset(div_16); 4157 4158 template_effect(() => set_attribute(div_16, 'aria-label', ( 4159 get(example), 4160 untrack(() => `File: ${get(example).files[0].orig_name}`) 4161 ))); 4162 4163 append($$anchor, div_16); 4164 }; 4165 4166 var alternate_3 = ($$anchor) => { 4167 var div_17 = root_26(); 4168 var node_21 = child(div_17); 4169 4170 File(node_21); 4171 reset(div_17); 4172 4173 template_effect(() => set_attribute(div_17, 'aria-label', ( 4174 get(example), 4175 untrack(() => `File: ${get(example).files[0].orig_name}`) 4176 ))); 4177 4178 append($$anchor, div_17); 4179 }; 4180 4181 if_block( 4182 node_19, 4183 ($$render) => { 4184 if (( 4185 get(example), 4186 untrack(() => get(example).files[0].mime_type?.includes("audio")) 4187 )) $$render(consequent_12); else $$render(alternate_3, false); 4188 }, 4189 true 4190 ); 4191 } 4192 4193 append($$anchor, fragment_9); 4194 }; 4195 4196 if_block( 4197 node_18, 4198 ($$render) => { 4199 if (( 4200 get(example), 4201 untrack(() => get(example).files[0].mime_type?.includes("video")) 4202 )) $$render(consequent_11); else $$render(alternate_4, false); 4203 }, 4204 true 4205 ); 4206 } 4207 4208 append($$anchor, fragment_8); 4209 }; 4210 4211 if_block( 4212 node_16, 4213 ($$render) => { 4214 if (( 4215 get(example), 4216 untrack(() => get(example).files[0].mime_type?.includes("image")) 4217 )) $$render(consequent_10); else $$render(alternate_5, false); 4218 }, 4219 true 4220 ); 4221 } 4222 4223 append($$anchor, fragment_7); 4224 }; 4225 4226 if_block(node_7, ($$render) => { 4227 if (( 4228 get(example), 4229 untrack(() => get(example).files.length > 1) 4230 )) $$render(consequent_9); else $$render(alternate_6, false); 4231 }); 4232 } 4233 4234 append($$anchor, fragment_2); 4235 }; 4236 4237 if_block( 4238 node_6, 4239 ($$render) => { 4240 if (( 4241 get(example), 4242 untrack(() => get(example).files !== undefined && get(example).files.length > 0) 4243 )) $$render(consequent_13); 4244 }, 4245 true 4246 ); 4247 } 4248 4249 append($$anchor, fragment_1); 4250 }; 4251 4252 if_block( 4253 node_5, 4254 ($$render) => { 4255 if (( 4256 get(example), 4257 untrack(() => get(example)?.icon?.mime_type === "text") 4258 )) $$render(consequent_2); else $$render(alternate_7, false); 4259 }, 4260 true 4261 ); 4262 } 4263 4264 append($$anchor, fragment); 4265 }; 4266 4267 if_block(node_3, ($$render) => { 4268 if ((get(example), untrack(() => get(example)?.icon?.url))) $$render(consequent_1); else $$render(alternate_8, false); 4269 }); 4270 } 4271 4272 var div_18 = sibling(node_3, 2); 4273 var span = child(div_18); 4274 var text_3 = child(span, true); 4275 4276 reset(span); 4277 reset(div_18); 4278 reset(div_3); 4279 reset(button); 4280 4281 template_effect(() => { 4282 set_attribute(button, 'aria-label', ( 4283 get(example), 4284 untrack(() => `Select example ${i + 1}: ${get(example).display_text || get(example).text}`) 4285 )); 4286 4287 set_text(text_3, ( 4288 get(example), 4289 untrack(() => get(example).display_text || get(example).text) 4290 )); 4291 }); 4292 4293 event('click', button, () => handle_example_select(i, typeof get(example) === "string" ? { text: get(example) } : get(example))); 4294 append($$anchor, button); 4295 }); 4296 4297 reset(div_2); 4298 append($$anchor, div_2); 4299 }; 4300 4301 if_block(node_2, ($$render) => { 4302 if (examples() !== null) $$render(consequent_14); 4303 }); 4304 } 4305 4306 reset(div); 4307 append($$anchor, div); 4308 4309 return pop($$exports); 4310} 4311 4312function CopyAll($$anchor, $$props) { 4313 push($$props, false); 4314 4315 let copied = mutable_source(false); 4316 let value = prop($$props, 'value', 12); 4317 let watermark = prop($$props, 'watermark', 12, null); 4318 let timer; 4319 4320 function copy_feedback() { 4321 set(copied, true); 4322 4323 if (timer) clearTimeout(timer); 4324 4325 timer = setTimeout( 4326 () => { 4327 set(copied, false); 4328 }, 4329 1000 4330 ); 4331 } 4332 4333 const copy_conversation = () => { 4334 if (value()) { 4335 const conversation_value = value().map((message) => { 4336 if (message.type === "text") { 4337 return `${message.role}: ${message.content}`; 4338 } 4339 4340 return `${message.role}: ${message.content.value.url}`; 4341 }).join("\n\n"); 4342 4343 const text_to_copy = watermark() 4344 ? `${conversation_value}\n\n${watermark()}` 4345 : conversation_value; 4346 4347 navigator.clipboard.writeText(text_to_copy).catch((err) => { 4348 console.error("Failed to copy conversation: ", err); 4349 }); 4350 } 4351 }; 4352 4353 async function handle_copy() { 4354 if ("clipboard" in navigator) { 4355 copy_conversation(); 4356 copy_feedback(); 4357 } 4358 } 4359 4360 onDestroy(() => { 4361 if (timer) clearTimeout(timer); 4362 }); 4363 4364 var $$exports = { 4365 get value() { 4366 return value(); 4367 }, 4368 4369 set value($$value) { 4370 value($$value); 4371 flushSync(); 4372 }, 4373 4374 get watermark() { 4375 return watermark(); 4376 }, 4377 4378 set watermark($$value) { 4379 watermark($$value); 4380 flushSync(); 4381 } 4382 }; 4383 4384 init(); 4385 4386 { 4387 let $0 = derived_safe_equal(() => get(copied) ? Check : Copy); 4388 let $1 = derived_safe_equal(() => get(copied) ? "Copied conversation" : "Copy conversation"); 4389 4390 IconButton($$anchor, { 4391 get Icon() { 4392 return get($0); 4393 }, 4394 onclick: handle_copy, 4395 get label() { 4396 return get($1); 4397 } 4398 }); 4399 } 4400 4401 return pop($$exports); 4402} 4403 4404var root_2 = from_html(`<!> <!> <!>`, 1); 4405var root_6 = from_html(`<!> <!>`, 1); 4406var root_11 = from_html(`<button class="option svelte-kpz1"> </button>`); 4407var root_10 = from_html(`<div class="options svelte-kpz1"></div>`); 4408var root_5 = from_html(`<div class="message-wrap svelte-kpz1"><!> <!></div>`); 4409var root_13 = from_html(`<div class="scroll-down-button-container svelte-kpz1"><!></div>`); 4410var root = from_html(`<!>
4410 <div role="log" aria-label="chatbot conversation" aria-live="polite"><!></div> <!>`, 1); 4411 4412function ChatBot($$anchor, $$props) { 4413 push($$props, false); 4414 4415 const component_names = mutable_source(); 4416 const groupedMessages = mutable_source(); 4417 const options = mutable_source(); 4418 let value = prop($$props, 'value', 28, () => []); 4419 let old_value = mutable_source(null); 4420 let _fetch = prop($$props, '_fetch', 12); 4421 let load_component = prop($$props, 'load_component', 12); 4422 let allow_file_downloads = prop($$props, 'allow_file_downloads', 12); 4423 let display_consecutive_in_same_bubble = prop($$props, 'display_consecutive_in_same_bubble', 12); 4424 let _components = mutable_source({}); 4425 const is_browser = typeof window !== "undefined"; 4426 4427 async function update_components() { 4428 set(_components, await load_components(get_components_from_messages(value()), get(_components), load_component())); 4429 } 4430 4431 let latex_delimiters = prop($$props, 'latex_delimiters', 12); 4432 let pending_message = prop($$props, 'pending_message', 12, false); 4433 let generating = prop($$props, 'generating', 12, false); 4434 let selectable = prop($$props, 'selectable', 12, false); 4435 let likeable = prop($$props, 'likeable', 12, false); 4436 let feedback_options = prop($$props, 'feedback_options', 12); 4437 let feedback_value = prop($$props, 'feedback_value', 12, null); 4438 let editable = prop($$props, 'editable', 12, null); 4439 let show_share_button = prop($$props, 'show_share_button', 12, false); 4440 let show_copy_all_button = prop($$props, 'show_copy_all_button', 12, false); 4441 let rtl = prop($$props, 'rtl', 12, false); 4442 let show_copy_button = prop($$props, 'show_copy_button', 12, false); 4443 let buttons = prop($$props, 'buttons', 12, null); 4444 let on_custom_button_click = prop($$props, 'on_custom_button_click', 12, null); 4445 let avatar_images = prop($$props, 'avatar_images', 28, () => [null, null]); 4446 let sanitize_html = prop($$props, 'sanitize_html', 12, true); 4447 let render_markdown = prop($$props, 'render_markdown', 12, true); 4448 let line_breaks = prop($$props, 'line_breaks', 12, true); 4449 let autoscroll = prop($$props, 'autoscroll', 12, true); 4450 let theme_mode = prop($$props, 'theme_mode', 12); 4451 let i18n = prop($$props, 'i18n', 12); 4452 let layout = prop($$props, 'layout', 12, "bubble"); 4453 let placeholder = prop($$props, 'placeholder', 12, null); 4454 let upload = prop($$props, 'upload', 12); 4455 let examples = prop($$props, 'examples', 12, null); 4456 let _retryable = prop($$props, '_retryable', 12, false); 4457 let _undoable = prop($$props, '_undoable', 12, false); 4458 let like_user_message = prop($$props, 'like_user_message', 12, false); 4459 let allow_tags = prop($$props, 'allow_tags', 12, false); 4460 let watermark = prop($$props, 'watermark', 12, null); 4461 let show_progress = prop($$props, 'show_progress', 12, "full"); 4462 let target = mutable_source(null); 4463 let edit_index = mutable_source(null); 4464 let edit_messages = mutable_source([]); 4465 4466 onMount(() => { 4467 set(target, document.querySelector("div.gradio-container")); 4468 }); 4469 4470 let div = mutable_source(); 4471 let show_scroll_button = mutable_source(false); 4472 const dispatch = createEventDispatcher(); 4473 4474 function is_at_bottom() { 4475 return get(div) && get(div).offsetHeight + get(div).scrollTop > get(div).scrollHeight - 100; 4476 } 4477 4478 function scroll_to_bottom() { 4479 if (!get(div)) return; 4480 4481 get(div).scrollTo(0, get(div).scrollHeight); 4482 set(show_scroll_button, false); 4483 } 4484 4485 async function scroll_on_value_update() { 4486 if (!autoscroll()) return; 4487 4488 if (is_at_bottom()) { 4489 4490 await tick(); // Wait for the DOM to update so that the scrollHeight is correct 4491 await new Promise((resolve) => setTimeout(resolve, 300)); 4492 scroll_to_bottom(); 4493 } 4494 } 4495 4496 onMount(() => { 4497 if (autoscroll()) { 4498 scroll_to_bottom(); 4499 } 4500 4501 scroll_on_value_update(); 4502 }); 4503 4504 onMount(() => { 4505 function handle_scroll() { 4506 if (is_at_bottom()) { 4507 set(show_scroll_button, false); 4508 } else { 4509 set(show_scroll_button, true); 4510 } 4511 } 4512 4513 get(div)?.addEventListener("scroll", handle_scroll); 4514 4515 return () => { 4516 get(div)?.removeEventListener("scroll", handle_scroll); 4517 }; 4518 }); 4519 4520 function handle_action(i, message, selected) { 4521 if (selected === "undo" || selected === "retry") { 4522 const val_ = value(); 4523 4524 // iterate through messages until we find the last user message 4525 // the index of this message is where the user needs to edit the chat history 4526 let last_index = val_.length - 1; 4527 4528 while (val_[last_index].role === "assistant") { 4529 last_index--; 4530 } 4531 4532 dispatch(selected, { 4533 index: val_[last_index].index, 4534 value: val_[last_index].content 4535 }); 4536 } else if (selected == "edit") { 4537 set(edit_index, i); 4538 get(edit_messages).push(message.content); 4539 } else if (selected == "edit_cancel") { 4540 set(edit_index, null); 4541 } else if (selected == "edit_submit") { 4542 set(edit_index, null); 4543 4544 dispatch("edit", { 4545 index: message.index, 4546 _dispatch_value: [{ type: "text", text: get(edit_messages)[i].slice() }], 4547 value: get(edit_messages)[i].slice(), 4548 previous_value: message.content 4549 }); 4550 } else { 4551 let feedback = selected === "Like" 4552 ? true 4553 : selected === "Dislike" ? false : selected || ""; 4554 4555 if (!get(groupedMessages)) return; 4556 4557 const message_group = get(groupedMessages)[i]; 4558 const [first] = [message_group[0], message_group[message_group.length - 1]]; 4559 4560 dispatch("like", { 4561 index: first.index, 4562 value: message_group.map((m) => m.content), 4563 liked: feedback 4564 }); 4565 } 4566 } 4567 4568 function get_last_bot_options() { 4569 if (!value() || !get(groupedMessages) || get(groupedMessages).length === 0) return undefined; 4570 4571 const last_group = get(groupedMessages)[get(groupedMessages).length - 1]; 4572 4573 if (last_group[0].role !== "assistant") return undefined; 4574 4575 return last_group[last_group.length - 1].options; 4576 } 4577 4578 legacy_pre_effect(() => (deep_read_state(value())), () => { 4579 set(component_names, get_components_from_messages(value()).sort().join(", ")); 4580 }); 4581 4582 legacy_pre_effect(() => (get(component_names)), () => { 4583 (get(component_names), update_components()); 4584 }); 4585 4586 legacy_pre_effect( 4587 () => ( 4588 deep_read_state(value()), 4589 deep_read_state(pending_message()), 4590 get(_components) 4591 ), 4592 () => { 4593 if (value() || pending_message() || get(_components)) { 4594 scroll_on_value_update(); 4595 } 4596 } 4597 ); 4598 4599 legacy_pre_effect(() => (deep_read_state(value()), get(old_value)), () => { 4600 if (!dequal(value(), get(old_value))) { 4601 set(old_value, value()); 4602 dispatch("change"); 4603 } 4604 }); 4605 4606 legacy_pre_effect( 4607 () => ( 4608 deep_read_state(value()), 4609 deep_read_state(display_consecutive_in_same_bubble()) 4610 ), 4611 () => {
4612 set(groupedMessages, value() && group_messages(value(), display_consecutive_in_same_bubble())); 4613 } 4614 ); 4615 4616 legacy_pre_effect(() => (deep_read_state(value())), () => { 4617 set(options, value() && get_last_bot_options()); 4618 }); 4619 4620 legacy_pre_effect_reset(); 4621 4622 var $$exports = { 4623 get value() { 4624 return value(); 4625 }, 4626 4627 set value($$value) { 4628 value($$value); 4629 flushSync(); 4630 }, 4631 4632 get _fetch() { 4633 return _fetch(); 4634 }, 4635 4636 set _fetch($$value) { 4637 _fetch($$value); 4638 flushSync(); 4639 }, 4640 4641 get load_component() { 4642 return load_component(); 4643 }, 4644 4645 set load_component($$value) { 4646 load_component($$value); 4647 flushSync(); 4648 }, 4649 4650 get allow_file_downloads() { 4651 return allow_file_downloads(); 4652 }, 4653 4654 set allow_file_downloads($$value) { 4655 allow_file_downloads($$value); 4656 flushSync(); 4657 }, 4658 4659 get display_consecutive_in_same_bubble() { 4660 return display_consecutive_in_same_bubble(); 4661 }, 4662 4663 set display_consecutive_in_same_bubble($$value) { 4664 display_consecutive_in_same_bubble($$value); 4665 flushSync(); 4666 }, 4667 4668 get latex_delimiters() { 4669 return latex_delimiters(); 4670 }, 4671 4672 set latex_delimiters($$value) { 4673 latex_delimiters($$value); 4674 flushSync(); 4675 }, 4676 4677 get pending_message() { 4678 return pending_message(); 4679 }, 4680 4681 set pending_message($$value) { 4682 pending_message($$value); 4683 flushSync(); 4684 }, 4685
4686 get generating() { 4687 return generating(); 4688 }, 4689 4690 set generating($$value) { 4691 generating($$value); 4692 flushSync(); 4693 }, 4694 4695 get selectable() { 4696 return selectable(); 4697 }, 4698 4699 set selectable($$value) { 4700 selectable($$value); 4701 flushSync(); 4702 }, 4703 4704 get likeable() { 4705 return likeable(); 4706 }, 4707 4708 set likeable($$value) { 4709 likeable($$value); 4710 flushSync(); 4711 }, 4712 4713 get feedback_options() { 4714 return feedback_options(); 4715 }, 4716 4717 set feedback_options($$value) { 4718 feedback_options($$value); 4719 flushSync(); 4720 }, 4721 4722 get feedback_value() { 4723 return feedback_value(); 4724 }, 4725 4726 set feedback_value($$value) { 4727 feedback_value($$value); 4728 flushSync(); 4729 }, 4730 4731 get editable() { 4732 return editable(); 4733 }, 4734 4735 set editable($$value) { 4736 editable($$value); 4737 flushSync(); 4738 }, 4739 4740 get show_share_button() { 4741 return show_share_button(); 4742 }, 4743 4744 set show_share_button($$value) { 4745 show_share_button($$value); 4746 flushSync(); 4747 }, 4748 4749 get show_copy_all_button() { 4750 return show_copy_all_button(); 4751 }, 4752 4753 set show_copy_all_button($$value) { 4754 show_copy_all_button($$value); 4755 flushSync(); 4756 }, 4757 4758 get rtl() { 4759 return rtl(); 4760 }, 4761 4762 set rtl($$value) { 4763 rtl($$value); 4764 flushSync(); 4765 }, 4766 4767 get show_copy_button() { 4768 return show_copy_button(); 4769 }, 4770 4771 set show_copy_button($$value) { 4772 show_copy_button($$value); 4773 flushSync(); 4774 }, 4775 4776 get buttons() { 4777 return buttons(); 4778 }, 4779 4780 set buttons($$value) { 4781 buttons($$value); 4782 flushSync(); 4783 }, 4784 4785 get on_custom_button_click() { 4786 return on_custom_button_click(); 4787 }, 4788 4789 set on_custom_button_click($$value) { 4790 on_custom_button_click($$value); 4791 flushSync(); 4792 }, 4793 4794 get avatar_images() { 4795 return avatar_images(); 4796 }, 4797 4798 set avatar_images($$value) { 4799 avatar_images($$value); 4800 flushSync(); 4801 }, 4802 4803 get sanitize_html() { 4804 return sanitize_html(); 4805 }, 4806 4807 set sanitize_html($$value) { 4808 sanitize_html($$value); 4809 flushSync(); 4810 }, 4811 4812 get render_markdown() { 4813 return render_markdown(); 4814 }, 4815 4816 set render_markdown($$value) { 4817 render_markdown($$value); 4818 flushSync(); 4819 }, 4820 4821 get line_breaks() { 4822 return line_breaks(); 4823 }, 4824 4825 set line_breaks($$value) { 4826 line_breaks($$value); 4827 flushSync(); 4828 }, 4829 4830 get autoscroll() { 4831 return autoscroll(); 4832 }, 4833 4834 set autoscroll($$value) { 4835 autoscroll($$value); 4836 flushSync(); 4837 }, 4838 4839 get theme_mode() { 4840 return theme_mode(); 4841 }, 4842 4843 set theme_mode($$value) { 4844 theme_mode($$value); 4845 flushSync(); 4846 }, 4847 4848 get i18n() { 4849 return i18n(); 4850 }, 4851 4852 set i18n($$value) { 4853 i18n($$value); 4854 flushSync(); 4855 }, 4856 4857 get layout() { 4858 return layout(); 4859 }, 4860 4861 set layout($$value) { 4862 layout($$value); 4863 flushSync(); 4864 }, 4865 4866 get placeholder() { 4867 return placeholder(); 4868 }, 4869 4870 set placeholder($$value) { 4871 placeholder($$value); 4872 flushSync(); 4873 }, 4874 4875 get upload() { 4876 return upload(); 4877 }, 4878 4879 set upload($$value) { 4880 upload($$value); 4881 flushSync(); 4882 }, 4883 4884 get examples() { 4885 return examples(); 4886 }, 4887 4888 set examples($$value) { 4889 examples($$value); 4890 flushSync(); 4891 }, 4892 4893 get _retryable() { 4894 return _retryable(); 4895 }, 4896 4897 set _retryable($$value) { 4898 _retryable($$value); 4899 flushSync(); 4900 }, 4901 4902 get _undoable() { 4903 return _undoable(); 4904 }, 4905 4906 set _undoable($$value) { 4907 _undoable($$value); 4908 flushSync(); 4909 }, 4910 4911 get like_user_message() { 4912 return like_user_message(); 4913 }, 4914 4915 set like_user_message($$value) { 4916 like_user_message($$value); 4917 flushSync(); 4918 }, 4919 4920 get allow_tags() { 4921 return allow_tags(); 4922 }, 4923 4924 set allow_tags($$value) { 4925 allow_tags($$value); 4926 flushSync(); 4927 }, 4928 4929 get watermark() { 4930 return watermark(); 4931 }, 4932 4933 set watermark($$value) { 4934 watermark($$value); 4935 flushSync(); 4936 }, 4937 4938 get show_progress() { 4939 return show_progress(); 4940 }, 4941 4942 set show_progress($$value) { 4943 show_progress($$value); 4944 flushSync(); 4945 } 4946 }; 4947 4948 init(); 4949 4950 var fragment = root(); 4951 var node = first_child(fragment); 4952 4953 { 4954 var consequent_2 = ($$anchor) => { 4955 IconButtonWrapper($$anchor, { 4956 get buttons() { 4957 return buttons(); 4958 }, 4959 4960 get on_custom_button_click() { 4961 return on_custom_button_click(); 4962 }, 4963 4964 children: ($$anchor, $$slotProps) => { 4965 var fragment_2 = root_2();
4966 var node_1 = first_child(fragment_2); 4967 4968 { 4969 var consequent = ($$anchor) => { 4970 IconButton($$anchor, { 4971 get Icon() { 4972 return Community; 4973 }, 4974 4975 onclick: async () => { 4976 try { 4977 // @ts-ignore 4978 const formatted = await format_chat_for_sharing(value()); 4979 4980 dispatch("share", { description: formatted }); 4981 } catch(e) { 4982 console.error(e); 4983 4984 let message = e instanceof ShareError ? e.message : "Share failed."; 4985 4986 dispatch("error", message); 4987 } 4988 } 4989 }); 4990 }; 4991 4992 if_block(node_1, ($$render) => { 4993 if (show_share_button()) $$render(consequent); 4994 }); 4995 } 4996 4997 var node_2 = sibling(node_1, 2); 4998 4999 { 5000 let $0 = derived_safe_equal(() => ( 5001 deep_read_state(i18n()), 5002 untrack(() => i18n()("chatbot.clear")) 5003 )); 5004 5005 IconButton(node_2, { 5006 get Icon() { 5007 return Trash; 5008 }, 5009 onclick: () => dispatch("clear"), 5010 get label() { 5011 return get($0); 5012 } 5013 }); 5014 } 5015 5016 var node_3 = sibling(node_2, 2); 5017 5018 { 5019 var consequent_1 = ($$anchor) => { 5020 CopyAll($$anchor, { 5021 get value() { 5022 return value(); 5023 }, 5024 5025 get watermark() { 5026 return watermark(); 5027 } 5028 }); 5029 }; 5030 5031 if_block(node_3, ($$render) => { 5032 if (show_copy_all_button()) $$render(consequent_1); 5033 }); 5034 } 5035 5036 append($$anchor, fragment_2); 5037 }, 5038 $$slots: { default: true } 5039 }); 5040 }; 5041 5042 if_block(node, ($$render) => { 5043 if (( 5044 deep_read_state(value()), 5045 untrack(() => value() !== null && value().length > 0) 5046 )) $$render(consequent_2); 5047 }); 5048 } 5049 5050 var div_1 = sibling(node, 2); 5051 var node_4 = child(div_1); 5052 5053 { 5054 var consequent_6 = ($$anchor) => { 5055 var div_2 = root_5(); 5056 var node_5 = child(div_2); 5057 5058 each(node_5, 1, () => get(groupedMessages), index, ($$anchor, messages, i) => { 5059 const role = derived_safe_equal(() => ( 5060 get(messages), 5061 untrack(() => get(messages)[0].role === "user" ? "user" : "bot") 5062 )); 5063 5064 const avatar_img = derived_safe_equal(() => ( 5065 deep_read_state(avatar_images()), 5066 deep_read_state(get(role)), 5067 untrack(() => avatar_images()[get(role) === "user" ? 0 : 1]) 5068 )); 5069 5070 const opposite_avatar_img = derived_safe_equal(() => ( 5071 deep_read_state(avatar_images()), 5072 deep_read_state(get(role)), 5073 untrack(() => avatar_images()[get(role) === "user" ? 0 : 1]) 5074 )); 5075 5076 const feedback_index = derived_safe_equal(() => ( 5077 get(groupedMessages), 5078 untrack(() => get(groupedMessages).slice(0, i).filter((m) => m[0].role === "assistant").length) 5079 )); 5080 5081 const current_feedback = derived_safe_equal(() => ( 5082 deep_read_state(get(role)), 5083 deep_read_state(feedback_value()), 5084 deep_read_state(get(feedback_index)), 5085 untrack(() => get(role) === "bot" && feedback_value() && feedback_value()[get(feedback_index)] ? feedback_value()[get(feedback_index)] : null) 5086 )); 5087 5088 var fragment_5 = root_6(); 5089 var node_6 = first_child(fragment_5); 5090 5091 { 5092 let $0 = derived_safe_equal(() => get(role) === "user" ? likeable() && like_user_message() : likeable()); 5093 5094 let $1 = derived_safe_equal(() => ( 5095 deep_read_state(_retryable()), 5096 deep_read_state(is_last_bot_message), 5097 get(messages), 5098 deep_read_state(value()), 5099 untrack(() => _retryable() && is_last_bot_message(get(messages), value())) 5100 )); 5101 5102 let $2 = derived_safe_equal(() => ( 5103 deep_read_state(_undoable()), 5104 deep_read_state(is_last_bot_message), 5105 get(messages), 5106 deep_read_state(value()), 5107 untrack(() => _undoable() && is_last_bot_message(get(messages), value())) 5108 )); 5109 5110 let $3 = derived_safe_equal(() => ( 5111 deep_read_state(editable()), 5112 deep_read_state(get(role)), 5113 get(messages), 5114 untrack(() => editable() === "all" || editable() == "user" && get(role) === "user" && get(messages).length > 0 && get(messages)[get(messages).length - 1].type == "text") 5115 )); 5116 5117 let $4 = derived_safe_equal(() => get(edit_index) === i); 5118 let $5 = derived_safe_equal(() => is_browser ? scroll : () => {}); 5119 5120 Message(node_6, { 5121 get messages() { 5122 return get(messages); 5123 }, 5124 5125 get display_consecutive_in_same_bubble() {
5126 return display_consecutive_in_same_bubble(); 5127 }, 5128 5129 get opposite_avatar_img() { 5130 return get(opposite_avatar_img); 5131 }, 5132 5133 get avatar_img() { 5134 return get(avatar_img); 5135 }, 5136 5137 get role() { 5138 return get(role); 5139 }, 5140 5141 get layout() { 5142 return layout(); 5143 }, 5144 5145 get dispatch() { 5146 return dispatch; 5147 }, 5148 5149 get i18n() { 5150 return i18n(); 5151 }, 5152 5153 get _fetch() { 5154 return _fetch(); 5155 }, 5156 5157 get line_breaks() { 5158 return line_breaks(); 5159 }, 5160 5161 get theme_mode() { 5162 return theme_mode(); 5163 }, 5164 5165 get target() { 5166 return get(target); 5167 }, 5168 5169 get upload() { 5170 return upload(); 5171 }, 5172 5173 get selectable() { 5174 return selectable(); 5175 }, 5176 5177 get sanitize_html() { 5178 return sanitize_html(); 5179 }, 5180 5181 get render_markdown() { 5182 return render_markdown(); 5183 }, 5184 5185 get rtl() { 5186 return rtl(); 5187 }, 5188 i, 5189 get value() { 5190 return value(); 5191 }, 5192 5193 get latex_delimiters() { 5194 return latex_delimiters(); 5195 }, 5196 5197 get _components() { 5198 return get(_components); 5199 }, 5200
5201 get generating() { 5202 return generating(); 5203 }, 5204 5205 get feedback_options() { 5206 return feedback_options(); 5207 }, 5208 5209 get current_feedback() { 5210 return get(current_feedback); 5211 }, 5212 5213 get allow_tags() { 5214 return allow_tags(); 5215 }, 5216 5217 get watermark() { 5218 return watermark(); 5219 }, 5220 5221 get show_like() { 5222 return get($0); 5223 }, 5224 5225 get show_retry() { 5226 return get($1); 5227 }, 5228 5229 get show_undo() { 5230 return get($2); 5231 }, 5232 5233 get show_edit() { 5234 return get($3); 5235 }, 5236 5237 get in_edit_mode() { 5238 return get($4); 5239 }, 5240 5241 get show_copy_button() { 5242 return show_copy_button(); 5243 }, 5244 5245 handle_action: (selected) => { 5246 if (selected == "edit") { 5247 get(edit_messages).splice(0, get(edit_messages).length); 5248 } 5249 5250 if (selected === "edit" || selected === "edit_submit") { 5251 get(messages).forEach((msg, index) => { 5252 handle_action(selected === "edit" ? i : index, msg, selected); 5253 }); 5254 } else { 5255 handle_action(i, get(messages)[0], selected); 5256 } 5257 }, 5258 5259 get scroll() { 5260 return get($5); 5261 }, 5262 5263 get allow_file_downloads() { 5264 return allow_file_downloads(); 5265 }, 5266 5267 get edit_messages() { 5268 return get(edit_messages); 5269 }, 5270 5271 set edit_messages($$value) { 5272 set(edit_messages, $$value); 5273 }, 5274 $$events: { copy: (e) => dispatch("copy", e.detail) }, 5275 $$legacy: true 5276 }); 5277 } 5278 5279 var node_7 = sibling(node_6, 2); 5280 5281 { 5282 var consequent_3 = ($$anchor) => { 5283 Pending($$anchor, { 5284 get layout() { 5285 return layout(); 5286 }, 5287 5288 get avatar_images() { 5289 return avatar_images(); 5290 } 5291 }); 5292 }; 5293 5294 if_block(node_7, ($$render) => { 5295 if (( 5296 deep_read_state(show_progress()), 5297 deep_read_state(generating()), 5298 get(messages), 5299 untrack(() =>
5299 show_progress() !== "hidden" && generating() && get(messages)[get(messages).length - 1].role === "assistant" && get(messages)[get(messages).length - 1].metadata?.status === "done") 5300 )) $$render(consequent_3); 5301 }); 5302 } 5303 5304 append($$anchor, fragment_5); 5305 }); 5306 5307 var node_8 = sibling(node_5, 2); 5308 5309 { 5310 var consequent_4 = ($$anchor) => { 5311 Pending($$anchor, { 5312 get layout() { 5313 return layout(); 5314 }, 5315 5316 get avatar_images() { 5317 return avatar_images(); 5318 } 5319 }); 5320 }; 5321 5322 var alternate = ($$anchor) => { 5323 var fragment_8 = comment(); 5324 var node_9 = first_child(fragment_8); 5325 5326 { 5327 var consequent_5 = ($$anchor) => { 5328 var div_3 = root_10(); 5329 5330 each(div_3, 5, () => get(options), index, ($$anchor, option, index) => { 5331 var button = root_11(); 5332 var text = child(button, true); 5333 5334 reset(button); 5335 5336 template_effect(() => set_text(text, ( 5337 get(option), 5338 untrack(() => get(option).label || get(option).value) 5339 ))); 5340 5341 event('click', button, () => dispatch("option_select", { index, value: get(option).value })); 5342 append($$anchor, button); 5343 }); 5344 5345 reset(div_3); 5346 append($$anchor, div_3); 5347 }; 5348 5349 if_block( 5350 node_9, 5351 ($$render) => { 5352 if (get(options)) $$render(consequent_5); 5353 }, 5354 true 5355 ); 5356 } 5357 5358 append($$anchor, fragment_8); 5359 }; 5360 5361 if_block(node_8, ($$render) => { 5362 if (show_progress() !== "hidden" && pending_message()) $$render(consequent_4); else $$render(alternate, false); 5363 }); 5364 } 5365 5366 reset(div_2); 5367 action(div_2, ($$node) => copy?.($$node)); 5368 append($$anchor, div_2); 5369 }; 5370 5371 var alternate_1 = ($$anchor) => { 5372 Examples($$anchor, { 5373 get examples() { 5374 return examples(); 5375 }, 5376 5377 get placeholder() { 5378 return placeholder(); 5379 }, 5380 5381 get latex_delimiters() { 5382 return latex_delimiters(); 5383 }, 5384 $$events: { example_select: (e) => dispatch("example_select", e.detail) } 5385 }); 5386 }; 5387 5388 if_block(node_4, ($$render) => { 5389 if (( 5390 deep_read_state(value()), 5391 get(groupedMessages), 5392 untrack(() => value() !== null && value().length > 0 && get(groupedMessages) !== null) 5393 )) $$render(consequent_6); else $$render(alternate_1, false); 5394 }); 5395 } 5396 5397 reset(div_1); 5398 bind_this(div_1, ($$value) => set(div, $$value), () => get(div)); 5399 5400 var node_10 = sibling(div_1, 2); 5401 5402 { 5403 var consequent_7 = ($$anchor) => { 5404 var div_4 = root_13(); 5405 var node_11 = child(div_4); 5406 5407 IconButton(node_11, { 5408 get Icon() { 5409 return ScrollDownArrow; 5410 }, 5411 label: 'Scroll down', 5412 size: 'large', 5413 onclick: scroll_to_bottom 5414 }); 5415 5416 reset(div_4); 5417 append($$anchor, div_4); 5418 }; 5419 5420 if_block(node_10, ($$render) => { 5421 if (get(show_scroll_button)) $$render(consequent_7); 5422 }); 5423 } 5424 5425 template_effect(() => set_class(div_1, 1, clsx(layout() === "bubble" ? "bubble-wrap" : "panel-wrap"), 'svelte-kpz1')); 5426 append($$anchor, fragment); 5427 5428 return pop($$exports); 5429} 5430 5431var root_1 = from_html(`<!> <div class="wrapper svelte-1wizwbi"><!> <!></div>`, 1); 5432 5433function Index($$anchor, $$props) { 5434 push($$props, true); 5435 5436 let props = rest_props($$props, ['$$slots', '$$events', '$$legacy']); 5437 const gradio = new Gradio(props); 5438 let _value = user_derived(() => normalise_messages(gradio.props.value, gradio.shared.root)); 5439 5440 let show_progress = user_derived(() => { 5441 if (gradio.shared.loading_status.status === "error") { 5442 return "full"; 5443 } 5444 5445 return gradio.shared.loading_status.show_progress === "hidden" ? "hidden" : "minimal"; 5446 }); 5447 5448 Block($$anchor, { 5449 get elem_id() { 5450 return gradio.shared.elem_id; 5451 }, 5452 5453 get elem_classes() { 5454 return gradio.shared.elem_classes; 5455 }, 5456 5457 get visible() { 5458 return gradio.shared.visible; 5459 }, 5460 padding: false, 5461 get scale() { 5462 return gradio.shared.scale; 5463 }, 5464 5465 get min_width() { 5466 return gradio.shared.min_width; 5467 }, 5468 5469 get height() { 5470 return gradio.props.height; 5471 }, 5472 5473 get resizable() { 5474 return gradio.props.resizable; 5475 }, 5476 5477 get min_height() { 5478 return gradio.props.min_height; 5479 }, 5480 5481 get max_height() { 5482 return gradio.props.max_height; 5483 }, 5484 allow_overflow: true, 5485 flex: true, 5486 overflow_behavior: 'auto', 5487 get rtl() { 5488 return gradio.props.rtl; 5489 }, 5490 5491 children: ($$anchor, $$slotProps) => { 5492 var fragment_1 = root_1(); 5493 var node = first_child(fragment_1); 5494 5495 { 5496 var consequent = ($$anchor) => { 5497 Static($$anchor, spread_props( 5498 { 5499 get autoscroll() { 5500 return gradio.shared.autoscroll; 5501 }, 5502 5503 get i18n() { 5504 return gradio.i18n; 5505 } 5506 }, 5507 () => gradio.shared.loading_status, 5508 { 5509 get show_progress() { 5510 return get(show_progress); 5511 }, 5512 on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status) 5513 } 5514 )); 5515 }; 5516 5517 if_block(node, ($$render) => { 5518 if (gradio.shared.loading_status) $$render(consequent); 5519 }); 5520 } 5521 5522 var div = sibling(node, 2);
5523 var node_1 = child(div); 5524 5525 { 5526 var consequent_1 = ($$anchor) => { 5527 { 5528 let $0 = user_derived(() => gradio.shared.label || "Chatbot"); 5529 5530 BlockLabel($$anchor, { 5531 get show_label() { 5532 return gradio.shared.show_label; 5533 }, 5534 5535 get Icon() { 5536 return Chat; 5537 }, 5538 float: true, 5539 get label() { 5540 return get($0); 5541 } 5542 }); 5543 } 5544 }; 5545 5546 if_block(node_1, ($$render) => { 5547 if (gradio.shared.show_label) $$render(consequent_1); 5548 }); 5549 } 5550 5551 var node_2 = sibling(node_1, 2); 5552 5553 { 5554 let $0 = user_derived(() => (gradio.props.buttons ?? ["share"]).some((btn) => typeof btn === "string" && btn === "share")); 5555 let $1 = user_derived(() => (gradio.props.buttons ?? ["copy_all"]).some((btn) => typeof btn === "string" && btn === "copy_all")); 5556 let $2 = user_derived(() => gradio.shared.loading_status?.status === "pending"); 5557 let $3 = user_derived(() => gradio.shared.loading_status?.status === "generating"); 5558 let $4 = user_derived(() => (gradio.props.buttons ?? ["copy"]).some((btn) => typeof btn === "string" && btn === "copy")); 5559 let $5 = user_derived(() => gradio.shared.loading_status?.show_progress || "full"); 5560 5561 ChatBot(node_2, { 5562 get i18n() { 5563 return gradio.i18n; 5564 }, 5565 5566 get selectable() { 5567 return gradio.props._selectable; 5568 }, 5569 5570 get likeable() { 5571 return gradio.props.likeable; 5572 }, 5573 5574 get feedback_options() { 5575 return gradio.props.feedback_options; 5576 }, 5577 5578 get feedback_value() { 5579 return gradio.props.feedback_value; 5580 }, 5581 5582 get show_share_button() { 5583 return get($0); 5584 }, 5585 5586 get show_copy_all_button() { 5587 return get($1); 5588 }, 5589 5590 get value() { 5591 return get(_value); 5592 }, 5593 5594 get latex_delimiters() { 5595 return gradio.props.latex_delimiters; 5596 }, 5597 5598 get display_consecutive_in_same_bubble() { 5599 return gradio.props.group_consecutive_messages; 5600 }, 5601 5602 get render_markdown() { 5603 return gradio.props.render_markdown; 5604 }, 5605 5606 get theme_mode() { 5607 return gradio.shared.theme_mode; 5608 }, 5609 5610 get editable() { 5611 return gradio.props.editable; 5612 }, 5613 5614 get pending_message() { 5615 return get($2); 5616 }, 5617
5618 get generating() { 5619 return get($3); 5620 }, 5621 5622 get rtl() { 5623 return gradio.props.rtl; 5624 }, 5625 5626 get show_copy_button() { 5627 return get($4); 5628 }, 5629 5630 get buttons() { 5631 return gradio.props.buttons; 5632 }, 5633 5634 on_custom_button_click: (id) => { 5635 gradio.dispatch("custom_button_click", { id }); 5636 }, 5637 5638 get like_user_message() { 5639 return gradio.props.like_user_message; 5640 }, 5641 5642 get show_progress() { 5643 return get($5); 5644 }, 5645 5646 get avatar_images() { 5647 return gradio.props.avatar_images; 5648 }, 5649 5650 get sanitize_html() { 5651 return gradio.props.sanitize_html; 5652 }, 5653 5654 get line_breaks() { 5655 return gradio.props.line_breaks; 5656 }, 5657 5658 get autoscroll() { 5659 return gradio.props.autoscroll; 5660 }, 5661 5662 get layout() { 5663 return gradio.props.layout; 5664 }, 5665 5666 get placeholder() { 5667 return gradio.props.placeholder; 5668 }, 5669 5670 get examples() { 5671 return gradio.props.examples; 5672 }, 5673 5674 get _retryable() { 5675 return gradio.props._retryable; 5676 }, 5677 5678 get _undoable() { 5679 return gradio.props._undoable; 5680 }, 5681 upload: (...args) => gradio.shared.client.upload(...args), 5682 _fetch: (...args) => gradio.shared.client.fetch(...args), 5683 get load_component() { 5684 return gradio.shared.load_component; 5685 }, 5686 5687 get allow_file_downloads() { 5688 return gradio.props.allow_file_downloads; 5689 }, 5690 5691 get allow_tags() { 5692 return gradio.props.allow_tags; 5693 }, 5694 5695 get watermark() { 5696 return gradio.props.watermark; 5697 }, 5698 5699 $$events: { 5700 change: () => ( 5701 gradio.props.value = gradio.props.value, 5702 gradio.dispatch("change", gradio.props.value) 5703 ), 5704 select: (e) => gradio.dispatch("select", e.detail), 5705 like: (e) => gradio.dispatch("like", e.detail), 5706 share: (e) => gradio.dispatch("share", e.detail), 5707 error: (e) => gradio.dispatch("error", e.detail), 5708 example_select: (e) => gradio.dispatch("example_select", e.detail), 5709 option_select: (e) => gradio.dispatch("option_select", e.detail), 5710 retry: (e) => gradio.dispatch("retry", e.detail), 5711 undo: (e) => gradio.dispatch("undo", e.detail), 5712 clear: () => { 5713 gradio.props.value = []; 5714 gradio.dispatch("clear"); 5715 }, 5716 copy: (e) => gradio.dispatch("copy", e.detail), 5717 edit: (e) => { 5718 if (gradio.props.value === null || gradio.props.value.length === 0) return; 5719 5720 //@ts-ignore 5721 gradio.props.value[e.detail.index].content = [{ text: e.detail.value, type: "text" }]; 5722 5723 gradio.dispatch("edit", e.detail); 5724 } 5725 } 5726 }); 5727 } 5728 5729 reset(div); 5730 append($$anchor, fragment_1); 5731 }, 5732 $$slots: { default: true } 5733 }); 5734 5735 pop(); 5736} 5737 5738export { ChatBot as BaseChatBot, Index as default }; 5739//# sourceMappingURL=Index-DuFh5Mes.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.