版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

26 lines
1.1 KiB

  1. import * as vue_demi from 'vue-demi';
  2. import { ComputedRef } from 'vue-demi';
  3. import Fuse from 'fuse.js';
  4. import { MaybeComputedRef } from '@vueuse/shared';
  5. type FuseOptions<T> = Fuse.IFuseOptions<T>;
  6. interface UseFuseOptions<T> {
  7. fuseOptions?: FuseOptions<T>;
  8. resultLimit?: number;
  9. matchAllWhenSearchEmpty?: boolean;
  10. }
  11. declare function useFuse<DataItem>(search: MaybeComputedRef<string>, data: MaybeComputedRef<DataItem[]>, options?: MaybeComputedRef<UseFuseOptions<DataItem>>): {
  12. fuse: vue_demi.Ref<{
  13. search: <R = DataItem>(pattern: string | Fuse.Expression, options?: Fuse.FuseSearchOptions | undefined) => Fuse.FuseResult<R>[];
  14. setCollection: (docs: readonly DataItem[], index?: Fuse.FuseIndex<DataItem> | undefined) => void;
  15. add: (doc: DataItem) => void;
  16. remove: (predicate: (doc: DataItem, idx: number) => boolean) => DataItem[];
  17. removeAt: (idx: number) => void;
  18. getIndex: () => Fuse.FuseIndex<DataItem>;
  19. }>;
  20. results: ComputedRef<Fuse.FuseResult<DataItem>[]>;
  21. };
  22. type UseFuseReturn = ReturnType<typeof useFuse>;
  23. export { FuseOptions, UseFuseOptions, UseFuseReturn, useFuse };