1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./embed-t6zjks9U.js","./mollweide-Ca6MRGcL.js","./ordinal-mJAyPK2n.js","./init-CT6u7j_0.js","./linear-BFftg_y2.js","./step-TZOpqHBK.js","./defaultLocale-DG5JsUjF.js","./time-uewm_MPu.js","./dispatch-tQmgj1It.js","./range-BRcAanmR.js","./index-OyOqWiks.js","./colors-CJG58WzC.js","./dsv-BhAd467f.js","./arc-BEcVRQAW.js"])))=>i.map(i=>d[i]); 2import { R as push, u as state, v as proxy, y as user_effect, x as set, w as get, aa as onMount, z as untrack, S as first_child, a7 as text, t as template_effect, a as append, X as sibling, T as pop, a5 as user_derived, af as __vitePreload, W as from_html, a0 as set_text, a8 as next, V as child, Y as reset } from './index-BvBk1Iap.js'; 3import { i as if_block, r as rest_props, g as spread_props, d as bind_this } from './i18n-CMo5lpzy.js'; 4import { G as Gradio } from './utils.svelte-CYLB_jIA.js'; 5import { B as Block } from './Block-Bx3BikCN.js'; 6import { B as BlockTitle } from './BlockTitle-7XQ-8ENg.js'; 7import { I as IconButton } from './ScrollFade.svelte_svelte_type_style_lang-Xm-PLg9E.js'; 8import { E as Empty } from './Empty-CHa-gxv7.js'; 9import { D as Download } from './Download-pFhUaTl4.js'; 10import { L as LineChart } from './LineChart-BOORCIAk.js'; 11import { I as IconButtonWrapper } from './IconButtonWrapper-Ba0GidgU.js'; 12import { F as FullscreenButton } from './FullscreenButton-CNmhk6nd.js'; 13import { S as Static } from './index-Lz7fsHFt.js'; 14import './StreamingBar.svelte_svelte_type_style_lang-CdFIGsJa.js'; 15import './clone-DaB-S2nH.js'; 16import './Info-BrkJhX6_.js'; 17import './html-CdUEtR5E.js'; 18import './snippet-Bl5YVoCg.js'; 19import './Maximize-B_43ylTs.js'; 20import './Clear-Dgs5UhTO.js'; 21import './index-C7e-J7CF.js'; 22 23var root_4 = from_html(`<!> <!>`, 1); 24var root_9 = from_html(`<p class="caption svelte-19utvcn"> </p>`); 25var root_8 = from_html(`<div class="svelte-19utvcn"></div> <!>`, 1); 26var root_1 = from_html(`<!> <!> <!> <!>`, 1); 27 28function Index($$anchor, $$props) { 29 push($$props, true); 30 31 let props = rest_props($$props, ['$$slots', '$$events', '$$legacy']); 32 const gradio = new Gradio(props); 33 34 let unique_colors = user_derived(() => { 35 if (!gradio.props.color || !gradio.props.value || gradio.props.value.datatypes[gradio.props.color] !== "nominal") { 36 return []; 37 } 38 39 const color_index = gradio.props.value.columns.indexOf(gradio.props.color); 40 41 if (color_index === -1) return []; 42 43 return Array.from(new Set(gradio.props.value.data.map((row) => row[color_index]))); 44 }); 45 46 let x_lim = user_derived(() => gradio.props.x_lim || null); // for some unknown reason, x_lim was getting set to undefined when used in re-render, so this line is needed 47 let y_lim = user_derived(() => gradio.props.y_lim || null); 48 let x_start = user_derived(() => get(x_lim)?.[0] !== null ? get(x_lim)?.[0] : undefined); 49 let x_end = user_derived(() => get(x_lim)?.[1] !== null ? get(x_lim)?.[1] : undefined); 50 let y_start = user_derived(() => get(y_lim)?.[0] !== null ? get(y_lim)?.[0] : undefined); 51 let y_end = user_derived(() => get(y_lim)?.[1] !== null ? get(y_lim)?.[1] : undefined); 52 let fullscreen = state(false); 53 54 function reformat_sort(_sort) { 55 if (_sort === "x") { 56 return "ascending"; 57 } else if (_sort === "-x") { 58 return "descending"; 59 } else if (_sort === "y") { 60 return { field: gradio.props.y, order: "ascending" }; 61 } else if (_sort === "-y") { 62 return { field: gradio.props.y, order: "descending" }; 63 } else if (_sort === null) { 64 return null; 65 } else if (Array.isArray(_sort)) { 66 return _sort; 67 } 68 } 69 70 let _sort = user_derived(() => reformat_sort(gradio.props.sort)); 71 let _data = state(proxy([])); 72 73 function escape_field_name(fieldName) { 74 // Escape special characters in field names according to Vega-Lite spec: 75 // https://vega.github.io/vega-lite/docs/field.html 76 return fieldName.replace(/\./g, "\\.").replace(/\[/g, "\\[").replace(/\]/g, "\\]"); 77 } 78 79 let x_temporal = user_derived(() => gradio.props.value && gradio.props.value.datatypes[gradio.props.x] === "temporal"); 80 81 let _x_lim = user_derived(() => get(x_temporal) 82 ? [ 83 get(x_start) !== undefined ? get(x_start) * 1000 : null, 84 get(x_end) !== undefined ? get(x_end) * 1000 : null 85 ] 86 : get(x_lim)); 87
88 let mouse_down_on_chart = state(false); 89 const SUFFIX_DURATION = { s: 1, m: 60, h: 60 * 60, d: 24 * 60 * 60 }; 90 91 let _x_bin = user_derived(() => gradio.props.x_bin 92 ? typeof gradio.props.x_bin === "string" 93 ? 1000 * parseInt(gradio.props.x_bin.substring(0, gradio.props.x_bin.length - 1)) * SUFFIX_DURATION[gradio.props.x_bin[gradio.props.x_bin.length - 1]] 94 : gradio.props.x_bin 95 : undefined); 96 97 let _y_aggregate = user_derived(() => { 98 if (gradio.props.value) { 99 if (gradio.props.value.mark === "point") { 100 const aggregating = get(_x_bin) !== undefined; 101 102 return gradio.props.y_aggregate || aggregating ? "sum" : undefined; 103 } else { 104 return gradio.props.y_aggregate ? gradio.props.y_aggregate : "sum"; 105 } 106 } 107 108 return undefined; 109 }); 110 111 let aggregating = user_derived(() => { 112 if (gradio.props.value) { 113 if (gradio.props.value.mark === "point") { 114 return get(_x_bin) !== undefined; 115 } else { 116 return get(_x_bin) !== undefined || gradio.props.value.datatypes[gradio.props.x] === "nominal"; 117 } 118 } 119 120 return false; 121 }); 122 123 function downsample(data, x_index, y_index, color_index, x_start, x_end) { 124 if (data.length < 1000 || gradio.props.x_bin !== null || gradio.props.value?.mark !== "line" || gradio.props.value?.datatypes[gradio.props.x] === "nominal") { 125 return data; 126 } 127 128 const bin_count = 250; 129 let min_max_bins_per_color = {}; 130 131 if (x_start === undefined || x_end === undefined) { 132 data.forEach((row) => { 133 let x_value = row[x_index]; 134 135 if (x_start === undefined || x_value < x_start) { 136 x_start = x_value; 137 } 138 139 if (x_end === undefined || x_value > x_end) { 140 x_end = x_value; 141 } 142 }); 143 } 144 145 if (x_start === undefined || x_end === undefined) { 146 return data; 147 } 148 149 const x_range = x_end - x_start; 150 const bin_size = x_range / bin_count; 151 152 data.forEach((row, i) => { 153 const x_value = row[x_index]; 154 const y_value = row[y_index]; 155 const color_value = color_index !== null ? row[color_index] : "any"; 156 const bin_index = Math.floor((x_value - x_start) / bin_size); 157 158 if (min_max_bins_per_color[color_value] === undefined) { 159 min_max_bins_per_color[color_value] = []; 160 } 161 162 min_max_bins_per_color[color_value][bin_index] = min_max_bins_per_color[color_value][bin_index] || [ 163 null, 164 Number.POSITIVE_INFINITY, 165 null, 166 Number.NEGATIVE_INFINITY 167 ]; 168 169 if (y_value < min_max_bins_per_color[color_value][bin_index][1]) { 170 min_max_bins_per_color[color_value][bin_index][0] = i; 171 min_max_bins_per_color[color_value][bin_index][1] = y_value; 172 } 173 174 if (y_value > min_max_bins_per_color[color_value][bin_index][3]) { 175 min_max_bins_per_color[color_value][bin_index][2] = i; 176 min_max_bins_per_color[color_value][bin_index][3] = y_value; 177 } 178 }); 179 180 const downsampled_data = []; 181 182 Object.values(min_max_bins_per_color).forEach((bins) => { 183 bins.forEach(([min_index, _, max_index, __]) => { 184 let indices = []; 185 186 if (min_index !== null && max_index !== null) { 187 indices = [ 188 Math.min(min_index, max_index), 189 Math.max(min_index, max_index) 190 ]; 191 } else if (min_index !== null) { 192 indices = [min_index]; 193 } else if (max_index !== null) { 194 indices = [max_index]; 195 } 196 197 indices.forEach((index) => { 198 downsampled_data.push(data[index]); 199 }); 200 }); 201 }); 202 203 return downsampled_data; 204 } 205 206 function reformat_data(data, x_start, x_end) { 207 let x_index = data.columns.indexOf(gradio.props.x); 208 let y_index = data.columns.indexOf(gradio.props.y); 209 let color_index = gradio.props.color ? data.columns.indexOf(gradio.props.color) : null; 210 let datatable = data.data; 211 212 if (x_start !== undefined && x_end !== undefined) { 213 const time_factor = data.datatypes[gradio.props.x] === "temporal" ? 1000 : 1; 214 const _x_start = x_start * time_factor; 215 const _x_end = x_end * time_factor; 216 let largest_before_start = {}; 217 let smallest_after_end = {}; 218 219 const _datatable = datatable.filter((row, i) => { 220 const x_value = row[x_index]; 221 const color_value = color_index !== null ? row[color_index] : "any"; 222 223 if (x_value < _x_start && (largest_before_start[color_value] === undefined || x_value > largest_before_start[color_value][1])) { 224 largest_before_start[color_value] = [i, x_value]; 225 } 226 227 if (x_value >
227 _x_end && (smallest_after_end[color_value] === undefined || x_value < smallest_after_end[color_value][1])) { 228 smallest_after_end[color_value] = [i, x_value]; 229 } 230 231 return x_value >= _x_start && x_value <= _x_end; 232 }); 233 234 datatable = [ 235 ...Object.values(largest_before_start).map(([i, _]) => datatable[i]), 236 ...downsample(_datatable, x_index, y_index, color_index, _x_start, _x_end), 237 ...Object.values(smallest_after_end).map(([i, _]) => datatable[i]) 238 ]; 239 } else { 240 datatable = downsample(datatable, x_index, y_index, color_index, undefined, undefined); 241 } 242 243 if (gradio.props.tooltip == "all" || Array.isArray(gradio.props.tooltip)) { 244 return datatable.map((row) => { 245 const obj = {}; 246 247 data.columns.forEach((col, i) => { 248 obj[col] = row[i]; 249 }); 250 251 return obj; 252 }); 253 } 254 255 return datatable.map((row) => { 256 const obj = { 257 [gradio.props.x]: row[x_index], 258 [gradio.props.y]: row[y_index] 259 }; 260 261 if (gradio.props.color && color_index !== null) { 262 obj[gradio.props.color] = row[color_index]; 263 } 264 265 return obj; 266 }); 267 } 268 269 user_effect(() => { 270 set( 271 _data, 272 gradio.props.value 273 ? reformat_data(gradio.props.value, get(x_start), get(x_end)) 274 : [], 275 true 276 ); 277 }); 278 279 let old_value = state(proxy(gradio.props.value)); 280 281 user_effect(() => { 282 if (get(old_value) !== gradio.props.value && get(view)) { 283 set(old_value, gradio.props.value, true); 284 get(view).data("data", get(_data)).runAsync(); 285 } 286 }); 287 288 const is_browser = typeof window !== "undefined"; 289 let chart_element = state(void 0); 290 let computed_style = user_derived(() => get(chart_element) ? window.getComputedStyle(get(chart_element)) : null); 291 let view = state(void 0); 292 let mounted = state(false); 293 let old_width = state(0); 294 let old_height = state(0); 295 let resizeObserver = state(void 0); 296 let vegaEmbed; 297 298 async function load_chart() { 299 if (get(mouse_down_on_chart)) { 300 set(refresh_pending, true); 301 302 return; 303 } 304 305 if (get(view)) { 306 get(view).finalize(); 307 } 308 309 if (!gradio.props.value || !get(chart_element)) return; 310 311 set(old_width, get(chart_element).offsetWidth, true); 312 set(old_height, get(chart_element).offsetHeight, true); 313 314 const spec = create_vega_lite_spec(); 315 316 if (!spec) return; 317 318 set( 319 resizeObserver, 320 new ResizeObserver((el) => { 321 if (!el[0].target || !(el[0].target instanceof HTMLElement)) return; 322 323 if (get(old_width) === 0 && get(chart_element).offsetWidth !== 0 && gradio.props.value.datatypes[gradio.props.x] === "nominal") { 324 // a bug where when a nominal chart is first loaded, the width is 0, it doesn't resize 325 load_chart(); 326 } else { 327 const width_change = Math.abs(get(old_width) - el[0].target.offsetWidth); 328 const height_change = Math.abs(get(old_height) - el[0].target.offsetHeight); 329 330 if (width_change > 100 || height_change > 100) { 331 set(old_width, el[0].target.offsetWidth, true); 332 set(old_height, el[0].target.offsetHeight, true); 333 load_chart(); 334 } else { 335 get(view).signal("width", el[0].target.offsetWidth).run(); 336 337 if (get(fullscreen)) { 338 get(view).signal("height", el[0].target.offsetHeight).run(); 339 } 340 } 341 } 342 }), 343 true 344 ); 345 346 if (!vegaEmbed) { 347 vegaEmbed = (await __vitePreload(async () => { const {default: __vite_default__} = await import('./embed-t6zjks9U.js');return { default: __vite_default__ }},true ?__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]):void 0,import.meta.url)).default; 348 } 349 350 vegaEmbed(get(chart_element), spec, { actions: false }).then(function (result) { 351 set(view, result.view, true); 352 get(resizeObserver).observe(get(chart_element)); 353 354 var debounceTimeout; 355 var lastSelectTime = 0; 356 357 get(view).addEventListener("dblclick", () => { 358 gradio.dispatch("double_click"); 359 }); 360 361 // prevent double-clicks from highlighting text 362 get(chart_element).addEventListener( 363 "mousedown", 364 function (e) { 365 if (e.detail > 1) { 366 e.preventDefault(); 367 } 368 }, 369 false 370 ); 371 372 if (gradio.props._selectable) { 373 get(view).addSignalListener("brush", function (_, value) { 374 if (Date.now() - lastSelectTime < 1000) return; 375 376 set(mouse_down_on_chart, true); 377 378 if (Object.keys(value).length === 0) return; 379 380 clearTimeout(debounceTimeout); 381 382 let range = value[Object.keys(value)[0]]; 383 384 if (get(x_temporal)) { 385 range = [range[0] / 1000, range[1] / 1000]; 386 } 387 388 debounceTimeout = setTimeout( 389 function () { 390 set(mouse_down_on_chart, false); 391 lastSelectTime = Date.now(); 392 gradio.dispatch("select", { value: range, index: range, selected: true }); 393 394 if (get(refresh_pending)) { 395 set(refresh_pending, false); 396 load_chart(); 397 } 398 }, 399 250 400 ); 401 }); 402 } 403 }); 404 } 405 406 let refresh_pending = state(false); 407 408 onMount(() => { 409 set(mounted, true); 410 411 return () => { 412 set(mounted, false); 413 414 if (get(view)) { 415 get(view).finalize(); 416 } 417 418 if (get(resizeObserver)) { 419 get(resizeObserver).disconnect(); 420 } 421 }; 422 }); 423 424 function export_chart() { 425 if (!get(view) || !get(computed_style)) return; 426 427 const block_background = get(computed_style).getPropertyValue("--block-background-fill"); 428 const export_background = block_background || "white"; 429 430 get(view).background(export_background).run(); 431 432 get(view).toImageURL("png", 2).then(function (url) { 433 get(view).background("transparent").run(); 434 435 const link = document.createElement("a"); 436 437 link.setAttribute("href", url); 438 link.setAttribute("download", "chart.png"); 439 link.style.display = "none"; 440 document.body.appendChild(link); 441 link.click(); 442 document.body.removeChild(link); 443 }).catch(function (err) { 444 console.error("Export failed:", err); 445 get(view).background("transparent").run(); 446 }); 447 } 448 449 let _color_map = user_derived(() => JSON.stringify(gradio.props.color_map)); 450 451 user_effect(() => { 452 // Track dependencies to trigger chart reload 453 void gradio.props.title; 454
455 void gradio.props.x_title; 456 void gradio.props.y_title; 457 void gradio.props.color_title; 458 void gradio.props.x; 459 void gradio.props.y; 460 void gradio.props.color; 461 void gradio.props.x_bin; 462 void get(_y_aggregate); 463 void get(_color_map); 464 void gradio.props.colors_in_legend; 465 void get(x_start); 466 void get(x_end); 467 void get(y_start); 468 void get(y_end); 469 void gradio.props.caption; 470 void gradio.props.sort; 471 void get(mounted); 472 void get(chart_element); 473 void get(fullscreen); 474 void get(computed_style); 475 476 if (get(mounted) && get(chart_element)) { 477 untrack(() => { 478 load_chart(); 479 }); 480 } 481 }); 482 483 function create_vega_lite_spec() { 484 if (!gradio.props.value || !get(computed_style)) return null; 485 486 let accent_color = get(computed_style).getPropertyValue("--color-accent"); 487 let body_text_color = get(computed_style).getPropertyValue("--body-text-color"); 488 let borderColorPrimary = get(computed_style).getPropertyValue("--border-color-primary"); 489 let font_family = get(computed_style).fontFamily; 490 let title_weight = get(computed_style).getPropertyValue("--block-title-text-weight"); 491 492 const font_to_px_val = (font) => { 493 return font.endsWith("px") ? parseFloat(font.slice(0, -2)) : 12; 494 }; 495 496 let text_size_md = font_to_px_val(get(computed_style).getPropertyValue("--text-md")); 497 let text_size_sm = font_to_px_val(get(computed_style).getPropertyValue("--text-sm")); 498 499 /* eslint-disable complexity */ 500 return { 501 $schema: "https://vega.github.io/schema/vega-lite/v5.17.0.json", 502 background: "transparent", 503 config: { 504 autosize: { type: "fit", contains: "padding" }, 505 axis: { 506 labelFont: font_family, 507 labelColor: body_text_color, 508 titleFont: font_family, 509 titleColor: body_text_color, 510 titlePadding: 8, 511 tickColor: borderColorPrimary, 512 labelFontSize: text_size_sm, 513 gridColor: borderColorPrimary, 514 titleFontWeight: "normal", 515 titleFontSize: text_size_sm, 516 labelFontWeight: "normal", 517 domain: false, 518 labelAngle: 0, 519 titleLimit: get(chart_element).offsetHeight * 0.8 520 }, 521 legend: { 522 labelColor: body_text_color, 523 labelFont: font_family, 524 titleColor: body_text_color, 525 titleFont: font_family, 526 titleFontWeight: "normal", 527 titleFontSize: text_size_sm, 528 labelFontWeight: "normal", 529 offset: 2 530 }, 531 title: { 532 color: body_text_color, 533 font: font_family, 534 fontSize: text_size_md, 535 fontWeight: title_weight, 536 anchor: "middle" 537 }, 538 view: { stroke: borderColorPrimary }, 539 mark: { 540 stroke: gradio.props.value.mark !== "bar" ? accent_color : undefined, 541 fill: gradio.props.value.mark === "bar" ? accent_color : undefined, 542 cursor: "crosshair" 543 } 544 }, 545 data: { name: "data" }, 546 datasets: { data: get(_data) }, 547 layer: [ 548 "plot", 549 ...gradio.props.value.mark === "line" ? ["hover"] : [] 550 ].map((mode) => { 551 return { 552 encoding: { 553 size: gradio.props.value.mark === "line" 554 ? mode == "plot" 555 ? { 556 condition: { empty: false, param: "hoverPlot", value: 3 }, 557 value: 2 558 } 559 : { 560 condition: { empty: false, param: "hover", value: 100 }, 561 value: 0 562 } 563 : undefined, 564 565 opacity: mode === "plot" 566 ? undefined 567 : { 568 condition: { empty: false, param: "hover", value: 1 }, 569 value: 0 570 }, 571 572 x: { 573 axis: { 574 ...gradio.props.x_label_angle !== null && { labelAngle: gradio.props.x_label_angle }, 575 labels: gradio.props.x_axis_labels_visible, 576 ticks: gradio.props.x_axis_labels_visible, 577 ...gradio.props.x_axis_format !== null && { format: gradio.props.x_axis_format } 578 }, 579 field: escape_field_name(gradio.props.x), 580 title: gradio.props.x_title || gradio.props.x, 581 type: gradio.props.value.datatypes[gradio.props.x], 582 scale: { 583 zero: false, 584 domainMin: get(_x_lim)?.[0] !== null ? get(_x_lim)?.[0] : undefined, 585 domainMax: get(_x_lim)?.[1] !== null ? get(_x_lim)?.[1] : undefined 586 }, 587 bin: get(_x_bin) ? { step: get(_x_bin) } : undefined, 588 sort: get(_sort) 589 }, 590 y: { 591 axis: { 592 ...gradio.props.y_label_angle && { labelAngle: gradio.props.y_label_angle }, 593 ...gradio.props.y_axis_format !== null && { format: gradio.props.y_axis_format } 594 }, 595 field: escape_field_name(gradio.props.y), 596 title: gradio.props.y_title || gradio.props.y, 597 type: gradio.props.value.datatypes[gradio.props.y], 598 scale: {
599 zero: false, 600 domainMin: get(y_start) ?? undefined, 601 domainMax: get(y_end) ?? undefined 602 }, 603 aggregate: get(aggregating) ? get(_y_aggregate) : undefined 604 }, 605 606 color: gradio.props.color 607 ? { 608 field: escape_field_name(gradio.props.color), 609 legend: { 610 orient: "bottom", 611 title: gradio.props.color_title, 612 values: gradio.props.colors_in_legend?.length ? [...gradio.props.colors_in_legend] : undefined 613 }, 614 615 scale: gradio.props.value.datatypes[gradio.props.color] === "nominal" 616 ? { 617 domain: get(unique_colors), 618 range: gradio.props.color_map 619 ? get(unique_colors).map((c) => gradio.props.color_map[c]) 620 : undefined 621 } 622 : { 623 range: [100, 200, 300, 400, 500, 600, 700, 800, 900].map((n) => get(computed_style).getPropertyValue("--primary-" + n)), 624 interpolate: "hsl" 625 }, 626 type: gradio.props.value.datatypes[gradio.props.color] 627 } 628 : undefined, 629 630 tooltip: gradio.props.tooltip == "none" 631 ? undefined 632 : [ 633 { 634 field: escape_field_name(gradio.props.y), 635 type: gradio.props.value.datatypes[gradio.props.y], 636 aggregate: get(aggregating) ? get(_y_aggregate) : undefined, 637 title: gradio.props.y_title || gradio.props.y 638 }, 639 640 { 641 field: escape_field_name(gradio.props.x), 642 type: gradio.props.value.datatypes[gradio.props.x], 643 title: gradio.props.x_title || gradio.props.x, 644 format: get(x_temporal) ? "%Y-%m-%d %H:%M:%S" : undefined, 645 bin: get(_x_bin) ? { step: get(_x_bin) } : undefined 646 }, 647 648 ...gradio.props.color 649 ? [ 650 { 651 field: gradio.props.color, 652 type: gradio.props.value.datatypes[gradio.props.color] 653 } 654 ] 655 : [], 656 657 ...gradio.props.tooltip === "axis" 658 ? [] 659 : gradio.props.value?.columns.filter((col) => col !== gradio.props.x && col !== gradio.props.y && col !== gradio.props.color && (gradio.props.tooltip === "all" || gradio.props.tooltip.includes(col))).map((column) => ({ field: column, type: gradio.props.value.datatypes[column] })) 660 ] 661 }, 662 strokeDash: {}, 663 mark: { 664 clip: true, 665 type: mode === "hover" ? "point" : gradio.props.value.mark 666 }, 667 name: mode 668 }; 669 }), 670 671 // @ts-ignore 672 params: [ 673 ...gradio.props.value.mark === "line" 674 ? [ 675 { 676 name: "hoverPlot", 677 select: { 678 clear: "mouseout", 679 fields: gradio.props.color ? [gradio.props.color] : [], 680 nearest: true, 681 on: "mouseover", 682 type: "point" 683 }, 684 views: ["hover"] 685 }, 686 687 { 688 name: "hover", 689 select: { 690 clear: "mouseout", 691 nearest: true, 692 on: "mouseover", 693 type: "point" 694 }, 695 views: ["hover"] 696 } 697 ] 698 : [], 699 700 ...gradio.props._selectable 701 ? [ 702 { 703 name: "brush", 704 select: { 705 encodings: ["x"], 706 mark: { fill: "gray", fillOpacity: 0.3, stroke: "none" }, 707 type: "interval" 708 }, 709 views: ["plot"] 710 } 711 ] 712 : [] 713 ], 714 width: get(chart_element).offsetWidth, 715 height: gradio.props.height || get(fullscreen) ? "container" : undefined, 716 title: gradio.props.title || undefined 717 }; 718 } 719 720 Block($$anchor, { 721 get visible() { 722 return gradio.shared.visible; 723 }, 724 725 get elem_id() { 726 return gradio.shared.elem_id; 727 }, 728 729 get elem_classes() { 730 return gradio.shared.elem_classes; 731 }, 732 733 get scale() { 734 return gradio.shared.scale; 735 }, 736 737 get min_width() { 738 return gradio.shared.min_width; 739 }, 740 allow_overflow: false, 741 padding: true, 742 get height() { 743 return gradio.props.height; 744 }, 745 746 get fullscreen() { 747 return get(fullscreen); 748 }, 749 750 set fullscreen($$value) { 751 set(fullscreen, $$value, true); 752 }, 753 754 children: ($$anchor, $$slotProps) => { 755 var fragment_1 = root_1(); 756 var node = first_child(fragment_1); 757 758 { 759 var consequent = ($$anchor) => { 760 Static($$anchor, spread_props( 761 { 762 get autoscroll() { 763 return gradio.shared.autoscroll; 764 }, 765 766 get i18n() { 767 return gradio.i18n; 768 } 769 }, 770 () => gradio.shared.loading_status, 771 { 772 on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status) 773 } 774 )); 775 }; 776 777 if_block(node, ($$render) => { 778 if (gradio.shared.loading_status) $$render(consequent); 779 }); 780 } 781
782 var node_1 = sibling(node, 2); 783 784 { 785 var consequent_3 = ($$anchor) => { 786 IconButtonWrapper($$anchor, { 787 get buttons() { 788 return gradio.props.buttons; 789 }, 790 791 on_custom_button_click: (id) => { 792 gradio.dispatch("custom_button_click", { id }); 793 }, 794 795 children: ($$anchor, $$slotProps) => { 796 var fragment_4 = root_4(); 797 var node_2 = first_child(fragment_4); 798 799 { 800 var consequent_1 = ($$anchor) => { 801 IconButton($$anchor, { 802 get Icon() { 803 return Download; 804 }, 805 label: 'Export', 806 onclick: export_chart 807 }); 808 }; 809 810 if_block(node_2, ($$render) => { 811 if (gradio.props.buttons?.some((btn) => typeof btn === "string" && btn === "export")) $$render(consequent_1); 812 }); 813 } 814 815 var node_3 = sibling(node_2, 2); 816 817 { 818 var consequent_2 = ($$anchor) => { 819 FullscreenButton($$anchor, { 820 get fullscreen() { 821 return get(fullscreen); 822 }, 823 824 $$events: { 825 fullscreen: ({ detail }) => { 826 set(fullscreen, detail, true); 827 } 828 } 829 }); 830 }; 831 832 if_block(node_3, ($$render) => { 833 if (gradio.props.buttons?.some((btn) => typeof btn === "string" && btn === "fullscreen")) $$render(consequent_2); 834 }); 835 } 836 837 append($$anchor, fragment_4); 838 }, 839 $$slots: { default: true } 840 }); 841 }; 842 843 if_block(node_1, ($$render) => { 844 if (gradio.props.buttons?.length) $$render(consequent_3); 845 }); 846 } 847 848 var node_4 = sibling(node_1, 2); 849 850 BlockTitle(node_4, { 851 get show_label() { 852 return gradio.shared.show_label; 853 }, 854 info: undefined, 855 children: ($$anchor, $$slotProps) => { 856 next(); 857 858 var text$1 = text(); 859 860 template_effect(() => set_text(text$1, gradio.shared.label)); 861 append($$anchor, text$1); 862 }, 863 $$slots: { default: true } 864 }); 865 866 var node_5 = sibling(node_4, 2); 867 868 { 869 var consequent_5 = ($$anchor) => { 870 var fragment_8 = root_8(); 871 var div = first_child(fragment_8); 872 873 bind_this(div, ($$value) => set(chart_element, $$value), () => get(chart_element)); 874 875 var node_6 = sibling(div, 2); 876 877 { 878 var consequent_4 = ($$anchor) => { 879 var p = root_9(); 880 var text_1 = child(p, true); 881 882 reset(p); 883 template_effect(() => set_text(text_1, gradio.props.caption)); 884 append($$anchor, p); 885 }; 886 887 if_block(node_6, ($$render) => { 888 if (gradio.props.caption) $$render(consequent_4); 889 }); 890 } 891 892 append($$anchor, fragment_8); 893 }; 894 895 var alternate = ($$anchor) => { 896 Empty($$anchor, { 897 unpadded_box: true, 898 children: ($$anchor, $$slotProps) => { 899 LineChart($$anchor); 900 }, 901 $$slots: { default: true } 902 }); 903 }; 904 905 if_block(node_5, ($$render) => { 906 if (gradio.props.value && is_browser) $$render(consequent_5); else $$render(alternate, false); 907 }); 908 } 909 910 append($$anchor, fragment_1); 911 }, 912 $$slots: { default: true } 913 }); 914 915 pop(); 916} 917 918export { Index as default }; 919//# sourceMappingURL=Index-DgDgGRDA.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.