{"version":3,"file":"BxAODOUO.js","sources":["../../../../types/components/product-card.types.ts","../../../../components/Product/ProductTags/ProductTag.vue","../../../../components/Product/ProductTags/ProductTagRating.vue","../../../../composables/useProductImage.ts","../../../../types/store/category.ts"],"sourcesContent":["export const enum ProductDetailType {\n Page = 'page',\n Dialog = 'dialog',\n}\n\nexport const enum ProductType {\n simple = 'simple',\n selection = 'selection',\n}\n\nexport const enum ProductParentType {\n card = 'card',\n detail = 'detail',\n}\n\nexport type ProductTagSize = 'sm' | 'md'\n","<script setup lang=\"ts\">\nimport {\n ProductParentType,\n ProductTagSize,\n} from '@/types/components/product-card.types'\n\ntype Props = {\n type: ProductParentType\n size?: ProductTagSize\n color?: string\n backgroundColor?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n color: '',\n backgroundColor: '',\n})\n\nconst componentClasses = [\n 'product-tag',\n `product-tag--type-${props.type}`,\n `product-tag--size-${props.size}`,\n]\n\nconst componentStyles = {\n color: props.color || 'var(--ui-white)',\n background: props.backgroundColor || 'var(--ui-violet)',\n}\n</script>\n\n<template>\n <div :class=\"componentClasses\" :style=\"componentStyles\">\n <slot />\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.product-tag {\n display: flex;\n gap: 2px;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 50px;\n}\n\n.product-tag--size-sm {\n padding: 2px 4px;\n\n @include media('>=desktop-mini') {\n padding: 2px 8px;\n }\n}\n\n.product-tag--size-md {\n padding: 4px 8px;\n}\n\n.product-tag--type-card {\n font-size: 8px;\n font-weight: 700;\n line-height: 10px;\n\n @include media('>=desktop-mini') {\n font-size: 12px;\n font-weight: 800;\n line-height: 16px;\n }\n}\n\n.product-tag--type-detail {\n font-size: 12px;\n font-weight: 800;\n line-height: 16px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { NewProduct } from '@/types/api/api-v4/product'\nimport {\n ProductParentType,\n ProductTagSize,\n} from '@/types/components/product-card.types'\n\nimport ProductTag from '@/components/Product/ProductTags/ProductTag.vue'\n\nconst MIN_RATING = 4\n\ntype Props = {\n product: NewProduct\n type: ProductParentType\n size?: ProductTagSize\n}\n\nconst props = defineProps<Props>()\n\nconst componentClasses = [\n 'product-tag-rating',\n `product-tag-rating--type-${props.type}`,\n]\n\nconst isVisible = computed(() => {\n return props.product?.rating && props.product?.rating >= MIN_RATING\n})\n</script>\n\n<template>\n <product-tag\n v-if=\"isVisible\"\n :class=\"componentClasses\"\n color=\"var(--ui-white)\"\n background-color=\"rgba(var(--ui-secondary-rgb), 0.8)\"\n :type=\"type\"\n :size=\"size\"\n >\n <nuxt-img src=\"/product/rating-star.svg\" alt=\"Рейтинг\" />\n\n <span>{{ product.rating }}</span>\n </product-tag>\n</template>\n\n<style lang=\"scss\" scoped>\n.product-tag-rating {\n img {\n flex-shrink: 0;\n }\n}\n\n.product-tag-rating--type-card {\n img {\n width: 10px;\n height: 10px;\n\n @include media('>=desktop-mini') {\n width: 14px;\n height: 14px;\n }\n }\n}\n\n.product-tag-rating--type-detail {\n img {\n width: 16px;\n height: 16px;\n }\n}\n</style>\n","import { useCityStore } from '@/store/city/city'\n\nimport { NewProduct, NewProductModification } from '@/types/api/api-v4/product'\n\ntype Props = {\n product: NewProduct\n currentModification: NewProductModification\n}\n\nexport const useProductImage = (props: Props) => {\n const { cityInfo } = useCityStore()\n\n const isError = ref(false)\n const setError = (state: boolean) => (isError.value = state)\n\n const productImage = computed(() => {\n if (!props.product?.image || isError.value) {\n return './no-image-product-card.webp'\n }\n\n return props.product.image\n })\n\n const productImageList = computed(() => {\n // Если есть основое изображение, и есть дополнительные, то рисуем и основное и дополнительные изображения\n if (props.product?.image && props.product.additional_images?.length) {\n return [productImage.value, ...props.product.additional_images]\n }\n\n // Если нету основого изображения, но есть дополнительные, то рисуем дополнительные изображения\n if (!props.product?.image && props.product.additional_images?.length) {\n return props.product.additional_images\n }\n\n return []\n })\n\n const productTitle = computed(() => {\n let name = `${props.product.name} ${props.currentModification.name}`\n\n if (props.product.name === props.currentModification.name) {\n name = props.product.name\n }\n\n return `Заказать \"${name}\" с доставкой в ${cityInfo?.padeg?.pred} от ресторана Farfor`\n })\n\n return { productImage, productImageList, productTitle, setError }\n}\n","import { AxiosError } from 'axios'\n\nimport { Category } from '@/types/api/api-v3/category'\nimport { LoadState } from '@/types/main'\nimport { ErrorData } from '@/types/api/api-v3/basket'\n\nexport type CategoryState = LoadState<Category[], AxiosError<ErrorData>>\n\nexport type SimpleCategoriesState = LoadState<Category[]>\n\n// Перечисление для определения типа ивента counter-а\nexport enum SetProductType {\n INCREASE = 'INCREASE',\n DECREASE = 'DECREASE',\n}\n\nexport type SetProductIncludeType = 'INCREASE' | 'DECREASE'\n"],"names":["ProductDetailType","ProductType","ProductParentType","props","__props","componentClasses","componentStyles","MIN_RATING","isVisible","computed","_a","_b","useProductImage","cityInfo","useCityStore","isError","ref","setError","state","productImage","productImageList","_c","_d","productTitle","name","SetProductType"],"mappings":";;4eAAkB,IAAAA,GAAAA,IAChBA,EAAA,KAAO,OACPA,EAAA,OAAS,SAFOA,IAAAA,GAAA,CAAA,CAAA,EAKAC,GAAAA,IAChBA,EAAA,OAAS,SACTA,EAAA,UAAY,YAFIA,IAAAA,GAAA,CAAA,CAAA,EAKAC,GAAAA,IAChBA,EAAA,KAAO,OACPA,EAAA,OAAS,SAFOA,IAAAA,GAAA,CAAA,CAAA,8HCGlB,MAAMC,EAAQC,EAMRC,EAAmB,CACvB,cACA,qBAAqBF,EAAM,IAAI,GAC/B,qBAAqBA,EAAM,IAAI,EACjC,EAEMG,EAAkB,CACtB,MAAOH,EAAM,OAAS,kBACtB,WAAYA,EAAM,iBAAmB,kBACvC,oICnBMI,EAAa,6EAQnB,MAAMJ,EAAQC,EAERC,EAAmB,CACvB,qBACA,4BAA4BF,EAAM,IAAI,EACxC,EAEMK,EAAYC,EAAS,IAAM,SAC/B,QAAOC,EAAAP,EAAM,UAAN,YAAAO,EAAe,WAAUC,EAAAR,EAAM,UAAN,YAAAQ,EAAe,SAAUJ,CAAA,CAC1D,oWCjBYK,EAAmBT,GAAiB,CACzC,KAAA,CAAE,SAAAU,CAAS,EAAIC,EAAa,EAE5BC,EAAUC,EAAI,EAAK,EACnBC,EAAYC,GAAoBH,EAAQ,MAAQG,EAEhDC,EAAeV,EAAS,IAAM,OAClC,MAAI,GAACC,EAAAP,EAAM,UAAN,MAAAO,EAAe,QAASK,EAAQ,MAC5B,+BAGFZ,EAAM,QAAQ,KAAA,CACtB,EAEKiB,EAAmBX,EAAS,IAAM,aAEtC,OAAIC,EAAAP,EAAM,UAAN,MAAAO,EAAe,SAASC,EAAAR,EAAM,QAAQ,oBAAd,MAAAQ,EAAiC,QACpD,CAACQ,EAAa,MAAO,GAAGhB,EAAM,QAAQ,iBAAiB,EAI5D,GAACkB,EAAAlB,EAAM,UAAN,MAAAkB,EAAe,UAASC,EAAAnB,EAAM,QAAQ,oBAAd,MAAAmB,EAAiC,QACrDnB,EAAM,QAAQ,kBAGhB,CAAC,CAAA,CACT,EAEKoB,EAAed,EAAS,IAAM,OAC9B,IAAAe,EAAO,GAAGrB,EAAM,QAAQ,IAAI,IAAIA,EAAM,oBAAoB,IAAI,GAElE,OAAIA,EAAM,QAAQ,OAASA,EAAM,oBAAoB,OACnDqB,EAAOrB,EAAM,QAAQ,MAGhB,aAAaqB,CAAI,oBAAmBd,EAAAG,GAAA,YAAAA,EAAU,QAAV,YAAAH,EAAiB,IAAI,sBAAA,CACjE,EAED,MAAO,CAAE,aAAAS,EAAc,iBAAAC,EAAkB,aAAAG,EAAc,SAAAN,CAAS,CAClE,ECrCY,IAAAQ,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,SAAW,WAFDA,IAAAA,GAAA,CAAA,CAAA","debug_id":"dfbef8d4-723f-5517-8e99-8cb0b982ca02"}