import { type FormEvent, useCallback, useEffect, useRef, useState, } from 'react'; import { useTheme } from '@emotion/react'; import { useRecoilState, useRecoilValue } from 'recoil'; import { v4 } from 'uuid'; import { useSpreadsheetImport } from '@/spreadsheet-import/hooks/useSpreadsheetImport'; import { IconButton } from '@/ui/button/components/IconButton'; import { DropdownMenuHeader } from '@/ui/dropdown/components/DropdownMenuHeader'; import { DropdownMenuInput } from '@/ui/dropdown/components/DropdownMenuInput'; import { DropdownMenuItem } from '@/ui/dropdown/components/DropdownMenuItem'; import { DropdownMenuItemsContainer } from '@/ui/dropdown/components/DropdownMenuItemsContainer'; import { DropdownMenuSeparator } from '@/ui/dropdown/components/DropdownMenuSeparator'; import type { ViewFieldDefinition, ViewFieldMetadata, } from '@/ui/editable-field/types/ViewField'; import DropdownButton from '@/ui/filter-n-sort/components/DropdownButton'; import { IconChevronLeft, IconFileImport, IconMinus, IconPlus, IconTag, } from '@/ui/icon'; import { hiddenTableColumnsState, tableColumnsState, visibleTableColumnsState, } from '@/ui/table/states/tableColumnsState'; import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope'; import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState'; import { useRecoilScopedValue } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedValue'; import { TableRecoilScopeContext } from '../../states/recoil-scope-contexts/TableRecoilScopeContext'; import { type TableView, tableViewEditModeState, tableViewsByIdState, tableViewsState, } from '../../states/tableViewsState'; import { TableOptionsHotkeyScope } from '../../types/TableOptionsHotkeyScope'; import { TableOptionsDropdownSection } from './TableOptionsDropdownSection'; type TableOptionsDropdownButtonProps = { onColumnsChange?: (columns: ViewFieldDefinition[]) => void; onViewsChange?: (views: TableView[]) => void; HotkeyScope: TableOptionsHotkeyScope; }; enum Option { Properties = 'Properties', } export const TableOptionsDropdownButton = ({ onColumnsChange, onViewsChange, HotkeyScope, }: TableOptionsDropdownButtonProps) => { const theme = useTheme(); const { openSpreadsheetImport } = useSpreadsheetImport(); const [isUnfolded, setIsUnfolded] = useState(false); const [selectedOption, setSelectedOption] = useState