import React from 'react'; import { LuFileSpreadsheet } from 'react-icons/lu'; import { Tooltip } from 'react-tooltip'; import { useThemeMode } from './ThemeModeContext.tsx'; import { DroppedFile } from './useFileDrop.ts'; import { loadRegistry } from '@substrait-viz/react'; import { substraitFileToBin } from '@substrait-viz/react'; import { downloadBlob, enforceExtension } from './utils.ts'; export interface DownloadBinButtonProps { plan: DroppedFile; descriptors: undefined | DroppedFile[]; } export function DownloadBinButton({ plan, descriptors, }: DownloadBinButtonProps) { const { isDarkMode } = useThemeMode(); const downloadAsBin = React.useCallback(async () => { const registry = await loadRegistry(descriptors?.map(_ => _.value)); const data = await substraitFileToBin(plan.value, registry); const blob = new Blob([data], { type: 'application/json' }); downloadBlob(enforceExtension(plan.name, 'bin'), blob); }, [descriptors, plan.name, plan.value]); return ( <> ); }