@@ -14,58 +14,82 @@ import { adaptFilters } from './filter-adapter'
1414 *
1515 * @returns {MeiliSearchParams }
1616 */
17- function ParamsAdapter ( searchContext : SearchContext ) {
17+ function MeiliParamsCreator ( searchContext : SearchContext ) {
1818 const meiliSearchParams : Record < string , any > = { }
19+ const {
20+ facets,
21+ attributesToSnippet,
22+ snippetEllipsisText,
23+ attributesToRetrieve,
24+ filters,
25+ numericFilters,
26+ facetFilters,
27+ attributesToHighlight,
28+ highlightPreTag,
29+ highlightPostTag,
30+ placeholderSearch,
31+ query,
32+ finitePagination,
33+ sort,
34+ pagination,
35+ } = searchContext
1936
2037 return {
2138 getParams ( ) {
2239 return meiliSearchParams
2340 } ,
24- adaptFacets ( ) {
25- const facets = searchContext ?. facets
41+ addFacets ( ) {
2642 if ( facets ?. length ) {
27- meiliSearchParams . facetsDistribution = facets
43+ meiliSearchParams . facets = facets
2844 }
2945 } ,
30- adaptAttributesToCrop ( ) {
31- const attributesToCrop = searchContext ?. attributesToSnippet
32- if ( attributesToCrop ) {
33- meiliSearchParams . attributesToCrop = attributesToCrop
46+ addAttributesToCrop ( ) {
47+ if ( attributesToSnippet ) {
48+ meiliSearchParams . attributesToCrop = attributesToSnippet
3449 }
3550 } ,
36- adaptAttributesToRetrieve ( ) {
37- const attributesToRetrieve = searchContext ?. attributesToRetrieve
51+ addCropMarker ( ) {
52+ // Attributes To Crop marker
53+ if ( snippetEllipsisText != null ) {
54+ meiliSearchParams . cropMarker = snippetEllipsisText
55+ }
56+ } ,
57+ addAttributesToRetrieve ( ) {
3858 if ( attributesToRetrieve ) {
3959 meiliSearchParams . attributesToRetrieve = attributesToRetrieve
4060 }
4161 } ,
42- adaptFilters ( ) {
43- const filter = adaptFilters (
44- searchContext ?. filters ,
45- searchContext ?. numericFilters ,
46- searchContext ?. facetFilters
47- )
62+ addFilters ( ) {
63+ const filter = adaptFilters ( filters , numericFilters , facetFilters )
4864 if ( filter . length ) {
4965 meiliSearchParams . filter = filter
5066 }
5167 } ,
52- adaptAttributesToHighlight ( ) {
53- meiliSearchParams . attributesToHighlight = searchContext ?. attributesToHighlight || [
54- '*' ,
55- ]
68+ addAttributesToHighlight ( ) {
69+ meiliSearchParams . attributesToHighlight = attributesToHighlight || [ '*' ]
5670 } ,
57- adaptLimit ( ) {
58- const placeholderSearch = searchContext . placeholderSearch
59- const query = searchContext . query
60- const { pagination } = searchContext
61-
71+ addPreTag ( ) {
72+ if ( highlightPreTag ) {
73+ meiliSearchParams . highlightPreTag = highlightPreTag
74+ } else {
75+ meiliSearchParams . highlightPreTag = '__ais-highlight__'
76+ }
77+ } ,
78+ addPostTag ( ) {
79+ if ( highlightPostTag ) {
80+ meiliSearchParams . highlightPostTag = highlightPostTag
81+ } else {
82+ meiliSearchParams . highlightPostTag = '__/ais-highlight__'
83+ }
84+ } ,
85+ addPagination ( ) {
6286 // Limit based on pagination preferences
6387 if (
6488 ( ! placeholderSearch && query === '' ) ||
6589 pagination . paginationTotalHits === 0
6690 ) {
6791 meiliSearchParams . limit = 0
68- } else if ( searchContext . finitePagination ) {
92+ } else if ( finitePagination ) {
6993 meiliSearchParams . limit = pagination . paginationTotalHits
7094 } else {
7195 const limit = ( pagination . page + 1 ) * pagination . hitsPerPage + 1
@@ -78,14 +102,12 @@ function ParamsAdapter(searchContext: SearchContext) {
78102 }
79103 }
80104 } ,
81- adaptSort ( ) {
82- const sort = searchContext . sort
83-
105+ addSort ( ) {
84106 if ( sort ?. length ) {
85107 meiliSearchParams . sort = [ sort ]
86108 }
87109 } ,
88- adaptGeoSearchRules ( ) {
110+ addGeoSearchRules ( ) {
89111 const geoSearchContext = createGeoSearchContext ( searchContext )
90112 const geoRules = adaptGeoPointsRules ( geoSearchContext )
91113
@@ -110,15 +132,18 @@ function ParamsAdapter(searchContext: SearchContext) {
110132export function adaptSearchParams (
111133 searchContext : SearchContext
112134) : MeiliSearchParams {
113- const adapter = ParamsAdapter ( searchContext )
114- adapter . adaptFacets ( )
115- adapter . adaptFilters ( )
116- adapter . adaptLimit ( )
117- adapter . adaptSort ( )
118- adapter . adaptGeoSearchRules ( )
119- adapter . adaptAttributesToCrop ( )
120- adapter . adaptAttributesToHighlight ( )
121- adapter . adaptAttributesToRetrieve ( )
135+ const meilisearchParams = MeiliParamsCreator ( searchContext )
136+ meilisearchParams . addFacets ( )
137+ meilisearchParams . addAttributesToHighlight ( )
138+ meilisearchParams . addPreTag ( )
139+ meilisearchParams . addPostTag ( )
140+ meilisearchParams . addAttributesToRetrieve ( )
141+ meilisearchParams . addAttributesToCrop ( )
142+ meilisearchParams . addCropMarker ( )
143+ meilisearchParams . addPagination ( )
144+ meilisearchParams . addFilters ( )
145+ meilisearchParams . addSort ( )
146+ meilisearchParams . addGeoSearchRules ( )
122147
123- return adapter . getParams ( )
148+ return meilisearchParams . getParams ( )
124149}
0 commit comments