@smart-cloud/ai-kit-ui 1.1.39 → 1.1.40

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.
package/dist/index.cjs CHANGED
@@ -5,7 +5,7 @@
5
5
  initial-value: 0deg;
6
6
  }
7
7
  `,(n.head??n.documentElement).appendChild(a)}function Pn({stylesheets:n,children:a,rootElementId:p,mode:g="local",overlayRootId:i="ai-kit-overlay-root",setHost:f}){let S=(0,Ce.useRef)(null),[D,Q]=(0,Ce.useState)(null),[X,F]=(0,Ce.useState)(null),V=(0,Ce.useMemo)(()=>[...n].join("|"),[n]);(0,Ce.useLayoutEffect)(()=>{if(!S.current)return;let te=g==="overlay"?wa():S.current.ownerDocument,A;if(g==="overlay"){let K=te.getElementById(i);K||(K=te.createElement("div"),K.id=i,K.style.position="fixed",K.style.inset="0",K.style.width="0",K.style.height="0",K.style.zIndex="2147483647",K.style.pointerEvents="none",te.body.appendChild(K)),A=K}else A=S.current;f(A);let u=A.shadowRoot??A.attachShadow({mode:"open"}),x=u.querySelector(`#${CSS.escape(p)}`);x||(x=te.createElement("div"),x.id=p,x.style.margin="0",g==="overlay"&&(x.style.pointerEvents="auto"),u.appendChild(x));let ke=()=>x.getAttribute("data-mantine-color-scheme"),Te=()=>x.getAttribute("data-ai-kit-variation"),G=()=>{A.setAttribute("data-ai-kit-variation",Te()||"default"),A.setAttribute("data-mantine-color-scheme",ke()||"auto")};G();let y=new MutationObserver(G);y.observe(x,{attributes:!0,attributeFilter:["data-mantine-color-scheme"]});let R=window.matchMedia?.("(prefers-color-scheme: dark)"),_=()=>G();return R?.addEventListener?.("change",_),za(te),Ra(te,x,u,V?V.split("|"):[]),Q(u),F(x),()=>{y.disconnect(),R?.removeEventListener?.("change",_)}},[g,i,p,V]);let ge=(0,Ce.useMemo)(()=>X?(0,xn.default)({key:g==="overlay"?"ai-kit-ov":"ai-kit-local",container:X}):null,[X,g]);return(0,Ot.jsx)("div",{ref:S,style:{outline:"none",boxShadow:"none",backgroundColor:"transparent"},children:X&&D&&ge?(0,Mn.createPortal)((0,Ot.jsx)(Ln.CacheProvider,{value:ge,children:a({rootElement:X,shadowRoot:D})}),X):null})}var it=require("react/jsx-runtime"),Sa=n=>{let a=5381;for(let p=0;p<n.length;p++)a=(a<<5)+a^n.charCodeAt(p);return(a>>>0).toString(36)},Dn=n=>n.replace(/<\/?(?:style|script)\b[^>]*>/gi,"").replace(/@import\s+['"]?javascript:[^;]+;?/gi,"").replace(/url\(\s*(['"]?)javascript:[^)]+\)/gi,"").replace(/\bexpression\s*\([^)]*\)/gi,""),En="ai-kit-style-text";function Ze(n,a){let p=g=>{let{store:i,variation:f,showOpenButton:S,colors:D,colorMode:Q,primaryColor:X,primaryShade:F,themeOverrides:V,language:ge,direction:te}={...g,...a},[A,u]=(0,Re.useState)(null),x=(0,Tt.useSelect)(()=>(0,vt.getStoreSelect)(i).getLanguage()),ke=(0,Tt.useSelect)(()=>(0,vt.getStoreSelect)(i).getDirection()),Te=(0,Tt.useSelect)(()=>(0,vt.getStoreSelect)(i).getCustomTranslations()),[G]=(0,Re.useState)(new URLSearchParams(window.location.search).get("language")??""),[y]=(0,Re.useState)(new URLSearchParams(window.location.search).get("direction")??""),R=(0,Re.useMemo)(()=>{At.I18n.putVocabularies(Te||{});let L=x||G||ge;if(!L||L==="system"){At.I18n.setLanguage("");return}return At.I18n.setLanguage(L),L},[ge,G,x,Te]),_=(0,Re.useMemo)(()=>{let L=ke||y||te;return!L||L==="auto"?R==="ar"||R==="he"?"rtl":"ltr":L},[R,te,ke,y]),K=(0,Re.useMemo)(()=>[WpSuite?.constants?.aiKit?.mantineCssHref,WpSuite?.constants?.aiKit?.aiKitUiCssHref],[WpSuite]),re;D&&(re={},Object.keys(D).forEach(L=>{try{re[L]=(0,Un.generateColors)(D[L])}catch{re[L]=(0,oe.colorsTuple)(D[L])}}));let N=(0,oe.createTheme)({respectReducedMotion:!0,...re&&{colors:re},...X&&[...Object.keys(oe.DEFAULT_THEME.colors),...Object.keys(re||{})].includes(X)&&{primaryColor:X},...F&&Object.keys(F).length>0&&{primaryShade:{light:F.light??(typeof oe.DEFAULT_THEME.primaryShade=="object"?oe.DEFAULT_THEME.primaryShade.light:oe.DEFAULT_THEME.primaryShade??6),dark:F.dark??(typeof oe.DEFAULT_THEME.primaryShade=="object"?oe.DEFAULT_THEME.primaryShade.dark:oe.DEFAULT_THEME.primaryShade??6)}},components:{Button:{styles:{root:{borderRadius:"inherit"}}},Tooltip:{defaultProps:{withinPortal:!1,zIndex:100002}},Modal:{defaultProps:{withinPortal:!1,zIndex:100002}},Select:{defaultProps:{comboboxProps:{withinPortal:!1,floatingStrategy:"fixed",positionDependencies:[],position:"bottom",middlewares:{flip:!1,shift:{padding:10,boundary:"clippingAncestors"}}}}}}}),$=(0,Re.useMemo)(()=>V?Sa(V):"",[V]);return(0,Re.useEffect)(()=>{if(!A)return;let L=A.shadowRoot.getElementById(En);if(V)if(L)(L.getAttribute("data-hash")||"")!==$&&(L.textContent=Dn(V));else{let q=A.shadowRoot.ownerDocument.createElement("style");q.id=En,q.setAttribute("data-hash",$),q.textContent=Dn(V),A.shadowRoot.appendChild(q)}else L&&L.remove()},[A,V,$]),(0,it.jsx)(Pn,{mode:f==="modal"&&!S?"overlay":"local",variation:f,overlayRootId:"ai-kit-overlay-root",stylesheets:K,setHost:u,rootElementId:f==="modal"&&!S?"ai-kit-portal-root":"ai-kit-inline-root",children:({rootElement:L})=>{L.setAttribute("data-ai-kit-variation",f||"default"),L.setAttribute("dir",_),R&&L.setAttribute("lang",R);let q=Q==="auto"?window.matchMedia?.("(prefers-color-scheme: dark)")?.matches?"dark":"light":Q;return(0,it.jsx)(oe.DirectionProvider,{initialDirection:_,children:(0,it.jsx)(oe.MantineProvider,{forceColorScheme:q,theme:N,getRootElement:()=>L,children:(0,it.jsx)(n,{...g,colorMode:q,language:R,rootElement:L})})})}})};return p.displayName=`withAiKitShell(${n.displayName??n.name??"Component"})`,p}var Kt=require("react/jsx-runtime");function Nt({enabled:n=!0,working:a=!1,variation:p="default",children:g}){return(0,Kt.jsx)("div",{className:"ai-kit-feature-border","data-ai-kit-active":!!(n&&a)?"true":"false","data-ai-kit-variation":p,children:(0,Kt.jsx)("div",{className:"ai-kit-feature-border__content",children:g})})}var Bn=require("@mantine/core"),On=require("react"),Qe=require("aws-amplify/utils"),ot=require("react/jsx-runtime");function Ia(n){let a=[...n].sort((i,f)=>i.startIndex-f.startIndex),p=[],g=-1;for(let i of a)typeof i.startIndex!="number"||typeof i.endIndex!="number"||i.startIndex<0||i.endIndex<=i.startIndex||i.startIndex<g||(p.push(i),g=i.endIndex);return p}function Kn({original:n,corrections:a}){let p=(0,On.useMemo)(()=>{let g=Ia(a||[]),i=[],f=0;for(let S of g){S.startIndex>f&&i.push({kind:"plain",text:n.slice(f,S.startIndex)});let D=n.slice(S.startIndex,S.endIndex);i.push({kind:"corr",original:D,corr:S}),f=S.endIndex}return f<n.length&&i.push({kind:"plain",text:n.slice(f)}),i},[n,a]);return(0,ot.jsx)("div",{style:{padding:12,border:"1px solid rgba(0,0,0,0.1)",borderRadius:6,background:"rgba(0,0,0,0.02)",whiteSpace:"pre-wrap",lineHeight:1.5},children:p.map((g,i)=>{if(g.kind==="plain")return(0,ot.jsx)("span",{children:g.text},i);let f=(g.corr.replacement??g.corr.correction??"").trim(),S=(g.corr.explanation??"").trim(),D=(g.corr.type??"").trim(),Q=[D?Qe.I18n.get("Type")+": - "+Qe.I18n.get(D):"",f?Qe.I18n.get("Replace with")+": "+f:"",S?Qe.I18n.get("Why")+": "+S:""].filter(Boolean).join(`
8
- `);return(0,ot.jsx)(Bn.Tooltip,{label:Q||Qe.I18n.get("Suggested change"),multiline:!0,children:(0,ot.jsx)("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",cursor:"help",padding:"0 1px"},children:g.original})},i)})})}var wt=Ie(require("rehype-sanitize"),1),Nn=Ie(require("rehype-stringify"),1),Hn=Ie(require("remark-gfm"),1),Gn=Ie(require("remark-parse"),1),jn=Ie(require("remark-rehype"),1),Wn=require("unified"),Rt=async n=>String(await(0,Wn.unified)().use(Gn.default).use(Hn.default).use(jn.default,{allowDangerousHtml:!1}).use(wt.default,wt.defaultSchema).use(Nn.default).process(n));var s=require("react/jsx-runtime");t.I18n.putVocabularies(_e);var zt=(0,M.getAiKitPlugin)(),Ca={type:"object",properties:{title:{type:"string",minLength:1,maxLength:60},excerpt:{type:"string",minLength:1,maxLength:155}},required:["title","excerpt"],additionalProperties:!1},xa={type:"object",properties:{alt:{type:"string",minLength:1,maxLength:125},title:{type:"string",minLength:1,maxLength:80},caption:{type:"string",minLength:1,maxLength:150},description:{type:"string",minLength:1,maxLength:300}},required:["alt","title","caption","description"],additionalProperties:!1};function La(n){let a=(n??"").trim();return a&&a.toLowerCase().split("-")[0]||null}async function Ht(n,a){let p=await(0,M.detectLanguage)({text:n},a);return La(p.result?.candidates?.[0]?.detectedLanguage)??"en"}async function Ma(n,a,p){let g=$e(n||"").trim();if(!g)return{};try{let i=JSON.parse(g);return{alt_text:typeof i.alt=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.alt,sourceLanguage:"en",targetLanguage:a},p)).result:i.alt:"",title:typeof i.title=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.title,sourceLanguage:"en",targetLanguage:a})).result:i.title:"",caption:typeof i.caption=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.caption,sourceLanguage:"en",targetLanguage:a})).result:i.caption:"",description:typeof i.description=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.description,sourceLanguage:"en",targetLanguage:a})).result:i.description:""}}catch(i){return console.warn("AI Kit: failed to parse JSON metadata output",i),{}}}async function Pa(n,a,p){let g=$e(n||"").trim();if(!g)return{};try{let i=JSON.parse(g);return{title:typeof i.title=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.title,sourceLanguage:"en",targetLanguage:a},p)).result:i.title:"",excerpt:typeof i.excerpt=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.excerpt,sourceLanguage:"en",targetLanguage:a},p)).result:i.excerpt:""}}catch(i){return console.warn("AI Kit: failed to parse JSON metadata output",i),{}}}var Da=n=>{let{allowOverride:a,autoRun:p=!0,editable:g=!0,onDeviceTimeout:i,variation:f=n.variation||"default",title:S,showOpenButton:D=!1,showOpenButtonTitle:Q=!0,showOpenButtonIcon:X=!0,openButtonTitle:F,openButtonIcon:V,showRegenerateOnBackendButton:ge=!0,acceptButtonTitle:te=n.acceptButtonTitle||"Accept",optionsDisplay:A=n.optionsDisplay||"collapse",mode:u,context:x,modeOverride:ke,colorMode:Te,default:G,onClose:y,onAccept:R,onOptionsChanged:_,language:K,rootElement:re}=n,N={text:a?.text??!0,instructions:a?.instructions??!0,tone:a?.tone??!0,length:a?.length??!0,type:a?.type??!0,outputLanguage:a?.outputLanguage??!0,outputFormat:a?.outputFormat??!0},$=(0,C.useMemo)(()=>!!(u==="write"&&N?.text||(u==="write"||u==="rewrite"||u==="generateImageMetadata"||u==="generatePostMetadata")&&N?.instructions||(u==="write"||u==="rewrite")&&N?.tone||(u==="write"||u==="rewrite"||u==="summarize")&&N?.length||u==="summarize"&&N?.type||N?.outputLanguage),[N]),[L,q]=(0,C.useState)(),[le,st]=(0,C.useState)(!D),[Ye,ue]=(0,C.useState)(!1),[lt,ut]=(0,C.useState)(!1),[He,ne]=(0,C.useState)(null),[E,Y]=(0,C.useState)(null),[Le,Ge]=(0,C.useState)(G?.text),[je]=(0,C.useState)(G?.image),[ie,Je]=(0,C.useState)(G?.instructions),[Pe,dt]=(0,C.useState)(),[J,Lt]=(0,C.useState)(G?.inputLanguage),[We,Mt]=(0,C.useState)(G?.outputFormat),[P,De]=(0,C.useState)(G?.outputLanguage),[be,ze]=(0,C.useState)(G?.length),[me,Pt]=(0,C.useState)(G?.tone),[Me,Ee]=(0,C.useState)(G?.type),Ae=(0,C.useRef)(!1),pe=(0,C.useMemo)(()=>{K&&t.I18n.setLanguage(K||"en");let r;switch(u){default:case"summarize":r=t.I18n.get("Summarize");break;case"proofread":r=t.I18n.get("Proofread");break;case"write":r=t.I18n.get("Write");break;case"rewrite":r=t.I18n.get("Rewrite");break;case"translate":r=t.I18n.get("Translate");break;case"generatePostMetadata":r=t.I18n.get("Generate Post Metadata");break;case"generateImageMetadata":r=t.I18n.get("Generate Image Metadata");break}return r},[u,K]),ct=(0,C.useCallback)(r=>{if(!r||r.silent)return null;let k=r.step,U=t.I18n.get((r.message??"").trim()),O=typeof r.progress=="number"?r.progress:null,ee=O==null?null:Math.round(O*100);switch(k){case"decide":return U||t.I18n.get("Checking capabilities...");case"on-device:init":return U||t.I18n.get("Initializing on-device AI...");case"on-device:download":return U||(ee==null?t.I18n.get("Downloading model..."):t.I18n.get("Downloading model...")+" "+ee+"%");case"on-device:ready":return U||t.I18n.get("On-device model ready.");case"on-device:run":return U||t.I18n.get("Generating...");case"backend:request":case"backend:waiting":case"backend:response":switch(u){case"translate":return t.I18n.get("Translating text");case"rewrite":return t.I18n.get("Rewriting text");case"summarize":return t.I18n.get("Summarizing");case"proofread":return t.I18n.get("Proofreading");default:return t.I18n.get("Generating text")}case"done":return U||t.I18n.get("Done.");case"error":return U||t.I18n.get("Something went wrong.");default:return U||t.I18n.get("Working...")}},[K,u]),de=(0,C.useMemo)(()=>Le??G?.getText,[Le,G]),ae=(0,C.useMemo)(()=>{let r=typeof de=="function"?de():de;switch(u){case"generateImageMetadata":return!!je;case"translate":return!!(r&&r.trim().length>0)&&P&&Pe!==P;case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!!(r&&r.trim().length>0);default:return!1}},[de,u,je,Pe,P,le]),T=rt(),Fe=ct(T.statusEvent)??(L?t.I18n.get(L):null),Ue=(0,C.useCallback)(async r=>{if(ae){$&&u!=="proofread"&&ae&&ue(!1),ne(null),Y(null);try{let k=typeof de=="function"?de():de;switch(u){case"summarize":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=(P&&P!=="auto"?P:null)||Ke(),B={text:k.trim(),format:We==="plain-text"?"plain-text":"markdown",length:be,type:Me,outputLanguage:H};return(await(0,M.summarize)(B,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"proofread":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=[];try{q("Detecting input language...");let ft=(await(0,M.detectLanguage)({text:k.trim()},{signal:O,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0})).result?.candidates?.filter(he=>he.confidence&&he.confidence>.1).map(he=>he.detectedLanguage);H.push(...ft)}catch{H.push("en")}let B={text:k.trim(),expectedInputLanguages:H};return(await(0,M.proofread)(B,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"translate":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=J??"auto";H==="auto"&&(q("Detecting input language..."),H=await Ht(k.trim(),{signal:O,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0})),dt(H);let B=(P&&P!=="auto"?P:null)||Ke();if(B===H)throw ne(t.I18n.get("Input and output languages cannot be the same.")),new Error(t.I18n.get("Input and output languages cannot be the same."));let Z={text:k.trim(),sourceLanguage:H,targetLanguage:B};return(await(0,M.translate)(Z,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"rewrite":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=(P&&P!=="auto"?P:null)||Ke();P==="auto"&&(q("Detecting input language..."),H=await Ht(k.trim(),{signal:O,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0}),De(H));let B={text:k.trim(),context:ie?.trim()||void 0,format:We==="plain-text"?"plain-text":"markdown",tone:me,length:be,outputLanguage:H};return(await(0,M.rewrite)(B,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"write":{let U=(P&&P!=="auto"?P:null)||Ke(),O={prompt:k.trim(),context:ie?.trim()||void 0,format:We==="plain-text"?"plain-text":"markdown",tone:me,length:be,outputLanguage:U},ee=await T.run(async({signal:H,onStatus:B})=>{let Z={signal:H,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0};q("Detecting input language...");let Se=await Ht(k.trim()+`
8
+ `);return(0,ot.jsx)(Bn.Tooltip,{label:Q||Qe.I18n.get("Suggested change"),multiline:!0,children:(0,ot.jsx)("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",cursor:"help",padding:"0 1px"},children:g.original})},i)})})}var wt=Ie(require("rehype-sanitize"),1),Nn=Ie(require("rehype-stringify"),1),Hn=Ie(require("remark-gfm"),1),Gn=Ie(require("remark-parse"),1),jn=Ie(require("remark-rehype"),1),Wn=require("unified"),Rt=async n=>String(await(0,Wn.unified)().use(Gn.default).use(Hn.default).use(jn.default,{allowDangerousHtml:!1}).use(wt.default,wt.defaultSchema).use(Nn.default).process(n));var s=require("react/jsx-runtime");t.I18n.putVocabularies(_e);var zt=(0,M.getAiKitPlugin)(),Ca={type:"object",properties:{title:{type:"string",minLength:1,maxLength:60},excerpt:{type:"string",minLength:1,maxLength:155}},required:["title","excerpt"],additionalProperties:!1},xa={type:"object",properties:{alt:{type:"string",minLength:1,maxLength:125},title:{type:"string",minLength:1,maxLength:80},caption:{type:"string",minLength:1,maxLength:150},description:{type:"string",minLength:1,maxLength:300}},required:["alt","title","caption","description"],additionalProperties:!1};function La(n){let a=(n??"").trim();return a&&a.toLowerCase().split("-")[0]||null}async function Ht(n,a){let p=await(0,M.detectLanguage)({text:n},a);return La(p.result?.candidates?.[0]?.detectedLanguage)??"en"}async function Ma(n,a,p){let g=$e(n||"").trim();if(!g)return{};try{let i=JSON.parse(g);return{alt_text:typeof i.alt=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.alt,sourceLanguage:"en",targetLanguage:a},p)).result:i.alt:"",title:typeof i.title=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.title,sourceLanguage:"en",targetLanguage:a},p)).result:i.title:"",caption:typeof i.caption=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.caption,sourceLanguage:"en",targetLanguage:a},p)).result:i.caption:"",description:typeof i.description=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.description,sourceLanguage:"en",targetLanguage:a},p)).result:i.description:""}}catch(i){return console.warn("AI Kit: failed to parse JSON metadata output",i),{}}}async function Pa(n,a,p){let g=$e(n||"").trim();if(!g)return{};try{let i=JSON.parse(g);return{title:typeof i.title=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.title,sourceLanguage:"en",targetLanguage:a},p)).result:i.title:"",excerpt:typeof i.excerpt=="string"?a&&a!=="en"?(await(0,M.translate)({text:i.excerpt,sourceLanguage:"en",targetLanguage:a},p)).result:i.excerpt:""}}catch(i){return console.warn("AI Kit: failed to parse JSON metadata output",i),{}}}var Da=n=>{let{allowOverride:a,autoRun:p=!0,editable:g=!0,onDeviceTimeout:i,variation:f=n.variation||"default",title:S,showOpenButton:D=!1,showOpenButtonTitle:Q=!0,showOpenButtonIcon:X=!0,openButtonTitle:F,openButtonIcon:V,showRegenerateOnBackendButton:ge=!0,acceptButtonTitle:te=n.acceptButtonTitle||"Accept",optionsDisplay:A=n.optionsDisplay||"collapse",mode:u,context:x,modeOverride:ke,colorMode:Te,default:G,onClose:y,onAccept:R,onOptionsChanged:_,language:K,rootElement:re}=n,N={text:a?.text??!0,instructions:a?.instructions??!0,tone:a?.tone??!0,length:a?.length??!0,type:a?.type??!0,outputLanguage:a?.outputLanguage??!0,outputFormat:a?.outputFormat??!0},$=(0,C.useMemo)(()=>!!(u==="write"&&N?.text||(u==="write"||u==="rewrite"||u==="generateImageMetadata"||u==="generatePostMetadata")&&N?.instructions||(u==="write"||u==="rewrite")&&N?.tone||(u==="write"||u==="rewrite"||u==="summarize")&&N?.length||u==="summarize"&&N?.type||N?.outputLanguage),[N]),[L,q]=(0,C.useState)(),[le,st]=(0,C.useState)(!D),[Ye,ue]=(0,C.useState)(!1),[lt,ut]=(0,C.useState)(!1),[He,ne]=(0,C.useState)(null),[E,Y]=(0,C.useState)(null),[Le,Ge]=(0,C.useState)(G?.text),[je]=(0,C.useState)(G?.image),[ie,Je]=(0,C.useState)(G?.instructions),[Pe,dt]=(0,C.useState)(),[J,Lt]=(0,C.useState)(G?.inputLanguage),[We,Mt]=(0,C.useState)(G?.outputFormat),[P,De]=(0,C.useState)(G?.outputLanguage),[be,ze]=(0,C.useState)(G?.length),[me,Pt]=(0,C.useState)(G?.tone),[Me,Ee]=(0,C.useState)(G?.type),Ae=(0,C.useRef)(!1),pe=(0,C.useMemo)(()=>{K&&t.I18n.setLanguage(K||"en");let r;switch(u){default:case"summarize":r=t.I18n.get("Summarize");break;case"proofread":r=t.I18n.get("Proofread");break;case"write":r=t.I18n.get("Write");break;case"rewrite":r=t.I18n.get("Rewrite");break;case"translate":r=t.I18n.get("Translate");break;case"generatePostMetadata":r=t.I18n.get("Generate Post Metadata");break;case"generateImageMetadata":r=t.I18n.get("Generate Image Metadata");break}return r},[u,K]),ct=(0,C.useCallback)(r=>{if(!r||r.silent)return null;let k=r.step,U=t.I18n.get((r.message??"").trim()),O=typeof r.progress=="number"?r.progress:null,ee=O==null?null:Math.round(O*100);switch(k){case"decide":return U||t.I18n.get("Checking capabilities...");case"on-device:init":return U||t.I18n.get("Initializing on-device AI...");case"on-device:download":return U||(ee==null?t.I18n.get("Downloading model..."):t.I18n.get("Downloading model...")+" "+ee+"%");case"on-device:ready":return U||t.I18n.get("On-device model ready.");case"on-device:run":return U||t.I18n.get("Generating...");case"backend:request":case"backend:waiting":case"backend:response":switch(u){case"translate":return t.I18n.get("Translating text");case"rewrite":return t.I18n.get("Rewriting text");case"summarize":return t.I18n.get("Summarizing");case"proofread":return t.I18n.get("Proofreading");default:return t.I18n.get("Generating text")}case"done":return U||t.I18n.get("Done.");case"error":return U||t.I18n.get("Something went wrong.");default:return U||t.I18n.get("Working...")}},[K,u]),de=(0,C.useMemo)(()=>Le??G?.getText,[Le,G]),ae=(0,C.useMemo)(()=>{let r=typeof de=="function"?de():de;switch(u){case"generateImageMetadata":return!!je;case"translate":return!!(r&&r.trim().length>0)&&P&&Pe!==P;case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!!(r&&r.trim().length>0);default:return!1}},[de,u,je,Pe,P,le]),T=rt(),Fe=ct(T.statusEvent)??(L?t.I18n.get(L):null),Ue=(0,C.useCallback)(async r=>{if(ae){$&&u!=="proofread"&&ae&&ue(!1),ne(null),Y(null);try{let k=typeof de=="function"?de():de;switch(u){case"summarize":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=(P&&P!=="auto"?P:null)||Ke(),B={text:k.trim(),format:We==="plain-text"?"plain-text":"markdown",length:be,type:Me,outputLanguage:H};return(await(0,M.summarize)(B,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"proofread":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=[];try{q("Detecting input language...");let ft=(await(0,M.detectLanguage)({text:k.trim()},{signal:O,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0})).result?.candidates?.filter(he=>he.confidence&&he.confidence>.1).map(he=>he.detectedLanguage);H.push(...ft)}catch{H.push("en")}let B={text:k.trim(),expectedInputLanguages:H};return(await(0,M.proofread)(B,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"translate":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=J??"auto";H==="auto"&&(q("Detecting input language..."),H=await Ht(k.trim(),{signal:O,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0})),dt(H);let B=(P&&P!=="auto"?P:null)||Ke();if(B===H)throw ne(t.I18n.get("Input and output languages cannot be the same.")),new Error(t.I18n.get("Input and output languages cannot be the same."));let Z={text:k.trim(),sourceLanguage:H,targetLanguage:B};return(await(0,M.translate)(Z,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"rewrite":{let U=await T.run(async({signal:O,onStatus:ee})=>{let H=(P&&P!=="auto"?P:null)||Ke();P==="auto"&&(q("Detecting input language..."),H=await Ht(k.trim(),{signal:O,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0}),De(H));let B={text:k.trim(),context:ie?.trim()||void 0,format:We==="plain-text"?"plain-text":"markdown",tone:me,length:be,outputLanguage:H};return(await(0,M.rewrite)(B,{signal:O,onStatus:ee,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(U??"");break}case"write":{let U=(P&&P!=="auto"?P:null)||Ke(),O={prompt:k.trim(),context:ie?.trim()||void 0,format:We==="plain-text"?"plain-text":"markdown",tone:me,length:be,outputLanguage:U},ee=await T.run(async({signal:H,onStatus:B})=>{let Z={signal:H,context:x,modeOverride:r,onDeviceTimeoutOverride:i,silent:!0};q("Detecting input language...");let Se=await Ht(k.trim()+`
9
9
  `+(ie?.trim()||""),Z);return Se!==U&&Se!=="en"&&(q("Translating instructions..."),O.prompt=(await(0,M.translate)({text:O.prompt,sourceLanguage:Se,targetLanguage:"en"},Z)).result,ie&&(O.context=(await(0,M.translate)({text:ie,sourceLanguage:Se,targetLanguage:"en"},Z)).result)),(await(0,M.write)(O,{signal:H,onStatus:B,context:x,modeOverride:r,onDeviceTimeoutOverride:i})).result});Y(ee??"");break}case"generatePostMetadata":{let U=[{role:"system",content:`You generate SEO metadata for a WordPress post.
10
10
  Return ONLY a minified JSON object with keys: title, excerpt.
11
11
  Constraints: title <= 60 chars, excerpt <= 155 chars.