PageSourceSearch

https://linoyts-qwen-image-2-1-move.hf.space/assets/index-D65tv47j.js

js linoyts-qwen-image-2-1-move.hf.space collected 2026-10-03 17:04:42 UTC 50,304 bytes, 2,023 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./module-C16d28tm.js","./module-DYU7z__K.js","./module-Bkn9j7N6.js"])))=>i.map(i=>d[i]);
2import { p as prop, i as if_block, k as each, u as index, d as bind_this, b as set_class, f as set_style, h as clsx, a as set_attribute, r as rest_props, g as spread_props } from './i18n-CMo5lpzy.js';
3import { R as push, aa as onMount, V as child, Y as reset, t as template_effect, a as append, T as pop, a0 as set_text, a6 as comment, S as first_child, w as get, W as from_html, aj as delegate, u as state, v as proxy, ae as onDestroy, y as user_effect, x as set, X as sibling, aN as update, a5 as user_derived, af as __vitePreload, au as prepare_files, M as tick } from './index-BvBk1Iap.js';
4import { f as format_time, u as uploadToHuggingFace, G as Gradio } from './utils.svelte-CYLB_jIA.js';
5import { S as Static } from './index-Lz7fsHFt.js';
6import './StreamingBar.svelte_svelte_type_style_lang-CdFIGsJa.js';
7import { W as WaveformControls, A as AudioPlayer, S as StaticAudio } from './StaticAudio-DGaZb-fW.js';
8import { s as snippet } from './snippet-Bl5YVoCg.js';
9import { U as Upload } from './Upload-CPeZiqam.js';
10import { M as ModifyUpload } from './ModifyUpload-B5K-5Hqx.js';
11import { S as SelectSource } from './ScrollFade.svelte_svelte_type_style_lang-Xm-PLg9E.js';
12import { B as BlockLabel } from './BlockLabel-oGSqUii_.js';
13import { S as ShareButton } from './ShareButton-Dz0y1C1K.js';
14import { M as Music } from './Music-D0NN2hV9.js';
15import { C as CustomButton } from './IconButtonWrapper-Ba0GidgU.js';
16import { S as StreamingBar } from './StreamingBar-bVF1kkqe.js';
17import { s as skip_audio, u, p as process_audio } from './MinimalAudioPlayer-Cdqg8MIC.js';
18import { o } from './record.esm-BVY9RaAH.js';
19import { P as Pause } from './VolumeLevels-DHAc0pUL.js';
20import { S as Spinner } from './Spinner-BrK-6emq.js';
21import { B as Block } from './Block-Bx3BikCN.js';
22import { U as UploadText } from './UploadText-BSD1IoCI.js';
23export { default as BaseExample } from './Example-hTHSlRG1.js';
24import './clone-DaB-S2nH.js';
25import './Clear-Dgs5UhTO.js';
26import './html-CdUEtR5E.js';
27import './index-C7e-J7CF.js';
28import './DownloadLink-KvrFKyMn.js';
29import './Empty-CHa-gxv7.js';
30import './Download-pFhUaTl4.js';
31import './Play-CWcFSzc7.js';
32import './Undo-BxcJDM8E.js';
33import './actions-Cit_UA5S.js';
34import './Edit-Dr58YXBX.js';
35
36var root_1$4 = from_html(`<option> </option>`);
37var root_3$2 = from_html(`<option> </option>`);
38var root$3 = from_html(`<select class="mic-select svelte-ym1wxn" aria-label="Select input device"><!></select>`);
39
40function DeviceSelect($$anchor, $$props) {
41	push($$props, true);
42
43	let micDevices = prop($$props, 'micDevices', 15);
44
45	onMount(() => {
46		if (typeof window !== "undefined" && navigator.mediaDevices) {
47			let tempDevices = [];
48
49			o.getAvailableAudioDevices().then((devices) => {
50				micDevices(devices);
51
52				devices.forEach((device) => {
53					if (device.deviceId) {
54						tempDevices.push(device);
55					}
56				});
57
58				micDevices(tempDevices);
59			}).catch((err) => {
60				if (err instanceof DOMException && err.name == "NotAllowedError") {
61					$$props.onerror?.($$props.i18n("audio.allow_recording_access"));
62				}
63			});
64		}
65	});
66
67	var select = root$3();
68	var node = child(select);
69
70	{
71		var consequent = ($$anchor) => {
72			var option = root_1$4();
73			var text = child(option, true);
74
75			reset(option);
76			option.value = option.__value = '';
77			template_effect(($0) => set_text(text, $0), [() => $$props.i18n("audio.no_microphone")]);
78			append($$anchor, option);
79		};
80
81		var alternate = ($$anchor) => {
82			var fragment = comment();
83			var node_1 = first_child(fragment);
84
85			each(node_1, 17, micDevices, index, ($$anchor, micDevice) => {
86				var option_1 = root_3$2();
87				var text_1 = child(option_1, true);
88
89				reset(option_1);
90
91				var option_1_value = {};
92
93				template_effect(() => {
94					set_text(text_1, get(micDevice).label);
95
96					if (option_1_value !== (option_1_value = get(micDevice).deviceId)) {
97						option_1.value = (option_1.__value = get(micDevice).deviceId) ?? '';
98					}
99				});
100
101				append($$anchor, option_1);
102			});
103
104			append($$anchor, fragment);
105		};
106
107		if_block(node, ($$render) => {
108			if (!micDevices() || micDevices().length === 0) $$render(consequent); else $$render(alternate, false);
109		});
110	}
111
112	reset(select);
113	template_effect(() => select.disabled = !micDevices() || micDevices().length === 0);
114	append($$anchor, select);
115	pop();
116}
117
118var root_1$3 = from_html(`<time class="duration-button duration svelte-1xuh0j1"> </time>`);
119var root$2 = from_html(`<div class="controls svelte-1xuh0j1"><div class="wrapper svelte-1xuh0j1"><button class="record record-button svelte-1xuh0j1"> </button> <button> </button> <button id="stop-paused" class="stop-button-paused svelte-1xuh0j1"> </button>
119 <button aria-label="pause" class="pause-button svelte-1xuh0j1"><!></button> <button class="resume-button svelte-1xuh0j1"> </button> <!></div> <!></div>`);
120
121function WaveformRecordControls($$anchor, $$props) {
122	push($$props, true);
123
124	let recording = prop($$props, 'recording', 3, false),
125		timing = prop($$props, 'timing', 3, false);
126
127	let micDevices = state(proxy([]));
128	let recordButton;
129	let pauseButton;
130	let resumeButton;
131	let stopButton;
132	let stopButtonPaused;
133	let recording_ongoing = state(false);
134
135	const handleRecordStart = () => {
136		recordButton.style.display = "none";
137		stopButton.style.display = "flex";
138		pauseButton.style.display = "block";
139	};
140
141	const handleRecordEnd = () => {
142		if ($$props.record.isPaused()) {
143			$$props.record.resumeRecording();
144			$$props.record.stopRecording();
145		}
146
147		$$props.record.stopMic();
148		recordButton.style.display = "flex";
149		stopButton.style.display = "none";
150		pauseButton.style.display = "none";
151		recordButton.disabled = false;
152	};
153
154	const handleRecordPause = () => {
155		pauseButton.style.display = "none";
156		resumeButton.style.display = "block";
157		stopButton.style.display = "none";
158		stopButtonPaused.style.display = "flex";
159	};
160
161	const handleRecordResume = () => {
162		pauseButton.style.display = "block";
163		resumeButton.style.display = "none";
164		recordButton.style.display = "none";
165		stopButton.style.display = "flex";
166		stopButtonPaused.style.display = "none";
167	};
168
169	onMount(() => {
170		$$props.record.on("record-start", handleRecordStart);
171		$$props.record.on("record-end", handleRecordEnd);
172		$$props.record.on("record-pause", handleRecordPause);
173		$$props.record.on("record-resume", handleRecordResume);
174	});
175
176	onDestroy(() => {
177		$$props.record.un("record-start", handleRecordStart);
178		$$props.record.un("record-end", handleRecordEnd);
179		$$props.record.un("record-pause", handleRecordPause);
180		$$props.record.un("record-resume", handleRecordResume);
181	});
182
183	user_effect(() => {
184		if (recording() && !get(recording_ongoing)) {
185			$$props.record.startMic().then(() => {
186				$$props.record.startRecording();
187				set(recording_ongoing, true);
188			});
189		} else if (!recording() && get(recording_ongoing)) {
190			if ($$props.record.isPaused()) {
191				$$props.record.resumeRecording();
192			}
193
194			$$props.record.stopRecording();
195			set(recording_ongoing, false);
196		}
197	});
198
199	var div = root$2();
200	var div_1 = child(div);
201	var button = child(div_1);
202
203	button.__click = () => $$props.record.startRecording();
204
205	var text = child(button, true);
206
207	reset(button);
208	bind_this(button, ($$value) => recordButton = $$value, () => recordButton);
209
210	var button_1 = sibling(button, 2);
211
212	button_1.__click = () => {
213		if ($$props.record.isPaused()) {
214			$$props.record.resumeRecording();
215			$$props.record.stopRecording();
216		}
217
218		$$props.record.stopRecording();
219	};
220
221	var text_1 = child(button_1, true);
222
223	reset(button_1);
224	bind_this(button_1, ($$value) => stopButton = $$value, () => stopButton);
225
226	var button_2 = sibling(button_1, 2);
227
228	button_2.__click = () => {
229		if ($$props.record.isPaused()) {
230			$$props.record.resumeRecording();
231			$$props.record.stopRecording();
232		}
233
234		$$props.record.stopRecording();
235	};
236
237	var text_2 = child(button_2, true);
238
239	reset(button_2);
240	bind_this(button_2, ($$value) => stopButtonPaused = $$value, () => stopButtonPaused);
241
242	var button_3 = sibling(button_2, 2);
243
244	button_3.__click = () => $$props.record.pauseRecording();
245
246	var node = child(button_3);
247
248	Pause(node);
249	reset(button_3);
250	bind_this(button_3, ($$value) => pauseButton = $$value, () => pauseButton);
251
252	var button_4 = sibling(button_3, 2);
253
254	button_4.__click = () => $$props.record.resumeRecording();
255
256	var text_3 = child(button_4, true);
257
258	reset(button_4);
259	bind_this(button_4, ($$value) => resumeButton = $$value, () => resumeButton);
260
261	var node_1 = sibling(button_4, 2);
262
263	{
264		var consequent = ($$anchor) => {
265			var time = root_1$3();
266			var text_4 = child(time, true);
267
268			reset(time);
269			template_effect(() => set_text(text_4, $$props.record_time));
270			append($$anchor, time);
271		};
272
273		if_block(node_1, ($$render) => {
274			if (timing() && !$$props.show_recording_waveform) $$render(consequent);
275		});
276	}
277
278	reset(div_1);
279
280	var node_2 = sibling(div_1, 2);
281
282	DeviceSelect(node_2, {
283		get i18n() {
284			return $$props.i18n;
285		},
286
287		get micDevices() {
288			return get(micDevices);
289		},
290
291		set micDevices($$value) {
292			set(micDevices, $$value, true);
293		}
294	});
295
296	reset(div);
297
298	template_effect(
299		($0, $1, $2, $3, $4) => {
300			set_text(text, $0);
301			set_class(button_1, 1, `stop-button ${$1 ?? ''}`, 'svelte-1xuh0j1');
302			set_text(text_1, $2);
303			set_text(text_2, $3);
304			set_text(text_3, $4);
305		},
306		[
307			() => $$props.i18n("audio.record"),
308			() => $$props.record.isPaused() ? 'stop-button-paused' : '',
309			() => $$props.i18n("audio.stop"),
310			() => $$props.i18n("audio.stop"),
311			() => $$props.i18n("audio.resume")
312		]
313	);
314
315	append($$anchor, div);
316	pop();
317}
318
319delegate(['click']);
320
321var root_2$2 = from_html(`<time class="trim-duration svelte-j9q3sk"> </time>`);
322var root_3$1 = from_html(`<time class="duration svelte-j9q3sk"> </time>`);
323var root_4$2 = from_html(`<time class="duration svelte-j9q3sk">0:00</time>`);
324var root_1$2 = from_html(`<div class="timestamps svelte-j9q3sk"><time class="time svelte-j9q3sk">0:00</time> <div><!> <!></div></div>`);
325var root$1 = from_html(`<div class="component-wrapper svelte-j9q3sk"><div class="microphone svelte-j9q3sk" data-testid="microphone-waveform"></div> <div data-testid="recording-waveform"></div> <!> <!> <!></div>`);
326
327function AudioRecorder($$anchor, $$props) {
328	push($$props, true);
329
330	let mode = prop($$props, 'mode', 15),
331		waveform_options = prop($$props, 'waveform_options', 19, () => ({ show_recording_waveform: true })),
332		editable = prop($$props, 'editable', 3, true),
333		recording = prop($$props, 'recording', 3, false);
334
335	let micWaveform;
336	let recordingWaveform = state(undefined);
337	let playing = state(false);
338	let recordingContainer;
339	let microphoneContainer;
340	let record = state(undefined);
341	let recordedAudio = state(null);
342
343	// timestamps
344	let timeRef;
345
346	let durationRef;
347	let audio_duration = state(0);
348	let seconds = state(0);
349	let interval;
350	let timing = state(false);
351
352	// trimming
353	let trimDuration = state(0);
354
355	let record_mounted = state(false);
356
357	const start_interval = () => {
358		clearInterval(interval);
359
360		interval = setInterval(
361			() => {
362				update(seconds);
363			},
364			1000
365		);
366	};
367
368	function record_start_callback() {
369		start_interval();
370		set(timing, true);
371		$$props.onstartrecording?.();
372
373		if (waveform_options().show_recording_waveform) {
374			let waveformCanvas = microphoneContainer;
375
376			if (waveformCanvas) waveformCanvas.style.display = "block";
377		}
378	}
379
380	async function record_end_callback(blob) {
381		set(seconds, 0);
382		set(timing, false);
383		clearInterval(interval);
384
385		try {
386			const array_buffer = await blob.arrayBuffer();
387			const context = new AudioContext({ sampleRate: $$props.waveform_settings.sampleRate });
388			const audio_buffer = await context.decodeAudioData(array_buffer);
389
390			if (audio_buffer) await process_audio(audio_buffer).then(async (audio) => {
391				await $$props.dispatch_blob([audio], "change");
392				await $$props.dispatch_blob([audio], "stop_recording");
393			});
394		} catch(e) {
395			console.error(e);
396		}
397	}
398
399	user_effect(() => {
400		get(record)?.on("record-resume", () => {
401			start_interval();
402		});
403	});
404
405	user_effect(() => {
406		get(recordingWaveform)?.on("decode", (duration) => {
407			set(audio_duration, duration, true);
408			durationRef && (durationRef.textContent = format_time(duration));
409		});
410	});
411
412	user_effect(() => {
413		get(recordingWaveform)?.on("timeupdate", (currentTime) => timeRef && (timeRef.textContent = format_time(currentTime)));
414	});
415
416	user_effect(() => {
417		get(recordingWaveform)?.on("pause", () => {
418			$$props.onpause?.();
419			set(playing, false);
420		});
421	});
422
423	user_effect(() => {
424		get(recordingWaveform)?.on("play", () => {
425			$$props.onplay?.();
426			set(playing, true);
427		});
428	});
429
430	user_effect(() => {
431		get(recordingWaveform)?.on("finish", () => {
432			$$props.onstop?.();
433			set(playing, false);
434		});
435	});
436
437	const create_mic_waveform = () => {
438		if (microphoneContainer) microphoneContainer.innerHTML = "";
439		if (micWaveform !== undefined) micWaveform.destroy();
440		if (!microphoneContainer) return;
441
442		micWaveform = u.create({
443			...$$props.waveform_settings,
444			normalize: false,
445			container: microphoneContainer
446		});
447
448		set(record, micWaveform.registerPlugin(o.create()), true);
449		get(record)?.on("record-end", record_end_callback);
450		get(record)?.on("record-start", record_start_callback);
451
452		get(record)?.on("record-pause", () => {
453			$$props.onpauserecording?.();
454			clearInterval(interval);
455		});
456
457		get(record)?.on("record-end", (blob) => {
458			set(recordedAudio, URL.createObjectURL(blob), true);
459
460			const microphone = microphoneContainer;
461			const recording = recordingContainer;
462
463			if (microphone) microphone.style.display = "none";
464
465			if (recording && get(recordedAudio)) {
466				recording.innerHTML = "";
467				create_recording_waveform();
468			}
469		});
470
471		set(record_mounted, true);
472	};
473
474	const create_recording_waveform = () => {
475		let recording = recordingContainer;
476
477		if (!get(recordedAudio) || !recording) return;
478
479		set(
480			recordingWaveform,
481			u.create({
482				container: recording,
483				url: get(recordedAudio),
484				...$$props.waveform_settings
485			}),
486			true
487		);
488	};
489
490	const handle_trim_audio = async (start, end) => {
491		mode("edit");
492
493		const decodedData = get(recordingWaveform)?.getDecodedData();
494
495		if (decodedData) await process_audio(decodedData, start, end).then(async (trimmedAudio) => {
496			await $$props.dispatch_blob([trimmedAudio], "change");
497			await $$props.dispatch_blob([trimmedAudio], "stop_recording");
498			get(recordingWaveform)?.destroy();
499			create_recording_waveform();
500		});
501
502		$$props.onedit?.();
503	};
504
505	onMount(() => {
506		create_mic_waveform();
507
508		window.addEventListener("keydown", (e) => {
509			const is_focused_in_waveform = recordingContainer && recordingContainer.contains(document.activeElement);
510
511			if (!is_focused_in_waveform) return;
512
513			if (e.key === "ArrowRight") {
514				skip_audio(get(recordingWaveform), 0.1);
515			} else if (e.key === "ArrowLeft") {
516				skip_audio(get(recordingWaveform), -0.1);
517			}
518		});
519	});
520
521	var div = root$1();
522	var div_1 = child(div);
523
524	bind_this(div_1, ($$value) => microphoneContainer = $$value, () => microphoneContainer);
525
526	var div_2 = sibling(div_1, 2);
527
528	bind_this(div_2, ($$value) => recordingContainer = $$value, () => recordingContainer);
529
530	var node = sibling(div_2, 2);
531
532	{
533		var consequent_2 = ($$anchor) => {
534			var div_3 = root_1$2();
535			var time = child(div_3);
536
537			bind_this(time, ($$value) => timeRef = $$value, () => timeRef);
538
539			var div_4 = sibling(time, 2);
540			var node_1 = child(div_4);
541
542			{
543				var consequent = ($$anchor) => {
544					var time_1 = root_2$2();
545					var text = child(time_1, true);
546
547					reset(time_1);
548					template_effect(($0) => set_text(text, $0), [() => format_time(get(trimDuration))]);
549					append($$anchor, time_1);
550				};
551
552				if_block(node_1, ($$render) => {
553					if (mode() === "edit" && get(trimDuration) > 0) $$render(consequent);
554				});
555			}
556
557			var node_2 = sibling(node_1, 2);
558
559			{
560				var consequent_1 = ($$anchor) => {
561					var time_2 = root_3$1();
562					var text_1 = child(time_2, true);
563
564					reset(time_2);
565					template_effect(($0) => set_text(text_1, $0), [() => format_time(get(seconds))]);
566					append($$anchor, time_2);
567				};
568
569				var alternate = ($$anchor) => {
570					var time_3 = root_4$2();
571
572					bind_this(time_3, ($$value) => durationRef = $$value, () => durationRef);
573					append($$anchor, time_3);
574				};
575
576				if_block(node_2, ($$render) => {
577					if (get(timing)) $$render(consequent_1); else $$render(alternate, false);
578				});
579			}
580
581			reset(div_4);
582			reset(div_3);
583			append($$anchor, div_3);
584		};
585
586		if_block(node, ($$render) => {
587			if ((get(timing) || get(recordedAudio)) && waveform_options().show_recording_waveform) $$render(consequent_2);
588		});
589	}
590
591	var node_3 = sibling(node, 2);
592
593	{
594		var consequent_3 = ($$anchor) => {
595			{
596				let $0 = user_derived(() => format_time(get(seconds)));
597
598				WaveformRecordControls($$anchor, {
599					get record() {
600						return get(record);
601					},
602
603					get i18n() {
604						return $$props.i18n;
605					},
606
607					get timing() {
608						return get(timing);
609					},
610
611					get recording() {
612						return recording();
613					},
614
615					get show_recording_waveform() {
616						return waveform_options().show_recording_waveform;
617					},
618
619					get record_time() {
620						return get($0);
621					}
622				});
623			}
624		};
625
626		if_block(node_3, ($$render) => {
627			if (get(record_mounted) && !get(recordedAudio)) $$render(consequent_3);
628		});
629	}
630
631	var node_4 = sibling(node_3, 2);
632
633	{
634		var consequent_4 = ($$anchor) => {
635			WaveformControls($$anchor, {
636				get waveform() {
637					return get(recordingWaveform);
638				},
639
640				get container() {
641					return recordingContainer;
642				},
643
644				get playing() {
645					return get(playing);
646				},
647
648				get audio_duration() {
649					return get(audio_duration);
650				},
651
652				get i18n() {
653					return $$props.i18n;
654				},
655
656				get editable() {
657					return editable();
658				},
659				interactive: true,
660				handle_trim_audio,
661				show_redo: true,
662				get handle_reset_value() {
663					return $$props.handle_reset_value;
664				},
665
666				get waveform_options() {
667					return waveform_options();
668				},
669
670				get trimDuration() {
671					return get(trimDuration);
672				},
673
674				set trimDuration($$value) {
675					set(trimDuration, $$value, true);
676				},
677
678				get mode() {
679					return mode();
680				},
681
682				set mode($$value) {
683					mode($$value);
684				}
685			});
686		};
687
688		if_block(node_4, ($$render) => {
689			if (get(recordingWaveform) && get(recordedAudio)) $$render(consequent_4);
690		});
691	}
692
693	reset(div);
694	append($$anchor, div);
695	pop();
696}
697
698var root_1$1 = from_html(`<div class="svelte-m6ymia"></div>`);
699var root_2$1 = from_html(`<button><span class="record-icon svelte-m6ymia"><span class="pinger svelte-m6ymia"></span> <span class="dot svelte-m6ymia"></span></span> </button>`);
700var root_4$1 = from_html(`<button class="spinner-button svelte-m6ymia"><div class="icon svelte-m6ymia"><!></div> </button>`);
701var root_5 = from_html(`<button class="record-button svelte-m6ymia"><span class="record-icon svelte-m6ymia"><span class="dot svelte-m6ymia"></span></span> </button>`);
702var root = from_html(`<div class="mic-wrap svelte-m6ymia"><!> <div class="controls svelte-m6ymia"><!> <!></div></div>`);
703
704function StreamAudio($$anchor, $$props) {
705	push($$props, true);
706
707	let recording = prop($$props, 'recording', 3, false),
708		paused_recording = prop($$props, 'paused_recording', 3, false),
709		waveform_options = prop($$props, 'waveform_options', 19, () => ({ show_recording_waveform: true })),
710		waiting = prop($$props, 'waiting', 3, false);
711
712	let micWaveform;
713	let waveformRecord;
714	let microphoneContainer;
715	let micDevices = state(proxy([]));
716
717	onMount(() => {
718		create_mic_waveform();
719	});
720
721	const create_mic_waveform = () => {
722		if (micWaveform !== undefined) micWaveform.destroy();
723		if (!microphoneContainer) return;
724
725		micWaveform = u.create({
726			...$$props.waveform_settings,
727			normalize: false,
728			container: microphoneContainer
729		});
730
731		waveformRecord = micWaveform.registerPlugin(o.create());
732	};
733
734	var div = root();
735	var node = child(div);
736
737	{
738		var consequent = ($$anchor) => {
739			var div_1 = root_1$1();
740			let styles;
741
742			bind_this(div_1, ($$value) => microphoneContainer = $$value, () => microphoneContainer);
743			template_effect(() => styles = set_style(div_1, '', styles, { display: recording() ? "block" : "none" }));
744			append($$anchor, div_1);
745		};
746
747		if_block(node, ($$render) => {
748			if (waveform_options().show_recording_waveform) $$render(consequent);
749		});
750	}
751
752	var div_2 = sibling(node, 2);
753	var node_1 = child(div_2);
754
755	{
756		var consequent_1 = ($$anchor) => {
757			var button = root_2$1();
758
759			button.__click = () => {
760				waveformRecord?.stopMic();
761				$$props.stop();
762			};
763
764			var text = sibling(child(button));
765
766			reset(button);
767
768			template_effect(
769				($0) => {
770					set_class(button, 1, clsx(paused_recording() ? "stop-button-paused" : "stop-button"), 'svelte-m6ymia');
771					set_text(text, ` ${$0 ?? ''}`);
772				},
773				[
774					() => paused_recording()
775						? $$props.i18n("audio.pause")
776						: $$props.i18n("audio.stop")
777				]
778			);
779
780			append($$anchor, button);
781		};
782
783		var alternate_1 = ($$anchor) => {
784			var fragment = comment();
785			var node_2 = first_child(fragment);
786
787			{
788				var consequent_2 = ($$anchor) => {
789					var button_1 = root_4$1();
790
791					button_1.__click = () => {
792						$$props.stop();
793					};
794
795					var div_3 = child(button_1);
796					var node_3 = child(div_3);
797
798					Spinner(node_3);
799					reset(div_3);
800
801					var text_1 = sibling(div_3);
802
803					reset(button_1);
804					template_effect(($0) => set_text(text_1, ` ${$0 ?? ''}`), [() => $$props.i18n("audio.waiting")]);
805					append($$anchor, button_1);
806				};
807
808				var alternate = ($$anchor) => {
809					var button_2 = root_5();
810
811					button_2.__click = () => {
812						waveformRecord?.startMic();
813						$$props.record();
814					};
815
816					var text_2 = sibling(child(button_2));
817
818					reset(button_2);
819					template_effect(($0) => set_text(text_2, ` ${$0 ?? ''}`), [() => $$props.i18n("audio.record")]);
820					append($$anchor, button_2);
821				};
822
823				if_block(
824					node_2,
825					($$render) => {
826						if (recording() && waiting()) $$render(consequent_2); else $$render(alternate, false);
827					},
828					true
829				);
830			}
831
832			append($$anchor, fragment);
833		};
834
835		if_block(node_1, ($$render) => {
836			if (recording() && !waiting()) $$render(consequent_1); else $$render(alternate_1, false);
837		});
838	}
839
840	var node_4 = sibling(node_1, 2);
841
842	DeviceSelect(node_4, {
843		get i18n() {
844			return $$props.i18n;
845		},
846
847		get micDevices() {
848			return get(micDevices);
849		},
850
851		set micDevices($$value) {
852			set(micDevices, $$value, true);
853		}
854	});
855
856	reset(div_2);
857	reset(div);
858	append($$anchor, div);
859	pop();
860}
861
862delegate(['click']);
863
864let media_recorder;
865async function init_media_recorder() {
866  const { MediaRecorder, register } = await __vitePreload(async () => { const { MediaRecorder, register } = await import('./module-C16d28tm.js');return { MediaRecorder, register }},true              ?__vite__mapDeps([0,1]):void 0,import.meta.url);
867  const { connect } = await __vitePreload(async () => { const { connect } = await import('./module-Bkn9j7N6.js');return { connect }},true              ?__vite__mapDeps([2,1]):void 0,import.meta.url);
868  register(await connect());
869  media_recorder = MediaRecorder;
870  return media_recorder;
871}
872
873var root_3 = from_html(`<!> <!>`, 1);
874var root_10 = from_html(`<!> <!>`, 1);
875var root_1 = from_html(`<!> <div><!> <!> <!></div>`, 1);
876
877function InteractiveAudio($$anchor, $$props) {
878	push($$props, true);
879
880	let value = prop($$props, 'value', 15, null),
881		subtitles = prop($$props, 'subtitles', 3, null),
882		show_label = prop($$props, 'show_label', 3, true),
883		buttons = prop($$props, 'buttons', 19, () => ["download", "share"]),
884		on_custom_button_click = prop($$props, 'on_custom_button_click', 3, null),
885		sources = prop($$props, 'sources', 19, () => ["microphone", "upload"]),
886		pending = prop($$props, 'pending', 3, false),
887		streaming = prop($$props, 'streaming', 3, false),
888		trim_region_settings = prop($$props, 'trim_region_settings', 19, () => ({})),
889		waveform_options = prop($$props, 'waveform_options', 19, () => ({})),
890		dragging = prop($$props, 'dragging', 15, false),
891		active_source = prop($$props, 'active_source', 15, "microphone"),
892		handle_reset_value = prop($$props, 'handle_reset_value', 3, () => {}),
893		editable = prop($$props, 'editable', 3, true),
894		max_file_size = prop($$props, 'max_file_size', 3, null),
895		stream_every = prop($$props, 'stream_every', 3, 0.1),
896		uploading = prop($$props, 'uploading', 15, false),
897		recording = prop($$props, 'recording', 15, false),
898		class_name = prop($$props, 'class_name', 3, ""),
899		upload_promise = prop($$props, 'upload_promise', 15),
900		initial_value = prop($$props, 'initial_value', 15),
901		playback_position = prop($$props, 'playback_position', 15),
902		time_limit = prop($$props, 'time_limit', 3, null),
903		stream_state = prop($$props, 'stream_state', 3, "closed");
904
905	user_effect(() => {
906		$$props.ondrag?.(dragging());
907	});
908
909	// TODO: make use of this
910	// export let type: "normal" | "numpy" = "normal";
911	let recorder;
912
913	let mode = state("");
914	let header = undefined;
915	let pending_stream = [];
916	let submit_pending_stream_on_pending_end = false;
917	let inited = false;
918	let streaming_media_recorder;
919	const NUM_HEADER_BYTES = 44;
920	let audio_chunks = [];
921	const is_browser = typeof window !== "undefined";
922
923	if (is_browser && streaming()) {
924		init_media_recorder().then((a) => {
925			streaming_media_recorder = a;
926		});
927	}
928
929	const to_blob_parts = (parts) => parts.map((part) => {
930		if (part instanceof Blob) return part;
931
932		return part.slice();
933	});
934
935	const dispatch_blob = async (blobs, event) => {
936		let _audio_blob = new File(to_blob_parts(blobs), "audio.wav", { type: "audio/wav" });
937
938		if (_audio_blob.size === 0) {
939			return;
940		}
941
942		const val = await prepare_files([_audio_blob], event === "stream");
943
944		initial_value(value());
945		value((await $$props.upload(val, $$props.root, undefined, max_file_size() || undefined))?.filter(Boolean)[0]);
946
947		if (event === "stream") {
948			$$props.onstream?.(value());
949		} else if (event === "change") {
950			$$props.onchange?.(value());
951		} else if (event === "stop_recording") {
952			$$props.onstop_recording?.();
953		}
954	};
955
956	onDestroy(() => {
957		if (streaming() && recorder && recorder.state !== "inactive") {
958			recorder.stop();
959		}
960	});
961
962	async function prepare_audio() {
963		let stream;
964
965		try {
966			stream = await navigator.mediaDevices.getUserMedia({ audio: true });
967		} catch(err) {
968			if (!navigator.mediaDevices) {
969				$$props.onerror?.($$props.i18n("audio.no_device_support"));
970
971				return;
972			}
973
974			if (err instanceof DOMException && err.name == "NotAllowedError") {
975				$$props.onerror?.($$props.i18n("audio.allow_recording_access"));
976
977				return;
978			}
979
980			throw err;
981		}
982
983		if (stream == null) return;
984
985		if (streaming()) {
986			recorder = new streaming_media_recorder(stream, { mimeType: "audio/wav" });
987			recorder.addEventListener("dataavailable", handle_chunk);
988		} else {
989			recorder = new MediaRecorder(stream);
990
991			recorder.addEventListener("dataavailable", (event) => {
992				audio_chunks.push(event.data);
993			});
994		}
995
996		recorder.addEventListener("stop", async () => {
997			recording(false);
998			recorder.stop();
999			await dispatch_blob(audio_chunks, "change");
1000			await dispatch_blob(audio_chunks, "stop_recording");
1001			audio_chunks = [];
1002		});
1003
1004		inited = true;
1005	}
1006
1007	async function handle_chunk(event) {
1008		let buffer = await event.data.arrayBuffer();
1009		let payload = new Uint8Array(buffer);
1010
1011		if (!header) {
1012			header = new Uint8Array(buffer.slice(0, NUM_HEADER_BYTES));
1013			payload = new Uint8Array(buffer.slice(NUM_HEADER_BYTES));
1014		}
1015
1016		if (pending()) {
1017			pending_stream.push(payload);
1018		} else {
1019			let blobParts = [header].concat(pending_stream, [payload]);
1020
1021			if (!recording() || stream_state() === "waiting") return;
1022
1023			dispatch_blob(blobParts, "stream");
1024			pending_stream = [];
1025		}
1026	}
1027
1028	user_effect(() => {
1029		if (submit_pending_stream_on_pending_end && pending() === false) {
1030			submit_pending_stream_on_pending_end = false;
1031
1032			if (header && pending_stream) {
1033				let blobParts = [header].concat(pending_stream);
1034
1035				pending_stream = [];
1036				dispatch_blob(blobParts, "stream");
1037			}
1038		}
1039	});
1040
1041	async function record() {
1042		recording(true);
1043		$$props.onstart_recording?.();
1044
1045		if (!inited) await prepare_audio();
1046
1047		header = undefined;
1048
1049		if (streaming() && recorder.state != "recording") {
1050			recorder.start(stream_every() * 1000);
1051		}
1052	}
1053
1054	function clear() {
1055		$$props.onchange?.(null);
1056		$$props.onclear?.();
1057		set(mode, "");
1058		value(null);
1059	}
1060
1061	function handle_load(detail) {
1062		value(detail);
1063		$$props.onchange?.(detail);
1064		$$props.onupload?.(detail);
1065	}
1066
1067	async function stop() {
1068		recording(false);
1069
1070		if (streaming()) {
1071			$$props.onclose_stream?.();
1072			$$props.onstop_recording?.();
1073			recorder.stop();
1074
1075			if (pending()) {
1076				submit_pending_stream_on_pending_end = true;
1077			}
1078
1079			await dispatch_blob(audio_chunks, "stop_recording");
1080			$$props.onclear?.();
1081			set(mode, "");
1082		}
1083	}
1084
1085	user_effect(() => {
1086		if (!recording() && recorder && get(mode) !== "") stop();
1087	});
1088
1089	user_effect(() => {
1090		if (recording() && recorder) record();
1091	});
1092
1093	var fragment = root_1();
1094	var node = first_child(fragment);
1095
1096	{
1097		let $0 = user_derived(() =>
1097 active_source() === "upload" && value() === null);
1098		let $1 = user_derived(() => $$props.label || $$props.i18n("audio.audio"));
1099
1100		BlockLabel(node, {
1101			get show_label() {
1102				return show_label();
1103			},
1104
1105			get Icon() {
1106				return Music;
1107			},
1108
1109			get float() {
1110				return get($0);
1111			},
1112
1113			get label() {
1114				return get($1);
1115			}
1116		});
1117	}
1118
1119	var div = sibling(node, 2);
1120	var node_1 = child(div);
1121
1122	StreamingBar(node_1, {
1123		get time_limit() {
1124			return time_limit();
1125		}
1126	});
1127
1128	var node_2 = sibling(node_1, 2);
1129
1130	{
1131		var consequent_4 = ($$anchor) => {
1132			var fragment_1 = comment();
1133			var node_3 = first_child(fragment_1);
1134
1135			{
1136				var consequent_1 = ($$anchor) => {
1137					var fragment_2 = root_3();
1138					var node_4 = first_child(fragment_2);
1139
1140					ModifyUpload(node_4, {
1141						get i18n() {
1142							return $$props.i18n;
1143						},
1144						onclear: clear
1145					});
1146
1147					var node_5 = sibling(node_4, 2);
1148
1149					{
1150						var consequent = ($$anchor) => {
1151							{
1152								let $0 = user_derived(() => stream_state() === "waiting");
1153
1154								StreamAudio($$anchor, {
1155									record,
1156									get recording() {
1157										return recording();
1158									},
1159									stop,
1160									get i18n() {
1161										return $$props.i18n;
1162									},
1163
1164									get waveform_settings() {
1165										return $$props.waveform_settings;
1166									},
1167
1168									get waveform_options() {
1169										return waveform_options();
1170									},
1171
1172									get waiting() {
1173										return get($0);
1174									}
1175								});
1176							}
1177						};
1178
1179						var alternate = ($$anchor) => {
1180							AudioRecorder($$anchor, {
1181								get i18n() {
1182									return $$props.i18n;
1183								},
1184
1185								get editable() {
1186									return editable();
1187								},
1188
1189								get recording() {
1190									return recording();
1191								},
1192								dispatch_blob,
1193								get waveform_settings() {
1194									return $$props.waveform_settings;
1195								},
1196
1197								get waveform_options() {
1198									return waveform_options();
1199								},
1200
1201								get handle_reset_value() {
1202									return handle_reset_value();
1203								},
1204								onstartrecording: () => $$props.onstart_recording?.(),
1205								onpauserecording: () => $$props.onpause_recording?.(),
1206								onstoprecording: () => $$props.onstop_recording?.(),
1207								get mode() {
1208									return get(mode);
1209								},
1210
1211								set mode($$value) {
1212									set(mode, $$value, true);
1213								}
1214							});
1215						};
1216
1217						if_block(node_5, ($$render) => {
1218							if (streaming()) $$render(consequent); else $$render(alternate, false);
1219						});
1220					}
1221
1222					append($$anchor, fragment_2);
1223				};
1224
1225				var alternate_1 = ($$anchor) => {
1226					var fragment_5 = comment();
1227					var node_6 = first_child(fragment_5);
1228
1229					{
1230						var consequent_3 = ($$anchor) => {
1231							{
1232								let $0 = user_derived(() => $$props.i18n("audio.drop_to_upload"));
1233
1234								Upload($$anchor, {
1235									filetype: 'audio/aac,audio/midi,audio/mpeg,audio/ogg,audio/wav,audio/x-wav,audio/opus,audio/webm,audio/flac,audio/vnd.rn-realaudio,audio/x-ms-wma,audio/x-aiff,audio/amr,audio/*',
1236									onload: handle_load,
1237									onerror: (detail) => $$props.onerror?.(detail),
1238									get root() {
1239										return $$props.root;
1240									},
1241
1242									get max_file_size() {
1243										return max_file_size();
1244									},
1245
1246									get upload() {
1247										return $$props.upload;
1248									},
1249
1250									get stream_handler() {
1251										return $$props.stream_handler;
1252									},
1253
1254									get aria_label() {
1255										return get($0);
1256									},
1257
1258									get upload_promise() {
1259										return upload_promise();
1260									},
1261
1262									set upload_promise($$value) {
1263										upload_promise($$value);
1264									},
1265
1266									get dragging() {
1267										return dragging();
1268									},
1269
1270									set dragging($$value) {
1271										dragging($$value);
1272									},
1273
1274									get uploading() {
1275										return uploading();
1276									},
1277
1278									set uploading($$value) {
1279										uploading($$value);
1280									},
1281
1282									children: ($$anchor, $$slotProps) => {
1283										var fragment_7 = comment();
1284										var node_7 = first_child(fragment_7);
1285
1286										{
1287											var consequent_2 = ($$anchor) => {
1288												var fragment_8 = comment();
1289												var node_8 = first_child(fragment_8);
1290
1291												snippet(node_8, () => $$props.children);
1292												append($$anchor, fragment_8);
1293											};
1294
1295											if_block(node_7, ($$render) => {
1296												if ($$props.children) $$render(consequent_2);
1297											});
1298										}
1299
1300										append($$anchor, fragment_7);
1301									},
1302									$$slots: { default: true }
1303								});
1304							}
1305						};
1306
1307						if_block(
1308							node_6,
1309							($$render) => {
1310								if (active_source() === "upload") $$render(consequent_3);
1311							},
1312							true
1313						);
1314					}
1315
1316					append($$anchor, fragment_5);
1317				};
1318
1319				if_block(node_3, ($$render) => {
1320					if (active_source() === "microphone") $$render(consequent_1); else $$render(alternate_1, false);
1321				});
1322			}
1323
1324			append($$anchor, fragment_1);
1325		};
1326
1327		var alternate_3 = ($$anchor) => {
1328			var fragment_9 = root_10();
1329			var node_9 = first_child(fragment_9);
1330
1331			{
1332				let $0 = user_derived(() => buttons() === null
1333					? value().url
1334					: buttons().some((btn) => typeof btn === "string" && btn === "download") ? value().url : null);
1335
1336				ModifyUpload(node_9, {
1337					get i18n() {
1338						return $$props.i18n;
1339					},
1340					onclear: clear,
1341					onedit: () => {
1342						set(mode, "edit");
1343						$$props.onedit?.();
1344					},
1345
1346					get download() {
1347						return get($0);
1348					},
1349
1350					children: ($$anchor, $$slotProps) => {
1351						var fragment_10 = comment();
1352						var node_10 = first_child(fragment_10);
1353
1354						{
1355							var consequent_7 = ($$anchor) => {
1356								var fragment_11 = comment();
1357								var node_11 = first_child(fragment_11);
1358
1359								each(node_11, 17, buttons, index, ($$anchor, btn) => {
1360									var fragment_12 = comment();
1361									var node_12 = first_child(fragment_12);
1362
1363									{
1364										var consequent_6 = ($$anchor) => {
1365											var fragment_13 = comment();
1366											var node_13 = first_child(fragment_13);
1367
1368											{
1369												var consequent_5 = ($$anchor) => {
1370													ShareButton($$anchor, {
1371														get i18n() {
1372															return $$props.i18n;
1373														},
1374
1375														get onerror() {
1376															return $$props.onerror;
1377														},
1378														onshare: () => {},
1379														formatter: async (fileData) => {
1380															if (!fileData || !fileData.url) return "";
1381
1382															let url = await uploadToHuggingFace(fileData.url);
1383
1384															return `<audio controls src="${url}"></audio>`;
1385														},
1386
1387														get value() {
1388															return value();
1389														}
1390													});
1391												};
1392
1393												if_block(node_13, ($$render) => {
1394													if (get(btn) === "share") $$render(consequent_5);
1395												});
1396											}
1397
1398											append($$anchor, fragment_13);
1399										};
1400
1401										var alternate_2 = ($$anchor) => {
1402											CustomButton($$anchor, {
1403												get button() {
1404													return get(btn);
1405												},
1406
1407												on_click: (id) => {
1408													if (on_custom_button_click()) {
1409														on_custom_button_click()(id);
1410													}
1411												}
1412											});
1413										};
1414
1415										if_block(node_12, ($$render) => {
1416											if (typeof get(btn) === "string") $$render(consequent_6); else $$render(alternate_2, false);
1417										});
1418									}
1419
1420									append($$anchor, fragment_12);
1421								});
1422
1423								append($$anchor, fragment_11);
1424							};
1425
1426							if_block(node_10, ($$render) => {
1427								if (value() !== null && buttons()) $$render(consequent_7);
1428							});
1429						}
1430
1431						append($$anchor, fragment_10);
1432					},
1433					$$slots: { default: true }
1434				});
1435			}
1436
1437			var node_14 = sibling(node_9, 2);
1438
1439			{
1440				let $0 = user_derived(() => Array.isArray(subtitles()) ? subtitles() : subtitles()?.url);
1441
1442				AudioPlayer(node_14, {
1443					get value() {
1444						return value();
1445					},
1446
1447					get subtitles() {
1448						return get($0);
1449					},
1450
1451					get label() {
1452						return $$props.label;
1453					},
1454
1455					get i18n() {
1456						return $$props.i18n;
1457					},
1458					dispatch_blob,
1459					get waveform_settings() {
1460						return $$props.waveform_settings;
1461					},
1462
1463					get waveform_options() {
1464						return waveform_options();
1465					},
1466
1467					get trim_region_settings() {
1468						return trim_region_settings();
1469					},
1470
1471					get handle_reset_value() {
1472						return handle_reset_value();
1473					},
1474
1475					get editable() {
1476						return editable();
1477					},
1478
1479					get loop() {
1480						return $$props.loop;
1481					},
1482					interactive: true,
1483					get onstop() {
1484						return $$props.onstop;
1485					},
1486
1487					get onplay() {
1488						return $$props.onplay;
1489					},
1490
1491					get onpause() {
1492						return $$props.onpause;
1493					},
1494
1495					get onedit() {
1496						return $$props.onedit;
1497					},
1498
1499					get mode() {
1500						return get(mode);
1501					},
1502
1503					set mode($$value) {
1504						set(mode, $$value, true);
1505					},
1506
1507					get playback_position() {
1508						return playback_position();
1509					},
1510
1511					set playback_position($$value) {
1512						playback_position($$value);
1513					}
1514				});
1515			}
1516
1517			append($$anchor, fragment_9);
1518		};
1519
1520		if_block(node_2, ($$render) => {
1521			if (value() == null || streaming()) $$render(consequent_4); else $$render(alternate_3, false);
1522		});
1523	}
1524
1525	var node_15 = sibling(node_2, 2);
1526
1527	SelectSource(node_15, {
1528		get sources() {
1529			return sources();
1530		},
1531		handle_clear: clear,
1532		get active_source() {
1533			return active_source();
1534		},
1535
1536		set active_source($$value) {
1537			active_source($$value);
1538		}
1539	});
1540
1541	reset(div);
1542
1543	template_effect(() => {
1544		set_class(div, 1, `audio-container ${class_name() ?? ''}`, 'svelte-ocxd3m');
1545		set_attribute(div, 'data-testid', $$props.label ? "waveform-" + $$props.label : "unlabelled-audio");
1546	});
1547
1548	append($$anchor, fragment);
1549	pop();
1550}
1551
1552var root_2 = from_html(`<!> <!>`, 1);
1553var root_4 = from_html(`<!> <!>`, 1);
1554
1555function Index($$anchor, $$props) {
1556	push($$props, true);
1557
1558	let props = rest_props($$props, ['$$slots', '$$events', '$$legacy']);
1559	let upload_promise = state(void 0);
1560
1561	$$props.props.stream_every = 0.1; // default to 0.1s stream interval
1562
1563	class AudioGradio extends Gradio {
1564		async get_data() {
1565			if (get(upload_promise)) {
1566				await get(upload_promise);
1567				await tick();
1568			}
1569
1570			const data = await super.get_data();
1571
1572			return data;
1573		}
1574	}
1575
1576	const gradio = new AudioGradio(props);
1577	let label = user_derived(() => gradio.shared.label || gradio.i18n("audio.audio"));
1578	let minimal = user_derived(() => $$props.minimal ?? gradio.props.minimal ?? false);
1579	let active_source = user_derived(() => gradio.props.sources ? gradio.props.sources[0] : null);
1580	let initial_value = state(proxy(gradio.props.value));
1581
1582	const handle_reset_value = () => {
1583		if (get(initial_value) === null || gradio.props.value === get(initial_value)) {
1584			return;
1585		}
1586
1587		gradio.props.value = get(initial_value);
1588	};
1589
1590	let dragging = state(false);
1591	let recording = state(proxy(gradio.props.recording ?? false));
1592
1593	user_effect(() => {
1594		gradio.props.recording = get(recording);
1595	});
1596
1597	let color_accent = "darkorange";
1598
1599	let waveform_settings = proxy({
1600		height: 50,
1601		barWidth: 2,
1602		barGap: 3,
1603		cursorWidth: 2,
1604		cursorColor: "#ddd5e9",
1605		autoplay: gradio.props.autoplay,
1606		barRadius: 10,
1607		dragToSeek: true,
1608		normalize: true,
1609		minPxPerSec: 20,
1610		waveColor: gradio.props.waveform_options.waveform_color || "#9ca3af",
1611		progressColor: gradio.props.waveform_options.waveform_progress_color || color_accent,
1612		mediaControls: gradio.props.waveform_options.show_controls ?? false,
1613		sampleRate: gradio.props.waveform_options.sample_rate || 44100
1614	});
1615
1616	const trim_region_settings = {
1617		color: gradio.props.waveform_options.trim_region_color,
1618		drag: true,
1619		resize: true
1620	};
1621
1622	function set_trim_region_colour() {
1623		document.documentElement.style.setProperty("--trim-region-color", trim_region_settings.color || color_accent);
1624	}
1625
1626	function handle_error(detail) {
1627		const [level, status] = detail.includes("Invalid file type") ? ["warning", "complete"] : ["error", "error"];
1628
1629		if (gradio.shared.loading_status) {
1630			gradio.shared.loading_status.status = status;
1631			gradio.shared.loading_status.message = detail;
1632		}
1633
1634		gradio.dispatch(level, detail);
1635	}
1636
1637	gradio.watch_for_change();
1638
1639	onMount(() => {
1640		set_trim_region_colour();
1641	});
1642
1643	var fragment = comment();
1644	var node = first_child(fragment);
1645
1646	{
1647		var consequent = ($$anchor) => {
1648			{
1649				let $0 = user_derived(() => get(dragging) ? "focus" : "base");
1650
1651				Block($$anchor, {
1652					variant: "solid",
1653					get border_mode() {
1654						return get($0);
1655					},
1656					padding: false,
1657					allow_overflow: false,
1658					get elem_id() {
1659						return gradio.shared.elem_id;
1660					},
1661
1662					get elem_classes() {
1663						return gradio.shared.elem_classes;
1664					},
1665
1666					get visible() {
1667						return gradio.shared.visible;
1668					},
1669
1670					get container() {
1671						return gradio.shared.container;
1672					},
1673
1674					get scale() {
1675						return gradio.shared.scale;
1676					},
1677
1678					get min_width() {
1679						return gradio.shared.min_width;
1680					},
1681
1682					children: ($$anchor, $$slotProps) => {
1683						var fragment_2 = root_2();
1684						var node_1 = first_child(fragment_2);
1685
1686						Static(node_1, spread_props(
1687							{
1688								get autoscroll() {
1689									return gradio.shared.autoscroll;
1690								},
1691
1692								get i18n() {
1693									return gradio.i18n;
1694								}
1695							},
1696							() => gradio.shared.loading_status,
1697							{
1698								on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status)
1699							}
1700						));
1701
1702						var node_2 = sibling(node_1, 2);
1703
1704						{
1705							let $0 = user_derived(() => gradio.props.buttons ?? ["download", "share"]);
1706
1707							StaticAudio(node_2, {
1708								get i18n() {
1709									return gradio.i18n;
1710								},
1711
1712								get show_label() {
1713									return gradio.shared.show_label;
1714								},
1715
1716								get buttons() {
1717									return get($0);
1718								},
1719
1720								get value() {
1721									return gradio.props.value;
1722								},
1723
1724								get subtitles() {
1725									return gradio.props.subtitles;
1726								},
1727
1728								get label() {
1729									return get(label);
1730								},
1731
1732								get loop() {
1733									return gradio.props.loop;
1734								},
1735
1736								get waveform_settings() {
1737									return waveform_settings;
1738								},
1739
1740								get waveform_options() {
1741									return gradio.props.waveform_options;
1742								},
1743
1744								get editable() {
1745									return gradio.props.editable;
1746								},
1747
1748								get minimal() {
1749									return get(minimal);
1750								},
1751
1752								on_custom_button_click: (id) => {
1753									gradio.dispatch("custom_button_click", { id });
1754								},
1755								onshare: (detail) => gradio.dispatch("share", detail),
1756								onerror: (e) => gradio.dispatch("error", e.detail),
1757								onplay: () => gradio.dispatch("play"),
1758								onpause: () => gradio.dispatch("pause"),
1759								onstop: () => gradio.dispatch("stop"),
1760								get playback_position() {
1761									return gradio.props.playback_position;
1762								},
1763
1764								set playback_position($$value) {
1765									gradio.props.playback_position = $$value;
1766								}
1767							});
1768						}
1769
1770						append($$anchor, fragment_2);
1771					},
1772					$$slots: { default: true }
1773				});
1774			}
1775		};
1776
1777		var alternate = ($$anchor) => {
1778			{
1779				let $0 = user_derived(() => gradio.props.value === null && get(active_source) === "upload" ? "dashed" : "solid");
1780				let $1 = user_derived(() => get(dragging) ? "focus" : "base");
1781
1782				Block($$anchor, {
1783					get variant() {
1784						return get($0);
1785					},
1786
1787					get border_mode() {
1788						return get($1);
1789					},
1790					padding: false,
1791					allow_overflow: false,
1792					get elem_id() {
1793						return gradio.shared.elem_id;
1794					},
1795
1796					get elem_classes() {
1797						return gradio.shared.elem_classes;
1798					},
1799
1800					get visible() {
1801						return gradio.shared.visible;
1802					},
1803
1804					get container() {
1805						return gradio.shared.container;
1806					},
1807
1808					get scale() {
1809						return gradio.shared.scale;
1810					},
1811
1812					get min_width() {
1813						return gradio.shared.min_width;
1814					},
1815
1816					children: ($$anchor, $$slotProps) => {
1817						var fragment_4 = root_4();
1818						var node_3 = first_child(fragment_4);
1819
1820						Static(node_3, spread_props(
1821							{
1822								get autoscroll() {
1823									return gradio.shared.autoscroll;
1824								},
1825
1826								get i18n() {
1827									return gradio.i18n;
1828								}
1829							},
1830							() => gradio.shared.loading_status,
1831							{
1832								on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status)
1833							}
1834						));
1835
1836						var node_4 = sibling(node_3, 2);
1837
1838						{
1839							let $0 = user_derived(() => gradio.props.buttons ?? []);
1840							let $1 = user_derived(() => get(active_source) || undefined);
1841
1842							InteractiveAudio(node_4, {
1843								get label() {
1844									return get(label);
1845								},
1846
1847								get show_label() {
1848									return gradio.shared.show_label;
1849								},
1850
1851								get buttons() {
1852									return get($0);
1853								},
1854
1855								on_custom_button_click: (id) => {
1856									gradio.dispatch("custom_button_click", { id });
1857								},
1858
1859								get value() {
1860									return gradio.props.value;
1861								},
1862
1863								get subtitles() {
1864									return gradio.props.subtitles;
1865								},
1866								onchange: (detail) => gradio.props.value = detail,
1867								onstream: (detail) => {
1868									gradio.props.value = detail;
1869									gradio.dispatch("stream", gradio.props.value);
1870								},
1871								ondrag: (detail) => set(dragging, detail, true),
1872								get root() {
1873									return gradio.shared.root;
1874								},
1875
1876								get sources() {
1877									return gradio.props.sources;
1878								},
1879
1880								get active_source() {
1881									return get($1);
1882								},
1883
1884								get pending() {
1885									return gradio.shared.loading_status.pending;
1886								},
1887
1888								get streaming() {
1889									return gradio.props.streaming;
1890								},
1891
1892								get loop() {
1893									return gradio.props.loop;
1894								},
1895
1896								get max_file_size() {
1897									return gradio.shared.max_file_size;
1898								},
1899								handle_reset_value,
1900								get editable() {
1901									return gradio.props.editable;
1902								},
1903								onedit: () => gradio.dispatch("edit"),
1904								onplay: () => gradio.dispatch("play"),
1905								onpause: () => gradio.dispatch("pause"),
1906								onstop: () => gradio.dispatch("stop"),
1907								onstart_recording: () => gradio.dispatch("start_recording"),
1908								onpause_recording: () => gradio.dispatch("pause_recording"),
1909								onstop_recording: () => {
1910									gradio.dispatch("stop_recording");
1911									gradio.dispatch("input");
1912								},
1913
1914								onupload: () => {
1915									gradio.dispatch("upload");
1916									gradio.dispatch("input");
1917								},
1918
1919								onclear: () => {
1920									gradio.dispatch("clear");
1921									gradio.dispatch("input");
1922								},
1923								onerror: handle_error,
1924								onclose_stream: () => gradio.dispatch("close_stream", "stream"),
1925								get i18n() {
1926									return gradio.i18n;
1927								},
1928
1929								get waveform_settings() {
1930									return waveform_settings;
1931								},
1932
1933								get waveform_options() {
1934									return gradio.props.waveform_options;
1935								},
1936
1937								get trim_region_settings() {
1938									return trim_region_settings;
1939								},
1940
1941								get stream_every() {
1942									return gradio.props.stream_every;
1943								},
1944
1945								get stream_state() {
1946									return gradio.shared.loading_status.stream_state;
1947								},
1948								upload: (...args) => gradio.shared.client.upload(...args),
1949								stream_handler: (...args) => gradio.shared.client.stream(...args),
1950								get time_limit() {
1951									return gradio.shared.loading_status.time_limit;
1952								},
1953
1954								get upload_promise() {
1955									return get(upload_promise);
1956								},
1957
1958								set upload_promise($$value) {
1959									set(upload_promise, $$value, true);
1960								},
1961
1962								get initial_value() {
1963									return get(initial_value);
1964								},
1965
1966								set initial_value($$value) {
1967									set(initial_value, $$value, true);
1968								},
1969
1970								get recording() {
1971									return get(recording);
1972								},
1973
1974								set recording($$value) {
1975									set(recording, $$value, true);
1976								},
1977
1978								get dragging() {
1979									return get(dragging);
1980								},
1981
1982								set dragging($$value) {
1983									set(dragging, $$value, true);
1984								},
1985
1986								get playback_position() {
1987									return gradio.props.playback_position;
1988								},
1989
1990								set playback_position($$value) {
1991									gradio.props.playback_position = $$value;
1992								},
1993
1994								children: ($$anchor, $$slotProps) => {
1995									UploadText($$anchor, {
1996										get i18n() {
1997											return gradio.i18n;
1998										},
1999										type: 'audio'
2000									});
2001								},
2002								$$slots: { default: true }
2003							});
2004						}
2005
2006						append($$anchor, fragment_4);
2007					},
2008					$$slots: { default: true }
2009				});
2010			}
2011		};
2012
2013		if_block(node, ($$render) => {
2014			if (!gradio.shared.interactive) $$render(consequent); else $$render(alternate, false);
2015		});
2016	}
2017
2018	append($$anchor, fragment);
2019	pop();
2020}
2021
2022export { InteractiveAudio as BaseInteractiveAudio, AudioPlayer as BasePlayer, StaticAudio as BaseStaticAudio, Index as default };
2023//# sourceMappingURL=index-D65tv47j.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.