@meilisearch/instant-meilisearch
Version:
The search client to use Meilisearch with InstantSearch.
59 lines • 2.28 kB
JavaScript
import { splitSortString } from './sort-context.js';
import { createPaginationState } from './pagination-context.js';
function separateIndexFromSortRules(indexName) {
const colonIndex = indexName.indexOf(':');
if (colonIndex === -1) {
return {
indexUid: indexName,
sortBy: '',
};
}
return {
indexUid: indexName.substring(0, colonIndex),
sortBy: indexName.substring(colonIndex + 1),
};
}
/**
* @param {AlgoliaMultipleQueriesQuery} searchRequest
* @param {Context} options
* @returns {SearchContext}
*/
export function createSearchContext(searchRequest, options) {
const { query, indexName, params: instantSearchParams } = searchRequest;
// Split index name and possible sorting rules
const { indexUid, sortBy } = separateIndexFromSortRules(indexName);
const paginationState = createPaginationState(options.finitePagination, instantSearchParams?.hitsPerPage, instantSearchParams?.page);
const searchContext = {
...options,
query,
...instantSearchParams,
sort: splitSortString(sortBy),
indexUid,
pagination: paginationState,
placeholderSearch: options.placeholderSearch !== false, // true by default
keepZeroFacets: !!options.keepZeroFacets, // false by default
};
return searchContext;
}
/**
* @param {AlgoliaMultipleQueriesQuery} searchRequest
* @param {Context} options
* @returns {SearchContext}
*/
export function createFacetSearchContext(searchRequest, options) {
// Split index name and possible sorting rules
const { indexUid, sortBy } = separateIndexFromSortRules(searchRequest.indexName);
const { params: instantSearchParams } = searchRequest;
const paginationState = createPaginationState(options.finitePagination, instantSearchParams?.hitsPerPage, instantSearchParams?.page);
const searchContext = {
...options,
...instantSearchParams,
sort: splitSortString(sortBy),
indexUid,
pagination: paginationState,
placeholderSearch: options.placeholderSearch !== false, // true by default
keepZeroFacets: !!options.keepZeroFacets, // false by default
};
return searchContext;
}
//# sourceMappingURL=search-context.js.map