"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[769],{5769:function(e,r,t){t.d(r,{CP:function(){return getCategories},Cb:function(){return cleanupCategoryNames},DW:function(){return deleteAllCategories},EZ:function(){return createMenuItems},LW:function(){return createMenuItem},Lm:function(){return getMenuItem},Q5:function(){return uploadDrinkPlaceholderImage},U1:function(){return getDrinkPlaceholderImage},Uf:function(){return updateMenuItem},at:function(){return createMissingCategories},h1:function(){return syncCategoryIcons},k4:function(){return createCategory},k6:function(){return getFoodPlaceholderImage},n4:function(){return deleteAllMenuItems},sz:function(){return cleanupCategories},uu:function(){return deleteCategory},vf:function(){return getMenuItems},x3:function(){return uploadFoodPlaceholderImage},xH:function(){return deleteMenuItem},xx:function(){return parseAllergensString},yr:function(){return updateCategory},zc:function(){return repairCategories}});var n,a=t(1010),i=t(5766),s=t(2253),o=t(4932),l=t(1309),c=t(4586),u=t(7582),d=t(2497),h=t(2793),p=t(736),f="menuItems",g="categories",m=null,y=null,_=new Map,b=null,w=null,k=(n={vorspeisen:"tapas",starters:"lunch_dining",suppe:"soup_kitchen",suppen:"soup_kitchen",salat:"salad",salate:"salad",pasta:"ramen_dining",nudeln:"ramen_dining",hauptgericht:"restaurant",hauptgerichte:"restaurant",main:"restaurant",beilage:"restaurant_menu",beilagen:"restaurant_menu",sides:"restaurant_menu",fleisch:"kebab_dining",meat:"nutrition",fisch:"set_meal",fish:"set_meal",dessert:"icecream",desserts:"icecream",nachspeise:"icecream",nachspeisen:"icecream","golden food":"workspace_premium","golden food 24k":"workspace_premium",getränk:"local_bar",getränke:"local_bar",drinks:"local_bar",bier:"sports_bar",beer:"sports_bar",wein:"wine_bar",wine:"wine_bar",weisswein:"wine_bar",weißwein:"wine_bar",weissweine:"wine_bar",rotwein:"wine_bar",rotweine:"wine_bar",rosé:"wine_bar",rosewein:"wine_bar",roséwein:"wine_bar",spirituosen:"liquor",spirituose:"liquor",whiskey:"liquor",whisky:"liquor",bourbon:"liquor",scotch:"liquor",rum:"liquor",vodka:"water_drop",wodka:"water_drop",gin:"nightlife",tequila:"liquor",tequilla:"liquor",cognac:"liquor",brandy:"liquor",aperitif:"local_cafe",aperitivo:"local_cafe",liquer:"liquor",likör:"liquor",liqueur:"liquor",liqueure:"liquor",liköre:"liquor",schnaps:"liquor","spirituosen - whiskey":"liquor","spirituosen - whisky":"liquor","spirituosen - whiskey 0.4dl":"liquor","spirituosen - rum":"liquor","spirituosen - rum 0.4dl":"liquor","spirituosen - tequila":"liquor","spirituosen - tequila 0.4dl":"liquor","spirituosen - tequilla":"liquor","spirituosen - tequilla 0.4dl":"liquor","spirituosen - vodka":"water_drop","spirituosen - vodka 0.4dl":"water_drop","spirituosen - wodka":"water_drop","spirituosen - wodka 0.4dl":"water_drop","spirituosen - gin":"nightlife","spirituosen - gin 0.4dl":"nightlife","spirituosen - cognac":"liquor","spirituosen - cognac 0.4dl":"liquor","spirituosen - ap\xe9ro":"local_cafe","spirituosen - ap\xe9ro 0.4dl":"local_cafe","spirituosen - liquer":"liquor","spirituosen - liquer 0.4dl":"liquor","spirituosen - liqueure":"liquor","spirituosen - liqueure 0.4dl":"liquor","spirituosen - lik\xf6r":"liquor","spirituosen - lik\xf6r 0.4dl":"liquor",cocktail:"local_bar",cocktails:"local_bar","classic cocktails":"local_bar","signature cocktails":"stars","sour cocktails":"lemon",mocktail:"water_drop",mocktails:"water_drop",softdrink:"water_drop",softdrinks:"water_drop",saft:"water_drop",säfte:"water_drop",juice:"water_drop",wasser:"water_drop",water:"water_drop",kaffee:"coffee",coffee:"coffee",tee:"coffee",tea:"coffee",heissgetränk:"coffee",heissgetränke:"coffee",heißgetränk:"coffee",heißgetränke:"coffee",champagner:"champagne",champagne:"champagne","champagner / prosecco":"champagne",prosecco:"champagne",sekt:"champagne",saucen:"takeout_dining",sauce:"takeout_dining","saucen & extras":"takeout_dining",soßen:"takeout_dining",extras:"add"},(0,i._)(n,"beilage","add"),(0,i._)(n,"beilagen","add"),n),v=["restaurant","local_bar","coffee","lunch_dining","dinner_dining","tapas","soup_kitchen","ramen_dining","salad","kebab_dining","bakery_dining","icecream","cake","set_meal","wine_bar","sports_bar","liquor","champagne","water_drop","nightlife","local_cafe","fastfood","brunch_dining","lemon","stars","restaurant_menu","menu_book","nutrition","takeout_dining","workspace_premium","category","help_outline","question_mark","add","error","view_list","local_pizza","breakfast_dining","egg","egg_alt","cookie","cake","rice_bowl","ramen","rice","skillet","cooking","blender","microwave","kitchen","coffee_maker","local_dining","food_bank","egg_alt","takeout_dining","table_restaurant","table_bar","outdoor_grill","coffee_maker","liquor","flatware","dessert","local_drink","free_breakfast","bakery_dining","coffee_maker","menu_book","restaurant_menu","lunch_dining","dinner_dining","breakfast_dining","ice_cream","frozen_dessert","waffle","chocolate","cake","pie","stew","mushroom","fish","pie_chart","cottage","citron","lemon","pear","peach","apple","banana","orange","strawberry","watermelon","coconut","pineapple","kiwi","mango","dragonfruit","category","collections","bookmark","folder","list","view_list","view_module","view_quilt","dashboard","grid_view","grid_3x3","groups","group_work","lightbulb","star","star_border","stars","scatter_plot","auto_awesome","auto_fix","auto_fix_high","auto_stories","emoji_events","emoji_food_beverage","emoji_objects","emoji_symbols","favorite","favorite_border","local_fire_department","local_florist","psychology","insights","emoji_nature","eco","cruelty_free","compost","spa","grass","forest","park","nature","potted_plant","shopping_cart","shopping_bag","sell","receipt","payments","paid","price_check","price_change","loyalty","redeem","card_giftcard","savings","credit_card","wallet","currency_exchange","euro","attach_money","money","money_off","discount","percent","savings","local_offer","local_mall","storefront","store","badge","award","room_service","housekeeping","support_agent","concierge","celebration","cake","mood","self_improvement","spa","ac_unit","fireplace","deck","balcony","yard","light","light_mode","dark_mode","heating","nest_cam_wired_stand","air","air_purifier","counter","countertops","chair","chair_alt","weekend","deck","event_seat","nightlight","light","living","table_bar","meeting_room","door_front","door_back","door_sliding","elevator","sensor_door","stairs","roofing","balcony","fence","deck","fireplace","yard","home","info","settings","check","check_circle","close","menu","arrow_back","arrow_forward","keyboard_arrow_down","keyboard_arrow_up","keyboard_arrow_left","keyboard_arrow_right","more_vert","more_horiz","refresh","sync","search","filter_list","tune","sort","language","notifications","account_circle","person","group","public","call","mail","location_on","schedule","today","access_time","alarm","edit","delete","save","print","share","link","download","upload","delivery_dining","two_wheeler","pedal_bike","bike_scooter","moped","electric_bike","electric_scooter","directions_bike","directions_car","directions_run","directions_walk","directions_transit","car_rental","flight","local_shipping","local_taxi","local_activity","devices","phone_android","phone_iphone","timer","watch","watch_later","place"],C=["getr\xe4nke","drinks","bier","beer","wein","wine","weisswein","wei\xdfwein","rotwein","ros\xe9wein","sekt","champagner","prosecco","spirituosen","spirits","cocktails","mocktails","kaffee","coffee","tee","tea","softdrinks","wasser","water","saft","juice","whisky","whiskey","rum","wodka","vodka","gin","tequila","lik\xf6re","lik\xf6r","schnaps","liqueur","heissgetr\xe4nke","hei\xdfgetr\xe4nke","heisse getr\xe4nke","hei\xdfe getr\xe4nke","alkoholfreie getr\xe4nke","alkoholfreie drinks","alkoholisch","alkoholische getr\xe4nke","longdrinks","long drinks","shots","aperitif","aperitivo","digestif","schorle","smoothie","fruchtsaft","mineralwasser","cola","limonade","soda","energy drink","milch","milchmixgetr\xe4nk","milchshake"],x=["speisen","food","vorspeisen","starters","hauptspeisen","main","desserts","nachspeisen","suppen","soups","salate","salads","snacks","beilagen","sides","fleisch","meat","fisch","fish","vegetarisch","vegetarian","vegan","pasta","nudeln","pizza","burger","fr\xfchst\xfcck","breakfast","mittagessen","lunch","abendessen","dinner","steak","schnitzel","sandwich","toast","wrap","bowl","platte","bruschetta","tapas","fingerfood","vorspeise","hauptspeise","nachspeise","suppe","salat","beilage","gem\xfcse","vegetables","kartoffeln","pommes","reis","rice","bratkartoffeln","kuchen","cake","eis","ice cream","geb\xe4ck","pastry","s\xfc\xdfspeise","dessert"],I=["g","gramm","gr","kg","kilo","kilogramm","pfund","pfd","oz","unze","unzen","pound"],F=["ml","milliliter","l","liter","cl","zentiliter","dl","deziliter","fl","oz","fluid","gal","gallone"],S={a:"Glutenhaltiges Getreide",b:"Krebstiere und daraus gewonnene Erzeugnisse",c:"Eier und daraus gewonnene Erzeugnisse",d:"Fische und daraus gewonnene Erzeugnisse",e:"Erdn\xfcsse und daraus gewonnene Erzeugnisse",f:"Soja(bohnen) und daraus gewonnene Erzeugnisse",g:"Milch und daraus gewonnene Erzeugnisse",h:"Schalenfr\xfcchte",i:"Sellerie und daraus gewonnene Erzeugnisse",j:"Senf und daraus gewonnene Erzeugnisse",k:"Sesamsamen und daraus gewonnene Erzeugnisse",l:"Schwefeldioxid und Sulphite",m:"Lupinen und daraus gewonnene Erzeugnisse",n:"Weichtiere und daraus gewonnene Erzeugnisse",o:"Schalenfr\xfcchte",1:"Glutenhaltiges Getreide",7:"Milch und daraus gewonnene Erzeugnisse"};function parseAllergensString(e){if(!e)return[];var r=e.trim().toUpperCase();return r.match(/[A-Z0-9,;]/)?r.split(/[,;]/).map(function(e){return e.trim()}).filter(function(e){return e.length>0}).map(function(e){return S[e.toLowerCase()]||e}):[]}function getMenuItems(){return _getMenuItems.apply(this,arguments)}function _getMenuItems(){return(_getMenuItems=(0,a._)(function(){var e,r,t;return(0,u.Jh)(this,function(n){switch(n.label){case 0:if(n.trys.push([0,2,,3]),e=Date.now(),m&&y&&e-y<3e5)return[2,m];return r=(0,d.hL)(),[4,(0,h.PL)((0,h.hJ)(r,f))];case 1:return m=t=n.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}),y=e,[2,t];case 2:return console.error("Fehler beim Laden der Men\xfcpunkte:",n.sent()),[2,[]];case 3:return[2]}})})).apply(this,arguments)}function getMenuItem(e){return _getMenuItem.apply(this,arguments)}function _getMenuItem(){return(_getMenuItem=(0,a._)(function(e){var r,t,n,a,i;return(0,u.Jh)(this,function(o){switch(o.label){case 0:if(o.trys.push([0,2,,3]),_.has(e))return[2,_.get(e)];return r=(0,d.hL)(),t=(0,h.JU)(r,f,e),[4,(0,h.QT)(t)];case 1:if((n=o.sent()).exists())return a=(0,s._)({id:n.id},n.data()),_.set(e,a),[2,a];return[2,null];case 2:return i=o.sent(),console.error("Fehler beim Laden des Men\xfcpunkts ".concat(e,":"),i),[2,null];case 3:return[2]}})})).apply(this,arguments)}function createMenuItem(e){return _createMenuItem.apply(this,arguments)}function _createMenuItem(){return(_createMenuItem=(0,a._)(function(e){var r,t,n,a,i;return(0,u.Jh)(this,function(l){switch(l.label){case 0:return l.trys.push([0,2,,3]),r=(0,h.Bt)(),(t=(0,o._)((0,s._)({},e),{price:Number(e.price),order:Number(e.order||0),createdAt:r,updatedAt:r})).description&&(!t.allergens||!Array.isArray(t.allergens)||0===t.allergens.length)&&(n=extractAllergensFromDescription(t.description)).length>0&&(t.allergens=n),[4,(0,h.ET)((0,h.hJ)(d.db,f),t)];case 1:return a=l.sent(),m=null,[2,a.id];case 2:throw console.error("Fehler beim Erstellen des Speisekarteneintrags:",i=l.sent()),i;case 3:return[2]}})})).apply(this,arguments)}function updateMenuItem(e,r){return _updateMenuItem.apply(this,arguments)}function _updateMenuItem(){return(_updateMenuItem=(0,a._)(function(e,r){var t,n,a,i;return(0,u.Jh)(this,function(l){switch(l.label){case 0:return l.trys.push([0,2,,3]),t=(0,h.JU)(d.db,f,e),(n=(0,o._)((0,s._)({},r),{price:Number(r.price),order:Number(r.order||0),updatedAt:(0,h.Bt)()})).description&&(!n.allergens||!Array.isArray(n.allergens)||0===n.allergens.length)&&(a=extractAllergensFromDescription(n.description)).length>0&&(n.allergens=a),[4,(0,h.r7)(t,n)];case 1:return l.sent(),m=null,_.delete(e),[2,!0];case 2:throw console.error("Fehler beim Aktualisieren des Speisekarteneintrags:",i=l.sent()),i;case 3:return[2]}})})).apply(this,arguments)}function deleteMenuItem(e){return _deleteMenuItem.apply(this,arguments)}function _deleteMenuItem(){return(_deleteMenuItem=(0,a._)(function(e){var r,t;return(0,u.Jh)(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),r=(0,h.JU)(d.db,f,e),[4,(0,h.oe)(r)];case 1:return n.sent(),m=null,_.delete(e),[2,!0];case 2:throw console.error("Fehler beim L\xf6schen des Speisekarteneintrags:",t=n.sent()),t;case 3:return[2]}})})).apply(this,arguments)}function getCategories(){return _getCategories.apply(this,arguments)}function _getCategories(){return(_getCategories=(0,a._)(function(){var e,r,t;return(0,u.Jh)(this,function(n){switch(n.label){case 0:if(n.trys.push([0,2,,3]),b&&Date.now()-w<3e5)return[2,b];return e=(0,h.hJ)(d.db,g),[4,(0,h.PL)(e)];case 1:return b=r=n.sent().docs.map(function(e){var r=e.data();return(0,o._)((0,s._)({id:e.id},r),{isVisible:void 0===r.isVisible||r.isVisible})}),w=Date.now(),[2,r];case 2:throw console.error("Fehler beim Laden der Kategorien:",t=n.sent()),t;case 3:return[2]}})})).apply(this,arguments)}function createCategory(e){return _createCategory.apply(this,arguments)}function _createCategory(){return(_createCategory=(0,a._)(function(e){var r,t,n,a;return(0,u.Jh)(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),r=(0,h.hJ)(d.db,g),t=(0,o._)((0,s._)({},e),{isVisible:void 0===e.isVisible||e.isVisible,createdAt:(0,h.Bt)(),updatedAt:(0,h.Bt)()}),[4,(0,h.ET)(r,t)];case 1:return n=i.sent(),b=null,[2,(0,s._)({id:n.id},t)];case 2:throw console.error("Fehler beim Erstellen der Kategorie:",a=i.sent()),a;case 3:return[2]}})})).apply(this,arguments)}function updateCategory(e,r){return _updateCategory.apply(this,arguments)}function _updateCategory(){return(_updateCategory=(0,a._)(function(e,r){var t,n,a;return(0,u.Jh)(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),t=(0,h.JU)(d.db,g,e),n=(0,o._)((0,s._)({},r),{isVisible:void 0===r.isVisible||r.isVisible,updatedAt:(0,h.Bt)()}),[4,(0,h.r7)(t,n)];case 1:return i.sent(),b=null,[2,(0,s._)({id:e},n)];case 2:throw console.error("Fehler beim Aktualisieren der Kategorie:",a=i.sent()),a;case 3:return[2]}})})).apply(this,arguments)}function deleteCategory(e){return _deleteCategory.apply(this,arguments)}function _deleteCategory(){return(_deleteCategory=(0,a._)(function(e){var r,t,n;return(0,u.Jh)(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),r=encodeURIComponent(e),t=(0,h.JU)(d.db,g,r),[4,(0,h.oe)(t)];case 1:return a.sent(),b=null,[2,!0];case 2:throw console.error("Fehler beim L\xf6schen der Kategorie:",n=a.sent()),n;case 3:return[2]}})})).apply(this,arguments)}function deleteAllMenuItems(){return _deleteAllMenuItems.apply(this,arguments)}function _deleteAllMenuItems(){return(_deleteAllMenuItems=(0,a._)(function(){var e,r;return(0,u.Jh)(this,function(t){switch(t.label){case 0:return t.trys.push([0,3,,4]),[4,(0,h.PL)((0,h.hJ)(d.db,f))];case 1:return[4,Promise.all((e=t.sent()).docs.map(function(e){return(0,h.oe)((0,h.JU)(d.db,f,e.id))}))];case 2:return t.sent(),m=null,_.clear(),[2,{count:e.docs.length,success:!0}];case 3:throw console.error("Fehler beim L\xf6schen aller Men\xfcelemente:",r=t.sent()),r;case 4:return[2]}})})).apply(this,arguments)}function deleteAllCategories(){return _deleteAllCategories.apply(this,arguments)}function _deleteAllCategories(){return(_deleteAllCategories=(0,a._)(function(){var e,r;return(0,u.Jh)(this,function(t){switch(t.label){case 0:return t.trys.push([0,3,,4]),[4,(0,h.PL)((0,h.hJ)(d.db,g))];case 1:return[4,Promise.all((e=t.sent()).docs.map(function(e){return(0,h.oe)(e.ref)}))];case 2:return t.sent(),b=null,[2,{count:e.docs.length,success:!0}];case 3:throw console.error("Fehler beim L\xf6schen aller Kategorien:",r=t.sent()),r;case 4:return[2]}})})).apply(this,arguments)}function cleanupCategories(){return _cleanupCategories.apply(this,arguments)}function _cleanupCategories(){return(_cleanupCategories=(0,a._)(function(){var e,r,t,n,a,i,o,c,p,m,y,_,w,k,v,C,x,I,F,S,z;return(0,u.Jh)(this,function(q){switch(q.label){case 0:return q.trys.push([0,20,,21]),[4,(0,h.PL)((0,h.hJ)(d.db,g))];case 1:return e=q.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}),[4,(0,h.PL)((0,h.hJ)(d.db,f))];case 2:r=q.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}),t=new Map,r.forEach(function(e){e.category&&(t.has(e.category)||t.set(e.category,[]),t.get(e.category).push(e.id))}),n=new Map,a=new Map,i=[],e.forEach(function(e){var r=(e.name||"").trim();if(!r){i.push(e.id);return}var t=r.toLowerCase();n.has(t)?(a.has(t)||a.set(t,[n.get(t)]),a.get(t).push(e.id)):n.set(t,e.id)}),o={emptyCount:i.length,duplicateCount:a.size,deleted:0,redirected:0,details:[],success:!0},c=!0,p=!1,m=void 0,q.label=3;case 3:q.trys.push([3,9,10,11]),y=i[Symbol.iterator](),q.label=4;case 4:if(c=(_=y.next()).done)return[3,8];if(w=_.value,t.has(w))return[3,6];return[4,deleteCategory(w)];case 5:return q.sent(),o.deleted++,o.details.push({type:"empty",id:w,action:"deleted",message:"Leere Kategorie gel\xf6scht"}),[3,7];case 6:o.details.push({type:"empty",id:w,action:"skipped",message:"Leere Kategorie wird von ".concat(t.get(w).length," Gerichten verwendet und kann nicht gel\xf6scht werden")}),q.label=7;case 7:return c=!0,[3,4];case 8:return[3,11];case 9:return k=q.sent(),p=!0,m=k,[3,11];case 10:try{c||null==y.return||y.return()}finally{if(p)throw m}return[7];case 11:v=!0,C=!1,x=void 0,q.label=12;case 12:q.trys.push([12,17,18,19]),I=function(){var r,n,a,i,s,c,p,g,m,y,_,b;return(0,u.Jh)(this,function(w){switch(w.label){case 0:(r=(0,l._)(S.value,2))[0],a=(n=r[1])[0],i=n.slice(1),s=e.find(function(e){return e.id===a}),c=!0,p=!1,g=void 0,w.label=1;case 1:w.trys.push([1,6,7,8]),m=function(){var r,n,i,l,c,p,g,m,y,b,w;return(0,u.Jh)(this,function(u){switch(u.label){case 0:if(r=_.value,n=e.find(function(e){return e.id===r}),!t.has(r))return[3,9];i=t.get(r),l=!0,c=!1,p=void 0,u.label=1;case 1:u.trys.push([1,6,7,8]),g=i[Symbol.iterator](),u.label=2;case 2:if(l=(m=g.next()).done)return[3,5];return y=m.value,b=(0,h.JU)(d.db,f,y),[4,(0,h.r7)(b,{category:a})];case 3:u.sent(),u.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return w=u.sent(),c=!0,p=w,[3,8];case 7:try{l||null==g.return||g.return()}finally{if(c)throw p}return[7];case 8:o.redirected+=i.length,o.details.push({type:"duplicate",id:r,primaryId:a,name:null==n?void 0:n.name,primaryName:null==s?void 0:s.name,action:"redirected",count:i.length,message:"".concat(i.length,' Gerichte von "').concat(null==n?void 0:n.name,'" (').concat(r,') zu "').concat(null==s?void 0:s.name,'" (').concat(a,") umgeleitet")}),u.label=9;case 9:return[4,deleteCategory(r)];case 10:return u.sent(),o.deleted++,t.has(r)||o.details.push({type:"duplicate",id:r,primaryId:a,name:null==n?void 0:n.name,primaryName:null==s?void 0:s.name,action:"deleted",message:'Doppelte Kategorie "'.concat(null==n?void 0:n.name,'" (').concat(r,") gel\xf6scht, war nicht in Verwendung")}),[2]}})},y=i[Symbol.iterator](),w.label=2;case 2:if(c=(_=y.next()).done)return[3,5];return[5,(0,u.XA)(m())];case 3:w.sent(),w.label=4;case 4:return c=!0,[3,2];case 5:return[3,8];case 6:return b=w.sent(),p=!0,g=b,[3,8];case 7:try{c||null==y.return||y.return()}finally{if(p)throw g}return[7];case 8:return[2]}})},F=a.entries()[Symbol.iterator](),q.label=13;case 13:if(v=(S=F.next()).done)return[3,16];return[5,(0,u.XA)(I())];case 14:q.sent(),q.label=15;case 15:return v=!0,[3,13];case 16:return[3,19];case 17:return k=q.sent(),C=!0,x=k,[3,19];case 18:try{v||null==F.return||F.return()}finally{if(C)throw x}return[7];case 19:return b=null,[2,o];case 20:throw console.error("Fehler beim Bereinigen der Kategorien:",z=q.sent()),z;case 21:return[2]}})})).apply(this,arguments)}function normalizeForComparison(e){return e?e.toLowerCase().trim().replace(/\s+/g," ").replace(/[\/\\-_&]+/g," ").replace(/ä/g,"a").replace(/ö/g,"o").replace(/ü/g,"u").replace(/ß/g,"ss").replace(/[^a-z0-9 ]/g,""):""}function _findSimilarCategory(){return(_findSimilarCategory=(0,a._)(function(e){var r,t,n,a,i,s,o,l,c;return(0,u.Jh)(this,function(u){switch(u.label){case 0:if(!e)return[2,null];return[4,getCategories()];case 1:r=u.sent(),t=normalizeForComparison(e),n=!0,a=!1,i=void 0;try{for(s=r[Symbol.iterator]();!(n=(o=s.next()).done);n=!0)if(l=o.value,c=normalizeForComparison(l.name),t===c)return[2,l]}catch(e){a=!0,i=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw i}}return[2,null]}})})).apply(this,arguments)}function isWeight(e){if(!e)return!1;var r=String(e).toLowerCase().trim();if(/^\d{2,3}$/.test(r))return!0;var t=!0,n=!1,a=void 0;try{for(var i,s=I[Symbol.iterator]();!(t=(i=s.next()).done);t=!0){var o=i.value;if(r.includes(o))return!0}}catch(e){n=!0,a=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw a}}var l=!0,c=!1,u=void 0;try{for(var d,h=[/\d+\s*(g|gr|gramm|kg|kilo|kilogramm|pfund|pfd|oz|unze)/i,/\d+[,\.]\d+\s*(g|gr|gramm|kg|kilo|kilogramm|pfund|pfd|oz|unze)/i,/^(\d+)\s*-\s*(\d+)\s*(g|gr|gramm)$/i,/^ca\.\s*\d+\s*(g|gr|gramm|kg|kilo)/i,/^etwa\s*\d+\s*(g|gr|gramm|kg|kilo)/i,/^ungefähr\s*\d+\s*(g|gr|gramm|kg|kilo)/i][Symbol.iterator]();!(l=(d=h.next()).done);l=!0)if(d.value.test(r))return!0}catch(e){c=!0,u=e}finally{try{l||null==h.return||h.return()}finally{if(c)throw u}}var p=!0,f=!1,g=void 0;try{for(var m,y=["portion","st\xfcck","scheibe","steak","filet","fleisch","fisch","burger"][Symbol.iterator]();!(p=(m=y.next()).done);p=!0){var _=m.value;if(r.includes(_)&&/\d+/.test(r))return!0}}catch(e){f=!0,g=e}finally{try{p||null==y.return||y.return()}finally{if(f)throw g}}return!1}function isVolume(e){if(!e)return!1;var r=String(e).toLowerCase().trim();if(/^(0[,.]2|0[,.]25|0[,.]33|0[,.]4|0[,.]5|0[,.]75|1[,.]0|1[,.]5|2[,.]0)$/.test(r))return!0;var t=!0,n=!1,a=void 0;try{for(var i,s=F[Symbol.iterator]();!(t=(i=s.next()).done);t=!0){var o=i.value;if(r.includes(o))return!0}}catch(e){n=!0,a=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw a}}var l=!0,c=!1,u=void 0;try{for(var d,h=[/\d+\s*(ml|cl|dl|l|liter|milliliter|zentiliter|deziliter)/i,/\d+[,\.]\d+\s*(l|liter|ml|cl|dl)/i,/^(\d+)\s*-\s*(\d+)\s*(ml|cl|l)$/i,/^ca\.\s*\d+\s*(ml|cl|dl|l|liter)/i,/^etwa\s*\d+\s*(ml|cl|dl|l|liter)/i,/^ungefähr\s*\d+\s*(ml|cl|dl|l|liter)/i][Symbol.iterator]();!(l=(d=h.next()).done);l=!0)if(d.value.test(r))return!0}catch(e){c=!0,u=e}finally{try{l||null==h.return||h.return()}finally{if(c)throw u}}var p=!0,f=!1,g=void 0;try{for(var m,y=["flasche","glas","tasse","becher","krug","karaffe","cocktail","getr\xe4nk","drink"][Symbol.iterator]();!(p=(m=y.next()).done);p=!0){var _=m.value;if(r.includes(_)&&/\d+/.test(r))return!0}}catch(e){f=!0,g=e}finally{try{p||null==y.return||y.return()}finally{if(f)throw g}}return!1}function extractAllergensFromDescription(e){if(!e)return[];var r=[],t=!0,n=!1,a=void 0;try{for(var i,s,o=[/\(\s*([a-n](?:\s*,\s*[a-n])*)\s*\)/i,/(?:^|\s)([a-n](?:\s*,\s*[a-n])+)(?:\s|$)/i,/allergene\s*:?\s*([a-n](?:\s*,\s*[a-n])*)/i,/(?:^|\s)([a-n](?:\s+[a-n])+)(?:\s|$)/i][Symbol.iterator]();!(t=(s=o.next()).done);t=!0){var l=s.value,u=e.match(l);if(u&&u[1]){var d=u[1].match(/[a-n]/gi);d&&(r=(0,c._)(r).concat((0,c._)(d)))}}}catch(e){n=!0,a=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw a}}for(var h=/(?:enthält|enthalten|allergen[e]?)\s+([a-n])(?:\s|$|,|\.|;)/gi;null!==(i=h.exec(e));)i[1]&&r.push(i[1]);return(0,c._)(new Set(r.map(function(e){return e.toLowerCase()})))}function createMenuItems(e){return _createMenuItems.apply(this,arguments)}function _createMenuItems(){return(_createMenuItems=(0,a._)(function(e){var r,t,n,a,i,p,g,y,_,w,k,v,I,F,S,z,q,L,M,D,J,P,A,E,K,U,N,j,V,G,O,$,T,B,R,W,H,Z,X,Q,Y,ee,er,et,en,ea,ei,es,eo,el,ec,eu,ed,eh,ep,ef,eg,em,ey,e_,eb,ew,ek,ev,eC,ex,eI,eF,eS,ez,eq;return(0,u.Jh)(this,function(eL){switch(eL.label){case 0:if(eL.trys.push([0,44,,45]),r=(0,h.Bt)(),t={successful:0,failed:0,errors:[],warnings:[],duplicateDetected:0,categoriesMapped:0},!e||0===e.length)return[2,t];return console.log("Starte Import von ".concat(e.length," Artikeln...")),[4,Promise.all([getCategories(),getMenuItems()])];case 1:a=(n=l._.apply(void 0,[eL.sent(),2]))[0],i=n[1],p=a.map(function(e){return e.id}),a.map(function(e){return e.name?e.name.toLowerCase():""}),g=new Map,y=new Set,_=[],w=[],i.forEach(function(e){if(e.id&&y.add(e.id),e.name&&e.category){var r="".concat(e.name.toLowerCase().trim(),"__").concat(e.category.toLowerCase().trim());g.set(r,e.id)}}),k={},a.forEach(function(e){e.name&&(k[e.name.toLowerCase()]=e.id,k[normalizeForComparison(e.name)]=e.id)}),v=new Set,I=new Set,F=[],S=!0,z=!1,q=void 0,eL.label=2;case 2:eL.trys.push([2,9,10,11]),L=e[Symbol.iterator](),eL.label=3;case 3:if(S=(M=L.next()).done)return[3,8];D=M.value,eL.label=4;case 4:if(eL.trys.push([4,6,,7]),!D.name||!D.category)return t.failed++,t.errors.push({item:D.name||"Unbenannt",error:"Name und Kategorie sind Pflichtfelder"}),[3,7];if(J=(0,o._)((0,s._)({},D),{name:D.name.trim(),description:D.description?D.description.trim():"",category:D.category.trim(),price:"number"==typeof D.price?D.price:"string"==typeof D.price?parseFloat(D.price.replace(",",".")):0,order:"number"==typeof D.order?D.order:"string"==typeof D.order?parseInt(D.order,10):0}),P="".concat(J.name.toLowerCase().trim(),"__").concat(J.category.toLowerCase().trim()),g.has(P))return A=g.get(P),t.duplicateDetected++,t.warnings.push({item:J.name,warning:"Artikel existiert bereits (ID: ".concat(A,") und wird \xfcbersprungen.")}),[3,7];if(E=normalizeForComparison(J.category),p.includes(J.category))return F.push(J),[3,7];if(!J.category.includes(" ")&&J.category.length>3&&!k[J.category.toLowerCase()])return v.add(J.category),F.push(J),[3,7];if(k[J.category.toLowerCase()])return J.category=k[J.category.toLowerCase()],F.push(J),t.categoriesMapped++,[3,7];if(k[E])return J.category=k[E],F.push(J),t.categoriesMapped++,[3,7];return[4,function(e){return _findSimilarCategory.apply(this,arguments)}(J.category)];case 5:return(K=eL.sent())?(console.log('\xc4hnliche Kategorie f\xfcr "'.concat(J.category,'" gefunden: "').concat(K.name,'" (ID: ').concat(K.id,")")),J.category=K.id,F.push(J),t.categoriesMapped++):(I.add(J.category),F.push(J)),[3,7];case 6:return U=eL.sent(),console.error("Fehler bei der Validierung von ".concat(D.name||"Unbenannt",":"),U),t.failed++,t.errors.push({item:D.name||"Unbenannt",error:"Validierungsfehler: ".concat(U.message)}),[3,7];case 7:return S=!0,[3,3];case 8:return[3,11];case 9:return N=eL.sent(),z=!0,q=N,[3,11];case 10:try{S||null==L.return||L.return()}finally{if(z)throw q}return[7];case 11:console.log("".concat(F.length," von ").concat(e.length," Artikeln validiert.")),console.log("".concat(v.size," neue Kategorien (IDs) und ").concat(I.size," neue Kategorien (Namen) erkannt.")),j=Array.from(v),V=!0,G=!1,O=void 0,eL.label=12;case 12:eL.trys.push([12,19,20,21]),$=j[Symbol.iterator](),eL.label=13;case 13:if(V=(T=$.next()).done)return[3,18];B=T.value,eL.label=14;case 14:return eL.trys.push([14,16,,17]),R=B.charAt(0).toUpperCase()+B.slice(1),[4,createCategory({id:B,name:R,order:0})];case 15:return eL.sent(),k[B.toLowerCase()]=B,console.log("Neue Kategorie erstellt (ID): ".concat(B)),[3,17];case 16:return W=eL.sent(),console.error("Fehler beim Erstellen der Kategorie ".concat(B,":"),W),t.errors.push({category:B,error:"Fehler beim Erstellen der Kategorie: ".concat(W.message)}),[3,17];case 17:return V=!0,[3,13];case 18:return[3,21];case 19:return N=eL.sent(),G=!0,O=N,[3,21];case 20:try{V||null==$.return||$.return()}finally{if(G)throw O}return[7];case 21:H=Array.from(I),Z=!0,X=!1,Q=void 0,eL.label=22;case 22:eL.trys.push([22,29,30,31]),Y=H[Symbol.iterator](),eL.label=23;case 23:if(Z=(ee=Y.next()).done)return[3,28];er=ee.value,eL.label=24;case 24:return eL.trys.push([24,26,,27]),er.toLowerCase().replace(/[^a-z0-9äöüß]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),[4,createCategory({name:er,order:0})];case 25:et=eL.sent(),k[er.toLowerCase()]=et,k[normalizeForComparison(er)]=et,console.log("Neue Kategorie erstellt (Name): ".concat(er," (ID: ").concat(et,")")),en=!0,ea=!1,ei=void 0;try{for(es=F[Symbol.iterator]();!(en=(eo=es.next()).done);en=!0)(el=eo.value).category&&el.category.toLowerCase()===er.toLowerCase()&&(el.category=et)}catch(e){ea=!0,ei=e}finally{try{en||null==es.return||es.return()}finally{if(ea)throw ei}}return[3,27];case 26:return ec=eL.sent(),console.error("Fehler beim Erstellen der Kategorie ".concat(er,":"),ec),t.errors.push({category:er,error:"Fehler beim Erstellen der Kategorie: ".concat(ec.message)}),[3,27];case 27:return Z=!0,[3,23];case 28:return[3,31];case 29:return N=eL.sent(),X=!0,Q=N,[3,31];case 30:try{Z||null==Y.return||Y.return()}finally{if(X)throw Q}return[7];case 31:for(ed=0,b=null,eu=[];ed<F.length;ed+=100)eu.push(F.slice(ed,ed+100));console.log("Artikel werden in ".concat(eu.length," Batches importiert...")),eh=0,eL.label=32;case 32:if(!(eh<eu.length))return[3,43];ep=eu[eh],console.log("Verarbeite Batch ".concat(eh+1," von ").concat(eu.length," (").concat(ep.length," Artikel)...")),ef=!0,eg=!1,em=void 0,eL.label=33;case 33:eL.trys.push([33,38,39,40]),ey=function(){var e,n,a,i,s,o,l;return(0,u.Jh)(this,function(c){switch(c.label){case 0:e=eb.value,c.label=1;case 1:if(c.trys.push([1,5,,6]),n="".concat(e.name.toLowerCase().trim(),"__").concat(e.category.toLowerCase().trim()),g.has(n))return t.duplicateDetected++,[2,"continue"];return(a={name:e.name,description:e.description||"",category:e.category,price:"number"==typeof e.price?e.price:0,order:"number"==typeof e.order?e.order:0,imageUrl:e.imageUrl||"",available:void 0===e.available||e.available,allergens:Array.isArray(e.allergens)?e.allergens:[],createdAt:r,updatedAt:r}).description&&(!a.allergens||0===a.allergens.length)&&(i=extractAllergensFromDescription(a.description)).length>0&&(a.allergens=i),null!==(s=function(e){if(!e)return{type:null,weight:null,amount:null};var r={type:null,weight:null,amount:null},t=e.type||null;t||(t=function(e){if(!e||!e.category)return null;if("drink"===e.type||"food"===e.type)return e.type;var r=normalizeForComparison(e.category),t=!0,n=!1,a=void 0;try{for(var i,s=C[Symbol.iterator]();!(t=(i=s.next()).done);t=!0){var o=i.value;if(r.includes(o))return"drink"}}catch(e){n=!0,a=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw a}}var l=!0,c=!1,u=void 0;try{for(var d,h=x[Symbol.iterator]();!(l=(d=h.next()).done);l=!0){var p=d.value;if(r.includes(p))return"food"}}catch(e){c=!0,u=e}finally{try{l||null==h.return||h.return()}finally{if(c)throw u}}var f=normalizeForComparison(e.name||""),g=normalizeForComparison(e.description||""),m=!0,y=!1,_=void 0;try{for(var b,w=["0,75l","0,5l","0,33l","0,2l","200ml","250ml","330ml","500ml","750ml","1l"][Symbol.iterator]();!(m=(b=w.next()).done);m=!0){var k=b.value;if(f.includes(k)||g.includes(k))return"drink"}}catch(e){y=!0,_=e}finally{try{m||null==w.return||w.return()}finally{if(y)throw _}}var v=!0,I=!1,F=void 0;try{for(var S,z=["ml","l","liter","cl","dl","flasche","bottle","glas","glass","kanne","tasse","cup","getr\xe4nk","drink","saft","juice","schorle","smoothie","milkshake","cocktail","bier","beer","wein","wine","spirituose","whiskey","whisky","gin","vodka","wodka","rum","tequila","aperitif","mocktail","alkoholfrei","longdrink","shot","champagner","prosecco","sekt","kaffee","coffee","tee","tea","espresso","cappuccino"][Symbol.iterator]();!(v=(S=z.next()).done);v=!0){var q=S.value;if(f.includes(q)||g.includes(q))return"drink"}}catch(e){I=!0,F=e}finally{try{v||null==z.return||z.return()}finally{if(I)throw F}}var L=!0,M=!1,D=void 0;try{for(var J,P=["g","kg","gramm","portion","teller","plate","schale","bowl","mit","dazu","gegrillt","gebraten","ger\xf6stet","gekocht","serviert","steak","filet","burger","schnitzel","gem\xfcse","salat","sauce","brot","br\xf6tchen","pasta","nudeln","pizza","suppe","vorspeise","hauptspeise","nachspeise","dessert","kuchen","eis"][Symbol.iterator]();!(L=(J=P.next()).done);L=!0){var A=J.value;if(f.includes(A)||g.includes(A))return"food"}}catch(e){M=!0,D=e}finally{try{L||null==P.return||P.return()}finally{if(M)throw D}}if(void 0!==e.weight&&null!==e.weight&&isWeight(e.weight))return"food";if(void 0!==e.amount&&null!==e.amount&&isVolume(e.amount)||e.amount&&!e.weight)return"drink";if(e.weight&&!e.amount)return"food";if("string"==typeof e.category&&e.category.length>0)try{if(/^[a-zA-Z0-9_-]+$/.test(e.category)){if("string"==typeof e.amount&&e.amount.match(/\d+\s*(ml|l|cl)/i))return"drink";if("string"==typeof e.weight&&e.weight.match(/\d+\s*(g|kg)/i))return"food"}}catch(e){console.warn("Fehler bei der erweiterten Kategorie-Typ-Erkennung:",e)}return null}(e));var n=e.weight||null,a=e.amount||null;if(!t&&a&&isVolume(a)&&(t="drink"),!t&&n&&isWeight(n)&&(t="food"),"food"===t){if(null!==a&&!isVolume(a)&&!n&&/\d+/.test(String(a))&&(n=a,a=null),!n&&a&&!isVolume(a)){var i=String(a).toLowerCase();/\d+/.test(i)&&(i.includes("st\xfcck")||i.includes("portion")||i.includes("scheibe")||/^\d+$/.test(i.trim()))&&(n=a,a=null)}}else if("drink"===t&&(null!==n&&!isWeight(n)&&!a&&/\d+/.test(String(n))&&(a=n,n=null),!a&&n&&!isWeight(n))){var s=String(n).toLowerCase();(/\d+[,\.]\d+/.test(s)||/^\d+$/.test(s.trim())||s.includes("flasche")||s.includes("glas"))&&(a=n,n=null)}if(e.description){var o=e.description.toLowerCase();if(!n&&"food"===t){var l=o.match(/(\d+)\s*(g|gr|gramm|kg|kilo)/i);l&&(n=l[0])}if(!a&&"drink"===t){var c=o.match(/(\d+)\s*(ml|cl|l|liter)/i);c&&(a=c[0])}}if("food"===t&&!n&&!a){var u=(e.name||"").toLowerCase();u.includes("steak")||u.includes("filet")?n="200g":u.includes("burger")?n="180g":u.includes("schnitzel")?n="150g":u.includes("portion")&&(n="120g")}if("drink"===t&&!a&&!n){var d=(e.name||"").toLowerCase();d.includes("flasche")||d.includes("wein")?a="0,75l":d.includes("bier")?a="0,5l":d.includes("schnaps")||d.includes("shot")?a="2cl":d.includes("cocktail")&&(a="0,2l")}return r.type=t,r.weight=n,r.amount=a,r}(e)).weight&&void 0!==s.weight?a.weight=s.weight:"food"===s.type&&(a.weight=""),null!==s.amount&&void 0!==s.amount?a.amount=s.amount:"drink"===s.type&&(a.amount=""),!s.type&&normalizeForComparison(e.category)&&(o=normalizeForComparison(e.category),x.some(function(e){return o.includes(e)})?(a.weight=e.weight||e.amount||"",a.amount=""):C.some(function(e){return o.includes(e)})?(a.amount=e.amount||e.weight||"",a.weight=""):(a.hasOwnProperty("weight")||(a.weight=""),a.hasOwnProperty("amount")||(a.amount=""))),void 0===a.weight&&(a.weight=""),void 0===a.amount&&(a.amount=""),[4,(0,h.ET)((0,h.hJ)(d.db,f),a)];case 2:if(c.sent(),t.successful++,g.set(n,"new-item"),t.successful%20!=0)return[3,4];return[4,new Promise(function(e){return setTimeout(e,100)})];case 3:c.sent(),c.label=4;case 4:return[3,6];case 5:return l=c.sent(),console.error('Fehler beim Importieren von "'.concat(e.name,'":'),l),t.failed++,t.errors.push({item:e.name||"Unbenannt",error:l.message}),[3,6];case 6:return[2]}})},e_=ep[Symbol.iterator](),eL.label=34;case 34:if(ef=(eb=e_.next()).done)return[3,37];return[5,(0,u.XA)(ey())];case 35:eL.sent(),eL.label=36;case 36:return ef=!0,[3,34];case 37:return[3,40];case 38:return N=eL.sent(),eg=!0,em=N,[3,40];case 39:try{ef||null==e_.return||e_.return()}finally{if(eg)throw em}return[7];case 40:if(!(eh<eu.length-1))return[3,42];return[4,new Promise(function(e){return setTimeout(e,500)})];case 41:eL.sent(),eL.label=42;case 42:return eh++,[3,32];case 43:if(_&&_.length>0){ek=[],ev=!0,eC=!1,ex=void 0;try{for(eI=_[Symbol.iterator]();!(ev=(eF=eI.next()).done);ev=!0)(eS=eF.value)._updateId&&y.has(eS._updateId)?ek.push(eS):(console.warn("Dokument mit ID ".concat(eS._updateId,' f\xfcr "').concat(eS.name,'" existiert nicht mehr. Erstelle neu statt zu aktualisieren.')),ez=(0,s._)({},eS),delete ez._isDuplicate,delete ez._existingIds,delete ez._updateId,w.push(ez),t.warnings.push({item:eS.name||"Unbenannt",warning:"Bestehender Eintrag (ID: ".concat(eS._updateId,") existiert nicht mehr. Wird neu erstellt.")}))}catch(e){eC=!0,ex=e}finally{try{ev||null==eI.return||eI.return()}finally{if(eC)throw ex}}_.length=0,(ew=_).push.apply(ew,(0,c._)(ek))}return m=null,console.log("Import abgeschlossen: ".concat(t.successful," erfolgreich, ").concat(t.failed," fehlgeschlagen, ").concat(t.duplicateDetected," Duplikate \xfcbersprungen")),[2,t];case 44:throw console.error("Fehler beim Bulk-Import:",eq=eL.sent()),eq;case 45:return[2]}})})).apply(this,arguments)}function repairCategories(){return _repairCategories.apply(this,arguments)}function _repairCategories(){return(_repairCategories=(0,a._)(function(){var e,r,t,n,a,i,o,l,c,p,y,_,w,k,v,C,x,I,F,S,z,q,L,M,D,J;return(0,u.Jh)(this,function(u){switch(u.label){case 0:return u.trys.push([0,25,,26]),[4,(0,h.PL)((0,h.hJ)(d.db,g))];case 1:if(0===(e=u.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}).filter(function(e){return e.id.includes("/")})).length)return[2,{fixed:0,problematic:0,success:!0,message:"Keine problematischen Kategorien gefunden."}];return[4,(0,h.PL)((0,h.hJ)(d.db,f))];case 2:r=u.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}),t=new Map,r.forEach(function(r){r.category&&e.some(function(e){return e.id===r.category})&&(t.has(r.category)||t.set(r.category,[]),t.get(r.category).push(r.id))}),n=[],a=!0,i=!1,o=void 0,u.label=3;case 3:u.trys.push([3,22,23,24]),l=e[Symbol.iterator](),u.label=4;case 4:if(a=(c=l.next()).done)return[3,21];p=c.value,u.label=5;case 5:return u.trys.push([5,19,,20]),[4,createCategory({name:y=p.name.replace(/\//g,"-"),order:p.order||0,icon:p.icon||null,type:p.type||null,parentCategory:p.parentCategory||null})];case 6:_=u.sent(),w=t.get(p.id)||[],k=!0,v=!1,C=void 0,u.label=7;case 7:u.trys.push([7,12,13,14]),x=w[Symbol.iterator](),u.label=8;case 8:if(k=(I=x.next()).done)return[3,11];return F=I.value,S=(0,h.JU)(d.db,f,F),[4,(0,h.r7)(S,{category:_})];case 9:u.sent(),u.label=10;case 10:return k=!0,[3,8];case 11:return[3,14];case 12:return z=u.sent(),v=!0,C=z,[3,14];case 13:try{k||null==x.return||x.return()}finally{if(v)throw C}return[7];case 14:n.push({oldId:p.id,oldName:p.name,newId:_,newName:y,affectedItems:w.length}),u.label=15;case 15:return u.trys.push([15,17,,18]),q=encodeURIComponent(p.id),L=(0,h.JU)(d.db,g,q),[4,(0,h.oe)(L)];case 16:return u.sent(),[3,18];case 17:return M=u.sent(),console.warn("Fehler beim L\xf6schen der Kategorie mit der problematischen ID: ".concat(p.id),M),[3,18];case 18:return[3,20];case 19:return D=u.sent(),console.error('Fehler beim Reparieren der Kategorie "'.concat(p.name,'" (').concat(p.id,"):"),D),[3,20];case 20:return a=!0,[3,4];case 21:return[3,24];case 22:return z=u.sent(),i=!0,o=z,[3,24];case 23:try{a||null==l.return||l.return()}finally{if(i)throw o}return[7];case 24:return b=null,m=null,[2,{fixed:n.length,problematic:e.length,details:n,success:!0,message:"".concat(n.length," von ").concat(e.length," problematischen Kategorien repariert.")}];case 25:throw console.error("Fehler beim Reparieren der Kategorien:",J=u.sent()),J;case 26:return[2]}})})).apply(this,arguments)}function syncCategoryIcons(){return _syncCategoryIcons.apply(this,arguments)}function _syncCategoryIcons(){return(_syncCategoryIcons=(0,a._)(function(){var e,r,t,n,a,i,o,c,p,m,y,_,w,C,x;return(0,u.Jh)(this,function(I){switch(I.label){case 0:return I.trys.push([0,11,,12]),[4,(0,h.PL)((0,h.hJ)(d.db,g))];case 1:return e=I.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}),[4,(0,h.PL)((0,h.hJ)(d.db,f))];case 2:r=I.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())}),t={},r.forEach(function(e){e.category&&(t[e.category]||(t[e.category]=[]),t[e.category].push(e))}),n=0,a=0,i=[],o=!0,c=!1,p=void 0,I.label=3;case 3:I.trys.push([3,8,9,10]),m=function(){var e,r,s,o,c,p,f,m,y,b,w,C,x,I,F,S,z,q,L;return(0,u.Jh)(this,function(u){switch(u.label){case 0:if(!(e=_.value).name)return a++,[2,"continue"];if(r=e.name.toLowerCase(),s=null,o=e.icon||"help_outline",v.includes(o))return[3,5];c=!0,p=!1,f=void 0;try{for(m=Object.entries(k)[Symbol.iterator]();!(c=(y=m.next()).done);c=!0)if(w=(b=(0,l._)(y.value,2))[0],C=b[1],(r===w||r.includes(w))&&v.includes(C)){s=C;break}}catch(e){p=!0,f=e}finally{try{c||null==m.return||m.return()}finally{if(p)throw f}}!s&&t[e.id]&&(x=t[e.id],I={},F=!1,S=!1,x.forEach(function(e){"".concat(e.name," ").concat(e.description||"").toLowerCase().split(/\s+/).forEach(function(e){e.length>3&&(I[e]=(I[e]||0)+1)}),e.description&&(/wein|bier|spirit|cocktail|getränk|drink|saft|juice|kaffee|coffee|tee|tea/i.test(e.description)&&(F=!0),/fleisch|meat|fisch|fish|salat|salad|pasta|nudeln|gemüse|vegetables|kartoffel|potato|reis|rice/i.test(e.description)&&(S=!0))}),(z=Object.entries(I).sort(function(e,r){return r[1]-e[1]}).slice(0,5).map(function(e){return e[0]})).some(function(e){return/wein|wine/i.test(e)})?s="wine_bar":z.some(function(e){return/bier|beer/i.test(e)})?s="sports_bar":z.some(function(e){return/cocktail/i.test(e)})?s="local_bar":z.some(function(e){return/whisky|whiskey|rum|vodka|gin|tequila/i.test(e)})?s="liquor":z.some(function(e){return/kaffee|coffee|tee|tea/i.test(e)})?s="coffee":z.some(function(e){return/dessert|eis|ice|süß|sweet|kuchen|cake/i.test(e)})?s="icecream":z.some(function(e){return/fisch|fish|seafood|meeresfrüchte/i.test(e)})?s="set_meal":z.some(function(e){return/salat|salad/i.test(e)})?s="salad":z.some(function(e){return/suppe|soup/i.test(e)})?s="soup_kitchen":z.some(function(e){return/pasta|nudel|noodle/i.test(e)})?s="ramen_dining":F?s="local_bar":S&&(s="restaurant")),s||(s=r.includes("champagne")||r.includes("champagner")||r.includes("sekt")||r.includes("prosecco")?"champagne":r.includes("whiskey")||r.includes("whisky")?"liquor":r.includes("rum")?"liquor":r.includes("tequila")||r.includes("tequilla")?"liquor":r.includes("gin")?"nightlife":r.includes("vodka")||r.includes("wodka")?"water_drop":r.includes("wein")||r.includes("wine")?"wine_bar":r.includes("cocktail")?"local_bar":r.includes("bier")||r.includes("beer")?"sports_bar":r.includes("burger")?"lunch_dining":r.includes("pizza")?"local_pizza":isDrinkCategory(r)?"local_bar":"restaurant"),u.label=1;case 1:return u.trys.push([1,3,,4]),q=(0,h.JU)(d.db,g,e.id),[4,(0,h.r7)(q,{icon:s})];case 2:return u.sent(),n++,i.push({id:e.id,name:e.name,oldIcon:o,newIcon:s}),[3,4];case 3:return L=u.sent(),console.error('Fehler beim Aktualisieren des Icons f\xfcr Kategorie "'.concat(e.name,'":'),L),[3,4];case 4:return[3,6];case 5:a++,u.label=6;case 6:return[2]}})},y=e[Symbol.iterator](),I.label=4;case 4:if(o=(_=y.next()).done)return[3,7];return[5,(0,u.XA)(m())];case 5:I.sent(),I.label=6;case 6:return o=!0,[3,4];case 7:return[3,10];case 8:return w=I.sent(),c=!0,p=w,[3,10];case 9:try{o||null==y.return||y.return()}finally{if(c)throw p}return[7];case 10:return C=i.map(function(e){return"".concat(e.name,": ").concat(e.oldIcon," → ").concat(e.newIcon)}),n>0&&console.log("".concat(n," Kategorie-Icons aktualisiert:"),i),b=null,[2,{success:!0,count:e.length,updatedCount:n,skippedCount:a,details:C}];case 11:return console.error("Fehler bei der Icon-Synchronisierung:",x=I.sent()),[2,{success:!1,count:0,updatedCount:0,skippedCount:0,details:[],message:x.message}];case 12:return[2]}})})).apply(this,arguments)}function createMissingCategories(){return _createMissingCategories.apply(this,arguments)}function _createMissingCategories(){return(_createMissingCategories=(0,a._)(function(){var e,r,t,n,a,i,s,o,l,c,d,h,p,f,g,m,y,_,b,w,k,v,C,x,I=arguments;return(0,u.Jh)(this,function(u){switch(u.label){case 0:e=I.length>0&&void 0!==I[0]?I[0]:[],u.label=1;case 1:return u.trys.push([1,13,,14]),[4,getCategories()];case 2:r=u.sent(),t=new Map,n=[],r.forEach(function(e){if(e.name){var r=e.name.toUpperCase().trim();t.set(r,e)}}),a=[],i=[],s=!0,o=!1,l=void 0;try{for(c=e[Symbol.iterator]();!(s=(d=c.next()).done);s=!0)if((h=d.value)&&""!==h.trim()){if(p=h.toUpperCase().trim(),t.has(p)){n.push({name:h,existingCategory:t.get(p)});continue}if(h.length<3||!h.match(/[a-zA-ZäöüßÄÖÜ]/))continue;a.push({name:h,type:isDrinkCategory(h)?"drink":"food"}),t.set(p,{name:h})}}catch(e){o=!0,l=e}finally{try{s||null==c.return||c.return()}finally{if(o)throw l}}f=0,g=!0,m=!1,y=void 0,u.label=3;case 3:u.trys.push([3,10,11,12]),_=a[Symbol.iterator](),u.label=4;case 4:if(g=(b=_.next()).done)return[3,9];w=b.value,u.label=5;case 5:return u.trys.push([5,7,,8]),[4,createCategory({name:w.name,type:w.type,order:0})];case 6:return k=u.sent(),f++,i.push({name:w.name,id:k,type:w.type,status:"created"}),[3,8];case 7:return v=u.sent(),console.error('Fehler beim Erstellen der Kategorie "'.concat(w.name,'":'),v),i.push({name:w.name,status:"error",message:v.message}),[3,8];case 8:return g=!0,[3,4];case 9:return[3,12];case 10:return C=u.sent(),m=!0,y=C,[3,12];case 11:try{g||null==_.return||_.return()}finally{if(m)throw y}return[7];case 12:return[2,{success:!0,total:e.length,created:f,duplicated:n.length,details:i}];case 13:return console.error("Fehler beim Erstellen fehlender Kategorien:",x=u.sent()),[2,{success:!1,error:x.message}];case 14:return[2]}})})).apply(this,arguments)}function isDrinkCategory(e){if(!e)return!1;var r=e.toLowerCase();return["getr\xe4nk","drink","bier","beer","wein","wine","spirituose","whiskey","whisky","gin","vodka","wodka","rum","tequila","tequilla","aperitif","cocktail","mocktail","softdrink","saft","juice","wasser","water","kaffee","coffee","tee","tea","heissgetr\xe4nk","hei\xdfgetr\xe4nk","champagner","prosecco","sekt","liqueur","lik\xf6r","lik\xf6re","cognac","schnaps","alkoholfrei","longdrink","shot","digestif","schorle","smoothie","fruchtsaft","mineralwasser","cola","limonade","soda","energy","milch","milchmix","milchshake","espresso","cappuccino","latte"].some(function(e){return r.includes(e)})}function cleanupCategoryNames(){return _cleanupCategoryNames.apply(this,arguments)}function _cleanupCategoryNames(){return(_cleanupCategoryNames=(0,a._)(function(){var e,r,t,n,a,i,o,l,c,p,f,m,y;return(0,u.Jh)(this,function(u){switch(u.label){case 0:return u.trys.push([0,11,,12]),[4,(0,h.PL)((0,h.hJ)(d.db,g))];case 1:r={total:(e=u.sent().docs.map(function(e){return(0,s._)({id:e.id},e.data())})).length,updated:0,skipped:0,details:[]},t=!0,n=!1,a=void 0,u.label=2;case 2:u.trys.push([2,8,9,10]),i=e[Symbol.iterator](),u.label=3;case 3:if(t=(o=i.next()).done)return[3,7];if(!(l=o.value).name)return r.skipped++,[3,6];if((p=c=l.name).includes(" - GETR\xc4NKE")||p.includes(" - Getr\xe4nke")?p=p.replace(/ - GETRÄNKE$/,"").replace(/ - Getränke$/,""):(p.includes(" - SPEISEN")||p.includes(" - Speisen"))&&(p=p.replace(/ - SPEISEN$/,"").replace(/ - Speisen$/,"")),p===p.toUpperCase()&&p.length>2&&(p=p.split(" ").map(function(e){return e.length<=1?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}).join(" ")),!(p!==c))return[3,5];return f=(0,h.JU)(d.db,g,l.id),[4,(0,h.r7)(f,{name:p})];case 4:return u.sent(),r.updated++,r.details.push({id:l.id,originalName:c,newName:p}),[3,6];case 5:r.skipped++,u.label=6;case 6:return t=!0,[3,3];case 7:return[3,10];case 8:return m=u.sent(),n=!0,a=m,[3,10];case 9:try{t||null==i.return||i.return()}finally{if(n)throw a}return[7];case 10:return b=null,[2,(0,s._)({success:!0},r)];case 11:return console.error("Fehler beim Bereinigen der Kategorienamen:",y=u.sent()),[2,{success:!1,error:y.message}];case 12:return[2]}})})).apply(this,arguments)}function getFoodPlaceholderImage(){return _getFoodPlaceholderImage.apply(this,arguments)}function _getFoodPlaceholderImage(){return(_getFoodPlaceholderImage=(0,a._)(function(){return(0,u.Jh)(this,function(e){return[2,{url:p.G1.FOOD,isDefault:!0}]})})).apply(this,arguments)}function getDrinkPlaceholderImage(){return _getDrinkPlaceholderImage.apply(this,arguments)}function _getDrinkPlaceholderImage(){return(_getDrinkPlaceholderImage=(0,a._)(function(){return(0,u.Jh)(this,function(e){return[2,{url:p.G1.DRINK,isDefault:!0}]})})).apply(this,arguments)}function uploadFoodPlaceholderImage(e){return _uploadFoodPlaceholderImage.apply(this,arguments)}function _uploadFoodPlaceholderImage(){return(_uploadFoodPlaceholderImage=(0,a._)(function(e){var r,t,n,a;return(0,u.Jh)(this,function(i){switch(i.label){case 0:return i.trys.push([0,5,,6]),(r=new FormData).append("file",e),r.append("type","food"),[4,fetch("/api/upload-placeholder",{method:"POST",body:r})];case 1:if((t=i.sent()).ok)return[3,3];return[4,t.json()];case 2:return console.error("Fehler beim Hochladen des Platzhalterbilds:",n=i.sent()),[2,{success:!1,error:n.error||"Unbekannter Fehler beim Hochladen"}];case 3:return[4,t.json()];case 4:return[2,{success:!0,url:i.sent().url||p.G1.FOOD}];case 5:return console.error("Fehler beim Hochladen des Platzhalterbilds:",a=i.sent()),[2,{success:!1,error:a.message,url:p.G1.FOOD}];case 6:return[2]}})})).apply(this,arguments)}function uploadDrinkPlaceholderImage(e){return _uploadDrinkPlaceholderImage.apply(this,arguments)}function _uploadDrinkPlaceholderImage(){return(_uploadDrinkPlaceholderImage=(0,a._)(function(e){var r,t,n,a;return(0,u.Jh)(this,function(i){switch(i.label){case 0:return i.trys.push([0,5,,6]),(r=new FormData).append("file",e),r.append("type","drink"),[4,fetch("/api/upload-placeholder",{method:"POST",body:r})];case 1:if((t=i.sent()).ok)return[3,3];return[4,t.json()];case 2:return console.error("Fehler beim Hochladen des Platzhalterbilds:",n=i.sent()),[2,{success:!1,error:n.error||"Unbekannter Fehler beim Hochladen"}];case 3:return[4,t.json()];case 4:return[2,{success:!0,url:i.sent().url||p.G1.DRINK}];case 5:return console.error("Fehler beim Hochladen des Platzhalterbilds:",a=i.sent()),[2,{success:!1,error:a.message,url:p.G1.DRINK}];case 6:return[2]}})})).apply(this,arguments)}},736:function(e,r,t){t.d(r,{G1:function(){return n},U8:function(){return getFallbackTypeFromMenuItem},nF:function(){return getPlaceholderImage},oZ:function(){return proxyFirebaseStorageUrl}});var n={FOOD:"/images/food_placeholder.webp",DRINK:"/images/drink_placeholder.webp",DEFAULT:"/images/placeholder.jpg"},getPlaceholderImage=function(e){return"drink"===e?n.DRINK:n.FOOD},proxyFirebaseStorageUrl=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"food";return e?e.startsWith("/")?e:e.includes("firebasestorage.googleapis.com")?"/api/proxy-image?url=".concat(encodeURIComponent(e),"&fallback=").concat(r):e:getPlaceholderImage(r)},getFallbackTypeFromMenuItem=function(e){if(!e)return"food";if(e.amount)return"drink";if(e.category&&"string"==typeof e.category){var r=e.category.toLowerCase();if(r.includes("getr\xe4nk")||r.includes("drink"))return"drink"}if(e.name&&"string"==typeof e.name){var t=e.name.toLowerCase();if(/bier|wein|cocktail|saft|limo|kaffee|tee|wasser|cola|sprite|fanta|aperitif|spirituose|whiskey|gin|vodka|rum|champagne|prosecco/i.test(t))return"drink"}return"food"}}}]);