PageSourceSearch

https://banuba-development-ai-talking-avatar-api-demo.hf.space/assets/Index-D6KKbqPS.js

js banuba-development-ai-talking-avatar-api-demo.hf.space collected 2026-10-03 16:43:52 UTC 141,216 bytes, 5,708 lines download raw bytes

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.