import { useCallback, useEffect, useState } from "react"; import { Table } from "./table"; import { Button } from "~/components/ui/button"; import { Textarea } from "~/components/ui/textarea"; import { useSearchParams } from "~/useSearchParams"; import { useDuckDb } from "~/useDuckDb"; import { useParquetTable } from "~/useParquetTable"; const DEFAULT_DATASET_URL = "https://huggingface.co/datasets/openai/openai_humaneval/resolve/main/openai_humaneval/test-00000-of-00001.parquet"; const usePersistedTextfield = (fieldName: string) => { const { searchParams, setSearchParams } = useSearchParams(); const searchParamsObj = new URLSearchParams(searchParams); const textField = searchParamsObj.get(fieldName) || ""; const setTextField = useCallback( (value: string) => { setSearchParams({ [fieldName]: value }); }, [fieldName, setSearchParams] ); return [textField, setTextField] satisfies [string, (value: string) => void]; }; function App() { const [datasetUrl, setDatasetUrl] = usePersistedTextfield("datasetUrl"); const [datasetQuery, setDatasetQuery] = usePersistedTextfield("datasetQuery"); const [nextDatasetUrl, setNextDatasetUrl] = useState(() => datasetUrl); const [nextDatasetQuery, setNextDatasetQuery] = useState(() => datasetQuery); const db = useDuckDb(); const onQueryChanged = useCallback( (query: string) => { console.log("Query changed", query); setNextDatasetQuery(query); }, [setNextDatasetQuery] ); useEffect(() => { setNextDatasetQuery(datasetQuery); }, [datasetQuery]); const { loading, dataset, error, clearDataset } = useParquetTable(db, { datasetUrl, datasetQuery, setDatasetQuery, onQueryChanged, }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setNextDatasetQuery(""); setDatasetUrl(nextDatasetUrl); setDatasetQuery(""); }; return (

📣🦆 Quack

View Parquet Datasets via URL