react-fusejs-fuzzy-search
Version:
Fuzzy search by keeping the UI layer as abstract as possible.
25 lines (24 loc) • 929 B
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var fuse_js_1 = __importDefault(require("fuse.js"));
var react_1 = require("react");
function useFuse(list, fuseOpts, index) {
var _a = (0, react_1.useState)([]), results = _a[0], setResults = _a[1];
var fuseInstance = (0, react_1.useMemo)(function () {
return new fuse_js_1.default(list, fuseOpts, index);
}, [list, fuseOpts, index]);
var search = (0, react_1.useCallback)(function (pattern, options) {
var fuseResults = fuseInstance.search(pattern, options);
setResults(fuseResults);
return fuseResults;
}, [fuseInstance]);
return {
fuseInstance: fuseInstance,
search: search,
results: results,
};
}
exports.default = useFuse;