1import { p as prop, t as remove_input_defaults, b as set_class, k as each, u as index, i as if_block, a as set_attribute, g as spread_props, r as rest_props } from './i18n-dpAHICcw.js'; 2import { a as append, f as from_svg, ak as delegate, R as push, t as template_effect, T as pop, W as from_html, u as state, v as proxy, x as set, w as get, y as user_effect, X as sibling, a0 as set_text, a5 as user_derived, V as child, a6 as comment, S as first_child, Y as reset } from './index-CDZuCcOm.js'; 3import { k as key } from './key-BkIRB637.js'; 4import { G as Gradio } from './utils.svelte-CyWLYi-B.js'; 5import './ScrollFade.svelte_svelte_type_style_lang-DUvCSfRk.js'; 6import { F as File } from './File-BaXTooE5.js'; 7import { B as Block } from './Block-DntE23uJ.js'; 8import './MarkdownCode.svelte_svelte_type_style_lang-GeNUGzep.js'; 9import { B as BlockLabel } from './BlockLabel-D4yjUUAn.js'; 10import { I as IconButtonWrapper } from './IconButtonWrapper-KjCt2Pl8.js'; 11import { a as bind_checked } from './input-UUW65DyE.js'; 12import { S as Static } from './index-DyDpuTN9.js'; 13import './StreamingBar.svelte_svelte_type_style_lang-BxBb9ZZb.js'; 14import './clone-dZfS06Ds.js'; 15import './snippet-DVkMfmSq.js'; 16import './prism-python-C_fanlsZ.js'; 17import './Clear-tvJMRS4J.js'; 18import './html-h_YSgefI.js'; 19 20var root$3 = from_svg(`<svg width="100%" height="100%" viewBox="0 0 14 17" version="1.1" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g transform="matrix(1,0,0,1,-10.6667,-7.73588)"><path d="M12.7,24.033C12.256,24.322 11.806,24.339 11.351,24.084C10.896,23.829 10.668,23.434 10.667,22.9L10.667,9.1C10.667,8.567 10.895,8.172 11.351,7.916C11.807,7.66 12.256,7.677 12.7,7.967L23.567,14.867C23.967,15.133 24.167,15.511 24.167,16C24.167,16.489 23.967,16.867 23.567,17.133L12.7,24.033Z" style="fill:currentColor;fill-rule:nonzero;"></path></g></svg>`); 21 22function ArrowIcon($$anchor) { 23 var svg = root$3(); 24 25 append($$anchor, svg); 26} 27 28var root$2 = from_html(`<input type="checkbox"/>`); 29 30function Checkbox($$anchor, $$props) { 31 push($$props, true); 32 33 let value = prop($$props, 'value', 15); 34 var input = root$2(); 35 36 remove_input_defaults(input); 37 input.__input = () => $$props.onchange?.(!value()); 38 39 let classes; 40 41 template_effect(() => { 42 input.disabled = $$props.disabled; 43 classes = set_class(input, 1, 'svelte-3g0mcl', null, classes, { disabled: $$props.disabled && !value() }); 44 }); 45 46 bind_checked(input, value); 47 append($$anchor, input); 48 pop(); 49} 50 51delegate(['input']); 52 53const FileIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='32'%20height='32'%20viewBox='0%200%2024%2024'%3e%3cpath%20fill='%23888888'%20d='M6%202c-1.1%200-1.99.9-1.99%202L4%2020c0%201.1.89%202%201.99%202H18c1.1%200%202-.9%202-2V8l-6-6H6zm7%207V3.5L18.5%209H13z'/%3e%3c/svg%3e"; 54 55const FolderIcon = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'%20standalone='no'?%3e%3csvg%20viewBox='0%200%2032%2032'%20version='1.1'%20id='svg7'%20sodipodi:docname='light-folder-new.svg'%20inkscape:version='1.3.2%20(091e20e,%202023-11-25)'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:svg='http://www.w3.org/2000/svg'%3e%3csodipodi:namedview%20id='namedview7'%20pagecolor='%23ffffff'%20bordercolor='%23000000'%20borderopacity='0.25'%20inkscape:showpageshadow='2'%20inkscape:pageopacity='0.0'%20inkscape:pagecheckerboard='0'%20inkscape:deskcolor='%23d1d1d1'%20inkscape:zoom='7.375'%20inkscape:cx='15.932203'%20inkscape:cy='16'%20inkscape:window-width='1312'%20inkscape:window-height='529'%20inkscape:window-x='0'%20inkscape:window-y='38'%20inkscape:window-maximized='0'%20inkscape:current-layer='svg7'
55%20/%3e%3cdefs%20id='defs6'%3e%3cclipPath%20id='clipPath1'%3e%3cpath%20d='m69.63%2012.145h-.052c-22.727-.292-46.47%204.077-46.709%204.122-2.424.451-4.946%202.974-5.397%205.397-.044.237-4.414%2023.983-4.122%2046.71-.292%2022.777%204.078%2046.523%204.122%2046.761.451%202.423%202.974%204.945%205.398%205.398.237.044%2023.982%204.413%2046.709%204.121%2022.779.292%2046.524-4.077%2046.761-4.121%202.423-.452%204.946-2.976%205.398-5.399.044-.236%204.413-23.981%204.121-46.709.292-22.777-4.077-46.523-4.121-46.761-.453-2.423-2.976-4.946-5.398-5.397-.238-.045-23.984-4.414-46.71-4.122'%20id='path1'%20/%3e%3c/clipPath%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20y2='352.98'%20x2='-601.15'%20y1='663.95'%20x1='-591.02'%20id='2'%3e%3cstop%20stop-color='%23a0a0a0'%20id='stop1'%20/%3e%3cstop%20offset='1'%20stop-color='%23aaa'%20id='stop2'%20/%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20y2='354.29'%20x2='-704.05'%20y1='647.77'%20x1='-701.19'%20id='1'%3e%3cstop%20stop-color='%23acabab'%20id='stop3'%20/%3e%3cstop%20offset='1'%20stop-color='%23d4d4d4'%20id='stop4'%20/%3e%3c/linearGradient%3e%3clinearGradient%20id='0'%20x1='59.12'%20y1='-19.888'%20x2='59.15'%20y2='-37.783'%20gradientUnits='userSpaceOnUse'%20gradientTransform='matrix(4.17478%200%200%204.16765-1069.7%20447.73)'%3e%3cstop%20stop-color='%23a0a0a0'%20id='stop5'%20/%3e%3cstop%20offset='1'%20stop-color='%23bdbdbd'%20id='stop6'%20/%3e%3c/linearGradient%3e%3c/defs%3e%3cg%20transform='matrix(.07089%200%200%20.07017%2023.295-40.67)'%20fill='%2360aae5'%20id='g7'%20style='fill:%23888888;fill-opacity:1'%3e%3cpath%20transform='matrix(.7872%200%200%20.79524%20415.34%20430.11)'%20d='m-884.1%20294.78c-4.626%200-8.349%203.718-8.349%208.335v161.41l468.19%201v-121.2c0-4.618-3.724-8.335-8.35-8.335h-272.65c-8.51.751-9.607-.377-13.812-5.981-5.964-7.968-14.969-21.443-20.84-29.21-4.712-6.805-5.477-6.02-13.292-6.02z'%20fill='url(%230)'%20color='%23000'%20id='path6'%20style='fill:%23888888;fill-opacity:1'%20/%3e%3crect%20transform='matrix(.7872%200%200%20.79524%20415.34%20430.11)'%20y='356.85'%20x='-890.28'%20height='295.13'%20width='463.85'%20fill='url(%231)'%20stroke='url(%231)'%20stroke-width='2.378'%20rx='9.63'%20id='rect6'%20style='fill:%23888888;fill-opacity:1'%20/%3e%3crect%20width='463.85'%20height='295.13'%20x='-890.28'%20y='356.85'%20transform='matrix(.7872%200%200%20.79524%20415.34%20430.11)'%20fill='none'%20stroke='url(%232)'%20stroke-linejoin='round'%20stroke-linecap='round'%20stroke-width='5.376'%20rx='9.63'%20id='rect7'%20style='fill:%23888888;fill-opacity:1'%20/%3e%3c/g%3e%3c/svg%3e"; 56 57var root_3 = from_html(`<span class="no-checkbox svelte-6im0c4" aria-hidden="true"></span>`); 58var root_5 = from_html(`<span role="button" aria-label="expand directory" tabindex="0"><!></span>`); 59var root_6 = from_html(`<span class="file-icon svelte-6im0c4"><img alt="file icon" class="svelte-6im0c4"/></span>`); 60var root_1$1 = from_html(`<li class="svelte-6im0c4"><span><!> <!> <span class="item-name svelte-6im0c4"> </span></span> <!></li>`); 61var root$1 = from_html(`<ul></ul>`); 62 63function FileTree($$anchor, $$props) { 64 push($$props, true); 65 66 let path = prop($$props, 'path', 19, () => []), 67 index_path = prop($$props, 'index_path', 19, () => []), 68 selected_files = prop($$props, 'selected_files', 19, () => []), 69 selected_folders = prop($$props, 'selected_folders', 19, () => []), 70 is_selected_entirely = prop($$props, 'is_selected_entirely', 3, false), 71 selectable = prop($$props, 'selectable', 3, false), 72 file_count = prop($$props, 'file_count', 3, "multiple"); 73 74 let content = state(proxy([])); 75 let opened_folders = state(proxy([])); 76 77 const toggle_open_folder = (i) => { 78 if (get(opened_folders).includes(i)) { 79 set(opened_folders, get(opened_folders).filter((x) => x !== i), true); 80 } else { 81 set(opened_folders, [...get(opened_folders), i], true); 82 } 83 }; 84 85 const open_folder = (i) => { 86 if (!get(opened_folders).includes(i)) { 87 set(opened_folders, [...get(opened_folders), i], true); 88 } 89 }; 90 91 (async () => { 92 set(content, await $$props.ls_fn(path()), true); 93 94 if ($$props.valid_for_selection) { 95 set(content, [{ name: ".", type: "file" }, ...get(content)], true); 96 } 97 98 set(opened_folders, get(content).map((x, i) => x.type === "folder" && (is_selected_entirely() || selected_files().some((y) => y[0] === x.name)) ? i : null).filter((x) => x !== null), true); 99 })(); 100 101 user_effect(() => { 102 if (is_selected_entirely()) { 103 get(content).forEach((x) => { 104 $$props.oncheck?.({ path: [...path(), x.name], checked: true, type: x.type }); 105 }); 106 } 107 }); 108 109 function handle_select(full_index_path, item_path, _type) { 110 $$props.onselect?.({ 111 index: full_index_path, 112 value: item_path.join("/"),
113 selected: true 114 }); 115 } 116 117 var ul = root$1(); 118 let classes; 119 120 each(ul, 21, () => get(content), index, ($$anchor, $$item, i) => { 121 let type = () => get($$item).type; 122 let name = () => get($$item).name; 123 let valid = () => get($$item).valid; 124 const is_selected = user_derived(() => (type() === "file" ? selected_files() : selected_folders()).some((x) => x[0] === name() && x.length === 1)); 125 var li = root_1$1(); 126 var span = child(li); 127 let classes_1; 128 129 span.__click = (e) => { 130 e.stopPropagation(); 131 132 if (selectable()) { 133 handle_select([...index_path(), i], [...path(), name()], type()); 134 } 135 }; 136 137 span.__keydown = (e) => { 138 if (selectable() && (e.key === " " || e.key === "Enter")) { 139 handle_select([...index_path(), i], [...path(), name()], type()); 140 } 141 }; 142 143 var node = child(span); 144 145 { 146 var consequent_1 = ($$anchor) => { 147 var fragment = comment(); 148 var node_1 = first_child(fragment); 149 150 { 151 var consequent = ($$anchor) => { 152 var span_1 = root_3(); 153 154 append($$anchor, span_1); 155 }; 156 157 var alternate = ($$anchor) => { 158 Checkbox($$anchor, { 159 disabled: false, 160 get value() { 161 return get(is_selected); 162 }, 163 164 onchange: (checked) => { 165 $$props.oncheck?.({ path: [...path(), name()], checked, type: type() }); 166 167 if (selectable()) { 168 handle_select([...index_path(), i], [...path(), name()], type()); 169 } 170 171 if (type() === "folder" && checked) { 172 open_folder(i); 173 } 174 } 175 }); 176 }; 177 178 if_block(node_1, ($$render) => { 179 if (type() === "folder" && file_count() === "single") $$render(consequent); else $$render(alternate, false); 180 }); 181 } 182 183 append($$anchor, fragment); 184 }; 185 186 if_block(node, ($$render) => { 187 if ($$props.interactive) $$render(consequent_1); 188 }); 189 } 190 191 var node_2 = sibling(node, 2); 192 193 { 194 var consequent_2 = ($$anchor) => { 195 var span_2 = root_5(); 196 let classes_2; 197 198 span_2.__click = (e) => { 199 e.stopPropagation(); 200 toggle_open_folder(i); 201 }; 202 203 span_2.__keydown = (e) => { 204 if (e.key === " " || e.key === "Enter") { 205 toggle_open_folder(i); 206 } 207 }; 208 209 var node_3 = child(span_2); 210 211 ArrowIcon(node_3); 212 reset(span_2); 213 template_effect(($0) => classes_2 = set_class(span_2, 1, 'icon svelte-6im0c4', null, classes_2, $0), [() => ({ hidden: !get(opened_folders).includes(i) })]); 214 append($$anchor, span_2); 215 }; 216 217 var alternate_1 = ($$anchor) => { 218 var span_3 = root_6(); 219 var img = child(span_3); 220 221 reset(span_3); 222 template_effect(() => set_attribute(img, 'src', name() === "." ? FolderIcon : FileIcon)); 223 append($$anchor, span_3); 224 }; 225 226 if_block(node_2, ($$render) => { 227 if (type() === "folder") $$render(consequent_2); else $$render(alternate_1, false); 228 }); 229 } 230 231 var span_4 = sibling(node_2, 2); 232 var text = child(span_4, true); 233 234 reset(span_4); 235 reset(span); 236 237 var node_4 = sibling(span, 2); 238 239 { 240 var consequent_3 = ($$anchor) => { 241 { 242 let $0 = user_derived(() => [...path(), name()]); 243 let $1 = user_derived(() => [...index_path(), i]); 244 let $2 = user_derived(() => selected_files().filter((x) => x[0] === name()).map((x) => x.slice(1))); 245 let $3 = user_derived(() => selected_folders().filter((x) => x[0] === name()).map((x) => x.slice(1))); 246 let $4 = user_derived(() => selected_folders().some((x) => x[0] === name() && x.length === 1)); 247 let $5 = user_derived(() => valid() ?? false); 248 249 FileTree($$anchor, { 250 get path() { 251 return get($0); 252 }, 253 254 get index_path() { 255 return get($1); 256 }, 257 258 get selected_files() { 259 return get($2); 260 }, 261 262 get selected_folders() { 263 return get($3); 264 }, 265 266 get is_selected_entirely() { 267 return get($4); 268 }, 269 270 get interactive() { 271 return $$props.interactive; 272 }, 273 274 get selectable() { 275 return selectable(); 276 }, 277 278 get ls_fn() { 279 return $$props.ls_fn; 280 }, 281 282 get file_count() { 283 return file_count(); 284 }, 285 286 get valid_for_selection() { 287 return get($5); 288 }, 289 290 get oncheck() { 291 return $$props.oncheck; 292 }, 293 294 get onselect() { 295 return $$props.onselect; 296 } 297 }); 298 } 299 }; 300 301 if_block(node_4, ($$render) => { 302 if (type() === "folder" && get(opened_folders).includes(i)) $$render(consequent_3); 303 }); 304 } 305 306 reset(li); 307 308 template_effect(() => { 309 classes_1 = set_class(span, 1, 'wrap svelte-6im0c4', null, classes_1, { 310 selected: !$$props.interactive && get(is_selected), 311 selectable: selectable() 312 }); 313 314 set_attribute(span, 'role', selectable() ? "button" : undefined); 315 set_attribute(span, 'tabindex', selectable() ? 0 : undefined); 316 set_text(text, name()); 317 }); 318 319 append($$anchor, li); 320 }); 321 322 reset(ul); 323 324 template_effect(() => classes = set_class(ul, 1, 'svelte-6im0c4', null, classes, { 325 'no-checkboxes': !$$props.interactive, 326 root: path().length === 0 327 })); 328 329 append($$anchor, ul); 330 pop(); 331} 332 333delegate(['click', 'keydown']); 334 335var root = from_html(`<div class="file-wrap svelte-1gs1iku"><!></div>`); 336 337function DirectoryExplorer($$anchor, $$props) { 338 push($$props, true); 339 340 let file_count = prop($$props, 'file_count', 3, "multiple"), 341 value = prop($$props, 'value', 15), 342 selectable = prop($$props, 'selectable', 3, false); 343 344 let selected_folders = state(proxy([])); 345 346 const paths_equal = (path, path_2) => { 347 return path.join("/") === path_2.join("/"); 348 }; 349 350 const path_in_set = (path, set) => { 351 return set.some((x) => paths_equal(x, path)); 352 }; 353 354 const path_inside = (path, path_2) => { 355 return path.join("/").startsWith(path_2.join("/")); 356 }; 357 358 var div = root(); 359 var node = child(div); 360 361 FileTree(node, { 362 path: [], 363 get selected_files() { 364 return value(); 365 }, 366 367 get selected_folders() { 368 return get(selected_folders); 369 }, 370 371 get interactive() { 372 return $$props.interactive; 373 }, 374 375 get selectable() { 376 return selectable(); 377 }, 378 379 get ls_fn() { 380 return $$props.ls_fn; 381 }, 382 383 get file_count() { 384 return file_count(); 385 }, 386 valid_for_selection: false,
387 oncheck: (detail) => { 388 const { path, checked, type } = detail; 389 390 if (checked) { 391 if (file_count() === "single") { 392 value([path]); 393 } else if (type === "folder") { 394 if (!path_in_set(path, get(selected_folders))) { 395 set(selected_folders, [...get(selected_folders), path], true); 396 } 397 } else { 398 if (!path_in_set(path, value())) { 399 value([...value(), path]); 400 } 401 } 402 } else { 403 set( 404 selected_folders, 405 get(selected_folders).filter((folder) => !path_inside(path, folder)), // deselect all parent folders 406 true 407 ); 408 409 if (type === "folder") { 410 set( 411 selected_folders, 412 get(selected_folders).filter((folder) => !path_inside(folder, path)), // deselect all children folders 413 true 414 ); 415 416 value(value().filter((file) => !path_inside(file, path)) // deselect all children files 417 ); 418 } else { 419 value(value().filter((x) => !paths_equal(x, path))); 420 } 421 } 422 423 $$props.oninput?.(); 424 }, 425 426 get onselect() { 427 return $$props.onselect; 428 } 429 }); 430 431 reset(div); 432 append($$anchor, div); 433 pop(); 434} 435 436var root_1 = from_html(`<!> <!> <!> <!>`, 1); 437 438function Index($$anchor, $$props) { 439 push($$props, true); 440 441 const props = rest_props($$props, ['$$slots', '$$events', '$$legacy']); 442 const gradio = new Gradio(props, { value: [] }); 443 let old_value = state(proxy(gradio.props.value)); 444 445 let rerender_key = user_derived(() => [ 446 gradio.props.root_dir, 447 gradio.props.glob, 448 gradio.props.ignore_glob 449 ]); 450 451 // Reset value when rerender_key changes 452 // svelte-ignore state_referenced_locally 453 let old_rerender_key = state(proxy(get(rerender_key))); 454 455 user_effect(() => { 456 if (JSON.stringify(get(old_rerender_key)) != JSON.stringify(get(rerender_key)) && get(old_value) == gradio.props.value) { 457 set(old_rerender_key, get(rerender_key), true); 458 gradio.props.value = []; 459 } 460 }); 461 462 user_effect(() => { 463 if (get(old_value) != gradio.props.value) { 464 set(old_value, gradio.props.value, true); 465 gradio.dispatch("change"); 466 } 467 }); 468 469 { 470 let $0 = user_derived(() => gradio.props.value === null ? "dashed" : "solid"); 471 472 Block($$anchor, { 473 get visible() { 474 return gradio.shared.visible; 475 }, 476 477 get variant() { 478 return get($0); 479 }, 480 border_mode: "base", 481 padding: false, 482 get elem_id() { 483 return gradio.shared.elem_id; 484 }, 485 486 get elem_classes() { 487 return gradio.shared.elem_classes; 488 }, 489 490 get container() { 491 return gradio.shared.container; 492 }, 493 494 get scale() { 495 return gradio.shared.scale; 496 }, 497 498 get min_width() { 499 return gradio.shared.min_width; 500 }, 501 allow_overflow: true, 502 overflow_behavior: 'auto', 503 get height() { 504 return gradio.props.height; 505 }, 506 507 get max_height() { 508 return gradio.props.max_height; 509 }, 510 511 get min_height() { 512 return gradio.props.min_height; 513 }, 514 515 children: ($$anchor, $$slotProps) => { 516 var fragment_1 = root_1(); 517 var node = first_child(fragment_1); 518 519 Static(node, spread_props(() => gradio.shared.loading_status, { 520 get autoscroll() { 521 return gradio.shared.autoscroll; 522 }, 523 524 get i18n() { 525 return gradio.i18n; 526 }, 527 on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status) 528 })); 529
530 var node_1 = sibling(node, 2); 531 532 { 533 var consequent = ($$anchor) => { 534 IconButtonWrapper($$anchor, { 535 get buttons() { 536 return gradio.props.buttons; 537 }, 538 539 on_custom_button_click: (id) => { 540 gradio.dispatch("custom_button_click", { id }); 541 } 542 }); 543 }; 544 545 if_block(node_1, ($$render) => { 546 if (gradio.shared.show_label && gradio.props.buttons && gradio.props.buttons.length > 0) $$render(consequent); 547 }); 548 } 549 550 var node_2 = sibling(node_1, 2); 551 552 { 553 let $0 = user_derived(() => gradio.shared.label || "FileExplorer"); 554 555 BlockLabel(node_2, { 556 get show_label() { 557 return gradio.shared.show_label; 558 }, 559 560 get Icon() { 561 return File; 562 }, 563 564 get label() { 565 return get($0); 566 }, 567 float: false 568 }); 569 } 570 571 var node_3 = sibling(node_2, 2); 572 573 key(node_3, () => get(rerender_key), ($$anchor) => { 574 DirectoryExplorer($$anchor, { 575 get file_count() { 576 return gradio.props.file_count; 577 }, 578 579 get interactive() { 580 return gradio.shared.interactive; 581 }, 582 583 get selectable() { 584 return gradio.props._selectable; 585 }, 586 587 get ls_fn() { 588 return gradio.shared.server.ls; 589 }, 590 oninput: () => gradio.dispatch("input"), 591 onselect: (detail) => gradio.dispatch("select", detail), 592 get value() { 593 return gradio.props.value; 594 }, 595 596 set value($$value) { 597 gradio.props.value = $$value; 598 } 599 }); 600 }); 601 602 append($$anchor, fragment_1); 603 }, 604 $$slots: { default: true } 605 }); 606 } 607 608 pop(); 609} 610 611export { Index as default }; 612//# sourceMappingURL=Index-CKhTNXyI.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.