{"version":3,"file":"5197.js?id=69ada90033793399","mappings":"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","sources":["webpack://website-js/./src/components/product-table/ProductTableHeaderItem.vue?216a","webpack://website-js/./src/models/Filter.ts","webpack://website-js/./src/utils/DOMUtils.ts","webpack://website-js/./src/components/product-table/ProductTableHeaderItem.vue","webpack://website-js/./src/components/product-table/ProductTableHeaderItem.vue?1a73","webpack://website-js/./src/components/product-table/ProductTableHeaderItem.vue?c3ea","webpack://website-js/./src/components/product-table/ProductTableHeaderItem.vue?7c07","webpack://website-js/./src/components/product-table/ProductTableHeaderItem.vue?51e2"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.product-table-header-item{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding-right:5px;position:relative}.product-table-header-item .uk-icon{flex:none;display:flex;align-items:center;justify-content:flex-end}.product-table-header-item .progress-linear{position:absolute;left:-10px;top:-10px;right:-10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import DropdownItem from './DropdownItem';\nimport { ProductSearchResultProduct } from './Product';\n\nexport interface FilterModel {\n rootcategory?: string;\n categories?: string[];\n includedescendantcategories?: boolean;\n fields?: FilterModelField[];\n preselections?: FilterRequestSelection[];\n selections?: FilterRequestSelection[];\n offset?: number;\n count?: number;\n searchphrase?: string;\n totalcount?: number;\n hitcount?: number;\n hits?: FilterModelHit[];\n sortoptions?: SortOption[];\n restrictdoctypes?: string[];\n translations?: { [key: string]: string };\n usefuzzymatch?: boolean;\n usecontentrelationsasselection?: boolean;\n contentrelationnodeid?: string;\n}\n\nexport interface FilterModelHit {\n id: string;\n docId: number;\n title: string;\n score: number;\n fields: { [key: string]: string[] };\n metadata: HitMetaData;\n type: string;\n}\n\nexport interface HitMetaData {\n id: string;\n title: string;\n image: string;\n url: string;\n product: ProductSearchResultProduct;\n relatedid?: string;\n}\n\nexport interface FieldValueOption {\n value: string;\n label?: string;\n count: number;\n}\n\nexport interface FilterRequestSelection {\n path: string;\n label?: string;\n values?: string[];\n minvalue?: number | null;\n maxvalue?: number | null;\n}\n\nexport interface FilterModelField {\n path: string;\n type: CustomIndexConfigFieldType;\n label?: string;\n values?: FieldValueOption[];\n treevalues?: any;\n minvalue?: number | null;\n maxvalue?: number | null;\n minmaxvatrate?: number | null;\n maxcount?: number | null;\n}\n\nexport interface SortOption {\n field: string;\n reverse: boolean;\n type?: SortOptionType;\n}\n\nexport enum SortOptionType {\n SCORE = 0,\n DOC = 1,\n STRING = 3,\n INT = 4,\n FLOAT = 5,\n LONG = 6,\n DOUBLE = 7,\n SHORT = 8,\n CUSTOM = 9,\n BYTE = 10,\n STRING_VAL = 11,\n}\n\nexport interface ProductListOptions {\n sortoptions: DropdownItem[];\n selectedsortoption: string;\n pagelimitoptions: number[];\n selectedpagelimitoption: number;\n}\n\nexport enum CustomIndexConfigFieldType {\n OTHER = 'OTHER', // -1,\n STRING = 'STRING', // 0,\n NUMBER = 'NUMBER', // 1,\n DATE = 'DATE', // 2,\n LIST = 'LIST', // 3\n TREE = 'TREE', // 4\n BOOLEAN = 'BOOLEAN', // 5\n STRING_LOCALIZABLE = 'STRING_LOCALIZABLE', // 6\n}\n","import axios, { AxiosResponse } from \"axios\";\nimport Vue from 'vue';\n\nexport function getScrollbarWidth() {\n if ((window as any).cbxScrollbarWidth) { return (window as any).cbxScrollbarWidth; }\n\n\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n // @ts-ignore\n outer.style.msOverflowStyle = \"scrollbar\"; // needed for WinJS apps\n\n document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n\n // add innerdiv\n const inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n\n // remove divs\n outer.parentNode.removeChild(outer);\n\n return (window as any).cbxScrollbarWidth = widthNoScroll - widthWithScroll;\n}\n\nexport async function replaceContent(identifier: string, callback: () => void = null, dataCallback: (data: any) => void = null) {\n try {\n // fetch current location and replace the relevant section with remote content\n const resp: AxiosResponse = await axios.get(window.location.href);\n const targetContainer = document.querySelector(identifier);\n // create ephemeral container for complete html response\n const vueContainer = document.createElement('div');\n vueContainer.innerHTML = resp.data;\n if (typeof dataCallback === 'function')\n dataCallback(vueContainer);\n // extract section of interest and replace into target container\n const data = vueContainer.querySelector(identifier);\n if (data !== null) {\n targetContainer.replaceWith(data);\n }\n else {\n while (targetContainer.firstChild) {\n targetContainer.removeChild(targetContainer.firstChild);\n }\n }\n // create separate vue instance with copied root stuff and mount to section\n const extended = Vue.extend((window as any).app);\n new extended({\n i18n: (window as any).app.$i18n,\n data: (window as any).app.$data,\n mounted: function() {\n this.$nextTick(function () {\n if (typeof callback === 'function')\n callback();\n })\n }\n }).$mount(document.querySelector(identifier));\n }\n catch {\n // in case replacement fails: reload the window\n (window as any).location.reload();\n }\n}","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"product-table-header-item\",class:{ 'selected': _vm.itemOption.selected },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.changeSortOrder.apply(null, arguments)}}},[(_vm.isLoading)?_c('div',{staticClass:\"progress-linear\"}):_vm._e(),_vm._t(\"default\"),_c('span',{attrs:{\"uk-icon\":`icon: ${_vm.icon}; ratio: .5`}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { SortOption, SortOptionType } from '@/models/Filter';\nimport ProductListFilterModule from '@/store/modules/ProductListFilterModule';\nimport { replaceContent } from '@/utils/DOMUtils';\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\ninterface ProductTableHeaderItemOption {\n selected: boolean;\n reverse: boolean;\n}\n\n@Component\nexport default class ProductTableHeaderItem extends Vue {\n @Prop({ type: String, required: true }) private fieldKey: string;\n \n isLoading: boolean = false;\n \n get icon(): string {\n if (this.itemOption.selected) {\n return this.itemOption.reverse ? 'fas-sort-up' : 'fas-sort-down';\n }\n return \"far-sort\";\n }\n\n get itemOption(): ProductTableHeaderItemOption {\n const qs = new URLSearchParams(window.location.search);\n const option: ProductTableHeaderItemOption = {\n selected: false,\n reverse: true,\n };\n\n if (qs.get(\"orderby\")) {\n const reverse = qs.get(\"orderby\").includes('desc');\n const field = qs.get(\"orderby\").replace('-desc', '').replace('-asc', '');\n if (field === this.fieldKey) {\n option.selected = true;\n option.reverse = reverse;\n }\n }\n return option;\n }\n\n async changeSortOrder() {\n ProductListFilterModule.RESET_PAGING();\n const qs = new URLSearchParams(window.location.search);\n this.isLoading = true;\n if (qs.get('page')) qs.delete('page');\n qs.set('orderby', `${this.fieldKey}-${!this.itemOption.reverse ? 'desc' : 'asc'}`);\n const newUrl = `${window.location.pathname}?${qs.toString()}`;\n window.history.pushState({}, '', newUrl);\n const payload: SortOption = {\n field: this.fieldKey,\n reverse: this.itemOption.reverse,\n type: SortOptionType.STRING,\n };\n ProductListFilterModule.SET_FILTER_SORT_OPTIONS([payload]);\n replaceContent('#product-list-container', () => {\n this.isLoading = false;\n },\n (data) => {\n try {\n const elem = data.querySelector('#product-filter');\n const nextPresetResult = elem?.getAttribute(\"preset-result\");\n if (nextPresetResult == null) throw new Error();\n ProductListFilterModule.SET_FILTER_RESULT(JSON.parse(nextPresetResult));\n } catch {\n ProductListFilterModule.GET_FILTER_RESULT();\n }\n });\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./ProductTableHeaderItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./ProductTableHeaderItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductTableHeaderItem.vue?vue&type=template&id=40d88e5d&\"\nimport script from \"./ProductTableHeaderItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductTableHeaderItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductTableHeaderItem.vue?vue&type=style&index=0&id=40d88e5d&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/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","// style-loader: Adds some css to the DOM by adding a