@empathyco/x-components
Version:
Empathy X Components
108 lines (105 loc) • 3.48 kB
JavaScript
import { isFacetFilter } from '@empathyco/x-types';
import { mergeConfig, setConfig } from '../../../store/utils/config-store.utils.js';
import { setQuery } from '../../../store/utils/query.utils.js';
import { groupItemsBy } from '../../../utils/array.js';
import { UNKNOWN_FACET_KEY } from '../../facets/store/constants.js';
import { fetchAndSaveAiSuggestionsSearch } from './actions/fetch-and-save-ai-suggestions-search.action.js';
import { fetchAndSaveAiSuggestions } from './actions/fetch-and-save-ai-suggestions.action.js';
import { saveOrigin } from './actions/save-origin.action.js';
import { setUrlParams } from './actions/set-url-params.action.js';
import { suggestionsRequest } from './getters/suggestions-request.getter.js';
import { suggestionsSearchRequest } from './getters/suggestions-search-request.getter.js';
/**
* {@link XStoreModule} For the ai module.
*
* @internal
*/
const aiXStoreModule = {
state: () => ({
...resettableAiState(),
selectedFilters: {},
query: '',
config: {
lowResultsThreshold: 50,
},
params: {},
origin: null,
relatedTags: [],
searchTotalResults: 0,
excludeOptions: {
resultIds: [],
},
}),
getters: {
suggestionsRequest,
suggestionsSearchRequest,
},
mutations: {
/* Streamed fields */
setQueries: (state, queries) => {
state.queries = queries;
},
setTagging: (state, tagging) => {
state.tagging = tagging;
},
/* END Streamed fields */
setSuggestionsSearch: (state, suggestionsSearch) => {
state.suggestionsSearch = suggestionsSearch;
},
setSuggestionsStatus: (state, status) => {
state.suggestionsStatus = status;
},
setSuggestionsSearchStatus: (state, status) => {
state.suggestionsSearchStatus = status;
},
setExcludedResultIds: (state, resultIds) => {
state.excludeOptions.resultIds = resultIds;
},
setQuery,
setParams(state, params) {
state.params = params;
},
setOrigin(state, origin = null) {
state.origin = origin;
},
resetAiState(state) {
Object.assign(state, resettableAiState());
},
setAiRelatedTags(state, relatedTags) {
state.relatedTags = relatedTags;
},
setSelectedFilters(state, selectedFilters) {
state.selectedFilters = groupItemsBy(selectedFilters, filter => isFacetFilter(filter) ? filter.facetId : UNKNOWN_FACET_KEY);
},
setSearchTotalResults(state, totalResults) {
state.searchTotalResults = totalResults;
},
setConfig,
mergeConfig,
},
actions: {
fetchAndSaveAiSuggestions,
fetchAndSaveAiSuggestionsSearch,
setUrlParams,
saveOrigin,
},
};
/**
* Function to return the "resettable" part of the state. This will be used in the `resetState`
* mutation to reset to the initial state.
*
* @returns The "resettable" part of the {@link AiState}.
*
* @internal
*/
function resettableAiState() {
return {
queries: [],
tagging: undefined,
suggestionsSearch: [],
suggestionsStatus: 'initial',
suggestionsSearchStatus: 'initial',
};
}
export { aiXStoreModule };
//# sourceMappingURL=module.js.map