@empathyco/x-components
Version:
Empathy X Components
53 lines (50 loc) • 1.88 kB
JavaScript
import '@empathyco/x-utils';
import { createStoreEmitters } from '../../../store/utils/store-emitters.utils.js';
import { isStringEmpty } from '../../../utils/string.js';
import { searchXStoreModule } from './module.js';
/**
* {@link StoreEmitters} For the search module.
*
* @internal
*/
const searchEmitters = createStoreEmitters(searchXStoreModule, {
FacetsChanged: {
selector: state => state.facets,
filter(newValue, oldValue) {
return newValue.length !== 0 || oldValue.length !== 0;
},
},
PageChanged: state => state.page,
ResultsChanged: state => state.results,
SearchRequestChanged: (_, getters) => getters.request,
SearchRequestUpdated: (_, getters) => getters.request,
SearchResponseChanged: {
selector: (state, getters) => {
return {
request: getters.request,
status: state.status,
banners: state.banners,
facets: state.facets,
partialResults: state.partialResults,
promoteds: state.promoteds,
queryTagging: state.queryTagging,
displayTagging: state.displayTagging,
redirections: state.redirections,
results: state.results,
spellcheck: state.spellcheckedQuery,
totalResults: state.totalResults,
};
},
filter: (newValue, oldValue) => {
return (newValue.status !== oldValue.status && oldValue.status === 'loading' && !!newValue.request);
},
},
SearchTaggingChanged: {
selector: state => state.queryTagging,
filter: ({ url }) => !isStringEmpty(url),
},
SpellcheckChanged: state => state.spellcheckedQuery,
SortChanged: state => state.sort,
});
export { searchEmitters };
//# sourceMappingURL=emitters.js.map