@scalar/api-reference
Version:
Generate beautiful API references from OpenAPI documents
34 lines (33 loc) • 870 B
JavaScript
import { computed, toValue, ref } from "vue";
import { createFuseInstance } from "../helpers/create-fuse-instance.js";
import { createSearchIndex } from "../helpers/create-search-index.js";
const MAX_SEARCH_RESULTS = 25;
function useSearchIndex(document) {
const fuse = computed(() => {
const instance = createFuseInstance();
instance.setCollection(createSearchIndex(toValue(document)));
return instance;
});
const query = ref("");
const results = computed(() => {
if (query.value.length !== 0) {
return fuse.value.search(query.value, {
limit: MAX_SEARCH_RESULTS
});
}
const allEntries = fuse.value._docs;
return allEntries.slice(0, MAX_SEARCH_RESULTS).map(
(item, index) => ({
item,
refIndex: index
})
);
});
return {
results,
query
};
}
export {
useSearchIndex
};