PageSourceSearch

https://beezbites.de/_next/static/chunks/8235.39470e8e2e8a5bbe.js

js beezbites.de collected 2026-10-10 00:27:55 UTC 13,972 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5429,8235],{48235:(e,n,t)=>{t.r(n),t.d(n,{MenuSetupWizard:()=>y});var a=t(95155),l=t(12115),s=t(55429),i=t(70263),r=t(17492),c=t(56039),d=t(93262),u=t(80611),o=t(67388),h=t(59145),m=t(60931),g=t(22596),p=t(67958),x=t(42109),b=t(60972),j=t(781),f=t(28170);function w(){var e;return null!=(e=(0,x._5)(window.location.hash))?e:"card-io"}function y(e){let{onNotify:n,onParentJumpPanel:t}=e,{isPanelBlocked:y}=(0,f.X)(),{isFeatureOpen:v,loaded:k}=(0,j.W)(),_=(0,x.RX)({isPanelBlocked:y,menuPhotosOpen:k&&v("menuPhotos"),menuAssistantOpen:k&&v("menuAssistant"),upsellLinksOpen:k&&v("upsellBillLift")}),[N,S]=(0,l.useState)(w),P=(0,l.useCallback)(()=>{let e=(0,x._5)(window.location.hash);e&&S(e)},[]);(0,l.useEffect)(()=>(P(),window.addEventListener("hashchange",P),()=>window.removeEventListener("hashchange",P)),[P]),(0,l.useEffect)(()=>{if(!window.matchMedia("(max-width: 899px)").matches)return;let e=document.querySelector("#menu-setup-hub-nav .menu-setup-hub-tabs .is-active");null==e||e.scrollIntoView({inline:"center",block:"nearest",behavior:"smooth"})},[N]);let C=(0,l.useCallback)(e=>{S(e);let n="".concat(window.location.pathname).concat(window.location.search);window.history.replaceState(null,"","".concat(n,"#").concat(e)),window.dispatchEvent(new Event("hashchange"))},[]);(0,l.useEffect)(()=>{var e,n;_.some(e=>e.panel===N)||C(null!=(n=null==(e=_[0])?void 0:e.panel)?n:"card-items")},[C,N,_]);let M=(0,l.useCallback)(e=>{if(x.XD.has(e))return void C(e);null==t||t(e)},[t,C]);return(0,a.jsxs)("section",{className:"admin-panel",id:"panel-card-setup","aria-labelledby":"t-card-setup",children:[(0,a.jsx)(p.H,{titleId:"t-card-setup",title:"Speisekarte bearbeiten",lead:null}),(0,a.jsx)("nav",{className:"menu-setup-hub-nav","aria-label":"Speisekarten-Bereiche wechseln",id:"menu-setup-hub-nav",children:(0,a.jsx)("div",{className:"menu-setup-hub-tabs",role:"tablist","aria-label":"Speisekarten-Unterbereiche",children:_.map(e=>{let{panel:n,label:t}=e,l=N===n;return(0,a.jsx)("a",{href:"#".concat(n),role:"tab","aria-selected":l,className:l?"is-active":"",onClick:e=>{(0,b.fz)(e)&&(e.preventDefault(),C(n))},children:t},n)})})}),(0,a.jsxs)("div",{className:"menu-setup-hub-body",children:["card-io"===N?(0,a.jsx)(i.CardIoPanel,{onNotify:n,embed:!0}):null,"card-items"===N?(0,a.jsx)(u.MenuItemsPanel,{onNotify:n,embed:!0,onJumpPanel:M}):null,"card-menu-categories"===N?(0,a.jsx)(c.MenuCategoriesPanel,{onNotify:n,embed:!0}):null,"card-guest-rec-sort"===N?(0,a.jsx)(m.GuestRecommendationsSortPanel,{onNotify:n,embed:!0}):null,"card-images"===N&&_.some(e=>"card-images"===e.panel)?(0,a.jsx)(h.MenuItemImagesPanel,{onNotify:n,embed:!0}):null,"card-desc-quality"===N&&_.some(e=>"card-desc-quality"===e.panel)?(0,a.jsx)(r.DescQualityPanel,{onNotify:n,embed:!0}):null,"card-menu-care"===N?(0,a.jsx)(d.MenuCarePanel,{onNotify:n,embed:!0}):null,"card-prices"===N?(0,a.jsx)(o.PricesPanel,{onNotify:n,embed:!0}):null,"card-ai-new"===N&&_.some(e=>"card-ai-new"===e.panel)?(0,a.jsx)(s.AiNewProductsPanel,{onNotify:n,embed:!0}):null,"card-upsell-links"===N&&_.some(e=>"card-upsell-links"===e.panel)?(0,a.jsx)(g.UpsellLinksPanel,{onNotify:n,embed:!0}):null]})]})}},55429:(e,n,t)=>{t.r(n),t.d(n,{AiNewProductsPanel:()=>f});var a=t(95155),l=t(12115),s=t(30922),i=t(46611),r=t(61021),c=t(59806),d=t(65228);function u(){return(0,a.jsx)(d.a,{title:"So erfindest du neue Produkte",label:"Hinweise zu Neue Produkte",children:(0,a.jsxs)("ul",{children:[(0,a.jsx)("li",{children:"Hake Gerichte an, die als Vorbild dienen sollen."}),(0,a.jsxs)("li",{children:[(0,a.jsx)("strong",{children:"Vorschl\xe4ge erzeugen"})," liefert neue Ideen. Nichts wird sofort auf die Speisekarte geschrieben."]}),(0,a.jsxs)("li",{children:[(0,a.jsx)("strong",{children:"KI-Anweisung"})," \xf6ffnet den Auftrag an die KI. Darunter kannst du einen Hinweis nur f\xfcr diesen Lauf setzen."]}),(0,a.jsx)("li",{children:"Hake die Vorschl\xe4ge an, die du anlegen willst. Neue Gerichte starten pausiert — G\xe4ste sehen sie erst, wenn du sie aktivierst."})]})})}var o=t(64566),h=t(67958),m=t(40089),g=t(59305),p=t(56753);function x(e){let n=e.key.toLowerCase(),t=e.title.toLowerCase();return!!(/veredelung|beilage|beilagen|r[uü]sten|rust|extras?-?beilage|add-?on/i.test(n)||t.includes("veredelung")&&t.includes("beilage")||(t.includes("beilage")||t.includes("beilagen"))&&(t.includes("veredelung")||t.includes("veredelungen"))||/^\s*beilagen\s*$/i.test(e.title.trim())||/^beilage$/i.test(e.title.trim()))}var b=t(82263),j=t(84410);function f(e){var n;let{onNotify:t,embed:d}=e,f=(0,c.E)(),y=(0,l.useMemo)(()=>p.T.generateNewProducts(2),[]),[v,k]=(0,l.useState)([]),[_,N]=(0,l.useState)([]),[S,P]=(0,l.useState)(!0),[C,M]=(0,l.useState)(new Set),[A,V]=(0,l.useState)(null),[q,I]=(0,l.useState)(new Set),[z,E]=(0,l.useState)(!1),[G,K]=(0,l.useState)(""),[L,D]=(0,l.useState)(""),[B,F]=(0,l.useState)(null),{text:T,setText:H,resetToDefault:O}=(0,j.D)((0,j.d)(f,"generate-new-products"),y),Q=(0,l.useCallback)(async()=>{P(!0);try{let[e,n]=await Promise.all([(0,g.cM)(f,!0),(0,g.Qm)(f,!0)]);k(e),N(n),M(n=>{if(0===n.size&&e.length)return new Set(e.map(e=>e.id));let t=new Set;for(let a of e)n.has(a.id)&&t.add(a.id);return 0===t.size&&e.length?new Set(e.map(e=>e.id)):t})}catch(e){t(e instanceof g.ge?e.message:"Laden fehlgeschlagen.")}finally{P(!1)}},[t,f]);(0,l.useEffect)(()=>{Q()},[Q]);let R=(0,l.useMemo)(()=>L.trim()?v.filter(e=>(0,b.tG)(L,e)):v,[v,L]),X=R.length>0&&R.every(e=>C.has(e.id)),U=(0,l.useMemo)(()=>v.filter(e=>C.has(e.id)),[v,C]),J=(0,l.useMemo)(()=>{let e=new Map;for(let n of _)e.set(n.id,n.key);return e},[_]),W=(0,l.useMemo)(()=>new Set(_.filter(x).map(e=>e.id)),[_]),$=(0,l.useMemo)(()=>v.filter(e=>null!=e.category_id&&W.has(e.category_id)),[v,W]),Z=(0,l.useMemo)(()=>(function(e){let n=e.filter(e=>Number.isFinite(e)&&e>=0).sort((e,n)=>e-n),t=n.length;if(0===t)return{min:0,max:0,median:0,count:0};
1let a=Math.floor(t/2),l=t%2?n[a]:Math.round((n[a-1]+n[a])/2);return{min:n[0],max:n[t-1],median:l,count:t}})($.map(e=>e.price)),[$]),Y=async()=>{if(0===U.length)return void t("Mindestens ein Quell-Gericht ausw\xe4hlen.");E(!0);try{var e,n;let a=await fetch("/api/admin/ai/generate-new-products",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({restaurant_id:f,source_items:U.map(e=>({id:e.id,name:e.name})),existing_categories:_.map(e=>({key:e.key,title:e.title})),existing_restaurant_items:v.map(e=>{var n;return{id:e.id,name:e.name,category_key:e.category_key&&e.category_key.trim()||(null!=e.category_id&&null!=(n=J.get(e.category_id))?n:null)}}),side_dish_existing_names:$.map(e=>e.name),side_dish_reference_items:$.map(e=>({name:e.name,price_cents:e.price})),count_per_source:2,instruction:T,rerollExtraInstruction:G.trim()||void 0})}),l=await a.json();if(!a.ok)return void t(null!=(e=null==l?void 0:l.detail)?e:"KI-Fehler");let s=null!=(n=l.products)?n:[],i="number"==typeof l.dedup_removed?l.dedup_removed:0;F("string"==typeof l.aiModel?l.aiModel:null),V(s.length?s:null),I(s.length?new Set(s.map((e,n)=>n)):new Set),0===s.length?t(i>0?"".concat(i," Vorschlag/Vorschl\xe4ge entfernt (Name bereits auf der Speisekarte) — es bleibt nichts \xfcbrig. Quellauswahl oder Anweisung anpassen."):"Keine Vorschl\xe4ge von der KI."):i>0&&t("".concat(i," Vorschlag/Vorschl\xe4ge entfernt — Name bereits vorhanden (Abgleich mit allen Gerichten in der Datenbank)."))}catch(e){t("KI-Fehler")}finally{E(!1)}},ee=(null!=(n=null==A?void 0:A.length)?n:0)>0&&A.every((e,n)=>q.has(n)),en=async()=>{if(!(null==A?void 0:A.length))return;let e=A.filter((e,n)=>q.has(n));if(!e.length)return void t("Keine Produktvorschl\xe4ge ausgew\xe4hlt.");E(!0);try{let n=e.map(e=>{var n;return{name:e.name,description:e.description,price:e.suggested_price_cents,catalog_no:e.catalog_no_suggestion.replace(/[^a-zA-Z0-9-_]/g,"-").slice(0,64),category_key:e.category_key.trim()||void 0,category_title_if_new:(null==(n=e.category_title_if_new)?void 0:n.trim())||void 0,is_active:!1}});await (0,g.FX)(f,n),t("".concat(n.length," neue Artikel angelegt (Kategorien ggf. neu; alle zun\xe4chst deaktiviert — in der Speisekarte aktivieren).")),V(null),I(new Set),F(null),await Q()}catch(e){t(e instanceof g.ge?e.message:"Anlegen fehlgeschlagen.")}finally{E(!1)}},et=S?null:"".concat(R.length," von ").concat(v.length," Gerichten \xb7 ").concat(U.length," ausgew\xe4hlt"),ea=(0,a.jsxs)("div",{className:"menu-items-workspace",children:[d?null:(0,a.jsx)(h.H,{titleId:"t-card-ai-new",title:"Neue Produkte",lead:"Vorbilder w\xe4hlen, Vorschl\xe4ge erzeugen und nur das anlegen, was stimmt."}),(0,a.jsxs)(o.q,{title:"Neue Produkte",className:"menu-items-workspace__card",titleAddon:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(m.r,{busy:z||S,onClick:()=>void Q()}),(0,a.jsx)(u,{})]}),subtitle:et?(0,a.jsx)("p",{className:"menu-items-count",children:et}):null,children:[(0,a.jsx)("div",{className:"menu-items-search-row",children:(0,a.jsx)(i.S,{id:"card-ai-new-product-search",value:L,onChange:D,label:"Suchen",placeholder:"Gericht suchen …"})}),(0,a.jsx)("div",{className:"desc-quality-toolbar",children:(0,a.jsx)("button",{type:"button",className:"primary",disabled:z||S||0===U.length,onClick:()=>void Y(),children:"Vorschl\xe4ge erzeugen"})}),(0,a.jsxs)("details",{className:"desc-quality-prompt",children:[(0,a.jsx)("summary",{children:"KI-Anweisung"}),(0,a.jsx)(r.Q,{id:"ai-prompt-generate-new-products",label:"Auftrag an die KI",value:T,onChange:H,defaultTextForReset:y,onResetToDefault:O,rows:4,plain:!0}),(0,a.jsxs)("label",{className:"upsell-links-extra",children:["Nur dieser Lauf (optional)",(0,a.jsx)("input",{type:"text",className:"admin-input",value:G,onChange:e=>K(e.target.value),placeholder:"z. B. eher vegetarisch, eher Beilagen"})]})]}),$.length>0&&Z.count>0?(0,a.jsxs)("p",{className:"menu-items-meta",children:["Beilagen-Preise als Orientierung: ",w(Z.min)," – ",w(Z.max)]}):null,S?(0,a.jsx)("div",{className:"menu-items-state","aria-busy":"true",children:(0,a.jsx)("p",{children:"Lade Gerichte …"})}):0===v.length?(0,a.jsxs)("div",{className:"menu-items-state",children:[(0,a.jsx)("p",{children:"Noch keine Gerichte"}),(0,a.jsx)("p",{className:"menu-items-meta",children:"Lege sie zuerst unter Produkte an."})]}):0===R.length?(0,a.jsx)("div",{className:"menu-items-state",children:(0,a.jsx)("p",{children:"Keine passenden Gerichte"})}):(0,a.jsx)("div",{className:"desc-quality-table-wrap",children:(0,a.jsxs)("table",{className:"desc-quality-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"desc-quality-table__check",children:(0,a.jsx)("input",{type:"checkbox",checked:X,onChange:()=>{X?M(e=>{let n=new Set(e);for(let e of R)n.delete(e.id);return n}):M(e=>{let n=new Set(e);for(let e of R)n.add(e.id);return n})},"aria-label":"Alle Quellen"})}),(0,a.jsx)("th",{children:"Vorbild"}),(0,a.jsx)("th",{children:"Preis"})]})}),(0,a.jsx)("tbody",{children:R.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{className:"desc-quality-table__check",children:(0,a.jsx)("input",{type:"checkbox",checked:C.has(e.id),onChange:()=>{var n;return n=e.id,void M(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t})},"aria-label":"Vorbild ".concat(e.name)}
1)}),(0,a.jsx)("td",{className:"desc-quality-table__name",children:e.name}),(0,a.jsx)("td",{children:w(e.price)})]},e.id))})]})}),A&&A.length>0?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"menu-items-count ai-new-products-suggestions",children:"Vorschl\xe4ge"}),(0,a.jsxs)("div",{className:"desc-quality-savebar",children:[(0,a.jsxs)("label",{children:[(0,a.jsx)("input",{type:"checkbox",checked:ee,onChange:()=>{(null==A?void 0:A.length)&&(ee?I(new Set):I(new Set(A.map((e,n)=>n))))}}),"Alle Vorschl\xe4ge w\xe4hlen"]}),(0,a.jsxs)("span",{className:"menu-items-meta",children:[q.size," von ",A.length," markiert"]}),(0,a.jsx)("button",{type:"button",className:"primary",disabled:z||0===q.size,onClick:()=>void en(),children:"Auswahl anlegen"}),(0,a.jsx)("button",{type:"button",className:"ghost-footer",disabled:z,onClick:()=>{V(null),I(new Set),F(null)},children:"Verwerfen"})]}),(0,a.jsx)(s.p,{model:B}),(0,a.jsx)("div",{className:"desc-quality-table-wrap",children:(0,a.jsxs)("table",{className:"desc-quality-table",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"desc-quality-table__check",children:(0,a.jsx)("span",{className:"mi-sr",children:"Anlegen"})}),(0,a.jsx)("th",{children:"Vorschlag"}),(0,a.jsx)("th",{children:"Kategorie"}),(0,a.jsx)("th",{children:"Preis"}),(0,a.jsx)("th",{children:"Vorbild"}),(0,a.jsx)("th",{children:"Beschreibung"})]})}),(0,a.jsx)("tbody",{children:A.map((e,n)=>{var t,l,s;return(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{className:"desc-quality-table__check",children:(0,a.jsx)("input",{type:"checkbox",checked:q.has(n),onChange:()=>{I(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t})},"aria-label":"Anlegen ".concat(e.name)})}),(0,a.jsx)("td",{className:"desc-quality-table__name",children:e.name}),(0,a.jsx)("td",{children:function(e,n){var t;let a=(e.category_key||"").trim(),l=n.find(e=>e.key===a);return l?"".concat(l.title," (").concat(a,")"):(null==(t=e.category_title_if_new)?void 0:t.trim())?"".concat(e.category_title_if_new.trim()," (neu \xb7 ").concat(a,")"):a?"".concat(a," (neu)"):"—"}(e,_)}),(0,a.jsx)("td",{children:w(e.suggested_price_cents)}),(0,a.jsx)("td",{children:(t=e.source_item_id,null!=(s=null==(l=v.find(e=>e.id===t))?void 0:l.name)?s:"#".concat(t))}),(0,a.jsx)("td",{children:e.description})]},"".concat(e.name,"-").concat(n))})})]})})]}):null]})]});return d?(0,a.jsx)("div",{className:"menu-setup-embed menu-setup-embed--card-ai-new",children:ea}):(0,a.jsx)("section",{className:"admin-panel",id:"panel-card-ai-new","aria-labelledby":"t-card-ai-new",children:ea})}function w(e){return new Intl.NumberFormat("de-DE",{style:"currency",currency:"EUR"}).format(e/100)}}}]);

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.