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