{"version":3,"file":"js/app.acb8f6f13d9b0042208b.js","mappings":"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","sources":["webpack:///./resources/area/web/default/js/components/SearchForm.vue?0532","webpack:///./resources/area/web/default/js/components/SearchForm.vue","webpack:///./resources/area/web/default/js/components/SearchForm.vue?7627","webpack:///./resources/area/web/default/js/components/SearchForm.vue?440a"],"sourcesContent":["\nimport {Component, Vue} from 'vue-property-decorator';\n\n@Component({\n name: 'search-form',\n components: {\n AutocompleteCategoryResults: () => import('./search/AutocompleteCategories.vue'),\n AutocompleteProductResults: () => import('./search/AutocompleteProducts.vue'),\n AutocompleteFilterResults: () => import('./search/AutocompleteFilters.vue'),\n AutocompleteKeywordResults: () => import('./search/AutocompleteKeywords.vue'),\n },\n directives: {\n 'click-outside': {\n bind(el, binding, vnode) {\n el.clickOutsideEvent = (event: Event) => {\n if ( ! (el === event.target || el.contains(event.target))) {\n vnode.context[binding.expression](false);\n }\n };\n document.body.addEventListener('click', el['clickOutsideEvent']);\n },\n unbind(el) {\n document.body.removeEventListener('click', el['clickOutsideEvent']);\n }\n }\n }\n})\n\nexport default class extends Vue {\n $refs!: {\n autocompleteForm: HTMLFormElement,\n input: HTMLFormElement,\n }\n\n private inputQuery: string = '';\n private typedQuery: string = '';\n\n protected autocompleteData: object = {};\n\n private _throttle: number;\n private autocompleteInitiated: boolean = false;\n private autocompleteLoading: boolean = false;\n private autocompleteRemove: boolean = false;\n private showAutocomplete: boolean = false;\n private mobileBreakpoint: number = 768;\n private windowWidth: number = window.innerWidth;\n private showSearchButton: boolean = true;\n private debounceDelay: number = 500;\n\n private created(): void {\n this.typedQuery = this.inputQuery;\n }\n\n private async triggerAutocomplete(useThrottle: boolean = true): Promise {\n const formData = new FormData(this.$refs.autocompleteForm);\n const searchQuery = formData.get('query');\n\n if ( ! useThrottle) {\n await this.fetchAutocompleteData(searchQuery.toString());\n return;\n }\n\n clearTimeout(this._throttle);\n this._throttle = window.setTimeout(async () => {\n\n await this.fetchAutocompleteData(searchQuery.toString());\n }, this.debounceDelay);\n }\n\n private async fetchAutocompleteData(searchQuery: string): Promise {\n this.autocompleteRemove = searchQuery.length > 0;\n\n if (searchQuery.length < 3) {\n this.showSearchButton = this.windowWidth > this.mobileBreakpoint;\n this.toggleAutocompleteDropdown(false);\n this.autocompleteLoading = false;\n return;\n }\n\n if (searchQuery === this.inputQuery) {\n this.toggleAutocompleteDropdown(true);\n this.autocompleteInitiated = true;\n return;\n }\n\n try {\n this.autocompleteLoading = true;\n const {data} = await this.$solarClient.get('api/search/autocomplete', {\n params: {query: searchQuery}\n });\n\n this.autocompleteData = data;\n this.inputQuery = searchQuery;\n } catch (e) {\n console.error(e);\n } finally {\n this.autocompleteInitiated = true;\n }\n\n this.toggleAutocompleteDropdown(true);\n this.autocompleteLoading = false;\n this.showSearchButton = true;\n }\n\n private get componentOrderMap(): object {\n return {\n 'keyword_results': 1,\n 'category_results': 2,\n 'filter_results': 3,\n 'product_results': 4,\n };\n }\n\n private get activeResultComponents(): Array {\n return Object.entries({...this.autocompleteData}).map(([key, value]) => {\n if ( ! value.hasOwnProperty('matches')) {\n return null;\n }\n\n return {\n component: `autocomplete-${key.replace(/_/g, '-')}`,\n order: this.componentOrderMap[key] || Object.keys(this.componentOrderMap).length + 1,\n props: {\n items: value\n }\n };\n }).filter((item) => item !== null && item['props']['items']['total_matches'] > 0).sort((a, b) => a['order'] - b['order']);\n }\n\n private clearSearchInput(): void {\n this.inputQuery = '';\n this.$refs.input.value = '';\n this.typedQuery = '';\n this.$refs.input.focus();\n this.autocompleteRemove = false;\n this.toggleAutocompleteDropdown(false);\n }\n\n private toggleAutocompleteDropdown(state: boolean = false): void {\n this.showAutocomplete = state;\n\n const backdropElement: HTMLElement = document.querySelector('.--backdrop');\n backdropElement.style.opacity = state ? '1' : '0';\n backdropElement.style.display = state ? 'block' : 'none';\n\n if (state) {\n document.body.classList.add('no-scroll');\n return;\n }\n\n document.body.classList.remove('no-scroll');\n }\n}\n","import { render, staticRenderFns } from \"./SearchForm.vue?vue&type=template&id=3f1a5bf1&\"\nimport script from \"./SearchForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchForm.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.toggleAutocompleteDropdown),expression:\"toggleAutocompleteDropdown\"}]},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"search__autocomplete\"},[_c('form',{ref:\"autocompleteForm\",attrs:{\"action\":\"search\",\"method\":\"get\"}},[_c('div',{staticClass:\"hexagon__input--gray\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.typedQuery),expression:\"typedQuery\"}],ref:\"input\",attrs:{\"name\":\"query\",\"placeholder\":_vm.$t('What are you looking for?').toString(),\"type\":\"search\",\"autocomplete\":\"off\"},domProps:{\"value\":(_vm.typedQuery)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.typedQuery=$event.target.value},function($event){$event.preventDefault();$event.stopPropagation();return _vm.triggerAutocomplete()}],\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.triggerAutocomplete(false)}}})]),_vm._v(\" \"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.autocompleteLoading),expression:\"autocompleteLoading\"}],staticClass:\"--loading\"},[_c('span',{staticClass:\"--spinner\"})]),_vm._v(\" \"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.autocompleteRemove && ! _vm.autocompleteLoading),expression:\"autocompleteRemove && ! autocompleteLoading\"}],staticClass:\"--remove\",on:{\"click\":function($event){return _vm.clearSearchInput()}}}),_vm._v(\" \"),(_vm.showSearchButton)?_c('button',{attrs:{\"type\":\"submit\",\"disabled\":! _vm.typedQuery.length}}):_vm._e()])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAutocomplete),expression:\"showAutocomplete\"}],staticClass:\"search__autocomplete_dropdown\"},[_vm._l((_vm.activeResultComponents),function(component,index){return _c(component['component'],_vm._b({key:index,tag:\"component\"},'component',component['props'],false))}),_vm._v(\" \"),(_vm.autocompleteInitiated && _vm.autocompleteData['total_matches'] === 0)?_c('span',{staticClass:\"no__results\"},[_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('No results found for {inputQuery}', {inputQuery: _vm.inputQuery}))+\"\\n \")])]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["Vue","inputQuery","typedQuery","autocompleteData","autocompleteInitiated","autocompleteLoading","autocompleteRemove","showAutocomplete","mobileBreakpoint","windowWidth","window","innerWidth","showSearchButton","debounceDelay","created","this","triggerAutocomplete","useThrottle","searchQuery","FormData","$refs","autocompleteForm","get","clearTimeout","_throttle","setTimeout","fetchAutocompleteData","toString","length","toggleAutocompleteDropdown","data","$solarClient","params","query","e","console","error","componentOrderMap","activeResultComponents","Object","entries","map","key","value","hasOwnProperty","component","replace","order","keys","props","items","filter","item","sort","a","b","clearSearchInput","input","focus","state","backdropElement","document","querySelector","style","opacity","display","body","classList","add","remove","Component","name","components","AutocompleteCategoryResults","AutocompleteProductResults","AutocompleteFilterResults","AutocompleteKeywordResults","directives","bind","el","binding","vnode","clickOutsideEvent","event","target","contains","context","expression","addEventListener","unbind","removeEventListener","render","_vm","_c","_self","_setupProxy","rawName","_t","_v","staticClass","ref","attrs","$t","domProps","on","$event","composing","preventDefault","stopPropagation","_e","_l","index","_b","tag","_s","staticRenderFns"],"sourceRoot":""}