ima2-gen 3.7.1 → 3.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/docs/migration/runtime-test-inventory.md +3 -1
  2. package/lib/grokProxyLauncher.js +110 -1
  3. package/package.json +2 -2
  4. package/routes/auth.js +6 -3
  5. package/routes/grok.js +13 -3
  6. package/routes/index.js +1 -1
  7. package/routes/models.js +33 -4
  8. package/server.js +46 -23
  9. package/ui/dist/.vite/manifest.json +36 -36
  10. package/ui/dist/assets/{AgentWorkspace-DU9efUdT.js → AgentWorkspace-JQ0K_ndE.js} +1 -1
  11. package/ui/dist/assets/{AssetGenWorkspace-ldEVBldg.js → AssetGenWorkspace-B2d-aiIb.js} +2 -2
  12. package/ui/dist/assets/{AssetsWorkspace-D_kJ7dP_.js → AssetsWorkspace-Di0BYZZW.js} +1 -1
  13. package/ui/dist/assets/{CardNewsWorkspace-DIhk26qD.js → CardNewsWorkspace-F3LrEj0b.js} +1 -1
  14. package/ui/dist/assets/{GenerationRequestLogPanel-BZZJh4w_.js → GenerationRequestLogPanel-CpyvTE6t.js} +1 -1
  15. package/ui/dist/assets/{HomeWorkspace-DwRS4Cim.js → HomeWorkspace-KplbVQT9.js} +1 -1
  16. package/ui/dist/assets/{KeyingPanel-YkL9305F.js → KeyingPanel-BY_xV317.js} +1 -1
  17. package/ui/dist/assets/{NodeCanvas-CaFDJn_9.js → NodeCanvas-scDxt0LA.js} +1 -1
  18. package/ui/dist/assets/{PromptBuilderPanel-Bl5-fDQs.js → PromptBuilderPanel-DeSY9dl-.js} +1 -1
  19. package/ui/dist/assets/{PromptImportDialog-5RbU95_Y.js → PromptImportDialog-BTP0imZl.js} +2 -2
  20. package/ui/dist/assets/{PromptImportDiscoverySection-uhS5xI0p.js → PromptImportDiscoverySection-BBThhJZM.js} +1 -1
  21. package/ui/dist/assets/{PromptImportFolderSection-COwFVcbE.js → PromptImportFolderSection-6sXWWJoK.js} +1 -1
  22. package/ui/dist/assets/{PromptLibraryPanel-DCtxfzy1.js → PromptLibraryPanel-BYTG-mBa.js} +2 -2
  23. package/ui/dist/assets/{SettingsWorkspace-aHoTeB4-.js → SettingsWorkspace-chsddbrB.js} +1 -1
  24. package/ui/dist/assets/{SpriteRecipeWorkspace-B0fR6yXF.js → SpriteRecipeWorkspace-HgacgO0x.js} +1 -1
  25. package/ui/dist/assets/{index-Bj2sxDP3.js → index-BqFlxfzT.js} +2 -2
  26. package/ui/dist/assets/{index-DBh-jt0i.js → index-VXkP0z69.js} +3 -3
  27. package/ui/dist/assets/index-waPOg2eb.css +1 -0
  28. package/ui/dist/assets/{pptxgen.es-AWrWIHuf.js → pptxgen.es-DX8PxAzM.js} +1 -1
  29. package/ui/dist/assets/{useAgentDialogFocus-BB6ds9jo.js → useAgentDialogFocus-DYjA7lCJ.js} +1 -1
  30. package/ui/dist/index.html +2 -2
  31. package/ui/dist/assets/index-BnMUy9kc.css +0 -1
@@ -1,3 +1,3 @@
1
- import{P as Fe,a as m,j as e,u as x,i as Se,A as je,Q as St,b as E}from"./index-Bj2sxDP3.js";import{u as ue}from"./useAgentDialogFocus-BB6ds9jo.js";async function D(t,n){const a=await fetch(t,n);if(!a.ok){const s=await a.json().catch(()=>({})),r=s.error,u=typeof r=="string"?r:r?.message??`Request failed: ${a.status}`,o=new Error(u);throw o.status=a.status,o.code=typeof r=="object"?r?.code:s.code,o}return await a.json()}function _t(t){return t.filename?`/generated/${t.filename}`:typeof t.url=="string"&&t.url?t.url:typeof t.thumb=="string"&&t.thumb?t.thumb:null}function Ge(t){const n=_t(t);if(!n)return null;const a=t.filename??t.canvasEditableFilename??"current-image.png";return{id:`current-${a}`,filename:a,url:n,thumbUrl:t.thumb??n,prompt:t.prompt??t.userPrompt??null,revisedPrompt:t.revisedPrompt??null,createdAt:t.createdAt??Date.now()}}async function qe(t){const n=t?`?selectedSessionId=${encodeURIComponent(t)}`:"";return D(`/api/agent/sessions${n}`)}async function Re(t){const n=t.currentImage?Ge(t.currentImage):null;return D("/api/agent/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:t.title,currentImage:n,webSearchEnabled:t.webSearchEnabled??!0})})}async function ie(t,n){return D(`/api/agent/sessions/${encodeURIComponent(t)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}async function wt(t){return D(`/api/agent/sessions/${encodeURIComponent(t)}`,{method:"DELETE"})}async function Nt(t,n,a){return D(`/api/agent/sessions/${encodeURIComponent(t)}/queue`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:n,options:a})})}async function Ct(t){return D(`/api/agent/queue/${encodeURIComponent(t)}/cancel`,{method:"POST"})}async function kt(t){return D(`/api/agent/queue/${encodeURIComponent(t)}/retry`,{method:"POST"})}const ve=Fe,It=Fe,At={provider:"oauth",model:"gpt-5.6-luna",quality:"medium",size:"1024x1024",format:"png",moderation:"low",reasoningEffort:"none",webSearchEnabled:!0,generationStrategy:"auto",variants:1,maxAutoVariants:ve,parallelism:2};function $e(t){return{...At,...t??{}}}function Pe(t){const{width:n,height:a}=t;return n>=1280?"desktop-three-pane":a<560&&n<1280?n>=768?"tablet-stacked":"mobile-chat-image-sheet":n>=960&&a>=560?"desktop-rail":n>=768&&a>=700?"tablet-stacked":"mobile-chat-image-sheet"}function Tt(){return typeof window>"u"?1440:window.innerWidth}function De(){return typeof window>"u"?900:window.innerHeight}function Lt(){if(typeof window>"u"||typeof document>"u")return 1440;const t=document.querySelector('.app[data-ui-mode="agent"] .sidebar');if(!t)return window.innerWidth;const n=window.getComputedStyle(t);if(n.display==="none"||n.visibility==="hidden")return window.innerWidth;const a=t.getBoundingClientRect().width;return Math.max(0,window.innerWidth-a)}function Mt(){const[t,n]=m.useState(()=>Pe({width:Tt(),height:De()}));return m.useEffect(()=>{const a=()=>n(Pe({width:Lt(),height:De()}));return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[]),t}function N({size:t=16,children:n}){return e.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:n})}function Ke(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M12 5v14"}),e.jsx("path",{d:"M5 12h14"})]})}function Et(t){return e.jsxs(N,{...t,children:[e.jsx("circle",{cx:"11",cy:"11",r:"7"}),e.jsx("path",{d:"M21 21l-4.3-4.3"})]})}function B(t){return e.jsxs(N,{...t,children:[e.jsx("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),e.jsx("circle",{cx:"8",cy:"10",r:"1.5"}),e.jsx("path",{d:"M21 16l-5-5L5 19"})]})}function de(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M18 6L6 18"}),e.jsx("path",{d:"M6 6l12 12"})]})}function qt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M22 2L11 13"}),e.jsx("path",{d:"M22 2l-7 20-4-9-9-4 20-7z"})]})}function Rt(t){return e.jsx(N,{...t,children:e.jsx("path",{d:"M21.4 11.1l-9.2 9.1a6 6 0 0 1-8.5-8.5l9.2-9.2a4 4 0 0 1 5.7 5.7l-9.2 9.2a2 2 0 0 1-2.8-2.8l8.5-8.5"})})}function $t(t){return e.jsxs(N,{...t,children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{d:"M2 12h20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 0 20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 0 0 20"})]})}function Ue(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M4 6h16"}),e.jsx("path",{d:"M4 12h16"}),e.jsx("path",{d:"M4 18h16"})]})}function Pt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M19 12H5"}),e.jsx("path",{d:"M12 19l-7-7 7-7"})]})}function Dt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M8 6h13"}),e.jsx("path",{d:"M8 12h13"}),e.jsx("path",{d:"M8 18h13"}),e.jsx("circle",{cx:"3",cy:"6",r:"1"}),e.jsx("circle",{cx:"3",cy:"12",r:"1"}),e.jsx("circle",{cx:"3",cy:"18",r:"1"})]})}function Bt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M3 6h18"}),e.jsx("path",{d:"M8 6V4h8v2"}),e.jsx("path",{d:"M19 6l-1 14H6L5 6"})]})}function Ot(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M12 20h9"}),e.jsx("path",{d:"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"})]})}function He(t){return e.jsx(N,{...t,children:e.jsx("path",{d:"M6 9l6 6 6-6"})})}function _e(t){return e.jsx(N,{...t,children:e.jsx("path",{d:"M9 6l6 6-6 6"})})}function zt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M4 8h16"}),e.jsx("circle",{cx:"9",cy:"8",r:"2.5"}),e.jsx("path",{d:"M4 16h16"}),e.jsx("circle",{cx:"15",cy:"16",r:"2.5"})]})}const Be=[{name:"question",display:"/question",aliases:["question","ask","q"],descriptionKey:"agent.slashDesc_question"},{name:"variants",display:"/variants <N>",aliases:["variants","variant","v","n"],descriptionKey:"agent.slashDesc_variants",hasValue:!0},{name:"generate",display:"/generate <N>",aliases:["generate","gen","g"],descriptionKey:"agent.slashDesc_generate",hasValue:!0},{name:"parallelism",display:"/parallelism <N>",aliases:["parallelism","parallel","p"],descriptionKey:"agent.slashDesc_parallelism",hasValue:!0},{name:"help",display:"/help",aliases:["help","h"],descriptionKey:"agent.slashDesc_help"}];function Ve(t){const n=t.toLowerCase();return n?Be.filter(a=>a.aliases.some(s=>s.startsWith(n))):Be}function Wt({listboxId:t,query:n,highlightIndex:a,onSelect:s,onHighlightChange:r}){const{t:u}=x(),o=Ve(n);return o.length===0?null:e.jsx("ul",{id:t,className:"slash-command-menu",role:"listbox","aria-label":u("agent.slashCommands"),children:o.map((i,d)=>e.jsxs("li",{id:`${t}-opt-${d}`,role:"option","aria-selected":d===a,className:`slash-command-menu__item${d===a?" is-highlighted":""}`,onMouseDown:l=>l.preventDefault(),onClick:()=>s(i),onMouseEnter:()=>r(d),children:[e.jsx("span",{className:"slash-command-menu__name",children:i.display}),e.jsx("span",{className:"slash-command-menu__desc",children:u(i.descriptionKey)})]},i.name))})}function Qt(t){return Array.from(t).filter(n=>n.type.startsWith("image/"))}function Ft(t){return Array.from(t.clipboardData?.items??[]).filter(n=>n.kind==="file"&&n.type.startsWith("image/")).map(n=>n.getAsFile()).filter(n=>!!n)}function Gt({webSearchEnabled:t,insertedPrompt:n,onWebSearchChange:a,onAttachFiles:s,onSend:r}){const{t:u}=x(),[o,i]=m.useState(""),[d,l]=m.useState(0),[h,c]=m.useState(!1),p=m.useRef(null),f=m.useRef(null),v=m.useId(),S=o.trim().length>0,C=o.trimStart().match(/^\/([a-z]*)$/i),q=C!==null,G=q&&!h,K=C?.[1]??"",T=Ve(K),O=G&&T.length>0,A=T.length>0?Math.min(d,T.length-1):0,ge=O?`${v}-opt-${A}`:void 0;m.useEffect(()=>{l(0),c(!1)},[K]),m.useEffect(()=>{q&&c(!1)},[q]),m.useEffect(()=>{n?.text&&i(b=>b.trim()?`${b.trim()}
1
+ import{P as Fe,a as m,j as e,u as x,i as Se,A as je,Q as St,b as E}from"./index-BqFlxfzT.js";import{u as ue}from"./useAgentDialogFocus-DYjA7lCJ.js";async function D(t,n){const a=await fetch(t,n);if(!a.ok){const s=await a.json().catch(()=>({})),r=s.error,u=typeof r=="string"?r:r?.message??`Request failed: ${a.status}`,o=new Error(u);throw o.status=a.status,o.code=typeof r=="object"?r?.code:s.code,o}return await a.json()}function _t(t){return t.filename?`/generated/${t.filename}`:typeof t.url=="string"&&t.url?t.url:typeof t.thumb=="string"&&t.thumb?t.thumb:null}function Ge(t){const n=_t(t);if(!n)return null;const a=t.filename??t.canvasEditableFilename??"current-image.png";return{id:`current-${a}`,filename:a,url:n,thumbUrl:t.thumb??n,prompt:t.prompt??t.userPrompt??null,revisedPrompt:t.revisedPrompt??null,createdAt:t.createdAt??Date.now()}}async function qe(t){const n=t?`?selectedSessionId=${encodeURIComponent(t)}`:"";return D(`/api/agent/sessions${n}`)}async function Re(t){const n=t.currentImage?Ge(t.currentImage):null;return D("/api/agent/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:t.title,currentImage:n,webSearchEnabled:t.webSearchEnabled??!0})})}async function ie(t,n){return D(`/api/agent/sessions/${encodeURIComponent(t)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}async function wt(t){return D(`/api/agent/sessions/${encodeURIComponent(t)}`,{method:"DELETE"})}async function Nt(t,n,a){return D(`/api/agent/sessions/${encodeURIComponent(t)}/queue`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:n,options:a})})}async function Ct(t){return D(`/api/agent/queue/${encodeURIComponent(t)}/cancel`,{method:"POST"})}async function kt(t){return D(`/api/agent/queue/${encodeURIComponent(t)}/retry`,{method:"POST"})}const ve=Fe,It=Fe,At={provider:"oauth",model:"gpt-5.6-luna",quality:"medium",size:"1024x1024",format:"png",moderation:"low",reasoningEffort:"none",webSearchEnabled:!0,generationStrategy:"auto",variants:1,maxAutoVariants:ve,parallelism:2};function $e(t){return{...At,...t??{}}}function Pe(t){const{width:n,height:a}=t;return n>=1280?"desktop-three-pane":a<560&&n<1280?n>=768?"tablet-stacked":"mobile-chat-image-sheet":n>=960&&a>=560?"desktop-rail":n>=768&&a>=700?"tablet-stacked":"mobile-chat-image-sheet"}function Tt(){return typeof window>"u"?1440:window.innerWidth}function De(){return typeof window>"u"?900:window.innerHeight}function Lt(){if(typeof window>"u"||typeof document>"u")return 1440;const t=document.querySelector('.app[data-ui-mode="agent"] .sidebar');if(!t)return window.innerWidth;const n=window.getComputedStyle(t);if(n.display==="none"||n.visibility==="hidden")return window.innerWidth;const a=t.getBoundingClientRect().width;return Math.max(0,window.innerWidth-a)}function Mt(){const[t,n]=m.useState(()=>Pe({width:Tt(),height:De()}));return m.useEffect(()=>{const a=()=>n(Pe({width:Lt(),height:De()}));return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[]),t}function N({size:t=16,children:n}){return e.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:n})}function Ke(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M12 5v14"}),e.jsx("path",{d:"M5 12h14"})]})}function Et(t){return e.jsxs(N,{...t,children:[e.jsx("circle",{cx:"11",cy:"11",r:"7"}),e.jsx("path",{d:"M21 21l-4.3-4.3"})]})}function B(t){return e.jsxs(N,{...t,children:[e.jsx("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),e.jsx("circle",{cx:"8",cy:"10",r:"1.5"}),e.jsx("path",{d:"M21 16l-5-5L5 19"})]})}function de(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M18 6L6 18"}),e.jsx("path",{d:"M6 6l12 12"})]})}function qt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M22 2L11 13"}),e.jsx("path",{d:"M22 2l-7 20-4-9-9-4 20-7z"})]})}function Rt(t){return e.jsx(N,{...t,children:e.jsx("path",{d:"M21.4 11.1l-9.2 9.1a6 6 0 0 1-8.5-8.5l9.2-9.2a4 4 0 0 1 5.7 5.7l-9.2 9.2a2 2 0 0 1-2.8-2.8l8.5-8.5"})})}function $t(t){return e.jsxs(N,{...t,children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{d:"M2 12h20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 0 20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 0 0 20"})]})}function Ue(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M4 6h16"}),e.jsx("path",{d:"M4 12h16"}),e.jsx("path",{d:"M4 18h16"})]})}function Pt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M19 12H5"}),e.jsx("path",{d:"M12 19l-7-7 7-7"})]})}function Dt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M8 6h13"}),e.jsx("path",{d:"M8 12h13"}),e.jsx("path",{d:"M8 18h13"}),e.jsx("circle",{cx:"3",cy:"6",r:"1"}),e.jsx("circle",{cx:"3",cy:"12",r:"1"}),e.jsx("circle",{cx:"3",cy:"18",r:"1"})]})}function Bt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M3 6h18"}),e.jsx("path",{d:"M8 6V4h8v2"}),e.jsx("path",{d:"M19 6l-1 14H6L5 6"})]})}function Ot(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M12 20h9"}),e.jsx("path",{d:"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z"})]})}function He(t){return e.jsx(N,{...t,children:e.jsx("path",{d:"M6 9l6 6 6-6"})})}function _e(t){return e.jsx(N,{...t,children:e.jsx("path",{d:"M9 6l6 6-6 6"})})}function zt(t){return e.jsxs(N,{...t,children:[e.jsx("path",{d:"M4 8h16"}),e.jsx("circle",{cx:"9",cy:"8",r:"2.5"}),e.jsx("path",{d:"M4 16h16"}),e.jsx("circle",{cx:"15",cy:"16",r:"2.5"})]})}const Be=[{name:"question",display:"/question",aliases:["question","ask","q"],descriptionKey:"agent.slashDesc_question"},{name:"variants",display:"/variants <N>",aliases:["variants","variant","v","n"],descriptionKey:"agent.slashDesc_variants",hasValue:!0},{name:"generate",display:"/generate <N>",aliases:["generate","gen","g"],descriptionKey:"agent.slashDesc_generate",hasValue:!0},{name:"parallelism",display:"/parallelism <N>",aliases:["parallelism","parallel","p"],descriptionKey:"agent.slashDesc_parallelism",hasValue:!0},{name:"help",display:"/help",aliases:["help","h"],descriptionKey:"agent.slashDesc_help"}];function Ve(t){const n=t.toLowerCase();return n?Be.filter(a=>a.aliases.some(s=>s.startsWith(n))):Be}function Wt({listboxId:t,query:n,highlightIndex:a,onSelect:s,onHighlightChange:r}){const{t:u}=x(),o=Ve(n);return o.length===0?null:e.jsx("ul",{id:t,className:"slash-command-menu",role:"listbox","aria-label":u("agent.slashCommands"),children:o.map((i,d)=>e.jsxs("li",{id:`${t}-opt-${d}`,role:"option","aria-selected":d===a,className:`slash-command-menu__item${d===a?" is-highlighted":""}`,onMouseDown:l=>l.preventDefault(),onClick:()=>s(i),onMouseEnter:()=>r(d),children:[e.jsx("span",{className:"slash-command-menu__name",children:i.display}),e.jsx("span",{className:"slash-command-menu__desc",children:u(i.descriptionKey)})]},i.name))})}function Qt(t){return Array.from(t).filter(n=>n.type.startsWith("image/"))}function Ft(t){return Array.from(t.clipboardData?.items??[]).filter(n=>n.kind==="file"&&n.type.startsWith("image/")).map(n=>n.getAsFile()).filter(n=>!!n)}function Gt({webSearchEnabled:t,insertedPrompt:n,onWebSearchChange:a,onAttachFiles:s,onSend:r}){const{t:u}=x(),[o,i]=m.useState(""),[d,l]=m.useState(0),[h,c]=m.useState(!1),p=m.useRef(null),f=m.useRef(null),v=m.useId(),S=o.trim().length>0,C=o.trimStart().match(/^\/([a-z]*)$/i),q=C!==null,G=q&&!h,K=C?.[1]??"",T=Ve(K),O=G&&T.length>0,A=T.length>0?Math.min(d,T.length-1):0,ge=O?`${v}-opt-${A}`:void 0;m.useEffect(()=>{l(0),c(!1)},[K]),m.useEffect(()=>{q&&c(!1)},[q]),m.useEffect(()=>{n?.text&&i(b=>b.trim()?`${b.trim()}
2
2
 
3
3
  ${n.text}`:n.text)},[n]);const U=()=>{const b=o.trim();b&&(r(b),i(""))},H=b=>{i(`/${b.name} `),p.current?.focus()},V=b=>{const M=Ft(b);M.length!==0&&(b.preventDefault(),s(M))};return e.jsxs("div",{className:"agent-composer",children:[O&&e.jsx(Wt,{listboxId:v,query:K,highlightIndex:A,onSelect:H,onHighlightChange:l}),e.jsx("textarea",{ref:p,value:o,"aria-autocomplete":"list","aria-haspopup":"listbox","aria-label":u("agent.composerPlaceholder"),...O?{"aria-controls":v}:{},"aria-activedescendant":ge,autoCapitalize:"off",autoCorrect:"off",placeholder:u("agent.composerPlaceholder"),onChange:b=>i(b.target.value),onPaste:V,onKeyDown:b=>{if(b.key==="Enter"&&(b.metaKey||b.ctrlKey)){b.preventDefault(),U();return}if(O)switch(b.key){case"Tab":{b.preventDefault(),H(T[A]);return}case"ArrowDown":{b.preventDefault(),l((A+1)%T.length);return}case"ArrowUp":{b.preventDefault(),l((A-1+T.length)%T.length);return}case"Enter":{b.preventDefault(),H(T[A]);return}case"Escape":{b.preventDefault(),c(!0);return}}}}),e.jsx("input",{ref:f,type:"file",accept:"image/png,image/jpeg,image/webp",multiple:!0,hidden:!0,onChange:b=>{const M=Qt(b.target.files??[]);M.length>0&&s(M),b.target.value=""}}),e.jsxs("div",{className:"agent-composer__actions",children:[e.jsx("button",{type:"button",onClick:()=>f.current?.click(),"aria-label":u("agent.attachReference"),title:u("agent.attachReference"),children:e.jsx(Rt,{size:16})}),e.jsx("button",{type:"button",className:t?"is-active":"","aria-pressed":t,onClick:()=>a(!t),"aria-label":u("agent.webSearch"),title:u("agent.webSearch"),children:e.jsx($t,{size:16})}),e.jsxs("button",{type:"button",className:"agent-composer__send",onClick:U,disabled:!S,"aria-label":u("agent.send"),children:[e.jsx(qt,{size:16}),e.jsx("span",{children:u("agent.send")})]})]})]})}function Q({src:t,alt:n,className:a,fallbackClassName:s,iconSize:r=18}){const[u,o]=m.useState(!1);return!t||u?e.jsx("span",{className:s??"agent-image-fallback","aria-label":n,role:"img",children:e.jsx(B,{size:r})}):Se(t)?e.jsx("video",{className:a,src:t,preload:"metadata",playsInline:!0,muted:!0,onError:()=>o(!0),"aria-label":n}):e.jsx("img",{className:a,src:t,alt:n,onError:()=>o(!0)})}const F=m.forwardRef(function({image:n,selected:a=!1,compact:s=!1,onSelect:r},u){const{t:o}=x(),i=`${o("agent.mediaSelect")}: ${n.prompt??n.filename}`,d=`${s?"agent-result-thumb agent-result-thumb--compact":"agent-result-thumb"}${a?" is-selected":""}`;return e.jsx("button",{ref:u,type:"button",className:d,"aria-label":i,"aria-current":a?"true":void 0,onClick:()=>r(n.id),title:o("agent.mediaSelect"),children:e.jsx(Q,{src:n.thumbUrl??n.url,alt:n.prompt??o("agent.imageAlt"),iconSize:s?14:18})})});function Kt({turn:t,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),u=t.role==="user"?r("agent.user"):t.status==="error"?r("agent.errorRole"):r("agent.assistant"),o=t.imageIds??[],i=t.status==="streaming"?" is-streaming":t.status==="error"?" is-error":"",d=`agent-message agent-message--${t.role}${i}`;return e.jsxs("article",{className:d,"aria-busy":t.status==="streaming"?"true":void 0,children:[e.jsx("div",{className:"agent-message__role",children:u}),e.jsx("p",{children:t.text}),o.length>0?e.jsx("div",{className:"agent-message__images",children:o.map(l=>{const h=n[l];return h?e.jsx(F,{image:h,selected:l===a,compact:!1,onSelect:s},l):null})}):null]})}const Ut=["ima2.get_image_context","ima2.web_search","ima2.generate_image","ima2.generate_video","ima2.get_generation_errors"];function Ht(t){return t.replace(/\s+/g," ").trim()||"tool"}function Vt(t){if(t.toolCalls?.length)return t.toolCalls;const n=Ht(t.text);return Ut.filter(a=>n.includes(a)).map((a,s)=>({id:`${t.id}-fallback-${s}`,name:a,status:t.status==="error"?"error":t.status==="streaming"?"running":"complete",outputSummary:n,imageIds:a==="ima2.generate_image"||a==="ima2.generate_video"?t.imageIds??[]:[],webFindingIds:a==="ima2.web_search"?t.webFindingIds??[]:[]}))}function Je(t){return!t||t<0?null:t<1e3?`${t}ms`:`${(t/1e3).toFixed(1)}s`}function Jt({call:t,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),u=t.imageIds??[],o=Je(t.durationMs),[i,d]=m.useState({input:!1,output:!1}),l=(h,c)=>e.jsxs("dd",{className:i[h]?"is-expanded":void 0,children:[e.jsx("span",{children:c}),e.jsx("button",{type:"button",onClick:()=>d(p=>({...p,[h]:!p[h]})),children:r(i[h]?"agent.toolsShowLess":"agent.toolsShowMore")})]});return e.jsxs("div",{className:"agent-tool-call-details",children:[e.jsxs("dl",{children:[e.jsxs("div",{children:[e.jsx("dt",{children:r("agent.toolInput")}),l("input",t.inputSummary??"-")]}),e.jsxs("div",{children:[e.jsx("dt",{children:r("agent.toolOutput")}),l("output",t.errorMessage??t.outputSummary??"-")]}),t.requestId?e.jsxs("div",{children:[e.jsx("dt",{children:r("agent.requestId")}),e.jsx("dd",{children:t.requestId})]}):null,o?e.jsxs("div",{children:[e.jsx("dt",{children:r("agent.duration")}),e.jsx("dd",{children:o})]}):null]}),u.length>0?e.jsx("div",{className:"agent-tool-call-details__artifacts","aria-label":r("agent.toolArtifacts"),children:u.map(h=>{const c=n[h];return c?e.jsx(F,{image:c,selected:h===a,compact:!0,onSelect:s},h):null})}):null]})}function Xt({call:t,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),u=m.useId(),[o,i]=m.useState(!1),d=Je(t.durationMs);return e.jsxs("li",{className:`agent-tool-call-row agent-tool-call-row--${t.status}`,children:[e.jsxs("button",{type:"button",className:"agent-tool-call-row__toggle","aria-expanded":o,"aria-controls":u,"aria-busy":t.status==="running"?"true":void 0,onClick:()=>i(l=>!l),children:[e.jsx("span",{className:"agent-tool-call-row__status","aria-label":r(`agent.toolStatus.${t.status}`)}),e.jsx("span",{className:"agent-tool-call-row__name",children:t.name}),t.imageIds?.length?e.jsx("span",{className:"agent-tool-call-row__meta",children:r("agent.toolImageCount",{count:t.imageIds.length})}):null,d?e.jsx("span",{className:"agent-tool-call-row__meta",children:d}):null,o?e.jsx(He,{size:13}):e.jsx(_e,{size:13})]}),e.jsx("div",{id:u,hidden:!o,children:e.jsx(Jt,{call:t,imagesById:n,currentImageId:a,onImageSelect:s})})]})}function Yt(t){const n=[],a=new Set;let s=!1;const r=[];for(const u of t){const o=Vt(u);n.push(...o);for(const i of u.imageIds??[])a.add(i);for(const i of o)for(const d of i.imageIds??[])a.add(d);u.status==="streaming"&&(s=!0);for(const i of o)r.includes(i.name)||r.push(i.name)}return{toolCalls:n,imageIds:[...a],isStreaming:s,label:r.join(" + ")||"tool"}}function Zt({turns:t,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),u=m.useId(),[o,i]=m.useState(!1),{toolCalls:d,imageIds:l,isStreaming:h,label:c}=m.useMemo(()=>Yt(t),[t]),p=r(o?"agent.toolCollapse":"agent.toolExpand");return e.jsxs("article",{className:`agent-message agent-message--tool is-collapsible${h?" is-streaming":""}`,"aria-busy":h?"true":void 0,children:[e.jsx("div",{className:"agent-message__tool-summary",children:e.jsx("button",{type:"button",className:"agent-message__tool-toggle","aria-expanded":o,"aria-controls":u,"aria-label":`${p}: ${c}`,onClick:()=>i(f=>!f),children:e.jsxs("span",{className:"agent-message__tool-summary-line",children:[e.jsx("span",{className:"agent-message__tool-dot","aria-hidden":"true"}),e.jsx("span",{className:"agent-message__role",children:r("agent.toolGroup")}),l.length>0?e.jsx("span",{className:"agent-message__tool-count",children:r("agent.toolImageCount",{count:l.length})}):null,d.length>0?e.jsx("span",{className:"agent-message__tool-count",children:r("agent.toolCallCount",{count:d.length})}):null,o?e.jsx(He,{size:14}):e.jsx(_e,{size:14})]})})}),e.jsxs("div",{id:u,className:"agent-message__tool-details",hidden:!o,children:[e.jsx("div",{className:"agent-message__tool-label",children:c}),d.length>0?e.jsx("ul",{className:"agent-tool-call-list",children:d.map(f=>e.jsx(Xt,{call:f,imagesById:n,currentImageId:a,onImageSelect:s},f.id))}):null,l.length>0?e.jsx("div",{className:"agent-message__tool-thumbs",children:l.map(f=>{const v=n[f];return v?e.jsx(F,{image:v,selected:f===a,compact:!0,onSelect:s},f):null})}):null]})]})}function en(t){return t.role!=="tool"&&(t.text.trim().length>0||(t.imageIds?.length??0)>0)}function tn({turns:t,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),u=t.filter(c=>c.role==="tool"),o=t.filter(en),i=t.some(c=>c.status==="streaming"),d=t.some(c=>c.status==="error"),l=i?" is-streaming":d?" is-error":"",h=r(d?"agent.errorRole":"agent.assistant");return e.jsxs("article",{className:`agent-message agent-message--assistant-run${l}`,"aria-busy":i?"true":void 0,children:[e.jsxs("div",{className:"agent-run__header",children:[e.jsx("div",{className:"agent-message__role",children:h}),u.length>0?e.jsx("div",{className:"agent-run__header-tool",children:e.jsx(Zt,{turns:u,imagesById:n,currentImageId:a,onImageSelect:s})}):null]}),o.length>0?e.jsx("ol",{className:"agent-run__steps","aria-label":h,children:o.map(c=>{const p=c.imageIds??[],f=c.status==="streaming"?" is-streaming":c.status==="error"?" is-error":"";return e.jsxs("li",{className:`agent-run__step${f}`,children:[e.jsx("span",{className:"agent-run__step-marker","aria-hidden":"true"}),e.jsxs("div",{className:"agent-run__step-body",children:[c.text.trim().length>0?e.jsx("p",{children:c.text}):null,p.length>0?e.jsx("div",{className:"agent-message__images",children:p.map(v=>{const S=n[v];return S?e.jsx(F,{image:S,selected:v===a,compact:!1,onSelect:s},v):null})}):null]})]},c.id)})}):null]})}function nn(t){const n=[];let a=[];const s=()=>{a.length!==0&&(n.push({kind:"run",turns:a,key:a.map(r=>r.id).join("+")}),a=[])};for(const r of t)r.role==="user"?(s(),n.push({kind:"single",turn:r})):a.push(r);return s(),n}function an({turns:t,imagesById:n,currentImageId:a,onImageSelect:s}){const{t:r}=x(),u=m.useRef(null),o=m.useRef(!0),[i,d]=m.useState(!1),l=m.useMemo(()=>nn(t),[t]),h=m.useCallback(()=>{const p=u.current;p&&(o.current=p.scrollHeight-p.scrollTop-p.clientHeight<=120,o.current&&d(!1))},[]),c=m.useCallback(()=>{const p=u.current;p&&(p.scrollTo({top:p.scrollHeight,behavior:"smooth"}),o.current=!0,d(!1))},[]);return m.useEffect(()=>{const p=u.current;p&&(o.current?p.scrollTop=p.scrollHeight:d(!0))},[t.length]),e.jsxs("div",{ref:u,className:"agent-message-list","aria-live":"polite",onScroll:h,children:[t.length===0?e.jsx("div",{className:"agent-message-list__empty",children:r("agent.emptyChat")}):null,l.map(p=>p.kind==="run"?e.jsx(tn,{turns:p.turns,imagesById:n,currentImageId:a,onImageSelect:s},p.key):e.jsx(Kt,{turn:p.turn,imagesById:n,currentImageId:a,onImageSelect:s},p.turn.id)),i?e.jsx("button",{type:"button",className:"agent-message-list__jump",onClick:c,children:r("agent.emptyJumpLatest")}):null]})}const ce=[{value:"gpt-5.6-luna",shortLabel:"5.6l",fullLabel:"GPT-5.6 Luna",provider:"oauth"},{value:"gpt-5.6-terra",shortLabel:"5.6t",fullLabel:"GPT-5.6 Terra",provider:"oauth"},{value:"gpt-5.6-sol",shortLabel:"5.6s",fullLabel:"GPT-5.6 Sol",provider:"oauth"},{value:"gpt-5.5",shortLabel:"5.5",fullLabel:"GPT-5.5",provider:"oauth"},{value:"gpt-5.4",shortLabel:"5.4",fullLabel:"GPT-5.4",provider:"oauth"},{value:"gpt-5.4-mini",shortLabel:"5.4m",fullLabel:"GPT-5.4 mini",provider:"oauth"},{value:"grok-4.6",shortLabel:"4.6",fullLabel:"Grok 4.6",provider:"grok"},{value:"grok-4.5",shortLabel:"4.5",fullLabel:"Grok 4.5",provider:"grok"},{value:"grok-4.3",shortLabel:"4.3",fullLabel:"Grok 4.3",provider:"grok"}];function sn(t){return ce.find(n=>n.value===t.model)??ce.find(n=>n.provider===t.provider)??ce[0]}function Xe({settings:t,onChange:n,onOpenModelTab:a}){const{t:s}=x(),[r,u]=m.useState(!1),o=m.useRef(null),i=sn(t),d=je.find(l=>l.value===t.reasoningEffort)??je[0];return m.useEffect(()=>{if(!r)return;const l=c=>{o.current?.contains(c.target)||u(!1)},h=c=>{c.key==="Escape"&&u(!1)};return window.addEventListener("pointerdown",l),window.addEventListener("keydown",h),()=>{window.removeEventListener("pointerdown",l),window.removeEventListener("keydown",h)}},[r]),e.jsxs("div",{ref:o,className:"image-model-select image-model-select--sidebar agent-model-select",children:[e.jsxs("button",{type:"button",className:"image-model-select__trigger image-model-select__trigger--pill","aria-haspopup":"menu","aria-expanded":r,"aria-label":s("sidebar.quickSettingsAria",{model:i.shortLabel,effort:d.shortLabel}),onClick:()=>u(l=>!l),children:[e.jsxs("span",{className:"image-model-select__trigger-top",children:[e.jsx("span",{className:"image-model-select__trigger-model",children:i.shortLabel}),e.jsx("span",{className:"image-model-select__trigger-chevron","aria-hidden":"true",children:"▾"})]}),e.jsx("span",{className:"image-model-select__trigger-effort",children:d.shortLabel})]}),a?e.jsx("button",{type:"button",className:"agent-model-select__open-tab",onClick:a,"aria-label":s("agent.modelTabView"),title:s("agent.modelTabView"),children:e.jsx(_e,{size:13})}):null,r?e.jsxs("div",{className:"image-model-select__menu agent-model-select__menu",role:"menu","aria-label":s("sidebar.quickSettingsMenu"),children:[e.jsxs("div",{className:"image-model-select__section",role:"group","aria-label":s("agent.model"),children:[e.jsx("div",{className:"image-model-select__section-title",children:s("agent.model")}),ce.map(l=>e.jsxs("button",{type:"button",className:`image-model-select__item${l.value===i.value?" is-active":""}`,role:"menuitemradio","aria-checked":l.value===i.value,onClick:()=>{n({model:l.value,provider:l.provider}),u(!1)},children:[e.jsx("span",{children:l.shortLabel}),e.jsx("small",{children:l.fullLabel})]},l.value))]}),e.jsxs("div",{className:"image-model-select__section",role:"group","aria-label":s("sidebar.reasoningLabel"),children:[e.jsx("div",{className:"image-model-select__section-title",children:s("sidebar.reasoningLabel")}),je.map(l=>e.jsxs("button",{type:"button",className:`image-model-select__item${l.value===t.reasoningEffort?" is-active":""}`,role:"menuitemradio","aria-checked":l.value===t.reasoningEffort,onClick:()=>{n({reasoningEffort:l.value}),u(!1)},children:[e.jsx("span",{children:l.shortLabel}),e.jsx("small",{children:s(l.fullLabelKey)})]},l.value))]})]}):null]})}function rn(t,n){if(!t)return null;const a=Math.max(0,Math.floor((n-t)/1e3));return`${String(Math.floor(a/60)).padStart(2,"0")}:${String(a%60).padStart(2,"0")}`}function ln({progress:t,queueSummary:n,onQueueOpen:a,onRetry:s}){const{t:r}=x(),[u,o]=m.useState(Date.now());m.useEffect(()=>{if(!t?.startedAt)return;o(Date.now());const p=window.setInterval(()=>o(Date.now()),1e3);return()=>window.clearInterval(p)},[t?.startedAt]);const i=n?.activeCount??(t?.queuedCount??0)+(t?.runningCount??0),d=n?.failedCount??t?.failedCount??0;if(!t?.active&&!n)return null;const l=t?.status==="queued"?"agent.progressQueued":t?.progressStage==="downloading"?"agent.progressDownloading":t?.status==="running"||t?.progressStage==="requesting"||t?.progressStage==="polling"?"agent.progressGenerating":t?.status==="error"?"agent.progressFailed":"agent.progressPlanning",h=rn(t?.startedAt,u),c=t?.jobKind?r("agent.progressJob",{kind:r(`agent.mediaKind.${t.jobKind}`),count:t.variantCount??1}):null;return e.jsxs("div",{className:`agent-run-status agent-run-status--${t?.status??"idle"}`,role:"status","aria-live":"polite",children:[t?.active?e.jsx("span",{className:"agent-run-status__indicator","aria-hidden":"true"}):null,t?.active?e.jsx("span",{className:"agent-run-status__label",children:r(l)}):null,c?e.jsx("span",{className:"agent-run-status__meta",children:c}):null,h?e.jsx("time",{className:"agent-run-status__elapsed",dateTime:`PT${Math.floor((u-(t?.startedAt??u))/1e3)}S`,children:h}):null,t?.status==="error"&&t.lastError?e.jsx("span",{className:"agent-run-status__meta",children:t.lastError}):null,t?.status==="error"&&s?e.jsx("button",{type:"button",className:"agent-run-status__retry",onClick:s,children:r("agent.retryQueue")}):null,e.jsx("button",{type:"button",className:"agent-run-status__queue",onClick:a,disabled:!a,children:r("agent.queueSummary",{active:i,failed:d})})]})}function on({status:t,compacted:n=!1}){const{t:a}=x(),s=a(t==="generating"?"agent.statusGenerating":t==="reconnecting"?"agent.statusReconnecting":"agent.statusReady");return e.jsxs("span",{className:`agent-status agent-status--${t}`,"aria-live":t==="ready"?void 0:"polite",children:[t==="generating"?e.jsx("span",{className:"agent-status__dot","aria-hidden":"true"}):null,e.jsx("span",{children:s}),n?e.jsx("em",{children:a("agent.compacted")}):null]})}function cn({session:t,turns:n,imagesById:a,currentImageId:s,runtimeStatus:r,runProgress:u,settings:o,insertedPrompt:i,onSettingsChange:d,onOpenModelTab:l,onWebSearchChange:h,onAttachFiles:c,onImageSelect:p,onSend:f,onRetryRun:v}){const{t:S}=x();return e.jsxs("section",{className:"agent-chat","aria-label":S("agent.chat"),children:[e.jsxs("header",{className:"agent-pane-header",children:[e.jsxs("div",{className:"agent-pane-header__title",children:[e.jsx("span",{children:S("agent.chat")}),e.jsx("strong",{children:t?.title??S("agent.newSession")})]}),e.jsxs("div",{className:"agent-pane-header__actions",children:[o&&d?e.jsx(Xe,{settings:o,onChange:d,onOpenModelTab:l}):null,e.jsx(on,{status:r,compacted:t?.compacted})]})]}),e.jsx(an,{turns:n,imagesById:a,currentImageId:s,onImageSelect:p}),e.jsx(ln,{progress:u,onRetry:v}),e.jsx(Gt,{webSearchEnabled:t?.webSearchEnabled??!1,insertedPrompt:i,onWebSearchChange:h,onAttachFiles:c,onSend:f})]})}const un=["image","refs","web","memory"];function dn({activeTab:t,onChange:n}){const{t:a}=x(),s={image:a("agent.imageTab"),refs:a("agent.refsTab"),web:a("agent.webTab"),memory:a("agent.memoryTab")};return e.jsx("div",{className:"agent-context-tabs",role:"tablist","aria-label":a("agent.contextTabs"),children:un.map(r=>e.jsx("button",{type:"button",role:"tab","aria-selected":t===r,className:t===r?"active":"",onClick:()=>n(r),children:s[r]},r))})}function gn({activeTab:t,currentImage:n}){const{t:a}=x();return t==="refs"?e.jsx("div",{className:"agent-tab-empty",children:a("agent.noRefs")}):t==="web"?e.jsx("div",{className:"agent-tab-empty",children:a("agent.noWeb")}):t==="memory"?e.jsxs("ul",{className:"agent-memory-list",children:[e.jsx("li",{children:a("agent.memoryItemStyle")}),e.jsx("li",{children:a("agent.memoryItemSubject")})]}):e.jsxs("dl",{className:"agent-image-meta",children:[e.jsxs("div",{children:[e.jsx("dt",{children:a("agent.filename")}),e.jsx("dd",{children:n?.filename??"-"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:a("agent.prompt")}),e.jsx("dd",{children:n?.prompt??n?.revisedPrompt??"-"})]})]})}function hn(t){const n=Math.max(0,Math.round(t));return`${Math.floor(n/60)}:${String(n%60).padStart(2,"0")}`}function Ye({image:t}){const{t:n}=x(),[a,s]=m.useState("loading"),[r,u]=m.useState(null),[o,i]=m.useState(0),d=h=>{const c=h.currentTarget.duration;u(Number.isFinite(c)?c:null),s("ready")},l=()=>{s("loading"),u(null),i(h=>h+1)};return e.jsxs("div",{className:"agent-video-preview",children:[a==="loading"?e.jsx("div",{className:"agent-video-preview__skeleton",role:"status",children:n("agent.mediaLoading")}):null,a==="error"?e.jsxs("div",{className:"agent-video-preview__error",role:"alert",children:[e.jsx(B,{size:34}),e.jsx("span",{children:n("agent.mediaLoadFailed")}),e.jsx("button",{type:"button",onClick:l,children:n("agent.mediaRetry")})]}):e.jsx("video",{src:t.url,controls:!0,playsInline:!0,preload:"metadata","aria-label":t.prompt??n("agent.mediaVideoLabel"),onLoadedMetadata:d,onError:()=>s("error")},o),e.jsxs("div",{className:"agent-video-preview__toolbar",children:[e.jsx("span",{children:r==null?n("agent.mediaDurationUnknown"):n("agent.mediaDuration",{duration:hn(r)})}),e.jsx("a",{href:t.url,download:t.filename,children:n("agent.mediaDownload")})]})]})}function Ze({currentImage:t,images:n,activeTab:a,onTabChange:s,onImageSelect:r,headerAction:u}){const{t:o}=x(),i=m.useRef({}),d=m.useMemo(()=>n.findIndex(c=>c.id===t?.id),[t?.id,n]);m.useEffect(()=>{t?.id&&i.current[t.id]?.scrollIntoView({block:"nearest",inline:"nearest"})},[t?.id]);const l=m.useCallback(c=>{const p=n[c];p&&r(p.id)},[n,r]),h=m.useCallback(c=>{if(n.length===0)return;const p=d>=0?d:0;let f=null;(c.key==="ArrowLeft"||c.key==="ArrowUp")&&(f=Math.max(0,p-1)),(c.key==="ArrowRight"||c.key==="ArrowDown")&&(f=Math.min(n.length-1,p+1)),c.key==="Home"&&(f=0),c.key==="End"&&(f=n.length-1),!(f===null||f===p)&&(c.preventDefault(),l(f))},[d,n.length,l]);return e.jsxs("section",{className:"agent-image","aria-label":o("agent.imagePane"),children:[e.jsxs("header",{className:"agent-pane-header",children:[e.jsxs("div",{className:"agent-pane-header__title",children:[e.jsx("span",{children:o("agent.imagePane")}),e.jsx("strong",{children:o("agent.currentImage")})]}),u]}),e.jsx("div",{className:"agent-image__preview",tabIndex:n.length>1?0:void 0,onKeyDown:h,"aria-label":n.length>1?o("agent.variants"):void 0,children:t?Se(t.url)?e.jsx(Ye,{image:t},t.id):e.jsx(Q,{src:t.url,alt:t.prompt??o("agent.imageAlt"),fallbackClassName:"agent-image__empty",iconSize:34}):e.jsxs("div",{className:"agent-image__empty",children:[e.jsx(B,{size:34}),e.jsx("span",{children:o("agent.noImage")})]})}),e.jsx("div",{className:"agent-image__variants","aria-label":o("agent.variants"),onKeyDown:h,children:n.map(c=>e.jsx(F,{ref:p=>{i.current[c.id]=p},image:c,selected:c.id===t?.id,onSelect:r},c.id))}),e.jsx(dn,{activeTab:a,onChange:s}),e.jsx(gn,{activeTab:a,currentImage:t})]})}function mn({open:t,currentImage:n,images:a,activeTab:s,onTabChange:r,onImageSelect:u,onClose:o}){const{t:i}=x(),d=m.useCallback(()=>o(),[o]),l=ue(t,d);return t?e.jsxs("div",{className:"agent-dialog agent-dialog--image",role:"presentation",children:[e.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:o,"aria-label":i("agent.closeImage")}),e.jsx("section",{ref:l,className:"agent-image-sheet",role:"dialog","aria-modal":"true","aria-label":i("agent.imagePane"),children:e.jsx(Ze,{currentImage:n,images:a,activeTab:s,onTabChange:r,onImageSelect:u,headerAction:e.jsx("button",{type:"button",onClick:o,"aria-label":i("agent.closeImage"),children:e.jsx(de,{size:17})})})})]}):null}function pn(t){return t.status==="queued"?`#${t.position}`:t.status==="succeeded"?String(t.resultImageIds.length):""}function fn(t,n){if(!t)return"-";const a=Math.max(1,Math.round((Date.now()-t)/1e3));if(a<60)return n(a,"second");const s=Math.round(a/60);return s<60?n(s,"minute"):n(Math.round(s/60),"hour")}function xn(t){return!t.errorCode&&!t.errorClass&&!t.errorMessage?null:St({code:t.errorCode,errorClass:t.errorClass,message:t.errorMessage})}function jn(t,n){return t?.errorClass?t.spec.cardKey?n(`${t.spec.cardKey}.title`):t.spec.toastKey?n(t.spec.toastKey):null:null}function bn({item:t,onCancel:n,onRetry:a}){const{t:s}=x(),r=t.status==="queued"||t.status==="running",u=t.status==="failed"||t.status==="canceled",o=t.plan.plannedVariants||t.plan.prompts.length||1,i=t.plan.plannedParallelism||t.options.parallelism,d=pn(t),l=fn(t.createdAt,(c,p)=>s("agent.queueTimeAgo",{value:c,unit:s(`agent.queueTimeUnit.${p}`)})),h=jn(xn(t),s);return e.jsxs("div",{className:`agent-queue-row agent-queue-row--${t.status}`,children:[e.jsxs("div",{className:"agent-queue-row__main",children:[e.jsx("strong",{children:t.prompt}),e.jsx("span",{className:`agent-queue-row__badge agent-queue-row__badge--${t.status}`,children:s(`agent.queueStatus.${t.status}`)}),e.jsx("span",{children:[d,h,s("agent.queuePlanSummary",{variants:o,parallel:i}),l].filter(Boolean).join(" · ")}),t.plan.reason||t.errorCode||t.errorMessage?e.jsxs("details",{className:"agent-queue-row__details",children:[e.jsx("summary",{children:s("agent.queueDetails")}),t.plan.reason?e.jsx("small",{children:t.plan.reason}):null,t.errorCode?e.jsx("small",{children:t.errorCode}):null,t.errorMessage?e.jsx("small",{children:t.errorMessage}):null]}):null]}),e.jsxs("div",{className:"agent-queue-row__actions",children:[r?e.jsx("button",{type:"button",onClick:()=>n(t.id),children:s("agent.cancelQueue")}):null,u?e.jsx("button",{type:"button",onClick:()=>a(t.id),children:s("agent.retryQueue")}):null]})]})}function et({items:t,summary:n,onCancel:a,onRetry:s}){const{t:r}=x(),u=r("agent.queueAnnouncement",{running:n?.runningCount??0,queued:n?.queuedCount??0,failed:t.filter(o=>o.status==="failed").length});return e.jsxs("section",{className:"agent-sidebar-section","aria-label":r("agent.queue"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:r("agent.queue")}),e.jsxs("strong",{children:[n?.runningCount??0," ",r("agent.runningShort")," · ",n?.queuedCount??0," ",r("agent.queuedShort")]})]})}),e.jsxs("div",{className:"agent-queue-list",children:[e.jsx("span",{className:"agent-sr-only","aria-live":"polite","aria-atomic":"true",children:u}),t.length===0?e.jsx("div",{className:"agent-tab-empty",children:r("agent.queueEmpty")}):t.map(o=>e.jsx(bn,{item:o,onCancel:a,onRetry:s},o.id))]})]})}function yn({open:t,items:n,summary:a,onCancel:s,onRetry:r,onClose:u}){const{t:o}=x(),i=m.useCallback(()=>u(),[u]),d=ue(t,i);return t?e.jsxs("div",{className:"agent-dialog agent-dialog--queue",role:"presentation",children:[e.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:u,"aria-label":o("agent.topbarCloseQueue")}),e.jsxs("section",{ref:d,className:"agent-queue-sheet",role:"dialog","aria-modal":"true","aria-label":o("agent.topbarQueueSheet"),children:[e.jsxs("header",{children:[e.jsx("strong",{children:o("agent.topbarQueueSheet")}),e.jsx("button",{type:"button",onClick:u,"aria-label":o("agent.topbarCloseQueue"),children:e.jsx(de,{size:17})})]}),e.jsx(et,{items:n,summary:a,onCancel:s,onRetry:r})]})]}):null}function tt({mode:t,onInsert:n}){const{t:a}=x(),s=E(l=>l.promptLibrary),r=E(l=>l.promptLibraryLoading),u=E(l=>l.loadPromptLibrary),[o,i]=m.useState("");m.useEffect(()=>{u()},[u]);const d=m.useMemo(()=>{const l=o.trim().toLowerCase();return s.prompts.filter(h=>{const c=h.tags.map(p=>p.toLowerCase());return t==="forms"&&!c.includes("agent:form")?!1:l?h.name.toLowerCase().includes(l)||h.text.toLowerCase().includes(l)||c.some(p=>p.includes(l)):!0})},[s.prompts,t,o]);return e.jsxs("section",{className:"agent-sidebar-section","aria-label":a(t==="forms"?"agent.forms":"agent.promptLibrary"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:a(t==="forms"?"agent.forms":"agent.promptLibrary")}),e.jsx("strong",{children:d.length})]})}),e.jsxs("label",{className:"agent-sidebar-search",children:[e.jsx("span",{children:a("promptLibrary.search")}),e.jsx("input",{value:o,onChange:l=>i(l.target.value),placeholder:a("promptLibrary.search")})]}),e.jsxs("div",{className:"agent-prompt-library-list",children:[r?e.jsx("div",{className:"agent-tab-empty",children:a("common.loading")}):null,!r&&d.length===0?e.jsx("div",{className:"agent-tab-empty",children:a(t==="forms"?"agent.noForms":"promptLibrary.empty")}):null,d.map(l=>e.jsxs("article",{className:"agent-prompt-library-row",children:[e.jsx("strong",{children:l.name||a("promptLibrary.untitled")}),e.jsx("p",{children:l.text}),e.jsx("button",{type:"button",onClick:()=>n(l.text),children:a("agent.insertPrompt")})]},l.id))]})]})}function vn({onInsert:t}){return e.jsx(tt,{mode:"forms",onInsert:t})}function te({label:t,value:n,options:a,onChange:s}){return e.jsxs("div",{className:"agent-settings-grid__field",children:[e.jsx("span",{children:t}),e.jsx("div",{className:"agent-segment-control",role:"group","aria-label":t,children:a.map(r=>e.jsx("button",{type:"button","aria-pressed":r.value===n,onClick:()=>s(r.value),children:r.label},r.value))})]})}function be({label:t,value:n,max:a,onChange:s}){return e.jsxs("div",{className:"agent-settings-grid__field",children:[e.jsx("span",{children:t}),e.jsxs("div",{className:"agent-stepper",role:"group","aria-label":t,children:[e.jsx("button",{type:"button","aria-label":`${t} -`,disabled:n<=1,onClick:()=>s(Math.max(1,n-1)),children:"-"}),e.jsx("output",{"aria-live":"polite",children:n}),e.jsx("button",{type:"button","aria-label":`${t} +`,disabled:n>=a,onClick:()=>s(Math.min(a,n+1)),children:"+"})]})]})}function Sn({settings:t,onChange:n}){const{t:a}=x();return e.jsxs("section",{className:"agent-settings-grid","aria-label":a("agent.quality"),children:[e.jsx(te,{label:a("agent.generationStrategy"),value:t.generationStrategy,options:[{value:"auto",label:a("agent.generationStrategyAuto")},{value:"manual",label:a("agent.generationStrategyManual")}],onChange:s=>n({generationStrategy:s})}),e.jsx(te,{label:a("agent.quality"),value:t.quality,options:[{value:"low",label:"low"},{value:"medium",label:"medium"},{value:"high",label:"high"}],onChange:s=>n({quality:s})}),e.jsx(te,{label:a("agent.size"),value:t.size,options:[{value:"1024x1024",label:"1:1"},{value:"1536x1024",label:"3:2"},{value:"1024x1536",label:"2:3"},{value:"2048x2048",label:"2K"}],onChange:s=>n({size:s})}),e.jsx(te,{label:a("agent.format"),value:t.format,options:[{value:"png",label:"PNG"},{value:"jpeg",label:"JPEG"},{value:"webp",label:"WebP"}],onChange:s=>n({format:s})}),e.jsx(te,{label:a("agent.moderation"),value:t.moderation,options:[{value:"auto",label:"auto"},{value:"low",label:"low"}],onChange:s=>n({moderation:s})}),t.generationStrategy==="manual"?e.jsx(be,{label:a("agent.variantsCount"),value:t.variants,max:ve,onChange:s=>n({variants:s})}):e.jsx(be,{label:a("agent.maxAutoVariants"),value:t.maxAutoVariants,max:ve,onChange:s=>n({maxAutoVariants:s})}),e.jsx(be,{label:a("agent.parallelism"),value:t.parallelism,max:It,onChange:s=>n({parallelism:s})})]})}const _n=["image","library","forms","quality","model","queue"];function wn({activeTab:t,onChange:n}){const{t:a}=x();return e.jsx("div",{className:"agent-sidebar-tabs",role:"tablist","aria-label":a("agent.rightSidebar"),children:_n.map(s=>e.jsx("button",{type:"button",role:"tab",id:`agent-sidebar-tab-${s}`,"aria-controls":`agent-sidebar-panel-${s}`,className:t===s?"active":"","aria-selected":t===s,onClick:()=>n(s),children:a(`agent.sidebarTabs.${s}`)},s))})}function Oe({currentImage:t,images:n,contextTab:a,sidebarTab:s,queueItems:r,runSummary:u,settings:o,onContextTabChange:i,onSidebarTabChange:d,onImageSelect:l,onSettingsChange:h,onInsertPrompt:c,onCancelQueue:p,onRetryQueue:f}){const{t:v}=x(),S=C=>({id:`agent-sidebar-panel-${C}`,role:"tabpanel","aria-labelledby":`agent-sidebar-tab-${C}`});return e.jsxs(e.Fragment,{children:[e.jsx(wn,{activeTab:s,onChange:d}),s==="image"?e.jsx("div",{...S("image"),className:"agent-sidebar-panel",children:e.jsx(Ze,{currentImage:t,images:n,activeTab:a,onTabChange:i,onImageSelect:l})}):null,s==="library"?e.jsx("div",{...S("library"),className:"agent-sidebar-panel",children:e.jsx(tt,{mode:"library",onInsert:c})}):null,s==="forms"?e.jsx("div",{...S("forms"),className:"agent-sidebar-panel",children:e.jsx(vn,{onInsert:c})}):null,s==="quality"?e.jsxs("section",{...S("quality"),className:"agent-sidebar-panel agent-sidebar-section","aria-label":v("agent.quality"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:v("agent.quality")}),e.jsx("strong",{children:o.generationStrategy==="auto"?v("agent.generationStrategyAuto"):v("agent.generationStrategyManual")})]})}),e.jsx(Sn,{settings:o,onChange:h})]}):null,s==="model"?e.jsxs("section",{...S("model"),className:"agent-sidebar-panel agent-sidebar-section","aria-label":v("agent.modelSettings"),children:[e.jsx("header",{children:e.jsxs("div",{children:[e.jsx("span",{children:v("agent.modelSettings")}),e.jsx("strong",{children:o.model})]})}),e.jsx(Xe,{settings:o,onChange:h})]}):null,s==="queue"?e.jsx("div",{...S("queue"),className:"agent-sidebar-panel",children:e.jsx(et,{items:r,summary:u,onCancel:p,onRetry:f})}):null]})}const Nn=()=>{};function ze({overlay:t,onClose:n,...a}){const{t:s}=x(),r=ue(t===!0,n??Nn);return t?e.jsxs("div",{className:"agent-dialog agent-dialog--tools",role:"presentation",children:[e.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:n,"aria-label":s("agent.closeTools")}),e.jsxs("section",{ref:r,className:"agent-right-sidebar agent-right-sidebar--overlay",role:"dialog","aria-modal":"true","aria-label":s("agent.openTools"),children:[e.jsxs("header",{className:"agent-right-sidebar__overlay-header",children:[e.jsx("strong",{children:s("agent.openTools")}),e.jsx("button",{type:"button",onClick:n,"aria-label":s("agent.closeTools"),children:e.jsx(de,{size:17})})]}),e.jsx(Oe,{...a})]})]}):e.jsx("aside",{className:"agent-right-sidebar",children:e.jsx(Oe,{...a})})}function nt({summary:t}){const{t:n}=x();if(!t||t.status==="idle")return null;const a=t.status==="running"?n("agent.sessionRunning"):t.status==="queued"?n("agent.sessionQueued",{count:t.queuedCount}):n("agent.sessionError");return e.jsxs("span",{className:`agent-session-spinner agent-session-spinner--${t.status}`,"data-motion-essential":!0,"aria-label":a,title:a,children:[e.jsx("span",{"aria-hidden":"true"}),t.queuedCount>0?e.jsx("em",{children:t.queuedCount}):null]})}function Cn(t){const n=Math.max(1,Math.round((Date.now()-t)/6e4));if(n<60)return`${n}m`;const a=Math.round(n/60);return a<24?`${a}h`:`${Math.round(a/24)}d`}function kn({sessions:t,selectedId:n,imagesById:a,runSummaryBySession:s={},onSelect:r,onRename:u,onDelete:o}){const{t:i}=x();return e.jsx("div",{className:"agent-session-list",children:t.map(d=>{const l=d.lastImageId?a[d.lastImageId]:null;return e.jsxs("div",{className:`agent-session-row${d.id===n?" is-active":""}`,children:[e.jsxs("button",{type:"button","aria-current":d.id===n?"page":void 0,onClick:()=>r(d.id),children:[e.jsx("span",{className:"agent-session-row__thumb",children:l?e.jsx(Q,{src:l.thumbUrl??l.url,alt:"",iconSize:17}):e.jsx(B,{size:17})}),e.jsxs("span",{className:"agent-session-row__body",children:[e.jsx("strong",{children:d.title}),e.jsxs("span",{children:[i("agent.imageCount",{count:d.imageCount})," · ",Cn(d.updatedAt)]})]}),e.jsxs("span",{className:"agent-session-row__badges",children:[e.jsx(nt,{summary:s[d.id]}),d.webSearchEnabled?e.jsx("em",{title:i("agent.web"),children:"W"}):null,d.compacted?e.jsx("em",{title:i("agent.compacted"),children:"C"}):null]})]}),e.jsxs("div",{className:"agent-session-row__actions",children:[e.jsx("button",{type:"button",onClick:()=>u(d.id),"aria-label":i("agent.renameSession"),title:i("agent.renameSession"),children:e.jsx(Ot,{size:14})}),e.jsx("button",{type:"button",onClick:()=>o(d.id),"aria-label":i("agent.deleteSession"),title:i("agent.deleteSession"),children:e.jsx(Bt,{size:14})})]})]},d.id)})})}function In({open:t,sessions:n,selectedId:a,imagesById:s,runSummaryBySession:r,onClose:u,onCreate:o,onSelect:i,onRename:d,onDelete:l}){const{t:h}=x(),[c,p]=m.useState(""),f=m.useCallback(()=>u(),[u]),v=ue(t,f),S=m.useMemo(()=>{const C=c.trim().toLowerCase();return C?n.filter(q=>q.title.toLowerCase().includes(C)):n},[c,n]);return t?e.jsxs("div",{className:"agent-dialog agent-dialog--drawer",role:"presentation",children:[e.jsx("button",{type:"button",className:"agent-dialog__backdrop",onClick:u,"aria-label":h("agent.closeSessions")}),e.jsxs("section",{ref:v,className:"agent-session-drawer",role:"dialog","aria-modal":"true","aria-label":h("agent.sessions"),children:[e.jsxs("header",{children:[e.jsx("strong",{children:h("agent.sessions")}),e.jsx("button",{type:"button",onClick:u,"aria-label":h("agent.closeSessions"),children:e.jsx(de,{size:17})})]}),e.jsxs("button",{type:"button",className:"agent-sessions__create",onClick:o,children:[e.jsx(Ke,{size:16}),e.jsx("span",{children:h("agent.newSession")})]}),e.jsxs("label",{className:"agent-sessions__search",children:[e.jsx(Et,{size:15}),e.jsx("input",{value:c,onChange:C=>p(C.target.value),placeholder:h("agent.sessionSearch")})]}),e.jsx(kn,{sessions:S,selectedId:a,imagesById:s,runSummaryBySession:r,onSelect:i,onRename:d,onDelete:l})]})]}):null}function An({sessions:t,selectedId:n,imagesById:a,runSummaryBySession:s={},onCreate:r,onSelect:u,onOpenDrawer:o}){const{t:i}=x();return e.jsxs("aside",{className:"agent-rail","aria-label":i("agent.sessions"),children:[e.jsx("button",{type:"button",onClick:o,"aria-label":i("agent.openSessions"),title:i("agent.openSessions"),children:e.jsx(Ue,{size:17})}),e.jsx("button",{type:"button",onClick:r,"aria-label":i("agent.newSession"),title:i("agent.newSession"),children:e.jsx(Ke,{size:17})}),e.jsx("div",{className:"agent-rail__sessions",children:t.map(d=>{const l=d.lastImageId?a[d.lastImageId]:null,h=`${d.title} — ${i("agent.imageCount",{count:d.imageCount})}`;return e.jsxs("button",{type:"button",className:d.id===n?"is-active":"",onClick:()=>u(d.id),title:h,"aria-label":h,"aria-current":d.id===n?"true":void 0,children:[l?e.jsx(Q,{src:l.thumbUrl??l.url,alt:"",iconSize:17}):e.jsx(B,{size:17}),e.jsx(nt,{summary:s[d.id]}),d.compacted?e.jsx("span",{"aria-label":i("agent.compacted")}):null]},d.id)})})]})}function Tn({currentImage:t,images:n,onImageSelect:a,onOpenPanel:s}){const{t:r}=x(),u=m.useRef({}),o=m.useMemo(()=>n.findIndex(l=>l.id===t?.id),[t?.id,n]);m.useEffect(()=>{t?.id&&u.current[t.id]?.scrollIntoView({block:"nearest",inline:"nearest"})},[t?.id]);const i=m.useCallback(l=>{const h=n[l];h&&a(h.id)},[n,a]),d=m.useCallback(l=>{if(n.length===0)return;const h=o>=0?o:0;let c=null;(l.key==="ArrowLeft"||l.key==="ArrowUp")&&(c=Math.max(0,h-1)),(l.key==="ArrowRight"||l.key==="ArrowDown")&&(c=Math.min(n.length-1,h+1)),l.key==="Home"&&(c=0),l.key==="End"&&(c=n.length-1),!(c===null||c===h)&&(l.preventDefault(),i(c))},[o,n.length,i]);return e.jsxs("section",{className:"agent-stage","aria-label":r("agent.imagePane"),children:[e.jsxs("header",{className:"agent-pane-header",children:[e.jsxs("div",{className:"agent-pane-header__title",children:[e.jsx("span",{children:r("agent.imagePane")}),e.jsx("strong",{children:r("agent.currentImage")})]}),e.jsx("button",{type:"button",className:"agent-stage__tools",onClick:s,"aria-label":r("agent.openTools"),title:r("agent.openTools"),children:e.jsx(zt,{size:16})})]}),e.jsx("div",{className:"agent-stage__viewport",tabIndex:n.length>1?0:void 0,onKeyDown:d,"aria-label":n.length>1?r("agent.variants"):void 0,children:t?Se(t.url)?e.jsx(Ye,{image:t},t.id):e.jsx(Q,{src:t.url,alt:t.prompt??r("agent.imageAlt"),fallbackClassName:"agent-stage__empty",iconSize:34}):e.jsxs("div",{className:"agent-stage__empty",children:[e.jsx(B,{size:34}),e.jsx("span",{children:r("agent.noImage")}),e.jsx("small",{children:r("agent.stageEmptyHint")})]})}),e.jsxs("div",{className:"agent-stage__caption",children:[e.jsx("strong",{children:t?.filename??"-"}),e.jsx("span",{children:t?.prompt??t?.revisedPrompt??""})]}),e.jsx("div",{className:"agent-stage__filmstrip","aria-label":r("agent.variants"),onKeyDown:d,children:n.map(l=>e.jsx(F,{ref:h=>{u.current[l.id]=h},image:l,selected:l.id===t?.id,onSelect:a},l.id))})]})}function We({layoutMode:t,session:n,currentImage:a,activeJobCount:s,onOpenSessions:r,onOpenImage:u,onOpenQueue:o}){const{t:i}=x(),d=E(h=>h.setUIMode),l=t==="mobile-chat-image-sheet";return e.jsxs("header",{className:"agent-topbar",children:[e.jsxs("button",{type:"button",className:"agent-topbar__back",onClick:()=>d("classic"),"aria-label":i("agent.topbarBackToStudio"),title:i("agent.topbarBackToStudio"),children:[e.jsx(Pt,{size:18}),e.jsx("span",{children:i("agent.topbarStudio")})]}),e.jsx("button",{type:"button",className:"agent-topbar__icon",onClick:r,"aria-label":i("agent.openSessions"),title:i("agent.openSessions"),children:e.jsx(Ue,{size:18})}),e.jsxs("div",{className:"agent-topbar__title",children:[e.jsx("span",{children:i("agent.title")}),e.jsx("strong",{children:n?.title??i("agent.newSession")})]}),l?e.jsxs("div",{className:"agent-topbar__actions",children:[e.jsxs("button",{type:"button",className:"agent-topbar__queue",onClick:o,"aria-label":i("agent.topbarOpenQueue",{count:s}),title:i("agent.topbarOpenQueue",{count:s}),children:[e.jsx(Dt,{size:17}),e.jsx("span",{children:s})]}),e.jsx("button",{type:"button",className:"agent-topbar__image",onClick:u,"aria-label":i("agent.openImage"),title:i("agent.openImage"),children:a?e.jsx(Q,{src:a.thumbUrl??a.url,alt:"",iconSize:18}):e.jsx(B,{size:18})})]}):null]})}async function Ln({sessionId:t,files:n,importLocalImageToHistory:a,applyWorkspace:s}){for(const r of n){const u=await a(r),o=u?Ge(u):null;if(!o)continue;const i=await ie(t,{currentImage:o});s(i)}}const we="agent-local-",Mn=`${we}pending-`;let Qe=0;function Ne(t){return Qe+=1,`${we}${t}-${Date.now()}-${Qe}`}function at(t){return t.id.startsWith(we)}function oe(t){return t.id.startsWith(Mn)}function En(t,n){return{id:Ne("user"),role:"user",text:t,imageIds:[],webFindingIds:[],status:"complete",createdAt:n}}function qn(t,n){return{id:Ne("pending"),role:"assistant",text:t,imageIds:[],webFindingIds:[],status:"streaming",createdAt:n}}function Rn(t){return{id:Ne("error"),role:"assistant",text:t,imageIds:[],webFindingIds:[],status:"error",createdAt:Date.now()}}function $n({turns:t,queueItems:n,runSummary:a,localPendingCount:s}){const r=n.filter(i=>i.status==="failed").length,u=Pn(n),o=u?Dn(u):{};if(a?.status==="error"&&a.lastError)return{active:!0,status:"error",labelKey:"runError",queuedCount:a.queuedCount,runningCount:a.runningCount,failedCount:r,lastError:a.lastError};if(a?.status==="queued")return{active:!0,status:"queued",labelKey:"pendingQueued",queuedCount:a.queuedCount,runningCount:a.runningCount,failedCount:r,...o};if(a?.status==="running"){const i=u?.startedAt??u?.createdAt??null,d=t.some(l=>!at(l)&&l.role==="tool"&&(!i||(l.createdAt??0)>=i));return{active:!0,status:d?"running":"planning",labelKey:d?"pendingGenerating":"pendingPlanning",queuedCount:a.queuedCount,runningCount:a.runningCount,failedCount:r,...o}}return s>0?{active:!0,status:"planning",labelKey:"pendingPlanning",queuedCount:a?.queuedCount??0,runningCount:a?.runningCount??0,failedCount:r}:null}function Pn(t){return[...t].filter(n=>n.status==="running"||n.status==="queued").sort((n,a)=>n.status!==a.status?n.status==="running"?-1:1:(n.startedAt??n.createdAt)-(a.startedAt??a.createdAt))[0]??null}function Dn(t){return{startedAt:t.startedAt??null,progressStage:t.progressStage??null,jobKind:t.plan.mode==="video"||t.plan.videoParams?"video":"image",variantCount:t.plan.plannedVariants||t.plan.prompts.length||1}}function ye(){return{sessions:[],turnsBySession:{},imagesById:{},imageIdsBySession:{},selectedSessionId:null,currentImageId:null,allowedTools:["ima2.get_image_context","ima2.web_search","ima2.generate_image","ima2.generate_video","ima2.get_generation_errors"],manifest:null,queueBySession:{},runSummaryBySession:{}}}function Bn(t){const n=t.filename.endsWith(".mp4");return{image:t.url,url:t.url,filename:t.filename,thumb:t.thumbUrl??void 0,prompt:t.prompt??void 0,revisedPrompt:t.revisedPrompt??null,createdAt:t.createdAt,mediaType:n?"video":"image",kind:"agent"}}function On(t,n,a){return{...t,turnsBySession:{...t.turnsBySession,[n]:[...t.turnsBySession[n]??[],...a]}}}function zn(t,n,a,s){const r=t.turnsBySession[n]??[];return{...t,turnsBySession:{...t.turnsBySession,[n]:[...r.filter(u=>u.id!==a),Rn(s)]}}}function Wn(t,n,a){const s={...n.turnsBySession};for(const[r,u]of Object.entries(t.turnsBySession)){const o=s[r]??[],i=new Set(o.map(h=>h.id)),d=Math.max(0,...o.map(h=>h.createdAt??0)),l=u.filter(h=>a.has(h.id)||i.has(h.id)?!1:at(h)||h.status==="streaming"?!0:(h.createdAt??0)>=d);l.length>0&&(s[r]=[...o,...l])}return{...n,turnsBySession:s}}function Gn(){const{t}=x(),n=Mt(),a=E(g=>g.currentImage),s=E(g=>g.importLocalImageToHistory),r=E(g=>g.addHistoryItem),u=E(g=>g.selectHistory),o=E(g=>g.showToast),i=m.useRef(!1),d=m.useRef(0),l=m.useRef(0),h=m.useRef(null),[c,p]=m.useState(()=>ye()),[f,v]=m.useState(null),[S,C]=m.useState("image"),[q,G]=m.useState("image"),[K,T]=m.useState(null),[O,A]=m.useState(!1),[ge,U]=m.useState(!1),[H,V]=m.useState(!1),[b,M]=m.useState(!1),[st,R]=m.useState("reconnecting"),[he,me]=m.useState(null),z=m.useCallback(g=>g instanceof Error?g.message:String(g),[]),rt=m.useCallback(()=>M(!1),[]),L=m.useCallback(g=>{o(t("agent.workspaceActionFailed",{reason:z(g)}),!0)},[z,o,t]),J=m.useCallback(g=>{p({...ye(),...g}),v(g.selectedSessionId??null)},[]),ne=m.useCallback((g,j)=>{const y={...ye(),...g};p(_=>Wn(_,y,j)),v(g.selectedSessionId??null)},[]),$=m.useCallback(g=>{d.current+=1,J(g)},[J]),lt=m.useCallback((g,j)=>{d.current+=1,ne(g,j)},[ne]),ot=()=>{l.current+=1,R("generating")},it=()=>{l.current=Math.max(0,l.current-1),l.current===0&&R("ready")},ae=m.useCallback(async g=>{const j=++d.current;R("reconnecting"),me(null);const y=await qe(g);if(j!==d.current)return;if(y.sessions.length>0){J(y),R("ready");return}const _=await Re({title:t("agent.newSession"),currentImage:a});j===d.current&&(J(_),R("ready"))},[J,a,t]),Ce=m.useCallback(async g=>{const j=++d.current,y=await qe(g);j===d.current&&(ne(y,new Set),R("ready"))},[ne]);m.useEffect(()=>{i.current||(i.current=!0,ae().catch(g=>{me(z(g)),R("reconnecting")}))},[z,ae]);const X=c.sessions.find(g=>g.id===f)??null,Y=c.currentImageId?c.imagesById[c.currentImageId]??null:null,se=f?(c.imageIdsBySession[f]??[]).map(g=>c.imagesById[g]).filter(g=>!!g):[],pe=X?c.turnsBySession[X.id]??[]:[],ct=pe.filter(oe).length,ut=pe.filter(g=>!oe(g)),W=f?c.queueBySession[f]??[]:[],k=f?c.runSummaryBySession[f]:void 0,dt=W.filter(g=>g.status==="queued"||g.status==="running").length,gt=$n({turns:pe,queueItems:W,runSummary:k,localPendingCount:ct}),Z=$e(X?.generationSettings),ht=st==="reconnecting"?"reconnecting":l.current>0||k?.status==="queued"||k?.status==="running"?"generating":"ready",mt=n!=="mobile-chat-image-sheet",ke=n==="desktop-three-pane"||n==="desktop-rail",Ie=n==="tablet-stacked"||n==="mobile-chat-image-sheet",pt=n==="desktop-three-pane"||n==="desktop-rail";m.useEffect(()=>{const g=Object.keys(c.imagesById);if(!h.current){(g.length>0||c.sessions.length>0)&&(h.current=new Set(g));return}const j=h.current,y=g.filter(w=>!j.has(w)).map(w=>c.imagesById[w]).filter(w=>!!w);if(y.length===0)return;for(const w of g)j.add(w);const _=y.map(Bn);for(const w of _)r(w);const P=_.reduce((w,I)=>(I.createdAt??0)>(w.createdAt??0)?I:w);u(P)},[c.imagesById,c.sessions.length,r,u]),m.useEffect(()=>{p(g=>{if(l.current>0)return g;let j=!1;const y={...g.turnsBySession};for(const[_,P]of Object.entries(y)){if(P.filter(oe).length===0)continue;const I=g.runSummaryBySession[_];I?.status==="queued"||I?.status==="running"||(y[_]=P.filter(xe=>!oe(xe)),j=!0)}return j?{...g,turnsBySession:y}:g})},[c.turnsBySession,c.runSummaryBySession]),m.useEffect(()=>{if(!f)return;const g=k?.status==="queued"||k?.status==="running",j=window.setInterval(()=>{Ce(f).catch(()=>R("reconnecting"))},g?1500:4e3);return()=>window.clearInterval(j)},[Ce,f,k?.queuedCount,k?.runningCount,k?.status]);const Ae=g=>{A(!1),V(!1),ae(g).catch(L)},Te=()=>{Re({title:t("agent.newSession"),currentImage:null}).then($).catch(L)},ft=g=>{const j=c.sessions.find(_=>_.id===g),y=window.prompt(t("agent.renameSession"),j?.title??"");y?.trim()&&ie(g,{title:y.trim()}).then($).catch(L)},xt=g=>{const j=c.sessions.find(y=>y.id===g);!j||!window.confirm(t("agent.deleteConfirm",{title:j.title}))||wt(g).then($).catch(L)},re=g=>{if(!f)return;const j=$e({...Z,...g});p(y=>({...y,sessions:y.sessions.map(_=>_.id===f?{..._,generationSettings:j,webSearchEnabled:j.webSearchEnabled}:_)})),ie(f,{generationSettings:g}).then($).catch(L)},jt=g=>{re({webSearchEnabled:g})},ee=g=>{if(!f||c.currentImageId===g)return;const j=f;p(y=>({...y,currentImageId:g})),ie(j,{currentImageId:g}).then($).catch(L)},Le=g=>{T({id:Date.now(),text:g})},fe=g=>{Ct(g).then($).catch(L)},le=g=>{kt(g).then($).catch(L)},Me=k?.status==="error"?W.find(g=>g.status==="failed")?.id:void 0,bt=Me?()=>le(Me):void 0,yt=g=>{!f||g.length===0||Ln({sessionId:f,files:g,importLocalImageToHistory:s,applyWorkspace:$}).catch(L)},vt=g=>{if(!f)return;const j=f,y=Date.now(),_=En(g,y),P=qn(t("agent.pending"),y+1),w=new Set([_.id]);ot(),p(I=>On(I,j,[_,P])),Nt(j,g,Z).then(I=>lt(I.workspace,w)).catch(I=>{const Ee=z(I);p(xe=>zn(xe,j,P.id,Ee)),L(I)}).finally(it)};return he?e.jsxs("main",{className:`agent-workspace agent-workspace--${n} agent-workspace--boot-error`,"data-layout":n,"aria-label":t("agent.workspace"),children:[Ie?e.jsx(We,{layoutMode:n,session:null,currentImage:null,activeJobCount:0,onOpenSessions:()=>{},onOpenImage:()=>{},onOpenQueue:()=>{}}):null,e.jsxs("section",{className:"agent-workspace__boot-error",role:"alert",children:[e.jsx("strong",{children:t("agent.bootFailed")}),e.jsx("span",{title:he,children:he}),e.jsx("button",{type:"button",onClick:()=>{ae().catch(g=>me(z(g)))},children:t("agent.bootRetry")})]})]}):e.jsxs("main",{className:`agent-workspace agent-workspace--${n}`,"data-layout":n,"aria-label":t("agent.workspace"),children:[pt?e.jsx("div",{className:"agent-session-rail-wrap",children:e.jsx(An,{sessions:c.sessions,selectedId:f??"",imagesById:c.imagesById,runSummaryBySession:c.runSummaryBySession,onCreate:Te,onSelect:Ae,onOpenDrawer:()=>A(!0)})}):null,Ie?e.jsx(We,{layoutMode:n,session:X,currentImage:Y,activeJobCount:dt,onOpenSessions:()=>A(!0),onOpenImage:()=>U(!0),onOpenQueue:()=>V(!0)}):null,e.jsxs("div",{className:"agent-workspace__body",children:[e.jsx(cn,{session:X,turns:ut,imagesById:c.imagesById,currentImageId:c.currentImageId,runtimeStatus:ht,runProgress:gt,settings:Z,insertedPrompt:K,onSettingsChange:re,onOpenModelTab:()=>{G("model"),M(!0)},onWebSearchChange:jt,onAttachFiles:yt,onImageSelect:ee,onSend:vt,onRetryRun:bt}),ke?e.jsx(Tn,{currentImage:Y,images:se,onImageSelect:ee,onOpenPanel:()=>M(!0)}):mt?e.jsx(ze,{currentImage:Y,images:se,contextTab:S,sidebarTab:q,queueItems:W,runSummary:k,settings:Z,onContextTabChange:C,onSidebarTabChange:G,onImageSelect:ee,onSettingsChange:re,onInsertPrompt:Le,onCancelQueue:fe,onRetryQueue:le}):null]}),ke&&b?e.jsx(ze,{overlay:!0,onClose:rt,currentImage:Y,images:se,contextTab:S,sidebarTab:q,queueItems:W,runSummary:k,settings:Z,onContextTabChange:C,onSidebarTabChange:G,onImageSelect:ee,onSettingsChange:re,onInsertPrompt:Le,onCancelQueue:fe,onRetryQueue:le}):null,e.jsx(In,{open:O,sessions:c.sessions,selectedId:f??"",imagesById:c.imagesById,runSummaryBySession:c.runSummaryBySession,onClose:()=>A(!1),onCreate:Te,onSelect:Ae,onRename:ft,onDelete:xt}),e.jsx(mn,{open:ge,currentImage:Y,images:se,activeTab:S,onTabChange:C,onImageSelect:ee,onClose:()=>U(!1)}),e.jsx(yn,{open:H,items:W,summary:k,onCancel:fe,onRetry:le,onClose:()=>V(!1)})]})}export{Gn as AgentWorkspace};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SpriteRecipeWorkspace-B0fR6yXF.js","assets/index-Bj2sxDP3.js","assets/index-BnMUy9kc.css","assets/KeyingPanel-YkL9305F.js","assets/useAgentDialogFocus-BB6ds9jo.js"])))=>i.map(i=>d[i]);
2
- import{u as v,b as a,a as d,a6 as q,j as e,a7 as H,a5 as z,a8 as $,a9 as U,aa as Q}from"./index-Bj2sxDP3.js";import{K as Z,A as J}from"./KeyingPanel-YkL9305F.js";const X=48;function Y({selectedAssetId:t,onPreview:u}){const{t:i}=v(),l=a(r=>r.selectedProjectId),o=a(r=>r.assetGenItems.length),[b,m]=d.useState([]),[g,c]=d.useState(!1);return d.useEffect(()=>{let r=!1;return q({kind:null,folderId:l,tag:null,q:"",limit:X}).then(p=>{r||(m(p.assets.filter(h=>h.filePath&&(h.kind==="image"||h.kind==="video"))),c(!1))}).catch(()=>{r||c(!0)}),()=>{r=!0}},[l,o]),e.jsxs("aside",{className:"assetgen-rail","aria-label":i("assetGen.railTitle"),children:[e.jsx("h2",{className:"assetgen-rail__title",children:i("assetGen.railTitle")}),g?e.jsx("p",{className:"assetgen-rail__empty",children:i("assetGen.railError")}):b.length===0?e.jsx("p",{className:"assetgen-rail__empty",children:i("assetGen.railEmpty")}):e.jsx("div",{className:"assetgen-rail__list",role:"listbox","aria-label":i("assetGen.railTitle"),children:b.map(r=>{const p=r.filePath?H(r.filePath):null;if(!p)return null;const h=t===r.id;return e.jsxs("button",{type:"button",role:"option","aria-selected":h,className:`assetgen-rail__tile${h?" is-selected":""}`,title:r.name,onClick:()=>u(z(r),r.id),children:[r.kind==="video"?e.jsx("video",{src:p,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):e.jsx("img",{src:p,alt:"",loading:"lazy",decoding:"async"}),e.jsx("span",{className:"assetgen-rail__name",children:r.name})]},r.id)})})]})}const ee=[{value:"chroma-green",swatch:"#00c853",labelKey:"assetGen.bgChroma"},{value:"white",swatch:"#ffffff",labelKey:"assetGen.bgWhite"},{value:"black",swatch:"#111111",labelKey:"assetGen.bgBlack"}];function se(){const{t}=v(),u=a(l=>l.assetGenBackground),i=a(l=>l.setAssetGenBackground);return e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-bg-label",children:t("assetGen.background")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-bg-label",children:ee.map(l=>e.jsxs("button",{type:"button",className:u===l.value?"is-active":"","aria-pressed":u===l.value,onClick:()=>i(l.value),children:[e.jsx("span",{className:"assetgen-bg-picker__swatch",style:{background:l.swatch},"aria-hidden":"true"}),t(l.labelKey)]},l.value))}),e.jsx("p",{className:"assetgen-field__hint",children:t("assetGen.backgroundHint")})]})}const te=[{value:"oauth",labelKey:"assetGen.modelGpt"},{value:"grok",labelKey:"assetGen.modelGrok"}];function ae(){const{t}=v(),u=a(o=>o.assetGenProvider),i=a(o=>o.setAssetGenProvider),l=u==="grok"||u==="grok-api"?"grok":"oauth";return e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-model-label",children:t("assetGen.model")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-model-label",children:te.map(o=>e.jsx("button",{type:"button",className:l===o.value?"is-active":"","aria-pressed":l===o.value,onClick:()=>i(o.value),children:t(o.labelKey)},o.value))})]})}function ne({onClose:t,onSelect:u}){const{t:i}=v(),l=a(c=>c.assetsFolders),[o,b]=d.useState(""),m=d.useRef(null);d.useEffect(()=>{m.current?.focus();const c=r=>{r.key==="Escape"&&t()};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[t]);const g=d.useMemo(()=>{const c=l.filter(p=>p.parentId===null),r=o.trim().toLowerCase();return r?c.filter(p=>p.name.toLowerCase().includes(r)):c},[l,o]);return e.jsx("div",{className:"assetgen-popup-backdrop",onClick:t,children:e.jsxs("div",{className:"assetgen-popup",role:"dialog","aria-modal":"true","aria-label":i("project.search"),onClick:c=>c.stopPropagation(),children:[e.jsx("input",{ref:m,type:"search",value:o,placeholder:i("project.searchPlaceholder"),"aria-label":i("project.search"),onChange:c=>b(c.target.value)}),e.jsxs("ul",{role:"listbox","aria-label":i("project.select"),children:[e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{u(null),t()},children:i("project.unassigned")})}),g.map(c=>e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{u(c.id),t()},children:c.name})},c.id)),g.length===0&&o.trim()?e.jsx("li",{className:"assetgen-popup__empty",children:i("project.searchEmpty")}):null]}),e.jsx("button",{type:"button",className:"assetgen-popup__close",onClick:t,children:i("project.close")})]})})}function le(){return e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"})})}function re(){const{t}=v(),u=a(n=>n.assetsFolders),i=a(n=>n.selectedProjectId),l=a(n=>n.setSelectedProject),o=a(n=>n.loadAssetFolders),b=a(n=>n.createAssetFolder),[m,g]=d.useState(!1),[c,r]=d.useState(!1),p=d.useRef(null);d.useEffect(()=>{o()},[o]),d.useEffect(()=>{i&&u.length>0&&!u.some(n=>n.id===i)&&l(null)},[u,i,l]),d.useEffect(()=>{if(!m)return;const n=j=>{p.current&&!p.current.contains(j.target)&&g(!1)},k=j=>{j.key==="Escape"&&g(!1)};return window.addEventListener("mousedown",n),window.addEventListener("keydown",k),()=>{window.removeEventListener("mousedown",n),window.removeEventListener("keydown",k)}},[m]);const h=u.filter(n=>n.parentId===null),_=h.find(n=>n.id===i),G=async()=>{const n=window.prompt(t("project.newPrompt"));if(!n||!n.trim())return;if(await b(n.trim(),null)){await o();const j=a.getState().assetsFolders.find(N=>N.parentId===null&&N.name===n.trim());j&&l(j.id)}g(!1)};return e.jsxs("div",{className:"assetgen-field assetgen-project",ref:p,children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-project-label",children:t("project.select")}),e.jsxs("button",{type:"button",className:"assetgen-project__trigger","aria-haspopup":"listbox","aria-expanded":m,"aria-labelledby":"assetgen-project-label",onClick:()=>g(n=>!n),children:[e.jsx(le,{}),_?_.name:t("project.unassigned"),e.jsx("span",{className:"assetgen-project__caret","aria-hidden":"true",children:"▾"})]}),m?e.jsxs("ul",{className:"assetgen-project__menu",role:"listbox","aria-labelledby":"assetgen-project-label",children:[e.jsx("li",{children:e.jsx("button",{type:"button","aria-selected":i===null,onClick:()=>{l(null),g(!1)},children:t("project.unassigned")})}),h.map(n=>e.jsx("li",{children:e.jsx("button",{type:"button","aria-selected":i===n.id,onClick:()=>{l(n.id),g(!1)},children:n.name})},n.id)),e.jsx("li",{className:"assetgen-project__menu-divider","aria-hidden":"true"}),e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{G()},children:t("project.new")})}),e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{g(!1),r(!0)},children:t("project.search")})})]}):null,c?e.jsx(ne,{onClose:()=>r(!1),onSelect:n=>l(n)}):null]})}const ie=d.lazy(()=>Q(()=>import("./SpriteRecipeWorkspace-B0fR6yXF.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>({default:t.SpriteRecipeWorkspace})));function oe(){const{t}=v(),u=a(s=>s.assetGenPrompt),i=a(s=>s.setAssetGenPrompt),l=a(s=>s.assetGenKind),o=a(s=>s.setAssetGenKind),b=a(s=>s.assetGenProvider),m=a(s=>s.assetGenVideoDuration),g=a(s=>s.setAssetGenVideoDuration),c=a(s=>s.assetGenVideoResolution),r=a(s=>s.setAssetGenVideoResolution),p=a(s=>s.assetGenVideoAspect),h=a(s=>s.setAssetGenVideoAspect),_=a(s=>s.activeGenerations),G=a(s=>s.assetGenItems),n=a(s=>s.generateAssetGen),k=a(s=>s.assetGenSaveFailures),j=a(s=>s.retryAssetGenSave),N=a(s=>s.setKeyingTarget),C=a(s=>s.assetGenLastError),L=a(s=>s.setAssetGenLastError),R=a(s=>s.setUIMode),f=a(s=>s.assetGenWorkflow),A=a(s=>s.setAssetGenWorkflow),F=$(),[E,I]=d.useState(null),[T,S]=d.useState(null),V=d.useCallback(()=>{I(null),S(null)},[]),D=d.useCallback((s,x)=>{S(x),I(s)},[]),O=d.useCallback(()=>{document.getElementById("assetgen-prompt")?.focus()},[]),w=b==="grok"||b==="grok-api",y=l==="video"&&!w?"image":l,W=u.trim().length>0,K=e.jsxs("div",{className:"assetgen-workflow-tabs",role:"tablist","aria-label":t("sprite.tabs.label"),onKeyDown:F,children:[e.jsx("button",{type:"button",role:"tab","aria-selected":f==="generate",tabIndex:f==="generate"?0:-1,onClick:()=>A("generate"),children:t("sprite.tabs.generate")}),e.jsx("button",{type:"button",role:"tab","aria-selected":f==="sprite",tabIndex:f==="sprite"?0:-1,onClick:()=>A("sprite"),children:t("sprite.tabs.sprite")})]});return f==="sprite"?e.jsxs("section",{className:"assetgen-workspace","aria-labelledby":"assetgen-title",children:[e.jsxs("aside",{className:"assetgen-form",children:[e.jsx("h1",{id:"assetgen-title",children:t("sprite.title")}),e.jsx("p",{className:"assetgen-form__lede",children:t("sprite.lede")}),K]}),e.jsx("main",{className:"assetgen-results",children:e.jsx(d.Suspense,{fallback:e.jsx("p",{role:"status",children:t("sprite.loading")}),children:e.jsx(ie,{})})})]}):e.jsxs("section",{className:"assetgen-workspace","aria-labelledby":"assetgen-title",children:[e.jsxs("aside",{className:"assetgen-form",children:[e.jsx("h1",{id:"assetgen-title",children:t("assetGen.title")}),e.jsx("p",{className:"assetgen-form__lede",children:t("assetGen.lede")}),K,e.jsx(re,{}),e.jsxs("div",{className:"assetgen-field",children:[e.jsx("label",{className:"assetgen-field__label",htmlFor:"assetgen-prompt",children:t("assetGen.prompt")}),e.jsx("textarea",{id:"assetgen-prompt",value:u,rows:4,placeholder:t("assetGen.promptPlaceholder"),onChange:s=>i(s.target.value)})]}),e.jsx(se,{}),e.jsx(ae,{}),e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-kind-label",children:t("assetGen.kind")}),e.jsxs("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-kind-label",children:[e.jsx("button",{type:"button",className:y==="image"?"is-active":"","aria-pressed":y==="image",onClick:()=>o("image"),children:t("assetGen.kindImage")}),e.jsx("button",{type:"button",className:y==="video"?"is-active":"","aria-pressed":y==="video",disabled:!w,title:w?void 0:t("assetGen.videoGrokOnly"),onClick:()=>o("video"),children:t("assetGen.kindVideo")})]}),w?null:e.jsx("p",{className:"assetgen-field__hint",children:t("assetGen.videoGrokOnly")})]}),y==="video"?e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-video-label",children:t("assetGen.videoOptions")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoDuration"),children:[3,5,8].map(s=>e.jsxs("button",{type:"button",className:m===s?"is-active":"","aria-pressed":m===s,onClick:()=>g(s),children:[s,"s"]},s))}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoResolution"),children:["480p","720p"].map(s=>e.jsx("button",{type:"button",className:c===s?"is-active":"","aria-pressed":c===s,onClick:()=>r(s),children:s},s))}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoAspect"),children:["1:1","16:9","9:16"].map(s=>e.jsx("button",{type:"button",className:p===s?"is-active":"","aria-pressed":p===s,onClick:()=>h(s),children:s},s))})]}):null,e.jsx("button",{type:"button",className:"assetgen-generate",disabled:!W,onClick:()=>{n()},children:_>0?t("assetGen.generating"):t("assetGen.generate")}),e.jsx(U,{})]}),e.jsxs("main",{className:"assetgen-results",children:[e.jsxs("div",{className:"assetgen-results__main",children:[C?e.jsxs("div",{className:"assetgen-error",role:"alert",children:[e.jsxs("div",{className:"assetgen-error__text",children:[e.jsx("strong",{children:t("assetGen.errorTitle")}),e.jsx("span",{children:C}),e.jsx("span",{className:"assetgen-error__hint",children:t("assetGen.errorHint")})]}),e.jsx("button",{type:"button",className:"assetgen-error__dismiss",onClick:()=>L(null),children:t("assetGen.errorDismiss")})]}):null,G.length===0?e.jsxs("div",{className:"assetgen-empty",children:[e.jsx("h2",{children:t("assetGen.emptyTitle")}),e.jsx("p",{children:t("assetGen.emptyBody")}),e.jsx("button",{type:"button",className:"assetgen-empty__cta",onClick:O,children:t("assetGen.emptyCta")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"assetgen-saved-hint",children:[t("assetGen.savedHint")," ",e.jsx("button",{type:"button",className:"assetgen-saved-hint__link",onClick:()=>R("assets"),children:t("assetGen.savedLink")})]}),e.jsx("div",{className:"assetgen-grid",children:G.map(s=>{const x=s.kind==="edit",P=s.mediaType==="video",M=t(P?"assetGen.videoFallback":"assetGen.imageFallback"),B=t(P?"assetGen.previewVideo":"assetGen.previewImage",{prompt:s.prompt?.trim()||M});return e.jsxs("figure",{className:`assetgen-tile${x?" is-keyed":""}`,children:[x?e.jsx("span",{className:"assetgen-tile__badge",children:t("keying.resultBadge")}):null,e.jsxs("button",{type:"button",className:"assetgen-tile__media","aria-label":B,onClick:()=>I(s),children:[P?e.jsx("video",{src:s.url||s.image,poster:s.thumb||void 0,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):e.jsx("img",{src:s.url||s.image,alt:"",loading:"lazy"}),e.jsx("span",{className:"assetgen-tile__open-hint","aria-hidden":"true",children:t(P?"assetGen.openHintVideo":"assetGen.openHintImage")})]}),e.jsx("figcaption",{title:s.prompt,children:s.prompt}),x?null:e.jsx("button",{type:"button",className:"assetgen-tile__key",onClick:()=>N(s),children:t("keying.open")}),!x&&s.requestId&&k.includes(s.requestId)?e.jsx("button",{type:"button",className:"assetgen-tile__retry",onClick:()=>{j(s.requestId)},children:t("project.saveRetry")}):null]},`${s.requestId}-${s.filename??s.createdAt}`)})})]})]}),e.jsx(Y,{selectedAssetId:T,onPreview:D})]}),e.jsx(Z,{}),E?e.jsx(J,{item:E,onClose:V}):null]})}const pe=Object.freeze(Object.defineProperty({__proto__:null,AssetGenWorkspace:oe},Symbol.toStringTag,{value:"Module"}));export{pe as A,re as P};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SpriteRecipeWorkspace-HgacgO0x.js","assets/index-BqFlxfzT.js","assets/index-waPOg2eb.css","assets/KeyingPanel-BY_xV317.js","assets/useAgentDialogFocus-DYjA7lCJ.js"])))=>i.map(i=>d[i]);
2
+ import{u as v,b as a,a as d,a6 as q,j as e,a7 as H,a5 as z,a8 as $,a9 as U,aa as Q}from"./index-BqFlxfzT.js";import{K as Z,A as J}from"./KeyingPanel-BY_xV317.js";const X=48;function Y({selectedAssetId:t,onPreview:u}){const{t:i}=v(),l=a(r=>r.selectedProjectId),o=a(r=>r.assetGenItems.length),[b,m]=d.useState([]),[g,c]=d.useState(!1);return d.useEffect(()=>{let r=!1;return q({kind:null,folderId:l,tag:null,q:"",limit:X}).then(p=>{r||(m(p.assets.filter(h=>h.filePath&&(h.kind==="image"||h.kind==="video"))),c(!1))}).catch(()=>{r||c(!0)}),()=>{r=!0}},[l,o]),e.jsxs("aside",{className:"assetgen-rail","aria-label":i("assetGen.railTitle"),children:[e.jsx("h2",{className:"assetgen-rail__title",children:i("assetGen.railTitle")}),g?e.jsx("p",{className:"assetgen-rail__empty",children:i("assetGen.railError")}):b.length===0?e.jsx("p",{className:"assetgen-rail__empty",children:i("assetGen.railEmpty")}):e.jsx("div",{className:"assetgen-rail__list",role:"listbox","aria-label":i("assetGen.railTitle"),children:b.map(r=>{const p=r.filePath?H(r.filePath):null;if(!p)return null;const h=t===r.id;return e.jsxs("button",{type:"button",role:"option","aria-selected":h,className:`assetgen-rail__tile${h?" is-selected":""}`,title:r.name,onClick:()=>u(z(r),r.id),children:[r.kind==="video"?e.jsx("video",{src:p,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):e.jsx("img",{src:p,alt:"",loading:"lazy",decoding:"async"}),e.jsx("span",{className:"assetgen-rail__name",children:r.name})]},r.id)})})]})}const ee=[{value:"chroma-green",swatch:"#00c853",labelKey:"assetGen.bgChroma"},{value:"white",swatch:"#ffffff",labelKey:"assetGen.bgWhite"},{value:"black",swatch:"#111111",labelKey:"assetGen.bgBlack"}];function se(){const{t}=v(),u=a(l=>l.assetGenBackground),i=a(l=>l.setAssetGenBackground);return e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-bg-label",children:t("assetGen.background")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-bg-label",children:ee.map(l=>e.jsxs("button",{type:"button",className:u===l.value?"is-active":"","aria-pressed":u===l.value,onClick:()=>i(l.value),children:[e.jsx("span",{className:"assetgen-bg-picker__swatch",style:{background:l.swatch},"aria-hidden":"true"}),t(l.labelKey)]},l.value))}),e.jsx("p",{className:"assetgen-field__hint",children:t("assetGen.backgroundHint")})]})}const te=[{value:"oauth",labelKey:"assetGen.modelGpt"},{value:"grok",labelKey:"assetGen.modelGrok"}];function ae(){const{t}=v(),u=a(o=>o.assetGenProvider),i=a(o=>o.setAssetGenProvider),l=u==="grok"||u==="grok-api"?"grok":"oauth";return e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-model-label",children:t("assetGen.model")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-model-label",children:te.map(o=>e.jsx("button",{type:"button",className:l===o.value?"is-active":"","aria-pressed":l===o.value,onClick:()=>i(o.value),children:t(o.labelKey)},o.value))})]})}function ne({onClose:t,onSelect:u}){const{t:i}=v(),l=a(c=>c.assetsFolders),[o,b]=d.useState(""),m=d.useRef(null);d.useEffect(()=>{m.current?.focus();const c=r=>{r.key==="Escape"&&t()};return window.addEventListener("keydown",c),()=>window.removeEventListener("keydown",c)},[t]);const g=d.useMemo(()=>{const c=l.filter(p=>p.parentId===null),r=o.trim().toLowerCase();return r?c.filter(p=>p.name.toLowerCase().includes(r)):c},[l,o]);return e.jsx("div",{className:"assetgen-popup-backdrop",onClick:t,children:e.jsxs("div",{className:"assetgen-popup",role:"dialog","aria-modal":"true","aria-label":i("project.search"),onClick:c=>c.stopPropagation(),children:[e.jsx("input",{ref:m,type:"search",value:o,placeholder:i("project.searchPlaceholder"),"aria-label":i("project.search"),onChange:c=>b(c.target.value)}),e.jsxs("ul",{role:"listbox","aria-label":i("project.select"),children:[e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{u(null),t()},children:i("project.unassigned")})}),g.map(c=>e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{u(c.id),t()},children:c.name})},c.id)),g.length===0&&o.trim()?e.jsx("li",{className:"assetgen-popup__empty",children:i("project.searchEmpty")}):null]}),e.jsx("button",{type:"button",className:"assetgen-popup__close",onClick:t,children:i("project.close")})]})})}function le(){return e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"})})}function re(){const{t}=v(),u=a(n=>n.assetsFolders),i=a(n=>n.selectedProjectId),l=a(n=>n.setSelectedProject),o=a(n=>n.loadAssetFolders),b=a(n=>n.createAssetFolder),[m,g]=d.useState(!1),[c,r]=d.useState(!1),p=d.useRef(null);d.useEffect(()=>{o()},[o]),d.useEffect(()=>{i&&u.length>0&&!u.some(n=>n.id===i)&&l(null)},[u,i,l]),d.useEffect(()=>{if(!m)return;const n=j=>{p.current&&!p.current.contains(j.target)&&g(!1)},k=j=>{j.key==="Escape"&&g(!1)};return window.addEventListener("mousedown",n),window.addEventListener("keydown",k),()=>{window.removeEventListener("mousedown",n),window.removeEventListener("keydown",k)}},[m]);const h=u.filter(n=>n.parentId===null),_=h.find(n=>n.id===i),G=async()=>{const n=window.prompt(t("project.newPrompt"));if(!n||!n.trim())return;if(await b(n.trim(),null)){await o();const j=a.getState().assetsFolders.find(N=>N.parentId===null&&N.name===n.trim());j&&l(j.id)}g(!1)};return e.jsxs("div",{className:"assetgen-field assetgen-project",ref:p,children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-project-label",children:t("project.select")}),e.jsxs("button",{type:"button",className:"assetgen-project__trigger","aria-haspopup":"listbox","aria-expanded":m,"aria-labelledby":"assetgen-project-label",onClick:()=>g(n=>!n),children:[e.jsx(le,{}),_?_.name:t("project.unassigned"),e.jsx("span",{className:"assetgen-project__caret","aria-hidden":"true",children:"▾"})]}),m?e.jsxs("ul",{className:"assetgen-project__menu",role:"listbox","aria-labelledby":"assetgen-project-label",children:[e.jsx("li",{children:e.jsx("button",{type:"button","aria-selected":i===null,onClick:()=>{l(null),g(!1)},children:t("project.unassigned")})}),h.map(n=>e.jsx("li",{children:e.jsx("button",{type:"button","aria-selected":i===n.id,onClick:()=>{l(n.id),g(!1)},children:n.name})},n.id)),e.jsx("li",{className:"assetgen-project__menu-divider","aria-hidden":"true"}),e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{G()},children:t("project.new")})}),e.jsx("li",{children:e.jsx("button",{type:"button",onClick:()=>{g(!1),r(!0)},children:t("project.search")})})]}):null,c?e.jsx(ne,{onClose:()=>r(!1),onSelect:n=>l(n)}):null]})}const ie=d.lazy(()=>Q(()=>import("./SpriteRecipeWorkspace-HgacgO0x.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>({default:t.SpriteRecipeWorkspace})));function oe(){const{t}=v(),u=a(s=>s.assetGenPrompt),i=a(s=>s.setAssetGenPrompt),l=a(s=>s.assetGenKind),o=a(s=>s.setAssetGenKind),b=a(s=>s.assetGenProvider),m=a(s=>s.assetGenVideoDuration),g=a(s=>s.setAssetGenVideoDuration),c=a(s=>s.assetGenVideoResolution),r=a(s=>s.setAssetGenVideoResolution),p=a(s=>s.assetGenVideoAspect),h=a(s=>s.setAssetGenVideoAspect),_=a(s=>s.activeGenerations),G=a(s=>s.assetGenItems),n=a(s=>s.generateAssetGen),k=a(s=>s.assetGenSaveFailures),j=a(s=>s.retryAssetGenSave),N=a(s=>s.setKeyingTarget),C=a(s=>s.assetGenLastError),L=a(s=>s.setAssetGenLastError),R=a(s=>s.setUIMode),f=a(s=>s.assetGenWorkflow),A=a(s=>s.setAssetGenWorkflow),F=$(),[E,I]=d.useState(null),[T,S]=d.useState(null),V=d.useCallback(()=>{I(null),S(null)},[]),D=d.useCallback((s,x)=>{S(x),I(s)},[]),O=d.useCallback(()=>{document.getElementById("assetgen-prompt")?.focus()},[]),w=b==="grok"||b==="grok-api",y=l==="video"&&!w?"image":l,W=u.trim().length>0,K=e.jsxs("div",{className:"assetgen-workflow-tabs",role:"tablist","aria-label":t("sprite.tabs.label"),onKeyDown:F,children:[e.jsx("button",{type:"button",role:"tab","aria-selected":f==="generate",tabIndex:f==="generate"?0:-1,onClick:()=>A("generate"),children:t("sprite.tabs.generate")}),e.jsx("button",{type:"button",role:"tab","aria-selected":f==="sprite",tabIndex:f==="sprite"?0:-1,onClick:()=>A("sprite"),children:t("sprite.tabs.sprite")})]});return f==="sprite"?e.jsxs("section",{className:"assetgen-workspace","aria-labelledby":"assetgen-title",children:[e.jsxs("aside",{className:"assetgen-form",children:[e.jsx("h1",{id:"assetgen-title",children:t("sprite.title")}),e.jsx("p",{className:"assetgen-form__lede",children:t("sprite.lede")}),K]}),e.jsx("main",{className:"assetgen-results",children:e.jsx(d.Suspense,{fallback:e.jsx("p",{role:"status",children:t("sprite.loading")}),children:e.jsx(ie,{})})})]}):e.jsxs("section",{className:"assetgen-workspace","aria-labelledby":"assetgen-title",children:[e.jsxs("aside",{className:"assetgen-form",children:[e.jsx("h1",{id:"assetgen-title",children:t("assetGen.title")}),e.jsx("p",{className:"assetgen-form__lede",children:t("assetGen.lede")}),K,e.jsx(re,{}),e.jsxs("div",{className:"assetgen-field",children:[e.jsx("label",{className:"assetgen-field__label",htmlFor:"assetgen-prompt",children:t("assetGen.prompt")}),e.jsx("textarea",{id:"assetgen-prompt",value:u,rows:4,placeholder:t("assetGen.promptPlaceholder"),onChange:s=>i(s.target.value)})]}),e.jsx(se,{}),e.jsx(ae,{}),e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-kind-label",children:t("assetGen.kind")}),e.jsxs("div",{className:"assetgen-bg-picker",role:"group","aria-labelledby":"assetgen-kind-label",children:[e.jsx("button",{type:"button",className:y==="image"?"is-active":"","aria-pressed":y==="image",onClick:()=>o("image"),children:t("assetGen.kindImage")}),e.jsx("button",{type:"button",className:y==="video"?"is-active":"","aria-pressed":y==="video",disabled:!w,title:w?void 0:t("assetGen.videoGrokOnly"),onClick:()=>o("video"),children:t("assetGen.kindVideo")})]}),w?null:e.jsx("p",{className:"assetgen-field__hint",children:t("assetGen.videoGrokOnly")})]}),y==="video"?e.jsxs("div",{className:"assetgen-field",children:[e.jsx("span",{className:"assetgen-field__label",id:"assetgen-video-label",children:t("assetGen.videoOptions")}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoDuration"),children:[3,5,8].map(s=>e.jsxs("button",{type:"button",className:m===s?"is-active":"","aria-pressed":m===s,onClick:()=>g(s),children:[s,"s"]},s))}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoResolution"),children:["480p","720p"].map(s=>e.jsx("button",{type:"button",className:c===s?"is-active":"","aria-pressed":c===s,onClick:()=>r(s),children:s},s))}),e.jsx("div",{className:"assetgen-bg-picker",role:"group","aria-label":t("assetGen.videoAspect"),children:["1:1","16:9","9:16"].map(s=>e.jsx("button",{type:"button",className:p===s?"is-active":"","aria-pressed":p===s,onClick:()=>h(s),children:s},s))})]}):null,e.jsx("button",{type:"button",className:"assetgen-generate",disabled:!W,onClick:()=>{n()},children:_>0?t("assetGen.generating"):t("assetGen.generate")}),e.jsx(U,{})]}),e.jsxs("main",{className:"assetgen-results",children:[e.jsxs("div",{className:"assetgen-results__main",children:[C?e.jsxs("div",{className:"assetgen-error",role:"alert",children:[e.jsxs("div",{className:"assetgen-error__text",children:[e.jsx("strong",{children:t("assetGen.errorTitle")}),e.jsx("span",{children:C}),e.jsx("span",{className:"assetgen-error__hint",children:t("assetGen.errorHint")})]}),e.jsx("button",{type:"button",className:"assetgen-error__dismiss",onClick:()=>L(null),children:t("assetGen.errorDismiss")})]}):null,G.length===0?e.jsxs("div",{className:"assetgen-empty",children:[e.jsx("h2",{children:t("assetGen.emptyTitle")}),e.jsx("p",{children:t("assetGen.emptyBody")}),e.jsx("button",{type:"button",className:"assetgen-empty__cta",onClick:O,children:t("assetGen.emptyCta")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"assetgen-saved-hint",children:[t("assetGen.savedHint")," ",e.jsx("button",{type:"button",className:"assetgen-saved-hint__link",onClick:()=>R("assets"),children:t("assetGen.savedLink")})]}),e.jsx("div",{className:"assetgen-grid",children:G.map(s=>{const x=s.kind==="edit",P=s.mediaType==="video",M=t(P?"assetGen.videoFallback":"assetGen.imageFallback"),B=t(P?"assetGen.previewVideo":"assetGen.previewImage",{prompt:s.prompt?.trim()||M});return e.jsxs("figure",{className:`assetgen-tile${x?" is-keyed":""}`,children:[x?e.jsx("span",{className:"assetgen-tile__badge",children:t("keying.resultBadge")}):null,e.jsxs("button",{type:"button",className:"assetgen-tile__media","aria-label":B,onClick:()=>I(s),children:[P?e.jsx("video",{src:s.url||s.image,poster:s.thumb||void 0,muted:!0,playsInline:!0,preload:"metadata","aria-hidden":"true"}):e.jsx("img",{src:s.url||s.image,alt:"",loading:"lazy"}),e.jsx("span",{className:"assetgen-tile__open-hint","aria-hidden":"true",children:t(P?"assetGen.openHintVideo":"assetGen.openHintImage")})]}),e.jsx("figcaption",{title:s.prompt,children:s.prompt}),x?null:e.jsx("button",{type:"button",className:"assetgen-tile__key",onClick:()=>N(s),children:t("keying.open")}),!x&&s.requestId&&k.includes(s.requestId)?e.jsx("button",{type:"button",className:"assetgen-tile__retry",onClick:()=>{j(s.requestId)},children:t("project.saveRetry")}):null]},`${s.requestId}-${s.filename??s.createdAt}`)})})]})]}),e.jsx(Y,{selectedAssetId:T,onPreview:D})]}),e.jsx(Z,{}),E?e.jsx(J,{item:E,onClose:V}):null]})}const pe=Object.freeze(Object.defineProperty({__proto__:null,AssetGenWorkspace:oe},Symbol.toStringTag,{value:"Module"}));export{pe as A,re as P};
@@ -1 +1 @@
1
- import{u as E,b as j,a as d,j as s,T as Q,X as H,m as ce,Y as ue,Z as me,_ as he,$ as fe,o as pe,a0 as ge,a1 as xe,a2 as be,a3 as ve,F as je,s as ye,p as _e,t as we,a4 as ke,a5 as Ne}from"./index-Bj2sxDP3.js";import{K as Ae,A as Se}from"./KeyingPanel-YkL9305F.js";import"./useAgentDialogFocus-BB6ds9jo.js";function Ee({folder:e,depth:n}){const{t:r}=E(),a=j(t=>t.assetsFilters.folderId),m=j(t=>t.setAssetsFilters),g=j(t=>t.renameAssetFolder),f=j(t=>t.deleteAssetFolder),o=j(t=>t.showToast),[l,x]=d.useState(!1),[y,p]=d.useState(e.name),[b,v]=d.useState(!1),k=a===e.id;async function h(){const t=y.trim();if(!t||t===e.name){p(e.name),x(!1);return}await g(e.id,t)||o(r("assets.actionFailed"),!0),x(!1)}async function u(){if(!b){v(!0);return}await f(e.id)||o(r("assets.actionFailed"),!0),v(!1)}return s.jsxs("div",{className:"assets-folder-row",style:{"--folder-depth":n},children:[l?s.jsx("input",{className:"assets-folder-input",value:y,autoFocus:!0,"aria-label":r("assets.renameFolder"),onChange:t=>p(t.target.value),onBlur:()=>{h()},onKeyDown:t=>{t.key==="Enter"&&h(),t.key==="Escape"&&(p(e.name),x(!1))}}):s.jsx("button",{type:"button",className:`assets-folder-row__name${k?" is-active":""}`,"aria-current":k?"page":void 0,onClick:()=>m({folderId:e.id,kind:null}),children:e.name}),!l&&s.jsxs("span",{className:"assets-folder-row__actions",children:[s.jsx("button",{type:"button","aria-label":r("assets.renameFolder"),onClick:()=>x(!0),children:s.jsx(Q,{})}),s.jsx("button",{type:"button","aria-label":r(b?"assets.confirmDelete":"assets.deleteFolder"),className:b?"is-danger is-armed":"",onClick:()=>{u()},children:b?r("assets.confirmDelete"):"×"})]})]})}function Ie(){const{t:e}=E(),n=j(h=>h.assetsFolders),r=j(h=>h.assetsFilters.folderId),a=j(h=>h.assetsFilters.kind),m=j(h=>h.setAssetsFilters),g=j(h=>h.createAssetFolder),f=j(h=>h.showToast),[o,l]=d.useState(!1),[x,y]=d.useState(""),p=r===null&&a!=="element",b=r===null&&a==="element",v=d.useMemo(()=>{const h=[],u=(t,c)=>n.filter(_=>_.parentId===t).forEach(_=>{h.push({folder:_,depth:c}),u(_.id,c+1)});return u(null,0),h},[n]);async function k(){const h=x.trim();if(!h){l(!1);return}await g(h,r)||f(e("assets.actionFailed"),!0),y(""),l(!1)}return s.jsxs("aside",{className:"assets-folders","aria-label":e("assets.rootFolder"),children:[s.jsxs("div",{className:"assets-folders__heading",children:[s.jsx("span",{children:e("assets.rootFolder")}),s.jsx("button",{type:"button","aria-label":e("assets.newFolder"),onClick:()=>l(!0),children:"+"})]}),s.jsxs("div",{className:"assets-folders__rows",children:[s.jsx("button",{type:"button",className:`assets-folder-all${p?" is-active":""}`,"aria-current":p?"page":void 0,onClick:()=>m({folderId:null,kind:null}),children:e("assets.allAssets")}),s.jsxs("button",{type:"button",className:`assets-folder-all assets-folder-elements${b?" is-active":""}`,"aria-current":b?"page":void 0,onClick:()=>m({folderId:null,kind:"element"}),children:[s.jsx("span",{className:"assets-folder-elements__glyph","aria-hidden":"true",children:"@"}),e("assets.elementLibrary")]}),v.map(({folder:h,depth:u})=>s.jsx(Ee,{folder:h,depth:u},h.id)),o&&s.jsx("input",{className:"assets-folder-input assets-folder-input--new",value:x,autoFocus:!0,"aria-label":e("assets.newFolder"),placeholder:e("assets.newFolder"),onChange:h=>y(h.target.value),onBlur:()=>{x.trim()||l(!1)},onKeyDown:h=>{h.key==="Enter"&&k(),h.key==="Escape"&&(y(""),l(!1))}})]})]})}let C={status:"idle",elements:[]},P=null;const G=new Set;function R(e){C=e,G.forEach(n=>n())}function Te(e){return G.add(e),()=>G.delete(e)}function O(e=!1){return!e&&C.status==="ready"?Promise.resolve(!0):P||(R({...C,status:"loading"}),P=ce().then(n=>(R({status:"ready",elements:n}),!0)).catch(n=>(console.error("[ElementMembership] load failed",n),R({...C,status:"error"}),!1)).finally(()=>{P=null}),P)}function Ce(e){const n=[e,...C.elements.filter(r=>r.id!==e.id)];R({status:"ready",elements:n})}function X(e){R({status:"ready",elements:C.elements.filter(n=>n.id!==e)})}function Fe(e){e.stopPropagation()}function De(e){e.stopPropagation()}function Pe(e){(e.key==="Enter"||e.key===" ")&&e.stopPropagation()}async function Re(e,n){if(n){await ue(n.id),X(n.id);return}const{asset:r}=await me({result:{filePath:e.filePath??void 0},sourceAssetId:e.id,elementKind:"character",name:e.name,notes:e.notes??void 0,folderId:e.folderId,tags:[he(e.id)]});Ce(r)}function z({active:e,busy:n,label:r,onToggle:a}){return s.jsx("button",{type:"button",className:`asset-element-toggle${e?" is-active":""}`,title:r,"aria-label":r,"aria-pressed":e,"aria-busy":n||void 0,disabled:n,onPointerDown:Fe,onDoubleClick:De,onKeyDown:Pe,onClick:m=>{m.stopPropagation(),a()},children:s.jsx("span",{className:"asset-element-toggle__glyph","aria-hidden":"true",children:"@"})})}function Me({item:e}){const{t:n}=E(),r=j(v=>v.showToast),a=j(v=>v.deleteAssetItem),[m,g]=d.useState(!1),f=e.kind==="element",o=f||(e.kind==="image"||e.kind==="video")&&!!e.filePath,l=n("assets.elementLibrary"),x=d.useSyncExternalStore(Te,()=>C,()=>C),y=!f&&o?H(x.elements,e.id):null,p=m||x.status==="loading"||x.status==="idle";if(d.useEffect(()=>{o&&!f&&O()},[o,f]),f){const v=async()=>{if(!m){g(!0);try{await a(e.id)?X(e.id):r(n("assets.actionFailed"),!0)}finally{g(!1)}}};return s.jsx(z,{active:!0,busy:m,label:n("assets.removeFromElements"),onToggle:()=>{v()}})}if(!o)return null;async function b(){if(m||x.status==="loading")return;if(x.status!=="ready"&&!await O(!0)){r(n("assets.actionFailed"),!0);return}const v=H(C.elements,e.id);g(!0);try{await Re(e,v)}catch(k){console.error("[ElementMembership] toggle failed",k),r(n("assets.actionFailed"),!0)}finally{g(!1)}}return s.jsx(z,{active:!!y,busy:p,label:l,onToggle:()=>{b()}})}const B=12,V=180;function $e(e){return`/generated/${e.split("/").map(encodeURIComponent).join("/")}`}function Le({item:e,selected:n,onSelect:r,onPreview:a}){const{t:m}=E(),g=j(w=>w.deleteAssetItem),f=j(w=>w.updateAssetItem),o=j(w=>w.showToast),[l,x]=d.useState(!1),[y,p]=d.useState(!1),[b,v]=d.useState(!1),k=d.useRef(null);d.useEffect(()=>{const w=k.current;if(!w||e.kind!=="video"||typeof IntersectionObserver>"u"){v(!0);return}const M=new IntersectionObserver(([D])=>{D?.isIntersecting&&v(!0)},{rootMargin:"300px"});return M.observe(w),()=>M.disconnect()},[e.kind]);const h=e.kind==="element"&&!e.filePath?pe(e):e.filePath,u=h?$e(h):null,t=e.kind==="video",c=m(t?"assetGen.videoFallback":"assetGen.imageFallback"),_=m(t?"assetGen.previewVideo":"assetGen.previewImage",{prompt:e.name.trim()||c});async function A(){if(!l){x(!0);return}await g(e.id)||o(m("assets.actionFailed"),!0),x(!1)}const N=e.tags.includes("starred");async function S(){if(!y){p(!0);try{const w=xe(e.tags,N);await f(e.id,{tags:w})||o(m("assets.actionFailed"),!0)}finally{p(!1)}}}return s.jsxs("article",{ref:k,className:`assets-tile${n?" is-selected":""}`,tabIndex:0,"aria-selected":n,onClick:()=>r?.(e.id),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&r&&(w.preventDefault(),r(e.id))},children:[s.jsxs("div",{className:"assets-tile__media",children:[u?s.jsxs("button",{type:"button",className:"assets-tile__preview","aria-label":_,onClick:w=>{w.stopPropagation(),r?.(e.id),a?.(e)},onKeyDown:w=>w.stopPropagation(),children:[t?b?s.jsx("video",{src:u,preload:"metadata",muted:!0,playsInline:!0,"aria-hidden":"true"}):null:s.jsx("img",{src:u,alt:"",loading:"lazy",decoding:"async"}),s.jsx("span",{className:"assets-tile__preview-hint","aria-hidden":"true",children:m(t?"assetGen.openHintVideo":"assetGen.openHintImage")})]}):s.jsx("span",{className:"assets-tile__glyph","aria-hidden":"true",children:e.kind.slice(0,1).toUpperCase()}),s.jsx(ge,{variant:"asset",active:N,busy:y,label:m(N?"assets.unstarAsset":"assets.starAsset"),onToggle:S}),s.jsx(Me,{item:e}),s.jsx("button",{type:"button",className:`assets-tile__delete${l?" is-danger":""}`,"aria-label":m(l?"assets.confirmDelete":"assets.deleteAsset"),onClick:w=>{w.stopPropagation(),A()},children:l?m("assets.confirmDelete"):"×"})]}),s.jsxs("div",{className:"assets-tile__meta",children:[s.jsxs("div",{className:"assets-tile__title",children:[s.jsx("strong",{title:e.name,children:e.name}),s.jsx("span",{children:e.kind})]}),e.tags.length>0&&s.jsxs("div",{className:"assets-tile__tags",children:[e.tags.slice(0,2).map(w=>s.jsx("span",{children:w},w)),e.tags.length>2&&s.jsxs("span",{children:["+",e.tags.length-2]})]})]})]})}function Be({onSelectAsset:e,onPreviewAsset:n,selectedId:r}){const{t:a}=E(),m=j(c=>c.assets),g=j(c=>c.assetsLoading),f=j(c=>c.assetsCursor),o=j(c=>c.loadMoreAssets),l=d.useRef(null),[x,y]=d.useState(960),p=Math.max(1,Math.floor((x+B)/(V+B))),b=d.useMemo(()=>Array.from({length:Math.ceil(m.length/p)},(c,_)=>m.slice(_*p,(_+1)*p)),[m,p]);d.useEffect(()=>{const c=l.current;if(!c)return;const _=()=>{const N=getComputedStyle(c),S=(parseFloat(N.paddingLeft)||0)+(parseFloat(N.paddingRight)||0);y(Math.max(0,c.clientWidth-S))};_();const A=new ResizeObserver(_);return A.observe(c),()=>A.disconnect()},[]);const v=Math.max(V,(x-B*(p-1))/p)+70+B,k=fe({count:b.length,getScrollElement:()=>l.current,estimateSize:()=>v,overscan:4}),h=k.getVirtualItems(),u=h.at(-1)?.index,t=d.useCallback(()=>{f&&!g&&o()},[f,g,o]);return d.useEffect(()=>{u===b.length-1&&t()},[u,t,b.length]),s.jsxs("div",{ref:l,className:"assets-grid-scroll",children:[s.jsx("div",{className:"assets-grid-virtual",style:{height:k.getTotalSize()},children:h.map(c=>s.jsx("div",{className:"assets-grid-row",style:{transform:`translateY(${c.start}px)`,gridTemplateColumns:`repeat(${p}, minmax(0, 1fr))`},children:b[c.index]?.map(_=>s.jsx(Le,{item:_,selected:_.id===r,onSelect:e,onPreview:n},_.id))},c.key))}),f&&s.jsx("button",{type:"button",className:"assets-load-more",disabled:g,onClick:t,children:a("assets.loadMore")})]})}const Ke=5e3;function Ue({refs:e,onChange:n,maxRefs:r=6}){const{t:a}=E(),[m,g]=d.useState(null),[f,o]=d.useState(null),[l,x]=d.useState(null),y=d.useRef(null);d.useEffect(()=>()=>{y.current&&window.clearTimeout(y.current)},[]);const p=(u,t)=>{if(t<0||t>=e.length||u===t)return;const c=[...e],[_]=c.splice(u,1);c.splice(t,0,_),n(c)},b=u=>{if(e.length<=1)return;const t=e[u];n(e.filter((c,_)=>_!==u)),x({ref:t,index:u}),y.current&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>x(null),Ke)},v=()=>{if(!l||e.some(t=>t.path===l.ref.path))return;const u=[...e];u.splice(Math.min(l.index,u.length),0,l.ref),n(u.slice(0,r)),x(null)},k=(u,t)=>{u.preventDefault();const c=u.dataTransfer.getData("application/ima2-element-ref")||m,_=e.findIndex(S=>S.id===c);if(g(null),_<0||_===t)return;const A=e[_],N=e.find((S,w)=>w!==_&&S.path===A.path);if(N){o(N.id),window.setTimeout(()=>o(null),1200);return}p(_,t)},h=(u,t)=>n(e.map((c,_)=>_===u?{...c,alt:t}:c));return s.jsxs("section",{className:"element-ref-grid","aria-labelledby":"element-refs-title",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{id:"element-refs-title",children:a("element.refsTitle")}),s.jsx("p",{children:a("element.refsHelp")})]}),s.jsxs("span",{children:[e.length," / ",r]})]}),s.jsx("div",{className:"element-ref-grid__items",children:e.map((u,t)=>s.jsxs("div",{className:`element-ref-card${m===u.id?" is-dragging":""}${f===u.id?" is-duplicate":""}`,draggable:!0,onDragStart:c=>{g(u.id),c.dataTransfer.setData("application/ima2-element-ref",u.id),c.dataTransfer.effectAllowed="move"},onDragEnd:()=>g(null),onDragOver:c=>c.preventDefault(),onDrop:c=>k(c,t),children:[s.jsxs("div",{className:"element-ref-card__image",children:[s.jsx("img",{src:u.previewUrl||u.path,alt:u.alt||a("element.refAlt",{n:t+1})}),t===0?s.jsx("span",{children:a("element.refPrimary")}):null]}),s.jsxs("div",{className:"element-ref-card__controls",children:[s.jsxs("label",{children:[a("element.refLabel"),s.jsx("input",{value:u.alt,maxLength:80,placeholder:a("element.refLabelPlaceholder"),onChange:c=>h(t,c.target.value)})]}),s.jsxs("div",{children:[s.jsx("button",{type:"button",disabled:t===0,onClick:()=>p(t,t-1),"aria-label":a("element.refMoveUp",{n:t+1}),children:"↑"}),s.jsx("button",{type:"button",disabled:t===e.length-1,onClick:()=>p(t,t+1),"aria-label":a("element.refMoveDown",{n:t+1}),children:"↓"}),s.jsx("button",{type:"button",className:"is-danger",disabled:e.length<=1,onClick:()=>b(t),"aria-label":a("element.refRemove"),children:a("element.refRemove")})]})]})]},u.id))}),l?s.jsxs("div",{className:"element-ref-grid__undo",role:"status",children:[s.jsx("span",{children:a("element.refRemoved")}),s.jsx("button",{type:"button",onClick:v,children:a("element.refUndo")})]}):null]})}const Ge=/^[A-Za-z0-9_-]{1,32}$/;function qe({bindings:e,refs:n,onSave:r}){const{t:a}=E(),m=e.find(v=>v.provider==="runway"),g=e.find(v=>v.provider==="higgsfield"),[f,o]=d.useState(m?.tag??""),[l,x]=d.useState(!1),[y,p]=d.useState(null),b=async()=>{const v=f.trim();if(v&&!Ge.test(v)){p(a("assets.bindingTagInvalid"));return}p(null),x(!0);try{const k=[{provider:"runway",mode:"stateless-refs",...v?{tag:v}:{}},...g?[g]:[]];await r(k)||p(a("assets.actionFailed"))}finally{x(!1)}};return s.jsxs("section",{className:"element-detail__section","data-testid":"character-bindings-card",children:[s.jsx("div",{className:"element-detail__section-heading",children:s.jsxs("div",{children:[s.jsx("h3",{children:a("assets.bindingsTitle")}),s.jsx("p",{children:a("assets.bindingsHelp")})]})}),s.jsxs("div",{className:"character-binding-row",children:[s.jsx("span",{className:"character-binding-row__provider",children:"Runway"}),s.jsx("span",{className:"character-binding-row__mode",children:a("assets.bindingStateless")}),s.jsx("input",{value:f,maxLength:32,placeholder:a("assets.bindingTagPlaceholder"),"aria-label":a("assets.bindingTagPlaceholder"),onChange:v=>o(v.target.value)}),s.jsx("button",{type:"button",disabled:l,onClick:()=>{b()},children:a(l?"assets.bindingSaving":"assets.bindingSave")})]}),be(n)?s.jsx("p",{className:"element-detail__error",role:"alert",children:a("assets.bindingCapWarning",{count:n.length})}):null,s.jsxs("div",{className:"character-binding-row character-binding-row--locked",children:[s.jsx("span",{className:"character-binding-row__provider",children:"Higgsfield"}),g?.status?s.jsx("span",{className:"character-binding-row__status",children:g.status}):null,s.jsx("button",{type:"button",disabled:!0,title:a("assets.bindingTrainLockedHint"),children:a("assets.bindingTrain")}),s.jsx("span",{className:"character-binding-row__badge",children:a("assets.bindingPaidPlan")})]}),g&&ve(n,g)?s.jsx("p",{className:"element-detail__error",role:"alert",children:a("assets.bindingDriftWarning")}):null,y?s.jsx("p",{className:"element-detail__error",role:"alert",children:y}):null]})}const He=["character","product","style","scene"],W=e=>e[0].toUpperCase()+e.slice(1);function Y(e){return{id:e?.id,name:e?.name??"",kind:e?.kind??"character",refs:(e?.refs??[]).filter(n=>typeof n=="string"&&n.length>0).map((n,r)=>({id:`${e?.id??"new"}-${r}-${n}`,path:n,previewUrl:`/generated/${n.split("/").map(encodeURIComponent).join("/")}`,alt:""})),notes:e?.notes??"",defaultStrength:e?.defaultStrength??.75}}function Oe({element:e,saving:n,testing:r,onSave:a,onDelete:m,onRunTestSheet:g,onSaveBindings:f}){const{t:o}=E(),[l,x]=d.useState(()=>Y(e)),[y,p]=d.useState(null);d.useEffect(()=>{x(Y(e)),p(null)},[e]);const b=800-l.notes.length,v=d.useMemo(()=>l.notes.trim()?`[Element: ${l.name.trim()||"Untitled"}] ${l.notes.trim()}`:null,[l.name,l.notes]),k=(t,c)=>x(_=>({..._,[t]:c})),h=async()=>{if(!l.name.trim())return p(o("element.errorName"));if(!l.refs.length)return p(o("element.errorRefs"));p(null),await a({...l,name:l.name.trim(),notes:l.notes.trim()?l.notes:""})},u=He.map(t=>({value:t,label:o(`element.kind${W(t)}`)}));return s.jsxs("aside",{className:"element-detail","aria-label":o("element.ariaLabel"),children:[s.jsxs("header",{className:"element-detail__header",children:[s.jsxs("div",{children:[s.jsx("span",{children:o("element.title")}),s.jsx("h2",{children:o(e?"element.titleEdit":"element.titleNew")})]}),e?s.jsx("span",{className:"element-detail__status",children:o("element.saved")}):null]}),s.jsxs("label",{className:"element-detail__field",children:[o("element.name"),s.jsx("input",{value:l.name,maxLength:120,placeholder:o("element.namePlaceholder"),onChange:t=>k("name",t.target.value)})]}),s.jsx(je,{title:o("element.kind"),items:u,value:l.kind,onChange:t=>k("kind",t)}),s.jsx("p",{className:"element-detail__kind-help",children:o(`element.help${W(l.kind)}`)}),s.jsx(Ue,{refs:l.refs,onChange:t=>k("refs",t),maxRefs:6}),e&&l.kind==="character"&&f?s.jsx(qe,{bindings:e.characterBindings??[],refs:e.refs,onSave:t=>f(e.id,t)}):null,s.jsxs("section",{className:"element-detail__section",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{children:o("element.notes")}),s.jsx("p",{children:o("element.notesHelp")})]}),b<=100?s.jsx("span",{children:o("element.remaining",{n:b})}):null]}),s.jsx("textarea",{value:l.notes,maxLength:800,rows:6,placeholder:o("element.notesPlaceholder"),onChange:t=>k("notes",t.target.value)}),v?s.jsx("p",{className:"element-detail__note-preview",children:v}):null]}),s.jsxs("section",{className:"element-detail__section",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{children:o("element.strength")}),s.jsx("p",{children:o("element.strengthHelp")})]}),s.jsx("output",{children:l.defaultStrength.toFixed(2)})]}),s.jsx("input",{className:"element-detail__strength",type:"range",min:"0",max:"1",step:"0.05",value:l.defaultStrength,onChange:t=>k("defaultStrength",Number(t.target.value))}),s.jsx("button",{type:"button",className:"element-detail__reset",onClick:()=>k("defaultStrength",.75),children:o("element.resetDefault")})]}),y?s.jsx("p",{className:"element-detail__error",role:"alert",children:y}):null,s.jsxs("footer",{className:"element-detail__actions",children:[s.jsx("button",{type:"button",className:"element-detail__save",disabled:n,onClick:()=>{h()},children:o(n?"element.saving":"element.save")}),s.jsx("button",{type:"button",disabled:!e||r,onClick:()=>e&&void g(e.id),children:o(r?"element.testing":"element.runTest")}),e&&m?s.jsx("button",{type:"button",className:"is-danger",onClick:()=>{m(e.id)},children:o("element.delete")}):null]})]})}const ze=["image","video","element","preset","template"],Z='button, [href], input, textarea, select, [tabindex]:not([tabindex="-1"])';function Ve(e,n){const r=d.useRef(null),a=d.useRef(null);return d.useEffect(()=>{if(!e)return;a.current=document.activeElement;const m=window.setTimeout(()=>{r.current?.querySelector(Z)?.focus()},0),g=f=>{if(f.key==="Escape"){f.preventDefault(),n();return}if(f.key!=="Tab")return;const o=Array.from(r.current?.querySelectorAll(Z)??[]).filter(y=>!y.hasAttribute("disabled")&&y.getClientRects().length>0);if(o.length===0)return;const l=o[0],x=o[o.length-1];f.shiftKey&&document.activeElement===l?(f.preventDefault(),x.focus()):!f.shiftKey&&document.activeElement===x&&(f.preventDefault(),l.focus())};return document.addEventListener("keydown",g),()=>{window.clearTimeout(m),document.removeEventListener("keydown",g),a.current?.focus()}},[n,e]),r}function Je(){const{t:e}=E(),n=j(i=>i.assets),r=j(i=>i.assetsTags),a=j(i=>i.assetsFilters),m=j(i=>i.assetsLoading),g=j(i=>i.assetsLoadError),f=j(i=>i.loadAssets),o=j(i=>i.setUIMode),l=j(i=>i.setAssetsFilters),x=j(i=>i.updateAssetItem),y=j(i=>i.deleteAssetItem),p=j(i=>i.showToast),[b,v]=d.useState(a.q),[k,h]=d.useState(null),[u,t]=d.useState(null),[c,_]=d.useState(null),A=ye(),N=j(i=>i.keyingTarget),S=j(i=>i.pendingAssetDetailId);d.useEffect(()=>{if(!S)return;const i=S;j.setState({pendingAssetDetailId:null});const F=j.getState().assets.find(T=>T.id===i)??null;_(F),l({kind:null,folderId:null,tag:null,q:""}),v(""),h(i),F||_e(i).then(({asset:T})=>{j.setState(U=>({assets:[T,...U.assets.filter(L=>L.id!==T.id)]})),_(T)}).catch(()=>{})},[S,l]);const w=d.useRef(!1);d.useEffect(()=>{if(N){w.current=!0;return}w.current&&(w.current=!1,f(!0))},[N,f]);const M=d.useMemo(()=>[{value:"",label:e("assets.kindAll")},...ze.map(i=>({value:i,label:e(`assets.kind${i[0].toUpperCase()}${i.slice(1)}`)}))],[e]);d.useEffect(()=>{f(!0)},[f]),d.useEffect(()=>{const i=window.setTimeout(()=>l({q:b}),300);return()=>window.clearTimeout(i)},[b,l]);const D=!!(a.q||a.kind||a.tag),J=n.length===0&&!m,K=a.kind==="element"&&!a.folderId&&!a.q&&!a.tag,ee=K?"assets.emptyElementsTitle":a.folderId?"assets.emptyFolderTitle":D?"assets.emptySearchTitle":"assets.emptyTitle",se=K?"assets.emptyElementsBody":a.folderId?"assets.emptyFolderBody":D?"assets.emptySearchBody":"assets.emptyBody",I=n.find(i=>i.id===k)??(c?.id===k?c:null),q=I?.kind==="element"?Ye(I):null,$=d.useCallback(()=>h(null),[]),te=Ve(!!(I&&A),$),ne=d.useCallback(()=>t(null),[]),ae=async i=>{(!i.id||!await x(i.id,{name:i.name,notes:i.notes}))&&p(e("assets.actionFailed"),!0)},le=async(i,F)=>{const U={...n.find(de=>de.id===i)?.metadata??{},characterBindings:F},L=await x(i,{metadata:U});return L||p(e("assets.actionFailed"),!0),L},ie=async(i,F)=>{const T=await x(i,{name:F});return T||p(e("assets.actionFailed"),!0),T},re=async i=>{await y(i)?$():p(e("assets.actionFailed"),!0)},oe=async()=>p(e("assets.testSheetsUnavailable"),!0);return s.jsxs("section",{className:`assets-workspace${I?" assets-workspace--detail-open":""}`,"aria-labelledby":"assets-title",children:[s.jsx(Ie,{}),s.jsxs("main",{className:"assets-workspace__main",children:[s.jsxs("header",{className:"assets-toolbar",children:[s.jsxs("div",{className:"assets-toolbar__title",children:[s.jsx("h1",{id:"assets-title",children:e("assets.title")}),s.jsx("span",{children:e("assets.itemCount",{count:n.length})})]}),s.jsxs("div",{className:"assets-toolbar__controls",children:[s.jsx("input",{type:"search",value:b,placeholder:e("assets.searchPlaceholder"),"aria-label":e("assets.searchPlaceholder"),onChange:i=>v(i.target.value)}),s.jsx(we,{items:M,value:a.kind??"",onChange:i=>l({kind:i||null}),ariaLabel:e("assets.kindAll")}),n.length>0&&s.jsx("button",{type:"button",className:"assets-clear-btn",onClick:async()=>{confirm(e("assets.clearConfirm"))&&(await ke(),f(!0))},children:e("assets.clearAll")})]}),r.length>0&&s.jsx("div",{className:"assets-tag-filter",children:r.map(i=>s.jsx("button",{type:"button",className:a.tag===i?"is-active":"",onClick:()=>l({tag:a.tag===i?null:i}),children:i},i))})]}),g&&n.length===0?s.jsxs("div",{className:"assets-empty",role:"alert",children:[s.jsx("h2",{children:e("assets.loadErrorTitle")}),s.jsx("p",{children:e("assets.loadErrorBody")}),s.jsx("button",{type:"button",className:"assets-empty__cta",onClick:()=>{f(!0)},children:e("assets.retry")})]}):J?s.jsxs("div",{className:"assets-empty",children:[s.jsx("h2",{children:e(ee)}),s.jsx("p",{children:e(se)}),K||!D&&!a.folderId?s.jsx("button",{type:"button",className:"assets-empty__cta",onClick:()=>o("classic"),children:e("nav.create")}):null]}):s.jsx(Be,{selectedId:k??void 0,onSelectAsset:h,onPreviewAsset:i=>t(Ne(i))})]}),I&&A?s.jsx("button",{type:"button",className:"assets-workspace__detail-backdrop","aria-label":e("assets.detailClose"),onClick:$}):null,I&&s.jsxs("aside",{ref:te,className:"assets-workspace__detail",role:A?"dialog":void 0,"aria-modal":A?!0:void 0,"aria-label":e("assets.detailAria",{name:I.name}),children:[s.jsx("button",{type:"button",className:"assets-workspace__detail-close",onClick:$,"aria-label":e("assets.detailClose"),children:"×"}),q?s.jsx(Oe,{element:q,saving:!1,testing:!1,onSave:ae,onSaveBindings:le,onDelete:re,onRunTestSheet:oe}):s.jsx(We,{asset:I,onRename:i=>ie(I.id,i)})]}),s.jsx(Ae,{}),u?s.jsx(Se,{item:u,onClose:ne}):null]})}function We({asset:e,onRename:n}){const{t:r,locale:a}=E(),[m,g]=d.useState(!1),[f,o]=d.useState(e.name),l=d.useRef(!1),x=typeof e.metadata?.prompt=="string"?e.metadata.prompt:null,y=typeof e.metadata?.provider=="string"?e.metadata.provider:null;d.useEffect(()=>{o(e.name),g(!1)},[e.id,e.name]);async function p(){if(l.current)return;const b=f.trim();if(!b||b===e.name){o(e.name),g(!1);return}l.current=!0;try{await n(b)||o(e.name)}finally{l.current=!1,g(!1)}}return s.jsxs("div",{className:"assets-workspace__detail-meta",children:[s.jsx("div",{className:"assets-workspace__detail-title",children:m?s.jsx("input",{className:"assets-folder-input assets-workspace__detail-name-input",value:f,autoFocus:!0,"aria-label":r("assets.renameAsset"),onChange:b=>o(b.target.value),onBlur:()=>{p()},onKeyDown:b=>{b.key==="Enter"&&p(),b.key==="Escape"&&(o(e.name),g(!1))}}):s.jsxs(s.Fragment,{children:[s.jsx("h2",{children:e.name}),s.jsx("button",{type:"button",className:"assets-workspace__detail-rename","aria-label":r("assets.renameAsset"),title:r("assets.renameAsset"),onClick:()=>g(!0),children:s.jsx(Q,{})})]})}),s.jsxs("dl",{children:[s.jsx("dt",{children:r("assets.detailKind")}),s.jsx("dd",{children:r(`assets.kind${e.kind[0].toUpperCase()}${e.kind.slice(1)}`)}),s.jsx("dt",{children:r("assets.detailCreated")}),s.jsx("dd",{children:new Intl.DateTimeFormat(a,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e.createdAt))}),y?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailProvider")}),s.jsx("dd",{children:y})]}):null,x?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailPrompt")}),s.jsx("dd",{className:"assets-workspace__detail-prompt",children:x})]}):null,e.tags.length>0?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailTags")}),s.jsx("dd",{children:e.tags.join(", ")})]}):null]})]})}function Ye(e){const n=e.metadata??{},r=n.elementKind,a=n.refs,m=Array.isArray(n.characterBindings)?n.characterBindings:void 0;return{id:e.id,name:e.name,kind:r==="product"||r==="style"||r==="scene"?r:"character",refs:Array.isArray(a)?a.filter(g=>typeof g=="string"):e.filePath?[e.filePath]:[],notes:e.notes??void 0,defaultStrength:typeof n.defaultStrength=="number"?n.defaultStrength:void 0,characterBindings:m}}export{Je as AssetsWorkspace};
1
+ import{u as E,b as j,a as d,j as s,T as Q,X as H,m as ce,Y as ue,Z as me,_ as he,$ as fe,o as pe,a0 as ge,a1 as xe,a2 as be,a3 as ve,F as je,s as ye,p as _e,t as we,a4 as ke,a5 as Ne}from"./index-BqFlxfzT.js";import{K as Ae,A as Se}from"./KeyingPanel-BY_xV317.js";import"./useAgentDialogFocus-DYjA7lCJ.js";function Ee({folder:e,depth:n}){const{t:r}=E(),a=j(t=>t.assetsFilters.folderId),m=j(t=>t.setAssetsFilters),g=j(t=>t.renameAssetFolder),f=j(t=>t.deleteAssetFolder),o=j(t=>t.showToast),[l,x]=d.useState(!1),[y,p]=d.useState(e.name),[b,v]=d.useState(!1),k=a===e.id;async function h(){const t=y.trim();if(!t||t===e.name){p(e.name),x(!1);return}await g(e.id,t)||o(r("assets.actionFailed"),!0),x(!1)}async function u(){if(!b){v(!0);return}await f(e.id)||o(r("assets.actionFailed"),!0),v(!1)}return s.jsxs("div",{className:"assets-folder-row",style:{"--folder-depth":n},children:[l?s.jsx("input",{className:"assets-folder-input",value:y,autoFocus:!0,"aria-label":r("assets.renameFolder"),onChange:t=>p(t.target.value),onBlur:()=>{h()},onKeyDown:t=>{t.key==="Enter"&&h(),t.key==="Escape"&&(p(e.name),x(!1))}}):s.jsx("button",{type:"button",className:`assets-folder-row__name${k?" is-active":""}`,"aria-current":k?"page":void 0,onClick:()=>m({folderId:e.id,kind:null}),children:e.name}),!l&&s.jsxs("span",{className:"assets-folder-row__actions",children:[s.jsx("button",{type:"button","aria-label":r("assets.renameFolder"),onClick:()=>x(!0),children:s.jsx(Q,{})}),s.jsx("button",{type:"button","aria-label":r(b?"assets.confirmDelete":"assets.deleteFolder"),className:b?"is-danger is-armed":"",onClick:()=>{u()},children:b?r("assets.confirmDelete"):"×"})]})]})}function Ie(){const{t:e}=E(),n=j(h=>h.assetsFolders),r=j(h=>h.assetsFilters.folderId),a=j(h=>h.assetsFilters.kind),m=j(h=>h.setAssetsFilters),g=j(h=>h.createAssetFolder),f=j(h=>h.showToast),[o,l]=d.useState(!1),[x,y]=d.useState(""),p=r===null&&a!=="element",b=r===null&&a==="element",v=d.useMemo(()=>{const h=[],u=(t,c)=>n.filter(_=>_.parentId===t).forEach(_=>{h.push({folder:_,depth:c}),u(_.id,c+1)});return u(null,0),h},[n]);async function k(){const h=x.trim();if(!h){l(!1);return}await g(h,r)||f(e("assets.actionFailed"),!0),y(""),l(!1)}return s.jsxs("aside",{className:"assets-folders","aria-label":e("assets.rootFolder"),children:[s.jsxs("div",{className:"assets-folders__heading",children:[s.jsx("span",{children:e("assets.rootFolder")}),s.jsx("button",{type:"button","aria-label":e("assets.newFolder"),onClick:()=>l(!0),children:"+"})]}),s.jsxs("div",{className:"assets-folders__rows",children:[s.jsx("button",{type:"button",className:`assets-folder-all${p?" is-active":""}`,"aria-current":p?"page":void 0,onClick:()=>m({folderId:null,kind:null}),children:e("assets.allAssets")}),s.jsxs("button",{type:"button",className:`assets-folder-all assets-folder-elements${b?" is-active":""}`,"aria-current":b?"page":void 0,onClick:()=>m({folderId:null,kind:"element"}),children:[s.jsx("span",{className:"assets-folder-elements__glyph","aria-hidden":"true",children:"@"}),e("assets.elementLibrary")]}),v.map(({folder:h,depth:u})=>s.jsx(Ee,{folder:h,depth:u},h.id)),o&&s.jsx("input",{className:"assets-folder-input assets-folder-input--new",value:x,autoFocus:!0,"aria-label":e("assets.newFolder"),placeholder:e("assets.newFolder"),onChange:h=>y(h.target.value),onBlur:()=>{x.trim()||l(!1)},onKeyDown:h=>{h.key==="Enter"&&k(),h.key==="Escape"&&(y(""),l(!1))}})]})]})}let C={status:"idle",elements:[]},P=null;const G=new Set;function R(e){C=e,G.forEach(n=>n())}function Te(e){return G.add(e),()=>G.delete(e)}function O(e=!1){return!e&&C.status==="ready"?Promise.resolve(!0):P||(R({...C,status:"loading"}),P=ce().then(n=>(R({status:"ready",elements:n}),!0)).catch(n=>(console.error("[ElementMembership] load failed",n),R({...C,status:"error"}),!1)).finally(()=>{P=null}),P)}function Ce(e){const n=[e,...C.elements.filter(r=>r.id!==e.id)];R({status:"ready",elements:n})}function X(e){R({status:"ready",elements:C.elements.filter(n=>n.id!==e)})}function Fe(e){e.stopPropagation()}function De(e){e.stopPropagation()}function Pe(e){(e.key==="Enter"||e.key===" ")&&e.stopPropagation()}async function Re(e,n){if(n){await ue(n.id),X(n.id);return}const{asset:r}=await me({result:{filePath:e.filePath??void 0},sourceAssetId:e.id,elementKind:"character",name:e.name,notes:e.notes??void 0,folderId:e.folderId,tags:[he(e.id)]});Ce(r)}function z({active:e,busy:n,label:r,onToggle:a}){return s.jsx("button",{type:"button",className:`asset-element-toggle${e?" is-active":""}`,title:r,"aria-label":r,"aria-pressed":e,"aria-busy":n||void 0,disabled:n,onPointerDown:Fe,onDoubleClick:De,onKeyDown:Pe,onClick:m=>{m.stopPropagation(),a()},children:s.jsx("span",{className:"asset-element-toggle__glyph","aria-hidden":"true",children:"@"})})}function Me({item:e}){const{t:n}=E(),r=j(v=>v.showToast),a=j(v=>v.deleteAssetItem),[m,g]=d.useState(!1),f=e.kind==="element",o=f||(e.kind==="image"||e.kind==="video")&&!!e.filePath,l=n("assets.elementLibrary"),x=d.useSyncExternalStore(Te,()=>C,()=>C),y=!f&&o?H(x.elements,e.id):null,p=m||x.status==="loading"||x.status==="idle";if(d.useEffect(()=>{o&&!f&&O()},[o,f]),f){const v=async()=>{if(!m){g(!0);try{await a(e.id)?X(e.id):r(n("assets.actionFailed"),!0)}finally{g(!1)}}};return s.jsx(z,{active:!0,busy:m,label:n("assets.removeFromElements"),onToggle:()=>{v()}})}if(!o)return null;async function b(){if(m||x.status==="loading")return;if(x.status!=="ready"&&!await O(!0)){r(n("assets.actionFailed"),!0);return}const v=H(C.elements,e.id);g(!0);try{await Re(e,v)}catch(k){console.error("[ElementMembership] toggle failed",k),r(n("assets.actionFailed"),!0)}finally{g(!1)}}return s.jsx(z,{active:!!y,busy:p,label:l,onToggle:()=>{b()}})}const B=12,V=180;function $e(e){return`/generated/${e.split("/").map(encodeURIComponent).join("/")}`}function Le({item:e,selected:n,onSelect:r,onPreview:a}){const{t:m}=E(),g=j(w=>w.deleteAssetItem),f=j(w=>w.updateAssetItem),o=j(w=>w.showToast),[l,x]=d.useState(!1),[y,p]=d.useState(!1),[b,v]=d.useState(!1),k=d.useRef(null);d.useEffect(()=>{const w=k.current;if(!w||e.kind!=="video"||typeof IntersectionObserver>"u"){v(!0);return}const M=new IntersectionObserver(([D])=>{D?.isIntersecting&&v(!0)},{rootMargin:"300px"});return M.observe(w),()=>M.disconnect()},[e.kind]);const h=e.kind==="element"&&!e.filePath?pe(e):e.filePath,u=h?$e(h):null,t=e.kind==="video",c=m(t?"assetGen.videoFallback":"assetGen.imageFallback"),_=m(t?"assetGen.previewVideo":"assetGen.previewImage",{prompt:e.name.trim()||c});async function A(){if(!l){x(!0);return}await g(e.id)||o(m("assets.actionFailed"),!0),x(!1)}const N=e.tags.includes("starred");async function S(){if(!y){p(!0);try{const w=xe(e.tags,N);await f(e.id,{tags:w})||o(m("assets.actionFailed"),!0)}finally{p(!1)}}}return s.jsxs("article",{ref:k,className:`assets-tile${n?" is-selected":""}`,tabIndex:0,"aria-selected":n,onClick:()=>r?.(e.id),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&r&&(w.preventDefault(),r(e.id))},children:[s.jsxs("div",{className:"assets-tile__media",children:[u?s.jsxs("button",{type:"button",className:"assets-tile__preview","aria-label":_,onClick:w=>{w.stopPropagation(),r?.(e.id),a?.(e)},onKeyDown:w=>w.stopPropagation(),children:[t?b?s.jsx("video",{src:u,preload:"metadata",muted:!0,playsInline:!0,"aria-hidden":"true"}):null:s.jsx("img",{src:u,alt:"",loading:"lazy",decoding:"async"}),s.jsx("span",{className:"assets-tile__preview-hint","aria-hidden":"true",children:m(t?"assetGen.openHintVideo":"assetGen.openHintImage")})]}):s.jsx("span",{className:"assets-tile__glyph","aria-hidden":"true",children:e.kind.slice(0,1).toUpperCase()}),s.jsx(ge,{variant:"asset",active:N,busy:y,label:m(N?"assets.unstarAsset":"assets.starAsset"),onToggle:S}),s.jsx(Me,{item:e}),s.jsx("button",{type:"button",className:`assets-tile__delete${l?" is-danger":""}`,"aria-label":m(l?"assets.confirmDelete":"assets.deleteAsset"),onClick:w=>{w.stopPropagation(),A()},children:l?m("assets.confirmDelete"):"×"})]}),s.jsxs("div",{className:"assets-tile__meta",children:[s.jsxs("div",{className:"assets-tile__title",children:[s.jsx("strong",{title:e.name,children:e.name}),s.jsx("span",{children:e.kind})]}),e.tags.length>0&&s.jsxs("div",{className:"assets-tile__tags",children:[e.tags.slice(0,2).map(w=>s.jsx("span",{children:w},w)),e.tags.length>2&&s.jsxs("span",{children:["+",e.tags.length-2]})]})]})]})}function Be({onSelectAsset:e,onPreviewAsset:n,selectedId:r}){const{t:a}=E(),m=j(c=>c.assets),g=j(c=>c.assetsLoading),f=j(c=>c.assetsCursor),o=j(c=>c.loadMoreAssets),l=d.useRef(null),[x,y]=d.useState(960),p=Math.max(1,Math.floor((x+B)/(V+B))),b=d.useMemo(()=>Array.from({length:Math.ceil(m.length/p)},(c,_)=>m.slice(_*p,(_+1)*p)),[m,p]);d.useEffect(()=>{const c=l.current;if(!c)return;const _=()=>{const N=getComputedStyle(c),S=(parseFloat(N.paddingLeft)||0)+(parseFloat(N.paddingRight)||0);y(Math.max(0,c.clientWidth-S))};_();const A=new ResizeObserver(_);return A.observe(c),()=>A.disconnect()},[]);const v=Math.max(V,(x-B*(p-1))/p)+70+B,k=fe({count:b.length,getScrollElement:()=>l.current,estimateSize:()=>v,overscan:4}),h=k.getVirtualItems(),u=h.at(-1)?.index,t=d.useCallback(()=>{f&&!g&&o()},[f,g,o]);return d.useEffect(()=>{u===b.length-1&&t()},[u,t,b.length]),s.jsxs("div",{ref:l,className:"assets-grid-scroll",children:[s.jsx("div",{className:"assets-grid-virtual",style:{height:k.getTotalSize()},children:h.map(c=>s.jsx("div",{className:"assets-grid-row",style:{transform:`translateY(${c.start}px)`,gridTemplateColumns:`repeat(${p}, minmax(0, 1fr))`},children:b[c.index]?.map(_=>s.jsx(Le,{item:_,selected:_.id===r,onSelect:e,onPreview:n},_.id))},c.key))}),f&&s.jsx("button",{type:"button",className:"assets-load-more",disabled:g,onClick:t,children:a("assets.loadMore")})]})}const Ke=5e3;function Ue({refs:e,onChange:n,maxRefs:r=6}){const{t:a}=E(),[m,g]=d.useState(null),[f,o]=d.useState(null),[l,x]=d.useState(null),y=d.useRef(null);d.useEffect(()=>()=>{y.current&&window.clearTimeout(y.current)},[]);const p=(u,t)=>{if(t<0||t>=e.length||u===t)return;const c=[...e],[_]=c.splice(u,1);c.splice(t,0,_),n(c)},b=u=>{if(e.length<=1)return;const t=e[u];n(e.filter((c,_)=>_!==u)),x({ref:t,index:u}),y.current&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>x(null),Ke)},v=()=>{if(!l||e.some(t=>t.path===l.ref.path))return;const u=[...e];u.splice(Math.min(l.index,u.length),0,l.ref),n(u.slice(0,r)),x(null)},k=(u,t)=>{u.preventDefault();const c=u.dataTransfer.getData("application/ima2-element-ref")||m,_=e.findIndex(S=>S.id===c);if(g(null),_<0||_===t)return;const A=e[_],N=e.find((S,w)=>w!==_&&S.path===A.path);if(N){o(N.id),window.setTimeout(()=>o(null),1200);return}p(_,t)},h=(u,t)=>n(e.map((c,_)=>_===u?{...c,alt:t}:c));return s.jsxs("section",{className:"element-ref-grid","aria-labelledby":"element-refs-title",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{id:"element-refs-title",children:a("element.refsTitle")}),s.jsx("p",{children:a("element.refsHelp")})]}),s.jsxs("span",{children:[e.length," / ",r]})]}),s.jsx("div",{className:"element-ref-grid__items",children:e.map((u,t)=>s.jsxs("div",{className:`element-ref-card${m===u.id?" is-dragging":""}${f===u.id?" is-duplicate":""}`,draggable:!0,onDragStart:c=>{g(u.id),c.dataTransfer.setData("application/ima2-element-ref",u.id),c.dataTransfer.effectAllowed="move"},onDragEnd:()=>g(null),onDragOver:c=>c.preventDefault(),onDrop:c=>k(c,t),children:[s.jsxs("div",{className:"element-ref-card__image",children:[s.jsx("img",{src:u.previewUrl||u.path,alt:u.alt||a("element.refAlt",{n:t+1})}),t===0?s.jsx("span",{children:a("element.refPrimary")}):null]}),s.jsxs("div",{className:"element-ref-card__controls",children:[s.jsxs("label",{children:[a("element.refLabel"),s.jsx("input",{value:u.alt,maxLength:80,placeholder:a("element.refLabelPlaceholder"),onChange:c=>h(t,c.target.value)})]}),s.jsxs("div",{children:[s.jsx("button",{type:"button",disabled:t===0,onClick:()=>p(t,t-1),"aria-label":a("element.refMoveUp",{n:t+1}),children:"↑"}),s.jsx("button",{type:"button",disabled:t===e.length-1,onClick:()=>p(t,t+1),"aria-label":a("element.refMoveDown",{n:t+1}),children:"↓"}),s.jsx("button",{type:"button",className:"is-danger",disabled:e.length<=1,onClick:()=>b(t),"aria-label":a("element.refRemove"),children:a("element.refRemove")})]})]})]},u.id))}),l?s.jsxs("div",{className:"element-ref-grid__undo",role:"status",children:[s.jsx("span",{children:a("element.refRemoved")}),s.jsx("button",{type:"button",onClick:v,children:a("element.refUndo")})]}):null]})}const Ge=/^[A-Za-z0-9_-]{1,32}$/;function qe({bindings:e,refs:n,onSave:r}){const{t:a}=E(),m=e.find(v=>v.provider==="runway"),g=e.find(v=>v.provider==="higgsfield"),[f,o]=d.useState(m?.tag??""),[l,x]=d.useState(!1),[y,p]=d.useState(null),b=async()=>{const v=f.trim();if(v&&!Ge.test(v)){p(a("assets.bindingTagInvalid"));return}p(null),x(!0);try{const k=[{provider:"runway",mode:"stateless-refs",...v?{tag:v}:{}},...g?[g]:[]];await r(k)||p(a("assets.actionFailed"))}finally{x(!1)}};return s.jsxs("section",{className:"element-detail__section","data-testid":"character-bindings-card",children:[s.jsx("div",{className:"element-detail__section-heading",children:s.jsxs("div",{children:[s.jsx("h3",{children:a("assets.bindingsTitle")}),s.jsx("p",{children:a("assets.bindingsHelp")})]})}),s.jsxs("div",{className:"character-binding-row",children:[s.jsx("span",{className:"character-binding-row__provider",children:"Runway"}),s.jsx("span",{className:"character-binding-row__mode",children:a("assets.bindingStateless")}),s.jsx("input",{value:f,maxLength:32,placeholder:a("assets.bindingTagPlaceholder"),"aria-label":a("assets.bindingTagPlaceholder"),onChange:v=>o(v.target.value)}),s.jsx("button",{type:"button",disabled:l,onClick:()=>{b()},children:a(l?"assets.bindingSaving":"assets.bindingSave")})]}),be(n)?s.jsx("p",{className:"element-detail__error",role:"alert",children:a("assets.bindingCapWarning",{count:n.length})}):null,s.jsxs("div",{className:"character-binding-row character-binding-row--locked",children:[s.jsx("span",{className:"character-binding-row__provider",children:"Higgsfield"}),g?.status?s.jsx("span",{className:"character-binding-row__status",children:g.status}):null,s.jsx("button",{type:"button",disabled:!0,title:a("assets.bindingTrainLockedHint"),children:a("assets.bindingTrain")}),s.jsx("span",{className:"character-binding-row__badge",children:a("assets.bindingPaidPlan")})]}),g&&ve(n,g)?s.jsx("p",{className:"element-detail__error",role:"alert",children:a("assets.bindingDriftWarning")}):null,y?s.jsx("p",{className:"element-detail__error",role:"alert",children:y}):null]})}const He=["character","product","style","scene"],W=e=>e[0].toUpperCase()+e.slice(1);function Y(e){return{id:e?.id,name:e?.name??"",kind:e?.kind??"character",refs:(e?.refs??[]).filter(n=>typeof n=="string"&&n.length>0).map((n,r)=>({id:`${e?.id??"new"}-${r}-${n}`,path:n,previewUrl:`/generated/${n.split("/").map(encodeURIComponent).join("/")}`,alt:""})),notes:e?.notes??"",defaultStrength:e?.defaultStrength??.75}}function Oe({element:e,saving:n,testing:r,onSave:a,onDelete:m,onRunTestSheet:g,onSaveBindings:f}){const{t:o}=E(),[l,x]=d.useState(()=>Y(e)),[y,p]=d.useState(null);d.useEffect(()=>{x(Y(e)),p(null)},[e]);const b=800-l.notes.length,v=d.useMemo(()=>l.notes.trim()?`[Element: ${l.name.trim()||"Untitled"}] ${l.notes.trim()}`:null,[l.name,l.notes]),k=(t,c)=>x(_=>({..._,[t]:c})),h=async()=>{if(!l.name.trim())return p(o("element.errorName"));if(!l.refs.length)return p(o("element.errorRefs"));p(null),await a({...l,name:l.name.trim(),notes:l.notes.trim()?l.notes:""})},u=He.map(t=>({value:t,label:o(`element.kind${W(t)}`)}));return s.jsxs("aside",{className:"element-detail","aria-label":o("element.ariaLabel"),children:[s.jsxs("header",{className:"element-detail__header",children:[s.jsxs("div",{children:[s.jsx("span",{children:o("element.title")}),s.jsx("h2",{children:o(e?"element.titleEdit":"element.titleNew")})]}),e?s.jsx("span",{className:"element-detail__status",children:o("element.saved")}):null]}),s.jsxs("label",{className:"element-detail__field",children:[o("element.name"),s.jsx("input",{value:l.name,maxLength:120,placeholder:o("element.namePlaceholder"),onChange:t=>k("name",t.target.value)})]}),s.jsx(je,{title:o("element.kind"),items:u,value:l.kind,onChange:t=>k("kind",t)}),s.jsx("p",{className:"element-detail__kind-help",children:o(`element.help${W(l.kind)}`)}),s.jsx(Ue,{refs:l.refs,onChange:t=>k("refs",t),maxRefs:6}),e&&l.kind==="character"&&f?s.jsx(qe,{bindings:e.characterBindings??[],refs:e.refs,onSave:t=>f(e.id,t)}):null,s.jsxs("section",{className:"element-detail__section",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{children:o("element.notes")}),s.jsx("p",{children:o("element.notesHelp")})]}),b<=100?s.jsx("span",{children:o("element.remaining",{n:b})}):null]}),s.jsx("textarea",{value:l.notes,maxLength:800,rows:6,placeholder:o("element.notesPlaceholder"),onChange:t=>k("notes",t.target.value)}),v?s.jsx("p",{className:"element-detail__note-preview",children:v}):null]}),s.jsxs("section",{className:"element-detail__section",children:[s.jsxs("div",{className:"element-detail__section-heading",children:[s.jsxs("div",{children:[s.jsx("h3",{children:o("element.strength")}),s.jsx("p",{children:o("element.strengthHelp")})]}),s.jsx("output",{children:l.defaultStrength.toFixed(2)})]}),s.jsx("input",{className:"element-detail__strength",type:"range",min:"0",max:"1",step:"0.05",value:l.defaultStrength,onChange:t=>k("defaultStrength",Number(t.target.value))}),s.jsx("button",{type:"button",className:"element-detail__reset",onClick:()=>k("defaultStrength",.75),children:o("element.resetDefault")})]}),y?s.jsx("p",{className:"element-detail__error",role:"alert",children:y}):null,s.jsxs("footer",{className:"element-detail__actions",children:[s.jsx("button",{type:"button",className:"element-detail__save",disabled:n,onClick:()=>{h()},children:o(n?"element.saving":"element.save")}),s.jsx("button",{type:"button",disabled:!e||r,onClick:()=>e&&void g(e.id),children:o(r?"element.testing":"element.runTest")}),e&&m?s.jsx("button",{type:"button",className:"is-danger",onClick:()=>{m(e.id)},children:o("element.delete")}):null]})]})}const ze=["image","video","element","preset","template"],Z='button, [href], input, textarea, select, [tabindex]:not([tabindex="-1"])';function Ve(e,n){const r=d.useRef(null),a=d.useRef(null);return d.useEffect(()=>{if(!e)return;a.current=document.activeElement;const m=window.setTimeout(()=>{r.current?.querySelector(Z)?.focus()},0),g=f=>{if(f.key==="Escape"){f.preventDefault(),n();return}if(f.key!=="Tab")return;const o=Array.from(r.current?.querySelectorAll(Z)??[]).filter(y=>!y.hasAttribute("disabled")&&y.getClientRects().length>0);if(o.length===0)return;const l=o[0],x=o[o.length-1];f.shiftKey&&document.activeElement===l?(f.preventDefault(),x.focus()):!f.shiftKey&&document.activeElement===x&&(f.preventDefault(),l.focus())};return document.addEventListener("keydown",g),()=>{window.clearTimeout(m),document.removeEventListener("keydown",g),a.current?.focus()}},[n,e]),r}function Je(){const{t:e}=E(),n=j(i=>i.assets),r=j(i=>i.assetsTags),a=j(i=>i.assetsFilters),m=j(i=>i.assetsLoading),g=j(i=>i.assetsLoadError),f=j(i=>i.loadAssets),o=j(i=>i.setUIMode),l=j(i=>i.setAssetsFilters),x=j(i=>i.updateAssetItem),y=j(i=>i.deleteAssetItem),p=j(i=>i.showToast),[b,v]=d.useState(a.q),[k,h]=d.useState(null),[u,t]=d.useState(null),[c,_]=d.useState(null),A=ye(),N=j(i=>i.keyingTarget),S=j(i=>i.pendingAssetDetailId);d.useEffect(()=>{if(!S)return;const i=S;j.setState({pendingAssetDetailId:null});const F=j.getState().assets.find(T=>T.id===i)??null;_(F),l({kind:null,folderId:null,tag:null,q:""}),v(""),h(i),F||_e(i).then(({asset:T})=>{j.setState(U=>({assets:[T,...U.assets.filter(L=>L.id!==T.id)]})),_(T)}).catch(()=>{})},[S,l]);const w=d.useRef(!1);d.useEffect(()=>{if(N){w.current=!0;return}w.current&&(w.current=!1,f(!0))},[N,f]);const M=d.useMemo(()=>[{value:"",label:e("assets.kindAll")},...ze.map(i=>({value:i,label:e(`assets.kind${i[0].toUpperCase()}${i.slice(1)}`)}))],[e]);d.useEffect(()=>{f(!0)},[f]),d.useEffect(()=>{const i=window.setTimeout(()=>l({q:b}),300);return()=>window.clearTimeout(i)},[b,l]);const D=!!(a.q||a.kind||a.tag),J=n.length===0&&!m,K=a.kind==="element"&&!a.folderId&&!a.q&&!a.tag,ee=K?"assets.emptyElementsTitle":a.folderId?"assets.emptyFolderTitle":D?"assets.emptySearchTitle":"assets.emptyTitle",se=K?"assets.emptyElementsBody":a.folderId?"assets.emptyFolderBody":D?"assets.emptySearchBody":"assets.emptyBody",I=n.find(i=>i.id===k)??(c?.id===k?c:null),q=I?.kind==="element"?Ye(I):null,$=d.useCallback(()=>h(null),[]),te=Ve(!!(I&&A),$),ne=d.useCallback(()=>t(null),[]),ae=async i=>{(!i.id||!await x(i.id,{name:i.name,notes:i.notes}))&&p(e("assets.actionFailed"),!0)},le=async(i,F)=>{const U={...n.find(de=>de.id===i)?.metadata??{},characterBindings:F},L=await x(i,{metadata:U});return L||p(e("assets.actionFailed"),!0),L},ie=async(i,F)=>{const T=await x(i,{name:F});return T||p(e("assets.actionFailed"),!0),T},re=async i=>{await y(i)?$():p(e("assets.actionFailed"),!0)},oe=async()=>p(e("assets.testSheetsUnavailable"),!0);return s.jsxs("section",{className:`assets-workspace${I?" assets-workspace--detail-open":""}`,"aria-labelledby":"assets-title",children:[s.jsx(Ie,{}),s.jsxs("main",{className:"assets-workspace__main",children:[s.jsxs("header",{className:"assets-toolbar",children:[s.jsxs("div",{className:"assets-toolbar__title",children:[s.jsx("h1",{id:"assets-title",children:e("assets.title")}),s.jsx("span",{children:e("assets.itemCount",{count:n.length})})]}),s.jsxs("div",{className:"assets-toolbar__controls",children:[s.jsx("input",{type:"search",value:b,placeholder:e("assets.searchPlaceholder"),"aria-label":e("assets.searchPlaceholder"),onChange:i=>v(i.target.value)}),s.jsx(we,{items:M,value:a.kind??"",onChange:i=>l({kind:i||null}),ariaLabel:e("assets.kindAll")}),n.length>0&&s.jsx("button",{type:"button",className:"assets-clear-btn",onClick:async()=>{confirm(e("assets.clearConfirm"))&&(await ke(),f(!0))},children:e("assets.clearAll")})]}),r.length>0&&s.jsx("div",{className:"assets-tag-filter",children:r.map(i=>s.jsx("button",{type:"button",className:a.tag===i?"is-active":"",onClick:()=>l({tag:a.tag===i?null:i}),children:i},i))})]}),g&&n.length===0?s.jsxs("div",{className:"assets-empty",role:"alert",children:[s.jsx("h2",{children:e("assets.loadErrorTitle")}),s.jsx("p",{children:e("assets.loadErrorBody")}),s.jsx("button",{type:"button",className:"assets-empty__cta",onClick:()=>{f(!0)},children:e("assets.retry")})]}):J?s.jsxs("div",{className:"assets-empty",children:[s.jsx("h2",{children:e(ee)}),s.jsx("p",{children:e(se)}),K||!D&&!a.folderId?s.jsx("button",{type:"button",className:"assets-empty__cta",onClick:()=>o("classic"),children:e("nav.create")}):null]}):s.jsx(Be,{selectedId:k??void 0,onSelectAsset:h,onPreviewAsset:i=>t(Ne(i))})]}),I&&A?s.jsx("button",{type:"button",className:"assets-workspace__detail-backdrop","aria-label":e("assets.detailClose"),onClick:$}):null,I&&s.jsxs("aside",{ref:te,className:"assets-workspace__detail",role:A?"dialog":void 0,"aria-modal":A?!0:void 0,"aria-label":e("assets.detailAria",{name:I.name}),children:[s.jsx("button",{type:"button",className:"assets-workspace__detail-close",onClick:$,"aria-label":e("assets.detailClose"),children:"×"}),q?s.jsx(Oe,{element:q,saving:!1,testing:!1,onSave:ae,onSaveBindings:le,onDelete:re,onRunTestSheet:oe}):s.jsx(We,{asset:I,onRename:i=>ie(I.id,i)})]}),s.jsx(Ae,{}),u?s.jsx(Se,{item:u,onClose:ne}):null]})}function We({asset:e,onRename:n}){const{t:r,locale:a}=E(),[m,g]=d.useState(!1),[f,o]=d.useState(e.name),l=d.useRef(!1),x=typeof e.metadata?.prompt=="string"?e.metadata.prompt:null,y=typeof e.metadata?.provider=="string"?e.metadata.provider:null;d.useEffect(()=>{o(e.name),g(!1)},[e.id,e.name]);async function p(){if(l.current)return;const b=f.trim();if(!b||b===e.name){o(e.name),g(!1);return}l.current=!0;try{await n(b)||o(e.name)}finally{l.current=!1,g(!1)}}return s.jsxs("div",{className:"assets-workspace__detail-meta",children:[s.jsx("div",{className:"assets-workspace__detail-title",children:m?s.jsx("input",{className:"assets-folder-input assets-workspace__detail-name-input",value:f,autoFocus:!0,"aria-label":r("assets.renameAsset"),onChange:b=>o(b.target.value),onBlur:()=>{p()},onKeyDown:b=>{b.key==="Enter"&&p(),b.key==="Escape"&&(o(e.name),g(!1))}}):s.jsxs(s.Fragment,{children:[s.jsx("h2",{children:e.name}),s.jsx("button",{type:"button",className:"assets-workspace__detail-rename","aria-label":r("assets.renameAsset"),title:r("assets.renameAsset"),onClick:()=>g(!0),children:s.jsx(Q,{})})]})}),s.jsxs("dl",{children:[s.jsx("dt",{children:r("assets.detailKind")}),s.jsx("dd",{children:r(`assets.kind${e.kind[0].toUpperCase()}${e.kind.slice(1)}`)}),s.jsx("dt",{children:r("assets.detailCreated")}),s.jsx("dd",{children:new Intl.DateTimeFormat(a,{dateStyle:"medium",timeStyle:"short"}).format(new Date(e.createdAt))}),y?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailProvider")}),s.jsx("dd",{children:y})]}):null,x?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailPrompt")}),s.jsx("dd",{className:"assets-workspace__detail-prompt",children:x})]}):null,e.tags.length>0?s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:r("assets.detailTags")}),s.jsx("dd",{children:e.tags.join(", ")})]}):null]})]})}function Ye(e){const n=e.metadata??{},r=n.elementKind,a=n.refs,m=Array.isArray(n.characterBindings)?n.characterBindings:void 0;return{id:e.id,name:e.name,kind:r==="product"||r==="style"||r==="scene"?r:"character",refs:Array.isArray(a)?a.filter(g=>typeof g=="string"):e.filePath?[e.filePath]:[],notes:e.notes??void 0,defaultStrength:typeof n.defaultStrength=="number"?n.defaultStrength:void 0,characterBindings:m}}export{Je as AssetsWorkspace};
@@ -1,2 +1,2 @@
1
- import{u,M as l,j as e,N as k,a as h,t as j,s as _}from"./index-Bj2sxDP3.js";function C(s){const r=s.slots.filter(n=>n.kind==="text"||n.textKind).length,c=s.slots.filter(n=>n.kind==="image").length;return`${r} text / ${c} image`}function T(){const{t:s}=u(),r=l(t=>t.templates),c=l(t=>t.imageTemplateId),n=l(t=>t.setImageTemplate);return e.jsxs("section",{className:"card-news-panel",children:[e.jsxs("div",{className:"card-news-panel__head",children:[e.jsx("span",{children:s("cardNews.imageTemplate")}),e.jsx("button",{type:"button",disabled:!0,title:s("cardNews.newTemplateLater"),children:"+"})]}),e.jsx("div",{className:"card-news-template-grid",children:r.map(t=>e.jsxs("button",{type:"button",className:`card-news-template${c===t.id?" selected":""}`,onClick:()=>n(t.id),children:[e.jsx("img",{src:t.previewUrl,alt:""}),e.jsxs("span",{className:"card-news-template__body",children:[e.jsx("span",{className:"card-news-template__name",children:t.name}),e.jsx("span",{className:"card-news-template__meta",children:C(t)}),e.jsx("span",{className:"card-news-template__sizes",children:t.recommendedOutputSizes.join(" · ")})]})]},t.id))})]})}function I(){const{t:s}=u(),r=l(t=>t.roleTemplates),c=l(t=>t.roleTemplateId),n=l(t=>t.setRoleTemplate);return e.jsxs("section",{className:"card-news-panel",children:[e.jsx("div",{className:"card-news-panel__head",children:e.jsx("span",{children:s("cardNews.roleTemplate")})}),e.jsx("div",{className:"card-news-role-row",children:r.map(t=>e.jsx("button",{type:"button",className:c===t.id?"selected":"",onClick:()=>n(t.id),children:t.name},t.id))})]})}function F({status:s,locked:r}){const{t:c}=u(),n=r?"locked":s,t=n==="queued"||n==="generating";return e.jsxs("span",{className:`card-news-status-badge card-news-status-badge--${n}`,children:[t?e.jsx("span",{className:"card-news-spinner","aria-hidden":"true"}):null,c(`cardNews.status.${n}`)]})}function M(s,r){const c=`cardNews.roles.${s}`,n=r(c);return n===c?s:n}function S(){const{t:s}=u(),r=l(t=>t.activePlan),c=l(t=>t.selectedCardId),n=l(t=>t.selectCard);return r?e.jsx("div",{className:"card-news-deck","aria-label":s("common.cardDeck"),onWheel:k,children:r.cards.map(t=>e.jsxs("button",{type:"button",className:`card-news-deck-card${c===t.id?" selected":""}`,onClick:()=>n(t.id),children:[e.jsx("span",{children:String(t.order).padStart(2,"0")}),t.url?e.jsx("img",{src:t.url,alt:"",className:"card-news-deck-card__thumb"}):null,e.jsx("strong",{children:M(t.role,s)}),e.jsx("small",{children:t.headline||t.textFields.find(p=>p.renderMode==="in-image")?.text}),e.jsx(F,{status:t.status,locked:t.locked})]},t.id))}):null}const $=[];function E(){const{t:s}=u(),r=l(t=>t.activePlan?.cards??$),c=l(t=>t.generating),n={total:r.length,done:r.filter(t=>t.status==="generated").length,queued:r.filter(t=>t.status==="queued").length,errors:r.filter(t=>t.status==="error").length,skipped:r.filter(t=>t.locked||t.status==="skipped").length};return n.total?e.jsxs("div",{className:"card-news-batch-bar","aria-live":"polite",children:[e.jsx("span",{children:c?s("cardNews.progress.generating",{done:n.done,total:n.total}):s("cardNews.progress.summary",{done:n.done,total:n.total})}),e.jsx("span",{children:s("cardNews.progress.detail",{queued:n.queued,errors:n.errors,skipped:n.skipped})})]}):null}function P({meta:s}){const{t:r}=u();if(!s)return null;const c=s.mode==="structured-output"?r("cardNews.planner.structured"):s.mode==="json-mode"?r("cardNews.planner.jsonMode"):r("cardNews.planner.fallback");return e.jsxs("span",{className:"card-news-planner-badge",children:[c," · ",s.model,s.repaired?` · ${r("cardNews.planner.repaired")}`:""]})}function L(s){const r=s.textFields.filter(c=>c.renderMode==="in-image"&&c.text).map(c=>`[${c.placement}] ${c.text}`);return[s.headline,...r].filter(Boolean).join(`
1
+ import{u,M as l,j as e,N as k,a as h,t as j,s as _}from"./index-BqFlxfzT.js";function C(s){const r=s.slots.filter(n=>n.kind==="text"||n.textKind).length,c=s.slots.filter(n=>n.kind==="image").length;return`${r} text / ${c} image`}function T(){const{t:s}=u(),r=l(t=>t.templates),c=l(t=>t.imageTemplateId),n=l(t=>t.setImageTemplate);return e.jsxs("section",{className:"card-news-panel",children:[e.jsxs("div",{className:"card-news-panel__head",children:[e.jsx("span",{children:s("cardNews.imageTemplate")}),e.jsx("button",{type:"button",disabled:!0,title:s("cardNews.newTemplateLater"),children:"+"})]}),e.jsx("div",{className:"card-news-template-grid",children:r.map(t=>e.jsxs("button",{type:"button",className:`card-news-template${c===t.id?" selected":""}`,onClick:()=>n(t.id),children:[e.jsx("img",{src:t.previewUrl,alt:""}),e.jsxs("span",{className:"card-news-template__body",children:[e.jsx("span",{className:"card-news-template__name",children:t.name}),e.jsx("span",{className:"card-news-template__meta",children:C(t)}),e.jsx("span",{className:"card-news-template__sizes",children:t.recommendedOutputSizes.join(" · ")})]})]},t.id))})]})}function I(){const{t:s}=u(),r=l(t=>t.roleTemplates),c=l(t=>t.roleTemplateId),n=l(t=>t.setRoleTemplate);return e.jsxs("section",{className:"card-news-panel",children:[e.jsx("div",{className:"card-news-panel__head",children:e.jsx("span",{children:s("cardNews.roleTemplate")})}),e.jsx("div",{className:"card-news-role-row",children:r.map(t=>e.jsx("button",{type:"button",className:c===t.id?"selected":"",onClick:()=>n(t.id),children:t.name},t.id))})]})}function F({status:s,locked:r}){const{t:c}=u(),n=r?"locked":s,t=n==="queued"||n==="generating";return e.jsxs("span",{className:`card-news-status-badge card-news-status-badge--${n}`,children:[t?e.jsx("span",{className:"card-news-spinner","aria-hidden":"true"}):null,c(`cardNews.status.${n}`)]})}function M(s,r){const c=`cardNews.roles.${s}`,n=r(c);return n===c?s:n}function S(){const{t:s}=u(),r=l(t=>t.activePlan),c=l(t=>t.selectedCardId),n=l(t=>t.selectCard);return r?e.jsx("div",{className:"card-news-deck","aria-label":s("common.cardDeck"),onWheel:k,children:r.cards.map(t=>e.jsxs("button",{type:"button",className:`card-news-deck-card${c===t.id?" selected":""}`,onClick:()=>n(t.id),children:[e.jsx("span",{children:String(t.order).padStart(2,"0")}),t.url?e.jsx("img",{src:t.url,alt:"",className:"card-news-deck-card__thumb"}):null,e.jsx("strong",{children:M(t.role,s)}),e.jsx("small",{children:t.headline||t.textFields.find(p=>p.renderMode==="in-image")?.text}),e.jsx(F,{status:t.status,locked:t.locked})]},t.id))}):null}const $=[];function E(){const{t:s}=u(),r=l(t=>t.activePlan?.cards??$),c=l(t=>t.generating),n={total:r.length,done:r.filter(t=>t.status==="generated").length,queued:r.filter(t=>t.status==="queued").length,errors:r.filter(t=>t.status==="error").length,skipped:r.filter(t=>t.locked||t.status==="skipped").length};return n.total?e.jsxs("div",{className:"card-news-batch-bar","aria-live":"polite",children:[e.jsx("span",{children:c?s("cardNews.progress.generating",{done:n.done,total:n.total}):s("cardNews.progress.summary",{done:n.done,total:n.total})}),e.jsx("span",{children:s("cardNews.progress.detail",{queued:n.queued,errors:n.errors,skipped:n.skipped})})]}):null}function P({meta:s}){const{t:r}=u();if(!s)return null;const c=s.mode==="structured-output"?r("cardNews.planner.structured"):s.mode==="json-mode"?r("cardNews.planner.jsonMode"):r("cardNews.planner.fallback");return e.jsxs("span",{className:"card-news-planner-badge",children:[c," · ",s.model,s.repaired?` · ${r("cardNews.planner.repaired")}`:""]})}function L(s){const r=s.textFields.filter(c=>c.renderMode==="in-image"&&c.text).map(c=>`[${c.placement}] ${c.text}`);return[s.headline,...r].filter(Boolean).join(`
2
2
  `)}function R(s,r){const c=s.slotId?r?.slots.find(n=>n.id===s.slotId):null;return c?{left:`${c.x/20.48}%`,top:`${c.y/20.48}%`,width:`${c.w/20.48}%`,minHeight:`${c.h/20.48}%`}:B(s)}const b={"top-left":{left:"10%",top:"10%",width:"34%"},"top-center":{left:"50%",top:"10%",width:"42%",transform:"translateX(-50%)"},"top-right":{right:"10%",top:"10%",width:"34%"},"center-left":{left:"10%",top:"50%",width:"34%",transform:"translateY(-50%)"},center:{left:"50%",top:"50%",width:"44%",transform:"translate(-50%, -50%)"},"center-right":{right:"10%",top:"50%",width:"34%",transform:"translateY(-50%)"},"bottom-left":{left:"10%",bottom:"10%",width:"34%"},"bottom-center":{left:"50%",bottom:"10%",width:"42%",transform:"translateX(-50%)"},"bottom-right":{right:"10%",bottom:"10%",width:"34%"},free:{left:"50%",top:"50%",width:"44%",transform:"translate(-50%, -50%)"}};function B(s){return b[s.placement]||b.center}function D(){const{t:s}=u(),r=l(a=>a.activePlan),c=l(a=>a.selectedCardId),n=l(a=>a.selectedTextFieldId),t=l(a=>a.templates),p=l(a=>a.plannerMeta),m=l(a=>a.retryCard),x=l(a=>a.selectTextField),o=r?.cards.find(a=>a.id===c)||r?.cards[0],w=r?t.find(a=>a.id===r.imageTemplateId):void 0,d=o?.textFields.filter(a=>a.renderMode==="in-image")||[];return!r||!o?e.jsxs("section",{className:"card-news-empty",children:[e.jsxs("div",{className:"card-news-empty__deck","aria-hidden":"true",children:[e.jsx("div",{className:"card-news-empty__card card-news-empty__card--back"}),e.jsx("div",{className:"card-news-empty__card card-news-empty__card--mid"}),e.jsxs("div",{className:"card-news-empty__card",children:[e.jsx("span",{}),e.jsx("strong",{}),e.jsx("em",{})]})]}),e.jsxs("div",{className:"card-news-empty__copy",children:[e.jsx("span",{children:s("uiMode.cardNews")}),e.jsx("h2",{children:s("cardNews.emptyTitle")}),e.jsx("p",{children:s("cardNews.emptyBody")})]})]}):e.jsxs("section",{className:"card-news-stage",children:[e.jsxs("div",{className:"card-news-stage__header",children:[e.jsxs("div",{children:[e.jsx("h2",{children:r.title}),e.jsx("p",{children:r.generationStrategy}),e.jsx(P,{meta:p})]}),e.jsxs("span",{children:[o.order," / ",r.cards.length]})]}),e.jsx(E,{}),e.jsxs("div",{className:"card-news-preview",children:[o.status==="queued"||o.status==="generating"?e.jsx("div",{className:"card-news-preview__loading",children:s("cardNews.progress.cardGenerating")}):o.status==="error"?e.jsxs("div",{className:"card-news-preview__error",children:[e.jsx("span",{children:o.error||s("cardNews.error")}),o.locked?null:e.jsx("button",{type:"button",onClick:()=>{m(o.id)},children:s("cardNews.retryCard")})]}):o.url?e.jsx("img",{src:o.url,alt:o.headline}):e.jsx("div",{className:"card-news-preview__slot"}),d.length?e.jsx("div",{className:"card-news-stage-overlay",children:d.map(a=>e.jsx("button",{type:"button",className:`card-news-stage-overlay__field card-news-stage-overlay__field--${a.placement}${n===a.id?" selected":""}`,style:R(a,w),onClick:()=>x(a.id),"aria-label":s("cardNews.selectTextField",{text:a.text||a.kind}),children:e.jsx("span",{children:a.text||a.kind})},a.id))}):null]}),o.url?e.jsxs("div",{className:"card-news-result-actions",children:[e.jsx("button",{type:"button",onClick:()=>navigator.clipboard?.writeText(o.visualPrompt),children:s("cardNews.actions.copyPrompt")}),e.jsx("button",{type:"button",onClick:()=>navigator.clipboard?.writeText(L(o)),children:s("cardNews.actions.copyCopy")}),e.jsx("a",{href:o.url,target:"_blank",rel:"noreferrer",children:s("cardNews.actions.openImage")}),e.jsx("a",{href:o.url,download:!0,children:s("cardNews.actions.downloadCard")})]}):null]})}function y(s,r){const c=`cardNews.placements.${s}`,n=r(c);return n===c?s:n}function q({placement:s}){const{t:r}=u();return e.jsx("span",{className:"card-news-placement-chip",children:y(s,r)})}const K=["headline","body","caption","cta","badge","number"],A=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right","free"],H=["in-image","ui-only"],Y=["primary","secondary","supporting"];function N(s,r,c){const n=`cardNews.${s}.${r}`,t=c(n);return t===n?r:t}function z({field:s,locked:r,selected:c=!1,onSelect:n,onChange:t,onRemove:p}){const{t:m}=u(),x=s.text.length,o=typeof s.maxChars=="number"&&x>s.maxChars,w=s.maxChars===null||s.maxChars>80,d=h.useMemo(()=>K.map(i=>({value:i,label:N("textKinds",i,m)})),[m]),a=h.useMemo(()=>A.map(i=>({value:i,label:y(i,m)})),[m]),g=h.useMemo(()=>H.map(i=>({value:i,label:N("renderModes",i,m)})),[m]),f=h.useMemo(()=>Y.map(i=>({value:i,label:N("hierarchy",i,m)})),[m]);return e.jsxs("div",{className:`card-news-text-field-card${c?" selected":""}`,onClick:n,children:[e.jsxs("div",{className:"card-news-text-field-card__header",children:[e.jsx("span",{children:N("textKinds",s.kind,m)}),e.jsx(q,{placement:s.placement})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:m("cardNews.textFieldText")}),w?e.jsx("textarea",{value:s.text,disabled:r,onChange:i=>t({text:i.target.value,source:"user"})}):e.jsx("input",{value:s.text,disabled:r,onChange:i=>t({text:i.target.value,source:"user"})})]}),e.jsxs("div",{className:"card-news-text-field-card__grid",children:[e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:m("cardNews.textKind")}),e.jsx(j,{items:d,value:s.kind,disabled:r,onChange:i=>t({kind:i,source:"user"})})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:m("cardNews.placement")}),e.jsx(j,{items:a,value:s.placement,disabled:r,onChange:i=>t({placement:i,source:"user"})})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:m("cardNews.renderMode")}),e.jsx(j,{items:g,value:s.renderMode,disabled:r,onChange:i=>t({renderMode:i,source:"user"})})]}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:m("cardNews.hierarchyLabel")}),e.jsx(j,{items:f,value:s.hierarchy,disabled:r,onChange:i=>t({hierarchy:i,source:"user"})})]})]}),e.jsxs("div",{className:`card-news-text-field-card__meta${o?" over":""}`,children:[e.jsx("span",{children:s.maxChars===null?x:`${x}/${s.maxChars}`}),o?e.jsx("span",{children:m("cardNews.textTooLong")}):null,p?e.jsx("button",{type:"button",disabled:r,onClick:p,children:m("cardNews.removeTextField")}):null]})]})}function O(){return{id:`tf_${Date.now().toString(36)}`,kind:"body",text:"",renderMode:"in-image",placement:"center",slotId:null,hierarchy:"supporting",maxChars:null,language:null,source:"user"}}function W(){const{t:s}=u(),r=l(a=>a.activePlan),c=l(a=>a.selectedCardId),n=l(a=>a.selectedTextFieldId),t=l(a=>a.updateCard),p=l(a=>a.updateTextField),m=l(a=>a.addTextField),x=l(a=>a.removeTextField),o=l(a=>a.selectTextField),w=l(a=>a.retryCard),d=r?.cards.find(a=>a.id===c)||r?.cards[0];return d?e.jsxs("aside",{className:"card-news-inspector",children:[e.jsx("div",{className:"section-title",children:s("cardNews.inspector")}),e.jsxs("div",{className:"card-news-inspector-group",children:[e.jsx("span",{className:"card-news-inspector-label",children:s("cardNews.cardTitle")}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:s("cardNews.headline")}),e.jsx("input",{value:d.headline,disabled:d.locked,onChange:a=>t(d.id,{headline:a.target.value})})]})]}),e.jsxs("div",{className:"card-news-inspector-group",children:[e.jsxs("div",{className:"card-news-inspector-row",children:[e.jsx("span",{className:"card-news-inspector-label",children:s("cardNews.textFields")}),e.jsx("button",{type:"button",className:"secondary-btn",disabled:d.locked,onClick:()=>m(d.id,O()),children:s("cardNews.addTextField")})]}),d.textFields.length?d.textFields.map(a=>e.jsx(z,{field:a,locked:d.locked,selected:n===a.id,onSelect:()=>o(a.id),onChange:g=>p(d.id,a.id,g),onRemove:()=>x(d.id,a.id)},a.id)):e.jsx("p",{className:"card-news-muted",children:s("cardNews.noTextFields")})]}),e.jsxs("details",{className:"card-news-inspector-group card-news-advanced-prompt",children:[e.jsx("summary",{children:s("cardNews.designPrompt")}),e.jsxs("label",{className:"card-news-field",children:[e.jsx("span",{children:s("cardNews.visualPrompt")}),e.jsx("textarea",{value:d.visualPrompt,disabled:d.locked,onChange:a=>t(d.id,{visualPrompt:a.target.value})})]})]}),d.imageFilename?e.jsxs("div",{className:"card-news-generated-meta",children:[e.jsx("span",{children:s("cardNews.generatedMeta")}),e.jsx("code",{children:d.imageFilename}),e.jsx("span",{children:d.status})]}):null,d.locked?e.jsx("p",{className:"card-news-locked-help",children:s("cardNews.lockedHelp")}):null,e.jsx("button",{type:"button",className:`secondary-btn${d.locked?" active":""}`,onClick:()=>t(d.id,{locked:!d.locked}),children:d.locked?s("cardNews.locked"):s("cardNews.unlocked")}),e.jsx("button",{type:"button",className:"secondary-btn",disabled:d.locked||!["draft","error"].includes(d.status),onClick:()=>{w(d.id)},children:s("cardNews.retryCard")})]}):e.jsxs("aside",{className:"card-news-inspector card-news-inspector-empty",children:[e.jsx("div",{className:"section-title",children:s("cardNews.inspector")}),e.jsxs("div",{className:"card-news-inspector-empty__mock","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("strong",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsx("p",{children:s("cardNews.noCard")})]})}const v="ima2:cardNewsMobileNoticeShown";function X(){const{t:s}=u(),r=_(),[c,n]=h.useState(()=>{if(typeof window>"u")return!0;try{return localStorage.getItem(v)==="1"}catch{return!1}});if(!r||c)return null;const t=()=>{try{localStorage.setItem(v,"1")}catch{}n(!0)};return e.jsxs("div",{className:"card-news-mobile-notice",role:"status",children:[e.jsx("span",{children:s("mobile.cardNewsBanner")}),e.jsx("button",{type:"button",onClick:t,children:s("mobile.dismiss")})]})}function U(){const{t:s}=u(),r=l(n=>n.hydrate),c=l(n=>n.error);return h.useEffect(()=>{r()},[r]),e.jsxs("main",{className:"card-news-workspace","aria-label":s("cardNews.workspace"),children:[e.jsx(X,{}),e.jsxs("div",{className:"card-news-setup",children:[e.jsx(T,{}),e.jsx(I,{})]}),e.jsxs("div",{className:"card-news-main",children:[c?e.jsx("div",{className:"card-news-error",role:"alert",children:c}):null,e.jsx(D,{}),e.jsx(S,{})]}),e.jsx(W,{})]})}export{U as CardNewsWorkspace};
@@ -1 +1 @@
1
- import{q as j,u as _,aq as b,C as N,j as e,b as p,a as n}from"./index-Bj2sxDP3.js";async function f(){return j("/api/generation-requests")}async function v(a){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(a);return}const o=document.createElement("textarea");o.value=a,o.style.position="fixed",o.style.opacity="0",document.body.appendChild(o),o.select();try{document.execCommand("copy")}finally{document.body.removeChild(o)}}function y({entry:a,onClose:o,onCopyPrompt:i}){const{t:s}=_(),l=b(!0,o),r=a.succeeded===0;return N.createPortal(e.jsxs("div",{className:"generation-log-detail",role:"presentation",children:[e.jsx("div",{className:"generation-log-detail__backdrop",onClick:o}),e.jsxs("div",{ref:l,className:"generation-log-detail__content",role:"dialog","aria-modal":"true","aria-labelledby":"generation-log-detail-title",tabIndex:-1,children:[e.jsxs("div",{className:"generation-log-detail__header",children:[e.jsxs("h2",{id:"generation-log-detail-title",className:"generation-log-detail__title",children:[s("generationLog.detailTitle"),e.jsxs("span",{className:`generation-log-detail__badge${r?" is-error":" is-success"}`,children:[a.succeeded,"/",a.requested]})]}),e.jsx("button",{type:"button",className:"generation-log-detail__close",onClick:o,"aria-label":s("common.close"),children:"×"})]}),e.jsxs("div",{className:"generation-log-detail__grid",children:[e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailTime")}),e.jsx("span",{children:new Date(a.createdAt).toLocaleString()}),e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailRequestId")}),e.jsx("span",{className:"generation-log-detail__mono",children:a.requestId}),e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailCounts")}),e.jsxs("span",{children:[a.succeeded," / ",a.requested]}),a.error?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailError")}),e.jsx("span",{className:"generation-log-detail__mono is-error",children:a.error})]}):null,a.errorMessage?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailErrorMessage")}),e.jsx("span",{className:"generation-log-detail__reason",children:a.errorMessage})]}):null]}),e.jsxs("div",{className:"generation-log-detail__section",children:[e.jsx("div",{className:"generation-log-detail__label",children:s("generationLog.detailPrompt")}),e.jsx("div",{className:"generation-log-detail__prompt",children:a.prompt||s("generationLog.detailPromptEmpty")})]}),e.jsx("div",{className:"generation-log-detail__footer",children:e.jsx("button",{type:"button",className:"generation-log-detail__copy",onClick:()=>i(a),"data-modal-initial-focus":!0,children:s("generationLog.copy")})})]})]}),document.body)}function q(){const{t:a}=_(),o=p(t=>t.showToast),i=p(t=>t.activeGenerations),[s,l]=n.useState([]),[r,d]=n.useState(!0),[x,g]=n.useState(!1),[u,m]=n.useState(null),c=n.useCallback(async()=>{d(!0),g(!1);try{const t=await f();l(t.items)}catch{l([]),g(!0)}finally{d(!1)}},[]);n.useEffect(()=>{c()},[c,i]);const h=async t=>{try{await v(t.prompt),o(a("generationLog.copied"))}catch{o(a("toast.copyFailed"),!0)}};return r?e.jsx("div",{className:"generation-request-log__empty",children:a("common.loading")}):x?e.jsxs("div",{className:"generation-request-log__empty",role:"alert",children:[e.jsx("span",{children:a("generationLog.loadFailed")}),e.jsx("button",{type:"button",onClick:()=>{c()},children:a("generationLog.retry")})]}):e.jsxs("div",{className:"generation-request-log",role:"list",children:[s.length===0?e.jsx("div",{className:"generation-request-log__empty",children:a("generationLog.empty")}):s.map(t=>e.jsxs("button",{type:"button",role:"listitem",className:"generation-request-log__item",onClick:()=>m(t),title:a("generationLog.detailOpen"),children:[e.jsx("span",{className:"generation-request-log__prompt",children:t.prompt}),e.jsxs("span",{className:`generation-request-log__count${t.succeeded===0?" is-error":" is-success"}`,children:[t.succeeded,"/",t.requested]})]},t.id)),u?e.jsx(y,{entry:u,onClose:()=>m(null),onCopyPrompt:t=>{h(t)}}):null]})}export{q as GenerationRequestLogPanel};
1
+ import{q as j,u as _,aq as b,C as N,j as e,b as p,a as n}from"./index-BqFlxfzT.js";async function f(){return j("/api/generation-requests")}async function v(a){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(a);return}const o=document.createElement("textarea");o.value=a,o.style.position="fixed",o.style.opacity="0",document.body.appendChild(o),o.select();try{document.execCommand("copy")}finally{document.body.removeChild(o)}}function y({entry:a,onClose:o,onCopyPrompt:i}){const{t:s}=_(),l=b(!0,o),r=a.succeeded===0;return N.createPortal(e.jsxs("div",{className:"generation-log-detail",role:"presentation",children:[e.jsx("div",{className:"generation-log-detail__backdrop",onClick:o}),e.jsxs("div",{ref:l,className:"generation-log-detail__content",role:"dialog","aria-modal":"true","aria-labelledby":"generation-log-detail-title",tabIndex:-1,children:[e.jsxs("div",{className:"generation-log-detail__header",children:[e.jsxs("h2",{id:"generation-log-detail-title",className:"generation-log-detail__title",children:[s("generationLog.detailTitle"),e.jsxs("span",{className:`generation-log-detail__badge${r?" is-error":" is-success"}`,children:[a.succeeded,"/",a.requested]})]}),e.jsx("button",{type:"button",className:"generation-log-detail__close",onClick:o,"aria-label":s("common.close"),children:"×"})]}),e.jsxs("div",{className:"generation-log-detail__grid",children:[e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailTime")}),e.jsx("span",{children:new Date(a.createdAt).toLocaleString()}),e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailRequestId")}),e.jsx("span",{className:"generation-log-detail__mono",children:a.requestId}),e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailCounts")}),e.jsxs("span",{children:[a.succeeded," / ",a.requested]}),a.error?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailError")}),e.jsx("span",{className:"generation-log-detail__mono is-error",children:a.error})]}):null,a.errorMessage?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"generation-log-detail__label",children:s("generationLog.detailErrorMessage")}),e.jsx("span",{className:"generation-log-detail__reason",children:a.errorMessage})]}):null]}),e.jsxs("div",{className:"generation-log-detail__section",children:[e.jsx("div",{className:"generation-log-detail__label",children:s("generationLog.detailPrompt")}),e.jsx("div",{className:"generation-log-detail__prompt",children:a.prompt||s("generationLog.detailPromptEmpty")})]}),e.jsx("div",{className:"generation-log-detail__footer",children:e.jsx("button",{type:"button",className:"generation-log-detail__copy",onClick:()=>i(a),"data-modal-initial-focus":!0,children:s("generationLog.copy")})})]})]}),document.body)}function q(){const{t:a}=_(),o=p(t=>t.showToast),i=p(t=>t.activeGenerations),[s,l]=n.useState([]),[r,d]=n.useState(!0),[x,g]=n.useState(!1),[u,m]=n.useState(null),c=n.useCallback(async()=>{d(!0),g(!1);try{const t=await f();l(t.items)}catch{l([]),g(!0)}finally{d(!1)}},[]);n.useEffect(()=>{c()},[c,i]);const h=async t=>{try{await v(t.prompt),o(a("generationLog.copied"))}catch{o(a("toast.copyFailed"),!0)}};return r?e.jsx("div",{className:"generation-request-log__empty",children:a("common.loading")}):x?e.jsxs("div",{className:"generation-request-log__empty",role:"alert",children:[e.jsx("span",{children:a("generationLog.loadFailed")}),e.jsx("button",{type:"button",onClick:()=>{c()},children:a("generationLog.retry")})]}):e.jsxs("div",{className:"generation-request-log",role:"list",children:[s.length===0?e.jsx("div",{className:"generation-request-log__empty",children:a("generationLog.empty")}):s.map(t=>e.jsxs("button",{type:"button",role:"listitem",className:"generation-request-log__item",onClick:()=>m(t),title:a("generationLog.detailOpen"),children:[e.jsx("span",{className:"generation-request-log__prompt",children:t.prompt}),e.jsxs("span",{className:`generation-request-log__count${t.succeeded===0?" is-error":" is-success"}`,children:[t.succeeded,"/",t.requested]})]},t.id)),u?e.jsx(y,{entry:u,onClose:()=>m(null),onCopyPrompt:t=>{h(t)}}):null]})}export{q as GenerationRequestLogPanel};
@@ -1 +1 @@
1
- import{b as i,u as m,ae as I,j as e,af as k,ag as A,t as P,ah as E,a as x,ai as M,aj as R,ak as T,al as w,am as C,an as L,ao as O,ap as H}from"./index-Bj2sxDP3.js";const S={oauth:"GPT OAuth",api:"GPT API",grok:"Grok OAuth","grok-api":"Grok API",agy:"Antigravity","gemini-api":"Gemini API",atlascloud:"Atlas Cloud",minimax:"MiniMax"};function G(s){if(s.kind==="attachment")return s.source.dataUrl;if(s.source.thumbnailUrl)return s.source.thumbnailUrl;const t=s.source.referenceFilenames[0];if(t)return t.startsWith("/generated/")?t:`/generated/${t.split("/").map(encodeURIComponent).join("/")}`}function U({providerAvailability:s}){const t=i(o=>o.prompt),r=i(o=>o.setPrompt),n=i(o=>o.provider),a=i(o=>o.setProvider),c=i(o=>o.selectedPresetIds),p=i(o=>o.removePreset),d=i(o=>o.generate),j=i(o=>o.activeGenerations),h=i(o=>o.trayItems),{t:l}=m(),f=new Set(c),b=I().filter(o=>f.has(o.id)),v=j>0,y=Object.entries(S).map(([o,u])=>{const g=o,_=s[g];return{value:g,label:u,sub:_.ok?l("readiness.ready"):_.reason,disabled:!_.ok}});return e.jsxs("div",{className:"home-prompt",children:[b.length>0?e.jsx(k,{className:"home-prompt__chips",ariaLabel:l("home.selectedPresets"),children:b.map(o=>e.jsx(A,{selected:!0,onRemove:()=>p(o.id),removeLabel:l("common.removeNamed",{name:o.name}),title:o.category,children:o.name},o.id))}):null,h.length>0?e.jsxs("div",{className:"home-prompt__reference-strip",role:"group","aria-label":l("home.referenceTrayAria",{count:h.length}),children:[e.jsx("span",{className:"home-prompt__reference-thumbs","aria-hidden":"true",children:h.map(o=>{const u=G(o);return e.jsx("span",{className:"home-prompt__reference-thumb",children:u?e.jsx("img",{src:u,alt:"",loading:"lazy",decoding:"async"}):"@"},o.tokenId)})}),e.jsx("span",{className:"home-prompt__reference-count",children:l("home.referenceTrayCount",{count:h.length})})]}):null,e.jsx("label",{className:"home-prompt__label",htmlFor:"home-prompt-input",children:l("prompt.label")}),e.jsx("textarea",{id:"home-prompt-input",className:"home-prompt__textarea",rows:5,value:t,placeholder:l("prompt.placeholder"),onChange:o=>r(o.target.value)}),e.jsxs("div",{className:"home-prompt__footer",children:[e.jsx(P,{className:"home-prompt__provider",items:y,value:n,onChange:a,ariaLabel:l("readiness.provider")}),e.jsx("button",{type:"button",className:"home-prompt__generate",disabled:v||t.trim().length===0,onClick:()=>{d();const o=i.getState().setUIMode;o("classic")},children:v?l("generate.buttonLoading",{n:j}):l("generate.button")})]})]})}const N=/\.(mp4|webm|mov)(?:$|[?#])/i;function D(s){return s.mediaType==="video"||N.test(s.filename??"")||N.test(s.url??s.image)?s.thumb:s.thumb||s.url||s.image||void 0}function V({item:s,featured:t}){const{t:r}=m(),[n,a]=x.useState(!1),c=D(s),p=(s.userPrompt?.trim()||s.prompt?.trim()||r("home.untitledResult")).slice(0,60),d=r("home.recentResultAlt",{prompt:p});return!c||n?e.jsx("div",{className:"home-recent-card__fallback",role:"img","aria-label":d,children:r("home.mediaUnavailable")}):e.jsx("img",{src:c,alt:d,loading:t?"eager":"lazy",decoding:"async",onError:()=>a(!0)})}function B(){const s=i(n=>n.history),{t}=m(),r=s.slice(0,5);return r.length===0?e.jsx("p",{className:"home-recent-empty",role:"status",children:t("history.emptyRecent")}):e.jsx("div",{className:"home-recent-row",role:"list","aria-label":t("home.recentTitle"),children:r.map((n,a)=>{const c=a===0;return e.jsx("figure",{className:`home-recent-card${c?" is-featured":""}`,role:"listitem",children:e.jsx(V,{item:n,featured:c})},E(n))})})}function $(){return e.jsxs("svg",{className:"home-hero__mode-arrow",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[e.jsx("path",{d:"M5 12h14"}),e.jsx("path",{d:"m12 5 7 7-7 7"})]})}function F(){const{t:s}=m(),t=M(),r=x.useMemo(()=>Object.values(t).filter(a=>a?.ok).length,[t]),n=x.useMemo(()=>Object.keys(t).length,[t]);return e.jsxs("div",{className:"home-hero",children:[e.jsx("div",{className:"home-hero__mark","aria-hidden":"true",children:"IMA2"}),e.jsxs("header",{className:"home-hero__intro",children:[e.jsx("h1",{className:"home-hero__title",children:s("home.heroTitle")}),e.jsx("p",{className:"home-hero__lede",children:s("home.heroLede")})]}),e.jsxs("p",{className:"home-hero__readiness",role:"status",children:[e.jsx("span",{className:`home-hero__dot${r>0?" is-ready":""}`,"aria-hidden":"true"}),r>0?s("home.lanesReady",{ready:r,total:n}):s("home.lanesNone")]}),e.jsx("div",{className:"home-workspace__composer",children:e.jsx(U,{providerAvailability:t})}),e.jsxs("section",{className:"home-workspace__recent","aria-labelledby":"home-recent-title",children:[e.jsx("h2",{id:"home-recent-title",children:s("home.recentTitle")}),e.jsx(B,{})]}),e.jsx(W,{})]})}function W(){const{t:s}=m(),t=i(a=>a.setUIMode),r=[{mode:"classic",label:s("nav.create"),hint:s("home.modeCreateHint"),enabled:!0,icon:R},{mode:"node",label:s("nav.node"),hint:s("home.modeNodeHint"),enabled:w,icon:T},{mode:"agent",label:s("nav.agent"),hint:s("home.modeAgentHint"),enabled:L,icon:C},{mode:"assets",label:s("nav.assets"),hint:s("home.modeAssetsHint"),enabled:!0,icon:O}];function n(a){t(a),history.replaceState(null,"",H[a]??"#create")}return e.jsxs("nav",{className:"home-modes","aria-label":s("home.modesTitle"),children:[e.jsx("h2",{className:"home-modes__title",children:s("home.modesTitle")}),r.filter(a=>a.enabled).map(a=>e.jsxs("button",{type:"button",className:"home-modes__item",onClick:()=>n(a.mode),children:[e.jsx("span",{className:"home-modes__icon",children:e.jsx(a.icon,{})}),e.jsx("span",{className:"home-modes__label",children:a.label}),e.jsx("span",{className:"home-modes__hint",children:a.hint}),e.jsx($,{})]},a.mode))]})}function K(){const{t:s}=m();return e.jsx("section",{className:"home-workspace","aria-label":s("nav.home"),children:e.jsx("div",{className:"home-workspace__inner",children:e.jsx(F,{})})})}export{K as HomeWorkspace};
1
+ import{b as i,u as m,ae as I,j as e,af as k,ag as A,t as P,ah as E,a as x,ai as M,aj as R,ak as T,al as w,am as C,an as L,ao as O,ap as H}from"./index-BqFlxfzT.js";const S={oauth:"GPT OAuth",api:"GPT API",grok:"Grok OAuth","grok-api":"Grok API",agy:"Antigravity","gemini-api":"Gemini API",atlascloud:"Atlas Cloud",minimax:"MiniMax"};function G(s){if(s.kind==="attachment")return s.source.dataUrl;if(s.source.thumbnailUrl)return s.source.thumbnailUrl;const t=s.source.referenceFilenames[0];if(t)return t.startsWith("/generated/")?t:`/generated/${t.split("/").map(encodeURIComponent).join("/")}`}function U({providerAvailability:s}){const t=i(o=>o.prompt),r=i(o=>o.setPrompt),n=i(o=>o.provider),a=i(o=>o.setProvider),c=i(o=>o.selectedPresetIds),p=i(o=>o.removePreset),d=i(o=>o.generate),j=i(o=>o.activeGenerations),h=i(o=>o.trayItems),{t:l}=m(),f=new Set(c),b=I().filter(o=>f.has(o.id)),v=j>0,y=Object.entries(S).map(([o,u])=>{const g=o,_=s[g];return{value:g,label:u,sub:_.ok?l("readiness.ready"):_.reason,disabled:!_.ok}});return e.jsxs("div",{className:"home-prompt",children:[b.length>0?e.jsx(k,{className:"home-prompt__chips",ariaLabel:l("home.selectedPresets"),children:b.map(o=>e.jsx(A,{selected:!0,onRemove:()=>p(o.id),removeLabel:l("common.removeNamed",{name:o.name}),title:o.category,children:o.name},o.id))}):null,h.length>0?e.jsxs("div",{className:"home-prompt__reference-strip",role:"group","aria-label":l("home.referenceTrayAria",{count:h.length}),children:[e.jsx("span",{className:"home-prompt__reference-thumbs","aria-hidden":"true",children:h.map(o=>{const u=G(o);return e.jsx("span",{className:"home-prompt__reference-thumb",children:u?e.jsx("img",{src:u,alt:"",loading:"lazy",decoding:"async"}):"@"},o.tokenId)})}),e.jsx("span",{className:"home-prompt__reference-count",children:l("home.referenceTrayCount",{count:h.length})})]}):null,e.jsx("label",{className:"home-prompt__label",htmlFor:"home-prompt-input",children:l("prompt.label")}),e.jsx("textarea",{id:"home-prompt-input",className:"home-prompt__textarea",rows:5,value:t,placeholder:l("prompt.placeholder"),onChange:o=>r(o.target.value)}),e.jsxs("div",{className:"home-prompt__footer",children:[e.jsx(P,{className:"home-prompt__provider",items:y,value:n,onChange:a,ariaLabel:l("readiness.provider")}),e.jsx("button",{type:"button",className:"home-prompt__generate",disabled:v||t.trim().length===0,onClick:()=>{d();const o=i.getState().setUIMode;o("classic")},children:v?l("generate.buttonLoading",{n:j}):l("generate.button")})]})]})}const N=/\.(mp4|webm|mov)(?:$|[?#])/i;function D(s){return s.mediaType==="video"||N.test(s.filename??"")||N.test(s.url??s.image)?s.thumb:s.thumb||s.url||s.image||void 0}function V({item:s,featured:t}){const{t:r}=m(),[n,a]=x.useState(!1),c=D(s),p=(s.userPrompt?.trim()||s.prompt?.trim()||r("home.untitledResult")).slice(0,60),d=r("home.recentResultAlt",{prompt:p});return!c||n?e.jsx("div",{className:"home-recent-card__fallback",role:"img","aria-label":d,children:r("home.mediaUnavailable")}):e.jsx("img",{src:c,alt:d,loading:t?"eager":"lazy",decoding:"async",onError:()=>a(!0)})}function B(){const s=i(n=>n.history),{t}=m(),r=s.slice(0,5);return r.length===0?e.jsx("p",{className:"home-recent-empty",role:"status",children:t("history.emptyRecent")}):e.jsx("div",{className:"home-recent-row",role:"list","aria-label":t("home.recentTitle"),children:r.map((n,a)=>{const c=a===0;return e.jsx("figure",{className:`home-recent-card${c?" is-featured":""}`,role:"listitem",children:e.jsx(V,{item:n,featured:c})},E(n))})})}function $(){return e.jsxs("svg",{className:"home-hero__mode-arrow",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[e.jsx("path",{d:"M5 12h14"}),e.jsx("path",{d:"m12 5 7 7-7 7"})]})}function F(){const{t:s}=m(),t=M(),r=x.useMemo(()=>Object.values(t).filter(a=>a?.ok).length,[t]),n=x.useMemo(()=>Object.keys(t).length,[t]);return e.jsxs("div",{className:"home-hero",children:[e.jsx("div",{className:"home-hero__mark","aria-hidden":"true",children:"IMA2"}),e.jsxs("header",{className:"home-hero__intro",children:[e.jsx("h1",{className:"home-hero__title",children:s("home.heroTitle")}),e.jsx("p",{className:"home-hero__lede",children:s("home.heroLede")})]}),e.jsxs("p",{className:"home-hero__readiness",role:"status",children:[e.jsx("span",{className:`home-hero__dot${r>0?" is-ready":""}`,"aria-hidden":"true"}),r>0?s("home.lanesReady",{ready:r,total:n}):s("home.lanesNone")]}),e.jsx("div",{className:"home-workspace__composer",children:e.jsx(U,{providerAvailability:t})}),e.jsxs("section",{className:"home-workspace__recent","aria-labelledby":"home-recent-title",children:[e.jsx("h2",{id:"home-recent-title",children:s("home.recentTitle")}),e.jsx(B,{})]}),e.jsx(W,{})]})}function W(){const{t:s}=m(),t=i(a=>a.setUIMode),r=[{mode:"classic",label:s("nav.create"),hint:s("home.modeCreateHint"),enabled:!0,icon:R},{mode:"node",label:s("nav.node"),hint:s("home.modeNodeHint"),enabled:w,icon:T},{mode:"agent",label:s("nav.agent"),hint:s("home.modeAgentHint"),enabled:L,icon:C},{mode:"assets",label:s("nav.assets"),hint:s("home.modeAssetsHint"),enabled:!0,icon:O}];function n(a){t(a),history.replaceState(null,"",H[a]??"#create")}return e.jsxs("nav",{className:"home-modes","aria-label":s("home.modesTitle"),children:[e.jsx("h2",{className:"home-modes__title",children:s("home.modesTitle")}),r.filter(a=>a.enabled).map(a=>e.jsxs("button",{type:"button",className:"home-modes__item",onClick:()=>n(a.mode),children:[e.jsx("span",{className:"home-modes__icon",children:e.jsx(a.icon,{})}),e.jsx("span",{className:"home-modes__label",children:a.label}),e.jsx("span",{className:"home-modes__hint",children:a.hint}),e.jsx($,{})]},a.mode))]})}function K(){const{t:s}=m();return e.jsx("section",{className:"home-workspace","aria-label":s("nav.home"),children:e.jsx("div",{className:"home-workspace__inner",children:e.jsx(F,{})})})}export{K as HomeWorkspace};