1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6285],{1486:(e,t,a)=>{a.d(t,{p:()=>O});var r=a(88017),s=a(82922),i=a(44109),l=a(28577),n=a(54189),d=a(14099),c=a(50338),o=a(30006),u=a(82600),m=a(97715),h=a(14416),p=a(17547),x=a(91490),g=a(78837),f=a(61579),v=a(36888),j=a(21676),b=a(35952),y=a(57031),w=a(98476),N=a(68036),C=a(45998),S=a(47417);function _(e){var t,a,s,l,n,d,c,o,u;let{open:g,onOpenChange:f,character:_,onConfirm:k,isPublishing:A,onVoiceChange:R}=e,F=(0,w.c3)("character-card"),L=(0,w.c3)("storyboard-list"),[E,P]=(0,i.useState)(""),[T,z]=(0,i.useState)(0),[q,I]=(0,i.useState)(!1),[$,D]=(0,i.useState)(!1),[O,M]=(0,i.useState)(!1),U=(0,i.useRef)(null);(0,i.useEffect)(()=>{g&&_.tag?P(_.tag):g||P("")},[g,_.tag]);let V=async()=>{let e=E.trim();0!==e.length&&(await k(e),P(""))},J=e=>{var t;if(!e)return L("unnamedCharacter");let a=e.trim();if(!a)return L("unnamedCharacter");let[r]=a.split(/\s+/);return r?/^[\u0000-\u007f]+$/.test(r)?r:null!==(t=r[0])&&void 0!==t?t:L("unnamedCharacter"):L("unnamedCharacter")};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(v.lG,{open:g,onOpenChange:f,children:(0,r.jsxs)(v.Cf,{className:"w-[92vw] max-w-5xl lg:w-[80vw]",children:[(0,r.jsxs)(v.c7,{children:[(0,r.jsxs)(v.L3,{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,y.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium uppercase tracking-wide","bg-emerald-100 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300"),children:L("characterTag")}),_.name||L("unnamedCharacter")]}),(0,r.jsx)(v.rr,{children:F("publishCharacterDescription")})]}),(0,r.jsxs)("div",{className:"grid gap-6 md:grid-cols-[1.4fr_1fr]",children:[(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"relative overflow-hidden rounded-lg border flex justify-center",children:(()=>{var e;let t=Array.isArray(_.images)?_.images.filter(e=>!!(null==e?void 0:e.url)):[],a=null!==(e=t[T])&&void 0!==e?e:t[0],s=(null==a?void 0:a.url)||null;return s?(0,r.jsx)("img",{src:s,alt:_.name,className:"h-80"}):(0,r.jsx)("div",{className:"flex h-80 w-full items-center justify-center text-2xl font-semibold text-muted-foreground",children:J(_.name)})})()}),Array.isArray(_.images)&&(null===(t=_.images)||void 0===t?void 0:t.length)>1&&(0,r.jsx)("div",{className:"grid grid-cols-5 gap-3",children:_.images.filter(e=>!!(null==e?void 0:e.url)).map((e,t)=>(0,r.jsx)("button",{type:"button",onClick:()=>z(t),className:(0,y.cn)("overflow-hidden rounded-md border focus:outline-none focus-visible:ring-2 focus-visible:ring-primary",T===t?"ring-2 ring-primary border-primary":"border-border"),children:(0,r.jsx)("img",{src:e.url,alt:"thumbnail",className:"h-20 w-full object-cover"})},e.id||e.url))})]}),(0,r.jsxs)("div",{className:"space-y-4 rounded-lg border bg-muted/30 p-5 text-left text-sm leading-relaxed",children:[(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:L("basicInformation")}),(0,r.jsx)("p",{children:"".concat(L("nameLabel"),": ").concat(_.name||L("unnamedValue"))}),(0,r.jsx)("p",{children:"".concat(L("typeLabel"),": ").concat(L("characterType"))})]}),_.settings&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:L("characterSettingsTitle")}),"age"in _.settings&&(null===(a=_.settings)||void 0===a?void 0:a.age)&&(0,r.jsx)("p",{children:"".concat(L("ageLabel"),": ").concat(_.settings.age)}),"sex"in _.settings&&(null===(s=_.settings)||void 0===s?void 0:s.sex)&&(0,r.jsx)("p",{children:"".concat(L("genderLabel"),": ").concat(_.settings.sex)}),"ethnicity"in _.settings&&(null===(l=_.settings)||void 0===l?void 0:l.ethnicity)&&(0,r.jsx)("p",{children:"".concat(L("ethnicityLabel"),": ").concat(_.settings.ethnicity)}),"personality"in _.settings&&(null===(n=_.settings)||void 0===n?void 0:n.personality)&&(0,r.jsx)("p",{children:"".concat(L("personalityLabel"),": ").concat(_.settings.personality)}),"description"in _.settings&&(null===(d=_.settings)||void 0===d?void 0:d.description)&&(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:"".concat(L("descriptionLabel"),": ").concat(_.settings.description)})]}),_.voice&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:L("voiceInformation")}),(0,r.jsxs)("div",{className:"relative group/edit flex-shrink-0 cursor-pointer",onClick:e=>{e.stopPropagation(),I(!0)},children:[(0,r.jsx)(m.A,{size:14,className:"text-muted-foreground hover:text-primary"}),(0,r.jsx)("div",{className:"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-1 px-2 py-1 bg-black bg-opacity-75 text-white text-xs rounded whitespace-nowrap opacity-0 group-hover/edit:opacity-100 transition-opacity duration-200 z-10",children:L("editVoice")})]})]}),"name"in _.voice&&(null===(c=_.voice)||void 0===c?void 0:c.name)&&(0,r.jsxs)("p",{className:"flex items-center gap-1",children:["".concat(L("voiceLabel"),": ").concat(_.voice.name),(0,r.jsxs)("span",{className:"relative group/listen inline-flex flex-shrink-0 cursor-pointer ml-1",onClick:async e=>{var t;e.stopPropagation();let a=null===(t=_.voice)||void 0===t?void 0:t.id;if(a){if(O&&U.current){U.current.pause(),U.current.currentTime=0,M(!1);return}try{let{data:e,error:t}=await x.supabase.from("tts_configs").select("settings").eq("id",a).single();if(t){console.error("æ¥è¯¢tts_configs失败:",t);return}if((null==e?void 0:e.settings)&&Array.isArray(e.settings)&&e.settings.length>0){let t=e.settings[0];t.demo_audio&&(U.current?U.current.src=t.demo_audio:U.current=ne
1w Audio(t.demo_audio),U.current.onended=()=>M(!1),U.current.play().then(()=>M(!0)).catch(e=>{console.error("é³é¢ææ¾å¤±è´¥:",e),M(!1)}))}}catch(e){console.error("å¤çé³é¢ææ¾æ¶åºé:",e)}}},children:[O?(0,r.jsx)(h.A,{size:14,className:"text-primary"}):(0,r.jsx)(p.A,{size:14,className:"text-muted-foreground hover:text-primary"}),(0,r.jsx)("span",{className:"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-1 px-2 py-1 bg-black bg-opacity-75 text-white text-xs rounded whitespace-nowrap opacity-0 group-hover/listen:opacity-100 transition-opacity duration-200 z-10",children:O?L("stop"):L("listen")})]})]}),"provider"in _.voice&&(null===(o=_.voice)||void 0===o?void 0:o.provider)&&(0,r.jsx)("p",{children:"".concat(L("providerLabel"),": ").concat(_.voice.provider)})]})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)(C.J,{htmlFor:"tags",children:[F("characterTags")," *"]}),(0,r.jsx)(j.p,{id:"tags",value:E,onChange:e=>P(e.target.value),placeholder:F("enterTags"),disabled:A})]}),(0,r.jsxs)(v.Es,{children:[(0,r.jsx)(b.$,{variant:"outline",onClick:()=>f(!1),disabled:A,children:F("cancel")}),(0,r.jsx)(b.$,{onClick:V,disabled:A||""===E.trim(),children:F(A?"publishing":"confirm")})]})]})}),(0,r.jsx)(S.F,{open:q,onOpenChange:I,currentVoiceId:null===(u=_.voice)||void 0===u?void 0:u.id,onSelect:async e=>{if(!$){D(!0);try{let{error:t}=await x.supabase.from("characters").update({voice:{id:e.id,name:e.name,provider:e.provider,settings:e.settings,demo_audio:e.demo_audio}}).eq("id",_.id);if(t){console.error("æ´æ°é
é³è
失败:",t),N.oR.error(L("operationFailed"));return}N.oR.success(L("updateVoiceSuccess")),null==R||R(_.id,{id:e.id,name:e.name,provider:e.provider,settings:e.settings,demo_audio:e.demo_audio})}catch(e){console.error("å¤çé
é³è
æ´æ°æ¶åºé:",e),N.oR.error(L("operationFailed"))}finally{D(!1)}}}})]})}var k=a(77654),A=a(1791),R=a(24077),F=a(19614),L=a(74582),E=a(98039),P=a(82955),T=a(22747),z=a(94462),q=a(67255),I=a(8632);let $=e=>{var t,a,s;let{open:l,onOpenChange:n,onCreated:d}=e,{user:c}=(0,f.A)(),m=(0,w.c3)("storyboard-list"),[h,_]=(0,i.useState)(""),[$,D]=(0,i.useState)([]),[O,M]=(0,i.useState)(""),[U,V]=(0,i.useState)(""),[J,G]=(0,i.useState)(""),[B,W]=(0,i.useState)(""),[X,H]=(0,i.useState)(""),[K,Y]=(0,i.useState)(null),[Z,Q]=(0,i.useState)(""),[ee,et]=(0,i.useState)([]),[ea,er]=(0,i.useState)([]),[es,ei]=(0,i.useState)(!1),[el,en]=(0,i.useState)(""),[ed,ec]=(0,i.useState)("");(0,i.useEffect)(()=>{let e=setTimeout(()=>ec(el),300);return()=>clearTimeout(e)},[el]);let{data:eo,size:eu,setSize:em,isLoading:eh,isValidating:ep}=(0,I.Ay)(e=>(null==c?void 0:c.id)&&l?["user-projects",c.id,e,ed]:null,async e=>{let[,,t,a]=e,r=x.supabase.from("projects").select("id, name").is("type",null).eq("deleted_flag",0).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1}).range(20*t,(t+1)*20-1);a.trim()&&(r=r.ilike("name","%".concat(a,"%")));let{data:s,error:i}=await r;if(i)throw i;return s||[]},{revalidateFirstPage:!1}),ex=eo?eo.flat():[],eg=!!eo&&(null!==(a=null===(t=eo[eo.length-1])||void 0===t?void 0:t.length)&&void 0!==a?a:0)>=20,ef=ep&&eu>(null!==(s=null==eo?void 0:eo.length)&&void 0!==s?s:0),ev=(0,i.useCallback)(e=>{let{scrollTop:t,scrollHeight:a,clientHeight:r}=e.currentTarget;a-t-r<60&&eg&&!ep&&em(e=>e+1)},[eg,ep,em]),[ej,eb]=(0,i.useState)(!1),[ey,ew]=(0,i.useState)(!1),eN=(0,i.useRef)(null),eC=(0,i.useCallback)(()=>{D(e=>(e.forEach(e=>URL.revokeObjectURL(e.previewUrl)),[])),_(""),M(""),V(""),G(""),W(""),H(""),Y(null),Q(""),et([]),er([]),en(""),ec("")},[]),eS=(0,i.useCallback)(e=>{e||eC(),n(e)},[n,eC]),e_=e=>{D(t=>{let a=t.find(t=>t.id===e);return a&&URL.revokeObjectURL(a.previewUrl),t.filter(t=>t.id!==e)})},ek=(e,t)=>{D(a=>a.map(a=>a.id===e?{...a,tag:t}:a))},eA=async()=>{if(!(null==c?void 0:c.id))return null;if(eN.current)return eN.current;try{let{data:e,error:t}=await x.supabase.from("projects").select("id").eq("user_id",c.id).eq("type","source").eq("deleted_flag",0);if(t)throw Error(t.message);if(e&&e.length>0)return eN.current=e[0].id,e[0].id;let a=await (0,g.gA)({name:m("createCharacter.assetLibrary"),type:"source",status:"draft",settings:{aspect_ratio:"16:9",style:"Cinematic",cover_url:""}});return eN.current=a.id,a.id}catch(e){return console.error("è·å/åå»ºç´ æåºé¡¹ç®å¤±è´¥:",e),N.oR.error(m("createCharacter.sourceProjectFailed")),null}},eR=async()=>
1{if(!(null==c?void 0:c.id)){N.oR.error(m("createCharacter.authRequired"));return}let e=h.trim();if(!e){N.oR.error(m("createCharacter.nameRequired"));return}if(!U){N.oR.error(m("createCharacter.sexRequired"));return}eb(!0);try{let t=[];if($.length>0){let e=await eA();if(!e){eb(!1);return}t=await Promise.all($.map(async t=>{let a=await (0,R.uploadImageToAliyun)(t.file,e),{data:r,error:s}=await (0,R.updateImageTable)([{image_url:a.image_url,metadata:a.metadata,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),project_id:e}]);if(s||!r||0===r.length)throw Error("å¾çä¿¡æ¯ä¿å失败: ".concat((null==s?void 0:s.message)||"æªè¿åæ°æ®"));return{id:r[0].id,url:a.image_url,type:"normal",tag:t.tag}}))}let a={};O.trim()&&(a.age=O.trim()),U&&(a.sex=U),J.trim()&&(a.ethnicity=J.trim()),B.trim()&&(a.personality=B.trim()),X.trim()&&(a.description=X.trim());let r={name:e,user_id:c.id,reference_type:"original"};t.length>0&&(r.images=t),Object.keys(a).length>0&&(r.settings=a),K&&(r.voice={id:K.id,name:K.name,provider:K.provider,settings:K.settings,demo_audio:K.demo_audio}),Z.trim()&&(r.tag=Z.trim());let{data:s,error:i}=await x.supabase.from("characters").insert(r).select("id, name, images, settings, voice, is_public, tag").single();if(i){console.error("å建è§è²å¤±è´¥:",i),N.oR.error(m("createCharacter.createFailed"));return}if(ee.length>0)try{let e=ee.map(async e=>{let{data:t,error:a}=await x.supabase.from("projects").select("character_ids").eq("id",e).single();if(a)throw a;let r=t.character_ids||[];r.includes(s.id)||await (0,g.vr)(e,{character_ids:[...r,s.id]})});await Promise.all(e),N.oR.success(m("createCharacter.linkingSuccess"))}catch(e){console.error("å
³è项ç®å¤±è´¥:",e),N.oR.error(m("createCharacter.linkingFailed"))}N.oR.success(m("createCharacter.createSuccess")),d(s),eS(!1)}catch(e){console.error("å建è§è²æ¶åºé:",e),N.oR.error(m("createCharacter.createFailed"))}finally{eb(!1)}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(v.lG,{open:l,onOpenChange:eS,children:(0,r.jsxs)(v.Cf,{className:"w-[92vw] max-w-2xl lg:w-[60vw] max-h-[85vh] overflow-y-auto",children:[(0,r.jsx)(v.c7,{children:(0,r.jsx)(v.L3,{children:m("createCharacter.title")})}),(0,r.jsxs)("div",{className:"space-y-5 py-2",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)(C.J,{htmlFor:"char-name",className:"text-sm font-medium",children:[m("createCharacter.nameLabel")," ",(0,r.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,r.jsx)(j.p,{id:"char-name",value:h,onChange:e=>_(e.target.value),placeholder:m("createCharacter.namePlaceholder"),maxLength:100})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.imagesLabel")}),(0,r.jsxs)("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3",children:[$.map(e=>(0,r.jsxs)("div",{className:"relative group",children:[(0,r.jsx)("div",{className:"aspect-square overflow-hidden rounded-lg border bg-muted",children:(0,r.jsx)("img",{src:e.previewUrl,alt:"",className:"h-full w-full object-cover"})}),(0,r.jsx)("button",{type:"button",onClick:()=>e_(e.id),className:"absolute -top-2 -right-2 rounded-full bg-destructive p-1 text-destructive-foreground opacity-0 group-hover:opacity-100 transition-opacity shadow-sm",children:(0,r.jsx)(F.A,{size:12})}),(0,r.jsx)(j.p,{value:e.tag,onChange:t=>ek(e.id,t.target.value),placeholder:m("createCharacter.imageTagPlaceholder"),className:"mt-1 h-7 text-xs",maxLength:50})]},e.id)),(0,r.jsxs)("label",{className:"flex aspect-square cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed transition-colors border-border hover:border-primary/50 hover:bg-muted/50",children:[(0,r.jsx)("input",{type:"file",accept:"image/*",className:"hidden",onChange:e=>{var t;let a=null===(t=e.target.files)||void 0===t?void 0:t[0];if(!a)return;if(!a.type.startsWith("image/")){N.oR.error(m("createCharacter.invalidImageType")),e.target.value="";return}if(a.size>0xa00000){N.oR.error(m("createCharacter.imageTooLarge")),e.target.value="";return}let r=URL.createObjectURL(a),s={id:(0,q.A)(),file:a,previewUrl:r,tag:""};D(e=>[...e,s]),e.target.value=""},disabled:ej}),(0,r.jsx)(L.A,{size:24,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"mt-1 text-xs text-muted-foreground",children:m("createCharacter.addImage")})]})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)(C.J,{className:"text-sm font-medium",children:[m("createCharacter.sexLabel")," ",(0,r.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,r.jsxs)("div",{className:"flex gap-3",children:[(0,r.jsx)(b.$,{type:"button",variant:"Male"===U?"default":"outline",className:"flex-1 h-10",onClick:()=>V("Male"),children:(0,r.jsx)(E.A,{size:16,className:(0,y.cn)("mr-2","Male"===U?"":"text-blue-500")})}),(0,r.jsx)(b.$,{type:"button",variant:"Female"===U?"default":"outline",className:"flex-1 h-10",onClick:()=>V("Female"),children:(0,r.jsx)(P.A,{size:16,className:(0,y.cn)("mr-2","Female"===U?"":"text-pink-500")})})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.ageLabel")}),(0,r.jsx)(j.p,{value:O,onChange:e=>
1M(e.target.value),placeholder:m("createCharacter.agePlaceholder"),maxLength:20})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.ethnicityLabel")}),(0,r.jsx)(j.p,{value:J,onChange:e=>G(e.target.value),placeholder:m("createCharacter.ethnicityPlaceholder"),maxLength:50})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.personalityLabel")}),(0,r.jsx)(j.p,{value:B,onChange:e=>W(e.target.value),placeholder:m("createCharacter.personalityPlaceholder"),maxLength:200})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.descriptionLabel")}),(0,r.jsx)(k.T,{value:X,onChange:e=>H(e.target.value),placeholder:m("createCharacter.descriptionPlaceholder"),rows:3,maxLength:1e3})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.voiceLabel")}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[K?(0,r.jsxs)("div",{className:"flex flex-1 items-center gap-2 rounded-lg border bg-muted/30 px-3 py-2",children:[(0,r.jsx)(p.A,{size:16,className:"text-muted-foreground flex-shrink-0"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("p",{className:"text-sm font-medium truncate",children:K.name}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:K.provider})]}),(0,r.jsx)(b.$,{variant:"ghost",size:"sm",onClick:()=>Y(null),className:"h-7 px-2",children:(0,r.jsx)(F.A,{size:14})})]}):(0,r.jsxs)(b.$,{variant:"outline",size:"sm",onClick:()=>ew(!0),className:"gap-1.5",children:[(0,r.jsx)(o.A,{size:14}),m("createCharacter.selectVoice")]}),K&&(0,r.jsx)(b.$,{variant:"outline",size:"sm",onClick:()=>ew(!0),className:"flex-shrink-0",children:m("createCharacter.changeVoice")})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.tagLabel")}),(0,r.jsx)(j.p,{value:Z,onChange:e=>Q(e.target.value),placeholder:m("createCharacter.tagPlaceholder"),maxLength:50})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(C.J,{className:"text-sm font-medium",children:m("createCharacter.addToProject")}),(0,r.jsxs)(A.AM,{modal:!1,open:es,onOpenChange:ei,children:[(0,r.jsx)(A.Wv,{asChild:!0,children:(0,r.jsxs)(b.$,{variant:"outline",role:"combobox","aria-expanded":es,className:"w-full h-auto min-h-9 justify-between items-start py-2",children:[(0,r.jsx)("span",{className:"break-all text-left whitespace-normal",children:ea.length>0?ea.map(e=>e.name).join("ã"):m("createCharacter.selectProjects")}),(0,r.jsx)(T.A,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,r.jsx)(A.hl,{className:"w-[var(--radix-popover-trigger-width)] p-0",align:"start",children:(0,r.jsxs)("div",{className:"flex flex-col",children:[(0,r.jsx)("div",{className:"border-b p-2",children:(0,r.jsx)(j.p,{placeholder:m("createCharacter.searchProjects"),value:el,onChange:e=>en(e.target.value),className:"h-9"})}),(0,r.jsxs)("div",{className:"min-h-[200px] max-h-[400px] overflow-y-auto p-1",onWheel:e=>e.stopPropagation(),onScroll:ev,children:[ex.map(e=>(0,r.jsxs)("div",{className:(0,y.cn)("flex items-center gap-2 rounded-sm px-2 py-2 text-sm cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors",ee.includes(e.id)&&"bg-accent/50"),onClick:()=>{let t=ee.includes(e.id);et(a=>t?a.filter(t=>t!==e.id):[...a,e.id]),er(a=>t?a.filter(t=>t.id!==e.id):[...a,{id:e.id,name:e.name}])},children:[(0,r.jsx)(z.A,{className:(0,y.cn)("h-4 w-4 flex-shrink-0",ee.includes(e.id)?"opacity-100":"opacity-0")}),(0,r.jsx)("span",{className:"flex-1 truncate",children:e.name})]},e.id)),!eh&&0===ex.length&&(0,r.jsx)("div",{className:"py-6 text-center text-sm text-muted-foreground",children:m("createCharacter.noProjectFound")}),(eh||ef)&&(0,r.jsx)("div",{className:"flex justify-center py-3",children:(0,r.jsx)(u.A,{className:"h-4 w-4 animate-spin text-muted-foreground"})})]})]})})]})]})]}),(0,r.jsxs)(v.Es,{className:"gap-2 sm:gap-0",children:[(0,r.jsx)(b.$,{variant:"outline",onClick:()=>eS(!1),disabled:ej,children:m("createCharacter.cancel")}),(0,r.jsx)(b.$,{onClick:eR,disabled:ej||!h.trim(),children:ej?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u.A,{size:16,className:"mr-1.5 animate-spin"}),m("createCharacter.saving")]}):m("createCharacter.save")})]})]})}),(0,r.jsx)(S.F,{open:ey,onOpenChange:ew,currentVoiceId:null==K?void 0:K.id,onSelect:e=>{Y(e)}})]})},D=e=>[...e].sort((e,t)=>
1{if(e.is_pinned&&!t.is_pinned)return -1;if(!e.is_pinned&&t.is_pinned)return 1;let a=e.created_at?new Date(e.created_at).getTime():0;return(t.created_at?new Date(t.created_at).getTime():0)-a});function O(){var e,t,a,C,k,A,R,F,L;let{user:E}=(0,f.A)(),P=(0,w.c3)("storyboard-list"),T=(0,w.c3)("dashboard"),[z,q]=(0,i.useState)([]),[I,O]=(0,i.useState)(!0),[M,U]=(0,i.useState)(!1),[V,J]=(0,i.useState)(null),[G,B]=(0,i.useState)(null),[W,X]=(0,i.useState)(!1),[H,K]=(0,i.useState)(0),[Y,Z]=(0,i.useState)(-1),[Q,ee]=(0,i.useState)(!0),[et,ea]=(0,i.useState)(""),[er,es]=(0,i.useState)(""),[ei,el]=(0,i.useState)(!1),[en,ed]=(0,i.useState)(null),ec=(0,i.useRef)(null),[eo,eu]=(0,i.useState)(!1),[em,eh]=(0,i.useState)(null),[ep,ex]=(0,i.useState)(!1),[eg,ef]=(0,i.useState)(!1),[ev,ej]=(0,i.useState)(!1),[eb,ey]=(0,i.useState)(!1),ew=(0,i.useRef)(null),[eN,eC]=(0,i.useState)(!1),[eS,e_]=(0,i.useState)(!1),[ek,eA]=(0,i.useState)({}),[eR,eF]=(0,i.useState)(!1),[eL,eE]=(0,i.useState)(!1),[eP,eT]=(0,i.useState)(0),[ez,eq]=(0,i.useState)(!1),eI=(0,i.useRef)(null),[e$,eD]=(0,i.useState)([]),[eO,eM]=(0,i.useState)([]),[eU,eV]=(0,i.useState)(!1),[eJ,eG]=(0,i.useState)(null),[eB,eW]=(0,i.useState)(""),[eX,eH]=(0,i.useState)(!1),[eK,eY]=(0,i.useState)(!1),[eZ,eQ]=(0,i.useState)(null),[e0,e1]=(0,i.useState)(!1),[e2,e4]=(0,i.useState)(!1),e3=async e=>{try{if(e2)return;if(e4(!0),!E)throw Error(P("authRequired"));let t=!e.is_pinned,{error:a}=await x.supabase.from("characters").update({is_pinned:t}).eq("id",e.id);if(a)throw a;let r=z.map(a=>a.id===e.id?{...a,is_pinned:t}:a);q(D(r)),en&&ed(a=>a?D(a.map(a=>a.id===e.id?{...a,is_pinned:t}:a)):null),N.oR.success(t?P("pinSuccess"):P("unpinSuccess"))}catch(e){console.error("æ´æ°è§è²ç½®é¡¶ç¶æå¤±è´¥:",e),N.oR.error(P("operationFailed"))}finally{e4(!1)}},e5=async()=>{if(eZ&&!eK){eY(!0);try{let{error:e}=await x.supabase.from("characters").update({deleted_flag:1}).eq("id",eZ.id);if(e)throw e;q(e=>e.filter(e=>e.id!==eZ.id)),en&&ed(e=>e?e.filter(e=>e.id!==eZ.id):null),N.oR.success(P("deleteCharacterSuccess")),e1(!1),eQ(null)}catch(e){console.error("å é¤è§è²å¤±è´¥:",e),N.oR.error(P("deleteCharacterFailed"))}finally{eY(!1)}}},e8=async e=>{let t=eB.trim(),a=eO.find(t=>t.id===e);if(!t||eX||a&&a.name===t){eG(null);return}eH(!0);try{await (0,g.vr)(e,{name:t}),eM(a=>a.map(a=>a.id===e?{...a,name:t}:a)),N.oR.success(P("updateProjectSuccess"))}catch(e){console.error("Failed to update project name:",e),N.oR.error(P("updateProjectFailed"))}finally{eH(!1),eG(null)}},e7=(0,i.useCallback)(async e=>{eV(!0);try{let{data:t,error:a}=await x.supabase.from("projects").select("id, name").contains("character_ids",[e]).eq("deleted_flag",0);if(a)throw a;eM(t||[])}catch(e){console.error("Failed to fetch character projects:",e),eM([])}finally{eV(!1)}},[]),e9=(0,i.useCallback)(async e=>{if(0===e.length){eE(!1);return}eD(e),eE(!0),eq(!1),eT(0)},[]),e6=(0,i.useCallback)(()=>{eI.current&&(clearTimeout(eI.current),eI.current=null),eE(!1)},[]),te=(0,i.useCallback)(async()=>{if(eP>=30){eq(!0);return}try{let e=await Promise.all(e$.map(async e=>{try{var t,a;let r=await (0,s.Jt)("/audit/get-assets?id=".concat(e.assetId,"&img_id=").concat(e.id).concat(e.characterId?"&character_id=".concat(e.characterId):""));return{id:e.id,status:null==r?void 0:null===(a=r.data)||void 0===a?void 0:null===(t=a.Result)||void 0===t?void 0:t.Status}}catch(t){return console.error("Failed to poll status for image ".concat(e.id,":"),t),{id:e.id,status:null}}})),t={},a=!0,r=[];e.forEach(e=>{if("Active"===e.status)t[e.id]="approved";else if("Failed"===e.status)t[e.id]="rejected";else{a=!1;let t=e$.find(t=>t.id===e.id);t&&r.push(t)}}),Object.keys(t).length>0&&eA(e=>({...e,...t})),a?(e6(),N.oR.success(P("auditCompleted"))):(eD(r),eT(e=>e+1),eI.current=setTimeout(te,3e3))}catch(e){console.error("Polling error:",e),eT(e=>e+1),eI.current=setTimeout(te,3e3)}},[eP,e$,e6]);(0,i.useEffect)(()=>(!eL||ez||eI.current||(eI.current=setTimeout(te,3e3)),()=>{eI.current&&(clearTimeout(eI.current),eI.current=null)}),[eL,ez,te]);let tt=(0,i.useCallback)(async e=>{if(!e.images||0===e.images.length)return;let t=e.images.map(e=>
1e.id).filter(Boolean);if(0!==t.length){eF(!0);try{let{data:a,error:r}=await x.supabase.from("images").select("id, audit_status, metadata").in("id",t);if(r)throw r;let s={},i=[];null==a||a.forEach(t=>{let a=t.audit_status||"";if(s[t.id]=a,"reviewing"===a){var r,l;let a=null===(l=t.metadata)||void 0===l?void 0:null===(r=l.storage)||void 0===r?void 0:r.asset_id;a&&i.push({id:t.id,assetId:a,characterId:e.id})}}),eA(s),i.length>0&&e9(i)}catch(e){console.error("Failed to fetch audit statuses:",e)}finally{eF(!1)}}},[e9]),ta=(0,i.useCallback)(async e=>{if(!(null==E?void 0:E.id))return[];let t=30*e,{data:a,error:r}=await x.supabase.from("characters").select("id, name, images, settings, voice, is_public, tag, is_pinned, created_at").eq("user_id",E.id).eq("deleted_flag",0).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1}).range(t,t+30-1);if(r)throw r;let s=null!=a?a:[];return q(t=>{if(0===e)return s;if(0===s.length)return t;let a=new Set(t.map(e=>e.id)),r=s.filter(e=>!a.has(e.id));return 0===r.length?t:[...t,...r]}),Z(e),ee(30===s.length),s},[null==E?void 0:E.id]);(0,i.useEffect)(()=>{let e=!0;return(async()=>{if(!(null==E?void 0:E.id)){O(!1);return}try{if(O(!0),J(null),q([]),Z(-1),ee(!0),ea(""),es(""),ed(null),el(!1),await ta(0),!e)return}catch(t){console.error(P("fetchCharacterDataFailed"),t),e&&J(t instanceof Error?t.message:"")}finally{e&&O(!1)}})(),()=>{e=!1}},[null==E?void 0:E.id,ta]);let tr=(0,i.useCallback)(async()=>{if(!I&&!M&&Q&&!et.trim()){U(!0);try{await ta(Y+1)}catch(e){console.error(P("loadMoreCharactersFailed"),e),J((null==e?void 0:e.message)||"")}finally{U(!1)}}},[Y,Q,ta,I,M]);(0,i.useEffect)(()=>{let e=ec.current;if(!e)return;let t=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&tr()})},{root:null,rootMargin:"200px",threshold:0});return t.observe(e),()=>{t.disconnect()}},[tr]),(0,i.useEffect)(()=>{let e=window.setTimeout(()=>{es(et.trim())},400);return()=>{window.clearTimeout(e)}},[et]);let ts=(0,i.useMemo)(()=>er?null!=en?en:[]:z,[z,er,en]);(0,i.useEffect)(()=>{if(!(null==E?void 0:E.id)||!er){ed(null),el(!1);return}let e=!0;return(async()=>{try{el(!0),J(null);let{data:t,error:a}=await x.supabase.from("characters").select("id, name, images, settings, voice, is_public, tag, is_pinned, created_at").eq("user_id",E.id).eq("deleted_flag",0).ilike("name","%".concat(er,"%")).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1});if(a)throw a;if(!e)return;ed(null!=t?t:[])}catch(t){if(console.error(P("searchCharactersFailed"),t),!e)return;J(t instanceof Error?t.message:""),ed([])}finally{e&&el(!1)}})(),()=>{e=!1}},[er,null==E?void 0:E.id]);let ti=e=>{if(!e||0===e.length)return null;let t=e.find(e=>null==e?void 0:e.url);return(null==t?void 0:t.url)||null},tl=(0,i.useCallback)(e=>{var t;let a=P("unnamedCharacter");if(!e)return a;let r=e.trim();if(!r)return a;let[s]=r.split(/\s+/);return s?/^[\u0000-\u007f]+$/.test(s)?s:null!==(t=s[0])&&void 0!==t?t:a:a},[P]),tn=async e=>{if(!ep&&em){ex(!0);try{let{error:a}=await x.supabase.from("characters").update({tag:e,is_public:!0}).eq("id",em.id);if(a)throw a;if(em.images&&em.images.length>0){let e=em.images.map(e=>e.id).filter(Boolean);if(e.length>0){let{data:a,error:r}=await x.supabase.from("images").select("id, metadata").in("id",e);if(r)console.error("Failed to fetch images metadata:",r);else if(a&&a.length>0){var t;let e=a.map(e=>({id:e.id,metadata:{...e.metadata||{},public:!0}})).map(e=>x.supabase.from("images").update({metadata:e.metadata}).eq("id",e.id)),r=await Promise.all(e),s=null===(t=r.find(e=>e.error))||void 0===t?void 0:t.error;s&&console.error("Failed to update some images metadata:",s)}}}N.oR.success(P("publishSuccess")),eu(!1),eh(null),q(t=>t.map(t=>t.id===em.id?{...t,tag:e,is_public:!0}:t)),en&&ed(t=>t?t.map(t=>t.id===em.id?{...t,tag:e,is_public:!0}:t):null)}catch(e){console.error(P("publishCharacterFailed"),e),N.oR.error(P("publishFailed"))}finally{ex(!1)}}},td=async e=>{if(!ep){ex(!0);try{let{error:a}=await x.supabase.from("characters").update({tag:null,is_public:!1}).eq("id",e.id);if(a)throw a;if(e.images&&e.images.length>0){let a=e.images.map(e=>
1e.id).filter(Boolean);if(a.length>0){let{data:e,error:r}=await x.supabase.from("images").select("id, metadata").in("id",a);if(r)console.error("Failed to fetch images metadata:",r);else if(e&&e.length>0){var t;let a=e.map(e=>({id:e.id,metadata:{...e.metadata||{},public:!1}})).map(e=>x.supabase.from("images").update({metadata:e.metadata}).eq("id",e.id)),r=await Promise.all(a),s=null===(t=r.find(e=>e.error))||void 0===t?void 0:t.error;s&&console.error("Failed to update some images metadata during unpublish:",s)}}}N.oR.success(P("unpublishSuccess")),q(t=>t.map(t=>t.id===e.id?{...t,tag:void 0,is_public:!1}:t)),en&&ed(t=>t?t.map(t=>t.id===e.id?{...t,tag:void 0,is_public:!1}:t):null)}catch(e){console.error(P("unpublishCharacterFailed"),e),N.oR.error(P("unpublishFailed"))}finally{ex(!1)}}},tc=(0,i.useCallback)(()=>{e_(!0)},[]),to=(0,i.useCallback)(e=>{q(t=>[e,...t])},[]);return(0,r.jsxs)("div",{className:"w-full",children:[(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{className:"relative w-full sm:max-w-xs",children:[(0,r.jsx)(c.A,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(j.p,{value:et,onChange:e=>ea(e.target.value),placeholder:P("searchCharacters"),className:"pl-9"})]}),(0,r.jsxs)(b.$,{className:"h-9 gap-1.5 px-3 py-2 shrink-0",onClick:tc,children:[(0,r.jsx)(o.A,{className:"h-4 w-4"}),P("createCharacter.createBtn")]})]}),(0,r.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-4",children:I||ei?(0,r.jsx)("div",{className:"col-span-full text-xs text-muted-foreground",children:P("loading")}):0===ts.length?(0,r.jsx)("div",{className:"col-span-full rounded-lg border border-dashed p-6 text-center text-xs text-muted-foreground",children:et.trim()?P("noCharactersMatchSearch"):P("noCharactersYet")}):ts.map(e=>(0,r.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>{B(e),X(!0),K(0),tt(e),e7(e.id)},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),B(e),X(!0),K(0),tt(e),e7(e.id))},className:"overflow-hidden rounded-lg border bg-background shadow-sm transition-shadow hover:shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 relative group",children:[e.is_pinned&&(0,r.jsx)("div",{className:"absolute top-0 left-0 bg-primary text-primary-foreground z-10 px-2 py-0.5 text-[10px] font-medium rounded-br-md",children:T("pinned")}),(0,r.jsxs)("div",{className:"absolute top-2 right-2 z-10 flex gap-1.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,r.jsx)(b.$,{variant:"ghost",size:"icon",className:"h-7 w-7 bg-background/80 backdrop-blur-sm hover:bg-primary",onClick:t=>{t.stopPropagation(),e3(e)},children:e.is_pinned?(0,r.jsx)(l.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(n.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)(b.$,{variant:"ghost",size:"icon",className:"h-7 w-7 bg-background/80 backdrop-blur-sm hover:bg-primary",onClick:t=>{t.stopPropagation(),eQ(e),e1(!0)},children:(0,r.jsx)(d.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("div",{className:"aspect-video overflow-hidden rounded-b-none bg-emerald-950/10",children:(()=>{let t=ti(e.images);return t?(0,r.jsx)("img",{src:t,alt:e.name,className:"h-full m-auto",loading:"lazy"}):(0,r.jsx)("div",{className:"flex h-full w-full items-center justify-center text-lg font-semibold text-muted-foreground",children:tl(e.name)})})()}),(0,r.jsx)("div",{className:"p-3",children:(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,r.jsx)("span",{className:(0,y.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide","bg-emerald-100 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300"),children:P("characterTag")}),(0,r.jsx)("p",{className:"text-sm font-medium text-foreground truncate",title:e.name,children:e.name||P("unnamedCharacter")})]}),(0,r.jsx)("div",{className:"flex items-center gap-1",onClick:e=>e.stopPropagation(),children:e.is_public?(0,r.jsx)(b.$,{variant:"outline",size:"sm",onClick:t=>{t.stopPropagation(),td(e)},disabled:ep,children:P("unpublish")}):(0,r.jsx)(b.$,{variant:"outline",size:"sm",onClick:t=>{t.stopPropagation(),eh(e),eu(!0)},children:P("publish")})})]})})]},e.id))}),(0,r.jsx)("div",{ref:ec,className:"h-1","aria-hidden":!0}),M&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground text-center",children:P("loadingMore")}),V&&(0,r.jsx)("p",{className:"text-xs text-destructive",children:P("loadDataFailed",{error:V})})]}),em&&(0,r.jsx)(_,{open:eo,onOpenChange:eu,character:em,onConfirm:tn,isPublishing:ep,onVoiceChange:(e,t)=>
1{q(a=>a.map(a=>a.id===e?{...a,voice:t}:a)),eh(a=>a&&a.id===e?{...a,voice:t}:a)}}),(0,r.jsx)(v.lG,{open:e0,onOpenChange:e1,children:(0,r.jsxs)(v.Cf,{className:"sm:max-w-[425px]",children:[(0,r.jsxs)(v.c7,{children:[(0,r.jsx)(v.L3,{children:P("deleteCharacterTitle")}),(0,r.jsx)(v.rr,{children:P("deleteCharacterDescription")})]}),(0,r.jsxs)(v.Es,{className:"gap-2 sm:gap-0",children:[(0,r.jsx)(b.$,{variant:"outline",onClick:()=>e1(!1),disabled:eK,children:P("cancel")}),(0,r.jsx)(b.$,{variant:"destructive",onClick:e5,disabled:eK,children:eK?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(u.A,{className:"mr-2 h-4 w-4 animate-spin"}),T("deleting")]}):P("delete")})]})]})}),(0,r.jsx)(v.lG,{open:W,onOpenChange:e=>{X(e),e||(K(0),e6(),eq(!1))},children:(0,r.jsx)(v.Cf,{className:"w-[92vw] max-w-5xl lg:w-[80vw]",children:G&&(0,r.jsxs)("div",{className:"space-y-4",children:[eL&&(0,r.jsx)("div",{className:"absolute inset-0 z-[100] flex flex-col items-center justify-center bg-background/80 backdrop-blur-sm rounded-lg",children:ez?(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4 p-6 text-center",children:[(0,r.jsx)("p",{className:"text-lg font-medium text-destructive",children:P("pollTimeout")}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:P("retryPoll")}),(0,r.jsxs)("div",{className:"flex gap-3 mt-2",children:[(0,r.jsx)(b.$,{variant:"outline",onClick:()=>{e6(),eq(!1)},children:P("cancel")}),(0,r.jsx)(b.$,{onClick:()=>{eq(!1),eT(0),te()},children:P("rePoll")})]})]}):(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,r.jsx)("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent"}),(0,r.jsx)("p",{className:"text-lg font-medium",children:P("pollingAuditStatus")})]})}),(0,r.jsxs)(v.c7,{children:[(0,r.jsxs)(v.L3,{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,y.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium uppercase tracking-wide","bg-emerald-100 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300"),children:P("characterTag")}),G.name||P("unnamedCharacter")]}),(0,r.jsx)(v.rr,{children:P("characterPreviewDescription")})]}),(0,r.jsxs)("div",{className:"grid gap-6 md:grid-cols-[1.4fr_1fr]",children:[(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"relative overflow-hidden rounded-lg border flex justify-center group/main-image",children:(()=>{var e;let t=Array.isArray(G.images)?G.images.filter(e=>!!(null==e?void 0:e.url)):[],a=null!==(e=t[H])&&void 0!==e?e:t[0],i=(null==a?void 0:a.url)||null;if(i){let e=ek[a.id],l=a.id in ek;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("img",{src:i,alt:G.name,className:"h-80"}),l&&(0,r.jsx)("div",{className:"absolute bottom-2 right-2",children:(0,r.jsx)(b.$,{size:"sm",disabled:eN||eR||"reviewing"===e||"approved"===e,className:(0,y.cn)("h-9 px-4 text-xs border shadow-md backdrop-blur-sm transition-all bg-black/50 border-white/20","approved"===e?"text-emerald-500 opacity-100 !opacity-100 cursor-default":"rejected"===e?"text-red-500 opacity-100 !opacity-100":"hover:bg-black/70 text-white disabled:opacity-50"),onClick:async a=>{if(a.stopPropagation(),!G||eN)return;let r=t[H];if(r){if("reviewing"===e){N.oR.info(P("imageInReview"));return}eC(!0);try{var i,l,n;let e=await (0,s.bE)("/audit/pc",{image_id:r.id,character_id:G.id,name:G.name,url:r.url});if((null===(i=e.data)||void 0===i?void 0:i.message)!=="ok")throw Error(e.message||P("requestFailed"));let{data:t,error:a}=await x.supabase.from("images").select("audit_status, metadata").eq("id",r.id).single();if(!a&&t){let e=t.audit_status||"";if(eA(t=>({...t,[r.id]:e})),"reviewing"===e){let e=null===(n=t.metadata)||void 0===n?void 0:null===(l=n.storage)||void 0===l?void 0:l.asset_id;e&&e9([{id:r.id,assetId:e,characterId:G.id}])}}N.oR.success(P("auditSubmitted"))}catch(e){console.error(P("submitAuditFailed"),e),N.oR.error(P("submitAuditFailed"))}finally{eC(!1)}}},children:eN?(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("div",{className:"h-3 w-3 animate-spin rounded-full border-2 border-white/30 border-t-white"}),P("submitting")]}):eR?P("loading"):"reviewing"===e?P("auditStatusReviewing"):"approved"===e?P("auditStatusApproved"):"rejected"===e?P("auditStatusRejected"):P("auditCharacterImage")})})]})}return(0,r.jsx)("div",{className:"flex h-80 w-full items-center justify-center text-2xl font-semibold text-muted-foreground",children:tl(G.name)})})()}),Array.isArray(G.images)&&(null===(e=G.images)||void 0===e?void 0:e.length)>
11&&(0,r.jsx)("div",{className:"grid grid-cols-5 gap-3",children:G.images.filter(e=>!!(null==e?void 0:e.url)).map((e,t)=>(0,r.jsx)("button",{type:"button",onClick:()=>K(t),className:(0,y.cn)("overflow-hidden rounded-md border focus:outline-none focus-visible:ring-2 focus-visible:ring-primary",H===t?"ring-2 ring-primary border-primary":"border-border"),children:(0,r.jsx)("img",{src:e.url,alt:G.name||P("characterTag"),className:"h-20 w-full object-cover"})},e.id||e.url))})]}),(0,r.jsxs)("div",{className:"space-y-4 rounded-lg border bg-muted/30 p-5 text-left text-sm leading-relaxed",children:[(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:P("basicInformation")}),(0,r.jsxs)("p",{children:[P("nameLabel"),": ",G.name||P("unnamedCharacter")]}),(0,r.jsxs)("p",{children:[P("typeLabel"),": ",P("characterType")]})]}),G.settings&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:P("characterSettingsTitle")}),"age"in G.settings&&(null===(t=G.settings)||void 0===t?void 0:t.age)&&(0,r.jsxs)("p",{children:[P("ageLabel"),": ",G.settings.age]}),"sex"in G.settings&&(null===(a=G.settings)||void 0===a?void 0:a.sex)&&(0,r.jsxs)("p",{children:[P("genderLabel"),": ",G.settings.sex]}),"ethnicity"in G.settings&&(null===(C=G.settings)||void 0===C?void 0:C.ethnicity)&&(0,r.jsxs)("p",{children:[P("ethnicityLabel"),": ",G.settings.ethnicity]}),"personality"in G.settings&&(null===(k=G.settings)||void 0===k?void 0:k.personality)&&(0,r.jsxs)("p",{children:[P("personalityLabel"),": ",G.settings.personality]}),"description"in G.settings&&(null===(A=G.settings)||void 0===A?void 0:A.description)&&(0,r.jsxs)("p",{className:"whitespace-pre-wrap",children:[P("descriptionLabel"),": ",G.settings.description]})]}),G.voice&&Object.keys(G.voice).length>0?(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:P("voiceInformation")}),(0,r.jsxs)("div",{className:"relative group/edit flex-shrink-0 cursor-pointer",onClick:e=>{e.stopPropagation(),ef(!0)},children:[(0,r.jsx)(m.A,{size:14,className:"text-muted-foreground hover:text-primary"}),(0,r.jsx)("div",{className:"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-1 px-2 py-1 bg-black bg-opacity-75 text-white text-xs rounded whitespace-nowrap opacity-0 group-hover/edit:opacity-100 transition-opacity duration-200 z-10",children:P("editVoice")})]})]}),"name"in G.voice&&(null===(R=G.voice)||void 0===R?void 0:R.name)&&(0,r.jsxs)("p",{className:"flex items-center gap-1",children:[P("voiceLabel"),": ",G.voice.name,(0,r.jsxs)("span",{className:"relative group/listen inline-flex flex-shrink-0 cursor-pointer ml-1",onClick:async e=>{var t;e.stopPropagation();let a=null===(t=G.voice)||void 0===t?void 0:t.id;if(a){if(eb&&ew.current){ew.current.pause(),ew.current.currentTime=0,ey(!1);return}try{let{data:e,error:t}=await x.supabase.from("tts_configs").select("settings").eq("id",a).single();if(t){console.error(P("fetchTtsConfigsFailed"),t);return}if((null==e?void 0:e.settings)&&Array.isArray(e.settings)&&e.settings.length>0){let t=e.settings[0];t.demo_audio&&(ew.current?ew.current.src=t.demo_audio:ew.current=new Audio(t.demo_audio),ew.current.onended=()=>ey(!1),ew.current.play().then(()=>ey(!0)).catch(e=>{console.error(P("audioPlayFailed"),e),ey(!1)}))}}catch(e){console.error(P("handleAudioPlayError"),e)}}},children:[eb?(0,r.jsx)(h.A,{size:14,className:"text-primary"}):(0,r.jsx)(p.A,{size:14,className:"text-muted-foreground hover:text-primary"}),(0,r.jsx)("span",{className:"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-1 px-2 py-1 bg-black bg-opacity-75 text-white text-xs rounded whitespace-nowrap opacity-0 group-hover/listen:opacity-100 transition-opacity duration-200 z-10",children:eb?P("stop"):P("listen")})]})]}),"provider"in G.voice&&(null===(F=G.voice)||void 0===F?void 0:F.provider)&&(0,r.jsxs)("p",{children:[P("providerLabel"),": ",G.voice.provider]})]}):(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:P("voiceInformation")}),(0,r.jsxs)("div",{className:"relative group/edit flex-shrink-0 cursor-pointer",onClick:e=>{e.stopPropagation(),ef(!0)},children:[(0,r.jsx)(m.A,{size:14,className:"text-muted-foreground hover:text-primary"}),(0,r.jsx)("div",{className:"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-1 px-2 py-1 bg-black bg-opacity-75 text-white text-xs rounded whitespace-nowrap opacity-0 group-hover/edit:opacity-100 transition-opacity duration-200 z-10",children:P("editVoice")})]})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:P("noVoiceSettingsFound")})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:P("projectsLabel")}),eU?(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:P("loading")}):eO.length>0?(0,r.jsx)("div",{className:"flex flex-wrap gap-2 max-h-[120px] overflow-y-auto pr-1 custom-scrollbar",children:eO.map(e=>(0,r.jsx)("div",{className:"group flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-1 text-[12px] font-medium text-primary",children:eJ===e.id?(0,r.jsxs)("div",{className:"flex items-center gap-1 flex-1 min-w-0",children:[(0,r.jsx)(j.p,{value:eB,onChange:e=>eW(e.target.value),onBlur:()=>e8(e.id),onKeyDown:t=>{"Enter"===t.key?e8(e.id):"Escape"===t.key&&eG(null)},autoFocus:!0,className:"!h-auto !flex-1 !min-w-0 !w-full !px-0 !py-0 !text-[12px] !border-0 !focus-visible:ring-0 !shadow-none !text-primary !bg-primary/10"}),eX&&(0,r.jsx)(u.A,{className:"h-3 w-3 animate-spin text-primary"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"cursor-pointer hover:underline",onClick:t=>{t.stopPropagation(),eG(e.id),eW(e.name)}
1,children:e.name}),(0,r.jsx)(m.A,{size:10,className:"cursor-pointer text-primary/60 hover:text-primary transition-colors",onClick:t=>{t.stopPropagation(),eG(e.id),eW(e.name)}})]})},e.id))}):(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:P("noProjects")})]})]})]}),(0,r.jsx)(v.Es,{children:G.is_public?(0,r.jsx)(b.$,{variant:"outline",onClick:()=>{td(G),X(!1)},disabled:ep,children:P("unpublish")}):(0,r.jsx)(b.$,{variant:"default",onClick:()=>{eh(G),eu(!0),X(!1)},children:P("publish")})})]})})}),G&&(0,r.jsx)(S.F,{open:eg,onOpenChange:ef,currentVoiceId:null===(L=G.voice)||void 0===L?void 0:L.id,onSelect:async e=>{if(!ev&&G){ej(!0);try{let{error:t}=await x.supabase.from("characters").update({voice:{id:e.id,name:e.name,provider:e.provider,settings:e.settings,demo_audio:e.demo_audio}}).eq("id",G.id);if(t){console.error(P("updateVoiceFailed"),t),N.oR.error(P("operationFailed"));return}N.oR.success(P("updateVoiceSuccess")),q(t=>t.map(t=>t.id===G.id?{...t,voice:{id:e.id,name:e.name,provider:e.provider,settings:e.settings,demo_audio:e.demo_audio}}:t)),B(t=>t&&t.id===G.id?{...t,voice:{id:e.id,name:e.name,provider:e.provider,settings:e.settings,demo_audio:e.demo_audio}}:t)}catch(e){console.error(P("handleVoiceUpdateError"),e),N.oR.error(P("operationFailed"))}finally{ej(!1)}}}}),(0,r.jsx)($,{open:eS,onOpenChange:e_,onCreated:to})]})}},12845:(e,t,a)=>{a.d(t,{E:()=>d});var r=a(88017);a(44109);var s=a(70810),i=a(56783),l=a(57031);let n=(0,i.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function d(e){let{className:t,variant:a,asChild:i=!1,...d}=e,c=i?s.DX:"span";return(0,r.jsx)(c,{"data-slot":"badge",className:(0,l.cn)(n({variant:a}),t),...d})}},21850:(e,t,a)=>{a.d(t,{s:()=>m});var r=a(44109),s=a(39825),i=a(98476),l=a(68036),n=a(61579),d=a(21822),c=a(29965),o=a(78837),u=a(91590);let m=()=>{let e=(0,s.useRouter)(),{user:t}=(0,n.A)(),a=(0,i.c3)("quickstart"),{isAgentMode:m,setAgentMode:h,getModelOptions:p,getDefaultModel:x,validateModelChange:g,initializeModelSelection:f,checkFeatureAccess:v,setShowInsufficientCreditsDialog:j,setInsufficientCreditsDialogType:b}=(0,d.X)(),{fetchBalance:y,walletData:w}=(0,c.G)(),{baseConfig:N}=(0,u.J)();(0,r.useEffect)(()=>{m||h(!0)},[]),p(w);let[C,S]=(0,r.useState)(""),[_,k]=(0,r.useState)(!1),[A,R]=(0,r.useState)(!1),[F,L]=(0,r.useState)(""),E=(0,r.useRef)(!1),{initialFetchCompleted:P}=(0,c.G)();(0,r.useEffect)(()=>{P&&(null==N?void 0:N.agent_model)&&!E.current&&f(w,L,"Dashboard")&&(E.current=!0)},[w,P,f,N]);let T=(0,r.useCallback)(e=>{g(e,w)&&(L(e),localStorage.setItem(d.K,e))},[g,w]),z=async e=>await (0,o.gA)({name:e.name,description:e.description,status:"draft",settings:{cover_url:"",aspect_ratio:"16:9",style:"Cinematic"}}),q=(0,r.useCallback)(async(r,s)=>{let i=r||C;if(!i.trim()){l.oR.error(a("promptRequired"),{position:"top-center"});return}if(!(null==t?void 0:t.id)){l.oR.error(a("authInfoMissing"));return}if(m){await v(w,null);let{isAgentModeEnabled:e}=d.X.getState();if(!e){b("no_permission"),j(!0);return}if(!g(F,w))return}try{k(!0);let r=await z({name:a("newProject"),description:i.substring(0,100),user_id:t.id,status:"draft"}),l=new URLSearchParams({autoSubmit:"true",prompt:i,mode:m?"agent":"standard",generationType:"script",...m&&{selectedModelOption:F},...m&&void 0!==s&&{useNewVersion:s}}),n="/project/".concat(r.id,"?").concat(l.toString());S(""),e.push(n)}catch(e){console.error("Dashboard: å建项ç®å¤±è´¥:",e),l.oR.error(a("createProjectFailed")||"å建项ç®å¤±è´¥")}finally{k(!1)}},[C,null==t?void 0:t.id,m,F,e,a,w,v,g,b,j]),I=(0,r.useCallback)(async function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0],arguments.length>1&&void 0!==arguments[1]&&arguments[1],arguments.length>2&&void 0!==arguments[2]&&arguments[2];let e=arguments.length>3?arguments[3]:void 0;if(!C.trim()){l.oR.error(a("promptRequired"));return}try{k(!0),await q(void 0,e)}catch(e){console.error("Agentä»»å¡æäº¤å¤±è´¥:",e),l.oR.error(a("taskSubmissionFailed"))}finally{k(!1)}},[C,q,a]);return{prompt:C,setPrompt:S,generationType:"script",isAgentMode:m,isLoading:_,selectedModelOption:F,setSelectedModelOption:L,handleSubmit:q,handleAgentSubmit:I,handleModelChange:T,uploadedImage:null,setUploadedImage:()=>{},firstFrame:null,lastFrame:null,setFirstFrame:()=>{},setLastFrame:()=>{},isUploading:!1}}},25141:(e,t,a)=>{a.d(t,{E:()=>i});var r=a(88017),s=a(57031);function i(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"skeleton",className:(0,s.cn)("bg-accent animate-pulse rounded-md",t),...a})}},37470:(e,t,a)=>{a.d(t,{T:()=>b});var r=a(88017),s=a(44109),i=a(80887),l=a(60991),n=a(50338),d=a(82600),c=a(91490),o=a(61579),u=a(22270),m=a(12845),h=a(25141),p=a(26584),x=a.n(p),g=a(70247),f=a.n(g),v=a(21676),j=a(98476);function b(){var e;let{userId:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{user:a}=(0,o.A)(),p=null!==(e=null!=t?t:null==a?void 0:a.id)&&void 0!==e?e:null,g=(0,j.c3)("storyboard-list"),[b,y]=(0,s.use
1State)([]),[w,N]=(0,s.useState)(!0),[C,S]=(0,s.useState)(!1),[_,k]=(0,s.useState)(!0),[A,R]=(0,s.useState)(null),[F,L]=(0,s.useState)(""),E=(0,s.useRef)(0),P=(0,s.useRef)(!1),T=(0,s.useRef)(!1),z=(0,s.useRef)(!0),q=(0,s.useRef)(new Set),{ref:I,inView:$}=(0,l.Wx)({threshold:.2,rootMargin:"200px"}),D=e=>{if(!e)return{};if("string"==typeof e)try{return JSON.parse(e)}catch(e){return console.warn("è§£æé¡¹ç®è®¾ç½®å¤±è´¥:",e),{}}return"object"==typeof e?e:{}},O=(0,s.useCallback)(async e=>{try{let t=e.filter(e=>e.character_ids&&e.character_ids.length>0&&!e.settings.cover_url);if(0===t.length)return e;let a=t.map(e=>{var t;return null===(t=e.character_ids)||void 0===t?void 0:t[0]}).filter(e=>!!e);if(!a.length)return e;let{data:r,error:s}=await c.supabase.from("characters").select("id, images").in("id",a);if(s)return console.error("è·åè§è²å°é¢å¤±è´¥:",s),e;if(!r)return e;return e.map(e=>{if(!e.character_ids||!e.character_ids.length||e.settings.cover_url)return e;let t=r.find(t=>{var a;return t.id===(null===(a=e.character_ids)||void 0===a?void 0:a[0])});if(!t)return e;let a=(Array.isArray(t.images)?t.images:[]).find(e=>(null==e?void 0:e.url)||(null==e?void 0:e.image_url));return a?{...e,settings:{...e.settings,cover_url:a.url||a.image_url}}:e})}catch(t){return console.error("å¤çè§è²å°é¢å¤±è´¥:",t),e}},[]),M=(0,s.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!p){y([]),N(!1),k(!1),z.current=!1,q.current.clear();return}if(!t&&(P.current||!z.current)||!t&&q.current.has(e))return;t?q.current=new Set([e]):q.current.add(e),P.current=!0,t?N(!0):S(!0),R(null);let a=12*e;try{let{data:r,error:s}=await c.supabase.from("projects").select("id, name, description, status, settings, character_ids, seo_summary_settings, created_at").eq("is_public",!0).eq("user_id",p).order("created_at",{ascending:!1}).range(a,a+12-1);if(s)throw s;let i=(null!=r?r:[]).map(e=>({...e,settings:D(e.settings)})),l=await O(i);t?(y(l),E.current=0):(y(e=>{let t=new Set(e.map(e=>e.id)),a=l.filter(e=>!t.has(e.id));return[...e,...a]}),E.current=e);let n=12===(null!=r?r:[]).length;z.current=n,k(n)}catch(e){console.error("å 载模æ¿é¡¹ç®å¤±è´¥:",e),R(e instanceof Error?e.message:"Failed to load templates")}finally{P.current=!1,t?N(!1):S(!1)}},[O,p]);(0,s.useEffect)(()=>{q.current.clear(),z.current=!0,E.current=0,y([]),k(!0)},[p]),(0,s.useEffect)(()=>{M(0,!0)},[M]),(0,s.useEffect)(()=>{z.current=_},[_]),(0,s.useEffect)(()=>{!$||T.current||!_||C||w||P.current||M(E.current+1),T.current=$},[M,_,$,w,C]);let U=(0,s.useMemo)(()=>{let e=F.trim().toLowerCase();return e?b.filter(t=>{var a;return null===(a=t.name)||void 0===a?void 0:a.toLowerCase().includes(e)}):b},[F,b]);(0,s.useEffect)(()=>{L("")},[p]);let V=(0,s.useMemo)(()=>(0,r.jsx)("div",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3",children:Array(9).fill(0).map((e,t)=>(0,r.jsxs)(u.Zp,{className:"overflow-hidden",children:[(0,r.jsx)(h.E,{className:"h-48 w-full"}),(0,r.jsxs)(u.Wu,{className:"space-y-3 p-4",children:[(0,r.jsx)(h.E,{className:"h-5 w-3/4"}),(0,r.jsx)(h.E,{className:"h-4 w-full"}),(0,r.jsx)(h.E,{className:"h-4 w-2/3"})]})]},t))}),[]),J=e=>{var t;let{template:a}=e,i=null===(t=a.settings)||void 0===t?void 0:t.cover_url,l=(0,s.useMemo)(()=>{if(!a.seo_summary_settings)return null;try{return"string"==typeof a.seo_summary_settings?JSON.parse(a.seo_summary_settings):a.seo_summary_settings}catch(e){return console.warn("è§£æ SEO æ°æ®å¤±è´¥:",e),null}},[a.seo_summary_settings]),n=l&&"object"==typeof l?l.description:null,d=l&&"object"==typeof l?l.videoUrl:null,c=l&&"object"==typeof l&&Array.isArray(l.tags)?l.tags:[],o=(0,s.useMemo)(()=>{if(!a.name)return"Template";let e=a.name.trim();return e.slice(0,2)||e.charAt(0)||"Template"},[a.name]);return(0,r.jsx)(f(),{href:"/templates/".concat(a.id),className:"group block",children:(0,r.jsxs)(u.Zp,{className:"overflow-hidden border transition-all bg-card text-card-foreground",children:[(0,r.jsx)(u.aR,{className:"p-0",children:(0,r.jsx)("div",{className:"relative w-full overflow-hidden bg-muted",style:{minHeight:200},children:d?(0,r.jsx)("div",{className:"relative w-full h-full",children:(0,r.jsx)("video",{src:d,className:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-105",muted:!0,loop:!0,playsInl
1ine:!0,preload:"metadata",onMouseEnter:e=>{e.currentTarget.play().catch(()=>{})},onMouseLeave:e=>{let t=e.currentTarget;t.pause(),t.currentTime=0},style:{minHeight:200}})}):i?(0,r.jsx)(x(),{src:i,alt:a.name,fill:!0,className:"object-cover transition-transform duration-300 group-hover:scale-105"}):(0,r.jsx)("div",{className:"flex h-48 items-center justify-center bg-gradient-to-br from-muted to-muted-foreground/20",children:(0,r.jsx)("p",{className:"text-2xl font-semibold text-muted-foreground/70",children:o})})})}),(0,r.jsxs)(u.Wu,{className:"space-y-2 px-4 py-3 text-sm transition-colors bg-card text-card-foreground dark:bg-[#141414] dark:text-white",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("h3",{className:"flex-shrink-0 font-semibold leading-none line-clamp-1 transition-colors group-hover:text-primary",children:a.name}),(n||a.description)&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:"|"}),(0,r.jsx)("p",{className:"flex-1 min-w-0 text-muted-foreground line-clamp-1 dark:text-white/80",children:null!=n?n:a.description})]})]}),c.length>0&&(0,r.jsxs)("div",{className:"flex flex-wrap gap-1",children:[c.slice(0,3).map((e,t)=>(0,r.jsxs)(m.E,{variant:"outline",className:"h-5 px-2 py-0.5 text-xs font-normal transition-colors bg-muted/60 text-muted-foreground border-border dark:bg-white/5 dark:text-white dark:border-white/20",children:["#",e]},"".concat(a.id,"-").concat(e,"-").concat(t))),c.length>3&&(0,r.jsxs)(m.E,{variant:"outline",className:"h-5 px-2 py-0.5 text-xs font-normal transition-colors bg-muted/60 text-muted-foreground border-border dark:bg-white/5 dark:text-white dark:border-white/20",children:["+",c.length-3]})]})]})]})})};return A?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center p-12 text-center",children:[(0,r.jsx)("div",{className:"rounded-full bg-muted p-6 mb-4",children:(0,r.jsx)(n.A,{className:"h-10 w-10 text-muted-foreground"})}),(0,r.jsx)("h3",{className:"text-xl font-semibold mb-2",children:"Failed to load templates"}),(0,r.jsx)("p",{className:"text-muted-foreground mb-4",children:A}),(0,r.jsx)("button",{className:"rounded-md bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground",onClick:()=>M(0,!0),children:"Reload"})]}):(0,r.jsxs)("div",{className:"w-full",children:[(0,r.jsx)("div",{className:"mb-6 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:(0,r.jsxs)("div",{className:"relative w-full sm:max-w-xs",children:[(0,r.jsx)(n.A,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(v.p,{value:F,onChange:e=>L(e.target.value),placeholder:g("searchTemplates"),className:"pl-9"})]})}),w&&0===b.length?V:U.length>0?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.A,{breakpointCols:{default:3,1100:3,700:2,500:1},className:"flex w-auto -ml-6",columnClassName:"pl-6 bg-clip-padding",children:U.map(e=>(0,r.jsx)("div",{className:"mb-6 break-inside-avoid",children:(0,r.jsx)(J,{template:e})},e.id))}),!F&&_&&(0,r.jsx)("div",{ref:I,className:"flex justify-center py-8",children:C&&(0,r.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,r.jsx)(d.A,{className:"h-5 w-5 animate-spin"}),(0,r.jsx)("span",{children:"Loading more templates..."})]})}),!F&&!_&&b.length>0&&(0,r.jsx)("div",{className:"flex justify-center py-8",children:(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"All templates are displayed"})})]}):(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center p-12 text-center",children:[(0,r.jsx)("div",{className:"rounded-full bg-muted p-6 mb-4",children:(0,r.jsx)(n.A,{className:"h-10 w-10 text-muted-foreground"})}),(0,r.jsx)("h3",{className:"text-xl font-semibold mb-2",children:g(0===b.length?"noTemplatesYet":"noTemplatesMatchSearch")})]})]})}},43254:(e,t,a)=>{a.d(t,{R:()=>p});var r=a(88017),s=a(44109),i=a(22934),l=a(34042),n=a(61579),d=a(91490),c=a(92972),o=a(35952),u=a(2247),m=a(98476),h=a(68036);function p(){let{user:e}=(0,n.A)(),t=(0,m.c3)("storyboard-list"),a=(0,m.c3)("dashboard"),p=(0,m.c3)("imagePreview"),{sortedStoryboards:x,isLoading:g,error:f,fetchProjectStoryboards:v}
1=(0,l.I)(),[j,b]=(0,s.useState)(null),[y,w]=(0,s.useState)(null),[N,C]=(0,s.useState)(!1),[S,_]=(0,s.useState)(null),[k,A]=(0,s.useState)(!1),[R,F]=(0,s.useState)(!1),[L,E]=(0,s.useState)({}),P=(0,s.useMemo)(()=>{let e=Object.values(L||{}),t=e.flatMap(e=>e.videos||[]);return{videos:t,images:e.flatMap(e=>e.images||[]),audios:e.flatMap(e=>e.audios||[])}},[L]),T=P.videos||[],z=P.images||[],q=P.audios||[],[I,$]=(0,s.useState)("videos"),[D,O]=(0,s.useState)({videos:Math.min(20,T.length||20),images:Math.min(20,z.length||20),audios:Math.min(20,q.length||20)}),M=(0,s.useRef)(null),U=(0,s.useRef)(null),V=(0,s.useRef)(null);(0,s.useEffect)(()=>{O(e=>({videos:0===T.length?0:0===e.videos?Math.min(20,T.length):e.videos,images:0===z.length?0:0===e.images?Math.min(20,z.length):e.images,audios:0===q.length?0:0===e.audios?Math.min(20,q.length):e.audios}))},[T.length,z.length,q.length]),(0,s.useEffect)(()=>{0===T.length&&0===z.length&&0===q.length&&"videos"!==I&&$("videos")},[T.length,z.length,q.length,I]);let J=(0,s.useCallback)(e=>{$(e)},[]),G=(0,s.useCallback)(()=>{let e={videos:T.length,images:z.length,audios:q.length};0!==e[I]&&O(t=>{let a=t[I],r=e[I];if(a>=r)return t;let s=Math.min(a+20,r);return{...t,[I]:s}})},[I,q.length,z.length,T.length,20]),B=(0,s.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"download";if(e)try{var a;let r=await fetch(e),s=await r.blob(),i=window.URL.createObjectURL(s),l=document.createElement("a");l.href=i;let n=null===(a=e.split("/").pop())||void 0===a?void 0:a.split("?")[0],d=s.type?s.type.split("/").pop():void 0,c=n&&n.length>0?n:t;l.download=c.includes(".")?c:d?"".concat(c,".").concat(d):"".concat(c),document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(i),h.oR.success(p("downloadSuccess"))}catch(e){console.error(p("downloadFailed"),e),h.oR.error(p("downloadFailed"))}},[p]);(0,s.useEffect)(()=>{let e={videos:M,images:U,audios:V},t=null,a=null,r=null,s=()=>{var i;let l=null===(i=e[I])||void 0===i?void 0:i.current;if(!l){a=setTimeout(s,100);return}(t=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&G()})},{root:null,rootMargin:"200px",threshold:0})).observe(l),r=setTimeout(()=>{l.getBoundingClientRect().top<=window.innerHeight+200&&G()},100)};return s(),()=>{t&&t.disconnect(),a&&clearTimeout(a),r&&clearTimeout(r)}},[I,G,T.length,z.length,q.length,D.videos,D.images,D.audios]),(0,s.useEffect)(()=>{(async()=>{if(null==e?void 0:e.id){C(!0),w(null);try{let{data:t,error:a}=await d.supabase.from("projects").select("id").eq("user_id",e.id).eq("type","source");if(a)throw a;if(!t||0===t.length){b(null);return}b(t[0].id)}catch(e){console.error("è·åç´ æåºé¡¹ç®å¤±è´¥:",e),w(e instanceof Error?e.message:t("loadSourceProjectFailedDefault")),b(null)}finally{C(!1)}}})()},[null==e?void 0:e.id,t]),(0,s.useEffect)(()=>{(async()=>{if(j){F(!0);try{await v(j,"project")}catch(e){console.error("å 载项ç®åé失败:",e)}finally{F(!1)}}})()},[j,v]),(0,s.useEffect)(()=>{let e=x.map(e=>e.id).filter(e=>!!e);if(!e.length){E({}),_(null);return}let a=!1;return(async()=>{A(!0),_(null);try{var r,s,i;let[t,l,n]=await Promise.all([d.supabase.from("images").select("id, image_url, storyboard_id, metadata").in("storyboard_id",e),d.supabase.from("videos").select("id, video_url, storyboard_id, metadata").in("storyboard_id",e),d.supabase.from("audios").select("id, audio_url, storyboard_id, metadata").in("storyboard_id",e)]);if(t.error)throw t.error;if(l.error)throw l.error;if(n.error)throw n.error;let c={};e.forEach(e=>{c[e]={images:[],videos:[],audios:[]}}),null===(r=t.data)||void 0===r||r.forEach(e=>{c[e.storyboard_id]||(c[e.storyboard_id]={images:[],videos:[],audios:[]}),c[e.storyboard_id].images.push(e)}),null===(s=l.data)||void 0===s||s.forEach(e=>{c[e.storyboard_id]||(c[e.storyboard_id]={images:[],videos:[],audios:[]}),c[e.storyboard_id].videos.push(e)}),null===(i=n.data)||void 0===i||i.forEach(e=>{c[e.storyboard_id]||(c[e.storyboard_id]={images:[],videos:[],audios:[]}),c[e.storyboard_id].audios.push(e)}),a||E(c)}catch(e){console.error("è·ååéåªä½å¤±è´¥:",e),a||_(e instanceof Error?e.message:t("loadStoryboardMediaFailedDefault"))}finally{a||A(!1)}})(),()=>{a=!0}},[x,t]);let W=(0,s.useMemo)(()=>
1{if(!e)return(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t("signInToViewClips")});if(N)return(0,r.jsxs)("div",{className:"flex flex-col items-center text-center gap-2",children:[(0,r.jsx)("span",{className:"h-4 w-4 animate-spin rounded-full border-2 border-muted-foreground border-t-transparent"}),(0,r.jsx)("span",{children:t("loadingSourceProject")})]});if(y){let e=y.trim()?t("loadProjectFailed",{error:y}):t("loadSourceProjectFailedDefault");return(0,r.jsx)("p",{className:"text-sm text-destructive",children:e})}if(!j)return(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t("noSourceProject")});if(g||R)return(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 text-sm text-muted-foreground",children:[(0,r.jsx)("span",{className:"h-4 w-4 animate-spin rounded-full border-2 border-muted-foreground border-t-transparent"}),(0,r.jsx)("span",{children:t("loadingStoryboardClips")})]});if(f){let e=f.trim()?t("loadClipsFailed",{error:f}):t("loadClipsFailedDefault");return(0,r.jsx)("p",{className:"text-sm text-destructive",children:e})}if(k)return(0,r.jsxs)("div",{className:"flex flex-col items-center gap-2 text-sm text-muted-foreground",children:[(0,r.jsx)("span",{className:"h-4 w-4 animate-spin rounded-full border-2 border-muted-foreground border-t-transparent"}),(0,r.jsx)("span",{children:t("loadingStoryboardMedia")})]});if(S){let e=S.trim()?t("loadMediaFailed",{error:S}):t("loadMediaFailedDefault");return(0,r.jsx)("p",{className:"text-sm text-destructive",children:e})}return R||0!==x.length?(0,r.jsxs)(c.tU,{value:I,onValueChange:J,className:"w-full",children:[(0,r.jsxs)(c.j7,{className:"grid w-full grid-cols-3 rounded-lg bg-muted p-1 sm:w-fit",children:[(0,r.jsx)(c.Xi,{value:"videos",className:"rounded-md text-sm font-medium text-foreground data-[state=active]:bg-background data-[state=active]:shadow",children:t("tabVideos",{count:T.length})}),(0,r.jsx)(c.Xi,{value:"images",className:"rounded-md text-sm font-medium text-foreground data-[state=active]:bg-background data-[state=active]:shadow",children:t("tabImages",{count:z.length})}),(0,r.jsx)(c.Xi,{value:"audios",className:"rounded-md text-sm font-medium text-foreground data-[state=active]:bg-background data-[state=active]:shadow",children:t("tabAudios",{count:q.length})})]}),(0,r.jsxs)(c.av,{value:"videos",className:"mt-2",children:[(0,r.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:T.length?T.slice(0,D.videos).map(e=>{var t,s,l,n;return(0,r.jsxs)("div",{className:"flex flex-col gap-3 rounded-xl border border-border bg-muted/20 p-3 shadow-sm transition hover:border-primary/60 hover:shadow-lg",children:[(0,r.jsx)("div",{className:"aspect-video overflow-hidden rounded-lg bg-black/90",children:(0,r.jsx)("video",{controls:!0,className:"h-full w-full object-contain",preload:"metadata",children:(0,r.jsx)("source",{src:e.video_url})})}),(0,r.jsxs)("div",{className:"flex justify-between items-center",children:[(0,r.jsx)("p",{className:"truncate text-xs text-muted-foreground w-2/3",title:null===(s=e.metadata)||void 0===s?void 0:null===(t=s.storage)||void 0===t?void 0:t.prompt,children:(null===(n=e.metadata)||void 0===n?void 0:null===(l=n.storage)||void 0===l?void 0:l.prompt)||""}),(0,r.jsxs)(o.$,{variant:"outline",size:"sm",className:"h-8 gap-1",onClick:()=>B(e.video_url,"video"),children:[(0,r.jsx)(i.A,{className:"h-4 w-4"}),a("download")]})]})]},e.id)}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t("noVideos")})}),(0,r.jsx)("div",{ref:M,className:"h-1","aria-hidden":!0})]}),(0,r.jsxs)(c.av,{value:"images",className:"mt-4",children:[(0,r.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:z.length?z.slice(0,D.images).map(e=>{var t,s,l,n;return(0,r.jsxs)("div",{className:"flex flex-col gap-3 rounded-xl border border-border bg-muted/20 p-3 shadow-sm transition hover:border-primary/60 hover:shadow-lg",children:[(0,r.jsx)(u.A,{url:e.image_url,alt:"storyboard-image",className:"aspect-video bg-black/90 rounded-lg flex items-center justify-center",showActions:!1,show
1Fullscreen:!1,onRedraw:()=>{}}),(0,r.jsxs)("div",{className:"flex justify-between items-center",children:[(0,r.jsx)("p",{className:"truncate text-xs text-muted-foreground w-2/3",title:null===(s=e.metadata)||void 0===s?void 0:null===(t=s.storage)||void 0===t?void 0:t.prompt,children:(null===(n=e.metadata)||void 0===n?void 0:null===(l=n.storage)||void 0===l?void 0:l.prompt)||""}),(0,r.jsxs)(o.$,{variant:"outline",size:"sm",className:"h-8 gap-1",onClick:()=>B(e.image_url,"image"),children:[(0,r.jsx)(i.A,{className:"h-4 w-4"}),a("download")]})]})]},e.id)}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t("noImages")})}),(0,r.jsx)("div",{ref:U,className:"h-1","aria-hidden":!0})]}),(0,r.jsxs)(c.av,{value:"audios",className:"mt-4",children:[(0,r.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:q.length?q.slice(0,D.audios).map(e=>{var t,s;return(0,r.jsx)("div",{className:"flex flex-col gap-3 rounded-xl border border-border bg-muted/20 p-3 shadow-sm transition hover:border-primary/60 hover:shadow-lg",children:(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("audio",{controls:!0,className:"w-full",children:(0,r.jsx)("source",{src:e.audio_url})}),(0,r.jsxs)("div",{className:"flex justify-between items-center",children:[(0,r.jsx)("p",{className:"truncate text-xs text-muted-foreground",title:e.audio_url,children:(null===(s=e.metadata)||void 0===s?void 0:null===(t=s.storage)||void 0===t?void 0:t.text)||""}),(0,r.jsxs)(o.$,{variant:"outline",size:"sm",className:"h-8 gap-1",onClick:()=>B(e.audio_url,"audio"),children:[(0,r.jsx)(i.A,{className:"h-4 w-4"}),a("download")]})]})]})},e.id)}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t("noAudios")})}),(0,r.jsx)("div",{ref:V,className:"h-1","aria-hidden":!0})]})]}):(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t("noStoryboardsQuickstart")})},[e,N,y,j,g,f,x,k,S,P,R,t,I,D,T.length,z.length,q.length,B,a]);return(0,r.jsx)("div",{className:"flex flex-col",children:(0,r.jsx)("div",{className:"min-h-[200px]",children:W})})}},45395:(e,t,a)=>{a.d(t,{C:()=>d,z:()=>n});var r=a(88017);a(44109);var s=a(45639),i=a(92170),l=a(57031);function n(e){let{className:t,...a}=e;return(0,r.jsx)(s.bL,{"data-slot":"radio-group",className:(0,l.cn)("grid gap-3",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)(s.q7,{"data-slot":"radio-group-item",className:(0,l.cn)("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",t),...a,children:(0,r.jsx)(s.C1,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:(0,r.jsx)(i.A,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}},47417:(e,t,a)=>{a.d(t,{F:()=>v});var r=a(88017),s=a(44109),i=a(98476),l=a(36888),n=a(35952),d=a(21676),c=a(52464),o=a(91490),u=a(50338),m=a(82600),h=a(14416),p=a(17547),x=a(68036),g=a(57031);let f=e=>e?e.charAt(0).toUpperCase()+e.slice(1):"",v=e=>{let{open:t,onOpenChange:a,currentVoiceId:v,onSelect:j}=e,b=(0,i.c3)("voice-select-dialog"),y=(0,i.c3)("dashboard"),w=(0,i.c3)("videoDubbing"),[N,C]=(0,s.useState)([]),[S,_]=(0,s.useState)([]),[k,A]=(0,s.useState)(!1),[R,F]=(0,s.use
1State)(""),[L,E]=(0,s.useState)("all"),[P,T]=(0,s.useState)("all"),[z,q]=(0,s.useState)("all"),[I,$]=(0,s.useState)([]),[D,O]=(0,s.useState)([]),[M,U]=(0,s.useState)([]),[V,J]=(0,s.useState)(null),G=(0,s.useRef)(null),B=(0,s.useRef)(null);(0,s.useEffect)(()=>{t?(W(),E("all"),T("all"),q("all"),F("")):(G.current&&(G.current.pause(),G.current.currentTime=0),J(null),B.current=null)},[t]),(0,s.useEffect)(()=>{if(N.length>0){let e=new Set,t=new Set,a=new Set;N.forEach(r=>{var s,i,l;(null===(s=r.profile)||void 0===s?void 0:s.sex)&&e.add(r.profile.sex),(null===(i=r.profile)||void 0===i?void 0:i.age_type)&&t.add(r.profile.age_type),(null===(l=r.profile)||void 0===l?void 0:l.languages)&&r.profile.languages.forEach(e=>a.add(e))}),$(Array.from(e)),O(Array.from(t)),U(Array.from(a))}},[N]),(0,s.useEffect)(()=>{let e=N;if(""!==R.trim()){let t=R.toLowerCase();e=e.filter(e=>e.name.toLowerCase().includes(t)||e.provider.toLowerCase().includes(t))}"all"!==L&&(e=e.filter(e=>{var t;return(null===(t=e.profile)||void 0===t?void 0:t.sex)===L})),"all"!==P&&(e=e.filter(e=>{var t;return(null===(t=e.profile)||void 0===t?void 0:t.age_type)===P})),"all"!==z&&(e=e.filter(e=>{var t,a;return null===(a=e.profile)||void 0===a?void 0:null===(t=a.languages)||void 0===t?void 0:t.includes(z)})),_(e)},[R,L,P,z,N]);let W=async()=>{A(!0);try{let{data:e,error:t}=await o.supabase.from("tts_configs").select("id, name, provider, settings, profile").order("name");if(t)throw t;C(e||[]),_(e||[])}catch(e){console.error("è·åé
é³è
å表失败:",e),x.oR.error(b("fetchError"))}finally{A(!1)}},X=()=>{G.current&&(G.current.pause(),G.current.currentTime=0),B.current=null,J(null)},H=async(e,t)=>{if(B.current===e){X();return}if(!t){x.oR.error(b("noDemoAudio"));return}X();try{let{data:t,error:a}=await o.supabase.from("tts_configs").select("settings").eq("id",e).single();if(a){console.error("æ¥è¯¢tts_configs失败:",a);return}if((null==t?void 0:t.settings)&&Array.isArray(t.settings)&&t.settings.length>0){let a=t.settings[0];a.demo_audio&&(G.current?G.current.src=a.demo_audio:G.current=new Audio(a.demo_audio),G.current.onended=()=>{B.current=null,J(null)},G.current.onerror=()=>{console.error("é³é¢ææ¾å¤±è´¥"),B.current=null,J(null)},await G.current.play(),B.current=e,J(e))}}catch(e){console.error("å¤çé³é¢ææ¾æ¶åºé:",e),B.current=null,J(null)}},K=e=>{var t,r;let s=null===(r=e.settings)||void 0===r?void 0:null===(t=r[0])||void 0===t?void 0:t.demo_audio;j({id:e.id,name:e.name,provider:e.provider,settings:e.settings.map(e=>({code:e.code,style:e.style})),demo_audio:s}),X(),a(!1)};return(0,r.jsx)(l.lG,{open:t,onOpenChange:a,children:(0,r.jsxs)(l.Cf,{className:"max-w-2xl max-h-[80vh] flex flex-col",children:[(0,r.jsx)(l.c7,{children:(0,r.jsx)(l.L3,{children:b("title")})}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 mb-4",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(u.A,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground",size:16}),(0,r.jsx)(d.p,{placeholder:b("searchPlaceholder"),value:R,onChange:e=>F(e.target.value),className:"pl-9"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[M.length>0&&(0,r.jsxs)(c.l6,{value:z,onValueChange:q,children:[(0,r.jsx)(c.bq,{className:"h-8 text-xs",children:(0,r.jsx)(c.yv,{placeholder:"Language"})}),(0,r.jsxs)(c.gC,{children:[(0,r.jsx)(c.eb,{value:"all",children:b("allLanguages")}),M.map(e=>(0,r.jsx)(c.eb,{value:e,children:(0,g.SU)(w,"languages.".concat(f(e)))||e},e))]})]}),I.length>0&&(0,r.jsxs)(c.l6,{value:L,onValueChange:E,children:[(0,r.jsx)(c.bq,{className:"h-8 text-xs",children:(0,r.jsx)(c.yv,{placeholder:"Gender"})}),(0,r.jsxs)(c.gC,{children:[(0,r.jsx)(c.eb,{value:"all",children:b("allGenders")}),I.map(e=>(0,r.jsx)(c.eb,{value:e,children:w("sex.".concat(e))||e},e))]})]}),D.length>0&&(0,r.jsxs)(c.l6,{value:P,onValueChange:T,children:[(0,r.jsx)(c.bq,{className:"h-8 text-xs",children:(0,r.jsx)(c.yv,{placeholder:"Age"})}),(0,r.jsxs)(c.gC,{children:[(0,r.jsx)(c.eb,{value:"all",children:b("allAges")}),D.map(e=>(0,r.jsx)(c.eb,{value:e,children:w("ageType.".concat(e))||e},e))]})]}),("all"!==z||"all"!==L||"all"!==P)&&(0,r.jsx)(n.$,{variant:"ghost",size:"sm",className:"h-8 text-xs px-2",onClick:()=>{q("all"),E("all"),T("all")},children:b("reset")})]})]}),(0,r.jsx)("div",{className:"flex-1 overflow-y-auto",children:k?(0,r.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,r.jsx)(m.A,{className:"h-8 w-8 animate-spin text-primary"})}):0===S.length?(0,r.jsx)("div",{className:"text-center py-8 text-muted-foreground",children:R?b("noResults"):b("noVoices")}):(0,r.jsx)("div",{className:"space-y-2",children:S.map(e=>{var t,a;let s=null===(a=e.settings)||void 0===a?void 0:null===(t=a[0])||void 0===t?void 0:t.demo_audio,i=V===e.id,l=v===e.id;return(0,r.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg border transition-colors ".concat(l?"border-primary bg-primary/5":"border-border hover:border-primary/50 hover:bg-muted/50"),children:[(0,r.jsxs)("div",{className:"flex-1 min-w-0 mr-3",children:[(0,r.jsx)("div",{className:"font-medium truncate",children:e.name}),(0,r.jsx)("div",{className:"text-sm text-muted-foreground",children:e.provider})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[s&&(0,r.jsx)(n.$,{variant:"ghost",size:"icon",onClick:()=>H(e.id,s),className:"h-8 w-8",children:i?(0,r.jsx)(h.A,{size:16,className:"text-primary"}):(0,r.jsx)(p.A,{size:16})}),(0,r.jsx)(n.$,{variant:l?"default":"outline",size:"sm",onClick:()=>K(e),disabled:l,children:l?b("current"):y("confirm")})]})]},e.id)})})})]})})}},55222:(e,t,a)=>{a.d(t,{w:()=>u});var r=a(88017),s=a(44109),i=a(98476),l=a(36888),n=a(35952),d=a(21676),c=a(45998),o=a(57031);function u(e){var t;let{open:a,onOpenChange:u,scene:m,onConfirm:h,isPublishing:p}=e,x=(0,i.c3)("scene-card"),g=(0,i.c3)("storyboard-list"),[f,v]=(0,s.use
1State)(""),[j,b]=(0,s.useState)(0);(0,s.useEffect)(()=>{a&&m.tag?v(m.tag):a||v("")},[a,m.tag]);let y=async()=>{let e=f.trim();0!==e.length&&(await h(e),v(""))},w=e=>{var t;if(!e)return g("unnamedScene");let a=e.trim();if(!a)return g("unnamedScene");let[r]=a.split(/\s+/);return r?/^[\u0000-\u007f]+$/.test(r)?r:null!==(t=r[0])&&void 0!==t?t:g("unnamedScene"):g("unnamedScene")};return(0,r.jsx)(l.lG,{open:a,onOpenChange:u,children:(0,r.jsxs)(l.Cf,{className:"w-[92vw] max-w-5xl lg:w-[80vw]",children:[(0,r.jsxs)(l.c7,{children:[(0,r.jsxs)(l.L3,{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,o.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium uppercase tracking-wide","bg-blue-100 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300"),children:g("sceneTag")}),m.name||g("unnamedScene")]}),(0,r.jsx)(l.rr,{children:x("publishSceneDescription")})]}),(0,r.jsxs)("div",{className:"grid gap-6 md:grid-cols-[1.4fr_1fr]",children:[(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"relative overflow-hidden rounded-lg border bg-muted",children:(()=>{var e;let t=Array.isArray(m.images)?m.images.filter(e=>!!(null==e?void 0:e.url)):[],a=null!==(e=t[j])&&void 0!==e?e:t[0],s=(null==a?void 0:a.url)||null;return s?(0,r.jsx)("img",{src:s,alt:m.name,className:"h-80 w-full object-cover"}):(0,r.jsx)("div",{className:"flex h-80 w-full items-center justify-center text-2xl font-semibold text-muted-foreground",children:w(m.name)})})()}),Array.isArray(m.images)&&(null===(t=m.images)||void 0===t?void 0:t.length)>1&&(0,r.jsx)("div",{className:"grid grid-cols-5 gap-3",children:m.images.filter(e=>!!(null==e?void 0:e.url)).map((e,t)=>(0,r.jsx)("button",{type:"button",onClick:()=>b(t),className:(0,o.cn)("overflow-hidden rounded-md border focus:outline-none focus-visible:ring-2 focus-visible:ring-primary",j===t?"ring-2 ring-primary border-primary":"border-border"),children:(0,r.jsx)("img",{src:e.url,alt:"thumbnail",className:"h-20 w-full object-cover"})},e.id||e.url))})]}),(0,r.jsxs)("div",{className:"space-y-4 rounded-lg border bg-muted/30 p-5 text-left text-sm leading-relaxed",children:[(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:g("basicInformation")}),(0,r.jsx)("p",{children:"".concat(g("nameLabel"),": ").concat(m.name||g("unnamedValue"))}),(0,r.jsx)("p",{children:"".concat(g("typeLabel"),": ").concat(g("sceneType"))})]}),m.settings&&m.settings.description&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:g("sceneDescriptionLabel")}),(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:m.settings.description})]})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)(c.J,{htmlFor:"tags",children:[x("sceneTags")," *"]}),(0,r.jsx)(d.p,{id:"tags",value:f,onChange:e=>v(e.target.value),placeholder:x("enterTags"),disabled:p})]}),(0,r.jsxs)(l.Es,{children:[(0,r.jsx)(n.$,{variant:"outline",onClick:()=>u(!1),disabled:p,children:"åæ¶"}),(0,r.jsx)(n.$,{onClick:y,disabled:p||""===f.trim(),children:p?"å
¬å¼ä¸...":"ç¡®å®"})]})]})})}},84961:(e,t,a)=>{a.d(t,{A:()=>c});var r=a(88017),s=a(44109),i=a(98476),l=a(35952),n=a(65009),d=a(53239);let c=e=>{let{hints:t,onHintClick:a,className:c=""}=e,o=(0,i.c3)("dashboard"),[u,m]=(0,s.useState)(0);if(0===t.length)return null;let h=e=>{a(e)},p=(()=>{let e=[];for(let a=0;a<3;a++){let r=(u+a)%t.length;t[r]&&e.push(t[r])}return e})();return(0,r.jsx)("div",{className:"space-y-3 ".concat(c," flex justify-center px-4 sm:px-0 min-h-4"),children:(0,r.jsxs)("div",{className:"flex flex-col sm:flex-row items-center gap-3 sm:gap-2 w-full max-w-4xl",children:[(0,r.jsx)("div",{className:"flex flex-wrap gap-2 justify-center flex-1",children:p.map((e,t)=>(0,r.jsx)(l.$,{variant:"secondary",className:" h-10 sm:h-8 px-4 sm:px-3 rounded-full bg-slate-200 hover:bg-slate-300 dark:bg-gray-800 dark:hover:bg-gray-700 transition-all duration-200 w-full sm:w-[270px] max-w-[280px] sm:max-w-[270px] flex justify-center active:scale-95 shadow-sm hover:shadow-md ",onClick:()=>h(e.text),children:(0,r.jsxs)("div",{className:"flex items-center justify-center w-full",children:[(0,r.jsx)(n.A,{className:"h-4 w-4 mr-2 sm:mr-1 flex-shrink-0 text-slate-700 dark:text-slate-300"}),(0,r.jsx)("span",{className:" text-sm sm:text-sm truncate overflow-hidden text-slate-800 dark:text-slate-200 font-medium ",children:e.text})]})},"".concat(u,"-").concat(t)))}),(0,r.jsx)(l.$,{variant:"ghost",size:"sm",onClick:()=>{m((u+3)%t.length)},className:" h-10 w-10 sm:h-8 sm:w-8 p-0 hover:bg-slate-200 dark:hover:bg-slate-700 rounded-full transition-all duration-200 active:scale-95 shadow-sm hover:shadow-md flex-shrink-0 ",title:o("refreshHints"),children:(0,r.jsx)(d.A,{className:"w-4 h-4 text-slate-700 dark:text-slate-300"})})]})})}},92827:(e,t,a)=>{a.d(t,{O:()=>P});var r=a(88017),s=a(44109),i=a(28577),l=a(54189),n=a(14099),d=a(50338),c=a(30006),o=a(82600),u=a(97715),m=a(91490),h=a(78837),p=a(61579),x=a(36888),g=a(21676),f=a(35952),v=a(57031),j=a(98476),b=a(68036),y=a(55222),w=a(45998),N=a(1791),C=a(24077),S=a(19614),_=a(74582),k=a(22747),A=a(94462),R=a(67255),F=a(8632);let L=e=>{var t,a,i;let{open:l,onOpenChange:n,onCreated:d}=e,{user:c}
1=(0,p.A)(),u=(0,j.c3)("storyboard-list"),[y,L]=(0,s.useState)(""),[E,P]=(0,s.useState)([]),[T,z]=(0,s.useState)([]),[q,I]=(0,s.useState)([]),[$,D]=(0,s.useState)(!1),[O,M]=(0,s.useState)(""),[U,V]=(0,s.useState)("");(0,s.useEffect)(()=>{let e=setTimeout(()=>V(O),300);return()=>clearTimeout(e)},[O]);let{data:J,size:G,setSize:B,isLoading:W,isValidating:X}=(0,F.Ay)(e=>(null==c?void 0:c.id)&&l?["scene-dialog-projects",c.id,e,U]:null,async e=>{let[,,t,a]=e,r=m.supabase.from("projects").select("id, name").is("type",null).eq("deleted_flag",0).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1}).range(20*t,(t+1)*20-1);a.trim()&&(r=r.ilike("name","%".concat(a,"%")));let{data:s,error:i}=await r;if(i)throw i;return s||[]},{revalidateFirstPage:!1}),H=J?J.flat():[],K=!!J&&(null!==(a=null===(t=J[J.length-1])||void 0===t?void 0:t.length)&&void 0!==a?a:0)>=20,Y=X&&G>(null!==(i=null==J?void 0:J.length)&&void 0!==i?i:0),Z=(0,s.useCallback)(e=>{let{scrollTop:t,scrollHeight:a,clientHeight:r}=e.currentTarget;a-t-r<60&&K&&!X&&B(e=>e+1)},[K,X,B]),[Q,ee]=(0,s.useState)(!1),et=(0,s.useRef)(null),ea=(0,s.useCallback)(()=>{P(e=>(e.forEach(e=>URL.revokeObjectURL(e.previewUrl)),[])),L(""),z([]),I([]),M(""),V("")},[]),er=(0,s.useCallback)(e=>{e||ea(),n(e)},[n,ea]),es=e=>{P(t=>{let a=t.find(t=>t.id===e);return a&&URL.revokeObjectURL(a.previewUrl),t.filter(t=>t.id!==e)})},ei=async()=>{if(!(null==c?void 0:c.id))return null;if(et.current)return et.current;try{let{data:e,error:t}=await m.supabase.from("projects").select("id").eq("user_id",c.id).eq("type","source").eq("deleted_flag",0);if(t)throw Error(t.message);if(e&&e.length>0)return et.current=e[0].id,e[0].id;let a=await (0,h.gA)({name:u("createScene.assetLibrary"),type:"source",status:"draft",settings:{aspect_ratio:"16:9",style:"Cinematic",cover_url:""}});return et.current=a.id,a.id}catch(e){return console.error("è·å/åå»ºç´ æåºé¡¹ç®å¤±è´¥:",e),b.oR.error(u("createScene.sourceProjectFailed")),null}},el=async()=>{if(!(null==c?void 0:c.id)){b.oR.error(u("createScene.authRequired"));return}let e=y.trim();if(!e){b.oR.error(u("createScene.nameRequired"));return}ee(!0);try{let t=[];if(E.length>0){let e=await ei();if(!e){ee(!1);return}t=await Promise.all(E.map(async t=>{let a=await (0,C.uploadImageToAliyun)(t.file,e),{data:r,error:s}=await (0,C.updateImageTable)([{image_url:a.image_url,metadata:a.metadata,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),project_id:e}]);if(s||!r||0===r.length)throw Error("å¾çä¿¡æ¯ä¿å失败: ".concat((null==s?void 0:s.message)||"æªè¿åæ°æ®"));return{id:r[0].id,url:a.image_url,type:"normal"}}))}let a={name:e,user_id:c.id,reference_type:"original"};t.length>0&&(a.images=t);let{data:r,error:s}=await m.supabase.from("scenes").insert(a).select("id, name, images, settings, tag, is_public").single();if(s){console.error("åå»ºåºæ¯å¤±è´¥:",s),b.oR.error(u("createScene.createFailed"));return}if(T.length>0)try{let e=T.map(async e=>{let{data:t,error:a}=await m.supabase.from("projects").select("scene_ids").eq("id",e).single();if(a)throw a;let s=t.scene_ids||[];s.includes(r.id)||await (0,h.vr)(e,{scene_ids:[...s,r.id]})});await Promise.all(e),b.oR.success(u("createScene.linkingSuccess"))}catch(e){console.error("å
³è项ç®å¤±è´¥:",e),b.oR.error(u("createScene.linkingFailed"))}b.oR.success(u("createScene.createSuccess")),d(r),er(!1)}catch(e){console.error("åå»ºåºæ¯æ¶åºé:",e),b.oR.error(u("createScene.createFailed"))}finally{ee(!1)}};return(0,r.jsx)(x.lG,{open:l,onOpenChange:er,children:(0,r.jsxs)(x.Cf,{className:"w-[92vw] max-w-2xl lg:w-[60vw] max-h-[85vh] overflow-y-auto",children:[(0,r.jsx)(x.c7,{children:(0,r.jsx)(x.L3,{children:u("createScene.title")})}),(0,r.jsxs)("div",{className:"space-y-5 py-2",children:[(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)(w.J,{htmlFor:"scene-name",className:"text-sm font-medium",children:[u("createScene.nameLabel")," ",(0,r.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,r.jsx)(g.p,{id:"scene-name",value:y,onChange:e=>L(e.target.value),placeholder:u("createScene.namePlaceholder"),maxLength:100})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(w.J,{className:"text-sm font-medium",children:u("createScene.imagesLabel")}),(0,r.jsxs)("div",{className:"grid grid-cols-3 sm:grid-cols-4 gap-3",children:[E.map(e=>(0,r.jsxs)("div",{className:"relative group",children:[(0,r.jsx)("div",{className:"aspect-square overflow-hidden rounded-lg border bg-muted",children:(0,r.jsx)("img",{src:e.previewUrl,alt:"",className:"h-full w-full object-cover"})}),(0,r.jsx)("button",{type:"button",onClick:()=>
1es(e.id),className:"absolute -top-2 -right-2 rounded-full bg-destructive p-1 text-destructive-foreground opacity-0 group-hover:opacity-100 transition-opacity shadow-sm",children:(0,r.jsx)(S.A,{size:12})})]},e.id)),(0,r.jsxs)("label",{className:"flex aspect-square cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed transition-colors border-border hover:border-primary/50 hover:bg-muted/50",children:[(0,r.jsx)("input",{type:"file",accept:"image/*",className:"hidden",onChange:e=>{var t;let a=null===(t=e.target.files)||void 0===t?void 0:t[0];if(!a)return;if(!a.type.startsWith("image/")){b.oR.error(u("createScene.invalidImageType")),e.target.value="";return}if(a.size>0xa00000){b.oR.error(u("createScene.imageTooLarge")),e.target.value="";return}let r=URL.createObjectURL(a),s={id:(0,R.A)(),file:a,previewUrl:r};P(e=>[...e,s]),e.target.value=""},disabled:Q}),(0,r.jsx)(_.A,{size:24,className:"text-muted-foreground"}),(0,r.jsx)("span",{className:"mt-1 text-xs text-muted-foreground",children:u("createScene.addImage")})]})]})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(w.J,{className:"text-sm font-medium",children:u("createScene.addToProject")}),(0,r.jsxs)(N.AM,{modal:!1,open:$,onOpenChange:D,children:[(0,r.jsx)(N.Wv,{asChild:!0,children:(0,r.jsxs)(f.$,{variant:"outline",role:"combobox","aria-expanded":$,className:"w-full h-auto min-h-9 justify-between items-start py-2",children:[(0,r.jsx)("span",{className:"break-all text-left whitespace-normal",children:q.length>0?q.map(e=>e.name).join("ã"):u("createScene.selectProjects")}),(0,r.jsx)(k.A,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,r.jsx)(N.hl,{className:"w-[var(--radix-popover-trigger-width)] p-0",align:"start",children:(0,r.jsxs)("div",{className:"flex flex-col",children:[(0,r.jsx)("div",{className:"border-b p-2",children:(0,r.jsx)(g.p,{placeholder:u("createScene.searchProjects"),value:O,onChange:e=>M(e.target.value),className:"h-9"})}),(0,r.jsxs)("div",{className:"min-h-[200px] max-h-[400px] overflow-y-auto p-1",onWheel:e=>e.stopPropagation(),onScroll:Z,children:[H.map(e=>(0,r.jsxs)("div",{className:(0,v.cn)("flex items-center gap-2 rounded-sm px-2 py-2 text-sm cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors",T.includes(e.id)&&"bg-accent/50"),onClick:()=>{let t=T.includes(e.id);z(a=>t?a.filter(t=>t!==e.id):[...a,e.id]),I(a=>t?a.filter(t=>t.id!==e.id):[...a,{id:e.id,name:e.name}])},children:[(0,r.jsx)(A.A,{className:(0,v.cn)("h-4 w-4 flex-shrink-0",T.includes(e.id)?"opacity-100":"opacity-0")}),(0,r.jsx)("span",{className:"flex-1 truncate",children:e.name})]},e.id)),!W&&0===H.length&&(0,r.jsx)("div",{className:"py-6 text-center text-sm text-muted-foreground",children:u("createScene.noProjectFound")}),(W||Y)&&(0,r.jsx)("div",{className:"flex justify-center py-3",children:(0,r.jsx)(o.A,{className:"h-4 w-4 animate-spin text-muted-foreground"})})]})]})})]})]})]}),(0,r.jsxs)(x.Es,{className:"gap-2 sm:gap-0",children:[(0,r.jsx)(f.$,{variant:"outline",onClick:()=>er(!1),disabled:Q,children:u("createScene.cancel")}),(0,r.jsx)(f.$,{onClick:el,disabled:Q||!y.trim(),children:Q?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{size:16,className:"mr-1.5 animate-spin"}),u("createScene.saving")]}):u("createScene.save")})]})]})})},E=e=>[...e].sort((e,t)=>{if(e.is_pinned&&!t.is_pinned)return -1;if(!e.is_pinned&&t.is_pinned)return 1;let a=e.created_at?new Date(e.created_at).getTime():0;return(t.created_at?new Date(t.created_at).getTime():0)-a});function P(){var e;let{user:t}=(0,p.A)(),a=(0,j.c3)("storyboard-list"),w=(0,j.c3)("dashboard"),[N,C]=(0,s.useState)([]),[S,_]=(0,s.useState)(!0),[k,A]=(0,s.useState)(!1),[R,F]=(0,s.use
1State)(null),[P,T]=(0,s.useState)(null),[z,q]=(0,s.useState)(!1),[I,$]=(0,s.useState)(0),[D,O]=(0,s.useState)(-1),[M,U]=(0,s.useState)(!0),[V,J]=(0,s.useState)(""),[G,B]=(0,s.useState)(""),[W,X]=(0,s.useState)(!1),[H,K]=(0,s.useState)(null),Y=(0,s.useRef)(null),[Z,Q]=(0,s.useState)(!1),[ee,et]=(0,s.useState)(null),[ea,er]=(0,s.useState)(!1),[es,ei]=(0,s.useState)(!1),[el,en]=(0,s.useState)([]),[ed,ec]=(0,s.useState)(!1),[eo,eu]=(0,s.useState)(null),[em,eh]=(0,s.useState)(""),[ep,ex]=(0,s.useState)(!1),[eg,ef]=(0,s.useState)(!1),[ev,ej]=(0,s.useState)(null),[eb,ey]=(0,s.useState)(!1),[ew,eN]=(0,s.useState)(!1),eC=async e=>{try{if(ew)return;if(eN(!0),!t)throw Error(a("authRequired"));let r=!e.is_pinned,{error:s}=await m.supabase.from("scenes").update({is_pinned:r}).eq("id",e.id);if(s)throw s;let i=N.map(t=>t.id===e.id?{...t,is_pinned:r}:t);C(E(i)),H&&K(t=>t?E(t.map(t=>t.id===e.id?{...t,is_pinned:r}:t)):null),b.oR.success(r?a("pinSuccess"):a("unpinSuccess"))}catch(e){console.error("æ´æ°åºæ¯ç½®é¡¶ç¶æå¤±è´¥:",e),b.oR.error(a("operationFailed"))}finally{eN(!1)}},eS=async()=>{if(ev&&!eg){ef(!0);try{let{error:e}=await m.supabase.from("scenes").update({deleted_flag:1}).eq("id",ev.id);if(e)throw e;C(e=>e.filter(e=>e.id!==ev.id)),H&&K(e=>e?e.filter(e=>e.id!==ev.id):null),b.oR.success(a("deleteSuccess")),ey(!1),ej(null)}catch(e){console.error("å é¤åºæ¯å¤±è´¥:",e),b.oR.error(a("deleteFailed"))}finally{ef(!1)}}},e_=async e=>{let t=em.trim(),r=el.find(t=>t.id===e);if(!t||ep||r&&r.name===t){eu(null);return}ex(!0);try{await (0,h.vr)(e,{name:t}),en(a=>a.map(a=>a.id===e?{...a,name:t}:a)),b.oR.success(a("updateProjectSuccess"))}catch(e){console.error("Failed to update project name:",e),b.oR.error(a("updateProjectFailed"))}finally{ex(!1),eu(null)}},ek=(0,s.useCallback)(async e=>{ec(!0);try{let{data:t,error:a}=await m.supabase.from("projects").select("id, name").contains("scene_ids",[e]).eq("deleted_flag",0);if(a)throw a;en(t||[])}catch(e){console.error("Failed to fetch scene projects:",e),en([])}finally{ec(!1)}},[]),eA=(0,s.useCallback)(async e=>{if(!(null==t?void 0:t.id))return[];let a=30*e,{data:r,error:s}=await m.supabase.from("scenes").select("id, name, images, settings, tag, is_public, is_pinned, created_at").eq("user_id",t.id).eq("deleted_flag",0).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1}).range(a,a+30-1);if(s)throw s;let i=null!=r?r:[];return C(t=>{if(0===e)return i;if(0===i.length)return t;let a=new Set(t.map(e=>e.id)),r=i.filter(e=>!a.has(e.id));return 0===r.length?t:[...t,...r]}),O(e),U(30===i.length),i},[null==t?void 0:t.id]);(0,s.useEffect)(()=>{let e=!0;return(async()=>{if(!(null==t?void 0:t.id)){_(!1);return}try{if(_(!0),F(null),C([]),O(-1),U(!0),J(""),B(""),K(null),X(!1),await eA(0),!e)return}catch(t){console.error("è·ååºæ¯æ°æ®å¤±è´¥:",t),e&&F(t instanceof Error?t.message:"")}finally{e&&_(!1)}})(),()=>{e=!1}},[null==t?void 0:t.id,eA]);let eR=(0,s.useCallback)(async()=>{if(!S&&!k&&M&&!V.trim()){A(!0);try{await eA(D+1)}catch(e){console.error("å è½½æ´å¤åºæ¯å¤±è´¥:",e),F((null==e?void 0:e.message)||"")}finally{A(!1)}}},[D,M,eA,S,k]);(0,s.useEffect)(()=>{let e=Y.current;if(!e)return;let t=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&eR()})},{root:null,rootMargin:"200px",threshold:0});return t.observe(e),()=>{t.disconnect()}},[eR]),(0,s.useEffect)(()=>{let e=window.setTimeout(()=>{B(V.trim())},400);return()=>{window.clearTimeout(e)}},[V]);let eF=(0,s.useMemo)(()=>G?null!=H?H:[]:N,[N,G,H]);(0,s.useEffect)(()=>{if(!(null==t?void 0:t.id)||!G){K(null),X(!1);return}let e=!0;return(async()=>{try{X(!0),F(null);let{data:a,error:r}=await m.supabase.from("scenes").select("id, name, images, settings, tag, is_public, is_pinned, created_at").eq("user_id",t.id).eq("deleted_flag",0).ilike("name","%".concat(G,"%")).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1});if(r)throw r;if(!e)return;K(null!=a?a:[])}catch(t){if(console.error("æç´¢åºæ¯å¤±è´¥:",t),!e)return;F(t instanceof Error?t.message:""),K([])}finally{e&&X(!1)}})(),()=>{e=!1}},[G,null==t?void 0:t.id]);let eL=e=>{if(!e||0===e.length)return null;let t=e.find(e=>null==e?void 0:e.url);return(null==t?void 0:t.url)||null},eE=(0,s.useCallback)(e=>{var t;let r=a("unnamedScene");if(!e)return r;let s=e.trim();if(!s)return r;let[i]=s.split(/\s+/);return i?/^[\u0000-\u007f]+$/.test(i)?i:null!==(t=i[0])&&void 0!==t?t:r:r},[a]),eP=async e=>{if(!ea&&ee){er(!0);try{let{error:t}=await m.supabase.from("scenes").update({tag:e,is_public:!0}).eq("id",ee.id);if(t)throw t;b.oR.success(a("publishSuccess")),Q(!1),et(null),C(t=>t.map(t=>
1t.id===ee.id?{...t,tag:e,is_public:!0}:t)),H&&K(t=>t?t.map(t=>t.id===ee.id?{...t,tag:e,is_public:!0}:t):null)}catch(e){console.error("å
¬å¼åºæ¯å¤±è´¥:",e),b.oR.error(a("publishFailed"))}finally{er(!1)}}},eT=async e=>{if(!ea){er(!0);try{let{error:t}=await m.supabase.from("scenes").update({tag:null,is_public:!1}).eq("id",e.id);if(t)throw t;b.oR.success(a("unpublishSuccess")),C(t=>t.map(t=>t.id===e.id?{...t,tag:void 0,is_public:!1}:t)),H&&K(t=>t?t.map(t=>t.id===e.id?{...t,tag:void 0,is_public:!1}:t):null)}catch(e){console.error("åæ¶å
¬å¼å¤±è´¥:",e),b.oR.error(a("unpublishFailed"))}finally{er(!1)}}},ez=(0,s.useCallback)(()=>{ei(!0)},[]),eq=(0,s.useCallback)(e=>{C(t=>[e,...t])},[]);return(0,r.jsxs)("div",{className:"w-full",children:[(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{className:"relative w-full sm:max-w-xs",children:[(0,r.jsx)(d.A,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(g.p,{value:V,onChange:e=>J(e.target.value),placeholder:a("searchScenes"),className:"pl-9"})]}),(0,r.jsxs)(f.$,{className:"h-9 gap-1.5 px-3 py-2 shrink-0",onClick:ez,children:[(0,r.jsx)(c.A,{className:"h-4 w-4"}),a("createScene.createBtn")]})]}),(0,r.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5",children:S||W?(0,r.jsx)("div",{className:"col-span-full text-xs text-muted-foreground",children:a("loading")}):0===eF.length?(0,r.jsx)("div",{className:"col-span-full rounded-lg border border-dashed p-6 text-center text-xs text-muted-foreground",children:V.trim()?a("noScenesMatchSearch"):a("noScenesYet")}):eF.map(e=>(0,r.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>{T(e),q(!0),$(0),ek(e.id)},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),T(e),q(!0),$(0),ek(e.id))},className:"overflow-hidden rounded-lg border bg-background shadow-sm transition-shadow hover:shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 relative group",children:[e.is_pinned&&(0,r.jsx)("div",{className:"absolute top-0 left-0 bg-primary text-primary-foreground z-10 px-2 py-0.5 text-[10px] font-medium rounded-br-md",children:w("pinned")}),(0,r.jsxs)("div",{className:"absolute top-2 right-2 z-10 flex gap-1.5 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,r.jsx)(f.$,{variant:"ghost",size:"icon",className:"h-7 w-7 bg-background/80 backdrop-blur-sm hover:bg-primary",onClick:t=>{t.stopPropagation(),eC(e)},children:e.is_pinned?(0,r.jsx)(i.A,{className:"h-3.5 w-3.5"}):(0,r.jsx)(l.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)(f.$,{variant:"ghost",size:"icon",className:"h-7 w-7 bg-background/80 backdrop-blur-sm hover:bg-primary",onClick:t=>{t.stopPropagation(),ej(e),ey(!0)},children:(0,r.jsx)(n.A,{className:"h-3.5 w-3.5"})})]}),(0,r.jsx)("div",{className:"aspect-video overflow-hidden rounded-b-none bg-blue-950/10",children:(()=>{let t=eL(e.images);return t?(0,r.jsx)("img",{src:t,alt:e.name,className:"h-full w-full object-cover",loading:"lazy"}):(0,r.jsx)("div",{className:"flex h-full w-full items-center justify-center text-lg font-semibold text-muted-foreground",children:eE(e.name)})})()}),(0,r.jsx)("div",{className:"p-3",children:(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,r.jsx)("span",{className:(0,v.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide","bg-blue-100 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300"),children:a("sceneTag")}),(0,r.jsx)("p",{className:"text-sm font-medium text-foreground truncate",title:e.name,children:e.name||a("unnamedScene")})]}),(0,r.jsx)("div",{className:"flex items-center gap-1",onClick:e=>e.stopPropagation(),children:e.is_public?(0,r.jsx)(f.$,{variant:"outline",size:"sm",onClick:t=>{t.stopPropagation(),eT(e)},disabled:ea,children:a("unpublish")}):(0,r.jsx)(f.$,{variant:"outline",size:"sm",onClick:t=>{t.stopPropagation(),et(e),Q(!0)},children:a("publish")})})]})})]},e.id))}),(0,r.jsx)("div",{ref:Y,className:"h-1","aria-hidden":!0}),k&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground text-center",children:a("loadingMore")}),R&&(0,r.jsx)("p",{className:"text-xs text-destructive",children:a("loadD
1ataFailed",{error:R})})]}),ee&&(0,r.jsx)(y.w,{open:Z,onOpenChange:Q,scene:ee,onConfirm:eP,isPublishing:ea}),(0,r.jsx)(x.lG,{open:eb,onOpenChange:ey,children:(0,r.jsxs)(x.Cf,{className:"sm:max-w-[425px]",children:[(0,r.jsxs)(x.c7,{children:[(0,r.jsx)(x.L3,{children:a("deleteSceneTitle")}),(0,r.jsx)(x.rr,{children:a("deleteSceneDescription")})]}),(0,r.jsxs)(x.Es,{className:"gap-2 sm:gap-0",children:[(0,r.jsx)(f.$,{variant:"outline",onClick:()=>ey(!1),disabled:eg,children:a("cancel")}),(0,r.jsx)(f.$,{variant:"destructive",onClick:eS,disabled:eg,children:eg?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{className:"mr-2 h-4 w-4 animate-spin"}),w("deleting")]}):a("delete")})]})]})}),(0,r.jsx)(x.lG,{open:z,onOpenChange:e=>{q(e),e||$(0)},children:(0,r.jsx)(x.Cf,{className:"w-[92vw] max-w-5xl lg:w-[80vw]",children:P&&(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)(x.c7,{children:[(0,r.jsxs)(x.L3,{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:(0,v.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium uppercase tracking-wide","bg-blue-100 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300"),children:a("sceneTag")}),P.name||a("unnamedScene")]}),(0,r.jsx)(x.rr,{children:a("scenePreviewDescription")})]}),(0,r.jsxs)("div",{className:"grid gap-6 md:grid-cols-[1.4fr_1fr]",children:[(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"relative overflow-hidden rounded-lg border bg-muted",children:(()=>{var e;let t=Array.isArray(P.images)?P.images.filter(e=>!!(null==e?void 0:e.url)):[],a=null!==(e=t[I])&&void 0!==e?e:t[0],s=(null==a?void 0:a.url)||null;return s?(0,r.jsx)("img",{src:s,alt:P.name,className:"h-80 w-full object-cover"}):(0,r.jsx)("div",{className:"flex h-80 w-full items-center justify-center text-2xl font-semibold text-muted-foreground",children:eE(P.name)})})()}),Array.isArray(P.images)&&(null===(e=P.images)||void 0===e?void 0:e.length)>1&&(0,r.jsx)("div",{className:"grid grid-cols-5 gap-3",children:P.images.filter(e=>!!(null==e?void 0:e.url)).map((e,t)=>(0,r.jsx)("button",{type:"button",onClick:()=>$(t),className:(0,v.cn)("overflow-hidden rounded-md border focus:outline-none focus-visible:ring-2 focus-visible:ring-primary",I===t?"ring-2 ring-primary border-primary":"border-border"),children:(0,r.jsx)("img",{src:e.url,alt:P.name||a("sceneTag"),className:"h-20 w-full object-cover"})},e.id||e.url))})]}),(0,r.jsxs)("div",{className:"space-y-4 rounded-lg border bg-muted/30 p-5 text-left text-sm leading-relaxed",children:[(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:a("basicInformation")}),(0,r.jsxs)("p",{children:[a("nameLabel"),": ",P.name||a("unnamedValue")]}),(0,r.jsxs)("p",{children:[a("typeLabel"),": ",a("sceneType")]})]}),P.settings&&"description"in P.settings&&P.settings.description&&(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:a("sceneDescriptionLabel")}),(0,r.jsx)("p",{className:"whitespace-pre-wrap",children:P.settings.description})]}),(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:a("projectsLabel")}),ed?(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:a("loading")}):el.length>0?(0,r.jsx)("div",{className:"flex flex-wrap gap-2 max-h-[120px] overflow-y-auto pr-1 custom-scrollbar",children:el.map(e=>(0,r.jsx)("div",{className:"group flex items-center gap-1.5 rounded-full bg-primary/10 px-2 py-1 text-[12px] font-medium text-primary",children:eo===e.id?(0,r.jsxs)("div",{className:"flex items-center gap-1 flex-1 min-w-0",children:[(0,r.jsx)(g.p,{value:em,onChange:e=>eh(e.target.value),onBlur:()=>e_(e.id),onKeyDown:t=>{"Enter"===t.key?e_(e.id):"Escape"===t.key&&eu(null)},autoFocus:!0,className:"!h-auto !flex-1 !min-w-0 !w-full !px-0 !py-0 !text-[12px] !border-0 !focus-visible:ring-0 !shadow-none !text-primary !bg-primary/10"}),ep&&(0,r.jsx)(o.A,{className:"h-3 w-3 animate-spin text-primary"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"cursor-pointer hover:underline",onClick:t=>{t.stopPropagation(),eu(e.id),eh(e.name)},children:e.name}
1),(0,r.jsx)(u.A,{size:10,className:"cursor-pointer text-primary/60 hover:text-primary transition-colors",onClick:t=>{t.stopPropagation(),eu(e.id),eh(e.name)}})]})},e.id))}):(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:a("noProjects")})]})]})]}),(0,r.jsx)(x.Es,{children:P.is_public?(0,r.jsx)(f.$,{variant:"outline",onClick:()=>{eT(P),q(!1)},disabled:ea,children:a("unpublish")}):(0,r.jsx)(f.$,{variant:"default",onClick:()=>{et(P),Q(!0),q(!1)},children:a("publish")})})]})})}),(0,r.jsx)(L,{open:es,onOpenChange:ei,onCreated:eq})]})}},97028:(e,t,a)=>{a.d(t,{A:()=>x});var r=a(88017),s=a(44109),i=a(98476),l=a(97990),n=a(21850),d=a(63302),c=a(55810),o=a(97452),u=a(59956),m=a(21822),h=a(91590),p=a(84961);let x=e=>{var t;let{className:a}=e;(0,i.c3)("quickstart");let{locale:x}=(0,l.o)(),{prompt:g,setPrompt:f,generationType:v,isAgentMode:j,isLoading:b,selectedModelOption:y,setSelectedModelOption:w,handleSubmit:N,handleAgentSubmit:C,handleModelChange:S,uploadedImage:_,setUploadedImage:k,firstFrame:A,lastFrame:R,setFirstFrame:F,setLastFrame:L,isUploading:E}=(0,n.s)(),[P,T]=(0,s.useState)(x),[z,q]=(0,s.useState)(!1),{baseConfig:I}=(0,h.J)(),$=e=>(null==e?void 0:e.text)?"object"==typeof e.text?e.text[x]||e.text.en||e.text.zh||Object.values(e.text)[0]||"":e.text:"",D=((null==I?void 0:I.input_hint)||[]).map(e=>({...e,text:$(e)})),O=(null===(t=D[0])||void 0===t?void 0:t.text)||"",M=D.slice(1),U=e=>!!e&&((null==I?void 0:I.input_hint)||[]).some(t=>"object"==typeof t.text?Object.values(t.text).includes(e):t.text===e);(0,s.useEffect)(()=>{let e=x!==P;O&&(g||z?e&&g&&U(g)&&f(O):(f(O),q(!0))),e&&T(x)},[O,g,x,P,I,z]);let{showInsufficientCreditsDialog:V,setShowInsufficientCreditsDialog:J,insufficientCreditsDialogType:G,setInsufficientCreditsDialogType:B}=(0,m.X)(),[W,X]=(0,s.useState)([]),[H,K]=(0,s.useState)([]),[Y,Z]=(0,s.useState)([]),[Q,ee]=(0,s.useState)(null),{modelDefinitions:et,getModelState:ea,setModelEnabled:er,setModelParam:es,services:ei}=(0,u.z)(),el=et.map(e=>({id:e.id,name:e.name,enabled:ea(e.id).enabled,params:ea(e.id).params,type:e.type,serviceName:e.serviceName,supportsTextGeneration:e.supportsTextGeneration})),en=async()=>{await N()},ed=(0,s.useRef)(null),ec=async()=>{},eo=async()=>{},eu=async()=>{};return(0,r.jsxs)("div",{className:"max-w-4xl mx-auto space-y-3 ".concat(a||""),children:[(0,r.jsx)(o.o,{open:V,onOpenChange:J,type:G}),j?(0,r.jsx)(d.z,{prompt:g,setPrompt:e=>{f(e)},isLoading:b,isUploading:E,handleSubmit:async(e,t)=>{await C(W,H,Y,t),X([]),K([]),Z([])},imageData:W,setImageData:X,audioData:H,setAudioData:K,videoData:Y,setVideoData:Z,setCurrentAgentTaskId:ee,agentTasks:[],showUploadArea:!1,useDarkBackground:!0,containerClassName:"dashboard-mode",isProjectDetailPage:!0}):(0,r.jsx)(c.N,{generationType:v,setGenerationType:()=>{},prompt:g,setPrompt:e=>{f(e)},isLoading:b,isUploading:E,handleSubmit:N,generateStoryboard:en,fileInputRef:ed,handleFileUpload:()=>{},handleDrop:()=>{},handleFrameClick:()=>"",handleFileDrop:ec,handleSingleImageFileDrop:eo,firstFrame:A,lastFrame:R,setFirstFrame:F,setLastFrame:L,isProjectDetailPage:!1,storyboards:[],activeStoryboard:null,modelsState:el,services:ei,handleModelStatusChange:(e,t)=>
1{er(e,t)},handleModelParamsChange:(e,t)=>{Object.entries(t).forEach(t=>{let[a,r]=t;es(e,a,r)})},updateCandidateImage:()=>{},removeReferenceImage:()=>{},updateReferenceImageConfig:eu,stableHandleFirstFrameChange:()=>{}}),(0,r.jsx)(p.A,{hints:M,onHintClick:e=>{f(e)},className:"mt-4"})]})}}}]);
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.