1import{k as Z,d as q,u as V,a as E,r as g,j as e,s as F}from"./index-DfbPMtFZ.js";import{H as K,F as G}from"./Footer-DkkU8vMF.js";import{I as T,L as W}from"./ImageUpload-DDRE_7dj.js";import{B as u,I as m}from"./Combination-DdoM_vzj.js";import{C as D,b as P,c as M,d as $,a as H}from"./card-DN9U93Ar.js";import{o as U,s as n,u as R,F as O,a as t,b as a,c as o,d as c,e as l,t as J}from"./types-CZRSIYhW.js";import{T as Q}from"./textarea-B6myJTMQ.js";import{S as j,a as f,b,c as y,d as S}from"./select-BpTHHfDC.js";import{i as X}from"./useListings-BA8PmhrO.js";import{A as Y}from"./arrow-left-CSjVKsEU.js";import"./shield-gTmsYmaS.js";import"./image-BB9h9Mr0.js";import"./label-BPIIdxfs.js";import"./index-BdQq_4o_.js";import"./index-DL1OQS8_.js";import"./chevron-down-B7uBTmvX.js";const ee=U({title:n().min(3,"Bezeichnung muss mindestens 3 Zeichen haben").max(100,"Bezeichnung darf maximal 100 Zeichen haben").regex(/^[a-zA-Z0-9\s\-_.,!?()äöüÃÃÃÃ]+$/,"Bezeichnung enthält ungültige Zeichen"),description:n().min(10,"Beschreibung muss mindestens 10 Zeichen haben").max(2e3,"Beschreibung darf maximal 2000 Zeichen haben"),category:n().min(1,"Kategorie ist erforderlich"),size:n().min(1,"GröÃe ist erforderlich"),price:n().min(1,"Preis ist erforderlich").regex(/^\d+(\.\d{1,2})?$/,"Ungültiges Preisformat"),shipping_price:n().regex(/^\d*(\.\d{1,2})?$/,"Ungültiges Versandpreis-Format").optional(),quantity:n().min(1,"Stückzahl ist erforderlich").regex(/^\d+$/,"Stückzahl muss eine ganze Zahl sein"),condition:n().optional(),location:n().max(200,"Vollständige Adresse darf maximal 200 Zeichen haben").optional(),display_location:n().min(1,"Anzeigestandort ist erforderlich").max(100,"Anzeigestandort darf maximal 100 Zeichen haben")}),je=()=>{const{id:x}=Z(),{user:p}=q(),d=V(),{toast:h}=E(),[N,I]=g.useState(!1),[v,z]=g.useState([]),[_,k]=g.useState(!0),s=R({resolver:J(ee),defaultValues:{title:"",description:"",category:"",size:"",price:"",shipping_price:"",quantity:"1",condition:"",location:"",display_location:""}});g.useEffect(()=>{(async()=>{if(!(!x||!p))try{const{data:r,error:C}=await F.from("listings").select("*").eq("id",x).eq("user_id",p.id).maybeSingle();if(C){console.error("Error fetching listing:",C),h({title:"Fehler",description:"Inserat konnte nicht geladen werden.",variant:"destructive"}),d("/dashboard");return}if(!r){h({title:"Nicht gefunden",description:"Das Inserat wurde nicht gefunden oder Sie haben keine Berechtigung.",variant:"destructive"}),d("/dashboard");return}s.reset({title:r.title,description:r.description,category:r.category,size:r.size,price:r.price.toString(),shipping_price:r.shipping_price?r.shipping_price.toString():"",quantity:r.quantity?r.quantity.toString():"1",condition:r.condition||"",location:r.location||"",display_location:r.display_location||""}),z(r.images||[])}catch(r){console.error("Error fetching listing:",r),h({title:"Fehler",description:"Ein Fehler ist aufgetreten.",variant:"destructive"}),d("/dashboard")}finally{k(!1)}})()},[x,p,d,h,s]);const L=async i=>{if(!(!p||!x)){I(!0);try{const{error:r}=await F.from("listings").update({title:i.title,description:i.description,category:i.category,size:i.size,price:parseFloat(i.price),shipping_price:i.shipping_price?parseFloat(i.shipping_price):0,quantity:parseInt(i.quantity),condition:i.condition||null,location:i.location||null,display_location:i.display_location,images:v}).eq("id",x).eq("user_id",p.id);if(r)throw r;X(),h({title:"Erfolgreich",description:"Ihr Inserat wurde erfolgreich aktualisiert."}),d("/dashboard")}catch(r){console.error("Error updating listing:",r),h({title:"Fehler",description:"Es gab einen Fehler beim Aktualisieren des Inserats.",variant:"destructive"})}finally{I(!1)}}},B=["Krafttraining","Cardio","Functional Training","Gewichte","Zubehör","Sonstiges"],w=["Klein (bis 50cm)","Mittel (50-150cm)","Groà (150-250cm)","Sehr groà (über 250cm)"],A=["Neu","Sehr gut","Gut","Gebraucht","Defekt"];return _?e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"}),e.jsx("p",{className:"mt-4 text-muted-foreground",children:"Lade Inserat..."})]})}):e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(K,{}),e.jsxs("main",{className:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs(u,{variant:"ghost",onClick:()=>
1d("/dashboard"),className:"mb-4",children:[e.jsx(Y,{className:"w-4 h-4 mr-2"}),"Zurück zum Dashboard"]}),e.jsx("h1",{className:"text-3xl font-bold text-foreground",children:"Inserat bearbeiten"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"Aktualisieren Sie die Details Ihres Inserats"})]}),e.jsxs(D,{children:[e.jsxs(P,{children:[e.jsx(M,{children:"Inserat Details"}),e.jsx($,{children:"Bearbeiten Sie die Informationen Ihres Inserats."})]}),e.jsx(H,{children:e.jsx(O,{...s,children:e.jsxs("form",{onSubmit:s.handleSubmit(L),className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(t,{control:s.control,name:"title",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Bezeichnung *"}),e.jsx(c,{children:e.jsx(m,{placeholder:"z.B. Kraftstation Profi 2000",...i})}),e.jsx(l,{})]})}),e.jsx(t,{control:s.control,name:"price",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Preis (â¬)"}),e.jsx(c,{children:e.jsx(m,{type:"number",step:"0.01",placeholder:"999.99",...i})}),e.jsx(l,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(t,{control:s.control,name:"shipping_price",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Versandkosten (â¬)"}),e.jsx(c,{children:e.jsx(m,{type:"number",step:"0.01",placeholder:"0.00",...i})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Optional: Lassen Sie leer oder 0 für kostenloser Versand"}),e.jsx(l,{})]})}),e.jsx(t,{control:s.control,name:"quantity",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Stückzahl *"}),e.jsx(c,{children:e.jsx(m,{type:"number",min:"1",placeholder:"1",...i})}),e.jsx(l,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(t,{control:s.control,name:"category",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Kategorie *"}),e.jsxs(j,{onValueChange:i.onChange,value:i.value,children:[e.jsx(c,{children:e.jsx(f,{children:e.jsx(b,{placeholder:"Wählen Sie eine Kategorie"})})}),e.jsx(y,{children:B.map(r=>e.jsx(S,{value:r,children:r},r))})]}),e.jsx(l,{})]})}),e.jsx(t,{control:s.control,name:"size",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"GröÃe *"}),e.jsxs(j,{onValueChange:i.onChange,value:i.value,children:[e.jsx(c,{children:e.jsx(f,{children:e.jsx(b,{placeholder:"Wählen Sie eine GröÃe"})})}),e.jsx(y,{children:w.map(r=>e.jsx(S,{value:r,children:r},r))})]}),e.jsx(l,{})]})})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsx(t,{control:s.control,name:"condition",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Zustand"}),e.jsxs(j,{onValueChange:i.onChange,value:i.value,children:[e.jsx(c,{children:e.jsx(f,{children:e.jsx(b,{placeholder:"Wählen Sie den Zustand"})})}),e.jsx(y,{children:A.map(r=>e.jsx(S,{value:r,children:r},r))})]}),e.jsx(l,{})]})}),e.jsx(t,{control:s.control,name:"display_location",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Ãffentlicher Standort *"}),e.jsx(c,{children:e.jsx(m,{placeholder:"z.B. Wien, Ãsterreich",...i})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Nur Stadt/Region - keine genaue Adresse aus Sicherheitsgründen"}),e.jsx(l,{})]})})]}),e.jsx(T,{onImagesChange:z,maxImages:8,initialImages:v}),e.jsx(t,{control:s.control,name:"location",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Private Adresse (optional)"}),e.jsx(c,{children:e.jsx(m,{placeholder:"z.B. MusterstraÃe 123, 1010 Wien",...i})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Vollständige Adresse für Käufer nach Kaufinteresse. Wird nicht öffentlich angezeigt."}),e.jsx(l,{})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h3",{className:"text-sm font-medium",children:"Standort auf Karte auswählen"}),e.jsx(W,{onLocationSelect:i=>{s.setValue("location",i.address)},initialLocation:s.watch("location"),className:"h-64 w-full"})]}),e.jsx(t,{control:s.control,name:"description",render:({field:i})=>e.jsxs(a,{children:[e.jsx(o,{children:"Beschreibung *"}),e.jsx(c,{children:e.jsx(Q,{placeholder:"Beschreiben Sie Ihr Fitness-Gerät detailliert...",className:"min-h-32",...i})}),e.jsx(l,{})]})}),e.jsxs("div",{className:"flex justify-end space-x-4 pt-6",children:[e.jsx(u,{type:"button",variant:"outline",onClick:()=>
1d("/dashboard"),children:"Abbrechen"}),e.jsx(u,{type:"submit",disabled:N,children:N?"Wird gespeichert...":"Ãnderungen speichern"})]})]})})})]})]}),e.jsx(G,{})]})};export{je as default};
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.