UNPKG

@empathyco/x-components

Version:
108 lines (105 loc) 3.48 kB
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