{"version":3,"file":"search.store.js","sources":["../../../../../KNHS.Website.Frontend/script/vue/composables/usePostData.ts","../../../../../KNHS.Website.Frontend/script/vue/stores/search.store.ts"],"sourcesContent":["import { ref } from 'vue';\n\nexport async function usePostData(url: string, query: string) {\n const data = ref();\n const error = ref();\n try {\n const response = await fetch(url, {\n method: 'POST',\n mode: 'cors', // no-cors, *cors, same-origin\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\n credentials: 'same-origin', // include, *same-origin, omit\n headers: {\n 'Content-Type': 'application/json',\n // 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: JSON.stringify({ Query: query }),\n redirect: 'follow', // manual, *follow, error\n referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url\n });\n\n return response.json(); // parses JSON response into native JavaScript objects\n } catch (error) {\n console.error('error:', error);\n }\n\n return { data, error };\n}\n","import { defineStore } from 'pinia';\nimport { useFetch } from '../composables/useFetch';\nimport { usePostData } from '../composables/usePostData';\nimport { ISearchResult, IFilterGroup } from '../apps/search-app/model/search.models';\n\ninterface IState {\n error: string | null | unknown | boolean;\n filters: IFilterGroup[];\n loading: boolean;\n mobileFilterOverlayIsOpen: boolean;\n results: ISearchResult[];\n resetComponentState: boolean;\n page: number;\n searchSuggestions: string[] | null;\n query: string | null;\n searchParams: URLSearchParams | null;\n searchUrl: string;\n totalItems: number;\n url: URL | null;\n}\n\nexport const useSearchStore = defineStore('searchStore', {\n state: (): IState => {\n return {\n error: null,\n filters: [],\n loading: false,\n mobileFilterOverlayIsOpen: false,\n page: 0,\n query: '',\n results: [],\n resetComponentState: false,\n searchSuggestions: [],\n searchParams: null,\n searchUrl: '',\n totalItems: 0,\n url: null,\n };\n },\n getters: {\n getSearchSuggestions(state) {\n return state.searchSuggestions;\n },\n },\n actions: {\n clearSearchParams() {\n this.$state.results = [];\n this.$state.searchParams = new URLSearchParams();\n this.$state.searchUrl = '';\n this.$state.query = '';\n this.$state.resetComponentState = true;\n },\n incrementPage() {\n this.$state.page = this.$state.page + 1;\n },\n setFilters(filters: IFilterGroup[]) {\n this.$state.filters = filters;\n },\n setPage(page: number) {\n this.$state.page = page;\n },\n toggleMobileOverlay() {\n this.$state.mobileFilterOverlayIsOpen = !this.$state.mobileFilterOverlayIsOpen;\n },\n clearSearchSuggestions() {\n this.$state.searchSuggestions = [];\n },\n setSearchQuery(item: string | null) {\n this.$state.query = item;\n },\n async postSearchSuggestions(query: string) {\n this.loading = true;\n try {\n await usePostData('/umbraco/api/searchapi/SaveKeywordSearch', query);\n\n this.loading = false;\n } catch (err) {\n console.log('[ERROR]:', err);\n }\n },\n async fetchSearchSuggestions(query: string) {\n this.loading = true;\n try {\n const { data, error, isLoading } = await useFetch(\n '/umbraco/api/searchapi/GetSuggestions?query=' + query\n );\n\n if (data.value) {\n this.searchSuggestions = data.value;\n } else {\n this.searchSuggestions = [];\n }\n\n this.error = error.value;\n this.loading = isLoading.value;\n } catch (error) {\n console.log('[ERROR]:', error);\n }\n },\n async fetchSearchResults(query: string) {\n this.loading = true;\n try {\n const { data, error, isLoading } = await useFetch(\n `/umbraco/api/searchapi/GetSearchResults${query ? '?' + query : ''}`\n );\n\n if (data.value) {\n this.results = data.value.items;\n this.totalItems = data.value.totalItems;\n } else {\n this.results = [];\n this.totalItems = 0;\n }\n\n //this.page = 1;\n this.error = error.value;\n this.loading = isLoading.value;\n } catch (error) {\n console.log('[ERROR]:', error);\n }\n },\n async loadMore(searchUrl: string) {\n try {\n const { data, error, isLoading } = await useFetch(\n `/umbraco/api/searchapi/GetSearchResults${searchUrl ? '?' + searchUrl : ''}`\n );\n\n if (data.value) {\n this.results.push(...data.value.items);\n } else {\n this.results = [];\n }\n\n this.error = error.value;\n this.loading = isLoading.value;\n } catch (error) {\n console.log('[ERROR]:', error);\n }\n },\n },\n});\n"],"names":["usePostData","url","query","data","ref","error","useSearchStore","defineStore","state","filters","page","item","err","isLoading","useFetch","searchUrl"],"mappings":"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"}