PageSourceSearch

https://santiagopoma-edunova.hf.space/assets/Index-DuFh5Mes.js

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

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.