@empathyco/x-components
Version:
Empathy X Components
148 lines (145 loc) • 4.98 kB
JavaScript
import { useStore } from 'vuex';
import '@vue/devtools-api';
import '../plugins/devtools/timeline.devtools.js';
import '@empathyco/x-utils';
import 'rxjs/operators';
import 'rxjs';
import '../plugins/devtools/colors.utils.js';
import '../plugins/x-bus.js';
import '../plugins/x-plugin.js';
import { getGetterPath } from '../plugins/x-plugin.utils.js';
/* eslint-disable ts/no-unsafe-return,ts/no-unsafe-member-access,ts/no-unsafe-assignment */
/**
* Creates an object containing the alias part of {@link XComponentAPI}.
*
* @returns An object containing the alias part of the {@link XComponentAPI}.
*
* @internal
*/
function useAliasApi() {
const queryModules = [
'facets',
'searchBox',
'nextQueries',
'querySuggestions',
'relatedTags',
'search',
];
const statusModules = [
'identifierResults',
'nextQueries',
'popularSearches',
'querySuggestions',
'recommendations',
'relatedTags',
'search',
];
const store = useStore();
const query = queryModules.reduce((acc, moduleName) => {
return Object.defineProperty(acc, moduleName, {
get() {
return store.state.x[moduleName]?.query ?? '';
},
enumerable: true,
});
}, {});
const status = statusModules.reduce((acc, moduleName) => {
return Object.defineProperty(acc, moduleName, {
get() {
return store.state.x[moduleName]?.status;
},
enumerable: true,
});
}, {});
return {
query,
status,
get device() {
return store.state.x.device?.name ?? null;
},
get facets() {
return store.getters[getGetterPath('facets', 'facets')] ?? {};
},
get historyQueries() {
return store.getters[getGetterPath('historyQueries', 'historyQueries')] ?? [];
},
get historyQueriesWithResults() {
return store.getters[getGetterPath('historyQueries', 'historyQueriesWithResults')] ?? [];
},
get fullHistoryQueries() {
return store.state.x.historyQueries?.historyQueries ?? [];
},
get isHistoryQueriesEnabled() {
return store.state.x.historyQueries?.isEnabled ?? false;
},
get fromNoResultsWithFilters() {
return store.state.x.search?.fromNoResultsWithFilters ?? false;
},
get identifierResults() {
return store.state.x.identifierResults?.identifierResults ?? [];
},
get searchBoxStatus() {
return store.state.x.searchBox?.inputStatus ?? undefined;
},
get isEmpathizeOpen() {
return store.state.x.empathize?.isOpen ?? false;
},
get nextQueries() {
return store.getters[getGetterPath('nextQueries', 'nextQueries')] ?? [];
},
get noResults() {
return store.state.x.search?.isNoResults ?? false;
},
get partialResults() {
return store.state.x.search?.partialResults ?? [];
},
get popularSearches() {
return store.state.x.popularSearches?.popularSearches ?? [];
},
get querySuggestions() {
return store.getters[getGetterPath('querySuggestions', 'querySuggestions')] ?? [];
},
get fullQuerySuggestions() {
return store.state.x.querySuggestions?.suggestions ?? [];
},
get recommendations() {
return store.state.x.recommendations?.recommendations ?? [];
},
get redirections() {
return store.state.x.search?.redirections ?? [];
},
get relatedTags() {
return store.getters[getGetterPath('relatedTags', 'relatedTags')] ?? [];
},
get results() {
return store.state.x.search?.results ?? [];
},
get scroll() {
return store.state.x.scroll?.data ?? {};
},
get selectedFilters() {
return store.getters[getGetterPath('facets', 'selectedFilters')] ?? [];
},
get selectedRelatedTags() {
return store.state.x.relatedTags?.selectedRelatedTags ?? [];
},
get semanticQueries() {
return store.state.x.semanticQueries?.semanticQueries ?? [];
},
get spellcheckedQuery() {
return store.state.x.search?.spellcheckedQuery ?? null;
},
get totalResults() {
return store.state.x.search?.totalResults ?? 0;
},
get selectedSort() {
return store.state.x.search?.sort ?? '';
},
get priceStats() {
return store.state.x.search?.stats?.price ?? {};
},
};
}
/* eslint-enable ts/no-unsafe-return,ts/no-unsafe-member-access,ts/no-unsafe-assignment */
export { useAliasApi };
//# sourceMappingURL=use-alias-api.js.map