46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
// Metro module 9910 (f9911).
|
|
import { useState, useEffect, useCallback } from "react";
|
|
import useInitialValue from "../../hooks/useInitialValue";
|
|
import Module6163 from "../autocompleter/index";
|
|
export default function useAutocompleter({ searchOptions }) {
|
|
let c17550_2;
|
|
c17550_2 = void 0;
|
|
const [state, setState] = useState({
|
|
results: [],
|
|
query: ""
|
|
});
|
|
const initialValue = useInitialValue(() => {
|
|
const module6163 = new Module6163((a0, a1) => {
|
|
setState({
|
|
results: a0,
|
|
query: a1
|
|
});
|
|
});
|
|
module6163.setLimit(20);
|
|
module6163.search("");
|
|
return module6163;
|
|
});
|
|
c17550_2 = initialValue;
|
|
useEffect(() => () => c17550_2.destroy(), [initialValue]);
|
|
useEffect(() => {
|
|
if (searchOptions != null && searchOptions !== c17550_2.options) {
|
|
c17550_2.setOptions(searchOptions);
|
|
}
|
|
}, [initialValue, searchOptions]);
|
|
return {
|
|
search: useCallback(({ query, resultTypes: resultTypes2 }) => {
|
|
let r12 = c17550_2.resultTypes != null;
|
|
if (r12) {
|
|
const resultTypes = c17550_2.resultTypes;
|
|
r12 = resultTypes2.length === resultTypes.size && resultTypes2.every((item) => resultTypes.has(item));
|
|
}
|
|
if (!r12) {
|
|
c17550_2.setResultTypes(resultTypes2);
|
|
c17550_2.setLimit(resultTypes2.length === 1 ? 50 : 20);
|
|
}
|
|
c17550_2.search(query.trim() !== "" ? query : "");
|
|
}, [initialValue]),
|
|
...state
|
|
};
|
|
};
|