Repository: gradio-app/gradio
File: js/multimodaltextbox/shared/MultimodalTextbox.svelte (Svelte)

Code before:
	import type { SelectData } from "@gradio/utils";
	import InteractiveAudio from "../../audio/interactive/InteractiveAudio.svelte";
	import type { InputHTMLAttributes } from "./types";

	export let value: { text: string; files: FileData[] } = {
		text: "",
		files: []
	};

	export let value_is_output = false;
	export let lines = 1;
	export let i18n: I18nFormatter;
	export let placeholder = "Type here...";
	export let disabled = false;
	export let label: string;
	export let info: string | undefined = undefined;
	export let show_label = true;
	export let max_lines: number;
	export let submit_btn: string | boolean | null = null;
	export let stop_btn: string | boolean | null = null;
	export let rtl = false;
	export let autofocus = false;
	export let text_align: "left" | "right" | undefined = undefined;
	export let autoscroll = true;
	export let root: string;
	export let file_types: string[] | null = null;
	export let max_file_size: number | null = null;
	export let upload: Client["upload"];
	export let stream_handler: Client["stream"];
	export let file_count: "single" | "multiple" | "directory" = "multiple";
	export let max_plain_text_length = 1000;
	export let waveform_settings: Record<string, any>;
	export let waveform_options: WaveformOptions = {
		show_recording_waveform: true
	};
	export let sources_string:
		| "upload"
		| "upload,microphone"
		| "microphone"
		| "microphone,upload" = "upload";
	export let active_source: "microphone" | null = null;
	export let html_attributes: InputHTMLAttributes | null = null;

	let upload_component: Upload;
	let el: HTMLTextAreaElement | HTMLInputElement;
	let can_scroll: boolean;
	let previous_scroll_top = 0;
	let user_has_scrolled_up = false;
	export let dragging = false;
	let uploading = false;
	// value can be null in multimodalchatinterface when loading a deep link

Review comment (suggestion):
~why do we change the name of this to file_types_string?~

edit: nvm!

Code after:
	import type { SelectData } from "@gradio/utils";
	import InteractiveAudio from "../../audio/interactive/InteractiveAudio.svelte";
	import type { InputHTMLAttributes } from "./types";

	export let value: { text: string; files: FileData[] } = {
		text: "",
		files: []
	};

	export let value_is_output = false;
	export let lines = 1;
	export let i18n: I18nFormatter;
	export let placeholder = "Type here...";
	export let disabled = false;
	export let label: string;
	export let info: string | undefined = undefined;
	export let show_label = true;
	export let max_lines: number;
	export let submit_btn: string | boolean | null = null;
	export let stop_btn: string | boolean | null = null;
	export let rtl = false;
	export let autofocus = false;
	export let text_align: "left" | "right" | undefined = undefined;
	export let autoscroll = true;
	export let root: string;
	export let file_types_string: string | null = null;
	export let max_file_size: number | null = null;
	export let upload: Client["upload"];
	export let stream_handler: Client["stream"];
	export let file_count: "single" | "multiple" | "directory" = "multiple";
	export let max_plain_text_length = 1000;
	export let waveform_settings: Record<string, any>;
	export let waveform_options: WaveformOptions = {
		show_recording_waveform: true
	};
	export let sources_string:
		| "upload"
		| "upload,microphone"
		| "microphone"
		| "microphone,upload" = "upload";
	export let active_source: "microphone" | null = null;
	export let html_attributes: InputHTMLAttributes | null = null;

	let upload_component: Upload;
	let el: HTMLTextAreaElement | HTMLInputElement;
	let can_scroll: boolean;
	let previous_scroll_top = 0;
	let user_has_scrolled_up = false;
	export let dragging = false;
	let uploading = false;
	// value can be null in multimodalchatinterface when loading a deep link