{"version":3,"file":"ProductDetail-BGQqU7bb.js","sources":["../../src/views/order/partials/TopBar.vue","../../src/components/menuProduct/selectors/IngredientsTagsSection.vue","../../src/components/menuProduct/selectors/ProductBuilderSelect.vue","../../src/store/order/productDetail.ts","../../src/components/menuProduct/selectors/MandatoryComponentsSelector.vue","../../src/components/menuProduct/selectors/RemovableComponentsSelector.vue","../../src/components/menuProduct/selectors/AddableComponentsSelector.vue","../../src/components/menuProduct/selectors/ModulesProductsSelector.vue","../../src/components/menuProduct/selectors/StringArticleAttributeSelector.vue","../../src/components/menuProduct/selectors/NumericArticleAttributeSelector.vue","../../src/components/menuProduct/selectors/ArticleAttributesSelectors.vue","../../src/components/menuProduct/ProductBuilder.vue","../../src/views/order/partials/LocationInfo.vue","../../src/store/order/scrollManager.ts","../../src/views/order/partials/CategoriesSelector.vue","../../src/utils/product.ts","../../src/components/menuProduct/ProductCard.vue","../../src/views/order/partials/Menu.vue","../../src/components/menuProduct/ProductDetail.vue"],"sourcesContent":["\ndiv.top-bar__container.bg-white(:key=\"$route.fullPath\")\n div.top-bar(v-if=\"location\" ref=\"$topBar\")\n div.top-bar__content.border-b.px-4.py-4.d-flex.align-center\n div.logo__container.rounded-lg.flex-shrink-0.overflow-hidden\n EatImage.logo.rounded-lg(:src=\"location.logoUrl\")\n div.location-name.ps-5.overflow-hidden\n h1.text-h6.font-weight-medium.text-truncate {{ location.businessName }}\n div.top-bar__call-waiter.px-3.d-flex.ms-auto.me-14(v-if=\"cartPrefix === CartPrefix.TABLE\")\n EatIconBtn.text-black(icon=\"$waiter\" @click=\"showMoreDialog = true\") \n EatSearchBar.top-bar__search-bar(\n icon=\"$search\" \n @blur=\"closeSearchbar\"\n :modelValue=\"searchText\" \n @update:modelValue=\"onSearchTextChange\"\n :placeholder=\"$t('order.topBar.search')\" \n :expandable=\"true\"\n )\n\n\n\n\n\n","\nRoundedContainer\n div(v-if=\"product.allergens || app?.pdfFileAllergens\")\n div.heading.d-flex.align-center.mb-5.mt-4\n div.text-h6 {{ $t('productBuilder.allergens') }}\n a.text-decoration-underline.ms-auto.text-primary(v-if=\"app?.pdfFileAllergens\" :href=\"app.pdfFileAllergens\" target=\"_self\") {{ $t(\"productBuilder.infoAllergens\") }}\n div.d-flex.flex-wrap.gap-1(v-if=\"product.allergens\")\n AllergenChip.flex-grow-0(v-for=\"allergen in product.allergens\" :key=\"allergen.code\" :allergen=\"allergen\")\n\n div(v-if=\"ingredients\")\n div.heading.d-flex.align-center.mb-5.mt-4\n div.text-h6 {{ $t('productBuilder.ingredients') }}\n div {{ ingredients }}\n \n div(v-if=\"product.tags && product.tags.length\")\n div.heading.d-flex.align-center.mb-5.mt-4\n div.text-h6 {{ $t(\"productBuilder.tags\") }}\n div.tags-container.d-flex\n div.border.rounded-sm.pa-2.mb-2.me-2(v-for=\"tag, i in product.tags\" :key=\"i\") {{ tag }}\n\n\n\n\n\n","\nEatUl\n EatLi.cursor-pointer(v-for=\"option, i in options\" :padding=\"padding\" :positionRelative=\"positionRelative\" :border-bottom=\"i !== options.length - 1\" :key=\"i\" @click=\"readonly ? null : onOptionClick(i)\" :class=\"{ 'bg-selected': selected.includes(i) && !readonly }\")\n slot(name=\"option\" v-bind=\"{ option, index: i, isSelected: selected.includes(i) }\")\n\n\n\n\n\n","import type { Product } from \"@/models\";\nimport type { CartItem } from \"@/models/Cart\";\nimport { computePrice, type ProductConfiguration } from \"@/models/Product\";\nimport { ref } from \"vue\";\n\nconst product = ref();\nconst configuration = ref();\nconst quantity = ref();\n\nconst useProductDetail = () => {\n const initConfiguration = () => {\n configuration.value = {\n addedComponents: [],\n mandatoryComponents: [],\n removedComponents: [],\n articleAttributes: {},\n modules: {},\n upsellingModules: {},\n };\n quantity.value = 1;\n\n if (product.value?.isModular) {\n for (const module of product.value?.modules) {\n if (module.name in configuration.value.modules) continue;\n const instantMenu = module.products.filter(product => product.instantMenu);\n configuration.value.modules[module.name] = instantMenu.length ? instantMenu : [];\n configuration.value.upsellingModules[module.name] = [];\n }\n }\n if (product.value?.articleAttributes && product.value?.articleAttributes.length) {\n for (const attribute of product.value?.articleAttributes) {\n if (attribute.attributeTypeId in configuration.value.articleAttributes) continue;\n let value: boolean | number | string = \"\";\n if (attribute.fieldType === \"number\") value = attribute.isMandatory ? 1 : 0;\n if (attribute.fieldType === \"string\") value = \"\";\n if (attribute.fieldType === \"boolean\") value = attribute.isMandatory ? true : false;\n configuration.value.articleAttributes[attribute.attributeTypeId] = {\n name: attribute.name,\n value: value\n };\n }\n }\n };\n\n const canAddToConfiguration = (price: number) => {\n if (!product.value || !configuration.value) throw new Error(\"Prodotto non selezionato\");\n const configurationPrice = computePrice(product.value, configuration.value);\n return configurationPrice + price >= 0;\n };\n\n const setProduct = (newProduct: Product) => {\n product.value = newProduct;\n initConfiguration();\n };\n\n const setConfigurationFromCartItem = (cartItem: CartItem) => {\n product.value = cartItem.product;\n configuration.value = cartItem.configuration;\n };\n\n const reset = () => {\n product.value = undefined;\n configuration.value = undefined;\n quantity.value = undefined;\n };\n\n return {\n product,\n configuration,\n quantity,\n initConfiguration,\n reset,\n setProduct,\n setConfigurationFromCartItem,\n canAddToConfiguration\n };\n};\n\nexport default useProductDetail;\n","\ndiv(v-if=\"components.length\")\n RoundedContainer(v-for=\"group, i in components\" :key=\"i\" :subtitle=\"readonly ? '' : $t('productBuilder.mandatoryComponents.subtitle')\" :title=\"group.name\" :horizontal-padding=\"false\" :stickyTitle=\"true\")\n ProductBuilderSelect(:options=\"group.components\" :selected=\"selected[i]\" @change=\"onSelectChange(i, $event)\" :readonly=\"readonly\")\n template(v-slot:option=\"{ option }\")\n div.d-flex.justify-space-between(v-if=\"isMandatoryComponent(option)\")\n div {{ option.name }}\n div(v-if=\"!hidePrices\")\n template(v-if=\"option.addingPrice != 0\")\n span {{ option.addingPrice > 0 ? \"+\" : \"\" }}{{ formatPrice(option.addingPrice) }}\n template(v-else)\n span {{ $t('productBuilder.free') }}\n\n\n\n","\nRoundedContainer(:title=\"$t('productBuilder.removableComponents.title')\" :subtitle=\"readonly ? '' : $t('productBuilder.removableComponents.subtitle')\" :horizontal-padding=\"false\" :stickyTitle=\"true\" v-if=\"components.length\")\n ProductBuilderSelect(:options=\"components\" :selected=\"selected\" @change=\"onSelectChange\" :readonly=\"readonly\")\n template(v-slot:option=\"{ option, isSelected }\")\n div.d-flex.justify-space-between(v-if=\"isRemovableComponent(option)\")\n div {{ option.name }}\n div(v-if=\"!hidePrices\")\n template(v-if=\"option.removingPrice && option.removingPrice != 0\")\n span {{ formatPrice(option.removingPrice) }}\n template(v-else)\n EatIcon(icon=\"$minus\" size=\"18px\" :class=\"{ 'text-primary': isSelected && !readonly }\") \n\n\n\n","\nRoundedContainer(:title=\"$t('productBuilder.addableComponents.title')\" :subtitle=\"readonly ? '' : $t('productBuilder.addableComponents.subtitle')\" :horizontal-padding=\"false\" :stickyTitle=\"true\")\n ProductBuilderSelect(:options=\"components\" :selected=\"selected\" @change=\"onSelectChange\" :readonly=\"readonly\")\n template(v-slot:option=\"{ option, isSelected }\")\n div.d-flex.justify-space-between.align-center(v-if=\"isAddableComponent(option)\")\n div {{ option.name }}\n div(v-if=\"option.addingPrice != 0 && !hidePrices\")\n span +{{ formatPrice(option.addingPrice) }}\n EatIcon(v-else icon=\"$plus\" :size=\"18\" :class=\"{ 'text-primary': isSelected && !readonly }\") \n\n\n\n","\ndiv\n RoundedContainer(\n v-for=\"module, i in product.modules\" :key=\"module.name+i\" \n :title=\"module.name\" \n :subtitle=\"readonly ? '' : formatMaxAndMinCustomerChoices(module)\" \n :badge=\"module.minCustomerChoices && module.minCustomerChoices > 0 ? $t('general.mandatory') : ''\" \n :stickyTitle=\"true\"\n :horizontalPadding=\"false\"\n )\n EatUl\n template(v-for=\"moduleProduct, i in module.products\" :key=\"moduleProduct.name+i\" )\n EatLi.list-item.px-5.py-3.cursor-pointer(:padding=\"false\" v-if=\"isSelected(module.name, moduleProduct) || !showUpselling(module)\") \n div.product-image__container(@click=\"readonly ? null : onModuleProductClick(module, moduleProduct)\")\n EatImage.image.rounded-sm(:src=\"getImageSrc(moduleProduct)\")\n\n div.ps-3(@click=\"readonly ? null : onModuleProductClick(module, moduleProduct)\")\n div.text-black.pe-3 {{ moduleProduct.name }}\n div(v-if=\"moduleProduct.priceVariation && !hidePrices\" style=\"font-size:0.875rem;color:rgba(0, 0, 0, 0.6);line-height:1.2\") {{ formatPrice(moduleProduct.priceVariation) }}\n div.d-flex.flex-wrap.gap-1.mt-2(v-if=\"moduleProduct.allergens\")\n AllergenChip.flex-grow-0(v-for=\"allergen in moduleProduct.allergens\" :key=\"allergen.code\" :allergen=\"allergen\")\n\n EatStepper(\n v-if=\"!readonly\"\n :small=\"true\"\n @decrease=\"removeModuleProduct(module.name, moduleProduct, module)\" \n @increase=\"addModuleProduct(module.name, moduleProduct, module)\" \n :value=\"getModuleProductQuantity(module.name, moduleProduct)\"\n :transparent=\"true\" \n :disabled=\"isModuleProductStepperDisabled(module, moduleProduct)\"\n )\n\n EatUl(v-if=\"showUpselling(module) && !readonly\")\n div.text-h6.my-3.px-5.text-black {{ $t('productBuilder.upselling.title') }}\n template(v-for=\"moduleProduct, i in module.products\" :key=\"moduleProduct.name+i\")\n EatLi.list-item.px-5.py-3(v-if=\"isProductEligibleForUpselling(module.name, moduleProduct)\")\n div.product-image__container.rounded-sm(@click=\"onUpsellingProductClick(module, moduleProduct)\") \n EatImage.image.rounded-sm(:src=\"getImageSrc(moduleProduct)\")\n div.ps-3(@click=\"onUpsellingProductClick(module, moduleProduct)\")\n div.text-black.pe-3 {{ moduleProduct.name }}\n div(v-if=\"moduleProduct.priceUpselling && !hidePrices\" style=\"font-size:0.875rem;color:rgba(0, 0, 0, 0.6);line-height:1.2\") {{ formatPrice(moduleProduct.priceUpselling) }}\n div.d-flex.flex-wrap.gap-1.mt-2(v-if=\"moduleProduct.allergens\")\n AllergenChip.flex-grow-0(v-for=\"allergen in moduleProduct.allergens\" :key=\"allergen.code\" :allergen=\"allergen\")\n \n EatStepper(\n v-if=\"!readonly\"\n @decrease=\"removeUpsellingProduct(module.name, moduleProduct)\" \n @increase=\"addUpsellingProduct(module.name, moduleProduct)\" \n :value=\"getUpsellingModuleQuantity(module.name, moduleProduct)\"\n :transparent=\"true\" \n )\n\n\n\n\n\n","\nEatUl\n EatLi.d-flex.justify-space-between.align-center(v-for=\"option, i in attribute.valueSet\" :key=\"option+i\" :class=\"{ selected: localValue && option === localValue.value && !readonly }\" @click=\"!readonly ? onOptionClick(option) : null\")\n div {{ option }}\n EatIcon(:icon=\"localValue && option === localValue.value && !readonly ? '$check' : '$plus'\" :size=\"18\" :class=\"{ 'text-primary': localValue && option === localValue.value && !readonly }\")\n\n\n\n\n\n","\nEatNumberInput.mb-2.px-5(\n v-model=\"localValue\",\n :label=\"$t('productBuilder.articleAttributes.numberAttributeLabel')\"\n :min-value=\"attribute.isMandatory ? 1 : 0\"\n :border=\"false\"\n)\n\n\n","\nRoundedContainer(\n v-for=\"attribute, i in product.articleAttributes\" \n :key=\"i\" :title=\"attribute.name\" \n :subtitle=\"attribute.fieldType == 'string' ? $t('productBuilder.articleAttributes.subtitle') : null\" \n :badge=\"attribute.isMandatory ? $t('general.mandatory') : null\" \n :stickyTitle=\"true\" \n :horizontalPadding=\"false\"\n)\n\n StringArticleAttributeSelector(\n v-if=\"isStringArticleAttribute(attribute)\"\n :attribute=\"attribute\"\n v-model=\"articleAttributes[attribute.attributeTypeId]\"\n )\n\n EatToggleButton.w-100.mb-2.px-5.gap-4(v-if=\"attribute.fieldType == 'boolean'\" v-model=\"articleAttributes[attribute.attributeTypeId].value\" :class=\"{ 'bg-selected': articleAttributes[attribute.attributeTypeId].value }\" v-slot=\"{ on }\")\n div {{ $t('general.yesNo') }}\n EatToggleIcon.ms-auto(:on=\"on\" :size=\"18\" onIcon=\"$check\" offIcon=\"$plus\")\n\n NumericArticleAttributeSelector.mb-2.px-5(\n v-if=\"attribute.fieldType == 'number'\"\n :attribute=\"attribute\"\n v-model=\"articleAttributes[attribute.attributeTypeId]\"\n )\n\n\n\n","\ndiv(v-if=\"product && configuration\")\n IngredientsTagsSection(\n v-if=\"(product.tags && product.tags.length) || (product.standardComponents && product.standardComponents.length) || product.allergens || (app && app.pdfFileAllergens)\"\n :product=\"product\")\n\n MandatoryComponentsSelector(\n v-if=\"product.mandatoryComponentsGroups && product.mandatoryComponentsGroups.length\" \n :components=\"product.mandatoryComponentsGroups\" \n :hidePrices=\"hidePrices\" \n :readonly=\"readonly\" \n v-model=\"configuration.mandatoryComponents\") \n\n RemovableComponentsSelector(\n v-if=\"product.removableComponents.length\" \n :components=\"product.removableComponents\" \n :hidePrices=\"hidePrices\" \n :readonly=\"readonly\" \n v-model=\"configuration.removedComponents\")\n\n AddableComponentsSelector( \n v-if=\"product.addableComponents.length\" \n :components=\"product.addableComponents\" \n :hidePrices=\"hidePrices\" \n :readonly=\"readonly\" \n v-model=\"configuration.addedComponents\"\n )\n\n ModulesProductsSelector(\n v-if=\"product.isModular\" \n :product=\"product\" \n :modules=\"configuration.modules\" \n @input-modules=\"configuration.modules = $event\" \n :upsellingModules=\"configuration.upsellingModules\" \n @input-upselling-modules=\"configuration.upsellingModules = $event\" \n :isCartModifier=\"isCartModifier\"\n :hide-prices=\"hidePrices\" \n :readonly=\"readonly\")\n\n ArticleAttributesSelectors(\n v-if=\"product.articleAttributes && product.articleAttributes.length && !readonly\" \n :product=\"product\" \n v-model=\"configuration\")\n\n\n\n","\ndiv.bg-neutral-a.overflow-hidden.pb-1(:class=\"cartPrefix === CartPrefix.RESTAURANT ? 'rounded-xxl' : 'rounded-t-xxl'\")\n div.cover-image__container.bg-white\n a.btn-back-multilocation.bg-primary.rounded-lg.d-flex.align-center.py-2.ps-2.pe-4(:href=\"multilocationUrl\" v-if=\"multilocationUrl && cartPrefix === CartPrefix.RESTAURANT\")\n EatIcon.text-white(icon=\"$back\" size=\"18px\") \n div.ps-2.text-white.font-weight-medium {{ $t(\"order.action.multilocationButton\") }}\n LanguageDropDownMenu.language-selector.bg-white(v-if=\"cartPrefix !== CartPrefix.RESTAURANT\")\n EatImage.cover-image(:src=\"app?.coverImageUrl\" aspectRatio=\"16/9\")\n div.logo__container.rounded-lg.flex-shrink-0.overflow-hidden\n EatImage.logo.rounded-lg(:src=\"location?.logoUrl\")\n div.bg-white\n div.container\n div.location-info(v-if=\"location\")\n h1.text-h5.font-weight-medium {{ location.businessName }}\n div.subtitle-2.mt-2 {{ fullAddress(location) }}\n div.text-primary.subtitle-2.pb-3 {{ isLocationOpenToday ? $t(\"location.open\") + \" \" + todaysOpeningHours : $t(\"location.closed\") }}\n\n div.contacts.d-flex.py-3(v-if=\"location\")\n div.d-flex.flex-grow-1(v-if=\"location.phone\")\n a.contacts-link.rounded.border.flex-grow-1.text-center.py-1(:href=\"`tel:${location.phone}`\") {{ $t('location.action.phone') }}\n div.d-flex.flex-grow-1(v-if=\"location.whatsapp\")\n a.contacts-link.rounded.border.flex-grow-1.text-center.py-1(:href=\"location.whatsapp\") {{ $t('location.action.whatsapp') }}\n div.d-flex.flex-grow-1(v-if=\"location.email\")\n a.contacts-link.rounded.border.flex-grow-1.text-center.py-1(:href=\"`mailto:${location.email}`\") {{ $t('location.action.email') }}\n\n\n\n\n\n","import { nextTick, onMounted, type Ref, ref, watch } from \"vue\";\nimport gsap from \"gsap\";\nimport type { Category } from \"@/models\";\nimport { Saletype } from \"@/models/App\";\n\nexport const useCategoriesScrollSync = (\n categories: Ref,\n saletype: Saletype\n) => {\n const listScroller: Ref = ref(null);\n const navigationScroller: Ref = ref(null);\n const intersectionObserver = ref(null);\n const observables = ref([]);\n\n const visibleElements = ref([]);\n const wannabeActive = ref(\"\");\n const activeCategory = ref(\"\");\n\n const activateNavigationLink = (categoryId: string) => {\n activeCategory.value = categoryId;\n const offsetLeft = document.getElementById(`btn-${saletype}-${categoryId}`)?.offsetLeft;\n if (offsetLeft === undefined || !navigationScroller.value) return;\n\n gsap.to(navigationScroller.value as Element, {\n duration: 0.3,\n scrollTo: { x: offsetLeft - 56 }\n });\n };\n\n const isElementVisible = (element: HTMLElement) => {\n const rect = element.getBoundingClientRect();\n return (\n rect.top >= 100 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n );\n };\n\n const scrollToCategory = (categoryId: string) => {\n const element = observables.value.find(\n element => element.id.replace(`${saletype}-`, \"\") === categoryId\n );\n if (element === undefined || !listScroller.value) return;\n\n activeCategory.value = categoryId;\n if (!isElementVisible(element)) wannabeActive.value = categoryId;\n\n const offsetTop = element.offsetTop;\n const scrollOffset = getScrollOffset();\n gsap.to(listScroller.value as Element, {\n duration: 0.3,\n scrollTo: { y: offsetTop + scrollOffset }\n });\n };\n\n let timer: number | null = null;\n const endScrollHandler = () => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => (wannabeActive.value = \"\"), 500) as unknown as number;\n };\n\n let ticking = false;\n const scrollHandler = () => {\n if (!ticking) {\n window.requestAnimationFrame(() => (endScrollHandler(), (ticking = false)));\n ticking = true;\n }\n };\n\n const intersectionCallback = (entries: IntersectionObserverEntry[]) => {\n entries.forEach(entry => {\n const categoryId = entry.target.id.replace(`${saletype}-`, \"\") as string;\n if (!entry.isIntersecting || (wannabeActive.value && wannabeActive.value !== categoryId))\n return;\n activateNavigationLink(categoryId);\n });\n };\n\n const updateObservables = (categories: Category[]) => {\n if (!intersectionObserver.value || !categories.length) return;\n\n observables.value.forEach(observable => intersectionObserver.value?.unobserve(observable));\n observables.value = [];\n visibleElements.value = [];\n wannabeActive.value = \"\";\n\n for (const category of categories) {\n const observable = document.getElementById(`${saletype}-${category.id}`);\n if (observable) {\n observables.value.push(observable);\n intersectionObserver.value?.observe(observable);\n }\n }\n\n if (categories.some(category => category.id === activeCategory.value)) {\n nextTick(() => scrollToCategory(activeCategory.value));\n } else {\n activeCategory.value = categories[0]?.id.replace(`${saletype}-`, \"\") || \"\";\n }\n };\n\n const getScrollOffset = () => {\n const scrollerRect = listScroller.value?.getBoundingClientRect();\n const navigationRect = navigationScroller.value?.getBoundingClientRect();\n if(!scrollerRect || !navigationRect) return 0;\n return scrollerRect.top - navigationRect.bottom - 10;\n }\n\n onMounted(async () => {\n await nextTick()\n listScroller.value = document.getElementById(`${saletype}-order-scrollable`);\n navigationScroller.value = document.getElementById(`${saletype}-category-slider-scrollable`);\n if (!listScroller.value || !navigationScroller.value) return;\n\n gsap.to(listScroller.value as Element, { scrollTo: { y: 0 } });\n\n const options = {\n root: listScroller.value,\n rootMargin: `-164px 0px -${(listScroller.value.clientHeight || 0) / 2}px 0px`\n };\n intersectionObserver.value = new IntersectionObserver(intersectionCallback, options);\n updateObservables(categories.value);\n listScroller.value?.addEventListener(\"scroll\", scrollHandler, false);\n });\n\n watch(categories, async (value) => {\n await nextTick();\n await nextTick();\n updateObservables(value);\n });\n\n const isActiveCategory = (id: string) => id === activeCategory.value;\n\n return {\n scrollToCategory,\n isActiveCategory\n };\n};\n","\ndiv.container.categories-container\n div.category.rounded-sm.px-5.py-2.mb-8(v-for=\"category, i in categories\" :key=\"i\" @click=\"onCategoryClick(category.id)\") \n div.category-image__container.rounded-sm\n EatImage.category-image.rounded-sm(:src=\"getImageSrc(category)\")\n div.text-body-1.font-weight-medium.mt-3 {{ category.name }}\n\n\n\n\n\n","import type { Product } from \"@/models\";\nimport { isEmptyObject } from \".\";\nimport type { ProductConfiguration } from \"@/models/Product\";\n\nexport function hasDefaultConfiguration(product: Product) {\n const hasMandatoryArticleAttributes =\n product.articleAttributes?.some(attribute => attribute.isMandatory) ||\n (product.mandatoryComponentsGroups && product.mandatoryComponentsGroups.length > 0);\n return !hasMandatoryArticleAttributes;\n}\n\nexport function isNeatConfiguration(config: ProductConfiguration) {\n return (\n !config.addedComponents.length &&\n !config.removedComponents.length &&\n isEmptyObject(config.articleAttributes) &&\n isEmptyObject(config.modules) &&\n isEmptyObject(config.upsellingModules)\n );\n}\n","\ndiv.card.d-flex.overflow-hidden.px-5.py-3\n div.card__text.mr-auto.pe-4.d-flex.flex-column.justify-center.flex-shrink-1(@click=\"openProductDetail\")\n div.text-body-1.font-weight-medium.pb-1.text-truncate {{ product.name }}\n div.card__description.w-100.pb-2.text-caption.text-truncate(v-if=\"product.description\" style=\"color: #6b8093;\") {{ product.description }}\n div.font-weight-regular(v-if=\"!hidePrices && product.price\" :class=\"!isAvailableInStock(product) ? 'text-error text-caption' : ''\") {{ isAvailableInStock(product) ? formatPrice(product.price) : $t(\"order.product.notAvailableInStock\") }}\n div.text-caption(v-if=\"product.isHarmful\") {{ $t(\"order.product.isHarmful\") }}\n\n div.card__image-container.position-relative.flex-shrink-0.rounded.overflow-hidden\n EatImage.card__image(:src=\"getImageSrc(product)\" :lazyLoading=\"true\")\n div.absolute-cover\n div.absolute-tl.pa-2(v-if=\"product.allergens\")\n div.text-caption.text-white.rounded-sm.border.px-2.py-1(style=\"background-color: #0000006f; backdrop-filter: blur(10px);\") {{ $t('productBuilder.allergens') }}\n button.absolute-tr.pa-2(v-if=\"false\")\n EatIcon(icon=\"$heart\").text-white\n div.absolute-blr.px-5.pb-2\n EatStepper(small @increase=\"changeQuantity(+1)\" :value=\"quantityProductInCart\" @decrease=\"changeQuantity(-1)\" v-if=\"!readonly\")\n\n\n\n\n\n","\ndiv\n div.sticky-container.d-flex.flex-column \n div.categories-slider.d-flex.bg-white.border-b.flex-shrink-0(v-scrollable=\"false\")\n button.flex-grow-0.px-4.d-flex.align-center(v-if=\"!isLoading\" @click=\"onOpenDialog\")\n EatIcon(icon=\"$hamburger\")\n \n div.flex-grow-1.categories-slider.d-flex( v-scrollable=\"true\" :id=\"`${saletype}-category-slider-scrollable`\")\n div.categories-slider.d-flex.py-4.px-4.gap-10(v-if=\"isLoading\" v-scrollable=\"true\")\n div.bg-skeleton.skeleton-text-body-1.w-9.flex-shrink-0(v-for=\"k in skeletonCards\" :key=\"k\" v-if=\"isLoading\")\n button.category-slider__btn.py-4.px-4(\n v-else\n v-for=\"category, j in renderedCategories\" :key=\"category.id\" \n :id=\"`btn-${saletype}-${category.id}`\" \n :class=\"{ active: isActiveCategory(category.id), 'me-3': j === renderedCategories.length - 1 }\" \n @click=\"scrollToCategory(category.id)\"\n ) {{ category.name }}\n\n div.flex-shrink-0.flex-grow-1.d-flex.flex-column\n div.px-4.pt-5.pb-6.bg-white.mt-1(v-if=\"tags && tags.length\")\n button.select.rounded-lg.overflow-hidden(:class=\"isActive ? 'active text-primary border border-clr-primary' : 'border'\" @click=\"showTags = !showTags\") \n div.d-flex.align-center.ps-4.pe-5.py-3(:class=\"{ bgselected: isActive } \")\n EatIcon.mr-2(:icon=\"showTags ? '$chevronUp' : '$chevronDown'\" :size=\"14\" :class=\"{ 'text-primary' : isActive }\") \n div(style=\"line-height: 16px;\") {{ $t('order.tagsSelector.filters') }}\n transition(name=\"fade\")\n div.d-flex.flex-wrap.mt-4(v-if=\"showTags\") \n button.tag-toggle.mb-2.me-2(v-for=\"tag, i in tags\" :key=\"`tag-${i}`\" @click=\"toggleSelectedTag(tag)\" :class=\"isSelected(tag) ? 'bgselected' : ''\") \n div.pa-2.rounded-sm(:class=\"isSelected(tag) ? 'text-primary border border-clr-primary' : 'border'\") {{ tag }}\n\n div(v-if=\"isLoading\")\n EatUl.skeleton-rounded-container.rounded-xxl.bg-white.overflow-hidden.mt-1.py-3.px-0\n div.skeleton-rounded-container__title.bg-skeleton.ma-5\n EatLi.skeleton-card.d-flex.px-5.py-3(v-for=\"i in skeletonCards\" :key=\"i+10\")\n div.skeleton-card__text.flex-grow-1.d-flex.flex-column.justify-center\n div.skeleton-card__title.bg-skeleton.mb-3\n div.skeleton-card__subtitle.bg-skeleton\n div.skeleton-card__image.bg-skeleton.rounded\n\n div.flex-grow-1.d-flex.flex-column(v-else-if=\"renderedCategories && renderedCategories.length\")\n TransitionGroup(name=\"fade\")\n RoundedContainer.mb-1.overflow-hidden(\n v-for=\"category, k in renderedCategories\" \n :key=\"category.id\"\n :top-flat=\"k === 0\" \n :horizontal-padding=\"false\"\n :title=\"category.name\" \n :subtitle=\"getCategorySubtitle(category)\"\n :id=\"`${saletype}-${category.id}`\" \n )\n ProductCard(v-for=\"product, i in category.products\" :key=\"product.id\" :product=\"product\" :class=\"{'border-t': i > 0}\" :readonly=\"readonly\")\n \n Transition(name=\"fade\" tag=\"div\" v-else)\n div.products__placeholder.bg-white.rounded-b-xxl.mb-8.pt-8.d-flex.justify-center\n div {{ $t(\"order.categoriesSection.noProducts\") }}\n\n FullPageDialog(v-model=\"showDialog\" :scrollable=\"true\")\n template(v-slot:header)\n div.d-flex.px-4.py-2.w-100.gap-4.align-center\n EatIconBtn(:size=\"24\" @click=\"onCloseDialog\" icon=\"$close\")\n span.text-h6.font-weight-medium {{ $t(\"order.categories\") }}\n template(v-slot:main)\n CategoriesSelector(:saletype=\"saletype\" @close=\"onCloseDialog\")\n\n\n\n\n\n","\nFullPageDialog(v-model=\"showDialog\")\n template(v-slot:header)\n div.d-flex.flex-column(style=\"width: 100%\")\n div.d-flex.align-center.pa-2.bg-white\n EatIconBtn.me-4.ms-3(icon=\"$close\" :size=\"16\" @click=\"onCloseDialog\")\n div.product-name.text-body-1.font-weight-medium.text-truncate.pe-6(v-if=\"product\") {{ product.name }}\n \n template(v-slot:main)\n div.product-builder__container.bg-neutral-a.flex-grow-1(v-if=\"product\")\n div.rounded-b-xxl.bg-white.py-3.px-5\n EatImage.product-builder__image.rounded(\n :src=\"getImageSrc(product)\"\n :lazyLoading=\"true\"\n )\n div.card-opened__text.d-flex.flex-column.justify-center.px-3\n div.text-body-1.font-weight-medium.pb-1.pt-3 {{ product.name }}\n div.text-body-1.font-weight-regular(v-if=\"!hidePrices && product.price !== 0\") {{ formatPrice(product.price) }}\n div.text-caption(v-if=\"product.isHarmful\") {{ $t(\"order.product.isHarmful\") }}\n div.px-3.py-4.text-caption {{ product.description }}\n\n ProductBuilder.mt-1.pb-15.mb-15(:readonly=\"readonly\")\n\n div.float-btn__container(v-if=\"!readonly\")\n div.float-btn__background.rounded.px-7.pb-5.pt-2.d-flex.flex-column\n div.text-h6.font-weight-regular.ms-auto.mb-2(v-if=\"!hidePrices\") {{ $t(\"cart.total\", { price: formatPrice(configurationTotal)}) }}\n div.float-btn__controls\n EatStepper(v-if=\"!readonly\" @increase=\"changeConfigurationQuantity(+1)\" :value=\"quantity || 0\" @decrease=\"changeConfigurationQuantity(-1)\" :contractable=\"false\")\n EatFloatBtn(@click=\"onProductBuilderSubmit\") \n div.text-truncate {{ $t(\"productBuilder.addToCart\") }} \n\n\n\n\n\n"],"names":["gsap","product","selected","i","groupIndex","configuration","_a","element","categories","quantity"],"mappings":"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"}