import { type FilterOptions, type FilterReturn, createFilter } from '@zag-js/i18n-utils';
import { useLocaleContext } from './use-locale-context';
import { track, trackSplit, type Tracked } from 'ripple';
import { mergeProps } from 'zag-ripple';

export interface UseFilterProps extends FilterOptions {}

export interface UseFilterReturn extends FilterReturn {}

export function useFilter(props: UseFilterProps): Tracked<UseFilterReturn> {
  let [localeProp, rest] = trackSplit(props, ['locale']);
  const env = useLocaleContext();

  const locale = track(() => @localeProp ?? @env.locale);
  return track(() => createFilter(mergeProps(@rest, { locale: @locale })));
}
