1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="78c3d581-052e-491b-b308-4acbbbecde25",e._sentryDebugIdIdentifier="sentry-dbid-78c3d581-052e-491b-b308-4acbbbecde25")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1492],{6138:(e,t,r)=>{r.d(t,{Pd:()=>o,SR:()=>s,Vr:()=>n,kf:()=>l,w5:()=>d});let a="gpg_checkout_idem";function i(){try{if("u">typeof crypto&&"function"==typeof crypto.randomUUID)return crypto.randomUUID()}catch{}try{if("u">typeof crypto&&"function"==typeof crypto.getRandomValues){let e=new Uint8Array(16);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,"0")).join("")}}catch{}return`fallback-${Date.now()}-${Math.random().toString(36).slice(2)}`}function o(e){let t=[e.items.map(e=>`${e.id??"?"}x${e.quantity}@${e.totalPrice.toFixed(2)}`).sort().join("|"),e.total.toFixed(2),e.paymentMethod,e.deliveryType];if(e.customer){let r=e.customer,a=e=>(e??"").trim().toLowerCase();t.push([a(r.firstName),a(r.lastName),a(r.email),a(r.phonePrefix),a(r.phone),a(r.companyName),a(r.streetAddress),a(r.zipCode),a(r.city)].join("~"))}return t.join("#")}function n(e){try{let t=sessionStorage.getItem(a);if(t){let r=JSON.parse(t);if(r&&r.key&&r.fingerprint===e)return r.key}let r=i();return sessionStorage.setItem(a,JSON.stringify({key:r,fingerprint:e})),r}catch{return i()}}function l(e,t){try{let r=sessionStorage.getItem(a);if(!r)return;let i=JSON.parse(r);if(!i||i.fingerprint!==e)return;sessionStorage.setItem(a,JSON.stringify({...i,...t}))}catch{}}function s(e){try{let t=sessionStorage.getItem(a);if(!t)return null;let r=JSON.parse(t);if(r&&r.fingerprint===e&&r.customerId&&r.addressId)return{customerId:r.customerId,addressId:r.addressId};return null}catch{return null}}function d(){try{sessionStorage.removeItem(a)}catch{}}},12820:(e,t,r)=>{function a(e){return"object"==typeof e&&null!==e&&"type"in e&&("item"===e.type||"drink"===e.type)&&"id"in e&&"string"==typeof e.id&&"sourceId"in e&&"number"==typeof e.sourceId&&"name"in e&&"string"==typeof e.name}function i(e){return"object"==typeof e&&null!==e&&"sourceId"in e&&"number"==typeof e.sourceId}r.d(t,{l0:()=>a,no:()=>i})},22412:(e,t,r)=>{r.d(t,{ko:()=>l,hg:()=>s,pl:()=>d});var a=r(60179),i=r(75284),o=r(93892);let n="Gutschein";function l(e,t,r,l,s){let d=s?.trim().toLowerCase(),u=[];if(!e.discounts||0===e.discounts.length)return{discounts:[],totalDiscount:0,subtotalAfterDiscount:t.subtotal};if(0===t.items.length||t.subtotal<=0)return{discounts:[],totalDiscount:0,subtotalAfterDiscount:0};let c=(0,i.Rq)(e.discounts),p=!!d&&c.some(e=>"code"===e.targetGroup&&e.code?.trim().toLowerCase()===d&&(0,a._7)(e));for(let i of c){if("items"===i.articleScope.type||("app"===i.targetGroup||"code"===i.targetGroup)&&i.freeDelivery||"app"===i.targetGroup&&p||"code"===i.targetGroup&&(!d||i.code?.trim().toLowerCase()!==d)||!(0,a._7)(i)||!function(e,t,r){switch(e.targetGroup){case"all":case"code":return!0;case"delivery":return"delivery"===t;case"pickup":return"pickup"===t;case"newCustomer":return r?.isNewCustomer===!0;case"birthday":return r?.isBirthday===!0;case"company":return r?.isCompany===!0;case"women":return r?.gender==="female";case"men":return r?.gender==="male";case"app":return(0,o.isAppContext)();default:return!1}}(i,r,l)||i.deliveryType&&"all"!==i.deliveryType&&i.deliveryType!==r||null!=i.minOrderForDiscount&&t.subtotal<i.minOrderForDiscount)continue;let s=function(e,t,r){let a=e.articleScope,i=0;for(let e of t.items)(function(e,t,r){if("regular"===e.type&&e.menuItem.discountExcluded||"combo"===e.type&&e.discountExcluded)return!1;switch(t.type){case"all":return!0;case"items":var a;if(!t.itemIds)return!1;let i="regular"===(a=e).type?a.menuItem.sourceId??null:"combo"===a.type?a.sourceId??null:null;return null!==i&&t.itemIds.includes(i);case"categories":if(!t.categoryIds)return!1;let o=function(e,t){if("regular"!==e.type)return null;let r=e.menuItem;for(let e of t)if(e.items?.find(e=>e.id===r.id))return e.sourceId;return null}(e,r);return null!==o&&t.categoryIds.includes(o);default:return!1}})(e,a,r)&&(i+=e.totalPrice);return i}(i,t,e.menu?.categories||[]);if(s<=0)continue;let c=function(e,t){let r;if(t<=0)return 0;let a=function(e,t){if(!e.tiers||0===e.tiers.length)return e.amount;for(let r of[...e.tiers].sort((e,t)=>
1t.threshold-e.threshold))if(t>=r.threshold)return r.amount;return 0}(e,t);return a<=0||(r="percent"===e.amountType?t*a/100:a,"add"===e.operation)?0:(null!=e.maxDiscountAmount&&e.maxDiscountAmount>0&&(r=Math.min(r,e.maxDiscountAmount)),Math.round(100*r)/100)}(i,s);if(c<.01)continue;let m="code"===i.targetGroup&&i.code?`${n} ${i.code}`:i.name||"Rabatt",f={discountId:i.id,sourceId:i.sourceId,name:m,amount:c,appliedTo:"all"===i.articleScope.type?"order":"item",discount:i};u.push(f)}if(t.deliveryCost&&t.deliveryCost>0){for(let e of c)if(e.freeDelivery&&e.active&&(0,a._7)(e)){if("app"===e.targetGroup&&!p&&(0,o.isAppContext)()){u.push({discountId:e.id,sourceId:e.sourceId,name:"Gratis Lieferung via App",amount:t.deliveryCost,appliedTo:"order",discount:e});break}if("code"===e.targetGroup&&d&&e.code?.trim().toLowerCase()===d){u.push({discountId:e.id,sourceId:e.sourceId,name:`${n} ${e.code}`,amount:t.deliveryCost,appliedTo:"order",discount:e});break}}}let m=Math.min(u.reduce((e,t)=>e+t.amount,0),t.subtotal),f=Math.max(0,t.subtotal-m);return{discounts:u,totalDiscount:m,subtotalAfterDiscount:f}}function s(e){return"percent"===e.amountType?`${e.amount}%`:`${e.amount.toFixed(2).replace(".",",")} â¬`}function d(e,t,r){let i={hasDiscount:!1,discount:null,displayText:null};if(!e||!t||0===t.length)return i;for(let i of t){if(!(0,a._7)(i)||r&&"all"!==i.targetGroup&&i.targetGroup!==r)continue;let t=i.articleScope;if("items"===t.type&&t.itemIds&&t.itemIds.includes(e))return{hasDiscount:!0,discount:i,displayText:s(i)}}return i}},29422:(e,t,r)=>{r.d(t,{CJ:()=>p,Ip:()=>d,K$:()=>u,O$:()=>i,Vy:()=>c,hp:()=>l,mJ:()=>n,tt:()=>o});var a=r(60179);function i(e){let t=e.settings.iosStoreUrl??e.settings.appStoreUrl,r=e.settings.androidStoreUrl??e.settings.playStoreUrl;return!!(t||r)}function o(e){return s(e).length>0}function n(e){if("u"<typeof navigator)return null;let t=navigator.userAgent;return/iPhone|iPad|iPod/.test(t)?e.settings.iosStoreUrl??e.settings.appStoreUrl??null:/Android/.test(t)?e.settings.androidStoreUrl??e.settings.playStoreUrl??null:null}function l(e){return{appStore:e.settings.iosStoreUrl??e.settings.appStoreUrl??null,playStore:e.settings.androidStoreUrl??e.settings.playStoreUrl??null}}function s(e){return e.discounts?e.discounts.filter(e=>e.active&&"app"===e.targetGroup&&"subtract"===e.operation&&(0,a._7)(e)):[]}function d(e){return s(e).some(e=>e.freeDelivery)}function u(e){let t=s(e).filter(e=>"percent"===e.amountType&&e.amount>0&&!e.freeDelivery);return 0===t.length?null:t.reduce((e,t)=>t.amount>e.amount?t:e)}function c(e){let t=s(e).filter(e=>"fixed"===e.amountType&&e.amount>0&&!e.freeDelivery);return 0===t.length?null:t.reduce((e,t)=>t.amount>e.amount?t:e)}function p(e){if(d(e))return"Gratis Lieferung";let t=u(e);return t?`${t.amount}% Rabatt in der App`:null}},29584:(e,t,r)=>{r.d(t,{CF:()=>a,Gf:()=>n,cx:()=>o,d5:()=>l,dg:()=>d,wW:()=>i,yJ:()=>s});let a=5,i=15,o=/\b(?:getränk|getraenk|bier|wein|sekt|spirituose|softdrink|alkohol)/i,n=5,l={CART:"gopizzago_cart",DELIVERY_ADDRESS:"gopizzago_delivery_address_v3",DELIVERY_TYPE:"gopizzago_delivery_type",SAVED_ADDRESSES:"gopizzago_saved_addresses_v3",CONTACT_DETAILS:"gopizzago_contact_details"},s="Meine Adresse",d=2592e6},31492:(e,t,r)=>{r.d(t,{CartProvider:()=>v,IS:()=>f,_$:()=>S});var a=r(95155),i=r(12115),o=r(12820);let n=/^\d{5}$/,l={STREET_REQUIRED:"Stra\xdfe ist erforderlich",STREET_TOO_SHORT:"Stra\xdfe muss mindestens 2 Zeichen lang sein",STREET_TOO_LONG:"Stra\xdfe darf maximal 100 Zeichen lang sein",HOUSE_NUMBER_REQUIRED:"Hausnummer ist erforderlich",HOUSE_NUMBER_TOO_LONG:"Hausnummer darf maximal 10 Zeichen lang sein",POSTAL_CODE_REQUIRED:"Postleitzahl ist erforderlich",POSTAL_CODE_INVALID:"Postleitzahl muss genau 5 Ziffern haben",CITY_REQUIRED:"Stadt ist erforderlich",CITY_TOO_SHORT:"Stadt muss mindestens 2 Zeichen lang sein",CITY_TOO_LONG:"Stadt darf maximal 50 Zeichen lang sein",LABEL_REQUIRED:"Adressbezeichnung ist erforderlich",LABEL_TOO_SHORT:"Bezeichnung muss mindestens 1 Zeichen lang sein",LABEL_TOO_LONG:"Bezeichnung darf maximal 30 Zeichen lang sein"};function s(e){let t={},r=(e.street??"").trim();r?r.length<2?t.street=l.STREET_TOO_SHORT:r.length>100&&(t.street=l.STREET_TOO_LONG):t.street=l.STREET_REQUIRED;let a=(e.houseNumber??"").trim();a?a.length>10&&(t.houseNumber=l.HOUSE_NUMBER_TOO_LONG):t.houseNumber=l.HOUSE_NUMBER_REQUIRED;let i=(e.postalCode??"").trim();i?n.test(i)||(t.postalCode=l.POSTAL_CODE_INVALID):t.postalCode=l.POSTAL_CODE_REQUIRED;let o=(e.city??"").trim();
1return o?o.length<2?t.city=l.CITY_TOO_SHORT:o.length>50&&(t.city=l.CITY_TOO_LONG):t.city=l.CITY_REQUIRED,{isValid:0===Object.keys(t).length,errors:t}}function d(e){let t={...s(e.address).errors};if(void 0!==e.label&&null!==e.label){let r=e.label.trim();r.length>0&&r.length<1?t.label=l.LABEL_TOO_SHORT:r.length>30&&(t.label=l.LABEL_TOO_LONG)}return{isValid:0===Object.keys(t).length,errors:t}}function u(e){return{street:(e.street??"").trim(),houseNumber:(e.houseNumber??"").trim(),postalCode:(e.postalCode??"").trim(),city:(e.city??"").trim(),coordinates:e.coordinates,plzid:e.plzid,locality:e.locality,sublocality:e.sublocality,matchMethod:e.matchMethod,matchSource:e.matchSource}}var c=r(1e3),p=r(22412),m=r(29584);function f(e){return!!e&&m.cx.test(e)}var g=r(96723),y=r(6138),h=r(29734);let b=(0,i.createContext)(void 0),S=()=>{let e=(0,i.useContext)(b);if(!e)throw Error("useCart must be used within a CartProvider");return e},v=({children:e})=>{let{shop:t}=(0,c.q)(),{trackBelowMbwState:r,trackEvent:n}=(0,h.z1)(),l=t?.settings?.deliveryEnabled??!0,f=t?.settings?.pickupEnabled??!0,[S,v]=(0,i.useState)(!1),[E,I]=(0,i.useState)(!1),[D,C]=(0,i.useState)("delivery"),[A,T]=(0,i.useState)(null),[O,R]=(0,i.useState)([]),[w,k]=(0,i.useState)(null),[_,F]=(0,i.useState)(!1),[$,z]=(0,i.useState)(null),[x,G]=(0,i.useState)({items:[],totalItems:0,subtotal:0,mbwBase:0,deposit:0,deliveryCost:void 0,discounts:[],discountTotal:0,total:0,minOrderValue:m.wW,remainingForMinOrder:m.wW,smallOrderSurcharge:0}),L=(0,i.useCallback)((e,r,a)=>{if(!t?.deliveryAreas||0===t.deliveryAreas.length)return;let i=t.deliveryAreas.filter(t=>t.postalCode===e);if(0!==i.length){if(1===i.length||1===new Set(i.map(e=>`${e.minOrderValue}-${e.deliveryFee}`)).size)return i[0];if(a?.plzid!==void 0){let t=i.find(e=>e.legacyPlzId===a.plzid);if(t)return t;console.warn("[Cart] Stale plzid",a.plzid,"not found in current areas for PLZ",e)}}},[t?.deliveryAreas]),N=(0,i.useCallback)((e,r,a,i)=>{if(!t?.deliveryAreas||0===t.deliveryAreas.length)return void console.error("[cart] Shop has no delivery areas defined - delivery costs cannot be calculated");let o=L(e,r,i);if(o)return o.freeDeliveryFrom&&void 0!==a&&a>=o.freeDeliveryFrom?(console.log(`[cart] Free delivery threshold met! Subtotal: ${a.toFixed(2)}⬠>= ${o.freeDeliveryFrom}â¬`),0):o.deliveryFee},[t?.deliveryAreas,L]),U=(0,i.useCallback)((e,r,a)=>{if(!e||!t?.deliveryAreas||0===t.deliveryAreas.length)return m.wW;let i=L(e,r,a);return i?.minOrderValue??m.wW},[t?.deliveryAreas,L]);(0,i.useEffect)(()=>{try{let e=localStorage.getItem(m.d5.CART);if(e)try{let t=JSON.parse(e);if(!t||"object"!=typeof t)throw Error("Invalid cart structure");let r=Date.now(),a=t.savedAt||0,i=r-a;if(a>0&&i>m.dg)console.log(`[cart-validation] Cart expired (age: ${Math.round(i/864e5)} days), clearing cart`),localStorage.removeItem(m.d5.CART);else{let e=!1;if(t.items&&Array.isArray(t.items)&&t.items.forEach((t,r)=>{"regular"===t.type?((0,o.l0)(t.menuItem)||(console.warn(`Cart item ${r} has invalid menuItem structure (missing type field)`,t.menuItem),e=!0),"number"!=typeof t.menuItem.sourceId&&(console.warn(`Cart item ${r} has invalid sourceId (must be number for checkout)`,t.menuItem),e=!0)):"combo"===t.type&&"number"!=typeof t.sourceId&&(console.warn(`Cart combo item ${r} has invalid sourceId (must be number for checkout)`,t),e=!0)}),e)console.warn("[Cart] Invalid cart items found, clearing localStorage"),localStorage.removeItem(m.d5.CART);else{let e={items:t.items||[],totalItems:t.totalItems||0,subtotal:t.subtotal||0,mbwBase:t.mbwBase??0,deposit:t.deposit||0,deliveryCost:t.deliveryCost,discounts:t.discounts||[],discountTotal:t.discountTotal||0,total:t.total||0,minOrderValue:t.minOrderValue||0,remainingForMinOrder:t.remainingForMinOrder||0,smallOrderSurcharge:t.smallOrderSurcharge||0,savedAt:t.savedAt};G(e)}}}catch(e){console.error("[Cart] Error parsing cart from localStorage, clearing:",e),localStorage.removeItem(m.d5.CART)}let r=localStorage.getItem(m.d5.SAVED_ADDRESSES);if(r)try{let e=JSON.parse(r),a=e.map(e=>{let r=d(e);if(!r.isValid)return console.warn("[Cart] Invalid saved address found, removing:",r.errors),null;if(t?.deliveryAreas&&t.deliveryAreas.length>0){if(void 0===e.address.plzid)return e;if(!t.deliveryAreas.some(t=>t.legacyPlzId===e.address.plzid))return console.info("[Cart] Saved address plzid not found in current shop areas, stripping plzi
1d (address kept):",e.address.plzid),{...e,address:{...e.address,plzid:void 0}}}return e}).filter(e=>null!==e);if(JSON.stringify(a)!==JSON.stringify(e)&&localStorage.setItem(m.d5.SAVED_ADDRESSES,JSON.stringify(a)),R(a),t?.deliveryAreas&&t.deliveryAreas.length>0){let e=a.find(e=>e.isDefault&&void 0!==e.address.plzid);e&&T(e.address)}}catch(e){console.error("[Cart] Error loading saved addresses:",e),R([])}else{let e=localStorage.getItem(m.d5.DELIVERY_ADDRESS);if(e)try{let r=JSON.parse(e),a=!r.street&&!r.houseNumber,i=!!r.street&&!!r.houseNumber;if(r.postalCode&&void 0!==r.plzid&&(r.city||a))if(t?.deliveryAreas&&t.deliveryAreas.length>0&&!t.deliveryAreas.some(e=>e.legacyPlzId===r.plzid))console.info("[Cart] Persisted delivery address has stale plzid, clearing"),localStorage.removeItem(m.d5.DELIVERY_ADDRESS);else if(i){let e={id:crypto.randomUUID(),firstName:void 0,lastName:void 0,label:m.yJ,address:r,isDefault:!0,createdAt:Date.now()};R([e]),T(r),localStorage.setItem(m.d5.SAVED_ADDRESSES,JSON.stringify([e])),localStorage.removeItem(m.d5.DELIVERY_ADDRESS),console.info("[Cart] Migrated legacy address to saved addresses")}else a&&(T(r),console.info("[Cart] Restored PLZ-only delivery area from localStorage"));else console.warn("[Cart] Persisted address missing required fields, clearing"),localStorage.removeItem(m.d5.DELIVERY_ADDRESS)}catch(e){console.error("[Cart] Error loading delivery address:",e),localStorage.removeItem(m.d5.DELIVERY_ADDRESS)}}let a=new URLSearchParams(window.location.search).get("orderType");if("delivery"===a||"pickup"===a)C(a),localStorage.setItem(m.d5.DELIVERY_TYPE,a);else{let e=localStorage.getItem(m.d5.DELIVERY_TYPE);e&&("delivery"===e||"pickup"===e)&&C(e)}}catch(e){console.error("Error loading cart data from localStorage:",e),G({items:[],totalItems:0,subtotal:0,mbwBase:0,deposit:0,deliveryCost:void 0,discounts:[],discountTotal:0,total:0,minOrderValue:m.wW,remainingForMinOrder:m.wW,smallOrderSurcharge:0}),T(null),C("delivery")}finally{F(!0)}},[]),(0,i.useEffect)(()=>{_&&("delivery"===D&&!l&&f?C("pickup"):"pickup"===D&&!f&&l&&C("delivery"))},[_,D,l,f]),(0,i.useEffect)(()=>{if(_&&1)try{let e={...x,savedAt:Date.now()};localStorage.setItem(m.d5.CART,JSON.stringify(e))}catch(e){e instanceof RangeError?(console.error("[cart] RangeError during cart serialization â clearing cart from localStorage",e),localStorage.removeItem(m.d5.CART)):console.error("Error saving cart to localStorage:",e)}},[x,_]),(0,i.useEffect)(()=>{if(_&&1)try{A?localStorage.setItem(m.d5.DELIVERY_ADDRESS,JSON.stringify(A)):localStorage.removeItem(m.d5.DELIVERY_ADDRESS)}catch(e){console.error("Error saving address to localStorage:",e)}},[A,_]),(0,i.useEffect)(()=>{if(_&&1)try{O.length>0?localStorage.setItem(m.d5.SAVED_ADDRESSES,JSON.stringify(O)):localStorage.removeItem(m.d5.SAVED_ADDRESSES)}catch(e){console.error("[Cart] Error saving addresses to localStorage:",e)}},[O,_]),(0,i.useEffect)(()=>{if(_&&1)try{localStorage.setItem(m.d5.DELIVERY_TYPE,D)}catch(e){console.error("Error saving delivery type to localStorage:",e)}},[D,_]),(0,i.useEffect)(()=>{if(!_||!t?.deliveryAreas||0===t.deliveryAreas.length)return;let e=t.deliveryAreas;if(O.length>0){let t=!1,r=O.map(r=>void 0===r.address.plzid||e.some(e=>e.legacyPlzId===r.address.plzid)?r:(console.info("[Cart] Post-hydration: stripping stale plzid (address kept):",r.address.plzid),t=!0,{...r,address:{...r.address,plzid:void 0}}));if(t&&R(r),A?.plzid!==void 0&&(e.some(e=>e.legacyPlzId===A.plzid)||(console.info("[Cart] Post-hydration: clearing deliveryAddress with stale plzid:",A.plzid),T(null))),!A){let e=(t?r:O).find(e=>e.isDefault&&void 0!==e.address.plzid);e&&T(e.address)}}},[t?.deliveryAreas,_]);let M=(0,i.useCallback)(e=>{let r="pickup"===D?"pickup":"delivery",a=e.map(e=>{if("regular"!==e.type)return e;let a=e.menuItem;if(!a)return e;let i=a.price??0;if(e.selectedSize&&a.sizes){let t=a.sizes.find(t=>t.size===e.selectedSize);t&&(i=t.price)}if(!a.discountExcluded){let e=(0,p.pl)(a.sourceId,t?.discounts,r);e.hasDiscount&&e.discount&&("percent"===e.discount.amountType?i*=1-e.discount.amount/100:i=Math.max(0,i-e.discount.amount))}let o=i+(e.selectedExtras||[]).reduce((e,t)=>
1e+(t.price??0),0),n=o*e.quantity;return .005>Math.abs(n-e.totalPrice)?e:{...e,price:o,totalPrice:n}}),i=a.reduce((e,t)=>e+t.quantity,0),o=a.reduce((e,t)=>e+t.totalPrice,0),n=a.reduce((e,t)=>e+(t.totalDeposit??0),0),l=(0,g.dM)(o),s="pickup"===D?0:A?N(A.postalCode,A.coordinates,l,A):void 0,d="delivery"===D&&A?U(A.postalCode,A.coordinates,A):m.wW,u=(0,g.x4)(d,l),c="delivery"===D&&null!==A?(0,g.cn)(u):0,f=[],y=0;if(t&&a.length>0){let e="pickup"===D?"pickup":"delivery",r=(0,p.ko)(t,{items:a,totalItems:i,subtotal:o,mbwBase:l,deposit:n,deliveryCost:s,discounts:[],discountTotal:0,total:o+n+(s??0)+c,minOrderValue:d,remainingForMinOrder:u,smallOrderSurcharge:c},e,void 0,$??void 0);f=r.discounts,y=r.totalDiscount}let h=o+n+(s??0)+c-y;return{items:a,totalItems:i,subtotal:o,mbwBase:l,deposit:n,deliveryCost:s,discounts:f,discountTotal:y,total:h,minOrderValue:d,remainingForMinOrder:u,smallOrderSurcharge:c}},[D,A,N,U,t,$]);(0,i.useEffect)(()=>{_&&G(e=>M(e.items))},[A,D,_,M,t,$]),(0,i.useEffect)(()=>{0===x.items.length||r("delivery"===D&&x.remainingForMinOrder>0)},[x.items.length,x.remainingForMinOrder,D,r]);let V=(0,i.useRef)(null);(0,i.useEffect)(()=>{if("delivery"!==D||0===x.items.length||!A){V.current=null;return}let e=(0,g.bh)(x.remainingForMinOrder);e===V.current||(V.current=e,"normal"!==e&&n({category:"Cart",action:"Surcharge Zone Entered",name:e,value:Math.round(100*x.remainingForMinOrder)}))},[x.items.length,x.remainingForMinOrder,D,A,n]);let P=(0,i.useCallback)(e=>{let t=e.trim();z(t.length>0?t:null)},[]),B=(0,i.useCallback)(()=>{z(null)},[]),Y=(0,i.useCallback)(e=>{if("combo"===e.type){let{menuId:t,menuName:r,sourceId:a,itemSourceId:i,selections:o,totalPrice:n,quantity:l=1,notes:s,discountExcluded:d}=e;return("number"!=typeof a||a<=0)&&console.error("Invalid combo sourceId - must be a positive integer for PHP checkout compatibility",{menuId:t,sourceId:a}),{type:"combo",id:`combo-${t}-${Date.now()}`,menuId:t,menuName:r,sourceId:a,itemSourceId:i,selections:o,quantity:l,price:n,totalPrice:n*l,notes:s,...d&&{discountExcluded:d}}}let{menuItem:r,selectedSize:a,selectedExtras:i=[],quantity:n=1}=e;if(!(0,o.l0)(r))return console.error("[cart] Cannot add item - missing type field or invalid structure",{itemId:r.id,itemName:"name"in r?r.name:"Unknown"}),null;if("number"!=typeof r.sourceId||r.sourceId<=0)return console.error("[cart] Cannot add item - missing sourceId",{itemId:r.id,itemType:r.type,itemName:r.name,sourceId:r.sourceId}),null;if(a){let e=r.sizes?.find(e=>e.size===a);if(e&&(!e.sourceId||e.sourceId<=0))return console.error("[cart] Cannot add item - price missing sourceId",{itemName:r.name,size:a,priceId:e.id,priceSourceId:e.sourceId}),null}if(i&&i.length>0){let e=i.filter(e=>!e.legacyId);if(e.length>0)return console.error("[cart] Cannot add item - extras missing legacyId",{itemName:r.name,invalidExtras:e.map(e=>({name:e.name,id:e.id}))}),null}let l=r.price??0,s=0;if(a&&r.sizes){let e=r.sizes.find(e=>e.size===a);e&&(l=e.price,s=e.deposit??0)}else r.prices?.length===1&&(l=r.prices[0].price,s=r.prices[0].deposit??0);let d="pickup"===D?"pickup":"delivery",u=r.discountExcluded?{hasDiscount:!1,discount:null,displayText:null}:(0,p.pl)(r.sourceId,t?.discounts,d);return u.hasDiscount&&u.discount&&("percent"===u.discount.amountType?l*=1-u.discount.amount/100:l=Math.max(0,l-u.discount.amount)),l+=i.reduce((e,t)=>e+(t.price??0),0),{type:"regular",id:`${r.id}-${a||"default"}-${i.map(e=>e.id).join("-")}-${Date.now()}`,menuItem:r,selectedSize:a,selectedExtras:i,quantity:n,price:l,totalPrice:l*n,deposit:s,totalDeposit:s*n}},[t?.discounts]),J=(0,i.useCallback)(e=>{G(t=>{let r=Y(e);return r?M([...t.items,r]):t}),window.innerWidth>=1024&&v(!0)},[M,Y]),j=(0,i.useCallback)(e=>{G(t=>M(t.items.filter(t=>t.id!==e)))},[M]),H=(0,i.useCallback)((e,t)=>{t<=0?j(e):G(r=>M(r.items.map(r=>r.id===e?{...r,quantity:t,totalPrice:r.price*t,totalDeposit:(r.deposit??0)*t}:r)))},[M,j]),Z=(0,i.useCallback)((e,t)=>{G(r=>{let a=r.items.findIndex(t=>t.id===e),i=Y(t);if(!i)return r;if(-1===a)return M([...r.items,i]);let o=[...r.items];return o.splice(a,1,i),M(o)})},[M,Y]),W=(0,i.useCallback)(()=>{G({items:[],totalItems:0,subtotal:0,mbwBase:0,deposit:0,deliveryCost:void 0,discounts:[],discountTotal:0,total:0,minOrderValue:m.wW,remainingForMinOrder:m.wW,smallOrderSurcharge:0}),T(null),C("delivery"),z(null);try{localStorage.removeItem(m.d5.CART),localStorage.removeItem(m.d5.DELIVERY_ADDRESS),localStorage.removeItem(m.d5.DELIVERY_TYPE)}catch(e){console.error("Error clearing cart data from localStorage:",e)}(0,y.w5)()},[]),Q=(0,i.useCallback)(()=>{v(e=>!e)},[]),q=(0,i.useCallback)(e=>{C(e),G(e=>M(e.items))},[M]),K=(0,i.useCallback)(e=>{null!==e&&void 0===e.plzid?console.error("[Cart] Refusing to set delivery address without plzid:",e.postalCode):T(e)},[]),X=(0,i.useCallback)((e,t,r,a)=>{let i=u(e),o=s(i);if(!o.isValid)return console.error("[Cart] Address validation failed:",o.errors),k("Ung\xfcltige Adresse"),null;if(void 0===i.plzid)return console.error("[Cart] Refusing to save address without plzid:",i.postalCode),null;let n=O.find(e=>e.address.street===i.street&&e.address.houseNumber===i.houseNumber&&e.address.postalCode===i.postalCode&&e.address.city===i.city);if(n)return R(e=>e.map(e=>e.id===n.id?{...e,address:i,lastUsed:Date.now()}:e)),T(i),n;if(O.length>=m.CF)return console.error("[Cart] Maximum saved addresses limit reached"),k("Maximal 5 Adressen m\xf6glich"),null;let l={id:crypto.randomUUID(),firstName:t,lastName:r,label:a,address:i,isDefault:0===O.length,createdAt:Date.now(),lastUsed:Date.now()},c=d(l);return c.isValid?(R(e=>[...e,l]),T(i),l):(console.error("[Cart] Saved address validation failed:",c.errors),k("Adresse konnte nicht gespeichert werden"),null)},[O]),ee=(0,i.useCallback)(e=>{R(t=>{let r=t.filter(t=>t.id!==e),a=t.find(t=>
1t.id===e);if(!a)return console.warn("[Cart] Address not found:",e),t;if(A&&a.address.plzid===A.plzid&&a.address.street===A.street&&a.address.postalCode===A.postalCode){let e=r.find(e=>e.isDefault&&void 0!==e.address.plzid);e?T(e.address):T(null)}return a.isDefault&&r.length>0&&([...r].sort((e,t)=>(t.lastUsed||t.createdAt)-(e.lastUsed||e.createdAt))[0].isDefault=!0),r})},[A]),et=(0,i.useCallback)((e,t,r,a,i)=>{R(o=>o.map(o=>{if(o.id!==e)return o;let n=u(t),l=s(n);if(!l.isValid)return console.error("[Cart] Address validation failed:",l.errors),o;let c={...o,firstName:r,lastName:a,label:i,address:n},p=d(c);return p.isValid?c:(console.error("[Cart] Updated address validation failed:",p.errors),o)}))},[]),er=(0,i.useCallback)(e=>{R(t=>t.map(t=>({...t,isDefault:t.id===e})))},[]),ea=(0,i.useCallback)(e=>{let t=O.find(t=>t.id===e);t?(T(t.address),R(t=>t.map(t=>t.id===e?{...t,lastUsed:Date.now()}:t))):console.warn("[Cart] Saved address not found:",e)},[O]),ei=(0,i.useCallback)(()=>{R([]),T(null)},[]),eo=(0,i.useCallback)(e=>{G(M(e))},[M]);return(0,a.jsx)(b.Provider,{value:{cart:x,isCartOpen:S,deliveryType:D,deliveryEnabled:l,pickupEnabled:f,deliveryAddress:A,addToCart:J,removeFromCart:j,updateQuantity:H,replaceCartItem:Z,clearCart:W,setIsCartOpen:v,toggleCart:Q,setDeliveryType:q,setDeliveryAddress:K,calculateDeliveryCost:N,isHydrated:_,savedAddresses:O,addressError:w,setAddressError:k,addSavedAddress:X,removeSavedAddress:ee,updateSavedAddress:et,setDefaultAddress:er,loadSavedAddress:ea,clearAllSavedAddresses:ei,loadSessionCart:eo,showAddressModal:E,setShowAddressModal:I,appliedVoucherCode:$,applyVoucher:P,removeVoucher:B},children:e})}},51096:(e,t,r)=>{r.d(t,{Vt:()=>i,tx:()=>o});let a="Europe/Berlin";function i(e=new Date){return new Date(e.toLocaleString("en-US",{timeZone:a}))}function o(e=new Date){return new Intl.DateTimeFormat("en-CA",{timeZone:a,year:"numeric",month:"2-digit",day:"2-digit"}).format(e)}},60179:(e,t,r)=>{r.d(t,{_7:()=>o,nw:()=>l});var a=r(51096);let i={0:"7",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6"};function o(e,t=(0,a.Vt)()){return!!e.active&&function(e,t=(0,a.Vt)()){var r,o,l,s,d,u;switch(e.type){case"unlimited":return n(t,e.timeFrom,e.timeTo);case"dateRange":let c,p,m,f;return r=t,o=e.dateFrom,l=e.dateTo,f=(c=(s=r).getFullYear(),p=String(s.getMonth()+1).padStart(2,"0"),m=String(s.getDate()).padStart(2,"0"),`${c}-${p}-${m}`),(!o&&!l||(!o||!(f<o))&&(!l||!(f>l)))&&n(t,e.timeFrom,e.timeTo);case"weekday":return function(e,t){if(!t)return!0;let r=i[e.getDay()];return t.includes(r)}(t,e.weekdays)&&n(t,e.timeFrom,e.timeTo);case"dayOfMonth":return d=t,(null==(u=e.dayOfMonth)||d.getDate()===u)&&n(t,e.timeFrom,e.timeTo);default:return!1}}(e.schedule,t)}function n(e,t,r){var a;let i,o;if(!t&&!r)return!0;let n=(i=String((a=e).getHours()).padStart(2,"0"),o=String(a.getMinutes()).padStart(2,"0"),`${i}:${o}`),l="24:00"===r?"23:59":r;return(!t||!(n<t))&&(!l||!(n>l))}function l(e){let t=[];switch(e.type){case"unlimited":t.push("Immer g\xfcltig");break;case"dateRange":e.dateFrom&&e.dateTo?t.push(`${s(e.dateFrom)} - ${s(e.dateTo)}`):e.dateFrom?t.push(`Ab ${s(e.dateFrom)}`):e.dateTo&&t.push(`Bis ${s(e.dateTo)}`);break;case"weekday":var r;let a;e.weekdays&&t.push((r=e.weekdays,a={1:"Mo",2:"Di",3:"Mi",4:"Do",5:"Fr",6:"Sa",7:"So"},"1234567"===r?"T\xe4glich":"12345"===r?"Mo-Fr":"67"===r?"Wochenende":r.split("").map(e=>a[e]||e).join(", ")));break;case"dayOfMonth":e.dayOfMonth&&t.push(`Am ${e.dayOfMonth}. jeden Monats`)}if(e.timeFrom||e.timeTo){let r=e.timeFrom||"00:00",a="24:00"===e.timeTo?"24:00":e.timeTo||"24:00";("00:00"!==r||"24:00"!==a)&&t.push(`${r} - ${a} Uhr`)}return t.join(", ")||"Immer g\xfcltig"}function s(e){let[t,r,a]=e.split("-");return`${a}.${r}.${t}`}},75284:(e,t,r)=>{r.d(t,{Nz:()=>u,Rq:()=>c,_r:()=>m});var a=r(60179),i=r(29422);let o={pickup:"bei Abholung",delivery:"bei Lieferung",newCustomer:"f\xfcr Neukunden",birthday:"zum Geburtstag",company:"f\xfcr Firmenkunden",women:"f\xfcr Frauen",men:"f\xfcr M\xe4nner",all:"auf alles",app:"in der App"},n={pickup:"Abholung",delivery:"Lieferung",newCustomer:"Neukunden-Rabatt",birthday:"Geburtstags-Rabatt",company:"Firmen-Rabatt",women:"Frauen-Rabatt",men:"M\xe4nner-Rabatt",all:"Rabatt",app:"App-Rabatt"},l={pickup:{bg:"#FEF3C7",text:"#B45309",border:"#B45309"},delivery:{bg:"#DCFCE7",text:"#16A34A",border:"#16A34A"}
1,newCustomer:{bg:"#FFF7ED",text:"#EA580C",border:"#EA580C"},all:{bg:"#FFFBEB",text:"#D97706",border:"#D97706"},birthday:{bg:"#FCE7F3",text:"#DB2777",border:"#DB2777"},company:{bg:"#F3E8FF",text:"#9333EA",border:"#9333EA"},women:{bg:"#FDF2F8",text:"#EC4899",border:"#EC4899"},men:{bg:"#EFF6FF",text:"#3B82F6",border:"#3B82F6"},app:{bg:"#ECFDF5",text:"#059669",border:"#059669"},code:{bg:"#FFFBEB",text:"#D97706",border:"#D97706"}},s=[{bg:"#FFFBEB",text:"#D97706",border:"#D97706"},{bg:"#DCFCE7",text:"#16A34A",border:"#16A34A"},{bg:"#E0F2FE",text:"#0284C7",border:"#0284C7"},{bg:"#FFF7ED",text:"#EA580C",border:"#EA580C"},{bg:"#FCE7F3",text:"#DB2777",border:"#DB2777"},{bg:"#F3E8FF",text:"#9333EA",border:"#9333EA"}],d={pickup:"bag",delivery:"truck",newCustomer:"star",all:"percent",birthday:"gift",company:"tag",women:"tag",men:"tag",app:"smartphone",code:"tag"};function u(e){let t=c((e.discounts||[]).filter(e=>!!e.active&&"subtract"===e.operation&&!!(0,a._7)(e)&&"app"!==e.targetGroup&&"code"!==e.targetGroup)),r=t.some(e=>"pickup"===e.targetGroup),u=e.settings.pickupDiscount,m=[...t];!r&&u&&u>0&&m.push({id:"pickup-fallback",type:"discount",sourceId:0,targetGroup:"pickup",operation:"subtract",amount:u,amountType:"percent",schedule:{type:"unlimited"},articleScope:{type:"all"},active:!0});m.sort((e,t)=>{let r=+("pickup"!==e.targetGroup),a=+("pickup"!==t.targetGroup);return r!==a?r-a:t.amount-e.amount});let f=new Map,g=(0,i.O$)(e)?e.settings.androidStoreUrl??e.settings.playStoreUrl??e.settings.iosStoreUrl??e.settings.appStoreUrl??void 0:void 0;return m.map(e=>{var t;let r=f.get(e.targetGroup)||0;f.set(e.targetGroup,r+1);let i=g&&e.name?.startsWith("App ")?g:void 0;return{id:e.id,headline:function(e){var t;let r="percent"===(t=e).amountType?`${t.amount}%`:`${p(t.amount)} EUR`;if("categories"===e.articleScope.type)return`${r} auf ausgew\xe4hlte Kategorien`;if("items"===e.articleScope.type)return`${r} auf ausgew\xe4hlte Artikel`;if("pickup"===e.targetGroup)return`${r} Rabatt bei Abholung`;if("all"===e.targetGroup)return"fixed"===e.amountType?e.name||`${r} Rabatt`:`${r} auf alles`;if("app"===e.targetGroup&&"fixed"===e.amountType)return"Rabatt auf Lieferung per App";let a=o[e.targetGroup];return a?`${r} Rabatt ${a}`:`${r} Rabatt`}(e),badgeText:function(e){var t;let r="percent"===(t=e).amountType?`${t.amount}%`:`${t.amount.toFixed(0)}\u20AC`;if("newCustomer"===e.targetGroup)return n.newCustomer;if("birthday"===e.targetGroup)return n.birthday;let a=n[e.targetGroup];return`${r} ${a}`}(e),description:function(e){if("app"===e.targetGroup)return"Mit App bestellen und sparen";let t=[],r="all"!==e.articleScope.type;if(r&&("pickup"===e.targetGroup?t.push("Bei Abholung"):"delivery"===e.targetGroup&&t.push("Bei Lieferung")),"newCustomer"===e.targetGroup?t.push("F\xfcr Neukunden"):"birthday"===e.targetGroup?t.push("Zum Geburtstag"):"company"===e.targetGroup&&t.push("F\xfcr Firmenkunden"),"categories"===e.articleScope.type?t.push("auf ausgew\xe4hlte Kategorien"):"items"===e.articleScope.type&&t.push("auf ausgew\xe4hlte Artikel"),r||"pickup"!==e.targetGroup&&"delivery"!==e.targetGroup||t.push("Auf alle Artikel"),e.minOrderForDiscount&&e.minOrderForDiscount>0){let r=p(e.minOrderForDiscount);t.push(`ab ${r} Bestellwert`)}let i=(0,a.nw)(e.schedule);return(i&&"Immer g\xfcltig"!==i&&t.push(i),0===t.length&&e.description)?e.description:t.join(" ⢠")||e.name||""}(e),amountDisplay:"percent"===(t=e).amountType?`${t.amount}%`:`${t.amount.toFixed(0)}\u20AC`,contextLabel:function(e){if("categories"===e.articleScope.type)return"auf ausgew\xe4hlte Kategorien";if("items"===e.articleScope.type)return"auf ausgew\xe4hlte Artikel";let t=o[e.targetGroup];return"all"===e.targetGroup?"fixed"===e.amountType?"Rabatt":"auf alles":t?`Rabatt ${t}`:"Rabatt"}(e),targetGroup:e.targetGroup,icon:d[e.targetGroup]||"tag",colors:function(e,t){if(0===t)return l[e]||l.all;let r=l[e]||l.all,a=s.filter(e=>e.bg!==r.bg),i=(t-1)%a.length;return a[i]}(e.targetGroup,r),appCtaLink:i}})}function c(e){let t=new Map;for(let r of e){let e=`${r.targetGroup}:${r.amount}:${r.amountType}`,a=t.get(e);a?a.push(r):t.set(e,[r])}let r=[];for(let e of t.values())if(1===e.length)r.push(e[0]);else{let t=e.find(e=>"all"===e.articleScope.type);r.push(t||e[0])}return r}function p(e){return e.toFixed(2).replace(".",",")}function m(e){if(!u(e).find(e=>"pickup"===e.targetGroup))return null;let t=(e.discounts||[]).find(e=>e.active&&"subtract"===e.operation&&"pickup"===e.targetGroup);if(t){let e="percent"===t.amountType?`${t.amount}%`:`${t.amount.toFixed(2).replace(".",",")}â¬`;return`${e} Rabatt`}let r=e.settings.pickupDiscount;return r&&r>0?`${r}% Rabatt`:null}},96723:(e,t,r)=>{r.d(t,{bh:()=>l,cn:()=>n,dM:()=>i,x4:()=>o});var a=r(29584);function i(e){return Math.round(100*e)/100}function o(e,t){return i(Math.max(0,e-t))}function n(e){return e>0&&e<=a.Gf?e:0}function l(e){return e>a.Gf?"blocked":e>0?"surcharge":"normal"}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.