'use client';
import { useCallback } from 'react';
import Dropdown from '@/components/ui/Dropdown';
import SelectorButton from '@/components/ui/SelectorButton';
import useDropdown from '@/hooks/useDropdown';
import useWindowSize from '@/hooks/useWindowSize';
import { CstMatchMode } from '@/models/miscellaneous';
import { prefixes } from '@/utils/constants';
import { describeCstMatchMode, labelCstMatchMode } from '@/utils/labels';
import { IconAlias, IconFilter, IconFormula, IconTerm, IconText } from '../Icons';
import DropdownButton from '../ui/DropdownButton';
function MatchModeIcon(mode: CstMatchMode, size: string, color?: string) {
switch (mode) {
case CstMatchMode.ALL:
return ;
case CstMatchMode.TEXT:
return ;
case CstMatchMode.EXPR:
return ;
case CstMatchMode.TERM:
return ;
case CstMatchMode.NAME:
return ;
}
}
interface SelectMatchModeProps {
value: CstMatchMode;
onChange: (value: CstMatchMode) => void;
}
function SelectMatchMode({ value, onChange }: SelectMatchModeProps) {
const menu = useDropdown();
const size = useWindowSize();
const handleChange = useCallback(
(newValue: CstMatchMode) => {
menu.hide();
onChange(newValue);
},
[menu, onChange]
);
return (
{Object.values(CstMatchMode)
.filter(value => !isNaN(Number(value)))
.map((value, index) => {
const matchMode = value as CstMatchMode;
return (
handleChange(matchMode)}
>
{MatchModeIcon(matchMode, '1rem')}
{labelCstMatchMode(matchMode)}: {describeCstMatchMode(matchMode)}
);
})}
);
}
export default SelectMatchMode;