{"version":3,"file":"use-therapists-filters-full-modal-NPkujFOS.js","sources":["../../../app/frontend/vue/src/app-containers/therapists-catalog/const/filed-names.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/const/therapy-types.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/const/fields-default-value.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/const/event-bus-keys.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/composables/use-therapists-page-url-params.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/composables/use-therapists-catalog-static-data.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/composables/use-therapists-filter-values.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/composables/use-therapists-catalog.js","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/therapy-type.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/questions.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/grades.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/methods.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/gender.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/age-ranges.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/years-of-experience-ranges.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/time-preferences.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/components/filters-full/fields/other-settings.vue","../../../app/frontend/vue/src/app-containers/therapists-catalog/composables/use-therapists-filters-full-modal.js"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const FIELDS_NAMES = {\n questionIds: 'question_ids',\n therapyMethods: 'therapy_methods',\n selectedSingleGradeIds: 'single_grade_ids',\n genders: 'genders',\n page: 'page',\n sorts: 'sorts',\n withAvailableSlots: 'with_available_slots',\n withVideoProfile: 'with_video_profile',\n therapyType: 'therapy_type',\n currency: 'currency',\n ageRanges: 'age_ranges',\n yearsOfExperienceRanges: 'years_of_experience_ranges',\n therapistTimeZone: 'therapist_time_zone',\n userTimeZone: 'user_time_zone',\n preferredDaysAndHours: 'days_and_hours',\n timeMode: 'time_mode',\n worksWithTeenagers: 'works_with_teenagers',\n};\n","// eslint-disable-next-line import/prefer-default-export\nexport const THERAPY_TYPES = {\n couple: 'couple',\n single: 'single',\n};\n","import { FIELDS_NAMES } from './filed-names';\nimport { THERAPY_TYPES } from './therapy-types';\n// eslint-disable-next-line import/prefer-default-export\nexport const FIELDS_DEFAULT_VALUE = {\n [FIELDS_NAMES.questionIds]: [],\n [FIELDS_NAMES.therapyMethods]: [],\n [FIELDS_NAMES.selectedSingleGradeIds]: [],\n [FIELDS_NAMES.genders]: [],\n [FIELDS_NAMES.page]: 1,\n [FIELDS_NAMES.withAvailableSlots]: true,\n [FIELDS_NAMES.withVideoProfile]: false,\n [FIELDS_NAMES.therapyType]: THERAPY_TYPES.single,\n [FIELDS_NAMES.ageRanges]: [],\n [FIELDS_NAMES.yearsOfExperienceRanges]: [],\n [FIELDS_NAMES.therapistTimeZone]: '',\n [FIELDS_NAMES.timeMode]: null,\n [FIELDS_NAMES.preferredDaysAndHours]: [],\n [FIELDS_NAMES.worksWithTeenagers]: false,\n};\n","// eslint-disable-next-line import/prefer-default-export\nexport const EVENT_BUS_KEYS = {\n THERAPISTS_CATALOG_URL_PARAMS: 'therapistsCatalogUrlParams',\n};\n","import { useUrlSearchParams, useEventBus } from '@vueuse/core';\nimport { EVENT_BUS_KEYS } from '../const';\n\nconst bus = useEventBus(EVENT_BUS_KEYS.THERAPISTS_CATALOG_URL_PARAMS);\n\nconst urlParams = useUrlSearchParams('history');\n\nfunction getParam(key) {\n return JSON.parse(urlParams[key] || null);\n}\n\nfunction setUrlParam(key, value) {\n urlParams[key] = JSON.stringify(value);\n bus.emit();\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport function useTherapistsPageUrlParams() {\n return {\n getParam,\n setUrlParam,\n urlParams,\n };\n}\n","import { computed } from 'vue';\nimport keyBy from 'lodash/keyBy';\n\nimport {\n useFetch, THERAPY_METHODS_PATH, QUESTIONS_PATH, GRADES_PATH, TIME_ZONE_LIST_PATH, USER_SIGNUP_PROFILE_PATH,\n} from '@front/composables/useFetch';\nimport { FIELDS_NAMES, THERAPY_TYPES } from '@front/app-containers/therapists-catalog/const';\n\nconst {\n isFetching: isTherapyMethodsFetching,\n data: therapyMethodsList,\n execute: fetchTherapyMethods,\n} = useFetch(THERAPY_METHODS_PATH, { immediate: false }).json();\n\nconst {\n isFetching: isQuestionsFetching,\n execute: fetchQuestions,\n data: questionsList,\n} = useFetch(QUESTIONS_PATH, { immediate: false }).json();\n\nconst {\n isFetching: isGradesFetching,\n execute: fetchGrades,\n data: gradesList,\n} = useFetch(GRADES_PATH, { immediate: false }).json();\n\nconst {\n isFetching: isTimezoneListFetching,\n execute: fetchTimezoneList,\n data: timezoneList,\n} = useFetch(TIME_ZONE_LIST_PATH, { immediate: false }).json();\n\nconst {\n execute: fetchUserProfileForm,\n data: userProfileForm,\n} = useFetch(USER_SIGNUP_PROFILE_PATH, { immediate: false }).json();\n\nconst gradesMappedById = computed(() => keyBy(gradesList.value || {}, 'id'));\nconst therapyMethodsMappedById = computed(() => keyBy(therapyMethodsList.value || {}, 'id'));\nconst questionsMappedById = computed(() => keyBy(questionsList.value || {}, 'id'));\n\nconst questionsListSingle = computed(() => questionsList.value?.filter((question) => question.therapy_type === THERAPY_TYPES.single));\nconst questionsListCouple = computed(() => questionsList.value?.filter((question) => question.therapy_type === THERAPY_TYPES.couple));\n\nconst GENDERS_LIST = [\n {\n id: 'male',\n title: 'Мужской',\n },\n {\n id: 'female',\n title: 'Женский',\n },\n];\n\nconst THERAPIST_AGES_LIST = [\n {\n title: 'До 25 лет',\n id: 'below_25',\n },\n {\n title: '25-35 лет',\n id: 'between_25_and_35',\n },\n {\n title: '35-45 лет',\n id: 'between_35_and_45',\n },\n {\n title: '45-55 лет',\n id: 'between_45_and_55',\n },\n {\n title: 'От 55 лет',\n id: 'above_55',\n },\n];\n\nconst THERAPY_TYPE_LIST = [\n {\n title: 'Индивидуальная',\n id: THERAPY_TYPES.single,\n },\n {\n title: 'Парная',\n id: THERAPY_TYPES.couple,\n },\n];\n\nconst THERAPIST_EXP_RANGES_LIST = [\n {\n title: 'Более 5 лет',\n id: 'more_than_5',\n },\n {\n title: 'Более 7 лет',\n id: 'more_than_7',\n },\n {\n title: 'Более 10 лет',\n id: 'more_than_10',\n },\n];\n\nconst OTHER_SETTINGS_LIST = [\n {\n title: 'Есть видеопрофиль',\n id: FIELDS_NAMES.withVideoProfile,\n },\n {\n title: 'Работает с подростками (16+)',\n id: FIELDS_NAMES.worksWithTeenagers,\n },\n {\n title: 'Без доступного времени',\n id: FIELDS_NAMES.withAvailableSlots,\n },\n];\n\nconst gradesListPrepared = computed(() => (gradesList.value || []).filter((grade) => grade.therapy_type === THERAPY_TYPES.single).map((grade) => ({\n ...grade,\n title: `${grade.price} ₽`,\n})));\n\n// eslint-disable-next-line import/prefer-default-export\nexport function useTherapistsCatalogStaticData() {\n return {\n fetchTherapyMethods,\n fetchQuestions,\n fetchGrades,\n fetchUserProfileForm,\n\n isTherapyMethodsFetching,\n isQuestionsFetching,\n isGradesFetching,\n\n gradesList,\n gradesMappedById,\n gradesListPrepared,\n\n userProfileForm,\n\n therapyMethodsList,\n therapyMethodsMappedById,\n\n questionsList,\n questionsListSingle,\n questionsListCouple,\n questionsMappedById,\n\n timezoneList,\n isTimezoneListFetching,\n fetchTimezoneList,\n\n GENDERS_LIST,\n THERAPIST_AGES_LIST,\n THERAPY_TYPE_LIST,\n THERAPIST_EXP_RANGES_LIST,\n OTHER_SETTINGS_LIST,\n };\n}\n","import { ref, computed } from 'vue';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport moment from 'moment-timezone';\n\nimport { THERAPY_TYPES } from '@front/app-containers/therapists-catalog/const';\nimport { FIELDS_NAMES } from '../const/filed-names';\n\nimport { useTherapistsPageUrlParams } from './use-therapists-page-url-params';\nimport { useTherapistsCatalogStaticData } from './use-therapists-catalog-static-data';\n\nconst { getParam, setUrlParam } = useTherapistsPageUrlParams();\nconst {\n questionsList, therapyMethodsList, gradesListPrepared,\n GENDERS_LIST, THERAPIST_AGES_LIST, THERAPY_TYPE_LIST,\n THERAPIST_EXP_RANGES_LIST, OTHER_SETTINGS_LIST,\n} = useTherapistsCatalogStaticData();\n\nconst fields = ref({\n [FIELDS_NAMES.questionIds]: getParam(FIELDS_NAMES.questionIds) || [],\n [FIELDS_NAMES.therapyMethods]: getParam(FIELDS_NAMES.therapyMethods) || [],\n [FIELDS_NAMES.selectedSingleGradeIds]: getParam(FIELDS_NAMES.selectedSingleGradeIds) || [],\n [FIELDS_NAMES.genders]: getParam(FIELDS_NAMES.genders) || [],\n [FIELDS_NAMES.page]: getParam(FIELDS_NAMES.page) || 1,\n [FIELDS_NAMES.sorts]: getParam(FIELDS_NAMES.sorts) || ['relevant'],\n [FIELDS_NAMES.withAvailableSlots]: getParam(FIELDS_NAMES.withAvailableSlots) ?? true,\n [FIELDS_NAMES.withVideoProfile]: getParam(FIELDS_NAMES.withVideoProfile) || false,\n [FIELDS_NAMES.therapyType]: getParam(FIELDS_NAMES.therapyType) || THERAPY_TYPES.single,\n [FIELDS_NAMES.currency]: 'rub',\n [FIELDS_NAMES.ageRanges]: getParam(FIELDS_NAMES.ageRanges) || [],\n [FIELDS_NAMES.yearsOfExperienceRanges]: getParam(FIELDS_NAMES.yearsOfExperienceRanges) || [],\n [FIELDS_NAMES.therapistTimeZone]: getParam(FIELDS_NAMES.therapistTimeZone) || '',\n [FIELDS_NAMES.userTimeZone]: getParam(FIELDS_NAMES.userTimeZone) || moment.tz.guess() || 'Europe/Moscow',\n [FIELDS_NAMES.timeMode]: getParam(FIELDS_NAMES.timeMode) || null,\n [FIELDS_NAMES.preferredDaysAndHours]: getParam(FIELDS_NAMES.preferredDaysAndHours) || [],\n [FIELDS_NAMES.worksWithTeenagers]: getParam(FIELDS_NAMES.worksWithTeenagers) ?? false,\n});\n\nconst fieldsApplied = ref(cloneDeep(fields.value));\n\nfunction getTherapyTypesChosen() {\n const field = fieldsApplied.value[FIELDS_NAMES.therapyType];\n\n if (field === THERAPY_TYPES.single) return [];\n\n return [THERAPY_TYPE_LIST.find((item) => item.id === THERAPY_TYPES.couple)];\n}\n\nfunction getTherapistTimeZoneChosen() {\n const fieldVal = fieldsApplied.value[FIELDS_NAMES.therapistTimeZone];\n\n if (!fieldVal) return [];\n\n return [{ title: fieldVal }];\n}\n\nfunction getPreferredTimeModChosen() {\n const fieldVal = fieldsApplied.value[FIELDS_NAMES.timeMode];\n let result = [];\n\n if (fieldVal === 'urgent') result = [{ title: 'Ближайшее время' }];\n if (fieldVal === 'specific') result = [{ title: 'Точное время' }];\n\n return result;\n}\n\nfunction getTherapistVideoProfileChosen() {\n const fieldVal = fieldsApplied.value[FIELDS_NAMES.withVideoProfile];\n\n if (!fieldVal) return [];\n\n return [{ title: OTHER_SETTINGS_LIST.find((item) => item.id === FIELDS_NAMES.withVideoProfile)?.title }];\n}\n\nconst getTherapistWithAvailableSlotsChosen = computed(() => {\n const fieldVal = fieldsApplied.value[FIELDS_NAMES.withAvailableSlots];\n\n if (fieldVal) return [];\n\n return [{ title: OTHER_SETTINGS_LIST.find((item) => item.id === FIELDS_NAMES.withAvailableSlots)?.title }];\n});\n\nconst getTherapistWorkWithTeenChosen = computed(() => {\n const fieldVal = fieldsApplied.value[FIELDS_NAMES.worksWithTeenagers];\n\n if (!fieldVal) return [];\n\n return [{ title: OTHER_SETTINGS_LIST.find((item) => item.id === FIELDS_NAMES.worksWithTeenagers)?.title }];\n});\n\nconst filtersChosenDashMap = computed(() => {\n const result = {\n [FIELDS_NAMES.questionIds]: questionsList.value?.filter((item) => fieldsApplied.value[FIELDS_NAMES.questionIds].includes(item.id)),\n [FIELDS_NAMES.therapyMethods]: therapyMethodsList.value?.filter((item) => fieldsApplied.value[FIELDS_NAMES.therapyMethods].includes(item.id)),\n [FIELDS_NAMES.selectedSingleGradeIds]: gradesListPrepared.value?.filter((item) => fieldsApplied.value[FIELDS_NAMES.selectedSingleGradeIds].includes(item.id)),\n [FIELDS_NAMES.genders]: GENDERS_LIST.filter((item) => fieldsApplied.value[FIELDS_NAMES.genders].includes(item.id)),\n [FIELDS_NAMES.ageRanges]: THERAPIST_AGES_LIST.filter((item) => fieldsApplied.value[FIELDS_NAMES.ageRanges].includes(item.id)),\n [FIELDS_NAMES.therapyType]: getTherapyTypesChosen(),\n [FIELDS_NAMES.yearsOfExperienceRanges]: THERAPIST_EXP_RANGES_LIST.filter((item) => fieldsApplied.value[FIELDS_NAMES.yearsOfExperienceRanges].includes(item.id)),\n [FIELDS_NAMES.therapistTimeZone]: getTherapistTimeZoneChosen(),\n [FIELDS_NAMES.timeMode]: getPreferredTimeModChosen(),\n [FIELDS_NAMES.withVideoProfile]: getTherapistVideoProfileChosen(),\n [FIELDS_NAMES.withAvailableSlots]: getTherapistWithAvailableSlotsChosen.value,\n [FIELDS_NAMES.worksWithTeenagers]: getTherapistWorkWithTeenChosen.value,\n };\n\n return result;\n});\n\nfunction setFieldsApplied(val) {\n fieldsApplied.value = cloneDeep(val);\n}\n\nfunction setSyncUrlParamsWithFields() {\n Object.keys(fields.value).forEach((key) => {\n setUrlParam(key, fields.value[key]);\n });\n}\n\nfunction setField(field, value) {\n fields.value[field] = value;\n}\n\nconst isCoupleTherapyTypeChosen = computed(() => fields.value[FIELDS_NAMES.therapyType] === THERAPY_TYPES.couple);\nconst isRubCurrencyChosen = computed(() => fields.value[FIELDS_NAMES.currency] === 'rub');\n\n// eslint-disable-next-line import/prefer-default-export\nexport function useTherapistsFilterValues() {\n return {\n fields,\n setField,\n setSyncUrlParamsWithFields,\n\n fieldsApplied,\n setFieldsApplied,\n\n filtersChosenDashMap,\n\n isCoupleTherapyTypeChosen,\n isRubCurrencyChosen,\n };\n}\n","import { ref, watch, computed } from 'vue';\nimport {\n useFetch,\n THERAPISTS_CATALOG_PATH,\n THERAPISTS_CATALOG_COUNT_PATH,\n THERAPIST_CATALOG_SEARCH_PRESET_PATH,\n} from '@front/composables/useFetch';\n\nimport { FIELDS_DEFAULT_VALUE, FIELDS_NAMES, THERAPY_TYPES } from '@front/app-containers/therapists-catalog/const';\nimport { useTherapistsFilterValues } from './use-therapists-filter-values';\n\nconst {\n fields, setFieldsApplied, setField, filtersChosenDashMap,\n} = useTherapistsFilterValues();\n\nconst therapistsCatalog = ref(null);\n\nconst locationPathName = ref(location.pathname);\n\nconst {\n isFetching: isTherapistsCatalogSearchPresetFetching,\n execute: fetchTherapistsCatalogSearchPreset,\n data: therapistsCatalogSearchPreset,\n} = useFetch(\n THERAPIST_CATALOG_SEARCH_PRESET_PATH,\n {\n immediate: false,\n afterFetch(ctx) {\n const { search_params, url_slug } = ctx.data.data.search_preset;\n const urlParams = new URLSearchParams(window.location.search);\n\n if (search_params && url_slug) {\n Object.keys(search_params).forEach((key) => {\n const urlParamValue = urlParams.get(key);\n\n // ставим значение из пресета, но только если его нет в урле\n if (!urlParamValue) setField(key, search_params[key]);\n });\n\n setFieldsApplied(fields.value);\n }\n\n return ctx;\n },\n },\n).post({ url_slug: location.pathname }).json();\n\nconst fieldVisibilitySettings = computed(() => therapistsCatalogSearchPreset.value?.data?.search_preset.field_visibility_settings || {});\n\nconst {\n abort: abortFetchTherapistsCatalog,\n isFetching: isTherapistsCatalogFetching,\n execute: exeFetchTherapistsCatalog,\n} = useFetch(\n THERAPISTS_CATALOG_PATH,\n {\n immediate: false,\n afterFetch(ctx) {\n therapistsCatalog.value = ctx.data;\n\n const urlSlugFromPreset = ctx.data.data.search_preset.url_slug;\n const presetPath = ctx.data.data.search_preset.preset_path;\n\n if (urlSlugFromPreset && presetPath) {\n history.pushState({}, null, presetPath);\n locationPathName.value = presetPath;\n }\n\n return ctx;\n },\n },\n).post(computed(() => ({ ...fields.value, url_slug: location.pathname, sticky: therapistsCatalogSearchPreset.value?.data?.search_preset.sticky }))).json();\n\nconst {\n isFetching: isTherapistsCatalogFetchingMore,\n execute: fetchMoreTherapistsCatalog,\n} = useFetch(\n THERAPISTS_CATALOG_PATH,\n {\n immediate: false,\n afterFetch(ctx) {\n const { therapists } = therapistsCatalog.value.data;\n\n therapistsCatalog.value.data.therapists = therapists.concat((ctx.data.data.therapists));\n\n return ctx;\n },\n },\n).post(fields.value).json();\n\nconst {\n abort: abortFetchTherapistsCatalogCount,\n execute: exeFetchTherapistsCatalogCount,\n data: therapistsCatalogCount,\n} = useFetch(\n THERAPISTS_CATALOG_COUNT_PATH,\n {\n immediate: false,\n },\n).post(fields.value).json();\n\nconst isPopupFiltersOpen = ref(false);\n\nconst setPopupFiltersOpen = (value) => {\n isPopupFiltersOpen.value = value;\n};\n\nasync function fetchTherapistsCatalog() {\n abortFetchTherapistsCatalog();\n setFieldsApplied(fields.value);\n await exeFetchTherapistsCatalog();\n}\n\nconst isTherapistsCatalogCountFetching = ref(false);\n\nfunction fetchTherapistsCatalogCount() {\n abortFetchTherapistsCatalogCount();\n isTherapistsCatalogCountFetching.value = true;\n\n exeFetchTherapistsCatalogCount().then((result) => {\n const wasAborted = result === null;\n\n if (wasAborted) {\n return;\n }\n\n isTherapistsCatalogCountFetching.value = false;\n });\n}\n\nwatch(fields, () => {\n fetchTherapistsCatalogCount();\n}, { deep: true });\n\nconst isAnyFilterChosen = computed(() => {\n let result = false;\n\n [\n FIELDS_NAMES.questionIds,\n FIELDS_NAMES.therapyMethods,\n FIELDS_NAMES.selectedSingleGradeIds,\n FIELDS_NAMES.ageRanges,\n FIELDS_NAMES.genders,\n FIELDS_NAMES.yearsOfExperienceRanges,\n ].forEach((key) => {\n if (fields.value[key].length > 0) result = true;\n });\n\n [\n FIELDS_NAMES.worksWithTeenagers,\n FIELDS_NAMES.withVideoProfile,\n FIELDS_NAMES.timeMode,\n ].forEach((key) => {\n if (fields.value[key]) result = true;\n });\n\n if (!fields.value[FIELDS_NAMES.withAvailableSlots]) result = true;\n\n if (fields.value[FIELDS_NAMES.therapyType] === THERAPY_TYPES.couple) result = true;\n\n return result;\n});\n\nconst filtersChosenDashShowed = computed(() => {\n let result = false;\n const hiddenFields = Object.keys(fieldVisibilitySettings.value).filter((key) => !fieldVisibilitySettings.value[key]);\n\n for (const key of Object.keys(filtersChosenDashMap.value)) {\n if (!hiddenFields.includes(key) && filtersChosenDashMap.value[key]?.length > 0) {\n result = true;\n }\n }\n\n return result;\n});\n\nfunction resetFields() {\n const payload = {\n ...FIELDS_DEFAULT_VALUE,\n [FIELDS_NAMES.sorts]: fields.value[FIELDS_NAMES.sorts],\n };\n\n // не очищаем поля, которые скрыты\n for (const key in payload) {\n if (!fieldVisibilitySettings.value[key]) delete payload[key];\n }\n\n Object.keys(payload).forEach((key) => {\n if (key in fields.value) {\n setField(key, payload[key]);\n }\n });\n\n setFieldsApplied(fields.value);\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport function useTherapistsCatalog() {\n return {\n isPopupFiltersOpen,\n setPopupFiltersOpen,\n\n fetchTherapistsCatalog,\n fetchMoreTherapistsCatalog,\n isTherapistsCatalogFetchingMore,\n therapistsCatalog,\n isTherapistsCatalogFetching,\n\n fetchTherapistsCatalogCount,\n therapistsCatalogCount,\n isTherapistsCatalogCountFetching,\n\n fetchTherapistsCatalogSearchPreset,\n therapistsCatalogSearchPreset,\n isTherapistsCatalogSearchPresetFetching,\n\n fieldVisibilitySettings,\n isAnyFilterChosen,\n filtersChosenDashShowed,\n\n resetFields,\n\n locationPathName,\n };\n}\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n","\n\n\n","import { ref, shallowRef, computed } from 'vue';\nimport { FIELDS_NAMES } from '@front/app-containers/therapists-catalog/const';\nimport { useTherapistsFilterValues } from './use-therapists-filter-values';\nimport { useTherapistsCatalog } from './use-therapists-catalog';\nimport TherapyType from '../components/filters-full/fields/therapy-type.vue';\nimport Questions from '../components/filters-full/fields/questions.vue';\nimport Grades from '../components/filters-full/fields/grades.vue';\nimport Methods from '../components/filters-full/fields/methods.vue';\nimport Genders from '../components/filters-full/fields/gender.vue';\nimport AgeRanges from '../components/filters-full/fields/age-ranges.vue';\nimport YearsOfExperienceRanges from '../components/filters-full/fields/years-of-experience-ranges.vue';\nimport TimePreferences from '../components/filters-full/fields/time-preferences.vue';\nimport OtherSettings from '../components/filters-full/fields/other-settings.vue';\n\nconst { isCoupleTherapyTypeChosen, fields } = useTherapistsFilterValues();\nconst { fieldVisibilitySettings } = useTherapistsCatalog();\n\nfunction getOtherSettingsCountLabel() {\n let count = 0;\n\n if (fields.value[FIELDS_NAMES.withVideoProfile]) {\n count += 1;\n }\n\n if (!fields.value[FIELDS_NAMES.withAvailableSlots]) {\n count += 1;\n }\n\n return count ? count.toString() : '';\n}\n\nconst fieldsCollapsed = ref({});\n\nconst filtersFullFormRowsList = ref([\n {\n title: 'Вид консультации',\n fieldName: FIELDS_NAMES.therapyType,\n collapsed: computed(() => fieldsCollapsed.value[FIELDS_NAMES.therapyType]),\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.therapyType]),\n component: shallowRef(TherapyType),\n },\n {\n title: 'Симптомы',\n fieldName: FIELDS_NAMES.questionIds,\n collapsed: false,\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.questionIds]),\n component: shallowRef(Questions),\n countLabel: computed(() => fields.value[FIELDS_NAMES.questionIds].length),\n },\n {\n title: 'Цена',\n fieldName: FIELDS_NAMES.selectedSingleGradeIds,\n collapsed: computed(\n () => fields.value[FIELDS_NAMES.selectedSingleGradeIds].length === 0\n || fieldsCollapsed.value[FIELDS_NAMES.selectedSingleGradeIds],\n ),\n showed: computed(\n () => !isCoupleTherapyTypeChosen.value\n && fieldVisibilitySettings.value[FIELDS_NAMES.selectedSingleGradeIds],\n ),\n component: shallowRef(Grades),\n countLabel: computed(() => fields.value[FIELDS_NAMES.selectedSingleGradeIds].length),\n },\n {\n title: 'Возраст',\n fieldName: FIELDS_NAMES.ageRanges,\n collapsed: computed(() => fields.value[FIELDS_NAMES.ageRanges].length === 0),\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.ageRanges]),\n component: shallowRef(AgeRanges),\n countLabel: computed(() => fields.value[FIELDS_NAMES.ageRanges].length),\n },\n {\n title: 'Психотерапевтический подход',\n fieldName: FIELDS_NAMES.therapyMethods,\n collapsed: computed(() => fields.value[FIELDS_NAMES.therapyMethods].length === 0),\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.therapyMethods]),\n component: shallowRef(Methods),\n countLabel: computed(() => fields.value[FIELDS_NAMES.therapyMethods].length),\n },\n {\n title: 'Опыт',\n fieldName: FIELDS_NAMES.yearsOfExperienceRanges,\n collapsed: computed(() => fields.value[FIELDS_NAMES.yearsOfExperienceRanges].length === 0),\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.yearsOfExperienceRanges]),\n component: shallowRef(YearsOfExperienceRanges),\n countLabel: computed(() => fields.value[FIELDS_NAMES.yearsOfExperienceRanges].length),\n },\n {\n title: 'Пол',\n fieldName: FIELDS_NAMES.genders,\n collapsed: computed(() => fields.value[FIELDS_NAMES.genders].length === 0),\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.genders]),\n component: shallowRef(Genders),\n countLabel: computed(() => fields.value[FIELDS_NAMES.genders].length),\n },\n {\n title: 'Время сессии',\n fieldName: 'time-preferences',\n collapsed: computed(\n () => fields.value[FIELDS_NAMES.preferredDaysAndHours].length === 0\n && !fields.value[FIELDS_NAMES.timeMode],\n ),\n showed: computed(() => fieldVisibilitySettings.value[FIELDS_NAMES.timeMode]),\n component: shallowRef(TimePreferences),\n countLabel: computed(() => (fields.value[FIELDS_NAMES.timeMode] ? '1' : '')),\n },\n {\n title: 'Дополнительные настройки',\n fieldName: 'other-settings',\n collapsed: computed(\n () => fields.value[FIELDS_NAMES.withVideoProfile]\n && !fields.value[FIELDS_NAMES.withAvailableSlots],\n ),\n showed: computed(() => true),\n component: shallowRef(OtherSettings),\n countLabel: computed(() => getOtherSettingsCountLabel()),\n onToggleOpen: () => {\n setTimeout(() => {\n const el = document.querySelector('._s-popup_content');\n\n el?.scrollTo({ top: el.scrollHeight, behavior: 'smooth' });\n }, 200);\n },\n },\n]);\n\n// eslint-disable-next-line import/prefer-default-export\nexport function useTherapistsFiltersFullModal() {\n return {\n filtersFullFormRowsList,\n };\n}\n"],"names":["FIELDS_NAMES","questionIds","therapyMethods","selectedSingleGradeIds","genders","page","sorts","withAvailableSlots","withVideoProfile","therapyType","currency","ageRanges","yearsOfExperienceRanges","therapistTimeZone","userTimeZone","preferredDaysAndHours","timeMode","worksWithTeenagers","THERAPY_TYPES","couple","single","FIELDS_DEFAULT_VALUE","EVENT_BUS_KEYS","THERAPISTS_CATALOG_URL_PARAMS","bus","useEventBus","urlParams","useUrlSearchParams","getParam","key","JSON","parse","setUrlParam","value","stringify","emit","useTherapistsPageUrlParams","isFetching","isTherapyMethodsFetching","data","therapyMethodsList","execute","fetchTherapyMethods","useFetch","THERAPY_METHODS_PATH","immediate","json","isQuestionsFetching","fetchQuestions","questionsList","QUESTIONS_PATH","isGradesFetching","fetchGrades","gradesList","GRADES_PATH","isTimezoneListFetching","fetchTimezoneList","timezoneList","TIME_ZONE_LIST_PATH","fetchUserProfileForm","userProfileForm","USER_SIGNUP_PROFILE_PATH","gradesMappedById","computed","keyBy","therapyMethodsMappedById","questionsMappedById","questionsListSingle","_a","filter","question","therapy_type","questionsListCouple","GENDERS_LIST","id","title","THERAPIST_AGES_LIST","THERAPY_TYPE_LIST","THERAPIST_EXP_RANGES_LIST","OTHER_SETTINGS_LIST","gradesListPrepared","grade","map","price","useTherapistsCatalogStaticData","fields","ref","moment","tz","guess","fieldsApplied","cloneDeep","getTherapistTimeZoneChosen","fieldVal","getPreferredTimeModChosen","result","getTherapistVideoProfileChosen","find","item","getTherapistWithAvailableSlotsChosen","getTherapistWorkWithTeenChosen","filtersChosenDashMap","includes","_b","_c","setFieldsApplied","val","setSyncUrlParamsWithFields","Object","keys","forEach","setField","field","fields$2","isCoupleTherapyTypeChosen","isRubCurrencyChosen","useTherapistsFilterValues","therapistsCatalog","locationPathName","location","pathname","isTherapistsCatalogSearchPresetFetching","fetchTherapistsCatalogSearchPreset","therapistsCatalogSearchPreset","THERAPIST_CATALOG_SEARCH_PRESET_PATH","afterFetch","ctx","search_params","url_slug","search_preset","URLSearchParams","window","search","get","post","fieldVisibilitySettings","field_visibility_settings","abort","abortFetchTherapistsCatalog","isTherapistsCatalogFetching","exeFetchTherapistsCatalog","THERAPISTS_CATALOG_PATH","urlSlugFromPreset","presetPath","preset_path","history","pushState","sticky","isTherapistsCatalogFetchingMore","fetchMoreTherapistsCatalog","therapists","concat","abortFetchTherapistsCatalogCount","exeFetchTherapistsCatalogCount","therapistsCatalogCount","THERAPISTS_CATALOG_COUNT_PATH","isPopupFiltersOpen","setPopupFiltersOpen","async","fetchTherapistsCatalog","isTherapistsCatalogCountFetching","fetchTherapistsCatalogCount","then","watch","deep","isAnyFilterChosen","length","filtersChosenDashShowed","hiddenFields","resetFields","payload","useTherapistsCatalog","set","getQuestionsByCategories","questions","reduce","accumulator","category","category_name","checked","push","questionsByCategoriesCouple","questionsByCategoriesSingle","onQuestionnaireUpdate","v","acc","getPrice","currencyChar","formatThreeDigits","gradeId","selectedGrades","selectedMethods","currentField","gender","agesList","slice","index","indexOf","splice","timeSortMode","isChecked","fieldName","fieldsCollapsed","filtersFullFormRowsList","collapsed","showed","component","shallowRef","TherapyType","Questions","countLabel","Grades","AgeRanges","Methods","YearsOfExperienceRanges","Genders","TimePreferences","OtherSettings","count","toString","getOtherSettingsCountLabel","onToggleOpen","setTimeout","el","document","querySelector","scrollTo","top","scrollHeight","behavior","useTherapistsFiltersFullModal"],"mappings":"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"}