import React from 'react'; import { LuCheck, LuFileJson } from 'react-icons/lu'; import { Tooltip } from 'react-tooltip'; import { useThemeMode } from './ThemeModeContext.tsx'; import { DroppedFile } from './useFileDrop.ts'; import { loadRegistry, substraitFileToJson } from '@substrait-viz/react'; export interface DownloadJSONButtonProps { plan: DroppedFile; descriptors: undefined | DroppedFile[]; } export function CopyAsJSONButton({ plan, descriptors, }: DownloadJSONButtonProps) { const { isDarkMode } = useThemeMode(); const [copied, setCopied] = React.useState(false); const copyAsJson = React.useCallback(async () => { const registry = await loadRegistry(descriptors?.map(_ => _.value)); const data = await substraitFileToJson(plan.value, registry); await navigator.clipboard.writeText(data); setCopied(true); setTimeout(() => setCopied(false), 2000); // Reset after 1 seconds }, [descriptors, plan.value]); return ( <> ); }