{"version":3,"file":"1169.js?id=4482d25d05f1d189","mappings":"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","sources":["webpack://website-js/./src/components/ProductListPaged.vue?abbf","webpack://website-js/./src/services/ProductListFilterService.ts","webpack://website-js/./src/store/modules/ProductListFilterModule.ts","webpack://website-js/./src/components/ProductListPaged.vue","webpack://website-js/./src/components/ProductListPaged.vue?06cb","webpack://website-js/./src/components/ProductListPaged.vue?6b0d","webpack://website-js/./src/components/ProductListPaged.vue?bec0","webpack://website-js/./src/components/ProductListPaged.vue?9177"],"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, `.spinner-container{padding:2rem;display:flex;flex-direction:column;align-items:center;justify-content:center}.product-list-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:15px;padding:15px 0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { CustomIndexConfig, FilterModel, IndexInfoModel } from '@/models/Filter';\r\nimport axios, { AxiosResponse } from 'axios';\r\n\r\nexport default class ProductListFilterService {\r\n    private profileId: string = (window as any).CbxApiContextKey;\r\n    private endpoint: string;\r\n    private workerEndpoint: string;\r\n    private productSearchEndpoint: string;\r\n\r\n    constructor(args: any = {}) {\r\n        if (args.profileId) this.profileId = args.profileId;\r\n        this.endpoint = `/contextapi/${this.profileId}/v1/facets`;\r\n        this.workerEndpoint = `/api/workers`;\r\n        this.productSearchEndpoint = `/contextapi/${this.profileId}/v1/product/productsearch`;\r\n    }\r\n\r\n    public async getFilterResult(payload: FilterModel): Promise<FilterModel> {\r\n        // remove unnecessary properties from the payload before sending\r\n        const p: FilterModel = {\r\n            categories: payload.categories,\r\n            rootcategory: payload.rootcategory,\r\n            count: payload.count,\r\n            offset: payload.offset,\r\n            searchphrase: payload.searchphrase,\r\n            selections: payload.selections,\r\n            sortoptions: payload.sortoptions,\r\n            restrictdoctypes: payload.restrictdoctypes,\r\n            includedescendantcategories: payload.includedescendantcategories,\r\n            fields: payload.fields,\r\n            usefuzzymatch: false,\r\n        };\r\n\r\n        if (payload.usecontentrelationsasselection) {\r\n            p.usecontentrelationsasselection = true;\r\n            p.contentrelationnodeid = payload.contentrelationnodeid;\r\n        }\r\n\r\n        try {\r\n            const res: AxiosResponse<FilterModel> = await axios.post(`${this.productSearchEndpoint}`, p);\r\n            return res.data;\r\n        } catch (e) {\r\n            return {};\r\n        }\r\n    }\r\n\r\n    public async getIndexInfo(): Promise<IndexInfoModel> {\r\n        try {\r\n            const res: AxiosResponse<IndexInfoModel> = await axios.get(`${this.endpoint}/getindexinfo`);\r\n            return res.data;\r\n        } catch (e) {\r\n            return {};\r\n        }\r\n    }\r\n\r\n    public async rebuildIndex(): Promise<boolean> {\r\n        try {\r\n            await axios.get(`${this.workerEndpoint}/startjob?job=consolidate-index`);\r\n            return true;\r\n        } catch (e) {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public async updateCustomConfig(payload: CustomIndexConfig): Promise<boolean> {\r\n        try {\r\n            await axios.post(`${this.endpoint}/updatecustomconfig`, payload);\r\n            return true;\r\n        } catch (e) {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    public async nukeIndex(): Promise<boolean> {\r\n        try {\r\n            await axios.get(`${this.workerEndpoint}/startjob?job=nuke-index`);\r\n            return true;\r\n        } catch (e) {\r\n            return false;\r\n        }\r\n    }\r\n}\r\n","import { Module, VuexModule, Mutation, getModule, Action } from 'vuex-module-decorators';\r\nimport store from '@/store';\r\nimport ProductListFilterService from '@/services/ProductListFilterService';\r\nimport MobileNavigationService from '@/services/MobileNavigationService';\r\nimport { FilterModel, FilterModelField, FilterRequestSelection, ProductListOptions, SortOption } from '@/models/Filter';\r\nimport { CbxVariablesModule } from './CbxVariablesModule';\r\nimport ProductService from '@/services/ProductService';\r\n\r\n@Module({\r\n    store,\r\n    dynamic: true,\r\n    name: 'productListFilter',\r\n    namespaced: true,\r\n})\r\nclass ProductListFilterModule extends VuexModule {\r\n    private svc: ProductListFilterService = new ProductListFilterService();\r\n    private mns: MobileNavigationService = new MobileNavigationService();\r\n    private productService: ProductService = new ProductService();\r\n    // @ts-ignore\r\n    private filterModel: FilterModel = {\r\n        rootcategory: null,\r\n        categories: CbxVariablesModule.VARIABLES.currentCategoryId.length\r\n            ? [CbxVariablesModule.VARIABLES.currentCategoryId]\r\n            : [],\r\n        fields: [],\r\n        hits: [],\r\n        selections: [],\r\n        searchphrase: '',\r\n        count: 20,\r\n        offset: 0,\r\n        hitcount: 0,\r\n        sortoptions: [],\r\n        restrictdoctypes: ['PRODUCT'],\r\n        includedescendantcategories: false,\r\n        usecontentrelationsasselection: false,\r\n        contentrelationnodeid: '',\r\n    };\r\n    private displayMobile: boolean = false;\r\n    private expandedField: FilterModelField = null;\r\n    private productListOptions: ProductListOptions = {\r\n        sortoptions: [],\r\n        selectedsortoption: '',\r\n        pagelimitoptions: [],\r\n        selectedpagelimitoption: 0,\r\n    };\r\n\r\n    private isLoading: boolean = false;\r\n\r\n    get IS_LOADING(): boolean {\r\n        return this.isLoading;\r\n    }\r\n    get FILTER_MODEL(): FilterModel {\r\n        return this.filterModel;\r\n    }\r\n\r\n    get DISPLAY_MOBILE(): boolean {\r\n        return this.displayMobile;\r\n    }\r\n\r\n    get EXPANDED_FIELD(): FilterModelField {\r\n        return this.expandedField;\r\n    }\r\n\r\n    get PRODUCT_LIST_OPTIONS(): ProductListOptions {\r\n        return CbxVariablesModule.VARIABLES.productListOptions;\r\n    }\r\n\r\n    @Action({ commit: 'SET_FILTER_RESULT' })\r\n    public async GET_FILTER_RESULT() {\r\n        this.setLoading(true);\r\n        return await this.svc.getFilterResult({ ...this.filterModel });\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_RESULT(payload: FilterModel) {\r\n        this.filterModel.fields = payload.fields;\r\n        this.filterModel.totalcount = payload.totalcount;\r\n        this.filterModel.hitcount = payload.hitcount;\r\n        this.filterModel.hits = payload.hits;\r\n        this.filterModel.translations = payload.translations;\r\n        this.isLoading = false;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_SELECTION(payload: FilterRequestSelection[]) {\r\n        this.filterModel.selections = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_FIELDS(payload: FilterModelField[]) {\r\n        this.filterModel.fields = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_CATEGORIES(payload: string[]) {\r\n        this.filterModel.categories = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_ROOT_CATEGORY(payload: string) {\r\n        this.filterModel.rootcategory = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_INCLUDE_DESCENDANT_CATEGORIES(payload: boolean) {\r\n        this.filterModel.includedescendantcategories = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_USE_CONTENT_RELATIONS(nodeid: string) {\r\n        this.filterModel.usecontentrelationsasselection = true;\r\n        this.filterModel.contentrelationnodeid = nodeid;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_SEARCH_PHRASE(payload: string) {\r\n        this.filterModel.searchphrase = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_FILTER_OFFSET(payload: number) {\r\n        this.filterModel.offset = payload;\r\n    }\r\n    @Mutation\r\n    public SET_FILTER_COUNT(payload: number) {\r\n        this.filterModel.count = payload;\r\n    }\r\n    @Mutation\r\n    public SET_FILTER_SORT_OPTIONS(payload: SortOption[]) {\r\n        this.filterModel.sortoptions = payload;\r\n    }\r\n\r\n    @Mutation\r\n    public REMOVE_SELECTION_VALUE(payload: any) {\r\n        const { fieldPath, fieldValue } = payload;\r\n        const existingFieldSelection = this.filterModel.selections.find(field => field.path === fieldPath);\r\n        const values = existingFieldSelection.values.filter(val => val !== fieldValue);\r\n        if (values.length === 0) {\r\n            this.filterModel = {\r\n                ...this.filterModel,\r\n                selections: this.filterModel.selections.filter(field => field.path !== fieldPath),\r\n            };\r\n        } else {\r\n            this.filterModel = {\r\n                ...this.filterModel,\r\n                selections: this.filterModel.selections.map(field => {\r\n                    if (field.path === fieldPath) {\r\n                        field.values = values;\r\n                    }\r\n                    return field;\r\n                }),\r\n            };\r\n        }\r\n    }\r\n\r\n    @Mutation\r\n    public REMOVE_SELECTION_GROUP(payload: any) {\r\n        this.filterModel.selections = this.filterModel.selections.filter(field => field.path !== payload);\r\n    }\r\n\r\n    @Action({ commit: 'SET_MOBILE_FILTER_DISPLAY' })\r\n    public TOGGLE_MOBILE_FILTER_DISPLAY() {\r\n        this.mns.handleBodyOverflow(this.displayMobile);\r\n        return this.displayMobile;\r\n    }\r\n\r\n    @Mutation\r\n    private SET_MOBILE_FILTER_DISPLAY(payload: boolean) {\r\n        this.displayMobile = !payload;\r\n    }\r\n\r\n    @Action({ commit: 'SET_CLEAR_FILTERS' })\r\n    public async CLEAR_FILTERS(includeSearchPhrase: boolean = true) {\r\n        return includeSearchPhrase;\r\n    }\r\n\r\n    @Mutation\r\n    private SET_CLEAR_FILTERS(includeSearchPhrase: boolean = true) {\r\n        this.filterModel.selections = [];\r\n        if (includeSearchPhrase)\r\n            this.filterModel.searchphrase = '';\r\n    }\r\n\r\n    @Action({ commit: 'SET_EXPANDED_FIELD' })\r\n    public async EXPAND_FIELD(payload: FilterModelField) {\r\n        return payload;\r\n    }\r\n\r\n    @Mutation\r\n    private SET_EXPANDED_FIELD(payload: FilterModelField) {\r\n        this.expandedField = payload;\r\n    }\r\n\r\n    @Action({ commit: 'SET_LOADING' })\r\n    private async setLoading(payload: boolean) {\r\n        return payload;\r\n    }\r\n    @Mutation\r\n    private SET_LOADING(payload: boolean) {\r\n        this.isLoading = payload;\r\n    }\r\n}\r\n\r\nexport default getModule(ProductListFilterModule);\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"uk-container uk-container-large uk-margin\"},[_c('div',{staticStyle:{\"min-height\":\"44px\"}},[_c('div',{staticClass:\"progress-linear\",attrs:{\"id\":\"product-filter-spinner\"}}),_c('ProductListFilter',{attrs:{\"filterPreset\":_vm.filterPreset},on:{\"sortingOptionUpdated\":_vm.handleListUpdate,\"pagingUpdated\":_vm.handleListUpdate,\"filterSearchPhraseUpdated\":_vm.handleListUpdate,\"filterSelectionsUpdated\":_vm.handleListUpdate}}),_c('ProductListFilterMobile',{attrs:{\"filterPreset\":_vm.filterPreset}})],1),_c('Transition',{attrs:{\"enter-active-class\":\"animate__animated animate__fadeIn\",\"leave-active-class\":\"animate__animated animate__fadeOut\"}},[(_vm.hits.length > 0 && !_vm.debouncedIsLoading)?_c('div',{staticClass:\"product-list-grid uk-padding-remove uk-margin-top\"},_vm._l((_vm.hits),function(hit){return _c('div',{key:hit.id,staticClass:\"uk-flex\"},[_c('ProductCard',{attrs:{\"product\":hit.metadata.product}})],1)}),0):_vm._e()]),_c('Transition',{attrs:{\"enter-active-class\":\"animate__animated animate__fadeIn\",\"leave-active-class\":\"animate__animated animate__fadeOut\"}},[(_vm.debouncedIsLoading)?_c('div',{staticClass:\"spinner-container\"},[_c('div',{attrs:{\"uk-spinner\":\"ratio: 1\"}})]):_vm._e()]),_c('ProductListFilterPagination')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator';\r\nimport { FilterModel, FilterModelHit } from '@/models/Filter';\r\nimport ProductListFilterModule from '@/store/modules/ProductListFilterModule';\r\nimport ProductCard from './utils/ProductCard.vue';\r\nimport { Debounce } from 'vue-debounce-decorator';\r\n\r\n@Component({\r\n    name: 'ProductList',\r\n    components: {\r\n        ProductCard,\r\n    },\r\n})\r\nexport default class ProductListPaged extends Vue {\r\n    @Prop({ type: Object, required: false }) private query: any;\r\n\r\n    private filterPreset: FilterModel = null;\r\n\r\n    private debouncedIsLoading: boolean = true;\r\n\r\n    get isLoading(): boolean {\r\n        return ProductListFilterModule.IS_LOADING;\r\n    }\r\n\r\n    get hits(): FilterModelHit[] {\r\n        return ProductListFilterModule.FILTER_MODEL.hits;\r\n    }\r\n\r\n    @Watch('isLoading')\r\n    @Debounce(200)\r\n    private onLoadingChange() {\r\n        this.debouncedIsLoading = this.isLoading;\r\n    }\r\n\r\n    private handleListUpdate() {\r\n        ProductListFilterModule.GET_FILTER_RESULT();\r\n    }\r\n\r\n    private created() {\r\n        this.filterPreset = {\r\n            fields: this.query.fields,\r\n            selections: this.query.selections,\r\n            includedescendantcategories: true,\r\n            usecontentrelationsasselection: this.query.usecontentrelationsasselection,\r\n            contentrelationnodeid: this.query.contentrelationnodeid,\r\n        };\r\n    }\r\n}\r\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!./ProductListPaged.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!./ProductListPaged.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductListPaged.vue?vue&type=template&id=3ae74310&\"\nimport script from \"./ProductListPaged.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductListPaged.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductListPaged.vue?vue&type=style&index=0&id=3ae74310&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 <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!../../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!./ProductListPaged.vue?vue&type=style&index=0&id=3ae74310&prod&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8f8a813c\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["___CSS_LOADER_EXPORT___","push","module","id","ProductListFilterService","constructor","args","_defineProperty","window","CbxApiContextKey","profileId","this","endpoint","workerEndpoint","productSearchEndpoint","async","payload","p","categories","rootcategory","count","offset","searchphrase","selections","sortoptions","restrictdoctypes","includedescendantcategories","fields","usefuzzymatch","usecontentrelationsasselection","contentrelationnodeid","res","axios","data","e","ProductListFilterModule","VuexModule","MobileNavigationService","ProductService","CbxVariablesModule","VARIABLES","currentCategoryId","length","hits","hitcount","selectedsortoption","pagelimitoptions","selectedpagelimitoption","IS_LOADING","isLoading","FILTER_MODEL","filterModel","DISPLAY_MOBILE","displayMobile","EXPANDED_FIELD","expandedField","PRODUCT_LIST_OPTIONS","productListOptions","setLoading","svc","getFilterResult","SET_FILTER_RESULT","totalcount","translations","SET_FILTER_SELECTION","SET_FILTER_FIELDS","SET_FILTER_CATEGORIES","SET_FILTER_ROOT_CATEGORY","SET_FILTER_INCLUDE_DESCENDANT_CATEGORIES","SET_FILTER_USE_CONTENT_RELATIONS","nodeid","SET_FILTER_SEARCH_PHRASE","SET_FILTER_OFFSET","SET_FILTER_COUNT","SET_FILTER_SORT_OPTIONS","REMOVE_SELECTION_VALUE","fieldPath","fieldValue","existingFieldSelection","find","field","path","values","filter","val","map","REMOVE_SELECTION_GROUP","TOGGLE_MOBILE_FILTER_DISPLAY","mns","handleBodyOverflow","SET_MOBILE_FILTER_DISPLAY","includeSearchPhrase","SET_CLEAR_FILTERS","SET_EXPANDED_FIELD","SET_LOADING","__decorate","Action","commit","Mutation","Module","store","dynamic","name","namespaced","getModule","render","_vm","_c","_self","_setupProxy","staticClass","staticStyle","attrs","filterPreset","on","handleListUpdate","debouncedIsLoading","_l","hit","key","metadata","product","_e","staticRenderFns","ProductListPaged","Vue","onLoadingChange","GET_FILTER_RESULT","created","query","Prop","type","Object","required","Watch","Debounce","Component","components","ProductCard","component","content","__esModule","default","locals","exports","add"],"sourceRoot":""}