{"version":3,"mappings":"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","names":["_sfc_main$7","value","getLocalizedValue","getValueWithoutSeparator","GET_MULTIPLE_BEST_PRICES","_sfc_main","id","unknownBestPrices","productCode","data","bestPrice","resolve","isDiy","isProfi","changes","filters","filter","element","oldFiltersLength","oldFacet","first","second","emit","__emit","onClick","TextInputFi","RangeSliderFi","decimalPlaces","newValue","newValueInput","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createVNode","_component_range_slider_fi","$options","$data","_createElementVNode","_component_text_input_fi","$props","_cache","SliderElement","vClickOutside","throttle","facets","sliderElement","name","absoluteMinValue","absoluteMaxValue","unit","lower","upper","associatedFieldName","newLower","newUpper","facet","_withDirectives","_Fragment","_renderList","_createBlock","_component_slider_element","FacetListFi","elements","elementInActualFacet","actualElement","newFacet","facetElement","_component_facet_list_fi","_ctx","FactFinderSliderFacet","FactFinderTextFacet","SelectFi","FactFinderFiteCheckboxFi","type","factFinderNgNameCleaner","idx","params","_hoisted_3","_toDisplayString","_component_fact_finder_fite_checkbox_fi","_component_select_fi","_createTextVNode","_createCommentVNode","_withCtx","_component_fact_finder_text_facet","_component_fact_finder_slider_facet","stringifyFilterValue","toFilterInput"],"ignoreList":[],"sources":["../../src/mixins/localizedValueMixin.vue","../../src/mixins/multiBestPriceMixin.vue","../../src/components/search-fact-finder-fi/autoFiltersMixin.vue","../../src/components/search-fact-finder-fi/fact-finder-fite-checkbox-fi/FactFinderFiteCheckboxFi.vue","../../src/components/search-fact-finder-fi/fact-finder-facet-fi/fact-finder-slider-facet/SliderElement.vue","../../src/components/search-fact-finder-fi/fact-finder-facet-fi/fact-finder-slider-facet/FactFinderSliderFacet.vue","../../src/components/search-fact-finder-fi/fact-finder-facet-fi/fact-finder-text-facet/FactFinderTextFacet.vue","../../src/components/search-fact-finder-fi/fact-finder-facet-fi/FactFinderFacetFi.vue","../../src/components/search-fact-finder-fi/stringifyFilterValue.js","../../src/components/search-fact-finder-fi/toFilterInput.js"],"sourcesContent":["<script lang=\"ts\">\nimport {\n getLocalizedValue,\n getValueWithoutSeparator,\n type LocalizedValueParam,\n} from 'composables/localizedValue';\n\nexport default {\n methods: {\n getLocalizedValue(value: LocalizedValueParam) {\n return getLocalizedValue(this.$fischer, value);\n },\n getValueWithoutSeparator(value: LocalizedValueParam) {\n return getValueWithoutSeparator(value);\n },\n },\n};\n</script>\n","<script>\nconst GET_MULTIPLE_BEST_PRICES = () => import('gql/getMultipleBestPrices.gql');\n\nexport default {\n data() {\n return {\n bestPrices: {},\n loadingPrices: false,\n pricesNotFound: false,\n throttle: 1000,\n };\n },\n computed: {\n productIds() {\n console.error('implement productIds');\n return [];\n },\n requiresPrices() {\n return this.productIds.filter((id) => this.bestPrices[id] === undefined);\n },\n },\n watch: {\n requiresPrices() {\n this.updatePriceRequests();\n },\n loadingPrices() {\n this.updatePriceRequests();\n },\n },\n methods: {\n async updatePriceRequests() {\n if (\n IS_SSR ||\n this.loadingPrices ||\n this.pricesNotFound ||\n !(this.$fischer.shop.isOnlineShop() || this.$fischer.shop.isClosedShop()) ||\n this.requiresPrices.length === 0\n ) {\n return;\n }\n try {\n this.loadingPrices = true;\n const unknownBestPrices = this.requiresPrices\n .slice(0, 20) // do not overload backend\n .map((productCode) => ({ productCode }));\n const { data } = await this.$apollo.query({\n query: (await GET_MULTIPLE_BEST_PRICES()).default,\n variables: {\n baseSiteId: this.$fischer.baseSiteId(),\n language: this.$fischer.siteLanguage(),\n userId: this.$fischer.user.id(),\n accessToken: this.$fischer.user.accessToken(),\n queries: unknownBestPrices,\n },\n });\n if (!data.getMultipleBestPrices) {\n console.error('Did not receive best prices');\n this.pricesNotFound = true;\n return;\n }\n data.getMultipleBestPrices.forEach((bestPrice) => {\n if (bestPrice) {\n this.bestPrices[bestPrice.productCode] = bestPrice;\n }\n });\n unknownBestPrices.forEach(({ productCode }) => {\n if (this.bestPrices[productCode] === undefined) {\n this.bestPrices[productCode] = null;\n }\n });\n } finally {\n await new Promise((resolve) => setTimeout(resolve, this.throttle)); // throttle and make sure requiresPrices is evalueated\n this.throttle = Math.min(3000, this.throttle + 200);\n this.loadingPrices = false;\n }\n },\n },\n};\n</script>\n","<script>\nexport default {\n data() {\n return {\n useAutoFilters: true,\n };\n },\n computed: {\n autoFilters() {\n if (this.filters.length === 0 && this.useAutoFilters) {\n const isDiy = this.$fischer.user.isDiy();\n const isProfi = this.$fischer.user.isProfi();\n if (isDiy && !isProfi) {\n return [\n {\n associatedFieldName: 'Profi / DIY_A',\n name: 'DIY~~~!Profi',\n displayField: 'Profi / DIY (DIY)',\n fakeValue: 'DIY',\n },\n ];\n }\n if (!isDiy && isProfi) {\n return [\n {\n associatedFieldName: 'Profi / DIY_A',\n name: 'Profi~~~!DIY',\n displayField: 'Profi / DIY (Profi)',\n fakeValue: 'Profi',\n },\n ];\n }\n }\n\n return null;\n },\n },\n methods: {\n applyChanges(...changes) {\n let filters = this.useAutoFilters\n ? (this.autoFilters || []).map((filter) => ({\n ...filter,\n name: filter.fakeValue || filter.name,\n }))\n : this.filters;\n\n changes.forEach(({ element, value }) => {\n // remove old filter if already active\n const oldFiltersLength = filters.length;\n filters = filters.filter(\n (oldFacet) => oldFacet.associatedFieldName !== element.associatedFieldName,\n );\n if (oldFiltersLength !== filters.length) {\n this.disableAutoFilters();\n }\n\n // add to active filters\n if (value) {\n filters.push(element);\n this.disableAutoFilters();\n }\n });\n\n if (!this.useAutoFilters) {\n // sort for better cache hits and consistent urls\n // there should not be too many filters, so performance overhead for localeCompare should not matter\n filters.sort((first, second) =>\n first.associatedFieldName.localeCompare(second.associatedFieldName),\n );\n\n this.filters = filters;\n }\n },\n\n enableAutoFilters() {\n this.useAutoFilters = true;\n },\n disableAutoFilters() {\n this.useAutoFilters = false;\n },\n },\n};\n</script>\n","<template>\n <div\n v-for=\"(element, index) in facet.elements\"\n :key=\"index\"\n role=\"radio\"\n :aria-checked=\"element.selected\"\n :class=\"{\n 'fact-finder-fite-checkbox-fi': true,\n 'fact-finder-fite-checkbox-fi--disabled': element.disabled,\n 'fact-finder-fite-checkbox-fi--selected': element.selected,\n }\"\n @click.capture.stop=\"onClick(element)\"\n >\n <label\n class=\"fact-finder-fite-checkbox-fi__label\"\n :class=\"{\n 'fact-finder-fite-checkbox-fi__label-selected': element.selected,\n 'fact-finder-fite-checkbox-fi__label-disabled': element.disabled,\n }\"\n >\n {{ element.text }} {{ facet.unit }}\n <icon-fi\n :icon=\"element.selected ? 'radio-btn-on' : 'radio-btn-off'\"\n :class=\"{\n 'fact-finder-fite-checkbox-fi__checkbox': true,\n 'fact-finder-fite-checkbox-fi__checkbox--disabled': element.disabled,\n }\"\n />\n </label>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { IconFi } from 'atoms/index';\n\nimport type {\n Facet,\n FacetChange,\n FacetElement,\n} from '../fact-finder-facet-fi/fact-finder-facet-type';\n\nconst emit = defineEmits<{\n change: [FacetChange];\n}>();\n\ndefineProps<{\n facet: Facet;\n}>();\n\nconst onClick = (element: FacetElement) => {\n if (element.disabled) {\n return;\n }\n emit('change', { element: element, value: !element.selected });\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import './fact-finder-fite-checkbox-fi';\n</style>\n","<template>\n <div class=\"slider-element\">\n <range-slider-fi\n class=\"fi-px-6\"\n :min=\"minValue\"\n :max=\"maxValue\"\n :value=\"[lower, upper]\"\n :disabled=\"disabled\"\n :interval=\"interval\"\n @drag-end=\"onDragEndSlider\"\n @change=\"onChangeSlider\"\n />\n <div class=\"slider-element__text-input\">\n <text-input-fi\n :model-value=\"lowerAsString\"\n :label=\"`[${group.unit}]`\"\n :disabled=\"disabled\"\n :min=\"minValue\"\n :max=\"maxValue\"\n data-test=\"range-value-lower\"\n show-localized-values\n @change=\"onInputLower\"\n />\n <div class=\"fi-px-12\">-</div>\n <text-input-fi\n :model-value=\"upperAsString\"\n :label=\"`[${group.unit}]`\"\n :disabled=\"disabled\"\n :min=\"minValue\"\n :max=\"maxValue\"\n data-test=\"range-value-upper\"\n show-localized-values\n @change=\"onInputUpper\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport { RangeSliderFi, TextInputFi } from 'atoms';\n\nexport default {\n name: 'SliderElement',\n components: {\n TextInputFi,\n RangeSliderFi,\n },\n props: {\n element: {\n type: Object,\n default: () => ({}),\n },\n group: {\n type: Object,\n default: () => ({}),\n },\n },\n emits: ['change'],\n data() {\n return {\n lower: 0,\n upper: 0,\n };\n },\n computed: {\n lowerAsString: {\n get() {\n return String(this.lower);\n },\n set(value) {\n this.lower = Number(value);\n },\n },\n upperAsString: {\n get() {\n return String(this.upper);\n },\n set(value) {\n this.upper = Number(value);\n },\n },\n disabled() {\n return this.element.disabled || this.minValue + 1 >= this.maxValue;\n },\n minValue() {\n return Math.floor(Number(this.element.absoluteMinValue));\n },\n maxValue() {\n return Math.ceil(Number(this.element.absoluteMaxValue));\n },\n interval() {\n const { decimalPlaces } = this.group;\n if (!decimalPlaces) {\n return 1;\n }\n return 10 ** -decimalPlaces;\n },\n },\n created() {\n // select rounded values when fact-finder returns default outer ranges\n this.lower =\n this.element.selectedMinValue === this.element.absoluteMinValue\n ? this.minValue\n : Number(this.element.selectedMinValue);\n this.upper =\n this.element.selectedMaxValue === this.element.absoluteMaxValue\n ? this.maxValue\n : Number(this.element.selectedMaxValue);\n },\n methods: {\n onDragEndSlider(newValue) {\n if (!newValue?.length) {\n console.error('invalid newValue', newValue);\n return;\n }\n [this.lower, this.upper] = newValue;\n this.$emit('change');\n },\n onChangeSlider(newValue) {\n [this.lower, this.upper] = newValue;\n },\n onInputLower(newValueInput) {\n const newValue = Number(newValueInput);\n\n if (\n Number.isNaN(newValue) ||\n !Number.isInteger(newValue) ||\n newValue < this.minValue ||\n newValue > this.maxValue ||\n newValue > this.upper\n ) {\n return;\n }\n\n this.lower = newValue;\n this.$emit('change');\n },\n onInputUpper(newValueInput) {\n const newValue = Number(newValueInput);\n\n if (\n newValueInput === '' ||\n Number.isNaN(newValue) ||\n !Number.isInteger(newValue) ||\n newValue > this.maxValue ||\n newValue < this.minValue ||\n newValue < this.lower\n ) {\n return;\n }\n\n this.upper = newValue;\n this.$emit('change');\n },\n },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './slider-element';\n</style>\n","<template>\n <div\n v-click-outside=\"onClickOutside\"\n class=\"fact-finder-slider-facet\"\n >\n <slider-element\n v-for=\"element in elements\"\n :key=\"element.name\"\n ref=\"sliderElement\"\n :element=\"element\"\n :group=\"group\"\n @change=\"onChange\"\n />\n </div>\n</template>\n\n<script>\nimport vClickOutside from 'click-outside-vue3';\nimport { throttle } from 'throttle-debounce';\n\nimport SliderElement from './SliderElement';\n\nexport default {\n name: 'FactFinderSliderFacet',\n components: {\n SliderElement,\n },\n directives: {\n clickOutside: vClickOutside.directive,\n },\n props: {\n group: {\n type: Object,\n default: () => ({}),\n },\n },\n emits: ['change'],\n data() {\n return {\n elements: [],\n };\n },\n created() {\n // NOTE: elements will not be reactive, since it changes when a value updates, thus re-creating the slider and resetting its values\n this.elements = this.group.elements;\n },\n methods: {\n onClickOutside() {\n if (this.changeThrottle) {\n this.changeThrottle.cancel();\n }\n this.onApply();\n },\n onChange() {\n if (!this.changeThrottle) {\n this.changeThrottle = throttle(400, async () => {\n this.onApply();\n });\n }\n\n this.changeThrottle();\n },\n onApply() {\n const facets = this.$refs.sliderElement\n .map((sliderElement) => {\n const {\n element: { name, absoluteMinValue, absoluteMaxValue, unit },\n lower,\n upper,\n } = sliderElement;\n const { associatedFieldName } = this.group;\n\n const newLower = String(lower);\n const newUpper = String(upper);\n\n if (\n Number(lower) <= Number(absoluteMinValue) &&\n Number(upper) >= Number(absoluteMaxValue)\n ) {\n return {\n value: false,\n element: {\n name,\n associatedFieldName,\n selected: false,\n absoluteMinValue,\n absoluteMaxValue,\n unit,\n },\n };\n }\n\n return {\n value: true,\n element: {\n name,\n associatedFieldName,\n selected: true,\n selectedMinValue: newLower,\n selectedMaxValue: newUpper,\n },\n };\n })\n .filter((facet) => facet !== null);\n if (facets.length) {\n this.$emit('change', ...facets);\n }\n },\n },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './fact-finder-slider-facet';\n</style>\n","<template>\n <facet-list-fi\n ref=\"facet\"\n :name=\"facet.name\"\n :elements=\"elements\"\n :unit=\"facet.unit\"\n class=\"fact-finder-text-facet\"\n @close=\"$emit('close')\"\n @change=\"change\"\n @clear-selection=\"clearSelection\"\n />\n</template>\n\n<script>\nimport { FacetListFi } from 'atoms';\n\nexport default {\n name: 'FactFinderTextFacet',\n components: {\n FacetListFi,\n },\n props: {\n facet: {\n type: Object,\n default: () => ({}),\n },\n unselectedFacet: {\n type: Object,\n default: null,\n },\n },\n emits: ['close', 'change'],\n computed: {\n elements() {\n const { elements } = this.unselectedFacet || this.facet;\n return elements.map((element) => ({\n name: element.text,\n key: `${element.text}${this.unselectedFacet ? '_r' : ''}`,\n associatedFieldName: this.facet.associatedFieldName,\n selected: this.isChecked(element),\n count: element.totalHits,\n disabled: element.disabled, // TODO\n }));\n },\n },\n methods: {\n close() {\n if (this.$refs.facet) {\n this.$refs.facet.close();\n } else {\n this.$emit('close');\n }\n },\n clearSelection() {\n this.facet.elements.forEach((element) => {\n this.$emit('change', {\n value: false,\n element: {\n ...element,\n selected: false,\n },\n });\n });\n this.close();\n },\n isChecked(element) {\n if (element.selectedBool) {\n return true;\n }\n if (this.unselectedFacet) {\n const elementInActualFacet = this.facet.elements.find(\n (actualElement) => actualElement.text === element.text,\n );\n return elementInActualFacet?.selectedBool;\n }\n\n return false;\n },\n isEnabled(element) {\n if (this.unselectedFacet) {\n return this.facet.elements.some((actualElement) => actualElement.name === element.name);\n }\n\n return element.recordCount > 0;\n },\n change({ value, element }) {\n const newFacet = {\n name: this.facet.name,\n elements: [\n ...this.facet.elements.filter(\n (facetElement) => facetElement.selected && facetElement.name !== element.name,\n ),\n ],\n };\n if (value) {\n newFacet.elements.push({\n associatedFieldName: element.associatedFieldName,\n name: element.name,\n selected: true,\n });\n }\n\n this.$emit('change', {\n value,\n element: {\n associatedFieldName: element.associatedFieldName,\n name: element.name,\n selected: value,\n },\n });\n this.close();\n },\n },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import './fact-finder-text-facet';\n</style>\n","<template>\n <select-fi\n v-if=\"!isFite\"\n class=\"fact-finder-facet-fi\"\n :open=\"open\"\n :name=\"name\"\n :disabled=\"facet.disabled\"\n :mobile-inline=\"isSliderFacet\"\n large\n @toggle-open=\"toggleOpen\"\n @close=\"$emit('close')\"\n @change=\"(...params) => $emit('change', ...params)\"\n >\n <template #selectionMobile>\n <template v-if=\"facet.type === 'TEXT'\">\n <template v-for=\"element in facet.elements\">\n <template v-if=\"element.selected\">\n {{ element.text }}\n </template>\n </template>\n </template>\n <template v-else>\n <template v-for=\"element in facet.elements\">\n <span\n v-if=\"element.selected\"\n :key=\"element.name\"\n >\n {{ element.selectedMinValue }} {{ facet.unit }} - {{ element.selectedMaxValue }}\n {{ facet.unit }}\n </span>\n </template>\n </template>\n </template>\n <fact-finder-text-facet\n v-if=\"facet.type === 'TEXT'\"\n :facet=\"facet\"\n @change=\"onChange\"\n @close=\"onClose\"\n />\n <fact-finder-slider-facet\n v-else-if=\"isSliderFacet\"\n :group=\"facet\"\n @change=\"onChange\"\n @close=\"onClose\"\n />\n <div v-else>{{ facet.name }} {{ facet.type }}</div>\n </select-fi>\n\n <div\n v-else\n class=\"fact-finder-facet-fi\"\n >\n <div class=\"fact-finder-facet-fi__label\">\n {{ name }}\n </div>\n <fact-finder-fite-checkbox-fi\n :facet=\"facet\"\n @change=\"onChange\"\n />\n </div>\n</template>\n\n<script>\nimport { SelectFi } from 'atoms';\nimport factFinderNgNameCleaner from 'components/search-fact-finder-fi/factFinderNgNameCleaner';\n\nimport FactFinderFiteCheckboxFi from '../fact-finder-fite-checkbox-fi/FactFinderFiteCheckboxFi';\nimport FactFinderSliderFacet from './fact-finder-slider-facet/FactFinderSliderFacet';\nimport FactFinderTextFacet from './fact-finder-text-facet/FactFinderTextFacet';\n\nexport default {\n name: 'FactFinderFacetFi',\n components: {\n FactFinderSliderFacet,\n FactFinderTextFacet,\n SelectFi,\n FactFinderFiteCheckboxFi,\n },\n props: {\n facet: {\n type: Object,\n required: true,\n },\n open: {\n type: Boolean,\n },\n idx: {\n type: Number,\n default: null,\n },\n registerDomElement: {\n type: Function,\n default: null,\n },\n },\n emits: ['change', 'close', 'toggle-open'],\n data() {\n return {\n wrapperStyle: {},\n internalOpen: false,\n };\n },\n computed: {\n isSliderFacet() {\n const {\n facet: { type },\n } = this;\n return ['FLOAT', 'INTEGER'].includes(type);\n },\n name() {\n return factFinderNgNameCleaner(this.facet.name);\n },\n },\n watch: {\n idx(newValue) {\n this.registerElement(newValue);\n },\n },\n mounted() {\n this.registerElement(this.idx);\n },\n methods: {\n registerElement(idx) {\n if (idx === 0 && this.registerDomElement) {\n this.registerDomElement(this.$el);\n }\n },\n onClose() {\n this.$emit('close');\n },\n toggleOpen() {\n this.$emit('toggle-open');\n },\n onChange(...params) {\n this.$emit('change', ...params);\n },\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import './fact-finder-facet-fi-unscoped';\n</style>\n","export default (filter) => {\n if (filter.selectedMaxValue) {\n return `${filter.selectedMinValue}-${filter.selectedMaxValue}`;\n }\n return filter.name || filter.text;\n};\n","export default (filter) => {\n if (filter.selectedMaxValue) {\n return {\n associatedFieldName: filter.associatedFieldName,\n selectedMinValue: filter.selectedMinValue,\n selectedMaxValue: filter.selectedMaxValue,\n };\n }\n return {\n associatedFieldName: filter.associatedFieldName,\n name: filter.name,\n };\n};\n"],"file":"assets/toFilterInput-HMx3i2fY.js"}