版博士V2.0程序
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

1234567891011121314151617181920212223242526272829303132333435
  1. 'use strict';
  2. var Fuse = require('fuse.js');
  3. var vueDemi = require('vue-demi');
  4. var shared = require('@vueuse/shared');
  5. function useFuse(search, data, options) {
  6. const createFuse = () => {
  7. var _a, _b;
  8. return new Fuse((_a = shared.resolveUnref(data)) != null ? _a : [], (_b = shared.resolveUnref(options)) == null ? void 0 : _b.fuseOptions);
  9. };
  10. const fuse = vueDemi.ref(createFuse());
  11. vueDemi.watch(() => {
  12. var _a;
  13. return (_a = shared.resolveUnref(options)) == null ? void 0 : _a.fuseOptions;
  14. }, () => {
  15. fuse.value = createFuse();
  16. }, { deep: true });
  17. vueDemi.watch(() => shared.resolveUnref(data), (newData) => {
  18. fuse.value.setCollection(newData);
  19. }, { deep: true });
  20. const results = vueDemi.computed(() => {
  21. const resolved = shared.resolveUnref(options);
  22. if ((resolved == null ? void 0 : resolved.matchAllWhenSearchEmpty) && !vueDemi.unref(search))
  23. return shared.resolveUnref(data).map((item, index) => ({ item, refIndex: index }));
  24. const limit = resolved == null ? void 0 : resolved.resultLimit;
  25. return fuse.value.search(shared.resolveUnref(search), limit ? { limit } : void 0);
  26. });
  27. return {
  28. fuse,
  29. results
  30. };
  31. }
  32. exports.useFuse = useFuse;