@smart-cloud/ai-kit-ui 1.4.8 → 1.4.9

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
  `,(e.head??e.documentElement).appendChild(a)}function dn({stylesheets:e,children:a,rootElementId:d,mode:l="local",overlayRootId:r="ai-kit-overlay-root",setHost:m}){let C=(0,pt.useRef)(null),[N,ge]=(0,pt.useState)(null),[ne,te]=(0,pt.useState)(null),re=(0,pt.useMemo)(()=>[...e].join("|"),[e]);(0,pt.useLayoutEffect)(()=>{if(!C.current)return;let ie=l==="overlay"?lr():C.current.ownerDocument,D;if(l==="overlay"){let X=ie.getElementById(r);X||(X=ie.createElement("div"),X.id=r,X.style.position="fixed",X.style.inset="0",X.style.width="0",X.style.height="0",X.style.zIndex="2147483647",X.style.pointerEvents="none",ie.body.appendChild(X)),D=X}else D=C.current;m(D);let p=D.shadowRoot??D.attachShadow({mode:"open"}),E=p.querySelector(`#${CSS.escape(d)}`);E||(E=ie.createElement("div"),E.id=d,E.style.margin="0",l==="overlay"&&(E.style.pointerEvents="auto"),p.appendChild(E));let fe=()=>E.getAttribute("data-mantine-color-scheme"),_=()=>E.getAttribute("data-ai-kit-variation"),Q=()=>{D.setAttribute("data-ai-kit-variation",_()||"default"),D.setAttribute("data-mantine-color-scheme",fe()||"auto")};Q();let ke=new MutationObserver(Q);ke.observe(E,{attributes:!0,attributeFilter:["data-mantine-color-scheme"]});let T=window.matchMedia?.("(prefers-color-scheme: dark)"),K=()=>Q();return T?.addEventListener?.("change",K),cr(ie),ur(ie,E,p,re?re.split("|"):[]),ge(p),te(E),()=>{ke.disconnect(),T?.removeEventListener?.("change",K)}},[l,r,d,re]);let Oe=(0,pt.useMemo)(()=>ne?(0,ln.default)({key:l==="overlay"?"ai-kit-ov":"ai-kit-local",container:ne}):null,[ne,l]);return(0,ma.jsx)("div",{ref:C,style:{outline:"none",boxShadow:"none",backgroundColor:"transparent"},children:ne&&N&&Oe?(0,cn.createPortal)((0,ma.jsx)(un.CacheProvider,{value:Oe,children:a({rootElement:ne,shadowRoot:N})}),ne):null})}var Yt=require("react/jsx-runtime"),dr=e=>{let a=5381;for(let d=0;d<e.length;d++)a=(a<<5)+a^e.charCodeAt(d);return(a>>>0).toString(36)},gn=e=>e.replace(/<\/?(?:style|script)\b[^>]*>/gi,"").replace(/@import\s+['"]?javascript:[^;]+;?/gi,"").replace(/url\(\s*(['"]?)javascript:[^)]+\)/gi,"").replace(/\bexpression\s*\([^)]*\)/gi,""),mn="ai-kit-style-text";function It(e,a){let d=l=>{let{store:r,variation:m,showOpenButton:C,colors:N,colorMode:ge,primaryColor:ne,primaryShade:te,themeOverrides:re,language:Oe,direction:ie}={...l,...a},[D,p]=(0,it.useState)(null),E=(0,ea.useSelect)(()=>(0,Xt.getStoreSelect)(r).getLanguage()),fe=(0,ea.useSelect)(()=>(0,Xt.getStoreSelect)(r).getDirection()),_=(0,ea.useSelect)(()=>(0,Xt.getStoreSelect)(r).getCustomTranslations()),[Q]=(0,it.useState)(new URLSearchParams(window.location.search).get("language")??""),[ke]=(0,it.useState)(new URLSearchParams(window.location.search).get("direction")??""),T=(0,it.useMemo)(()=>{ta.I18n.putVocabularies(_||{});let B=E||Q||Oe;if(!B||B==="system"){ta.I18n.setLanguage("");return}return ta.I18n.setLanguage(B),B},[Oe,Q,E,_]),K=(0,it.useMemo)(()=>{let B=fe||ke||ie;return!B||B==="auto"?T==="ar"||T==="he"?"rtl":"ltr":B},[T,ie,fe,ke]),X=(0,it.useMemo)(()=>[WpSuite?.constants?.aiKit?.mantineCssHref,WpSuite?.constants?.aiKit?.aiKitUiCssHref],[WpSuite]),me;N&&(me={},Object.keys(N).forEach(B=>{try{me[B]=(0,pn.generateColors)(N[B])}catch{me[B]=(0,Le.colorsTuple)(N[B])}}));let je=(0,Le.createTheme)({respectReducedMotion:!0,...me&&{colors:me},...ne&&[...Object.keys(Le.DEFAULT_THEME.colors),...Object.keys(me||{})].includes(ne)&&{primaryColor:ne},...te&&Object.keys(te).length>0&&{primaryShade:{light:te.light??(typeof Le.DEFAULT_THEME.primaryShade=="object"?Le.DEFAULT_THEME.primaryShade.light:Le.DEFAULT_THEME.primaryShade??6),dark:te.dark??(typeof Le.DEFAULT_THEME.primaryShade=="object"?Le.DEFAULT_THEME.primaryShade.dark:Le.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"}}}}},MultiSelect:{defaultProps:{comboboxProps:{withinPortal:!1,floatingStrategy:"fixed",positionDependencies:[],position:"bottom",middlewares:{flip:!1,shift:{padding:10,boundary:"clippingAncestors"}}}}},TagsInput:{defaultProps:{comboboxProps:{withinPortal:!1,floatingStrategy:"fixed",positionDependencies:[],position:"bottom",middlewares:{flip:!1,shift:{padding:10,boundary:"clippingAncestors"}}}}}}}),ve=(0,it.useMemo)(()=>re?dr(re):"",[re]);return(0,it.useEffect)(()=>{if(!D)return;let B=D.shadowRoot.getElementById(mn);if(re)if(B)(B.getAttribute("data-hash")||"")!==ve&&(B.textContent=gn(re));else{let ae=D.shadowRoot.ownerDocument.createElement("style");ae.id=mn,ae.setAttribute("data-hash",ve),ae.textContent=gn(re),D.shadowRoot.appendChild(ae)}else B&&B.remove()},[D,re,ve]),(0,Yt.jsx)(dn,{mode:m==="modal"&&!C?"overlay":"local",variation:m,overlayRootId:"ai-kit-overlay-root",stylesheets:X,setHost:p,rootElementId:m==="modal"&&!C?"ai-kit-portal-root":"ai-kit-inline-root",children:({rootElement:B})=>{B.setAttribute("data-ai-kit-variation",m||"default"),B.setAttribute("dir",K),T&&B.setAttribute("lang",T);let ae=ge==="auto"?window.matchMedia?.("(prefers-color-scheme: dark)")?.matches?"dark":"light":ge;return(0,Yt.jsx)(Le.DirectionProvider,{initialDirection:K,children:(0,Yt.jsx)(Le.MantineProvider,{forceColorScheme:ae,theme:je,getRootElement:()=>B,children:(0,Yt.jsx)(e,{...l,colorMode:ae,language:T,rootElement:B})})})}})};return d.displayName=`withAiKitShell(${e.displayName??e.name??"Component"})`,d}var pa=require("react/jsx-runtime");function Nt({enabled:e=!0,working:a=!1,variation:d="default",children:l}){return(0,pa.jsx)("div",{className:"ai-kit-feature-border","data-ai-kit-active":!!(e&&a)?"true":"false","data-ai-kit-variation":d,children:(0,pa.jsx)("div",{className:"ai-kit-feature-border__content",children:l})})}var hn=require("@mantine/core"),fn=require("react"),Gt=require("aws-amplify/utils"),Vt=require("react/jsx-runtime");function gr(e){let a=[...e].sort((r,m)=>r.startIndex-m.startIndex),d=[],l=-1;for(let r of a)typeof r.startIndex!="number"||typeof r.endIndex!="number"||r.startIndex<0||r.endIndex<=r.startIndex||r.startIndex<l||(d.push(r),l=r.endIndex);return d}function kn({original:e,corrections:a}){let d=(0,fn.useMemo)(()=>{let l=gr(a||[]),r=[],m=0;for(let C of l){C.startIndex>m&&r.push({kind:"plain",text:e.slice(m,C.startIndex)});let N=e.slice(C.startIndex,C.endIndex);r.push({kind:"corr",original:N,corr:C}),m=C.endIndex}return m<e.length&&r.push({kind:"plain",text:e.slice(m)}),r},[e,a]);return(0,Vt.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:d.map((l,r)=>{if(l.kind==="plain")return(0,Vt.jsx)("span",{children:l.text},r);let m=(l.corr.replacement??l.corr.correction??"").trim(),C=(l.corr.explanation??"").trim(),N=(l.corr.type??"").trim(),ge=[N?Gt.I18n.get("Type")+": - "+Gt.I18n.get(N):"",m?Gt.I18n.get("Replace with")+": "+m:"",C?Gt.I18n.get("Why")+": "+C:""].filter(Boolean).join(`
8
- `);return(0,Vt.jsx)(hn.Tooltip,{label:ge||Gt.I18n.get("Suggested change"),multiline:!0,children:(0,Vt.jsx)("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",cursor:"help",padding:"0 1px"},children:l.original})},r)})})}var aa=qe(require("rehype-sanitize"),1),bn=qe(require("rehype-stringify"),1),yn=qe(require("remark-gfm"),1),An=qe(require("remark-parse"),1),vn=qe(require("remark-rehype"),1),wn=require("unified"),na=async e=>String(await(0,wn.unified)().use(An.default).use(yn.default).use(vn.default,{allowDangerousHtml:!1}).use(aa.default,aa.defaultSchema).use(bn.default).process(e));var c=require("react/jsx-runtime");o.I18n.putVocabularies(Ct);var Tn=(0,H.getAiKitPlugin)(),pr={ar:"SA",en:"US",zh:"CN",nl:"NL",fr:"FR",de:"DE",he:"IL",hi:"IN",hu:"HU",id:"ID",it:"IT",ja:"JP",ko:"KR",no:"NO",pl:"PL",pt:"PT",ru:"RU",es:"ES",sv:"SE",th:"TH",tr:"TR",uk:"UA"},hr=new Set(["ar","he"]);function Sn(e){let{countryCode:a,size:d=18}=e;if(!a)return null;let l=mr[a];return l?(0,c.jsx)(l,{"aria-hidden":"true",focusable:"false",style:{display:"block",flex:"none",height:d,width:Math.round(d*(4/3))}}):null}function zn(e){return!!(e&&hr.has(e))}function fr(){return H.LANGUAGE_OPTIONS.map(e=>{let a=pr[e.value];return{value:e.value,label:e.label,countryCode:a}})}var kr={type:"object",properties:{title:{type:"string",minLength:1,maxLength:60},excerpt:{type:"string",minLength:1,maxLength:155}},required:["title","excerpt"],additionalProperties:!1},br={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 ba(e){let a=(e??"").trim();return a&&a.toLowerCase().split("-")[0]||null}async function ha(e,a){let d=await(0,H.detectLanguage)({text:e},a);return ba(d.result?.candidates?.[0]?.detectedLanguage)??"en"}async function yr(e,a,d){let l=jt(e||"").trim();if(!l)return{};try{let r=JSON.parse(l);return{alt_text:typeof r.alt=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.alt,sourceLanguage:"en",targetLanguage:a},d)).result:r.alt:"",title:typeof r.title=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.title,sourceLanguage:"en",targetLanguage:a},d)).result:r.title:"",caption:typeof r.caption=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.caption,sourceLanguage:"en",targetLanguage:a},d)).result:r.caption:"",description:typeof r.description=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.description,sourceLanguage:"en",targetLanguage:a},d)).result:r.description:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}async function Ar(e,a,d){let l=jt(e||"").trim();if(!l)return{};try{let r=JSON.parse(l);return{title:typeof r.title=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.title,sourceLanguage:"en",targetLanguage:a},d)).result:r.title:"",excerpt:typeof r.excerpt=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.excerpt,sourceLanguage:"en",targetLanguage:a},d)).result:r.excerpt:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}var vr=e=>{let{allowOverride:a,autoRun:d=!0,editable:l=!0,onDeviceTimeout:r,variation:m="default",title:C,showOpenButton:N=!1,showOpenButtonTitle:ge=!0,showOpenButtonIcon:ne=!0,openButtonTitle:te,openButtonIcon:re,showRegenerateOnBackendButton:Oe=!0,acceptButtonTitle:ie="Accept",optionsDisplay:D="collapse",mode:p,context:E,modeOverride:fe,colorMode:_,default:Q,onClose:ke,onAccept:T,onOptionsChanged:K,language:X,direction:me,rootElement:je}=e,[ve,B]=(0,P.useState)(),[ae,Pe]=(0,P.useState)(),$=ve??ba(X);o.I18n.setLanguage($||"en");let Pt=$||"en",st=(0,P.useMemo)(()=>{let n=ve?ae:me;return!n||n==="auto"?zn($)?"rtl":"ltr":n},[me,ae,$,ve]),ee={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},Ne=(0,P.useMemo)(()=>!!(p==="write"&&ee?.text||(p==="write"||p==="rewrite"||p==="generateImageMetadata"||p==="generatePostMetadata")&&ee?.instructions||(p==="write"||p==="rewrite")&&ee?.tone||(p==="write"||p==="rewrite"||p==="summarize")&&ee?.length||p==="summarize"&&ee?.type||ee?.outputLanguage),[ee,p]),[Ge,be]=(0,P.useState)(),[Se,Re]=(0,P.useState)(!N),[He,pe]=(0,P.useState)(!1),[Qe,Xe]=(0,P.useState)(!1),[lt,we]=(0,P.useState)(null),[F,oe]=(0,P.useState)(null),[et,V]=(0,P.useState)(Q?.text),[nt]=(0,P.useState)(Q?.image),[ye,vt]=(0,P.useState)(Q?.instructions),[Ie,We]=(0,P.useState)(),[ut,he]=(0,P.useState)(Q?.inputLanguage),[Me,Et]=(0,P.useState)(Q?.outputFormat),[R,wt]=(0,P.useState)(Q?.outputLanguage||Tn.settings.defaultOutputLanguage||(p==="rewrite"?"auto":void 0)),[tt,ct]=(0,P.useState)(Q?.length),[Te,dt]=(0,P.useState)(Q?.tone),[Ve,Je]=(0,P.useState)(Q?.type),[rt,Tt]=(0,P.useState)(""),ze=(0,P.useRef)(!1),De=(0,P.useMemo)(()=>fr(),[]),ot=(0,P.useMemo)(()=>{if(C)return C;let n;switch(p){default:case"summarize":n="Summarize";break;case"proofread":n="Proofread";break;case"write":n="Write";break;case"rewrite":n="Rewrite";break;case"translate":n="Translate";break;case"generatePostMetadata":n="Generate Post Metadata";break;case"generateImageMetadata":n="Generate Image Metadata";break}return n},[C,p,$]),Ee=(0,P.useCallback)(n=>{if(!n||n.silent)return null;let A=n.step,x=o.I18n.get((n.message??"").trim()),O=typeof n.progress=="number"?n.progress:null,U=O==null?null:Math.round(O*100);switch(A){case"decide":return x||o.I18n.get("Checking capabilities...");case"on-device:init":return x||o.I18n.get("Initializing on-device AI...");case"on-device:download":return x||(U==null?o.I18n.get("Downloading model..."):o.I18n.get("Downloading model...")+" "+U+"%");case"on-device:ready":return x||o.I18n.get("On-device model ready.");case"on-device:run":return x||o.I18n.get("Generating...");case"backend:request":case"backend:waiting":case"backend:response":switch(p){case"translate":return o.I18n.get("Translating text");case"rewrite":return o.I18n.get("Rewriting text");case"summarize":return o.I18n.get("Summarizing");case"proofread":return o.I18n.get("Proofreading");default:return o.I18n.get("Generating text")}case"done":return x||o.I18n.get("Done.");case"error":return x||o.I18n.get("Something went wrong.");default:return x||o.I18n.get("Working...")}},[$,p]),Be=(0,P.useMemo)(()=>et??Q?.getText,[et,Q]),se=(0,P.useMemo)(()=>{let n=Be;if(typeof n=="function")switch(p){case"generateImageMetadata":return!!nt;case"translate":return!R||Ie!==R;case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!0;default:return!1}let A=n;switch(p){case"generateImageMetadata":return!!nt;case"translate":return!!(A&&A.trim().length>0)&&(!R||Ie!==R);case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!!(A&&A.trim().length>0);default:return!1}},[Be,p,nt,Ie,R,Se]),I=Dt(),xe=Ee(I.statusEvent)??(Ge?o.I18n.get(Ge):null),St=(0,P.useCallback)(n=>{if(n&&n!=="auto"){Tt(n);return}Tt(At()||"")},[]),kt=(0,P.useCallback)(async n=>{if(!se)return;Ne&&p!=="proofread"&&se&&pe(!1),we(null),oe(null);let A=await Be;try{let x=typeof A=="function"?await Promise.resolve(A()):A;switch(p){case"summarize":{let O=(R&&R!=="auto"?R:null)||At(),U=await I.run(async({signal:ue,onStatus:ce})=>{let q={text:x.trim(),format:Me==="plain-text"?"plain-text":"markdown",length:tt,type:Ve,outputLanguage:O};return(await(0,H.summarize)(q,{signal:ue,onStatus:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O||""),oe(U??"");break}case"proofread":{let O=await I.run(async({signal:U,onStatus:ue})=>{let ce=[];try{be("Detecting input language...");let Ut=(await(0,H.detectLanguage)({text:x.trim()},{signal:U,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0})).result?.candidates?.filter(Ot=>Ot.confidence&&Ot.confidence>.1).map(Ot=>Ot.detectedLanguage);ce.push(...Ut)}catch{ce.push("en")}let q={text:x.trim(),expectedInputLanguages:ce};return(await(0,H.proofread)(q,{signal:U,onStatus:ue,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});oe(O??"");break}case"translate":{let O=(R&&R!=="auto"?R:null)||At(),U=await I.run(async({signal:ue,onStatus:ce})=>{let q=ut??"auto";if(q==="auto"&&(be("Detecting input language..."),q=await ha(x.trim(),{signal:ue,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0})),We(q),O===q)throw console.warn("AI Kit: input and output languages are the same",{inputLang:q,outLang:O}),we(o.I18n.get("Input and output languages cannot be the same.")),new Error(o.I18n.get("Input and output languages cannot be the same."));let de={text:x.trim(),sourceLanguage:q,targetLanguage:O};return(await(0,H.translate)(de,{signal:ue,onStatus:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O||""),oe(U??"");break}case"rewrite":{let O="",U=await I.run(async({signal:ue,onStatus:ce})=>{let q=(R&&R!=="auto"?R:null)||At();R==="auto"&&(be("Detecting input language..."),q=await ha(x.trim(),{signal:ue,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0}),wt(q)),O=q||"";let de={text:x.trim(),context:ye?.trim()||void 0,format:Me==="plain-text"?"plain-text":"markdown",tone:Te,length:tt,outputLanguage:q};return(await(0,H.rewrite)(de,{signal:ue,onStatus:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O),oe(U??"");break}case"write":{let O=(R&&R!=="auto"?R:null)||At(),U={prompt:x.trim(),context:ye?.trim()||void 0,format:Me==="plain-text"?"plain-text":"markdown",tone:Te,length:tt,outputLanguage:O},ue=await I.run(async({signal:ce,onStatus:q})=>{let de={signal:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0};be("Detecting input language...");let Ke=await ha(x.trim()+`
8
+ `);return(0,Vt.jsx)(hn.Tooltip,{label:ge||Gt.I18n.get("Suggested change"),multiline:!0,children:(0,Vt.jsx)("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",cursor:"help",padding:"0 1px"},children:l.original})},r)})})}var aa=qe(require("rehype-sanitize"),1),bn=qe(require("rehype-stringify"),1),yn=qe(require("remark-gfm"),1),An=qe(require("remark-parse"),1),vn=qe(require("remark-rehype"),1),wn=require("unified"),na=async e=>String(await(0,wn.unified)().use(An.default).use(yn.default).use(vn.default,{allowDangerousHtml:!1}).use(aa.default,aa.defaultSchema).use(bn.default).process(e));var c=require("react/jsx-runtime");o.I18n.putVocabularies(Ct);var Tn=(0,H.getAiKitPlugin)(),pr={ar:"SA",en:"US",zh:"CN",nl:"NL",fr:"FR",de:"DE",he:"IL",hi:"IN",hu:"HU",id:"ID",it:"IT",ja:"JP",ko:"KR",no:"NO",pl:"PL",pt:"PT",ru:"RU",es:"ES",sv:"SE",th:"TH",tr:"TR",uk:"UA"},hr=new Set(["ar","he"]);function Sn(e){let{countryCode:a,size:d=18}=e;if(!a)return null;let l=mr[a];return l?(0,c.jsx)(l,{"aria-hidden":"true",focusable:"false",style:{display:"block",flex:"none",height:d,width:Math.round(d*(4/3))}}):null}function zn(e){return!!(e&&hr.has(e))}function fr(){return H.LANGUAGE_OPTIONS.map(e=>{let a=pr[e.value];return{value:e.value,label:e.label,countryCode:a}})}var kr={type:"object",properties:{title:{type:"string",minLength:1,maxLength:60},excerpt:{type:"string",minLength:1,maxLength:155}},required:["title","excerpt"],additionalProperties:!1},br={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 ba(e){let a=(e??"").trim();return a&&a.toLowerCase().split("-")[0]||null}async function ha(e,a){let d=await(0,H.detectLanguage)({text:e},a);return ba(d.result?.candidates?.[0]?.detectedLanguage)??"en"}async function yr(e,a,d){let l=jt(e||"").trim();if(!l)return{};try{let r=JSON.parse(l);return{alt_text:typeof r.alt=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.alt,sourceLanguage:"en",targetLanguage:a},d)).result:r.alt:"",title:typeof r.title=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.title,sourceLanguage:"en",targetLanguage:a},d)).result:r.title:"",caption:typeof r.caption=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.caption,sourceLanguage:"en",targetLanguage:a},d)).result:r.caption:"",description:typeof r.description=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.description,sourceLanguage:"en",targetLanguage:a},d)).result:r.description:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}async function Ar(e,a,d){let l=jt(e||"").trim();if(!l)return{};try{let r=JSON.parse(l);return{title:typeof r.title=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.title,sourceLanguage:"en",targetLanguage:a},d)).result:r.title:"",excerpt:typeof r.excerpt=="string"?a&&a!=="en"?(await(0,H.translate)({text:r.excerpt,sourceLanguage:"en",targetLanguage:a},d)).result:r.excerpt:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}var vr=e=>{let{allowOverride:a,autoRun:d=!0,editable:l=!0,onDeviceTimeout:r,variation:m="default",title:C,showOpenButton:N=!1,showOpenButtonTitle:ge=!0,showOpenButtonIcon:ne=!0,openButtonTitle:te,openButtonIcon:re,showRegenerateOnBackendButton:Oe=!0,acceptButtonTitle:ie="Accept",optionsDisplay:D="collapse",mode:p,context:E,modeOverride:fe,colorMode:_,default:Q,onClose:ke,onAccept:T,onOptionsChanged:K,language:X,direction:me,rootElement:je}=e,[ve,B]=(0,P.useState)(),[ae,Pe]=(0,P.useState)(),$=ve??ba(X);o.I18n.setLanguage($||"en");let Pt=$||"en",st=(0,P.useMemo)(()=>{let n=ve?ae:me;return!n||n==="auto"?zn($)?"rtl":"ltr":n},[me,ae,$,ve]),ee={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},Ne=(0,P.useMemo)(()=>!!(p==="write"&&ee?.text||(p==="write"||p==="rewrite"||p==="generateImageMetadata"||p==="generatePostMetadata")&&ee?.instructions||(p==="write"||p==="rewrite")&&ee?.tone||(p==="write"||p==="rewrite"||p==="summarize")&&ee?.length||p==="summarize"&&ee?.type||ee?.outputLanguage),[ee,p]),[Ge,be]=(0,P.useState)(),[Se,Re]=(0,P.useState)(!N),[He,pe]=(0,P.useState)(!1),[Qe,Xe]=(0,P.useState)(!1),[lt,we]=(0,P.useState)(null),[F,oe]=(0,P.useState)(null),[et,V]=(0,P.useState)(Q?.text),[nt]=(0,P.useState)(Q?.image),[ye,vt]=(0,P.useState)(Q?.instructions),[Ie,We]=(0,P.useState)(),[ut,he]=(0,P.useState)(Q?.inputLanguage),[Me,Et]=(0,P.useState)(Q?.outputFormat),[R,wt]=(0,P.useState)(Q?.outputLanguage||Tn.settings.defaultOutputLanguage||(p==="rewrite"?"auto":void 0)),[tt,ct]=(0,P.useState)(Q?.length),[Te,dt]=(0,P.useState)(Q?.tone),[Ve,Je]=(0,P.useState)(Q?.type),[rt,Tt]=(0,P.useState)(""),ze=(0,P.useRef)(!1),De=(0,P.useMemo)(()=>fr(),[]),ot=(0,P.useMemo)(()=>{if(C)return C;let n;switch(p){default:case"summarize":n="Summarize";break;case"proofread":n="Proofread";break;case"write":n="Write";break;case"rewrite":n="Rewrite";break;case"translate":n="Translate";break;case"generatePostMetadata":n="Generate Post Metadata";break;case"generateImageMetadata":n="Generate Image Metadata";break}return n},[C,p,$]),Ee=(0,P.useCallback)(n=>{if(!n||n.silent)return null;let A=n.step,I=o.I18n.get((n.message??"").trim()),O=typeof n.progress=="number"?n.progress:null,U=O==null?null:Math.round(O*100);switch(A){case"decide":return I||o.I18n.get("Checking capabilities...");case"on-device:init":return I||o.I18n.get("Initializing on-device AI...");case"on-device:download":return I||(U==null?o.I18n.get("Downloading model..."):o.I18n.get("Downloading model...")+" "+U+"%");case"on-device:ready":return I||o.I18n.get("On-device model ready.");case"on-device:run":return I||o.I18n.get("Generating...");case"backend:request":case"backend:waiting":case"backend:response":switch(p){case"translate":return o.I18n.get("Translating text");case"rewrite":return o.I18n.get("Rewriting text");case"summarize":return o.I18n.get("Summarizing");case"proofread":return o.I18n.get("Proofreading");default:return o.I18n.get("Generating text")}case"done":return I||o.I18n.get("Done.");case"error":return I||o.I18n.get("Something went wrong.");default:return I||o.I18n.get("Working...")}},[$,p]),Be=(0,P.useMemo)(()=>et??Q?.getText,[et,Q]),se=(0,P.useMemo)(()=>{let n=Be;if(typeof n=="function")switch(p){case"generateImageMetadata":return!!nt;case"translate":return!R||Ie!==R;case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!0;default:return!1}let A=n;switch(p){case"generateImageMetadata":return!!nt;case"translate":return!!(A&&A.trim().length>0)&&(!R||Ie!==R);case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!!(A&&A.trim().length>0);default:return!1}},[Be,p,nt,Ie,R,Se]),x=Dt(),xe=Ee(x.statusEvent)??(Ge?o.I18n.get(Ge):null),St=(0,P.useCallback)(n=>{if(n&&n!=="auto"){Tt(n);return}Tt(At()||"")},[]),kt=(0,P.useCallback)(async n=>{if(!se)return;Ne&&p!=="proofread"&&se&&pe(!1),we(null),oe(null);let A=await Be;try{let I=typeof A=="function"?await Promise.resolve(A()):A;switch(p){case"summarize":{let O=(R&&R!=="auto"?R:null)||At(),U=await x.run(async({signal:ue,onStatus:ce})=>{let q={text:I.trim(),format:Me==="plain-text"?"plain-text":"markdown",length:tt,type:Ve,outputLanguage:O};return(await(0,H.summarize)(q,{signal:ue,onStatus:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O||""),oe(U??"");break}case"proofread":{let O=await x.run(async({signal:U,onStatus:ue})=>{let ce=[];try{be("Detecting input language...");let Ut=(await(0,H.detectLanguage)({text:I.trim()},{signal:U,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0})).result?.candidates?.filter(Ot=>Ot.confidence&&Ot.confidence>.1).map(Ot=>Ot.detectedLanguage);ce.push(...Ut)}catch{ce.push("en")}let q={text:I.trim(),expectedInputLanguages:ce};return(await(0,H.proofread)(q,{signal:U,onStatus:ue,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});oe(O??"");break}case"translate":{let O=(R&&R!=="auto"?R:null)||At(),U=await x.run(async({signal:ue,onStatus:ce})=>{let q=ut??"auto";if(q==="auto"&&(be("Detecting input language..."),q=await ha(I.trim(),{signal:ue,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0})),We(q),O===q)throw console.warn("AI Kit: input and output languages are the same",{inputLang:q,outLang:O}),we(o.I18n.get("Input and output languages cannot be the same.")),new Error(o.I18n.get("Input and output languages cannot be the same."));let de={text:I.trim(),sourceLanguage:q,targetLanguage:O};return(await(0,H.translate)(de,{signal:ue,onStatus:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O||""),oe(U??"");break}case"rewrite":{let O="",U=await x.run(async({signal:ue,onStatus:ce})=>{let q=(R&&R!=="auto"?R:null)||At();R==="auto"&&(be("Detecting input language..."),q=await ha(I.trim(),{signal:ue,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0}),wt(q)),O=q||"";let de={text:I.trim(),context:ye?.trim()||void 0,format:Me==="plain-text"?"plain-text":"markdown",tone:Te,length:tt,outputLanguage:q};return(await(0,H.rewrite)(de,{signal:ue,onStatus:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O),oe(U??"");break}case"write":{let O=(R&&R!=="auto"?R:null)||At(),U={prompt:I.trim(),context:ye?.trim()||void 0,format:Me==="plain-text"?"plain-text":"markdown",tone:Te,length:tt,outputLanguage:O},ue=await x.run(async({signal:ce,onStatus:q})=>{let de={signal:ce,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0};be("Detecting input language...");let Ke=await ha(I.trim()+`
9
9
  `+(ye?.trim()||""),de);return Ke!==O&&Ke!=="en"&&(be("Translating instructions..."),U.prompt=(await(0,H.translate)({text:U.prompt,sourceLanguage:Ke,targetLanguage:"en"},de)).result,ye&&(U.context=(await(0,H.translate)({text:ye,sourceLanguage:Ke,targetLanguage:"en"},de)).result)),(await(0,H.write)(U,{signal:ce,onStatus:q,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result});St(O||""),oe(ue??"");break}case"generatePostMetadata":{let O=[{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.
@@ -14,7 +14,7 @@ Do not add extra keys, no markdown, no explanations.
14
14
  Follow the response constraint strictly.
15
15
  `+(ye?`
16
16
  Follow these additional instructions: ${ye}`:"")},{role:"user",content:`Post content:
17
- ${x.trim()}`}],U=await I.run(async({signal:q,onStatus:de})=>(await(0,H.prompt)({messages:O,outputLanguage:"en",responseConstraint:kr},{signal:q,onStatus:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result);if(!U){oe("");return}let ue=jt(U).trim(),ce=(R&&R!=="auto"?R:null)||At();try{be("Translating result...");let q=await I.run(async({signal:de})=>await Ar(ue,ce,{signal:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0}));oe(q)}catch(q){oe(ue),console.warn("AI Kit: failed to parse SEO JSON",q)}break}case"generateImageMetadata":{let O=[{role:"system",content:`You write WordPress media metadata for accessibility and SEO.
17
+ ${I.trim()}`}],U=await x.run(async({signal:q,onStatus:de})=>(await(0,H.prompt)({messages:O,outputLanguage:"en",responseConstraint:kr},{signal:q,onStatus:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result);if(!U){oe("");return}let ue=jt(U).trim(),ce=(R&&R!=="auto"?R:null)||At();try{be("Translating result...");let q=await x.run(async({signal:de})=>await Ar(ue,ce,{signal:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0}));oe(q)}catch(q){oe(ue),console.warn("AI Kit: failed to parse SEO JSON",q)}break}case"generateImageMetadata":{let O=[{role:"system",content:`You write WordPress media metadata for accessibility and SEO.
18
18
  Return ONLY a minified JSON object with keys: alt, title, caption, description.
19
19
  No extra keys. No markdown. No explanations.
20
20
  Follow the response constraint strictly.
@@ -28,4 +28,4 @@ Guidelines:
28
28
  - caption: optional context users might see below the image; keep short.
29
29
  - description: 1\u20132 short sentences; can include context/usage if known.
30
30
  `+(ye?`
31
- Follow these additional instructions: ${ye}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),U=await I.run(async({signal:q,onStatus:de})=>(await(0,H.prompt)({messages:O,images:[nt],outputLanguage:"en",responseConstraint:br},{signal:q,onStatus:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result);if(!U){oe("");return}let ue=(R&&R!=="auto"?R:null)||At(),ce=jt(U).trim();try{be("Translating result...");let q=await I.run(async({signal:de})=>await yr(ce,ue,{signal:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0}));oe(q)}catch(q){oe(ce),console.warn("AI Kit: failed to parse SEO JSON",q)}break}}}catch(x){we(x instanceof Error?x.message:o.I18n.get("An unknown error occurred."))}be(void 0)},[X,I,ye,tt,R,et,Te,E,p,Ve,ut,se,Ne]),bt=(0,P.useCallback)(async()=>{await kt("backend-only")},[kt]),at=(0,P.useCallback)(n=>{switch(p){case"proofread":return(0,c.jsx)(ht.IconCircleDashedCheck,{className:n});case"translate":return(0,c.jsx)(ht.IconLanguage,{className:n});case"summarize":return(0,c.jsx)(ht.IconSum,{className:n});case"rewrite":case"write":return(0,c.jsx)(ht.IconPencilCode,{className:n});case"generateImageMetadata":case"generatePostMetadata":return(0,c.jsx)(ht.IconSeo,{className:n});default:return(0,c.jsx)(H.AiKitFeatureIcon,{mode:p,className:n})}},[p]),yt=(0,P.useCallback)(()=>{switch(p){case"proofread":return I.lastSource?o.I18n.get("Proofread again"):o.I18n.get("Proofread");case"translate":return I.lastSource?o.I18n.get("Translate again"):o.I18n.get("Translate");case"rewrite":return I.lastSource?o.I18n.get("Rewrite again"):o.I18n.get("Rewrite");case"summarize":return I.lastSource?o.I18n.get("Summarize again"):o.I18n.get("Summarize");default:return I.lastSource?o.I18n.get("Regenerate"):o.I18n.get("Generate")}},[$,I.lastSource,p]),Bt=(0,P.useCallback)(()=>{switch(p){case"proofread":return o.I18n.get("Proofread on Backend");case"translate":return o.I18n.get("Translate on Backend");case"rewrite":return o.I18n.get("Rewrite on Backend");case"summarize":return o.I18n.get("Summarize on Backend");default:return o.I18n.get("Regenerate on Backend")}},[$,p]),_e=(0,P.useCallback)(async()=>{Re(!1),oe(null),we(null),ze.current=!1,I.reset(),N||ke()},[ke,ze,I,N]),gt=(0,P.useCallback)(async()=>{I.busy&&I.cancel()},[I.busy]);(0,P.useEffect)(()=>{!Se||!d||!se||I.busy||F||ze.current||(ze.current=!0,queueMicrotask(()=>{kt(fe)}))},[I.busy,ze,Se,se,d,F,kt,fe]),(0,P.useEffect)(()=>{Ne&&p!=="proofread"&&(se||(pe(!0),ze.current=!0))},[Ne,se,p]),(0,P.useEffect)(()=>{let n=!0;return(async()=>{try{await(0,H.waitForAiKitReady)();let A=await ga();n&&Xe(A)}catch(A){console.error(A),n&&Xe(!1)}})(),()=>{n=!1}},[]),(0,P.useEffect)(()=>{ve&&(Pe("auto"),wt(ve),We(void 0))},[ve]);let Rt=(0,P.useMemo)(()=>{let n=[];if(p==="translate"){let A=H.LANGUAGE_OPTIONS.find(x=>x.value===ut)?.label;n.push(o.I18n.get("Input language")+": "+(A?o.I18n.get(A):"auto"))}if(R&&ee?.outputLanguage){let A=H.LANGUAGE_OPTIONS.find(x=>x.value===R)?.label;n.push(o.I18n.get("Output language")+": "+(A?o.I18n.get(A):R))}return p==="summarize"&&Ve&&ee?.type&&n.push(o.I18n.get("Type")+": "+o.I18n.get(Ve)),(p==="write"||p==="rewrite")&&Te&&ee?.tone&&n.push(o.I18n.get("Tone")+": "+o.I18n.get(Te)),(p==="write"||p==="rewrite"||p==="summarize")&&tt&&ee?.length&&n.push(o.I18n.get("Length")+": "+o.I18n.get(tt)),ye?.trim()&&ee?.instructions&&n.push(o.I18n.get("Instructions")+": \u2713"),n.length?n.join(" \u2022 "):o.I18n.get("No overrides")},[$,p,ut,R,Ve,Te,tt,ye]),$e={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},mt=m==="modal"?k.Modal.Root:k.Group,Kt=m==="modal"?k.Modal.Content:k.Group,h=m==="modal"?k.Modal.Body:k.Group,v=D==="collapse"?k.Collapse:k.Stack,W=D==="horizontal"?k.Group:k.Stack,j=(0,P.useMemo)(()=>De.find(n=>n.value===Pt)??De[0],[Pt,De]),le=(0,P.useCallback)((n="sm")=>(0,c.jsx)(k.Select,{allowDeselect:!1,"aria-label":o.I18n.get("Interface language"),checkIconPosition:"right",className:"ai-feature-language-selector",data:De.map(A=>({value:A.value,label:""})),disabled:I.busy,leftSection:j?.countryCode?(0,c.jsx)(Sn,{countryCode:j.countryCode,size:18}):null,onChange:A=>{let x=ba(A);x&&B(x)},renderOption:({option:A})=>{let x=De.find(O=>O.value===A.value);return x?(0,c.jsxs)(k.Group,{gap:"xs",wrap:"nowrap",children:[x.countryCode?(0,c.jsx)(Sn,{countryCode:x.countryCode,size:18}):null,(0,c.jsx)("span",{children:o.I18n.get(x.label)})]}):A.label},rightSection:null,searchable:!1,size:n,styles:{dropdown:{minWidth:220},input:{backgroundColor:"transparent",border:0,boxShadow:"none",color:"inherit",fontSize:18,lineHeight:1,minHeight:n==="sm"?36:28,paddingInlineStart:0,paddingInlineEnd:0,backgroundImage:"none",width:n==="sm"?44:36},option:{color:"inherit"},section:{color:"inherit",alignItems:"center",display:"flex",height:"100%",insetInlineStart:0,justifyContent:"center",pointerEvents:"none",width:"100%"}},value:j?.value||null,w:n==="sm"?44:36}),[I.busy,j?.countryCode,j?.value,B,De]);return(0,P.useEffect)(()=>{if(!(m!=="modal"||!Se))return document.body.style.overflow="hidden",document.body.onkeydown=n=>{n.key==="Escape"&&(n.preventDefault(),_e())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[_e,m]),(0,c.jsxs)(c.Fragment,{children:[N&&(0,c.jsx)(k.Button,{leftSection:ne&&(re?(0,c.jsx)("span",{dangerouslySetInnerHTML:{__html:re}}):at()),className:ge?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:Se,onClick:()=>Re(!0),"data-ai-kit-open-button":!0,children:ge&&o.I18n.get(te||ot)}),Se&&(0,c.jsxs)(mt,{opened:!0,className:"ai-feature-root",onClose:_e,padding:"md",gap:"md",size:"md",portalProps:m==="modal"?{target:je,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":_,"data-ai-kit-variation":m,children:[m==="modal"&&(0,c.jsx)(k.Modal.Overlay,{}),(0,c.jsxs)(Kt,{w:"100%",dir:st,style:{left:0},children:[m==="modal"&&(0,c.jsxs)(k.Modal.Header,{dir:st,style:{zIndex:1e3},children:[at("ai-feature-title-icon"),(0,c.jsx)(k.Modal.Title,{children:o.I18n.get(ot)}),(0,c.jsx)("div",{style:{display:"flex",flex:1,justifyContent:"flex-start",marginRight:8},children:le("xs")}),(0,c.jsx)(k.Modal.CloseButton,{})]}),(0,c.jsx)(h,{w:"100%",style:{zIndex:1001},children:(0,c.jsxs)(Nt,{enabled:m!=="modal",working:I.busy,variation:m,children:[(0,c.jsxs)(k.Stack,{gap:"sm",mb:"sm",p:"sm",dir:st,children:[m!=="modal"&&(0,c.jsx)(k.Group,{justify:"flex-end",children:le()}),lt&&(0,c.jsx)(k.Alert,{color:"red",children:o.I18n.get(lt)}),Ne&&p!=="proofread"&&(0,c.jsxs)(k.Paper,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":D,children:[(0,c.jsxs)(k.Group,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:D==="collapse"?()=>pe(n=>!n):void 0,children:[D==="collapse"&&(0,c.jsxs)(k.Stack,{gap:0,children:[(0,c.jsx)(k.Text,{size:"sm",fw:600,style:{lineHeight:1.1},children:o.I18n.get("Options")}),(0,c.jsx)(k.Text,{size:"xs",c:"dimmed",style:{marginTop:2},children:Rt})]}),D==="collapse"&&(0,c.jsx)(k.Button,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:n=>{n.stopPropagation(),pe(A=>!A)},children:He?o.I18n.get("Hide"):o.I18n.get("Show")})]}),(0,c.jsxs)(v,{in:He,children:[D==="collapse"&&(0,c.jsx)(k.Divider,{my:"sm"}),(0,c.jsxs)(W,{gap:"xs",justify:"space-between",children:[p==="write"&&ee?.text&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The topic or subject for the AI to write about."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.TextInput,{size:"xs",className:"ai-feature-option",styles:$e,disabled:I.busy,label:o.I18n.get("Topic"),description:D!=="horizontal"?o.I18n.get("The topic or subject for the AI to write about."):void 0,value:et||"",onChange:n=>{let A=n.target.value;V(A),K?.({text:A})}})}),(p==="write"||p==="rewrite"||p==="generateImageMetadata"||p==="generatePostMetadata")&&ee?.instructions&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("Additional instructions to guide the AI."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.TextInput,{disabled:I.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Instructions"),description:D!=="horizontal"?o.I18n.get("Additional instructions to guide the AI."):void 0,value:ye||"",onChange:n=>{let A=n.target.value;vt(A),K?.({instructions:A})}})}),p==="translate"&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The language of the input text."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:I.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.I18n.get("Input language"),description:D!=="horizontal"?o.I18n.get("The language of the input text."):void 0,data:[{value:"auto",label:o.I18n.get("Auto-detect")},...H.LANGUAGE_OPTIONS.map(n=>({value:n.value,label:o.I18n.get(n.label)})).sort((n,A)=>n.label.localeCompare(A.label))],value:ut||"auto",onChange:n=>{let A=n;he(A),We(void 0),K?.({inputLanguage:A})}})}),ee?.outputLanguage&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:I.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.I18n.get("Output language"),description:D!=="horizontal"?o.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[p==="rewrite"?{value:"auto",label:o.I18n.get("Auto-detect")}:void 0].filter(Boolean),...H.LANGUAGE_OPTIONS.map(n=>({value:n.value,label:o.I18n.get(n.label)})).sort((n,A)=>n.label.localeCompare(A.label))],value:R||Tn.settings.defaultOutputLanguage||(p==="rewrite"?"auto":""),onChange:n=>{let A=n;wt(A),We(void 0),K?.({outputLanguage:A})}})}),p==="summarize"&&ee?.type&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The summary style to generate."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:I.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Type"),description:D!=="horizontal"?o.I18n.get("The summary style to generate."):void 0,data:[{value:"headline",label:o.I18n.get("Headline")},{value:"key-points",label:o.I18n.get("Key Points")},{value:"teaser",label:o.I18n.get("Teaser")},{value:"tldr",label:o.I18n.get("TL;DR")}],value:Ve||"key-points",onChange:n=>{let A=n;Je(A),K?.({type:A})}})}),(p==="write"||p==="rewrite")&&ee?.tone&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The tone or style for the AI to use."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:I.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Tone"),description:D!=="horizontal"?o.I18n.get("The tone or style for the AI to use."):void 0,data:p==="write"?[{value:"neutral",label:o.I18n.get("Neutral")},{value:"formal",label:o.I18n.get("Formal")},{value:"casual",label:o.I18n.get("Casual")}]:[{value:"as-is",label:o.I18n.get("As-Is")},{value:"more-formal",label:o.I18n.get("More formal")},{value:"more-casual",label:o.I18n.get("More casual")}],value:Te||(p==="write"?"neutral":"as-is"),onChange:n=>{let A=n;dt(A),K?.({tone:A})}})}),(p==="write"||p==="rewrite"||p==="summarize")&&ee?.length&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The target output length."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:I.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Length"),description:D!=="horizontal"?o.I18n.get("The target output length."):void 0,data:p==="write"||p==="summarize"?[{value:"short",label:o.I18n.get("Short")},{value:"medium",label:o.I18n.get("Medium")},{value:"long",label:o.I18n.get("Long")}]:[{value:"as-is",label:o.I18n.get("As-Is")},{value:"shorter",label:o.I18n.get("Shorter")},{value:"longer",label:o.I18n.get("Longer")}],value:tt||(p==="rewrite"?"as-is":"short"),onChange:n=>{let A=n;ct(A),K?.({length:A})}})}),p==="summarize"||p==="write"||p==="rewrite"&&ee?.outputFormat&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The format for the generated output."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:I.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Output format"),description:D!=="horizontal"?o.I18n.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:o.I18n.get("Plain Text")},{value:"markdown",label:o.I18n.get("Markdown")},{value:"html",label:o.I18n.get("HTML")}],value:Me||"markdown",onChange:n=>{let A=n;Et(A),K?.({outputFormat:A})}})})]})]})]}),I.busy&&xe&&(0,c.jsx)(Nt,{enabled:m==="modal",working:!0,variation:m,children:(0,c.jsxs)(k.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,c.jsx)(k.Loader,{size:"sm"}),(0,c.jsx)(k.Input.Label,{className:"ai-feature-status-text",children:xe})]})}),F&&(0,c.jsxs)(k.Stack,{mt:"md",children:[p==="proofread"&&(F.corrections.length===0?(0,c.jsx)(k.Alert,{color:"green",children:o.I18n.get("No issues found. Your text looks great!")}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("p",{style:{marginTop:0,opacity:.85},children:o.I18n.get("Hover highlights to see explanations.")}),(0,c.jsx)(kn,{original:et,corrections:F.corrections}),F.correctedInput?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("h4",{style:{marginTop:16,marginBottom:8},children:o.I18n.get("Corrected")}),(0,c.jsx)(k.Group,{c:"pre",className:"ai-feature-generated-content",children:F.correctedInput})]}):null]})),p==="generateImageMetadata"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Alt Text"),description:o.I18n.get("The alt text for the image."),value:F.alt_text||"",onChange:n=>oe({...F,alt_text:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Title"),description:o.I18n.get("The title for the image."),value:F.title||"",onChange:n=>oe({...F,title:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Caption"),description:o.I18n.get("The caption for the image."),value:F.caption||"",onChange:n=>oe({...F,caption:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Description"),description:o.I18n.get("The description for the image."),value:F.description||"",onChange:n=>oe({...F,description:n.target.value})})]}),p==="generatePostMetadata"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Title"),description:o.I18n.get("The title for the post."),value:F.title||"",onChange:n=>oe({...F,title:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Excerpt"),description:o.I18n.get("The excerpt for the post."),value:F.excerpt||"",onChange:n=>oe({...F,excerpt:n.target.value})})]}),p!=="proofread"&&p!=="generateImageMetadata"&&p!=="generatePostMetadata"&&typeof F=="string"&&(0,c.jsx)(Rn,{contentLanguage:rt,value:F,editable:!!l,onChange:n=>{oe(n)}})]}),F===""&&(0,c.jsx)(Rn,{contentLanguage:rt,value:F,editable:!1})]}),(0,c.jsxs)(k.Group,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[I.busy&&(0,c.jsx)(k.Button,{variant:"outline",size:"sm",onClick:gt,"data-ai-kit-cancel-button":!0,children:o.I18n.get("Cancel")}),!I.busy&&(0,c.jsx)(k.Button,{variant:"filled",size:"sm",disabled:!se,onClick:()=>kt(),"data-ai-kit-generate-button":!0,children:yt()}),!I.busy&&I.lastSource==="on-device"&&Qe&&Oe&&(0,c.jsx)(k.Button,{variant:"filled",size:"sm",disabled:!se,onClick:bt,"data-ai-kit-regenerate-on-backend-button":!0,children:Bt()}),!I.busy&&T&&(0,c.jsx)(k.Button,{variant:"outline",size:"sm",disabled:!F||p==="proofread"&&F.corrections.length===0,onClick:async()=>{T(Me==="html"?await na(F):F),_e()},"data-ai-kit-accept-button":!0,children:o.I18n.get(ie)}),(0,c.jsx)(k.Button,{variant:"default",size:"sm",onClick:_e,"data-ai-kit-close-button":!0,children:o.I18n.get("Close")})]}),(0,c.jsx)(Zt,{variation:m})]})})]})]})]})};function Rn(e){let{contentLanguage:a,value:d,editable:l,onChange:r}=e,m=zn(a)?"rtl":"ltr",C=m==="rtl"?"right":"left";return l?(0,c.jsxs)(k.Stack,{p:0,gap:"sm",dir:m,style:{textAlign:C},children:[(0,c.jsx)(k.Input.Label,{children:o.I18n.get("Generated content")}),(0,c.jsx)(k.Textarea,{value:d,onChange:N=>r?.(N.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor",styles:{input:{direction:m,textAlign:C}}}),(0,c.jsx)(k.Input.Label,{children:o.I18n.get("Preview")}),(0,c.jsx)(k.Stack,{className:"ai-feature-generated-content ai-feature-preview",dir:m,style:{textAlign:C},children:(0,c.jsx)(fa.default,{remarkPlugins:[ka.default],children:d})})]}):(0,c.jsx)(k.Stack,{className:"ai-feature-generated-content",dir:m,style:{textAlign:C},children:d?(0,c.jsx)(fa.default,{remarkPlugins:[ka.default],children:d}):(0,c.jsx)(k.Alert,{color:"yellow",children:o.I18n.get("No content generated.")})})}var Cn=It(vr);var b=require("@mantine/core"),Ae=require("@tabler/icons-react"),Ft=require("@smart-cloud/ai-kit-core"),xn=require("@wordpress/data"),S=require("aws-amplify/utils"),i=require("react"),Ln=qe(require("react-markdown"),1),Pn=qe(require("remark-gfm"),1);var wr="ai-kit-chatbot-attachments",ft="attachments";var ya=null;function Tr(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function ra(){if(!Tr())return null;ya||(ya=new Promise(e=>{try{let a=window.indexedDB.open(wr,1);a.onerror=()=>e(null),a.onblocked=()=>e(null),a.onupgradeneeded=()=>{let d=a.result;d.objectStoreNames.contains(ft)||d.createObjectStore(ft,{keyPath:"id"})},a.onsuccess=()=>e(a.result)}catch(a){console.warn("[AiChatbot] IndexedDB is not available",a),e(null)}}));try{return await ya}catch(e){return console.warn("[AiChatbot] Failed to open attachment store",e),null}}async function Aa(e,a){let d=await ra();return d?new Promise((l,r)=>{try{let m=d.transaction(ft,e),C=m.objectStore(ft),N=a(C);m.oncomplete=()=>l(N),m.onerror=()=>r(m.error),m.onabort=()=>r(m.error)}catch(m){r(m)}}).catch(l=>(console.warn("[AiChatbot] Attachment store transaction failed",l),null)):null}async function va(e,a,d){await Cr();let l={id:e,blob:a,name:d.name,type:d.type,size:d.size,createdAt:Date.now()};return await Aa("readwrite",m=>(m.put(l),e))}async function wa(e){let a=await ra();return a?new Promise((d,l)=>{try{let r=a.transaction(ft,"readonly"),m=r.objectStore(ft).get(e);m.onsuccess=()=>{let C=m.result;d(C??null)},m.onerror=()=>l(m.error),r.onabort=()=>l(r.error)}catch(r){l(r)}}).catch(d=>(console.warn("[AiChatbot] Failed to load attachment",d),null)):null}async function Sr(e){await Aa("readwrite",a=>{a.delete(e)})}async function oa(){await Aa("readwrite",e=>{e.clear()})}async function Ta(e){let a=await ra();a&&await new Promise((d,l)=>{try{let r=a.transaction(ft,"readwrite"),m=r.objectStore(ft),C=m.getAllKeys();C.onsuccess=()=>{let N=C.result;for(let ge of N){let ne=String(ge);e.has(ne)||m.delete(ge)}},C.onerror=()=>l(C.error),r.oncomplete=()=>d(),r.onerror=()=>l(r.error),r.onabort=()=>l(r.error)}catch(r){l(r)}}).catch(d=>{console.warn("[AiChatbot] Failed to cleanup attachments",d)})}var Rr=50*1024*1024;async function zr(){let e=await ra();return e?new Promise((a,d)=>{try{let l=e.transaction(ft,"readonly"),r=l.objectStore(ft).getAll();r.onsuccess=()=>{let m=r.result||[];a(m)},r.onerror=()=>d(r.error),l.onerror=()=>d(l.error),l.onabort=()=>d(l.error)}catch(l){d(l)}}).catch(a=>(console.warn("[AiChatbot] Failed to get all attachments",a),[])):[]}async function Cr(){let e=await zr();if(e.length===0)return;let a=e.sort((m,C)=>m.createdAt-C.createdAt),d=a.reduce((m,C)=>m+C.size,0),l=[],r=0;for(;d>Rr&&r<a.length;){let m=a[r];m&&(l.push(m.id),d-=m.size),r++}for(let m of l)await Sr(m);l.length>0&&console.log(`[AiChatbot] Deleted ${l.length} old attachment(s) to enforce storage quota`)}var s=require("react/jsx-runtime");S.I18n.putVocabularies(Ct);var ia=1440*60*1e3,Sa=!1,Ir=1,xr="localstorage",Ht=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,la={modalTitle:"AI Assistant",userLabel:"User",assistantLabel:"Assistant",assistantThinkingLabel:"Assistant is thinking...",askMeLabel:"Ask me",sendLabel:"Send",cancelLabel:"Cancel",resetLabel:"Reset",confirmLabel:"Confirm",clickAgainToConfirmLabel:"Click again to confirm",notSentLabel:"Not sent",editLabel:"Edit",readyLabel:"Ready.",readyEmptyLabel:"I'm ready to assist you.",addLabel:"Add",addImageLabel:"Add image",removeImageLabel:"Remove image",closeChatLabel:"Close chat",maximizeLabel:"Maximize",restoreSizeLabel:"Restore size",referencesLabel:"References",referenceLabel:"Reference",acceptResponseLabel:"Accept response",rejectResponseLabel:"Reject response",placeholder:"Ask anything\u2026",emptyResponseLabel:"Empty response",unexpectedErrorLabel:"Unexpected error"};function xt(e){return`${e}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var Lr=4,Pr=5*1024*1024,Mr=e=>{let a=(e?.name||"").toString(),d=(e?.code||"").toString(),l=(e?.message||"").toString();return a==="AbortError"||d==="ABORT_ERR"||/abort|aborted|cancel/i.test(l)},Dr=(e,a)=>{if(!e)return null;let d=e.step,l=S.I18n.get((e.message??"").trim()),r=typeof e.progress=="number"?e.progress:null,m=r==null?null:Math.round(r*100);switch(d){case"decide":return l||S.I18n.get("Checking capabilities...");case"on-device:init":return l||S.I18n.get("Initializing on-device AI...");case"on-device:download":return m==null?l||S.I18n.get("Downloading model..."):l||`${S.I18n.get("Downloading model...")} ${m}%`;case"on-device:ready":return l||S.I18n.get("On-device model ready...");case"on-device:run":return l||S.I18n.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return S.I18n.get(a.assistantThinkingLabel??la.assistantThinkingLabel);case"done":return l||S.I18n.get("Done.");case"error":return l||S.I18n.get("An error occurred.");default:return l||null}};function Ra(e){if(typeof window>"u")return null;try{return e==="localstorage"?window.localStorage:e==="sessionstorage"?window.sessionStorage:null}catch{return null}}var Wt=e=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(e)}catch{return null}},sa=e=>{if(e&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(e)}catch{}},Mn=e=>{!e||e.length===0||e.forEach(a=>sa(a.objectUrl))},In=e=>{e.forEach(a=>Mn(a.attachments))},Er=e=>{let{rootElement:a,store:d,previewMode:l,title:r,openButtonTitle:m,openButtonIcon:C,showOpenButtonTitle:N=!0,showOpenButtonIcon:ge=!0,colorMode:ne,language:te,onClose:re,context:Oe,placeholder:ie,maxImages:D,maxImageBytes:p,historyStorage:E=xr,emptyHistoryAfterDays:fe=Ir,labels:_,openButtonIconLayout:Q="top",openButtonPosition:ke="bottom-right"}=e,T=(0,i.useMemo)(()=>({...la,..._||{}}),[_]),K=Dt(),[X,me]=(0,i.useState)(""),[je,ve]=(0,i.useState)([]),[B,ae]=(0,i.useState)(null),[Pe,$]=(0,i.useState)(!1),[Pt,st]=(0,i.useState)(0),ee=(0,i.useRef)(null),Ne=(0,i.useRef)([]),Ge=(0,i.useRef)(null),be=(0,i.useRef)(null),Se=(0,i.useRef)(null),[Re,He]=(0,i.useState)([]),[pe,Qe]=(0,i.useState)(null),[Xe,lt]=(0,i.useState)(!1),[we,F]=(0,i.useState)(!1),[oe,et]=(0,i.useState)(!1),[V,nt]=(0,i.useState)(!1),[ye,vt]=(0,i.useState)(!0),[Ie,We]=(0,i.useState)(null),[ut,he]=(0,i.useState)(!1),[Me,Et]=(0,i.useState)(null),[R,wt]=(0,i.useState)(null),[tt,ct]=(0,i.useState)(!1),[Te,dt]=(0,i.useState)(null),Ve=(0,i.useRef)(Te);(0,i.useEffect)(()=>{Ve.current=Te},[Te]);let Je=(0,i.useRef)(null),rt=(0,i.useRef)(!1),[Tt,ze]=(0,i.useState)(null),De=(0,i.useRef)(null),ot=(0,i.useRef)(null),Ee=(0,i.useRef)(null),Be=(0,i.useRef)(null),se=(0,i.useCallback)(t=>{t.forEach(g=>sa(g.objectUrl))},[]),I=(0,i.useCallback)(()=>{se(gt.current),ve([]),De.current&&(De.current.value="")},[se]),xe=(0,i.useCallback)(()=>{Rt.current&&sa(Rt.current.objectUrl),ae(null),Ne.current=[],st(0)},[]),St=(0,i.useCallback)(async()=>{try{me(""),xe();let t=await navigator.mediaDevices.getUserMedia({audio:!0}),g=new MediaRecorder(t,{mimeType:"audio/webm"}),w=new AudioContext,u=w.createMediaStreamSource(t),L=w.createAnalyser();L.fftSize=2048,L.smoothingTimeConstant=.8,u.connect(L),Ge.current=w,be.current=L;let z=new Uint8Array(L.fftSize),G=()=>{if(!be.current)return;be.current.getByteTimeDomainData(z);let Z=0;for(let Fe=0;Fe<z.length;Fe++){let Mt=(z[Fe]-128)/128;Z+=Mt*Mt}let Ce=Math.sqrt(Z/z.length),Ue=Math.min(100,Ce*200);st(Ue),Se.current=requestAnimationFrame(G)};G(),Ne.current=[];let Y=Date.now();g.ondataavailable=Z=>{Z.data.size>0&&Ne.current.push(Z.data)},g.onstop=()=>{let Z=new Blob(Ne.current,{type:"audio/webm"}),Ce=(Date.now()-Y)/1e3,Ue=Wt(Z);Ue&&ae({id:xt("composer-audio"),blob:Z,objectUrl:Ue,duration:Ce}),t.getTracks().forEach(Fe=>Fe.stop()),Se.current&&(cancelAnimationFrame(Se.current),Se.current=null),Ge.current&&(Ge.current.close(),Ge.current=null),be.current=null,st(0)},ee.current=g,g.start(),$(!0)}catch(t){console.error("Failed to start recording:",t)}},[xe]),kt=(0,i.useCallback)(()=>{ee.current&&Pe&&(ee.current.stop(),$(!1))},[Pe]);(0,i.useEffect)(()=>()=>{Se.current&&cancelAnimationFrame(Se.current),Ge.current&&Ge.current.close(),xe()},[xe]);let[bt,at]=(0,i.useState)(null),yt=(0,i.useRef)(X),Bt=(0,i.useRef)(Re),_e=(0,i.useRef)(bt),gt=(0,i.useRef)(je),Rt=(0,i.useRef)(B);(0,i.useEffect)(()=>{yt.current=X},[X]),(0,i.useEffect)(()=>{gt.current=je},[je]),(0,i.useEffect)(()=>{Rt.current=B},[B]),(0,i.useEffect)(()=>{Bt.current=Re},[Re]),(0,i.useEffect)(()=>{_e.current=bt},[bt]),(0,i.useEffect)(()=>{te&&S.I18n.setLanguage(te||"en")},[te]);let $e=(0,xn.useSelect)(()=>(0,Ft.getStoreSelect)(d).isShowChatbotPreview()),mt=(0,i.useMemo)(()=>Math.max(0,D??Lr),[D]),Kt=(0,i.useMemo)(()=>Math.max(0,p??Pr),[p]),h=Re.length>0,v=(0,i.useMemo)(()=>K.busy&&Te==="chat",[K.busy,Te]),W=(0,i.useMemo)(()=>v?!1:X.trim().length>0||B!==null,[X,v,B]),j=(0,i.useMemo)(()=>{let t=m||T.askMeLabel;return S.I18n.get(t)},[m,T.askMeLabel,te]),le=(0,i.useMemo)(()=>{let t=r||T.modalTitle;return S.I18n.get(t)},[r,T.modalTitle,te]),n=(0,i.useMemo)(()=>{let t=ie||T.placeholder;return S.I18n.get(t)},[ie,T.placeholder,te]),A=(0,i.useMemo)(()=>{let t="ai-docs-ask",g=`ai-open-btn--${ke}`;return`${t} ${g}`},[ke]),x=(0,i.useCallback)(()=>{let t=Be.current;if(t)try{let g=window.innerHeight||document.documentElement.clientHeight,w=360,u=1e3,L=Math.floor(g*.8),z=Math.max(w,Math.min(L,u));t.style.height=`${z}px`}catch{}},[]),O=(0,i.useCallback)(()=>{let t=R;t&&window.setTimeout(()=>{try{t.scrollTop=t.scrollHeight}catch{}},50)},[R]),U=(0,i.useCallback)(()=>{nt(!1),we&&F(!1),et(!1),re?.()},[we,re]);(0,i.useEffect)(()=>{if(V)return x(),window.addEventListener("resize",x),()=>window.removeEventListener("resize",x)},[V,x]),(0,i.useEffect)(()=>{if(!(!V||!we))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[V,we,U]);let ue=(0,i.useMemo)(()=>je.map(t=>({id:t.id,url:t.objectUrl,title:t.file.name})),[je]);(0,i.useEffect)(()=>{h||vt(!0)},[h]),(0,i.useEffect)(()=>()=>{se(gt.current)},[se]),(0,i.useEffect)(()=>{let t=R;if(!t)return;let g=()=>{let w=t.scrollHeight-(t.scrollTop+t.clientHeight);vt(w<20)};return t.addEventListener("scroll",g),()=>{t.removeEventListener("scroll",g)}},[V,R]),(0,i.useEffect)(()=>{if(!ye)return;let t=R;t&&t.scrollHeight>t.clientHeight&&(t.scrollTop=t.scrollHeight)},[Re,K.busy,ye,R]),(0,i.useEffect)(()=>{V||We(null)},[V]);let ce=(0,i.useMemo)(()=>K.busy?Dr(K.statusEvent,T)||S.I18n.get("Working\u2026"):null,[K.busy,K.statusEvent,te,T]),q=(0,i.useMemo)(()=>{for(let t=Re.length-1;t>=0;t--){let g=Re[t];if(g.role==="user"&&g.clientStatus==="canceled")return g.id}return null},[Re]),de=(0,i.useCallback)(t=>{He(g=>{let w=[...g].map((z,G)=>({m:z,i:G})).reverse().find(z=>z.m.role==="user"&&z.m.clientStatus==="pending")?.i;if(w==null)return g;let u=g.slice(),L=u[w];return u[w]={...L,clientStatus:t??void 0},u})},[He]),Ke=(0,i.useCallback)(()=>{if(!(!K.busy||Ve.current!=="chat")){rt.current=!0;try{K.cancel()}catch{}de("canceled"),dt(null),Qe(null),O()}},[K,de,O]),Ut=(0,i.useCallback)(t=>{let g=gt.current,w=Array.from(t.target.files||[]),u=Math.max(0,mt-g.length);if(u===0){t.currentTarget.value="";return}let L=[];for(let z of w){if(L.length>=u)break;let G=/image\/(jpeg|png|gif|webp)/i.test(z.type),Y=z.size<=Kt,Z=[...g,...L].some(Ue=>Ue.file.name===z.name&&Ue.file.size===z.size&&Ue.file.lastModified===z.lastModified);if(!G||!Y||Z)continue;let Ce=Wt(z);Ce&&L.push({id:xt("composer-image"),file:z,objectUrl:Ce})}L.length&&ve(z=>[...z,...L]),t.currentTarget.value=""},[mt,Kt]),Ot=(0,i.useCallback)(t=>{ve(g=>{if(t<0||t>=g.length)return g;let w=g[t];return w&&sa(w.objectUrl),g.filter((u,L)=>L!==t)})},[]),zt=(0,i.useRef)(null);(0,i.useEffect)(()=>{if(pe)return zt.current&&(window.clearTimeout(zt.current),zt.current=null),zt.current=window.setTimeout(()=>{Qe(null),zt.current=null},6e3),()=>{zt.current&&(window.clearTimeout(zt.current),zt.current=null)}},[pe]);let Ca=(0,i.useCallback)(async(t,g)=>{let w=E!=="nostorage",u=[];if(t.length>0){let L=await Promise.all(t.map(async z=>{let G=xt("attachment-image"),Y;if(w)try{Y=await va(G,z.file,{name:z.file.name,type:z.file.type,size:z.file.size})??void 0}catch(Ce){console.warn("[AiChatbot] Failed to persist image",Ce)}let Z=Wt(z.file);return{id:G,name:z.file.name,type:z.file.type||"application/octet-stream",size:z.file.size,blobId:Y,objectUrl:Z??void 0,blob:z.file,mediaType:"image"}}));u.push(...L.filter(Boolean))}if(g){let L=xt("attachment-audio"),z;if(w)try{z=await va(L,g.blob,{name:`audio-${Date.now()}.webm`,type:g.blob.type,size:g.blob.size})??void 0}catch(Y){console.warn("[AiChatbot] Failed to persist audio",Y)}let G=Wt(g.blob);u.push({id:L,name:`audio-${Date.now()}.webm`,type:g.blob.type||"audio/webm",size:g.blob.size,blobId:z,objectUrl:G??void 0,blob:g.blob,duration:g.duration,mediaType:"audio"})}return u},[E]),Ia=(0,i.useCallback)(async t=>{let g=[];for(let w of t){let u;if(w.attachments&&w.attachments.length>0){u=[];for(let L of w.attachments){let z;if(L.blobId)try{z=(await wa(L.blobId))?.blob??void 0}catch(Y){console.warn("[AiChatbot] Failed to hydrate attachment",Y)}if(!z)continue;let G=z?Wt(z):null;u.push({...L,objectUrl:G??void 0,blob:z??void 0})}}g.push({...w,attachments:u})}return g},[]),xa=(0,i.useCallback)(async t=>{if(!t||t.length===0){I();return}let g=[];for(let w of t){let u=w.blob;if(!u&&w.blobId)try{u=(await wa(w.blobId))?.blob??void 0}catch(G){console.warn("[AiChatbot] Failed to reload attachment",G)}if(!u)continue;let L=u instanceof File?u:new File([u],w.name||"attachment",{type:w.type||u.type||"application/octet-stream"}),z=Wt(L);if(z&&(g.push({id:xt("composer-image"),file:L,objectUrl:z}),g.length>=mt))break}if(g.length===0){I();return}ve(w=>(se(w),g)),De.current&&(De.current.value="")},[I,se,mt]),ua=(0,i.useCallback)((t,g)=>{t&&We({url:t,title:g})},[]),jn=(0,i.useCallback)(()=>{We(null)},[]),La=(0,i.useCallback)(()=>{In(Bt.current),I(),xe(),He([]),Qe(null),Ee.current=null,at(null),vt(!0),lt(!1);let t=Ra(E);if(t)try{t.removeItem(Ht)}catch{}oa()},[I,xe,E]),Nn=(0,i.useCallback)(()=>{lt(!0)},[]),Gn=(0,i.useCallback)(()=>{K.busy&&Ve.current==="chat"&&Ke(),La()},[K.busy,Ke,La]),Pa=(0,i.useCallback)(()=>{lt(!1)},[]),Ma=(0,i.useCallback)(async(t,g)=>{if(!K.busy)try{let w=Ee.current&&Date.now()-Ee.current.storedAt<fe*ia?Ee.current.id:void 0;if(!w)return;dt("feedback"),Qe(null),await K.run(async({signal:u,onStatus:L})=>(await(0,Ft.sendFeedbackMessage)({sessionId:w,feedbackMessageId:t,feedbackType:g},{signal:u,onStatus:L,context:Oe}),null)),Qe(null)}catch(w){let u=w?.message?.trim()||S.I18n.get("An error occurred.");Qe(u),console.error("Failed to send feedback",w)}finally{dt(w=>w==="feedback"?null:w)}},[K,te]),Da=(0,i.useCallback)((t,g)=>{He(w=>w.map(u=>u.id!==t||u.role!=="assistant"?u:u.feedback===g?{...u,feedback:void 0}:{...u,feedback:g})),Ma(t,g)},[Ma]),Jt=(0,i.useCallback)(async()=>{let t=yt.current.trim(),g=Rt.current;if(!t&&!g||K.busy)return;rt.current=!1,Qe(null),dt("chat");let w=[...gt.current],u=await Ca(w,g),L=xt("user"),z=Date.now(),G={id:L,role:"user",content:t||(g?"[Audio message]":""),createdAt:z,clientStatus:"pending",attachments:u.length?u:void 0};me(""),I(),xe(),He(Y=>[...Y,G]),V||nt(!0),O();try{let Y=Ee.current&&Date.now()-Ee.current.storedAt<fe*ia?Ee.current.id:void 0,Z=await K.run(async({signal:Ue,onStatus:Fe})=>await(0,Ft.sendChatMessage)({sessionId:Y,message:t||void 0,audio:g?.blob,images:w.map(Xn=>Xn.file)},{signal:Ue,onStatus:Fe,context:Oe}));if(rt.current){de("canceled");return}if(!Z)throw new Error(S.I18n.get(K.error??T.emptyResponseLabel));Z.sessionId&&(Ee.current={id:Z.sessionId,storedAt:Date.now()});let Ce={id:Z.metadata?.messageId||xt("assistant"),role:"assistant",content:Z.result||"",citations:Z.citations,createdAt:Date.now()};He(Ue=>[...Ue.map(Mt=>Mt.id===L?{...Mt,clientStatus:void 0}:Mt),Ce]),at(z)}catch(Y){if(console.error("Error during ask()",Y),rt.current||Mr(Y)){de("canceled");return}let Z=Y?.message?.trim()||S.I18n.get(T.unexpectedErrorLabel);He(Ce=>[...Ce.map(Fe=>Fe.id===L?{...Fe,clientStatus:void 0}:Fe),{id:xt("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${Z}`,createdAt:Date.now()}]),at(z)}finally{dt(Y=>Y==="chat"?null:Y),rt.current=!1,ot.current&&ot.current.focus(),O()}},[K,Ca,I,xe,V,O,de,T.emptyResponseLabel,T.unexpectedErrorLabel,te]),Hn=(0,i.useCallback)(t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),W&&Jt())},[Jt,W]),Wn=(0,i.useCallback)(()=>{nt(!0)},[]);(0,i.useEffect)(()=>()=>{Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null)},[]);let Fn=(0,i.useCallback)(()=>{F(t=>{let g=!t;return Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null),g?(et(!0),requestAnimationFrame(()=>{Je.current=requestAnimationFrame(()=>{et(!1),Je.current=null})})):et(!1),g})},[]),qn=(0,i.useCallback)(t=>{me(t.content),(async()=>(await xa(t.attachments),He(g=>g.filter(w=>w.id!==t.id)),Mn(t.attachments),queueMicrotask(()=>ot.current?.focus())))()},[xa]),Ea=(0,i.useMemo)(()=>ge?C?(0,s.jsx)("img",{src:C,className:"ai-open-btn-icon",alt:S.I18n.get(T.askMeLabel||j)}):(0,s.jsx)(Ae.IconMessage,{size:18}):null,[ge,C,T,j,te]),Yn=(0,i.useMemo)(()=>{let t=Ea,g=N?(0,s.jsx)(b.Text,{inherit:!0,children:j}):null;if(!ge&&!g)return null;if(!ge)return g;if(!N)return t;switch(Q){case"top":return(0,s.jsxs)(b.Stack,{gap:4,align:"center",children:[t,g]});case"bottom":return(0,s.jsxs)(b.Stack,{gap:4,align:"center",children:[g,t]});case"right":return(0,s.jsxs)(b.Group,{gap:6,align:"center",children:[g,t]});default:return(0,s.jsxs)(b.Group,{gap:6,align:"center",children:[t,g]})}},[Ea,ge,N,j,Q]),Vn=(0,i.useMemo)(()=>v,[v]),Jn=(0,i.useMemo)(()=>!v,[v]),_n=(0,i.useMemo)(()=>pe||(h?S.I18n.get(T.readyLabel):S.I18n.get(T.readyEmptyLabel)),[pe,h,T.readyLabel,T.readyEmptyLabel,te]),$n=(0,i.useMemo)(()=>v?S.I18n.get(T.cancelLabel):S.I18n.get(T.sendLabel),[v,T.cancelLabel,T.sendLabel,te]),Zn=(0,i.useMemo)(()=>v?(0,s.jsx)(Ae.IconPlayerStop,{size:18}):(0,s.jsx)(Ae.IconSend,{size:18}),[v]),Qn=(0,i.useCallback)(()=>{if(v){Ke();return}Jt()},[v,Ke,Jt]);return(0,i.useEffect)(()=>{if(!V||!Me||!R)return;let t=()=>{let Y=window.getComputedStyle(R).overflowY,Z=Y==="auto"||Y==="scroll",Ce=Math.ceil(R.scrollHeight),Ue=Math.floor(R.clientHeight),Fe=Ce>Ue;return Z&&Fe},g=!1,w=G=>{if(!t())return;G.preventDefault();let Y=R.scrollHeight-R.clientHeight;R.scrollTop=Math.max(0,Math.min(Y,R.scrollTop+G.deltaY))},u=()=>{let G=t();ct(G),G!==g&&(g=G,g?Me.addEventListener("wheel",w,{passive:!1}):Me.removeEventListener("wheel",w))};u();let L=new ResizeObserver(u);L.observe(R);let z=new MutationObserver(u);return z.observe(R,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",u),()=>{g&&Me.removeEventListener("wheel",w),L.disconnect(),z.disconnect(),window.removeEventListener("resize",u)}},[V,Me,R]),(0,i.useEffect)(()=>{let t=!1,g=Ra(E);if(!g){E==="nostorage"&&oa(),he(!0);return}return(async()=>{try{let w=g.getItem(Ht);if(!w){he(!0);return}let u=JSON.parse(w),L=typeof u?.lastUserSentAt=="number"?u.lastUserSentAt:null;if(!L||Date.now()-L>fe*ia){g.removeItem(Ht),await oa(),he(!0);return}let G=(Array.isArray(u.messages)?u.messages:[]).map(Z=>Z?.role==="user"&&Z.clientStatus==="pending"?{...Z,clientStatus:"canceled"}:Z),Y=await Ia(G);if(t){In(Y);return}He(Y),at(L),u.session&&u.session.id&&(Ee.current=u.session)}catch(w){console.warn("[AiChatbot] Failed to load history",w);try{g.removeItem(Ht)}catch{}}finally{t||he(!0)}})(),()=>{t=!0}},[E,fe,Ia]),(0,i.useEffect)(()=>{if(!ut)return;let t=Ra(E);if(!t)return;let g=_e.current;if(!g)return;if(Date.now()-g>fe*ia){try{t.removeItem(Ht)}catch{}Ta(new Set);return}let w=Re.map(({attachments:z,...G})=>({...G,attachments:z?.map(({objectUrl:Y,blob:Z,...Ce})=>Ce)})),u={version:1,lastUserSentAt:g,session:Ee.current,messages:w};try{t.setItem(Ht,JSON.stringify(u))}catch{}let L=new Set;w.forEach(z=>{z.attachments?.forEach(G=>{G.blobId&&L.add(G.blobId)})}),Ta(L)},[ut,Re,bt,E,fe]),l&&!$e||!l&&$e?null:(0,s.jsxs)(b.Group,{className:A,children:[!V&&(0,s.jsx)(b.Button,{variant:"filled",className:N?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:Wn,"aria-label":j,title:j,"data-ai-kit-open-button":!0,children:Yn}),V&&(0,s.jsx)(b.Modal.Root,{ref:Be,opened:V,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:U,className:A+" ai-chat-container"+(we?" maximized":"")+(we&&oe?" ai-max-enter":""),portalProps:{target:a,reuseTargetNode:!0},"data-ai-kit-theme":ne,"data-ai-kit-variation":"modal",children:(0,s.jsxs)("div",{className:"ai-chat-container-internal",ref:Et,children:[(0,s.jsxs)(b.Modal.Header,{className:"ai-chat-header-bar",children:[(0,s.jsx)(b.Modal.Title,{className:"ai-chat-title",children:le}),(0,s.jsxs)(b.Group,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&(0,s.jsx)(b.ActionIcon,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:Fn,title:we?S.I18n.get(T.restoreSizeLabel):S.I18n.get(T.maximizeLabel),"aria-label":we?S.I18n.get(T.restoreSizeLabel):S.I18n.get(T.maximizeLabel),"data-ai-kit-maximize-button":!0,children:we?(0,s.jsx)(Ae.IconMinimize,{size:16}):(0,s.jsx)(Ae.IconMaximize,{size:16})}),(0,s.jsx)(b.Modal.CloseButton,{"aria-label":S.I18n.get(T.closeChatLabel)})]})]}),(0,s.jsxs)(b.Modal.Body,{className:"ai-chat-scroll",ref:wt,"data-scrollable":tt?"true":"false",children:[Re.map(t=>{let g=t.role==="user",w=g&&t.clientStatus==="canceled"&&t.id===q;return(0,s.jsx)(b.Group,{justify:g?"flex-end":"flex-start",className:"ai-chat-row "+t.role,onMouseEnter:()=>ze(t.id),onMouseLeave:()=>ze(u=>u===t.id?null:u),children:(0,s.jsxs)(b.Stack,{gap:4,w:"100%",style:{alignItems:g?"flex-end":"flex-start"},children:[(0,s.jsxs)(b.Stack,{className:"ai-chat-bubble",children:[(0,s.jsxs)(b.Text,{className:"ai-chat-header",children:[(0,s.jsx)(b.Text,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:g?S.I18n.get(T.userLabel):S.I18n.get(T.assistantLabel)}),"\xA0",(0,s.jsx)(b.Text,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),t.role==="assistant"?(0,s.jsx)(Ln.default,{remarkPlugins:[Pn.default],children:t.content}):(0,s.jsx)(b.Text,{size:"sm",miw:"100px",children:t.content})]}),t.attachments&&t.attachments.length>0&&(0,s.jsxs)(b.Stack,{gap:"xs",style:{maxWidth:"min(400px, 100%)"},children:[t.attachments.filter(u=>u.mediaType==="image"||!u.mediaType&&u.type.startsWith("image/")).length>0&&(0,s.jsx)(b.Group,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:t.attachments.filter(u=>u.mediaType==="image"||!u.mediaType&&u.type.startsWith("image/")).map(u=>(0,s.jsx)("button",{type:"button",className:"thumb",style:{backgroundImage:u.objectUrl?`url(${u.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>ua(u.objectUrl,u.name),disabled:!u.objectUrl,title:u.name||S.I18n.get("View image"),"aria-label":u.name||S.I18n.get("View image"),children:!u.objectUrl&&(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:S.I18n.get("Image no longer available")})},u.id))}),t.attachments.filter(u=>u.mediaType==="audio"||!u.mediaType&&u.type.startsWith("audio/")).map(u=>(0,s.jsx)(b.Box,{p:"sm",style:{backgroundColor:"var(--ai-kit-chat-surface-subtle)",borderRadius:"var(--ai-kit-radius-sm)",border:"1px solid var(--ai-kit-chat-border-color)"},children:u.objectUrl?(0,s.jsxs)(b.Stack,{gap:"xs",children:[(0,s.jsx)("audio",{className:"ai-kit-audio-player",controls:!0,src:u.objectUrl,preload:"metadata"}),u.duration&&(0,s.jsxs)(b.Text,{size:"xs",c:"dimmed",style:{textAlign:"right"},children:[Math.round(u.duration),"s"]})]}):(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:S.I18n.get("Audio no longer available")})},u.id))]}),w&&(0,s.jsxs)(b.Group,{justify:"flex-end",gap:"xs",children:[(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:(0,s.jsx)("em",{children:S.I18n.get(T.notSentLabel)})}),Tt===t.id&&(0,s.jsx)(b.ActionIcon,{size:"sm",variant:"subtle",onClick:()=>qn(t),title:S.I18n.get(T.editLabel),"aria-label":S.I18n.get(T.editLabel),"data-ai-kit-edit-button":!0,children:(0,s.jsx)(Ae.IconPencil,{size:14})})]}),t.citations&&t.citations.length>0&&(0,s.jsxs)(b.Stack,{className:"ai-citations",children:[(0,s.jsx)(b.Text,{fw:"bold",size:"sm",mb:"xs",children:S.I18n.get(T.referencesLabel)}),(0,s.jsx)(b.List,{spacing:"xs",size:"sm",children:t.citations.map((u,L)=>{let z=u.sourceUrl||u.url,G=u.title||z||`${S.I18n.get(T.referenceLabel)} #${L+1}`;return(0,s.jsxs)(b.List.Item,{children:[z?(0,s.jsx)(b.Anchor,{href:z,target:"_blank",rel:"noreferrer",children:G}):(0,s.jsx)(b.Text,{children:G}),u.snippet?(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",mt:4,children:u.snippet}):null]},L)})})]}),t.role==="assistant"&&(0,s.jsxs)(b.Group,{className:"ai-feedback",gap:"xs",children:[(0,s.jsx)(b.Button,{className:t.feedback==="accepted"?"active":void 0,onClick:()=>Da(t.id,"accepted"),"aria-label":S.I18n.get(T.acceptResponseLabel),disabled:K.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),(0,s.jsx)(b.Button,{type:"button",className:t.feedback==="rejected"?"active":void 0,onClick:()=>Da(t.id,"rejected"),"aria-label":S.I18n.get(T.rejectResponseLabel),disabled:K.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},t.id)}),Vn&&(0,s.jsx)(b.Group,{justify:"flex-start",className:"ai-chat-row assistant status",children:(0,s.jsxs)(b.Stack,{className:"ai-chat-bubble typing",children:[ce?(0,s.jsx)(b.Text,{size:"sm",c:"dimmed",children:(0,s.jsx)("em",{children:ce})}):null,(0,s.jsxs)("div",{className:"typing-indicator",children:[(0,s.jsx)("span",{}),(0,s.jsx)("span",{}),(0,s.jsx)("span",{})]})]})})]}),Jn&&(0,s.jsx)(b.Group,{className:"ai-status-line",children:(0,s.jsx)(b.Text,{className:"ai-status-text",children:(0,s.jsx)("em",{children:_n})})}),(0,s.jsxs)(b.Stack,{className:"ai-box ai-box-open",children:[(0,s.jsxs)(b.Modal,{opened:Xe,onClose:Pa,centered:!0,title:S.I18n.get("Reset conversation"),style:{zIndex:"var(--mb-z-index)",position:"fixed"},left:0,children:[(0,s.jsx)(b.Text,{size:"sm",children:S.I18n.get("Are you sure you want to reset the conversation?")}),(0,s.jsxs)(b.Group,{justify:"flex-end",mt:"md",children:[(0,s.jsx)(b.Button,{variant:"default",onClick:Pa,"data-ai-kit-no-button":!0,children:S.I18n.get("No")}),(0,s.jsx)(b.Button,{color:"var(--ai-kit-color-danger, red)",onClick:Gn,disabled:!h&&!v,"data-ai-kit-yes-button":!0,children:S.I18n.get("Yes")})]})]}),(0,s.jsx)(b.Group,{children:(0,s.jsx)(b.Textarea,{className:"ai-message",ref:ot,placeholder:n,value:X,onChange:t=>{me(t.target.value),B&&xe()},onKeyDown:Hn,rows:3,disabled:Pe||!!B})}),Sa&&Pe&&(0,s.jsxs)(b.Stack,{gap:"xs",mt:"xs",children:[(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:(0,s.jsx)("em",{children:S.I18n.get("Recording...")})}),(0,s.jsx)("div",{style:{width:"100%",height:"4px",backgroundColor:"var(--mantine-color-gray-3)",borderRadius:"2px",overflow:"hidden"},children:(0,s.jsx)("div",{style:{width:`${Pt}%`,height:"100%",backgroundColor:"var(--mantine-color-red-6)",transition:"width 0.1s ease"}})})]}),Sa&&B&&!Pe&&(0,s.jsxs)(b.Stack,{gap:"xs",mt:"xs",children:[(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:(0,s.jsxs)("em",{children:[S.I18n.get("Audio recorded")," (",Math.round(B.duration),"s)"]})}),(0,s.jsx)("audio",{className:"ai-kit-audio-player",controls:!0,src:B.objectUrl})]}),(0,s.jsxs)(b.Group,{className:"ai-actions",justify:"space-between",w:"100%",children:[(0,s.jsx)(b.Group,{justify:"flex-start",children:(0,s.jsx)(b.Button,{variant:"light",leftSection:(0,s.jsx)(Ae.IconTrash,{size:18}),onClick:Nn,disabled:!h&&!v,"data-ai-kit-reset-button":!0,children:S.I18n.get(T.resetLabel)})}),(0,s.jsxs)(b.Group,{justify:"flex-end",children:[Sa&&(0,s.jsx)(s.Fragment,{children:B?(0,s.jsx)(b.Button,{variant:"outline",leftSection:(0,s.jsx)(Ae.IconX,{size:18}),onClick:xe,disabled:v,title:S.I18n.get("Clear audio"),"data-ai-kit-clear-audio-button":!0,children:S.I18n.get("Clear")}):(0,s.jsx)(b.Button,{variant:"outline",leftSection:(0,s.jsx)(Ae.IconMicrophone,{size:18}),onClick:Pe?kt:St,disabled:v,title:Pe?S.I18n.get("Stop recording"):S.I18n.get("Record audio"),color:Pe?"red":void 0,"data-ai-kit-microphone-button":!0,children:Pe?S.I18n.get("Stop"):S.I18n.get("Record")})}),mt>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(b.Button,{variant:"outline",leftSection:(0,s.jsx)(Ae.IconPaperclip,{size:18}),onClick:()=>De.current?.click(),disabled:je.length>=mt||v||Pe||!!B,title:S.I18n.get(T.addImageLabel),"data-ai-kit-add-image-button":!0,children:S.I18n.get(T.addLabel)}),(0,s.jsx)(b.Input,{ref:De,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:Ut})]}),(0,s.jsx)(b.Button,{leftSection:Zn,variant:"filled",onClick:Qn,disabled:!v&&!W,"data-ai-kit-send-button":!0,children:$n})]})]}),ue.length>0&&(0,s.jsx)(b.Group,{className:"ai-thumbs",mt:"xs",gap:"xs",children:ue.map(({url:t,title:g},w)=>(0,s.jsx)("div",{role:"button",tabIndex:0,className:"thumb",style:{backgroundImage:t?`url(${t})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",overflow:"visible"},"aria-label":g||S.I18n.get("View image"),onClick:()=>ua(t,g),onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),ua(t,g))},children:(0,s.jsx)(b.Button,{variant:"white",onClick:u=>{u.stopPropagation(),Ot(w)},"aria-label":S.I18n.get(T.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:S.I18n.get(T.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},je[w]?.id??w))})]})]})}),(0,s.jsx)(b.Modal,{opened:!!Ie,onClose:jn,centered:!0,size:"auto",title:Ie?.title||S.I18n.get("Image preview"),children:Ie&&(0,s.jsx)("img",{src:Ie.url,alt:Ie.title||S.I18n.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},Dn=It(Er,{showOpenButton:!0,variation:"modal"});var y=require("@mantine/core"),Lt=require("@smart-cloud/ai-kit-core"),J=require("aws-amplify/utils"),M=require("react"),Bn=qe(require("react-markdown"),1),Kn=qe(require("rehype-raw"),1),Un=qe(require("remark-gfm"),1),Ze=require("@tabler/icons-react");var f=require("react/jsx-runtime");J.I18n.putVocabularies(Ct);var En=!1;function Br(e){let a=e?.citations?.docs??[],d=e?.citations?.chunks??[],l=new Map;for(let r of a)l.set(r.docId,{doc:r,chunks:[]});for(let r of d){let m=l.get(r.docId);m?m.chunks.push(r):l.set(r.docId,{doc:{docId:r.docId},chunks:[r]})}return Array.from(l.values())}function za(e){return!!e&&/[\p{L}\p{N}_]/u.test(e)}function Kr(e,a){let d=e.length;if(a<=0)return 0;if(a>=d)return d;let l=e[a-1]??"",r=e[a]??"";if(za(l)&&za(r)){let m=a;for(;m<d&&za(e[m]??"");)m++;return m}return a}function Ur(e){let a=globalThis?.CSS?.escape;return typeof a=="function"?a(e):e.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}var Or=e=>{let{autoRun:a=!0,context:d,title:l,showOpenButton:r=!1,openButtonTitle:m,showOpenButtonTitle:C=!0,openButtonIcon:N,showOpenButtonIcon:ge=!0,searchButtonIcon:ne,showSearchButtonTitle:te=!0,showSearchButtonIcon:re=!0,showSources:Oe=!0,topK:ie=10,getSearchText:D,enableUserFilters:p=!1,availableCategories:E,availableTags:fe,variation:_,rootElement:Q,colorMode:ke,language:T,onClose:K,onClickDoc:X}=e,[me,je]=(0,M.useState)(!r),[ve,B]=(0,M.useState)(""),[ae,Pe]=(0,M.useState)(!1),[$,Pt]=(0,M.useState)(null),[st,ee]=(0,M.useState)(0),Ne=(0,M.useRef)(null),Ge=(0,M.useRef)([]),be=(0,M.useRef)(null),Se=(0,M.useRef)(null),[Re,He]=(0,M.useState)(!1),[pe,Qe]=(0,M.useState)([]),[Xe,lt]=(0,M.useState)([]),[we,F]=(0,M.useState)([]),[oe,et]=(0,M.useState)(""),[V,nt]=(0,M.useState)(null),[ye,vt]=(0,M.useState)(!1),Ie=(0,M.useRef)(null),We=(0,M.useRef)(null),ut=1440*60*1e3,{busy:he,error:Me,statusEvent:Et,result:R,run:wt,cancel:tt,reset:ct}=Dt(),Te=(0,M.useRef)(!1),dt=(0,M.useRef)([]),Ve=R?.sessionId,Je=R?.citations?.docs??[],rt=R?.citations?.chunks??[],Tt=R?.citations?.anchors??[],ze=R?.result??"",De=(0,M.useMemo)(()=>{if(re)return ne?.trim()?(0,f.jsx)("img",{src:ne,alt:"",style:{width:18,height:18,objectFit:"contain"}}):(0,f.jsx)(Ze.IconSearch,{size:18})},[ne,re]),ot=(0,M.useMemo)(()=>(T&&J.I18n.setLanguage(T||"en"),J.I18n.get(l||"Search with AI-Kit")),[T]),Ee=(0,M.useMemo)(()=>Et?J.I18n.get("Searching\u2026"):null,[T,Et]),Be=(0,M.useMemo)(()=>ve||D,[ve,D]),se=(0,M.useMemo)(()=>{if(he||!me)return!1;let h=typeof Be=="function"?Be():Be;return!!(h&&h.trim().length>0||$)},[Be,he,$,me]),I=(0,M.useMemo)(()=>{if(!V)return!1;let h=Object.keys(V.allowedCategories).length>0,v=V.allowedTags.length>0;return h||v},[V]),xe=(0,M.useMemo)(()=>pe.length===0||!V?[]:pe.flatMap(h=>V.allowedCategories[h]||[]).filter((h,v,W)=>W.indexOf(h)===v),[pe,V]),St=(0,M.useCallback)(async()=>{try{B("");let h=await navigator.mediaDevices.getUserMedia({audio:!0}),v=new MediaRecorder(h,{mimeType:"audio/webm"}),W=new AudioContext,j=W.createMediaStreamSource(h),le=W.createAnalyser();le.fftSize=2048,le.smoothingTimeConstant=.8,j.connect(le),be.current=W,Se.current=le;let n=new Uint8Array(le.fftSize),A=()=>{if(!Se.current)return;Se.current.getByteTimeDomainData(n);let x=0;for(let ue=0;ue<n.length;ue++){let ce=(n[ue]-128)/128;x+=ce*ce}let O=Math.sqrt(x/n.length),U=Math.min(100,O*200);ee(U),Ie.current=requestAnimationFrame(A)};A(),Ge.current=[],v.ondataavailable=x=>{x.data.size>0&&Ge.current.push(x.data)},v.onstop=()=>{let x=new Blob(Ge.current,{type:"audio/webm"});Pt(x),h.getTracks().forEach(O=>O.stop()),Ie.current&&(cancelAnimationFrame(Ie.current),Ie.current=null),be.current&&(be.current.close(),be.current=null),Se.current=null,ee(0)},Ne.current=v,v.start(),Pe(!0)}catch(h){console.error("Failed to start recording:",h)}},[]),kt=(0,M.useCallback)(()=>{Ne.current&&ae&&(Ne.current.stop(),Pe(!1))},[ae]),bt=(0,M.useCallback)(()=>{Pt(null),Ge.current=[],ee(0),We.current=null},[]);(0,M.useEffect)(()=>()=>{Ie.current&&cancelAnimationFrame(Ie.current),be.current&&be.current.close()},[]),(0,M.useEffect)(()=>{if(!p)return;if(E||fe){nt({allowedCategories:E||{},allowedTags:fe||[]});return}(async()=>{vt(!0);try{let v=await(0,Lt.resolveBackend)();if(!v.available){console.error("Backend not available for metadata options");return}let W={feature:"prompt",source:"backend",mode:"backend-only",onDeviceAvailable:!1,backendAvailable:v.available,backendTransport:v.transport,backendApiName:v.apiName,backendBaseUrl:v.baseUrl,reason:v.reason??""},j=await(0,Lt.dispatchBackend)(W,d??"frontend","/kb/metadata-options","GET",null,{});nt({allowedCategories:j.allowedCategories||{},allowedTags:j.allowedTags||[]})}catch(v){console.error("Failed to load metadata options:",v)}finally{vt(!1)}})()},[p,E,fe,d]);let at=(0,M.useCallback)(async()=>{let h;if(!$){if(h=typeof Be=="function"?Be():Be,!h)return;B(h)}let v=Date.now(),W=$&&We.current?.blob===$&&v-We.current.uploadTimestamp<ut;$&&!W&&(We.current={blob:$,uploadTimestamp:v}),ct(),await wt(async({signal:j,onStatus:le})=>await(0,Lt.sendSearchMessage)({sessionId:Ve,...h&&{query:h},...$&&{audio:$},topK:ie,...p&&{userSelectedCategories:pe},...p&&Xe.length>0&&{userSelectedSubcategories:Xe},...p&&we.length>0&&{userSelectedTags:we}},{signal:j,onStatus:le,context:d}))},[d,Be,$,wt,ct,ie,Ve,p,pe,Xe,we]),yt=(0,M.useCallback)(async()=>{je(!1),ct(),r||K()},[K,ct,Te,r]);(0,M.useEffect)(()=>{!a||!se||he||Te.current||(Te.current=!0,queueMicrotask(()=>{at()}))},[he,Te,se,a,at]),(0,M.useEffect)(()=>{se||(Te.current=!0)},[se]),(0,M.useEffect)(()=>{let h=dt.current,v=pe;(h.length!==v.length||!v.every(j=>h.includes(j)))&&h.length>0&&ct(),dt.current=[...v]},[pe,ct]);let Bt=(0,M.useMemo)(()=>Br(R),[R]),_e=(0,M.useMemo)(()=>{let h=new Map;return Je.forEach((v,W)=>{v?.docId&&h.set(v.docId,W+1)}),h},[Je]),gt=(0,M.useMemo)(()=>{let h=new Map;return rt.forEach(v=>{v?.chunkId&&v?.docId&&h.set(v.chunkId,v.docId)}),h},[rt]),Rt=(0,M.useMemo)(()=>{if(!ze)return"";if(!Tt.length||_e.size===0)return ze;let h=[...Tt].filter(j=>Array.isArray(j?.chunkIds)&&j?.span?.end!==void 0).sort((j,le)=>{let n=j.span?.end??0,A=le.span?.end??0;return n-A}),v=0,W=[];for(let j of h){let le=j.span?.end;if(typeof le!="number"||le<v)continue;let n=Array.from(new Set((j.chunkIds??[]).map(U=>U?gt.get(U):void 0).map(U=>U?_e.get(U):void 0).filter(U=>typeof U=="number")));if(!n.length)continue;let A=Math.min(le,ze.length),x=Kr(ze,A);W.push(ze.slice(v,x));let O=n.map(U=>`<a href="#docsearch-source-${U}" data-docsearch-cite="${U}" style="color: inherit; text-decoration: none;">${U}</a>`).join(",");W.push(`<sup>${O}</sup>`),v=x}return W.push(ze.slice(v)),W.join("")},[Tt,ze,_e,gt]),$e=_==="modal"?y.Modal.Root:y.Group,mt=_==="modal"?y.Modal.Content:y.Group,Kt=_==="modal"?y.Modal.Body:y.Group;return(0,M.useEffect)(()=>{if(!(_!=="modal"||!me))return document.body.style.overflow="hidden",document.body.onkeydown=h=>{h.key==="Escape"&&(h.preventDefault(),yt())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[yt,_,me]),(0,f.jsxs)(f.Fragment,{children:[r&&(0,f.jsx)(y.Button,{leftSection:ge&&(N?(0,f.jsx)("span",{dangerouslySetInnerHTML:{__html:N}}):(0,f.jsx)(Ze.IconSearch,{size:18})),className:C?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:me,onClick:()=>je(!0),"data-ai-kit-open-button":!0,children:C&&J.I18n.get(m||ot)}),me&&(0,f.jsxs)($e,{opened:!0,className:"doc-search-root",onClose:yt,padding:"md",gap:"md",size:"xl",portalProps:_==="modal"?{target:Q,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":ke,"data-ai-kit-variation":_,children:[_==="modal"&&(0,f.jsx)(y.Modal.Overlay,{}),(0,f.jsxs)(mt,{w:"100%",style:{left:0,..._==="modal"&&!R?.result&&{overflow:"visible"}},children:[_==="modal"&&(0,f.jsxs)(y.Modal.Header,{style:{zIndex:1e3},children:[(0,f.jsx)(Lt.AiKitDocSearchIcon,{className:"doc-search-title-icon"}),(0,f.jsx)(y.Modal.Title,{children:J.I18n.get(ot)}),(0,f.jsx)(y.Modal.CloseButton,{})]}),(0,f.jsx)(Kt,{w:"100%",style:{zIndex:1001,..._==="modal"&&!R?.result&&{overflow:"visible"}},children:(0,f.jsx)(Nt,{enabled:_!=="modal",working:he,variation:_,children:(0,f.jsx)(y.Paper,{shadow:"sm",radius:"md",p:"md",children:(0,f.jsxs)(y.Stack,{gap:"sm",children:[_!=="modal"&&(0,f.jsxs)(y.Group,{justify:"space-between",children:[(0,f.jsx)(y.Title,{order:4,style:{margin:0},children:J.I18n.get(ot)}),r&&(0,f.jsx)(y.Button,{variant:"subtle",color:"gray",size:"xs",onClick:yt,style:{minWidth:32,padding:0,display:"flex",alignItems:"center",justifyContent:"center"},"aria-label":J.I18n.get("Close"),children:(0,f.jsx)(Ze.IconX,{size:18,style:{color:ke==="dark"?"var(--mantine-color-dark-1)":"var(--mantine-color-gray-7)"}})})]}),(0,f.jsxs)(y.Group,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[(0,f.jsx)(y.TextInput,{style:{flex:1},value:ve,onChange:h=>{B(h.currentTarget.value),$&&bt()},placeholder:$?J.I18n.get("Audio recorded"):J.I18n.get("Search the documentation\u2026"),disabled:he||ae||!!$,onKeyDown:h=>{h.key==="Enter"&&se&&(h.preventDefault(),at())}}),En&&(0,f.jsx)(f.Fragment,{children:$?(0,f.jsx)(y.Button,{variant:"outline",size:"sm",color:"red",onClick:bt,disabled:he,title:J.I18n.get("Clear audio"),children:(0,f.jsx)(Ze.IconMicrophoneOff,{size:18})}):(0,f.jsx)(y.Button,{variant:ae?"filled":"outline",size:"sm",color:ae?"red":"gray",onClick:ae?kt:St,disabled:he,title:ae?J.I18n.get("Stop recording"):J.I18n.get("Record audio"),style:ae?{transform:`scale(${1+st/300})`,transition:"transform 0.1s ease-out"}:void 0,children:(0,f.jsx)(Ze.IconMicrophone,{size:18})})}),(0,f.jsx)(y.Button,{variant:"filled",size:"sm",leftSection:De,onClick:()=>{at()},disabled:!se,className:te?"doc-search-button":"doc-search-button-no-title",children:te?J.I18n.get("Search"):null}),he?(0,f.jsx)(y.Button,{variant:"outline",size:"sm",onClick:tt,children:J.I18n.get("Stop")}):null]}),!he&&!Me&&!R?.result?(0,f.jsx)(y.Text,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:J.I18n.get("Enter a search query to start.")}):null,p&&V&&I&&(0,f.jsxs)(y.Stack,{gap:"xs",children:[(0,f.jsx)(y.Button,{variant:"subtle",size:"xs",onClick:()=>He(!Re),leftSection:Re?(0,f.jsx)(Ze.IconChevronDown,{size:14}):(0,f.jsx)(Ze.IconChevronRight,{size:14}),style:{alignSelf:"flex-start"},children:J.I18n.get("Filters")}),(0,f.jsx)(y.Collapse,{in:Re,children:(0,f.jsxs)(y.Stack,{gap:"md",children:[Object.keys(V.allowedCategories).length>0&&(0,f.jsxs)("div",{children:[(0,f.jsx)(y.Text,{size:"sm",fw:500,mb:"xs",children:J.I18n.get("Categories")}),(0,f.jsx)(y.Group,{gap:"md",children:Object.keys(V.allowedCategories).map(h=>(0,f.jsx)(y.Checkbox,{label:J.I18n.get(h),checked:pe.includes(h),onChange:v=>{if(v.currentTarget.checked)Qe([...pe,h]);else{Qe(pe.filter(j=>j!==h));let W=V.allowedCategories[h]||[];lt(Xe.filter(j=>!W.includes(j)))}},disabled:he||ye},h))})]}),xe.length>0&&(0,f.jsxs)("div",{children:[(0,f.jsx)(y.Text,{size:"sm",fw:500,mb:"xs",children:J.I18n.get("Subcategories")}),(0,f.jsx)(y.Group,{gap:"md",children:xe.map(h=>(0,f.jsx)(y.Checkbox,{label:J.I18n.get(h),checked:Xe.includes(h),onChange:v=>{v.currentTarget.checked?lt([...Xe,h]):lt(Xe.filter(W=>W!==h))},disabled:he||ye},h))})]}),V.allowedTags.length>0&&(0,f.jsx)(y.MultiSelect,{label:J.I18n.get("Tags"),placeholder:J.I18n.get("Select or type tags..."),data:V.allowedTags.map(h=>({value:h,label:J.I18n.get(h)})),value:we,onChange:F,searchValue:oe,onSearchChange:et,disabled:he||ye,searchable:!0,clearable:!0,maxDropdownHeight:200,limit:20})]})})]}),En&&(0,f.jsxs)(f.Fragment,{children:[ae&&(0,f.jsxs)(y.Stack,{gap:"xs",children:[(0,f.jsxs)(y.Text,{size:"xs",c:"dimmed",children:[J.I18n.get("Recording...")," \u{1F3A4}"]}),(0,f.jsx)(y.Progress,{value:st,size:"sm",color:"red",animated:!0,striped:!0})]}),$&&!ae&&(0,f.jsxs)(y.Stack,{gap:"xs",children:[(0,f.jsx)(y.Text,{size:"xs",c:"dimmed",children:J.I18n.get("Recorded audio:")}),(0,f.jsx)("audio",{controls:!0,src:URL.createObjectURL($),className:"ai-kit-audio-player"})]})]}),Me?(0,f.jsx)(y.Alert,{color:"red",title:J.I18n.get("Error"),children:Me}):null,he&&Ee&&(0,f.jsx)(Nt,{enabled:_==="modal",working:!0,variation:_,children:(0,f.jsxs)(y.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,f.jsx)(y.Loader,{size:"sm"}),(0,f.jsx)(y.Text,{size:"sm",c:"dimmed",children:Ee})]})}),R?.result?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(y.Divider,{}),(0,f.jsxs)(y.Stack,{gap:"xs","data-doc-search-result":!0,children:[(0,f.jsx)(y.Text,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:J.I18n.get("AI Summary")}),(0,f.jsx)(Bn.default,{remarkPlugins:[Un.default],rehypePlugins:[Kn.default],components:{a:({href:h,children:v,...W})=>{let j=typeof h=="string"&&h.startsWith("#docsearch-source-");return(0,f.jsx)("a",{href:h,...W,onClick:le=>{if(!j)return;le.preventDefault();let n=h.slice(1),A=`#${Ur(n)}`;(Q??document).querySelector?.(A)?.scrollIntoView({block:"start",behavior:"smooth"})},children:v})}},"data-doc-search-result-content":!0,children:Rt||ze})]})]}):null,Oe&&(R?.citations?.docs?.length||R?.citations?.chunks?.length)?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(y.Divider,{}),(0,f.jsxs)(y.Stack,{gap:"sm","data-doc-search-sources":!0,children:[(0,f.jsx)(y.Text,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:J.I18n.get("Sources")}),Bt.map(({doc:h})=>{let v=h.sourceUrl?.trim()||void 0,W=h.docId?_e.get(h.docId):void 0,j=h.title?.trim()||h.docId,le=(0,f.jsxs)(y.Text,{fw:600,style:{display:"inline"},children:[W?`${W}. `:"",j]});return(0,f.jsx)(y.Paper,{withBorder:!0,radius:"md",p:"sm",id:W?`docsearch-source-${W}`:void 0,style:{wordBreak:"break-word"},children:(0,f.jsx)(y.Stack,{gap:"xs",children:(0,f.jsx)(y.Group,{justify:"space-between",align:"flex-start",children:(0,f.jsxs)(y.Stack,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[v?(0,f.jsx)(y.Anchor,{href:v,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:n=>{X&&(n.preventDefault(),X?.(h))},"data-doc-search-source-title":!0,children:le}):le,(0,f.jsx)(y.Anchor,{href:v,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:n=>{X&&(n.preventDefault(),X?.(h))},"data-doc-search-source-url":!0,children:h.sourceUrl}),h.author?(0,f.jsx)(y.Text,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:h.author}):null,h.description?(0,f.jsx)(y.Text,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:h.description}):null]})})})},h.docId)})]})]}):null,(0,f.jsx)(Zt,{variation:_})]})})})})]})]})]})},On=It(Or);0&&(module.exports={AiChatbot,AiFeature,DEFAULT_CHATBOT_LABELS,DocSearch,isBackendConfigured,markdownToHtml,readDefaultOutputLanguage,stripCodeFence,translations,useAiRun,withAiKitShell});
31
+ Follow these additional instructions: ${ye}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),U=await x.run(async({signal:q,onStatus:de})=>(await(0,H.prompt)({messages:O,images:[nt],outputLanguage:"en",responseConstraint:br},{signal:q,onStatus:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r})).result);if(!U){oe("");return}let ue=(R&&R!=="auto"?R:null)||At(),ce=jt(U).trim();try{be("Translating result...");let q=await x.run(async({signal:de})=>await yr(ce,ue,{signal:de,context:E,modeOverride:n,onDeviceTimeoutOverride:r,silent:!0}));oe(q)}catch(q){oe(ce),console.warn("AI Kit: failed to parse SEO JSON",q)}break}}}catch(I){we(I instanceof Error?I.message:o.I18n.get("An unknown error occurred."))}be(void 0)},[X,x,ye,tt,R,et,Te,E,p,Ve,ut,se,Ne]),bt=(0,P.useCallback)(async()=>{await kt("backend-only")},[kt]),at=(0,P.useCallback)(n=>{switch(p){case"proofread":return(0,c.jsx)(ht.IconCircleDashedCheck,{className:n});case"translate":return(0,c.jsx)(ht.IconLanguage,{className:n});case"summarize":return(0,c.jsx)(ht.IconSum,{className:n});case"rewrite":case"write":return(0,c.jsx)(ht.IconPencilCode,{className:n});case"generateImageMetadata":case"generatePostMetadata":return(0,c.jsx)(ht.IconSeo,{className:n});default:return(0,c.jsx)(H.AiKitFeatureIcon,{mode:p,className:n})}},[p]),yt=(0,P.useCallback)(()=>{switch(p){case"proofread":return x.lastSource?o.I18n.get("Proofread again"):o.I18n.get("Proofread");case"translate":return x.lastSource?o.I18n.get("Translate again"):o.I18n.get("Translate");case"rewrite":return x.lastSource?o.I18n.get("Rewrite again"):o.I18n.get("Rewrite");case"summarize":return x.lastSource?o.I18n.get("Summarize again"):o.I18n.get("Summarize");default:return x.lastSource?o.I18n.get("Regenerate"):o.I18n.get("Generate")}},[$,x.lastSource,p]),Bt=(0,P.useCallback)(()=>{switch(p){case"proofread":return o.I18n.get("Proofread on Backend");case"translate":return o.I18n.get("Translate on Backend");case"rewrite":return o.I18n.get("Rewrite on Backend");case"summarize":return o.I18n.get("Summarize on Backend");default:return o.I18n.get("Regenerate on Backend")}},[$,p]),_e=(0,P.useCallback)(async()=>{Re(!1),oe(null),we(null),ze.current=!1,x.reset(),N||ke()},[ke,ze,x,N]),gt=(0,P.useCallback)(async()=>{x.busy&&x.cancel()},[x.busy]);(0,P.useEffect)(()=>{!Se||!d||!se||x.busy||F||ze.current||(ze.current=!0,queueMicrotask(()=>{kt(fe)}))},[x.busy,ze,Se,se,d,F,kt,fe]),(0,P.useEffect)(()=>{Ne&&p!=="proofread"&&(se||(pe(!0),ze.current=!0))},[Ne,se,p]),(0,P.useEffect)(()=>{let n=!0;return(async()=>{try{await(0,H.waitForAiKitReady)();let A=await ga();n&&Xe(A)}catch(A){console.error(A),n&&Xe(!1)}})(),()=>{n=!1}},[]),(0,P.useEffect)(()=>{ve&&(Pe("auto"),wt(ve),We(void 0))},[ve]);let Rt=(0,P.useMemo)(()=>{let n=[];if(p==="translate"){let A=H.LANGUAGE_OPTIONS.find(I=>I.value===ut)?.label;n.push(o.I18n.get("Input language")+": "+(A?o.I18n.get(A):"auto"))}if(R&&ee?.outputLanguage){let A=H.LANGUAGE_OPTIONS.find(I=>I.value===R)?.label;n.push(o.I18n.get("Output language")+": "+(A?o.I18n.get(A):R))}return p==="summarize"&&Ve&&ee?.type&&n.push(o.I18n.get("Type")+": "+o.I18n.get(Ve)),(p==="write"||p==="rewrite")&&Te&&ee?.tone&&n.push(o.I18n.get("Tone")+": "+o.I18n.get(Te)),(p==="write"||p==="rewrite"||p==="summarize")&&tt&&ee?.length&&n.push(o.I18n.get("Length")+": "+o.I18n.get(tt)),ye?.trim()&&ee?.instructions&&n.push(o.I18n.get("Instructions")+": \u2713"),n.length?n.join(" \u2022 "):o.I18n.get("No overrides")},[$,p,ut,R,Ve,Te,tt,ye]),$e={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},mt=m==="modal"?k.Modal.Root:k.Group,Kt=m==="modal"?k.Modal.Content:k.Group,h=m==="modal"?k.Modal.Body:k.Group,v=D==="collapse"?k.Collapse:k.Stack,W=D==="horizontal"?k.Group:k.Stack,j=(0,P.useMemo)(()=>De.find(n=>n.value===Pt)??De[0],[Pt,De]),le=(0,P.useCallback)((n="sm")=>(0,c.jsx)(k.Select,{allowDeselect:!1,"aria-label":o.I18n.get("Interface language"),checkIconPosition:"right",className:"ai-feature-language-selector",data:De.map(A=>({value:A.value,label:""})),leftSection:j?.countryCode?(0,c.jsx)(Sn,{countryCode:j.countryCode,size:18}):null,onChange:A=>{let I=ba(A);I&&B(I)},renderOption:({option:A})=>{let I=De.find(O=>O.value===A.value);return I?(0,c.jsxs)(k.Group,{gap:"xs",wrap:"nowrap",children:[I.countryCode?(0,c.jsx)(Sn,{countryCode:I.countryCode,size:18}):null,(0,c.jsx)("span",{children:o.I18n.get(I.label)})]}):A.label},rightSection:null,searchable:!1,size:n,styles:{dropdown:{minWidth:220},input:{backgroundColor:"transparent",border:0,boxShadow:"none",color:"inherit",fontSize:18,lineHeight:1,minHeight:n==="sm"?36:28,paddingInlineStart:0,paddingInlineEnd:0,backgroundImage:"none",width:n==="sm"?44:36},option:{color:"inherit"},section:{color:"inherit",alignItems:"center",display:"flex",height:"100%",insetInlineStart:0,justifyContent:"center",pointerEvents:"none",width:"100%"}},value:j?.value||null,w:n==="sm"?44:36}),[x.busy,j?.countryCode,j?.value,B,De]);return(0,P.useEffect)(()=>{if(!(m!=="modal"||!Se))return document.body.style.overflow="hidden",document.body.onkeydown=n=>{n.key==="Escape"&&(n.preventDefault(),_e())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[_e,m]),(0,c.jsxs)(c.Fragment,{children:[N&&(0,c.jsx)(k.Button,{leftSection:ne&&(re?(0,c.jsx)("span",{dangerouslySetInnerHTML:{__html:re}}):at()),className:ge?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:Se,onClick:()=>Re(!0),"data-ai-kit-open-button":!0,children:ge&&o.I18n.get(te||ot)}),Se&&(0,c.jsxs)(mt,{opened:!0,className:"ai-feature-root",onClose:_e,padding:"md",gap:"md",size:"md",portalProps:m==="modal"?{target:je,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":_,"data-ai-kit-variation":m,children:[m==="modal"&&(0,c.jsx)(k.Modal.Overlay,{}),(0,c.jsxs)(Kt,{w:"100%",dir:st,style:{left:0},children:[m==="modal"&&(0,c.jsxs)(k.Modal.Header,{dir:st,style:{zIndex:1e3},children:[at("ai-feature-title-icon"),(0,c.jsx)(k.Modal.Title,{children:o.I18n.get(ot)}),(0,c.jsx)("div",{style:{display:"flex",flex:1,justifyContent:"flex-start",marginRight:8},children:le("xs")}),(0,c.jsx)(k.Modal.CloseButton,{})]}),(0,c.jsx)(h,{w:"100%",style:{zIndex:1001},children:(0,c.jsxs)(Nt,{enabled:m!=="modal",working:x.busy,variation:m,children:[(0,c.jsxs)(k.Stack,{gap:"sm",mb:"sm",p:"sm",dir:st,children:[m!=="modal"&&(0,c.jsx)(k.Group,{justify:"flex-end",children:le()}),lt&&(0,c.jsx)(k.Alert,{color:"red",children:o.I18n.get(lt)}),Ne&&p!=="proofread"&&(0,c.jsxs)(k.Paper,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":D,children:[(0,c.jsxs)(k.Group,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:D==="collapse"?()=>pe(n=>!n):void 0,children:[D==="collapse"&&(0,c.jsxs)(k.Stack,{gap:0,children:[(0,c.jsx)(k.Text,{size:"sm",fw:600,style:{lineHeight:1.1},children:o.I18n.get("Options")}),(0,c.jsx)(k.Text,{size:"xs",c:"dimmed",style:{marginTop:2},children:Rt})]}),D==="collapse"&&(0,c.jsx)(k.Button,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:n=>{n.stopPropagation(),pe(A=>!A)},children:He?o.I18n.get("Hide"):o.I18n.get("Show")})]}),(0,c.jsxs)(v,{in:He,children:[D==="collapse"&&(0,c.jsx)(k.Divider,{my:"sm"}),(0,c.jsxs)(W,{gap:"xs",justify:"space-between",children:[p==="write"&&ee?.text&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The topic or subject for the AI to write about."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.TextInput,{size:"xs",className:"ai-feature-option",styles:$e,disabled:x.busy,label:o.I18n.get("Topic"),description:D!=="horizontal"?o.I18n.get("The topic or subject for the AI to write about."):void 0,value:et||"",onChange:n=>{let A=n.target.value;V(A),K?.({text:A})}})}),(p==="write"||p==="rewrite"||p==="generateImageMetadata"||p==="generatePostMetadata")&&ee?.instructions&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("Additional instructions to guide the AI."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.TextInput,{disabled:x.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Instructions"),description:D!=="horizontal"?o.I18n.get("Additional instructions to guide the AI."):void 0,value:ye||"",onChange:n=>{let A=n.target.value;vt(A),K?.({instructions:A})}})}),p==="translate"&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The language of the input text."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:x.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.I18n.get("Input language"),description:D!=="horizontal"?o.I18n.get("The language of the input text."):void 0,data:[{value:"auto",label:o.I18n.get("Auto-detect")},...H.LANGUAGE_OPTIONS.map(n=>({value:n.value,label:o.I18n.get(n.label)})).sort((n,A)=>n.label.localeCompare(A.label))],value:ut||"auto",onChange:n=>{let A=n;he(A),We(void 0),K?.({inputLanguage:A})}})}),ee?.outputLanguage&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:x.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.I18n.get("Output language"),description:D!=="horizontal"?o.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[p==="rewrite"?{value:"auto",label:o.I18n.get("Auto-detect")}:void 0].filter(Boolean),...H.LANGUAGE_OPTIONS.map(n=>({value:n.value,label:o.I18n.get(n.label)})).sort((n,A)=>n.label.localeCompare(A.label))],value:R||Tn.settings.defaultOutputLanguage||(p==="rewrite"?"auto":""),onChange:n=>{let A=n;wt(A),We(void 0),K?.({outputLanguage:A})}})}),p==="summarize"&&ee?.type&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The summary style to generate."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:x.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Type"),description:D!=="horizontal"?o.I18n.get("The summary style to generate."):void 0,data:[{value:"headline",label:o.I18n.get("Headline")},{value:"key-points",label:o.I18n.get("Key Points")},{value:"teaser",label:o.I18n.get("Teaser")},{value:"tldr",label:o.I18n.get("TL;DR")}],value:Ve||"key-points",onChange:n=>{let A=n;Je(A),K?.({type:A})}})}),(p==="write"||p==="rewrite")&&ee?.tone&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The tone or style for the AI to use."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:x.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Tone"),description:D!=="horizontal"?o.I18n.get("The tone or style for the AI to use."):void 0,data:p==="write"?[{value:"neutral",label:o.I18n.get("Neutral")},{value:"formal",label:o.I18n.get("Formal")},{value:"casual",label:o.I18n.get("Casual")}]:[{value:"as-is",label:o.I18n.get("As-Is")},{value:"more-formal",label:o.I18n.get("More formal")},{value:"more-casual",label:o.I18n.get("More casual")}],value:Te||(p==="write"?"neutral":"as-is"),onChange:n=>{let A=n;dt(A),K?.({tone:A})}})}),(p==="write"||p==="rewrite"||p==="summarize")&&ee?.length&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The target output length."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:x.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Length"),description:D!=="horizontal"?o.I18n.get("The target output length."):void 0,data:p==="write"||p==="summarize"?[{value:"short",label:o.I18n.get("Short")},{value:"medium",label:o.I18n.get("Medium")},{value:"long",label:o.I18n.get("Long")}]:[{value:"as-is",label:o.I18n.get("As-Is")},{value:"shorter",label:o.I18n.get("Shorter")},{value:"longer",label:o.I18n.get("Longer")}],value:tt||(p==="rewrite"?"as-is":"short"),onChange:n=>{let A=n;ct(A),K?.({length:A})}})}),p==="summarize"||p==="write"||p==="rewrite"&&ee?.outputFormat&&(0,c.jsx)(k.Tooltip,{label:o.I18n.get("The format for the generated output."),disabled:D!=="horizontal",position:"top",children:(0,c.jsx)(k.Select,{disabled:x.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.I18n.get("Output format"),description:D!=="horizontal"?o.I18n.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:o.I18n.get("Plain Text")},{value:"markdown",label:o.I18n.get("Markdown")},{value:"html",label:o.I18n.get("HTML")}],value:Me||"markdown",onChange:n=>{let A=n;Et(A),K?.({outputFormat:A})}})})]})]})]}),x.busy&&xe&&(0,c.jsx)(Nt,{enabled:m==="modal",working:!0,variation:m,children:(0,c.jsxs)(k.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,c.jsx)(k.Loader,{size:"sm"}),(0,c.jsx)(k.Input.Label,{className:"ai-feature-status-text",children:xe})]})}),F&&(0,c.jsxs)(k.Stack,{mt:"md",children:[p==="proofread"&&(F.corrections.length===0?(0,c.jsx)(k.Alert,{color:"green",children:o.I18n.get("No issues found. Your text looks great!")}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("p",{style:{marginTop:0,opacity:.85},children:o.I18n.get("Hover highlights to see explanations.")}),(0,c.jsx)(kn,{original:et,corrections:F.corrections}),F.correctedInput?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("h4",{style:{marginTop:16,marginBottom:8},children:o.I18n.get("Corrected")}),(0,c.jsx)(k.Group,{c:"pre",className:"ai-feature-generated-content",children:F.correctedInput})]}):null]})),p==="generateImageMetadata"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Alt Text"),description:o.I18n.get("The alt text for the image."),value:F.alt_text||"",onChange:n=>oe({...F,alt_text:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Title"),description:o.I18n.get("The title for the image."),value:F.title||"",onChange:n=>oe({...F,title:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Caption"),description:o.I18n.get("The caption for the image."),value:F.caption||"",onChange:n=>oe({...F,caption:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Description"),description:o.I18n.get("The description for the image."),value:F.description||"",onChange:n=>oe({...F,description:n.target.value})})]}),p==="generatePostMetadata"&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Title"),description:o.I18n.get("The title for the post."),value:F.title||"",onChange:n=>oe({...F,title:n.target.value})}),(0,c.jsx)(k.TextInput,{readOnly:!l,label:o.I18n.get("Excerpt"),description:o.I18n.get("The excerpt for the post."),value:F.excerpt||"",onChange:n=>oe({...F,excerpt:n.target.value})})]}),p!=="proofread"&&p!=="generateImageMetadata"&&p!=="generatePostMetadata"&&typeof F=="string"&&(0,c.jsx)(Rn,{contentLanguage:rt,value:F,editable:!!l,onChange:n=>{oe(n)}})]}),F===""&&(0,c.jsx)(Rn,{contentLanguage:rt,value:F,editable:!1})]}),(0,c.jsxs)(k.Group,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[x.busy&&(0,c.jsx)(k.Button,{variant:"outline",size:"sm",onClick:gt,"data-ai-kit-cancel-button":!0,children:o.I18n.get("Cancel")}),!x.busy&&(0,c.jsx)(k.Button,{variant:"filled",size:"sm",disabled:!se,onClick:()=>kt(),"data-ai-kit-generate-button":!0,children:yt()}),!x.busy&&x.lastSource==="on-device"&&Qe&&Oe&&(0,c.jsx)(k.Button,{variant:"filled",size:"sm",disabled:!se,onClick:bt,"data-ai-kit-regenerate-on-backend-button":!0,children:Bt()}),!x.busy&&T&&(0,c.jsx)(k.Button,{variant:"outline",size:"sm",disabled:!F||p==="proofread"&&F.corrections.length===0,onClick:async()=>{T(Me==="html"?await na(F):F),_e()},"data-ai-kit-accept-button":!0,children:o.I18n.get(ie)}),(0,c.jsx)(k.Button,{variant:"default",size:"sm",onClick:_e,"data-ai-kit-close-button":!0,children:o.I18n.get("Close")})]}),(0,c.jsx)(Zt,{variation:m})]})})]})]})]})};function Rn(e){let{contentLanguage:a,value:d,editable:l,onChange:r}=e,m=zn(a)?"rtl":"ltr",C=m==="rtl"?"right":"left";return l?(0,c.jsxs)(k.Stack,{p:0,gap:"sm",dir:m,style:{textAlign:C},children:[(0,c.jsx)(k.Input.Label,{children:o.I18n.get("Generated content")}),(0,c.jsx)(k.Textarea,{value:d,onChange:N=>r?.(N.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor",styles:{input:{direction:m,textAlign:C}}}),(0,c.jsx)(k.Input.Label,{children:o.I18n.get("Preview")}),(0,c.jsx)(k.Stack,{className:"ai-feature-generated-content ai-feature-preview",dir:m,style:{textAlign:C},children:(0,c.jsx)(fa.default,{remarkPlugins:[ka.default],children:d})})]}):(0,c.jsx)(k.Stack,{className:"ai-feature-generated-content",dir:m,style:{textAlign:C},children:d?(0,c.jsx)(fa.default,{remarkPlugins:[ka.default],children:d}):(0,c.jsx)(k.Alert,{color:"yellow",children:o.I18n.get("No content generated.")})})}var Cn=It(vr);var b=require("@mantine/core"),Ae=require("@tabler/icons-react"),Ft=require("@smart-cloud/ai-kit-core"),xn=require("@wordpress/data"),S=require("aws-amplify/utils"),i=require("react"),Ln=qe(require("react-markdown"),1),Pn=qe(require("remark-gfm"),1);var wr="ai-kit-chatbot-attachments",ft="attachments";var ya=null;function Tr(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function ra(){if(!Tr())return null;ya||(ya=new Promise(e=>{try{let a=window.indexedDB.open(wr,1);a.onerror=()=>e(null),a.onblocked=()=>e(null),a.onupgradeneeded=()=>{let d=a.result;d.objectStoreNames.contains(ft)||d.createObjectStore(ft,{keyPath:"id"})},a.onsuccess=()=>e(a.result)}catch(a){console.warn("[AiChatbot] IndexedDB is not available",a),e(null)}}));try{return await ya}catch(e){return console.warn("[AiChatbot] Failed to open attachment store",e),null}}async function Aa(e,a){let d=await ra();return d?new Promise((l,r)=>{try{let m=d.transaction(ft,e),C=m.objectStore(ft),N=a(C);m.oncomplete=()=>l(N),m.onerror=()=>r(m.error),m.onabort=()=>r(m.error)}catch(m){r(m)}}).catch(l=>(console.warn("[AiChatbot] Attachment store transaction failed",l),null)):null}async function va(e,a,d){await Cr();let l={id:e,blob:a,name:d.name,type:d.type,size:d.size,createdAt:Date.now()};return await Aa("readwrite",m=>(m.put(l),e))}async function wa(e){let a=await ra();return a?new Promise((d,l)=>{try{let r=a.transaction(ft,"readonly"),m=r.objectStore(ft).get(e);m.onsuccess=()=>{let C=m.result;d(C??null)},m.onerror=()=>l(m.error),r.onabort=()=>l(r.error)}catch(r){l(r)}}).catch(d=>(console.warn("[AiChatbot] Failed to load attachment",d),null)):null}async function Sr(e){await Aa("readwrite",a=>{a.delete(e)})}async function oa(){await Aa("readwrite",e=>{e.clear()})}async function Ta(e){let a=await ra();a&&await new Promise((d,l)=>{try{let r=a.transaction(ft,"readwrite"),m=r.objectStore(ft),C=m.getAllKeys();C.onsuccess=()=>{let N=C.result;for(let ge of N){let ne=String(ge);e.has(ne)||m.delete(ge)}},C.onerror=()=>l(C.error),r.oncomplete=()=>d(),r.onerror=()=>l(r.error),r.onabort=()=>l(r.error)}catch(r){l(r)}}).catch(d=>{console.warn("[AiChatbot] Failed to cleanup attachments",d)})}var Rr=50*1024*1024;async function zr(){let e=await ra();return e?new Promise((a,d)=>{try{let l=e.transaction(ft,"readonly"),r=l.objectStore(ft).getAll();r.onsuccess=()=>{let m=r.result||[];a(m)},r.onerror=()=>d(r.error),l.onerror=()=>d(l.error),l.onabort=()=>d(l.error)}catch(l){d(l)}}).catch(a=>(console.warn("[AiChatbot] Failed to get all attachments",a),[])):[]}async function Cr(){let e=await zr();if(e.length===0)return;let a=e.sort((m,C)=>m.createdAt-C.createdAt),d=a.reduce((m,C)=>m+C.size,0),l=[],r=0;for(;d>Rr&&r<a.length;){let m=a[r];m&&(l.push(m.id),d-=m.size),r++}for(let m of l)await Sr(m);l.length>0&&console.log(`[AiChatbot] Deleted ${l.length} old attachment(s) to enforce storage quota`)}var s=require("react/jsx-runtime");S.I18n.putVocabularies(Ct);var ia=1440*60*1e3,Sa=!1,Ir=1,xr="localstorage",Ht=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,la={modalTitle:"AI Assistant",userLabel:"User",assistantLabel:"Assistant",assistantThinkingLabel:"Assistant is thinking...",askMeLabel:"Ask me",sendLabel:"Send",cancelLabel:"Cancel",resetLabel:"Reset",confirmLabel:"Confirm",clickAgainToConfirmLabel:"Click again to confirm",notSentLabel:"Not sent",editLabel:"Edit",readyLabel:"Ready.",readyEmptyLabel:"I'm ready to assist you.",addLabel:"Add",addImageLabel:"Add image",removeImageLabel:"Remove image",closeChatLabel:"Close chat",maximizeLabel:"Maximize",restoreSizeLabel:"Restore size",referencesLabel:"References",referenceLabel:"Reference",acceptResponseLabel:"Accept response",rejectResponseLabel:"Reject response",placeholder:"Ask anything\u2026",emptyResponseLabel:"Empty response",unexpectedErrorLabel:"Unexpected error"};function xt(e){return`${e}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var Lr=4,Pr=5*1024*1024,Mr=e=>{let a=(e?.name||"").toString(),d=(e?.code||"").toString(),l=(e?.message||"").toString();return a==="AbortError"||d==="ABORT_ERR"||/abort|aborted|cancel/i.test(l)},Dr=(e,a)=>{if(!e)return null;let d=e.step,l=S.I18n.get((e.message??"").trim()),r=typeof e.progress=="number"?e.progress:null,m=r==null?null:Math.round(r*100);switch(d){case"decide":return l||S.I18n.get("Checking capabilities...");case"on-device:init":return l||S.I18n.get("Initializing on-device AI...");case"on-device:download":return m==null?l||S.I18n.get("Downloading model..."):l||`${S.I18n.get("Downloading model...")} ${m}%`;case"on-device:ready":return l||S.I18n.get("On-device model ready...");case"on-device:run":return l||S.I18n.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return S.I18n.get(a.assistantThinkingLabel??la.assistantThinkingLabel);case"done":return l||S.I18n.get("Done.");case"error":return l||S.I18n.get("An error occurred.");default:return l||null}};function Ra(e){if(typeof window>"u")return null;try{return e==="localstorage"?window.localStorage:e==="sessionstorage"?window.sessionStorage:null}catch{return null}}var Wt=e=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(e)}catch{return null}},sa=e=>{if(e&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(e)}catch{}},Mn=e=>{!e||e.length===0||e.forEach(a=>sa(a.objectUrl))},In=e=>{e.forEach(a=>Mn(a.attachments))},Er=e=>{let{rootElement:a,store:d,previewMode:l,title:r,openButtonTitle:m,openButtonIcon:C,showOpenButtonTitle:N=!0,showOpenButtonIcon:ge=!0,colorMode:ne,language:te,onClose:re,context:Oe,placeholder:ie,maxImages:D,maxImageBytes:p,historyStorage:E=xr,emptyHistoryAfterDays:fe=Ir,labels:_,openButtonIconLayout:Q="top",openButtonPosition:ke="bottom-right"}=e,T=(0,i.useMemo)(()=>({...la,..._||{}}),[_]),K=Dt(),[X,me]=(0,i.useState)(""),[je,ve]=(0,i.useState)([]),[B,ae]=(0,i.useState)(null),[Pe,$]=(0,i.useState)(!1),[Pt,st]=(0,i.useState)(0),ee=(0,i.useRef)(null),Ne=(0,i.useRef)([]),Ge=(0,i.useRef)(null),be=(0,i.useRef)(null),Se=(0,i.useRef)(null),[Re,He]=(0,i.useState)([]),[pe,Qe]=(0,i.useState)(null),[Xe,lt]=(0,i.useState)(!1),[we,F]=(0,i.useState)(!1),[oe,et]=(0,i.useState)(!1),[V,nt]=(0,i.useState)(!1),[ye,vt]=(0,i.useState)(!0),[Ie,We]=(0,i.useState)(null),[ut,he]=(0,i.useState)(!1),[Me,Et]=(0,i.useState)(null),[R,wt]=(0,i.useState)(null),[tt,ct]=(0,i.useState)(!1),[Te,dt]=(0,i.useState)(null),Ve=(0,i.useRef)(Te);(0,i.useEffect)(()=>{Ve.current=Te},[Te]);let Je=(0,i.useRef)(null),rt=(0,i.useRef)(!1),[Tt,ze]=(0,i.useState)(null),De=(0,i.useRef)(null),ot=(0,i.useRef)(null),Ee=(0,i.useRef)(null),Be=(0,i.useRef)(null),se=(0,i.useCallback)(t=>{t.forEach(g=>sa(g.objectUrl))},[]),x=(0,i.useCallback)(()=>{se(gt.current),ve([]),De.current&&(De.current.value="")},[se]),xe=(0,i.useCallback)(()=>{Rt.current&&sa(Rt.current.objectUrl),ae(null),Ne.current=[],st(0)},[]),St=(0,i.useCallback)(async()=>{try{me(""),xe();let t=await navigator.mediaDevices.getUserMedia({audio:!0}),g=new MediaRecorder(t,{mimeType:"audio/webm"}),w=new AudioContext,u=w.createMediaStreamSource(t),L=w.createAnalyser();L.fftSize=2048,L.smoothingTimeConstant=.8,u.connect(L),Ge.current=w,be.current=L;let z=new Uint8Array(L.fftSize),G=()=>{if(!be.current)return;be.current.getByteTimeDomainData(z);let Z=0;for(let Fe=0;Fe<z.length;Fe++){let Mt=(z[Fe]-128)/128;Z+=Mt*Mt}let Ce=Math.sqrt(Z/z.length),Ue=Math.min(100,Ce*200);st(Ue),Se.current=requestAnimationFrame(G)};G(),Ne.current=[];let Y=Date.now();g.ondataavailable=Z=>{Z.data.size>0&&Ne.current.push(Z.data)},g.onstop=()=>{let Z=new Blob(Ne.current,{type:"audio/webm"}),Ce=(Date.now()-Y)/1e3,Ue=Wt(Z);Ue&&ae({id:xt("composer-audio"),blob:Z,objectUrl:Ue,duration:Ce}),t.getTracks().forEach(Fe=>Fe.stop()),Se.current&&(cancelAnimationFrame(Se.current),Se.current=null),Ge.current&&(Ge.current.close(),Ge.current=null),be.current=null,st(0)},ee.current=g,g.start(),$(!0)}catch(t){console.error("Failed to start recording:",t)}},[xe]),kt=(0,i.useCallback)(()=>{ee.current&&Pe&&(ee.current.stop(),$(!1))},[Pe]);(0,i.useEffect)(()=>()=>{Se.current&&cancelAnimationFrame(Se.current),Ge.current&&Ge.current.close(),xe()},[xe]);let[bt,at]=(0,i.useState)(null),yt=(0,i.useRef)(X),Bt=(0,i.useRef)(Re),_e=(0,i.useRef)(bt),gt=(0,i.useRef)(je),Rt=(0,i.useRef)(B);(0,i.useEffect)(()=>{yt.current=X},[X]),(0,i.useEffect)(()=>{gt.current=je},[je]),(0,i.useEffect)(()=>{Rt.current=B},[B]),(0,i.useEffect)(()=>{Bt.current=Re},[Re]),(0,i.useEffect)(()=>{_e.current=bt},[bt]),(0,i.useEffect)(()=>{te&&S.I18n.setLanguage(te||"en")},[te]);let $e=(0,xn.useSelect)(()=>(0,Ft.getStoreSelect)(d).isShowChatbotPreview()),mt=(0,i.useMemo)(()=>Math.max(0,D??Lr),[D]),Kt=(0,i.useMemo)(()=>Math.max(0,p??Pr),[p]),h=Re.length>0,v=(0,i.useMemo)(()=>K.busy&&Te==="chat",[K.busy,Te]),W=(0,i.useMemo)(()=>v?!1:X.trim().length>0||B!==null,[X,v,B]),j=(0,i.useMemo)(()=>{let t=m||T.askMeLabel;return S.I18n.get(t)},[m,T.askMeLabel,te]),le=(0,i.useMemo)(()=>{let t=r||T.modalTitle;return S.I18n.get(t)},[r,T.modalTitle,te]),n=(0,i.useMemo)(()=>{let t=ie||T.placeholder;return S.I18n.get(t)},[ie,T.placeholder,te]),A=(0,i.useMemo)(()=>{let t="ai-docs-ask",g=`ai-open-btn--${ke}`;return`${t} ${g}`},[ke]),I=(0,i.useCallback)(()=>{let t=Be.current;if(t)try{let g=window.innerHeight||document.documentElement.clientHeight,w=360,u=1e3,L=Math.floor(g*.8),z=Math.max(w,Math.min(L,u));t.style.height=`${z}px`}catch{}},[]),O=(0,i.useCallback)(()=>{let t=R;t&&window.setTimeout(()=>{try{t.scrollTop=t.scrollHeight}catch{}},50)},[R]),U=(0,i.useCallback)(()=>{nt(!1),we&&F(!1),et(!1),re?.()},[we,re]);(0,i.useEffect)(()=>{if(V)return I(),window.addEventListener("resize",I),()=>window.removeEventListener("resize",I)},[V,I]),(0,i.useEffect)(()=>{if(!(!V||!we))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[V,we,U]);let ue=(0,i.useMemo)(()=>je.map(t=>({id:t.id,url:t.objectUrl,title:t.file.name})),[je]);(0,i.useEffect)(()=>{h||vt(!0)},[h]),(0,i.useEffect)(()=>()=>{se(gt.current)},[se]),(0,i.useEffect)(()=>{let t=R;if(!t)return;let g=()=>{let w=t.scrollHeight-(t.scrollTop+t.clientHeight);vt(w<20)};return t.addEventListener("scroll",g),()=>{t.removeEventListener("scroll",g)}},[V,R]),(0,i.useEffect)(()=>{if(!ye)return;let t=R;t&&t.scrollHeight>t.clientHeight&&(t.scrollTop=t.scrollHeight)},[Re,K.busy,ye,R]),(0,i.useEffect)(()=>{V||We(null)},[V]);let ce=(0,i.useMemo)(()=>K.busy?Dr(K.statusEvent,T)||S.I18n.get("Working\u2026"):null,[K.busy,K.statusEvent,te,T]),q=(0,i.useMemo)(()=>{for(let t=Re.length-1;t>=0;t--){let g=Re[t];if(g.role==="user"&&g.clientStatus==="canceled")return g.id}return null},[Re]),de=(0,i.useCallback)(t=>{He(g=>{let w=[...g].map((z,G)=>({m:z,i:G})).reverse().find(z=>z.m.role==="user"&&z.m.clientStatus==="pending")?.i;if(w==null)return g;let u=g.slice(),L=u[w];return u[w]={...L,clientStatus:t??void 0},u})},[He]),Ke=(0,i.useCallback)(()=>{if(!(!K.busy||Ve.current!=="chat")){rt.current=!0;try{K.cancel()}catch{}de("canceled"),dt(null),Qe(null),O()}},[K,de,O]),Ut=(0,i.useCallback)(t=>{let g=gt.current,w=Array.from(t.target.files||[]),u=Math.max(0,mt-g.length);if(u===0){t.currentTarget.value="";return}let L=[];for(let z of w){if(L.length>=u)break;let G=/image\/(jpeg|png|gif|webp)/i.test(z.type),Y=z.size<=Kt,Z=[...g,...L].some(Ue=>Ue.file.name===z.name&&Ue.file.size===z.size&&Ue.file.lastModified===z.lastModified);if(!G||!Y||Z)continue;let Ce=Wt(z);Ce&&L.push({id:xt("composer-image"),file:z,objectUrl:Ce})}L.length&&ve(z=>[...z,...L]),t.currentTarget.value=""},[mt,Kt]),Ot=(0,i.useCallback)(t=>{ve(g=>{if(t<0||t>=g.length)return g;let w=g[t];return w&&sa(w.objectUrl),g.filter((u,L)=>L!==t)})},[]),zt=(0,i.useRef)(null);(0,i.useEffect)(()=>{if(pe)return zt.current&&(window.clearTimeout(zt.current),zt.current=null),zt.current=window.setTimeout(()=>{Qe(null),zt.current=null},6e3),()=>{zt.current&&(window.clearTimeout(zt.current),zt.current=null)}},[pe]);let Ca=(0,i.useCallback)(async(t,g)=>{let w=E!=="nostorage",u=[];if(t.length>0){let L=await Promise.all(t.map(async z=>{let G=xt("attachment-image"),Y;if(w)try{Y=await va(G,z.file,{name:z.file.name,type:z.file.type,size:z.file.size})??void 0}catch(Ce){console.warn("[AiChatbot] Failed to persist image",Ce)}let Z=Wt(z.file);return{id:G,name:z.file.name,type:z.file.type||"application/octet-stream",size:z.file.size,blobId:Y,objectUrl:Z??void 0,blob:z.file,mediaType:"image"}}));u.push(...L.filter(Boolean))}if(g){let L=xt("attachment-audio"),z;if(w)try{z=await va(L,g.blob,{name:`audio-${Date.now()}.webm`,type:g.blob.type,size:g.blob.size})??void 0}catch(Y){console.warn("[AiChatbot] Failed to persist audio",Y)}let G=Wt(g.blob);u.push({id:L,name:`audio-${Date.now()}.webm`,type:g.blob.type||"audio/webm",size:g.blob.size,blobId:z,objectUrl:G??void 0,blob:g.blob,duration:g.duration,mediaType:"audio"})}return u},[E]),Ia=(0,i.useCallback)(async t=>{let g=[];for(let w of t){let u;if(w.attachments&&w.attachments.length>0){u=[];for(let L of w.attachments){let z;if(L.blobId)try{z=(await wa(L.blobId))?.blob??void 0}catch(Y){console.warn("[AiChatbot] Failed to hydrate attachment",Y)}if(!z)continue;let G=z?Wt(z):null;u.push({...L,objectUrl:G??void 0,blob:z??void 0})}}g.push({...w,attachments:u})}return g},[]),xa=(0,i.useCallback)(async t=>{if(!t||t.length===0){x();return}let g=[];for(let w of t){let u=w.blob;if(!u&&w.blobId)try{u=(await wa(w.blobId))?.blob??void 0}catch(G){console.warn("[AiChatbot] Failed to reload attachment",G)}if(!u)continue;let L=u instanceof File?u:new File([u],w.name||"attachment",{type:w.type||u.type||"application/octet-stream"}),z=Wt(L);if(z&&(g.push({id:xt("composer-image"),file:L,objectUrl:z}),g.length>=mt))break}if(g.length===0){x();return}ve(w=>(se(w),g)),De.current&&(De.current.value="")},[x,se,mt]),ua=(0,i.useCallback)((t,g)=>{t&&We({url:t,title:g})},[]),jn=(0,i.useCallback)(()=>{We(null)},[]),La=(0,i.useCallback)(()=>{In(Bt.current),x(),xe(),He([]),Qe(null),Ee.current=null,at(null),vt(!0),lt(!1);let t=Ra(E);if(t)try{t.removeItem(Ht)}catch{}oa()},[x,xe,E]),Nn=(0,i.useCallback)(()=>{lt(!0)},[]),Gn=(0,i.useCallback)(()=>{K.busy&&Ve.current==="chat"&&Ke(),La()},[K.busy,Ke,La]),Pa=(0,i.useCallback)(()=>{lt(!1)},[]),Ma=(0,i.useCallback)(async(t,g)=>{if(!K.busy)try{let w=Ee.current&&Date.now()-Ee.current.storedAt<fe*ia?Ee.current.id:void 0;if(!w)return;dt("feedback"),Qe(null),await K.run(async({signal:u,onStatus:L})=>(await(0,Ft.sendFeedbackMessage)({sessionId:w,feedbackMessageId:t,feedbackType:g},{signal:u,onStatus:L,context:Oe}),null)),Qe(null)}catch(w){let u=w?.message?.trim()||S.I18n.get("An error occurred.");Qe(u),console.error("Failed to send feedback",w)}finally{dt(w=>w==="feedback"?null:w)}},[K,te]),Da=(0,i.useCallback)((t,g)=>{He(w=>w.map(u=>u.id!==t||u.role!=="assistant"?u:u.feedback===g?{...u,feedback:void 0}:{...u,feedback:g})),Ma(t,g)},[Ma]),Jt=(0,i.useCallback)(async()=>{let t=yt.current.trim(),g=Rt.current;if(!t&&!g||K.busy)return;rt.current=!1,Qe(null),dt("chat");let w=[...gt.current],u=await Ca(w,g),L=xt("user"),z=Date.now(),G={id:L,role:"user",content:t||(g?"[Audio message]":""),createdAt:z,clientStatus:"pending",attachments:u.length?u:void 0};me(""),x(),xe(),He(Y=>[...Y,G]),V||nt(!0),O();try{let Y=Ee.current&&Date.now()-Ee.current.storedAt<fe*ia?Ee.current.id:void 0,Z=await K.run(async({signal:Ue,onStatus:Fe})=>await(0,Ft.sendChatMessage)({sessionId:Y,message:t||void 0,audio:g?.blob,images:w.map(Xn=>Xn.file)},{signal:Ue,onStatus:Fe,context:Oe}));if(rt.current){de("canceled");return}if(!Z)throw new Error(S.I18n.get(K.error??T.emptyResponseLabel));Z.sessionId&&(Ee.current={id:Z.sessionId,storedAt:Date.now()});let Ce={id:Z.metadata?.messageId||xt("assistant"),role:"assistant",content:Z.result||"",citations:Z.citations,createdAt:Date.now()};He(Ue=>[...Ue.map(Mt=>Mt.id===L?{...Mt,clientStatus:void 0}:Mt),Ce]),at(z)}catch(Y){if(console.error("Error during ask()",Y),rt.current||Mr(Y)){de("canceled");return}let Z=Y?.message?.trim()||S.I18n.get(T.unexpectedErrorLabel);He(Ce=>[...Ce.map(Fe=>Fe.id===L?{...Fe,clientStatus:void 0}:Fe),{id:xt("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${Z}`,createdAt:Date.now()}]),at(z)}finally{dt(Y=>Y==="chat"?null:Y),rt.current=!1,ot.current&&ot.current.focus(),O()}},[K,Ca,x,xe,V,O,de,T.emptyResponseLabel,T.unexpectedErrorLabel,te]),Hn=(0,i.useCallback)(t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),W&&Jt())},[Jt,W]),Wn=(0,i.useCallback)(()=>{nt(!0)},[]);(0,i.useEffect)(()=>()=>{Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null)},[]);let Fn=(0,i.useCallback)(()=>{F(t=>{let g=!t;return Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null),g?(et(!0),requestAnimationFrame(()=>{Je.current=requestAnimationFrame(()=>{et(!1),Je.current=null})})):et(!1),g})},[]),qn=(0,i.useCallback)(t=>{me(t.content),(async()=>(await xa(t.attachments),He(g=>g.filter(w=>w.id!==t.id)),Mn(t.attachments),queueMicrotask(()=>ot.current?.focus())))()},[xa]),Ea=(0,i.useMemo)(()=>ge?C?(0,s.jsx)("img",{src:C,className:"ai-open-btn-icon",alt:S.I18n.get(T.askMeLabel||j)}):(0,s.jsx)(Ae.IconMessage,{size:18}):null,[ge,C,T,j,te]),Yn=(0,i.useMemo)(()=>{let t=Ea,g=N?(0,s.jsx)(b.Text,{inherit:!0,children:j}):null;if(!ge&&!g)return null;if(!ge)return g;if(!N)return t;switch(Q){case"top":return(0,s.jsxs)(b.Stack,{gap:4,align:"center",children:[t,g]});case"bottom":return(0,s.jsxs)(b.Stack,{gap:4,align:"center",children:[g,t]});case"right":return(0,s.jsxs)(b.Group,{gap:6,align:"center",children:[g,t]});default:return(0,s.jsxs)(b.Group,{gap:6,align:"center",children:[t,g]})}},[Ea,ge,N,j,Q]),Vn=(0,i.useMemo)(()=>v,[v]),Jn=(0,i.useMemo)(()=>!v,[v]),_n=(0,i.useMemo)(()=>pe||(h?S.I18n.get(T.readyLabel):S.I18n.get(T.readyEmptyLabel)),[pe,h,T.readyLabel,T.readyEmptyLabel,te]),$n=(0,i.useMemo)(()=>v?S.I18n.get(T.cancelLabel):S.I18n.get(T.sendLabel),[v,T.cancelLabel,T.sendLabel,te]),Zn=(0,i.useMemo)(()=>v?(0,s.jsx)(Ae.IconPlayerStop,{size:18}):(0,s.jsx)(Ae.IconSend,{size:18}),[v]),Qn=(0,i.useCallback)(()=>{if(v){Ke();return}Jt()},[v,Ke,Jt]);return(0,i.useEffect)(()=>{if(!V||!Me||!R)return;let t=()=>{let Y=window.getComputedStyle(R).overflowY,Z=Y==="auto"||Y==="scroll",Ce=Math.ceil(R.scrollHeight),Ue=Math.floor(R.clientHeight),Fe=Ce>Ue;return Z&&Fe},g=!1,w=G=>{if(!t())return;G.preventDefault();let Y=R.scrollHeight-R.clientHeight;R.scrollTop=Math.max(0,Math.min(Y,R.scrollTop+G.deltaY))},u=()=>{let G=t();ct(G),G!==g&&(g=G,g?Me.addEventListener("wheel",w,{passive:!1}):Me.removeEventListener("wheel",w))};u();let L=new ResizeObserver(u);L.observe(R);let z=new MutationObserver(u);return z.observe(R,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",u),()=>{g&&Me.removeEventListener("wheel",w),L.disconnect(),z.disconnect(),window.removeEventListener("resize",u)}},[V,Me,R]),(0,i.useEffect)(()=>{let t=!1,g=Ra(E);if(!g){E==="nostorage"&&oa(),he(!0);return}return(async()=>{try{let w=g.getItem(Ht);if(!w){he(!0);return}let u=JSON.parse(w),L=typeof u?.lastUserSentAt=="number"?u.lastUserSentAt:null;if(!L||Date.now()-L>fe*ia){g.removeItem(Ht),await oa(),he(!0);return}let G=(Array.isArray(u.messages)?u.messages:[]).map(Z=>Z?.role==="user"&&Z.clientStatus==="pending"?{...Z,clientStatus:"canceled"}:Z),Y=await Ia(G);if(t){In(Y);return}He(Y),at(L),u.session&&u.session.id&&(Ee.current=u.session)}catch(w){console.warn("[AiChatbot] Failed to load history",w);try{g.removeItem(Ht)}catch{}}finally{t||he(!0)}})(),()=>{t=!0}},[E,fe,Ia]),(0,i.useEffect)(()=>{if(!ut)return;let t=Ra(E);if(!t)return;let g=_e.current;if(!g)return;if(Date.now()-g>fe*ia){try{t.removeItem(Ht)}catch{}Ta(new Set);return}let w=Re.map(({attachments:z,...G})=>({...G,attachments:z?.map(({objectUrl:Y,blob:Z,...Ce})=>Ce)})),u={version:1,lastUserSentAt:g,session:Ee.current,messages:w};try{t.setItem(Ht,JSON.stringify(u))}catch{}let L=new Set;w.forEach(z=>{z.attachments?.forEach(G=>{G.blobId&&L.add(G.blobId)})}),Ta(L)},[ut,Re,bt,E,fe]),l&&!$e||!l&&$e?null:(0,s.jsxs)(b.Group,{className:A,children:[!V&&(0,s.jsx)(b.Button,{variant:"filled",className:N?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:Wn,"aria-label":j,title:j,"data-ai-kit-open-button":!0,children:Yn}),V&&(0,s.jsx)(b.Modal.Root,{ref:Be,opened:V,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:U,className:A+" ai-chat-container"+(we?" maximized":"")+(we&&oe?" ai-max-enter":""),portalProps:{target:a,reuseTargetNode:!0},"data-ai-kit-theme":ne,"data-ai-kit-variation":"modal",children:(0,s.jsxs)("div",{className:"ai-chat-container-internal",ref:Et,children:[(0,s.jsxs)(b.Modal.Header,{className:"ai-chat-header-bar",children:[(0,s.jsx)(b.Modal.Title,{className:"ai-chat-title",children:le}),(0,s.jsxs)(b.Group,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&(0,s.jsx)(b.ActionIcon,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:Fn,title:we?S.I18n.get(T.restoreSizeLabel):S.I18n.get(T.maximizeLabel),"aria-label":we?S.I18n.get(T.restoreSizeLabel):S.I18n.get(T.maximizeLabel),"data-ai-kit-maximize-button":!0,children:we?(0,s.jsx)(Ae.IconMinimize,{size:16}):(0,s.jsx)(Ae.IconMaximize,{size:16})}),(0,s.jsx)(b.Modal.CloseButton,{"aria-label":S.I18n.get(T.closeChatLabel)})]})]}),(0,s.jsxs)(b.Modal.Body,{className:"ai-chat-scroll",ref:wt,"data-scrollable":tt?"true":"false",children:[Re.map(t=>{let g=t.role==="user",w=g&&t.clientStatus==="canceled"&&t.id===q;return(0,s.jsx)(b.Group,{justify:g?"flex-end":"flex-start",className:"ai-chat-row "+t.role,onMouseEnter:()=>ze(t.id),onMouseLeave:()=>ze(u=>u===t.id?null:u),children:(0,s.jsxs)(b.Stack,{gap:4,w:"100%",style:{alignItems:g?"flex-end":"flex-start"},children:[(0,s.jsxs)(b.Stack,{className:"ai-chat-bubble",children:[(0,s.jsxs)(b.Text,{className:"ai-chat-header",children:[(0,s.jsx)(b.Text,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:g?S.I18n.get(T.userLabel):S.I18n.get(T.assistantLabel)}),"\xA0",(0,s.jsx)(b.Text,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),t.role==="assistant"?(0,s.jsx)(Ln.default,{remarkPlugins:[Pn.default],children:t.content}):(0,s.jsx)(b.Text,{size:"sm",miw:"100px",children:t.content})]}),t.attachments&&t.attachments.length>0&&(0,s.jsxs)(b.Stack,{gap:"xs",style:{maxWidth:"min(400px, 100%)"},children:[t.attachments.filter(u=>u.mediaType==="image"||!u.mediaType&&u.type.startsWith("image/")).length>0&&(0,s.jsx)(b.Group,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:t.attachments.filter(u=>u.mediaType==="image"||!u.mediaType&&u.type.startsWith("image/")).map(u=>(0,s.jsx)("button",{type:"button",className:"thumb",style:{backgroundImage:u.objectUrl?`url(${u.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>ua(u.objectUrl,u.name),disabled:!u.objectUrl,title:u.name||S.I18n.get("View image"),"aria-label":u.name||S.I18n.get("View image"),children:!u.objectUrl&&(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:S.I18n.get("Image no longer available")})},u.id))}),t.attachments.filter(u=>u.mediaType==="audio"||!u.mediaType&&u.type.startsWith("audio/")).map(u=>(0,s.jsx)(b.Box,{p:"sm",style:{backgroundColor:"var(--ai-kit-chat-surface-subtle)",borderRadius:"var(--ai-kit-radius-sm)",border:"1px solid var(--ai-kit-chat-border-color)"},children:u.objectUrl?(0,s.jsxs)(b.Stack,{gap:"xs",children:[(0,s.jsx)("audio",{className:"ai-kit-audio-player",controls:!0,src:u.objectUrl,preload:"metadata"}),u.duration&&(0,s.jsxs)(b.Text,{size:"xs",c:"dimmed",style:{textAlign:"right"},children:[Math.round(u.duration),"s"]})]}):(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:S.I18n.get("Audio no longer available")})},u.id))]}),w&&(0,s.jsxs)(b.Group,{justify:"flex-end",gap:"xs",children:[(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:(0,s.jsx)("em",{children:S.I18n.get(T.notSentLabel)})}),Tt===t.id&&(0,s.jsx)(b.ActionIcon,{size:"sm",variant:"subtle",onClick:()=>qn(t),title:S.I18n.get(T.editLabel),"aria-label":S.I18n.get(T.editLabel),"data-ai-kit-edit-button":!0,children:(0,s.jsx)(Ae.IconPencil,{size:14})})]}),t.citations&&t.citations.length>0&&(0,s.jsxs)(b.Stack,{className:"ai-citations",children:[(0,s.jsx)(b.Text,{fw:"bold",size:"sm",mb:"xs",children:S.I18n.get(T.referencesLabel)}),(0,s.jsx)(b.List,{spacing:"xs",size:"sm",children:t.citations.map((u,L)=>{let z=u.sourceUrl||u.url,G=u.title||z||`${S.I18n.get(T.referenceLabel)} #${L+1}`;return(0,s.jsxs)(b.List.Item,{children:[z?(0,s.jsx)(b.Anchor,{href:z,target:"_blank",rel:"noreferrer",children:G}):(0,s.jsx)(b.Text,{children:G}),u.snippet?(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",mt:4,children:u.snippet}):null]},L)})})]}),t.role==="assistant"&&(0,s.jsxs)(b.Group,{className:"ai-feedback",gap:"xs",children:[(0,s.jsx)(b.Button,{className:t.feedback==="accepted"?"active":void 0,onClick:()=>Da(t.id,"accepted"),"aria-label":S.I18n.get(T.acceptResponseLabel),disabled:K.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),(0,s.jsx)(b.Button,{type:"button",className:t.feedback==="rejected"?"active":void 0,onClick:()=>Da(t.id,"rejected"),"aria-label":S.I18n.get(T.rejectResponseLabel),disabled:K.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},t.id)}),Vn&&(0,s.jsx)(b.Group,{justify:"flex-start",className:"ai-chat-row assistant status",children:(0,s.jsxs)(b.Stack,{className:"ai-chat-bubble typing",children:[ce?(0,s.jsx)(b.Text,{size:"sm",c:"dimmed",children:(0,s.jsx)("em",{children:ce})}):null,(0,s.jsxs)("div",{className:"typing-indicator",children:[(0,s.jsx)("span",{}),(0,s.jsx)("span",{}),(0,s.jsx)("span",{})]})]})})]}),Jn&&(0,s.jsx)(b.Group,{className:"ai-status-line",children:(0,s.jsx)(b.Text,{className:"ai-status-text",children:(0,s.jsx)("em",{children:_n})})}),(0,s.jsxs)(b.Stack,{className:"ai-box ai-box-open",children:[(0,s.jsxs)(b.Modal,{opened:Xe,onClose:Pa,centered:!0,title:S.I18n.get("Reset conversation"),style:{zIndex:"var(--mb-z-index)",position:"fixed"},left:0,children:[(0,s.jsx)(b.Text,{size:"sm",children:S.I18n.get("Are you sure you want to reset the conversation?")}),(0,s.jsxs)(b.Group,{justify:"flex-end",mt:"md",children:[(0,s.jsx)(b.Button,{variant:"default",onClick:Pa,"data-ai-kit-no-button":!0,children:S.I18n.get("No")}),(0,s.jsx)(b.Button,{color:"var(--ai-kit-color-danger, red)",onClick:Gn,disabled:!h&&!v,"data-ai-kit-yes-button":!0,children:S.I18n.get("Yes")})]})]}),(0,s.jsx)(b.Group,{children:(0,s.jsx)(b.Textarea,{className:"ai-message",ref:ot,placeholder:n,value:X,onChange:t=>{me(t.target.value),B&&xe()},onKeyDown:Hn,rows:3,disabled:Pe||!!B})}),Sa&&Pe&&(0,s.jsxs)(b.Stack,{gap:"xs",mt:"xs",children:[(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:(0,s.jsx)("em",{children:S.I18n.get("Recording...")})}),(0,s.jsx)("div",{style:{width:"100%",height:"4px",backgroundColor:"var(--mantine-color-gray-3)",borderRadius:"2px",overflow:"hidden"},children:(0,s.jsx)("div",{style:{width:`${Pt}%`,height:"100%",backgroundColor:"var(--mantine-color-red-6)",transition:"width 0.1s ease"}})})]}),Sa&&B&&!Pe&&(0,s.jsxs)(b.Stack,{gap:"xs",mt:"xs",children:[(0,s.jsx)(b.Text,{size:"xs",c:"dimmed",children:(0,s.jsxs)("em",{children:[S.I18n.get("Audio recorded")," (",Math.round(B.duration),"s)"]})}),(0,s.jsx)("audio",{className:"ai-kit-audio-player",controls:!0,src:B.objectUrl})]}),(0,s.jsxs)(b.Group,{className:"ai-actions",justify:"space-between",w:"100%",children:[(0,s.jsx)(b.Group,{justify:"flex-start",children:(0,s.jsx)(b.Button,{variant:"light",leftSection:(0,s.jsx)(Ae.IconTrash,{size:18}),onClick:Nn,disabled:!h&&!v,"data-ai-kit-reset-button":!0,children:S.I18n.get(T.resetLabel)})}),(0,s.jsxs)(b.Group,{justify:"flex-end",children:[Sa&&(0,s.jsx)(s.Fragment,{children:B?(0,s.jsx)(b.Button,{variant:"outline",leftSection:(0,s.jsx)(Ae.IconX,{size:18}),onClick:xe,disabled:v,title:S.I18n.get("Clear audio"),"data-ai-kit-clear-audio-button":!0,children:S.I18n.get("Clear")}):(0,s.jsx)(b.Button,{variant:"outline",leftSection:(0,s.jsx)(Ae.IconMicrophone,{size:18}),onClick:Pe?kt:St,disabled:v,title:Pe?S.I18n.get("Stop recording"):S.I18n.get("Record audio"),color:Pe?"red":void 0,"data-ai-kit-microphone-button":!0,children:Pe?S.I18n.get("Stop"):S.I18n.get("Record")})}),mt>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(b.Button,{variant:"outline",leftSection:(0,s.jsx)(Ae.IconPaperclip,{size:18}),onClick:()=>De.current?.click(),disabled:je.length>=mt||v||Pe||!!B,title:S.I18n.get(T.addImageLabel),"data-ai-kit-add-image-button":!0,children:S.I18n.get(T.addLabel)}),(0,s.jsx)(b.Input,{ref:De,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:Ut})]}),(0,s.jsx)(b.Button,{leftSection:Zn,variant:"filled",onClick:Qn,disabled:!v&&!W,"data-ai-kit-send-button":!0,children:$n})]})]}),ue.length>0&&(0,s.jsx)(b.Group,{className:"ai-thumbs",mt:"xs",gap:"xs",children:ue.map(({url:t,title:g},w)=>(0,s.jsx)("div",{role:"button",tabIndex:0,className:"thumb",style:{backgroundImage:t?`url(${t})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",overflow:"visible"},"aria-label":g||S.I18n.get("View image"),onClick:()=>ua(t,g),onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),ua(t,g))},children:(0,s.jsx)(b.Button,{variant:"white",onClick:u=>{u.stopPropagation(),Ot(w)},"aria-label":S.I18n.get(T.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:S.I18n.get(T.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},je[w]?.id??w))})]})]})}),(0,s.jsx)(b.Modal,{opened:!!Ie,onClose:jn,centered:!0,size:"auto",title:Ie?.title||S.I18n.get("Image preview"),children:Ie&&(0,s.jsx)("img",{src:Ie.url,alt:Ie.title||S.I18n.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},Dn=It(Er,{showOpenButton:!0,variation:"modal"});var y=require("@mantine/core"),Lt=require("@smart-cloud/ai-kit-core"),J=require("aws-amplify/utils"),M=require("react"),Bn=qe(require("react-markdown"),1),Kn=qe(require("rehype-raw"),1),Un=qe(require("remark-gfm"),1),Ze=require("@tabler/icons-react");var f=require("react/jsx-runtime");J.I18n.putVocabularies(Ct);var En=!1;function Br(e){let a=e?.citations?.docs??[],d=e?.citations?.chunks??[],l=new Map;for(let r of a)l.set(r.docId,{doc:r,chunks:[]});for(let r of d){let m=l.get(r.docId);m?m.chunks.push(r):l.set(r.docId,{doc:{docId:r.docId},chunks:[r]})}return Array.from(l.values())}function za(e){return!!e&&/[\p{L}\p{N}_]/u.test(e)}function Kr(e,a){let d=e.length;if(a<=0)return 0;if(a>=d)return d;let l=e[a-1]??"",r=e[a]??"";if(za(l)&&za(r)){let m=a;for(;m<d&&za(e[m]??"");)m++;return m}return a}function Ur(e){let a=globalThis?.CSS?.escape;return typeof a=="function"?a(e):e.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}var Or=e=>{let{autoRun:a=!0,context:d,title:l,showOpenButton:r=!1,openButtonTitle:m,showOpenButtonTitle:C=!0,openButtonIcon:N,showOpenButtonIcon:ge=!0,searchButtonIcon:ne,showSearchButtonTitle:te=!0,showSearchButtonIcon:re=!0,showSources:Oe=!0,topK:ie=10,getSearchText:D,enableUserFilters:p=!1,availableCategories:E,availableTags:fe,variation:_,rootElement:Q,colorMode:ke,language:T,onClose:K,onClickDoc:X}=e,[me,je]=(0,M.useState)(!r),[ve,B]=(0,M.useState)(""),[ae,Pe]=(0,M.useState)(!1),[$,Pt]=(0,M.useState)(null),[st,ee]=(0,M.useState)(0),Ne=(0,M.useRef)(null),Ge=(0,M.useRef)([]),be=(0,M.useRef)(null),Se=(0,M.useRef)(null),[Re,He]=(0,M.useState)(!1),[pe,Qe]=(0,M.useState)([]),[Xe,lt]=(0,M.useState)([]),[we,F]=(0,M.useState)([]),[oe,et]=(0,M.useState)(""),[V,nt]=(0,M.useState)(null),[ye,vt]=(0,M.useState)(!1),Ie=(0,M.useRef)(null),We=(0,M.useRef)(null),ut=1440*60*1e3,{busy:he,error:Me,statusEvent:Et,result:R,run:wt,cancel:tt,reset:ct}=Dt(),Te=(0,M.useRef)(!1),dt=(0,M.useRef)([]),Ve=R?.sessionId,Je=R?.citations?.docs??[],rt=R?.citations?.chunks??[],Tt=R?.citations?.anchors??[],ze=R?.result??"",De=(0,M.useMemo)(()=>{if(re)return ne?.trim()?(0,f.jsx)("img",{src:ne,alt:"",style:{width:18,height:18,objectFit:"contain"}}):(0,f.jsx)(Ze.IconSearch,{size:18})},[ne,re]),ot=(0,M.useMemo)(()=>(T&&J.I18n.setLanguage(T||"en"),J.I18n.get(l||"Search with AI-Kit")),[T]),Ee=(0,M.useMemo)(()=>Et?J.I18n.get("Searching\u2026"):null,[T,Et]),Be=(0,M.useMemo)(()=>ve||D,[ve,D]),se=(0,M.useMemo)(()=>{if(he||!me)return!1;let h=typeof Be=="function"?Be():Be;return!!(h&&h.trim().length>0||$)},[Be,he,$,me]),x=(0,M.useMemo)(()=>{if(!V)return!1;let h=Object.keys(V.allowedCategories).length>0,v=V.allowedTags.length>0;return h||v},[V]),xe=(0,M.useMemo)(()=>pe.length===0||!V?[]:pe.flatMap(h=>V.allowedCategories[h]||[]).filter((h,v,W)=>W.indexOf(h)===v),[pe,V]),St=(0,M.useCallback)(async()=>{try{B("");let h=await navigator.mediaDevices.getUserMedia({audio:!0}),v=new MediaRecorder(h,{mimeType:"audio/webm"}),W=new AudioContext,j=W.createMediaStreamSource(h),le=W.createAnalyser();le.fftSize=2048,le.smoothingTimeConstant=.8,j.connect(le),be.current=W,Se.current=le;let n=new Uint8Array(le.fftSize),A=()=>{if(!Se.current)return;Se.current.getByteTimeDomainData(n);let I=0;for(let ue=0;ue<n.length;ue++){let ce=(n[ue]-128)/128;I+=ce*ce}let O=Math.sqrt(I/n.length),U=Math.min(100,O*200);ee(U),Ie.current=requestAnimationFrame(A)};A(),Ge.current=[],v.ondataavailable=I=>{I.data.size>0&&Ge.current.push(I.data)},v.onstop=()=>{let I=new Blob(Ge.current,{type:"audio/webm"});Pt(I),h.getTracks().forEach(O=>O.stop()),Ie.current&&(cancelAnimationFrame(Ie.current),Ie.current=null),be.current&&(be.current.close(),be.current=null),Se.current=null,ee(0)},Ne.current=v,v.start(),Pe(!0)}catch(h){console.error("Failed to start recording:",h)}},[]),kt=(0,M.useCallback)(()=>{Ne.current&&ae&&(Ne.current.stop(),Pe(!1))},[ae]),bt=(0,M.useCallback)(()=>{Pt(null),Ge.current=[],ee(0),We.current=null},[]);(0,M.useEffect)(()=>()=>{Ie.current&&cancelAnimationFrame(Ie.current),be.current&&be.current.close()},[]),(0,M.useEffect)(()=>{if(!p)return;if(E||fe){nt({allowedCategories:E||{},allowedTags:fe||[]});return}(async()=>{vt(!0);try{let v=await(0,Lt.resolveBackend)();if(!v.available){console.error("Backend not available for metadata options");return}let W={feature:"prompt",source:"backend",mode:"backend-only",onDeviceAvailable:!1,backendAvailable:v.available,backendTransport:v.transport,backendApiName:v.apiName,backendBaseUrl:v.baseUrl,reason:v.reason??""},j=await(0,Lt.dispatchBackend)(W,d??"frontend","/kb/metadata-options","GET",null,{});nt({allowedCategories:j.allowedCategories||{},allowedTags:j.allowedTags||[]})}catch(v){console.error("Failed to load metadata options:",v)}finally{vt(!1)}})()},[p,E,fe,d]);let at=(0,M.useCallback)(async()=>{let h;if(!$){if(h=typeof Be=="function"?Be():Be,!h)return;B(h)}let v=Date.now(),W=$&&We.current?.blob===$&&v-We.current.uploadTimestamp<ut;$&&!W&&(We.current={blob:$,uploadTimestamp:v}),ct(),await wt(async({signal:j,onStatus:le})=>await(0,Lt.sendSearchMessage)({sessionId:Ve,...h&&{query:h},...$&&{audio:$},topK:ie,...p&&{userSelectedCategories:pe},...p&&Xe.length>0&&{userSelectedSubcategories:Xe},...p&&we.length>0&&{userSelectedTags:we}},{signal:j,onStatus:le,context:d}))},[d,Be,$,wt,ct,ie,Ve,p,pe,Xe,we]),yt=(0,M.useCallback)(async()=>{je(!1),ct(),r||K()},[K,ct,Te,r]);(0,M.useEffect)(()=>{!a||!se||he||Te.current||(Te.current=!0,queueMicrotask(()=>{at()}))},[he,Te,se,a,at]),(0,M.useEffect)(()=>{se||(Te.current=!0)},[se]),(0,M.useEffect)(()=>{let h=dt.current,v=pe;(h.length!==v.length||!v.every(j=>h.includes(j)))&&h.length>0&&ct(),dt.current=[...v]},[pe,ct]);let Bt=(0,M.useMemo)(()=>Br(R),[R]),_e=(0,M.useMemo)(()=>{let h=new Map;return Je.forEach((v,W)=>{v?.docId&&h.set(v.docId,W+1)}),h},[Je]),gt=(0,M.useMemo)(()=>{let h=new Map;return rt.forEach(v=>{v?.chunkId&&v?.docId&&h.set(v.chunkId,v.docId)}),h},[rt]),Rt=(0,M.useMemo)(()=>{if(!ze)return"";if(!Tt.length||_e.size===0)return ze;let h=[...Tt].filter(j=>Array.isArray(j?.chunkIds)&&j?.span?.end!==void 0).sort((j,le)=>{let n=j.span?.end??0,A=le.span?.end??0;return n-A}),v=0,W=[];for(let j of h){let le=j.span?.end;if(typeof le!="number"||le<v)continue;let n=Array.from(new Set((j.chunkIds??[]).map(U=>U?gt.get(U):void 0).map(U=>U?_e.get(U):void 0).filter(U=>typeof U=="number")));if(!n.length)continue;let A=Math.min(le,ze.length),I=Kr(ze,A);W.push(ze.slice(v,I));let O=n.map(U=>`<a href="#docsearch-source-${U}" data-docsearch-cite="${U}" style="color: inherit; text-decoration: none;">${U}</a>`).join(",");W.push(`<sup>${O}</sup>`),v=I}return W.push(ze.slice(v)),W.join("")},[Tt,ze,_e,gt]),$e=_==="modal"?y.Modal.Root:y.Group,mt=_==="modal"?y.Modal.Content:y.Group,Kt=_==="modal"?y.Modal.Body:y.Group;return(0,M.useEffect)(()=>{if(!(_!=="modal"||!me))return document.body.style.overflow="hidden",document.body.onkeydown=h=>{h.key==="Escape"&&(h.preventDefault(),yt())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[yt,_,me]),(0,f.jsxs)(f.Fragment,{children:[r&&(0,f.jsx)(y.Button,{leftSection:ge&&(N?(0,f.jsx)("span",{dangerouslySetInnerHTML:{__html:N}}):(0,f.jsx)(Ze.IconSearch,{size:18})),className:C?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:me,onClick:()=>je(!0),"data-ai-kit-open-button":!0,children:C&&J.I18n.get(m||ot)}),me&&(0,f.jsxs)($e,{opened:!0,className:"doc-search-root",onClose:yt,padding:"md",gap:"md",size:"xl",portalProps:_==="modal"?{target:Q,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":ke,"data-ai-kit-variation":_,children:[_==="modal"&&(0,f.jsx)(y.Modal.Overlay,{}),(0,f.jsxs)(mt,{w:"100%",style:{left:0,..._==="modal"&&!R?.result&&{overflow:"visible"}},children:[_==="modal"&&(0,f.jsxs)(y.Modal.Header,{style:{zIndex:1e3},children:[(0,f.jsx)(Lt.AiKitDocSearchIcon,{className:"doc-search-title-icon"}),(0,f.jsx)(y.Modal.Title,{children:J.I18n.get(ot)}),(0,f.jsx)(y.Modal.CloseButton,{})]}),(0,f.jsx)(Kt,{w:"100%",style:{zIndex:1001,..._==="modal"&&!R?.result&&{overflow:"visible"}},children:(0,f.jsx)(Nt,{enabled:_!=="modal",working:he,variation:_,children:(0,f.jsx)(y.Paper,{shadow:"sm",radius:"md",p:"md",children:(0,f.jsxs)(y.Stack,{gap:"sm",children:[_!=="modal"&&(0,f.jsxs)(y.Group,{justify:"space-between",children:[(0,f.jsx)(y.Title,{order:4,style:{margin:0},children:J.I18n.get(ot)}),r&&(0,f.jsx)(y.Button,{variant:"subtle",color:"gray",size:"xs",onClick:yt,style:{minWidth:32,padding:0,display:"flex",alignItems:"center",justifyContent:"center"},"aria-label":J.I18n.get("Close"),children:(0,f.jsx)(Ze.IconX,{size:18,style:{color:ke==="dark"?"var(--mantine-color-dark-1)":"var(--mantine-color-gray-7)"}})})]}),(0,f.jsxs)(y.Group,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[(0,f.jsx)(y.TextInput,{style:{flex:1},value:ve,onChange:h=>{B(h.currentTarget.value),$&&bt()},placeholder:$?J.I18n.get("Audio recorded"):J.I18n.get("Search the documentation\u2026"),disabled:he||ae||!!$,onKeyDown:h=>{h.key==="Enter"&&se&&(h.preventDefault(),at())}}),En&&(0,f.jsx)(f.Fragment,{children:$?(0,f.jsx)(y.Button,{variant:"outline",size:"sm",color:"red",onClick:bt,disabled:he,title:J.I18n.get("Clear audio"),children:(0,f.jsx)(Ze.IconMicrophoneOff,{size:18})}):(0,f.jsx)(y.Button,{variant:ae?"filled":"outline",size:"sm",color:ae?"red":"gray",onClick:ae?kt:St,disabled:he,title:ae?J.I18n.get("Stop recording"):J.I18n.get("Record audio"),style:ae?{transform:`scale(${1+st/300})`,transition:"transform 0.1s ease-out"}:void 0,children:(0,f.jsx)(Ze.IconMicrophone,{size:18})})}),(0,f.jsx)(y.Button,{variant:"filled",size:"sm",leftSection:De,onClick:()=>{at()},disabled:!se,className:te?"doc-search-button":"doc-search-button-no-title",children:te?J.I18n.get("Search"):null}),he?(0,f.jsx)(y.Button,{variant:"outline",size:"sm",onClick:tt,children:J.I18n.get("Stop")}):null]}),!he&&!Me&&!R?.result?(0,f.jsx)(y.Text,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:J.I18n.get("Enter a search query to start.")}):null,p&&V&&x&&(0,f.jsxs)(y.Stack,{gap:"xs",children:[(0,f.jsx)(y.Button,{variant:"subtle",size:"xs",onClick:()=>He(!Re),leftSection:Re?(0,f.jsx)(Ze.IconChevronDown,{size:14}):(0,f.jsx)(Ze.IconChevronRight,{size:14}),style:{alignSelf:"flex-start"},children:J.I18n.get("Filters")}),(0,f.jsx)(y.Collapse,{in:Re,children:(0,f.jsxs)(y.Stack,{gap:"md",children:[Object.keys(V.allowedCategories).length>0&&(0,f.jsxs)("div",{children:[(0,f.jsx)(y.Text,{size:"sm",fw:500,mb:"xs",children:J.I18n.get("Categories")}),(0,f.jsx)(y.Group,{gap:"md",children:Object.keys(V.allowedCategories).map(h=>(0,f.jsx)(y.Checkbox,{label:J.I18n.get(h),checked:pe.includes(h),onChange:v=>{if(v.currentTarget.checked)Qe([...pe,h]);else{Qe(pe.filter(j=>j!==h));let W=V.allowedCategories[h]||[];lt(Xe.filter(j=>!W.includes(j)))}},disabled:he||ye},h))})]}),xe.length>0&&(0,f.jsxs)("div",{children:[(0,f.jsx)(y.Text,{size:"sm",fw:500,mb:"xs",children:J.I18n.get("Subcategories")}),(0,f.jsx)(y.Group,{gap:"md",children:xe.map(h=>(0,f.jsx)(y.Checkbox,{label:J.I18n.get(h),checked:Xe.includes(h),onChange:v=>{v.currentTarget.checked?lt([...Xe,h]):lt(Xe.filter(W=>W!==h))},disabled:he||ye},h))})]}),V.allowedTags.length>0&&(0,f.jsx)(y.MultiSelect,{label:J.I18n.get("Tags"),placeholder:J.I18n.get("Select or type tags..."),data:V.allowedTags.map(h=>({value:h,label:J.I18n.get(h)})),value:we,onChange:F,searchValue:oe,onSearchChange:et,disabled:he||ye,searchable:!0,clearable:!0,maxDropdownHeight:200,limit:20})]})})]}),En&&(0,f.jsxs)(f.Fragment,{children:[ae&&(0,f.jsxs)(y.Stack,{gap:"xs",children:[(0,f.jsxs)(y.Text,{size:"xs",c:"dimmed",children:[J.I18n.get("Recording...")," \u{1F3A4}"]}),(0,f.jsx)(y.Progress,{value:st,size:"sm",color:"red",animated:!0,striped:!0})]}),$&&!ae&&(0,f.jsxs)(y.Stack,{gap:"xs",children:[(0,f.jsx)(y.Text,{size:"xs",c:"dimmed",children:J.I18n.get("Recorded audio:")}),(0,f.jsx)("audio",{controls:!0,src:URL.createObjectURL($),className:"ai-kit-audio-player"})]})]}),Me?(0,f.jsx)(y.Alert,{color:"red",title:J.I18n.get("Error"),children:Me}):null,he&&Ee&&(0,f.jsx)(Nt,{enabled:_==="modal",working:!0,variation:_,children:(0,f.jsxs)(y.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,f.jsx)(y.Loader,{size:"sm"}),(0,f.jsx)(y.Text,{size:"sm",c:"dimmed",children:Ee})]})}),R?.result?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(y.Divider,{}),(0,f.jsxs)(y.Stack,{gap:"xs","data-doc-search-result":!0,children:[(0,f.jsx)(y.Text,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:J.I18n.get("AI Summary")}),(0,f.jsx)(Bn.default,{remarkPlugins:[Un.default],rehypePlugins:[Kn.default],components:{a:({href:h,children:v,...W})=>{let j=typeof h=="string"&&h.startsWith("#docsearch-source-");return(0,f.jsx)("a",{href:h,...W,onClick:le=>{if(!j)return;le.preventDefault();let n=h.slice(1),A=`#${Ur(n)}`;(Q??document).querySelector?.(A)?.scrollIntoView({block:"start",behavior:"smooth"})},children:v})}},"data-doc-search-result-content":!0,children:Rt||ze})]})]}):null,Oe&&(R?.citations?.docs?.length||R?.citations?.chunks?.length)?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(y.Divider,{}),(0,f.jsxs)(y.Stack,{gap:"sm","data-doc-search-sources":!0,children:[(0,f.jsx)(y.Text,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:J.I18n.get("Sources")}),Bt.map(({doc:h})=>{let v=h.sourceUrl?.trim()||void 0,W=h.docId?_e.get(h.docId):void 0,j=h.title?.trim()||h.docId,le=(0,f.jsxs)(y.Text,{fw:600,style:{display:"inline"},children:[W?`${W}. `:"",j]});return(0,f.jsx)(y.Paper,{withBorder:!0,radius:"md",p:"sm",id:W?`docsearch-source-${W}`:void 0,style:{wordBreak:"break-word"},children:(0,f.jsx)(y.Stack,{gap:"xs",children:(0,f.jsx)(y.Group,{justify:"space-between",align:"flex-start",children:(0,f.jsxs)(y.Stack,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[v?(0,f.jsx)(y.Anchor,{href:v,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:n=>{X&&(n.preventDefault(),X?.(h))},"data-doc-search-source-title":!0,children:le}):le,(0,f.jsx)(y.Anchor,{href:v,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:n=>{X&&(n.preventDefault(),X?.(h))},"data-doc-search-source-url":!0,children:h.sourceUrl}),h.author?(0,f.jsx)(y.Text,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:h.author}):null,h.description?(0,f.jsx)(y.Text,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:h.description}):null]})})})},h.docId)})]})]}):null,(0,f.jsx)(Zt,{variation:_})]})})})})]})]})]})},On=It(Or);0&&(module.exports={AiChatbot,AiFeature,DEFAULT_CHATBOT_LABELS,DocSearch,isBackendConfigured,markdownToHtml,readDefaultOutputLanguage,stripCodeFence,translations,useAiRun,withAiKitShell});
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import{Alert as Ma,Button as Ft,Collapse as Jr,Divider as _r,Group as kt,Input a
5
5
  initial-value: 0deg;
6
6
  }
7
7
  `,(e.head??e.documentElement).appendChild(n)}function xn({stylesheets:e,children:n,rootElementId:d,mode:i="local",overlayRootId:r="ai-kit-overlay-root",setHost:u}){let T=zr(null),[E,se]=zn(null),[Q,$]=zn(null),X=Rn(()=>[...e].join("|"),[e]);Rr(()=>{if(!T.current)return;let te=i==="overlay"?Ir():T.current.ownerDocument,C;if(i==="overlay"){let J=te.getElementById(r);J||(J=te.createElement("div"),J.id=r,J.style.position="fixed",J.style.inset="0",J.style.width="0",J.style.height="0",J.style.zIndex="2147483647",J.style.pointerEvents="none",te.body.appendChild(J)),C=J}else C=T.current;u(C);let c=C.shadowRoot??C.attachShadow({mode:"open"}),I=c.querySelector(`#${CSS.escape(d)}`);I||(I=te.createElement("div"),I.id=d,I.style.margin="0",i==="overlay"&&(I.style.pointerEvents="auto"),c.appendChild(I));let ge=()=>I.getAttribute("data-mantine-color-scheme"),H=()=>I.getAttribute("data-ai-kit-variation"),V=()=>{C.setAttribute("data-ai-kit-variation",H()||"default"),C.setAttribute("data-mantine-color-scheme",ge()||"auto")};V();let me=new MutationObserver(V);me.observe(I,{attributes:!0,attributeFilter:["data-mantine-color-scheme"]});let b=window.matchMedia?.("(prefers-color-scheme: dark)"),L=()=>V();return b?.addEventListener?.("change",L),Lr(te),xr(te,I,c,X?X.split("|"):[]),se(c),$(I),()=>{me.disconnect(),b?.removeEventListener?.("change",L)}},[i,r,d,X]);let Ne=Rn(()=>Q?Tr({key:i==="overlay"?"ai-kit-ov":"ai-kit-local",container:Q}):null,[Q,i]);return In("div",{ref:T,style:{outline:"none",boxShadow:"none",backgroundColor:"transparent"},children:Q&&E&&Ne?Cr(In(Sr,{value:Ne,children:n({rootElement:Q,shadowRoot:E})}),Q):null})}import{jsx as ka}from"react/jsx-runtime";var Ur=e=>{let n=5381;for(let d=0;d<e.length;d++)n=(n<<5)+n^e.charCodeAt(d);return(n>>>0).toString(36)},Ln=e=>e.replace(/<\/?(?:style|script)\b[^>]*>/gi,"").replace(/@import\s+['"]?javascript:[^;]+;?/gi,"").replace(/url\(\s*(['"]?)javascript:[^)]+\)/gi,"").replace(/\bexpression\s*\([^)]*\)/gi,""),Pn="ai-kit-style-text";function Wt(e,n){let d=i=>{let{store:r,variation:u,showOpenButton:T,colors:E,colorMode:se,primaryColor:Q,primaryShade:$,themeOverrides:X,language:Ne,direction:te}={...i,...n},[C,c]=xa(null),I=Ca(()=>za(r).getLanguage()),ge=Ca(()=>za(r).getDirection()),H=Ca(()=>za(r).getCustomTranslations()),[V]=xa(new URLSearchParams(window.location.search).get("language")??""),[me]=xa(new URLSearchParams(window.location.search).get("direction")??""),b=fa(()=>{Ia.putVocabularies(H||{});let x=I||V||Ne;if(!x||x==="system"){Ia.setLanguage("");return}return Ia.setLanguage(x),x},[Ne,V,I,H]),L=fa(()=>{let x=ge||me||te;return!x||x==="auto"?b==="ar"||b==="he"?"rtl":"ltr":x},[b,te,ge,me]),J=fa(()=>[WpSuite?.constants?.aiKit?.mantineCssHref,WpSuite?.constants?.aiKit?.aiKitUiCssHref],[WpSuite]),ue;E&&(ue={},Object.keys(E).forEach(x=>{try{ue[x]=Pr(E[x])}catch{ue[x]=Mr(E[x])}}));let Ge=Dr({respectReducedMotion:!0,...ue&&{colors:ue},...Q&&[...Object.keys(Ht.colors),...Object.keys(ue||{})].includes(Q)&&{primaryColor:Q},...$&&Object.keys($).length>0&&{primaryShade:{light:$.light??(typeof Ht.primaryShade=="object"?Ht.primaryShade.light:Ht.primaryShade??6),dark:$.dark??(typeof Ht.primaryShade=="object"?Ht.primaryShade.dark:Ht.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"}}}}},MultiSelect:{defaultProps:{comboboxProps:{withinPortal:!1,floatingStrategy:"fixed",positionDependencies:[],position:"bottom",middlewares:{flip:!1,shift:{padding:10,boundary:"clippingAncestors"}}}}},TagsInput:{defaultProps:{comboboxProps:{withinPortal:!1,floatingStrategy:"fixed",positionDependencies:[],position:"bottom",middlewares:{flip:!1,shift:{padding:10,boundary:"clippingAncestors"}}}}}}}),ye=fa(()=>X?Ur(X):"",[X]);return Kr(()=>{if(!C)return;let x=C.shadowRoot.getElementById(Pn);if(X)if(x)(x.getAttribute("data-hash")||"")!==ye&&(x.textContent=Ln(X));else{let Z=C.shadowRoot.ownerDocument.createElement("style");Z.id=Pn,Z.setAttribute("data-hash",ye),Z.textContent=Ln(X),C.shadowRoot.appendChild(Z)}else x&&x.remove()},[C,X,ye]),ka(xn,{mode:u==="modal"&&!T?"overlay":"local",variation:u,overlayRootId:"ai-kit-overlay-root",stylesheets:J,setHost:c,rootElementId:u==="modal"&&!T?"ai-kit-portal-root":"ai-kit-inline-root",children:({rootElement:x})=>{x.setAttribute("data-ai-kit-variation",u||"default"),x.setAttribute("dir",L),b&&x.setAttribute("lang",b);let Z=se==="auto"?window.matchMedia?.("(prefers-color-scheme: dark)")?.matches?"dark":"light":se;return ka(Er,{initialDirection:L,children:ka(Br,{forceColorScheme:Z,theme:Ge,getRootElement:()=>x,children:ka(e,{...i,colorMode:Z,language:b,rootElement:x})})})}})};return d.displayName=`withAiKitShell(${e.displayName??e.name??"Component"})`,d}import{jsx as Mn}from"react/jsx-runtime";function na({enabled:e=!0,working:n=!1,variation:d="default",children:i}){return Mn("div",{className:"ai-kit-feature-border","data-ai-kit-active":!!(e&&n)?"true":"false","data-ai-kit-variation":d,children:Mn("div",{className:"ai-kit-feature-border__content",children:i})})}import{Tooltip as Or}from"@mantine/core";import{useMemo as jr}from"react";import{I18n as la}from"aws-amplify/utils";import{jsx as ba}from"react/jsx-runtime";function Nr(e){let n=[...e].sort((r,u)=>r.startIndex-u.startIndex),d=[],i=-1;for(let r of n)typeof r.startIndex!="number"||typeof r.endIndex!="number"||r.startIndex<0||r.endIndex<=r.startIndex||r.startIndex<i||(d.push(r),i=r.endIndex);return d}function Dn({original:e,corrections:n}){let d=jr(()=>{let i=Nr(n||[]),r=[],u=0;for(let T of i){T.startIndex>u&&r.push({kind:"plain",text:e.slice(u,T.startIndex)});let E=e.slice(T.startIndex,T.endIndex);r.push({kind:"corr",original:E,corr:T}),u=T.endIndex}return u<e.length&&r.push({kind:"plain",text:e.slice(u)}),r},[e,n]);return ba("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:d.map((i,r)=>{if(i.kind==="plain")return ba("span",{children:i.text},r);let u=(i.corr.replacement??i.corr.correction??"").trim(),T=(i.corr.explanation??"").trim(),E=(i.corr.type??"").trim(),se=[E?la.get("Type")+": - "+la.get(E):"",u?la.get("Replace with")+": "+u:"",T?la.get("Why")+": "+T:""].filter(Boolean).join(`
8
- `);return ba(Or,{label:se||la.get("Suggested change"),multiline:!0,children:ba("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",cursor:"help",padding:"0 1px"},children:i.original})},r)})})}import Gr,{defaultSchema as Hr}from"rehype-sanitize";import Wr from"rehype-stringify";import Fr from"remark-gfm";import qr from"remark-parse";import Yr from"remark-rehype";import{unified as Vr}from"unified";var La=async e=>String(await Vr().use(qr).use(Fr).use(Yr,{allowDangerousHtml:!1}).use(Gr,Hr).use(Wr).process(e));import{Fragment as ca,jsx as p,jsxs as fe}from"react/jsx-runtime";o.putVocabularies(Gt);var On=eo(),po={ar:"SA",en:"US",zh:"CN",nl:"NL",fr:"FR",de:"DE",he:"IL",hi:"IN",hu:"HU",id:"ID",it:"IT",ja:"JP",ko:"KR",no:"NO",pl:"PL",pt:"PT",ru:"RU",es:"ES",sv:"SE",th:"TH",tr:"TR",uk:"UA"},ho=new Set(["ar","he"]);function jn(e){let{countryCode:n,size:d=18}=e;if(!n)return null;let i=io[n];return i?p(i,{"aria-hidden":"true",focusable:"false",style:{display:"block",flex:"none",height:d,width:Math.round(d*(4/3))}}):null}function Hn(e){return!!(e&&ho.has(e))}function fo(){return da.map(e=>{let n=po[e.value];return{value:e.value,label:e.label,countryCode:n}})}var ko={type:"object",properties:{title:{type:"string",minLength:1,maxLength:60},excerpt:{type:"string",minLength:1,maxLength:155}},required:["title","excerpt"],additionalProperties:!1},bo={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 Ea(e){let n=(e??"").trim();return n&&n.toLowerCase().split("-")[0]||null}async function Pa(e,n){let d=await Gn({text:e},n);return Ea(d.result?.candidates?.[0]?.detectedLanguage)??"en"}async function yo(e,n,d){let i=sa(e||"").trim();if(!i)return{};try{let r=JSON.parse(i);return{alt_text:typeof r.alt=="string"?n&&n!=="en"?(await Tt({text:r.alt,sourceLanguage:"en",targetLanguage:n},d)).result:r.alt:"",title:typeof r.title=="string"?n&&n!=="en"?(await Tt({text:r.title,sourceLanguage:"en",targetLanguage:n},d)).result:r.title:"",caption:typeof r.caption=="string"?n&&n!=="en"?(await Tt({text:r.caption,sourceLanguage:"en",targetLanguage:n},d)).result:r.caption:"",description:typeof r.description=="string"?n&&n!=="en"?(await Tt({text:r.description,sourceLanguage:"en",targetLanguage:n},d)).result:r.description:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}async function Ao(e,n,d){let i=sa(e||"").trim();if(!i)return{};try{let r=JSON.parse(i);return{title:typeof r.title=="string"?n&&n!=="en"?(await Tt({text:r.title,sourceLanguage:"en",targetLanguage:n},d)).result:r.title:"",excerpt:typeof r.excerpt=="string"?n&&n!=="en"?(await Tt({text:r.excerpt,sourceLanguage:"en",targetLanguage:n},d)).result:r.excerpt:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}var vo=e=>{let{allowOverride:n,autoRun:d=!0,editable:i=!0,onDeviceTimeout:r,variation:u="default",title:T,showOpenButton:E=!1,showOpenButtonTitle:se=!0,showOpenButtonIcon:Q=!0,openButtonTitle:$,openButtonIcon:X,showRegenerateOnBackendButton:Ne=!0,acceptButtonTitle:te="Accept",optionsDisplay:C="collapse",mode:c,context:I,modeOverride:ge,colorMode:H,default:V,onClose:me,onAccept:b,onOptionsChanged:L,language:J,direction:ue,rootElement:Ge}=e,[ye,x]=we(),[Z,De]=we(),W=ye??Ea(J);o.setLanguage(W||"en");let jt=W||"en",ct=Bt(()=>{let a=ye?Z:ue;return!a||a==="auto"?Hn(W)?"rtl":"ltr":a},[ue,Z,W,ye]),_={text:n?.text??!0,instructions:n?.instructions??!0,tone:n?.tone??!0,length:n?.length??!0,type:n?.type??!0,outputLanguage:n?.outputLanguage??!0,outputFormat:n?.outputFormat??!0},He=Bt(()=>!!(c==="write"&&_?.text||(c==="write"||c==="rewrite"||c==="generateImageMetadata"||c==="generatePostMetadata")&&_?.instructions||(c==="write"||c==="rewrite")&&_?.tone||(c==="write"||c==="rewrite"||c==="summarize")&&_?.length||c==="summarize"&&_?.type||_?.outputLanguage),[_,c]),[We,pe]=we(),[Se,Re]=we(!E),[Fe,ce]=we(!1),[Ze,Qe]=we(!1),[dt,Ae]=we(null),[U,ee]=we(null),[Xe,N]=we(V?.text),[nt]=we(V?.image),[he,zt]=we(V?.instructions),[Le,qe]=we(),[gt,de]=we(V?.inputLanguage),[Ee,$t]=we(V?.outputFormat),[y,Ct]=we(V?.outputLanguage||On.settings.defaultOutputLanguage||(c==="rewrite"?"auto":void 0)),[et,mt]=we(V?.length),[ve,pt]=we(V?.tone),[Ve,Je]=we(V?.type),[rt,It]=we(""),ze=so(!1),Be=Bt(()=>fo(),[]),ot=Bt(()=>{if(T)return T;let a;switch(c){default:case"summarize":a="Summarize";break;case"proofread":a="Proofread";break;case"write":a="Write";break;case"rewrite":a="Rewrite";break;case"translate":a="Translate";break;case"generatePostMetadata":a="Generate Post Metadata";break;case"generateImageMetadata":a="Generate Image Metadata";break}return a},[T,c,W]),Ke=bt(a=>{if(!a||a.silent)return null;let h=a.step,R=o.get((a.message??"").trim()),M=typeof a.progress=="number"?a.progress:null,P=M==null?null:Math.round(M*100);switch(h){case"decide":return R||o.get("Checking capabilities...");case"on-device:init":return R||o.get("Initializing on-device AI...");case"on-device:download":return R||(P==null?o.get("Downloading model..."):o.get("Downloading model...")+" "+P+"%");case"on-device:ready":return R||o.get("On-device model ready.");case"on-device:run":return R||o.get("Generating...");case"backend:request":case"backend:waiting":case"backend:response":switch(c){case"translate":return o.get("Translating text");case"rewrite":return o.get("Rewriting text");case"summarize":return o.get("Summarizing");case"proofread":return o.get("Proofreading");default:return o.get("Generating text")}case"done":return R||o.get("Done.");case"error":return R||o.get("Something went wrong.");default:return R||o.get("Working...")}},[W,c]),Ue=Bt(()=>Xe??V?.getText,[Xe,V]),ae=Bt(()=>{let a=Ue;if(typeof a=="function")switch(c){case"generateImageMetadata":return!!nt;case"translate":return!y||Le!==y;case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!0;default:return!1}let h=a;switch(c){case"generateImageMetadata":return!!nt;case"translate":return!!(h&&h.trim().length>0)&&(!y||Le!==y);case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!!(h&&h.trim().length>0);default:return!1}},[Ue,c,nt,Le,y,Se]),S=aa(),Pe=Ke(S.statusEvent)??(We?o.get(We):null),xt=bt(a=>{if(a&&a!=="auto"){It(a);return}It(Mt()||"")},[]),At=bt(async a=>{if(!ae)return;He&&c!=="proofread"&&ae&&ce(!1),Ae(null),ee(null);let h=await Ue;try{let R=typeof h=="function"?await Promise.resolve(h()):h;switch(c){case"summarize":{let M=(y&&y!=="auto"?y:null)||Mt(),P=await S.run(async({signal:re,onStatus:oe})=>{let O={text:R.trim(),format:Ee==="plain-text"?"plain-text":"markdown",length:et,type:Ve,outputLanguage:M};return(await no(O,{signal:re,onStatus:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M||""),ee(P??"");break}case"proofread":{let M=await S.run(async({signal:P,onStatus:re})=>{let oe=[];try{pe("Detecting input language...");let Xt=(await Gn({text:R.trim()},{signal:P,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0})).result?.candidates?.filter(ea=>ea.confidence&&ea.confidence>.1).map(ea=>ea.detectedLanguage);oe.push(...Xt)}catch{oe.push("en")}let O={text:R.trim(),expectedInputLanguages:oe};return(await to(O,{signal:P,onStatus:re,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});ee(M??"");break}case"translate":{let M=(y&&y!=="auto"?y:null)||Mt(),P=await S.run(async({signal:re,onStatus:oe})=>{let O=gt??"auto";if(O==="auto"&&(pe("Detecting input language..."),O=await Pa(R.trim(),{signal:re,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0})),qe(O),M===O)throw console.warn("AI Kit: input and output languages are the same",{inputLang:O,outLang:M}),Ae(o.get("Input and output languages cannot be the same.")),new Error(o.get("Input and output languages cannot be the same."));let ie={text:R.trim(),sourceLanguage:O,targetLanguage:M};return(await Tt(ie,{signal:re,onStatus:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M||""),ee(P??"");break}case"rewrite":{let M="",P=await S.run(async({signal:re,onStatus:oe})=>{let O=(y&&y!=="auto"?y:null)||Mt();y==="auto"&&(pe("Detecting input language..."),O=await Pa(R.trim(),{signal:re,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0}),Ct(O)),M=O||"";let ie={text:R.trim(),context:he?.trim()||void 0,format:Ee==="plain-text"?"plain-text":"markdown",tone:ve,length:et,outputLanguage:O};return(await ao(ie,{signal:re,onStatus:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M),ee(P??"");break}case"write":{let M=(y&&y!=="auto"?y:null)||Mt(),P={prompt:R.trim(),context:he?.trim()||void 0,format:Ee==="plain-text"?"plain-text":"markdown",tone:ve,length:et,outputLanguage:M},re=await S.run(async({signal:oe,onStatus:O})=>{let ie={signal:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0};pe("Detecting input language...");let Oe=await Pa(R.trim()+`
8
+ `);return ba(Or,{label:se||la.get("Suggested change"),multiline:!0,children:ba("span",{style:{textDecoration:"underline",textDecorationStyle:"wavy",cursor:"help",padding:"0 1px"},children:i.original})},r)})})}import Gr,{defaultSchema as Hr}from"rehype-sanitize";import Wr from"rehype-stringify";import Fr from"remark-gfm";import qr from"remark-parse";import Yr from"remark-rehype";import{unified as Vr}from"unified";var La=async e=>String(await Vr().use(qr).use(Fr).use(Yr,{allowDangerousHtml:!1}).use(Gr,Hr).use(Wr).process(e));import{Fragment as ca,jsx as p,jsxs as fe}from"react/jsx-runtime";o.putVocabularies(Gt);var On=eo(),po={ar:"SA",en:"US",zh:"CN",nl:"NL",fr:"FR",de:"DE",he:"IL",hi:"IN",hu:"HU",id:"ID",it:"IT",ja:"JP",ko:"KR",no:"NO",pl:"PL",pt:"PT",ru:"RU",es:"ES",sv:"SE",th:"TH",tr:"TR",uk:"UA"},ho=new Set(["ar","he"]);function jn(e){let{countryCode:n,size:d=18}=e;if(!n)return null;let i=io[n];return i?p(i,{"aria-hidden":"true",focusable:"false",style:{display:"block",flex:"none",height:d,width:Math.round(d*(4/3))}}):null}function Hn(e){return!!(e&&ho.has(e))}function fo(){return da.map(e=>{let n=po[e.value];return{value:e.value,label:e.label,countryCode:n}})}var ko={type:"object",properties:{title:{type:"string",minLength:1,maxLength:60},excerpt:{type:"string",minLength:1,maxLength:155}},required:["title","excerpt"],additionalProperties:!1},bo={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 Ea(e){let n=(e??"").trim();return n&&n.toLowerCase().split("-")[0]||null}async function Pa(e,n){let d=await Gn({text:e},n);return Ea(d.result?.candidates?.[0]?.detectedLanguage)??"en"}async function yo(e,n,d){let i=sa(e||"").trim();if(!i)return{};try{let r=JSON.parse(i);return{alt_text:typeof r.alt=="string"?n&&n!=="en"?(await Tt({text:r.alt,sourceLanguage:"en",targetLanguage:n},d)).result:r.alt:"",title:typeof r.title=="string"?n&&n!=="en"?(await Tt({text:r.title,sourceLanguage:"en",targetLanguage:n},d)).result:r.title:"",caption:typeof r.caption=="string"?n&&n!=="en"?(await Tt({text:r.caption,sourceLanguage:"en",targetLanguage:n},d)).result:r.caption:"",description:typeof r.description=="string"?n&&n!=="en"?(await Tt({text:r.description,sourceLanguage:"en",targetLanguage:n},d)).result:r.description:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}async function Ao(e,n,d){let i=sa(e||"").trim();if(!i)return{};try{let r=JSON.parse(i);return{title:typeof r.title=="string"?n&&n!=="en"?(await Tt({text:r.title,sourceLanguage:"en",targetLanguage:n},d)).result:r.title:"",excerpt:typeof r.excerpt=="string"?n&&n!=="en"?(await Tt({text:r.excerpt,sourceLanguage:"en",targetLanguage:n},d)).result:r.excerpt:""}}catch(r){return console.warn("AI Kit: failed to parse JSON metadata output",r),{}}}var vo=e=>{let{allowOverride:n,autoRun:d=!0,editable:i=!0,onDeviceTimeout:r,variation:u="default",title:T,showOpenButton:E=!1,showOpenButtonTitle:se=!0,showOpenButtonIcon:Q=!0,openButtonTitle:$,openButtonIcon:X,showRegenerateOnBackendButton:Ne=!0,acceptButtonTitle:te="Accept",optionsDisplay:C="collapse",mode:c,context:I,modeOverride:ge,colorMode:H,default:V,onClose:me,onAccept:b,onOptionsChanged:L,language:J,direction:ue,rootElement:Ge}=e,[ye,x]=we(),[Z,De]=we(),W=ye??Ea(J);o.setLanguage(W||"en");let jt=W||"en",ct=Bt(()=>{let a=ye?Z:ue;return!a||a==="auto"?Hn(W)?"rtl":"ltr":a},[ue,Z,W,ye]),_={text:n?.text??!0,instructions:n?.instructions??!0,tone:n?.tone??!0,length:n?.length??!0,type:n?.type??!0,outputLanguage:n?.outputLanguage??!0,outputFormat:n?.outputFormat??!0},He=Bt(()=>!!(c==="write"&&_?.text||(c==="write"||c==="rewrite"||c==="generateImageMetadata"||c==="generatePostMetadata")&&_?.instructions||(c==="write"||c==="rewrite")&&_?.tone||(c==="write"||c==="rewrite"||c==="summarize")&&_?.length||c==="summarize"&&_?.type||_?.outputLanguage),[_,c]),[We,pe]=we(),[Se,Re]=we(!E),[Fe,ce]=we(!1),[Ze,Qe]=we(!1),[dt,Ae]=we(null),[U,ee]=we(null),[Xe,N]=we(V?.text),[nt]=we(V?.image),[he,zt]=we(V?.instructions),[Le,qe]=we(),[gt,de]=we(V?.inputLanguage),[Ee,$t]=we(V?.outputFormat),[y,Ct]=we(V?.outputLanguage||On.settings.defaultOutputLanguage||(c==="rewrite"?"auto":void 0)),[et,mt]=we(V?.length),[ve,pt]=we(V?.tone),[Ve,Je]=we(V?.type),[rt,It]=we(""),ze=so(!1),Be=Bt(()=>fo(),[]),ot=Bt(()=>{if(T)return T;let a;switch(c){default:case"summarize":a="Summarize";break;case"proofread":a="Proofread";break;case"write":a="Write";break;case"rewrite":a="Rewrite";break;case"translate":a="Translate";break;case"generatePostMetadata":a="Generate Post Metadata";break;case"generateImageMetadata":a="Generate Image Metadata";break}return a},[T,c,W]),Ke=bt(a=>{if(!a||a.silent)return null;let h=a.step,S=o.get((a.message??"").trim()),M=typeof a.progress=="number"?a.progress:null,P=M==null?null:Math.round(M*100);switch(h){case"decide":return S||o.get("Checking capabilities...");case"on-device:init":return S||o.get("Initializing on-device AI...");case"on-device:download":return S||(P==null?o.get("Downloading model..."):o.get("Downloading model...")+" "+P+"%");case"on-device:ready":return S||o.get("On-device model ready.");case"on-device:run":return S||o.get("Generating...");case"backend:request":case"backend:waiting":case"backend:response":switch(c){case"translate":return o.get("Translating text");case"rewrite":return o.get("Rewriting text");case"summarize":return o.get("Summarizing");case"proofread":return o.get("Proofreading");default:return o.get("Generating text")}case"done":return S||o.get("Done.");case"error":return S||o.get("Something went wrong.");default:return S||o.get("Working...")}},[W,c]),Ue=Bt(()=>Xe??V?.getText,[Xe,V]),ae=Bt(()=>{let a=Ue;if(typeof a=="function")switch(c){case"generateImageMetadata":return!!nt;case"translate":return!y||Le!==y;case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!0;default:return!1}let h=a;switch(c){case"generateImageMetadata":return!!nt;case"translate":return!!(h&&h.trim().length>0)&&(!y||Le!==y);case"summarize":case"proofread":case"rewrite":case"write":case"generatePostMetadata":return!!(h&&h.trim().length>0);default:return!1}},[Ue,c,nt,Le,y,Se]),R=aa(),Pe=Ke(R.statusEvent)??(We?o.get(We):null),xt=bt(a=>{if(a&&a!=="auto"){It(a);return}It(Mt()||"")},[]),At=bt(async a=>{if(!ae)return;He&&c!=="proofread"&&ae&&ce(!1),Ae(null),ee(null);let h=await Ue;try{let S=typeof h=="function"?await Promise.resolve(h()):h;switch(c){case"summarize":{let M=(y&&y!=="auto"?y:null)||Mt(),P=await R.run(async({signal:re,onStatus:oe})=>{let O={text:S.trim(),format:Ee==="plain-text"?"plain-text":"markdown",length:et,type:Ve,outputLanguage:M};return(await no(O,{signal:re,onStatus:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M||""),ee(P??"");break}case"proofread":{let M=await R.run(async({signal:P,onStatus:re})=>{let oe=[];try{pe("Detecting input language...");let Xt=(await Gn({text:S.trim()},{signal:P,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0})).result?.candidates?.filter(ea=>ea.confidence&&ea.confidence>.1).map(ea=>ea.detectedLanguage);oe.push(...Xt)}catch{oe.push("en")}let O={text:S.trim(),expectedInputLanguages:oe};return(await to(O,{signal:P,onStatus:re,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});ee(M??"");break}case"translate":{let M=(y&&y!=="auto"?y:null)||Mt(),P=await R.run(async({signal:re,onStatus:oe})=>{let O=gt??"auto";if(O==="auto"&&(pe("Detecting input language..."),O=await Pa(S.trim(),{signal:re,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0})),qe(O),M===O)throw console.warn("AI Kit: input and output languages are the same",{inputLang:O,outLang:M}),Ae(o.get("Input and output languages cannot be the same.")),new Error(o.get("Input and output languages cannot be the same."));let ie={text:S.trim(),sourceLanguage:O,targetLanguage:M};return(await Tt(ie,{signal:re,onStatus:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M||""),ee(P??"");break}case"rewrite":{let M="",P=await R.run(async({signal:re,onStatus:oe})=>{let O=(y&&y!=="auto"?y:null)||Mt();y==="auto"&&(pe("Detecting input language..."),O=await Pa(S.trim(),{signal:re,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0}),Ct(O)),M=O||"";let ie={text:S.trim(),context:he?.trim()||void 0,format:Ee==="plain-text"?"plain-text":"markdown",tone:ve,length:et,outputLanguage:O};return(await ao(ie,{signal:re,onStatus:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M),ee(P??"");break}case"write":{let M=(y&&y!=="auto"?y:null)||Mt(),P={prompt:S.trim(),context:he?.trim()||void 0,format:Ee==="plain-text"?"plain-text":"markdown",tone:ve,length:et,outputLanguage:M},re=await R.run(async({signal:oe,onStatus:O})=>{let ie={signal:oe,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0};pe("Detecting input language...");let Oe=await Pa(S.trim()+`
9
9
  `+(he?.trim()||""),ie);return Oe!==M&&Oe!=="en"&&(pe("Translating instructions..."),P.prompt=(await Tt({text:P.prompt,sourceLanguage:Oe,targetLanguage:"en"},ie)).result,he&&(P.context=(await Tt({text:he,sourceLanguage:Oe,targetLanguage:"en"},ie)).result)),(await oo(P,{signal:oe,onStatus:O,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result});xt(M||""),ee(re??"");break}case"generatePostMetadata":{let M=[{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.
@@ -14,7 +14,7 @@ Do not add extra keys, no markdown, no explanations.
14
14
  Follow the response constraint strictly.
15
15
  `+(he?`
16
16
  Follow these additional instructions: ${he}`:"")},{role:"user",content:`Post content:
17
- ${R.trim()}`}],P=await S.run(async({signal:O,onStatus:ie})=>(await Bn({messages:M,outputLanguage:"en",responseConstraint:ko},{signal:O,onStatus:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result);if(!P){ee("");return}let re=sa(P).trim(),oe=(y&&y!=="auto"?y:null)||Mt();try{pe("Translating result...");let O=await S.run(async({signal:ie})=>await Ao(re,oe,{signal:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0}));ee(O)}catch(O){ee(re),console.warn("AI Kit: failed to parse SEO JSON",O)}break}case"generateImageMetadata":{let M=[{role:"system",content:`You write WordPress media metadata for accessibility and SEO.
17
+ ${S.trim()}`}],P=await R.run(async({signal:O,onStatus:ie})=>(await Bn({messages:M,outputLanguage:"en",responseConstraint:ko},{signal:O,onStatus:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result);if(!P){ee("");return}let re=sa(P).trim(),oe=(y&&y!=="auto"?y:null)||Mt();try{pe("Translating result...");let O=await R.run(async({signal:ie})=>await Ao(re,oe,{signal:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0}));ee(O)}catch(O){ee(re),console.warn("AI Kit: failed to parse SEO JSON",O)}break}case"generateImageMetadata":{let M=[{role:"system",content:`You write WordPress media metadata for accessibility and SEO.
18
18
  Return ONLY a minified JSON object with keys: alt, title, caption, description.
19
19
  No extra keys. No markdown. No explanations.
20
20
  Follow the response constraint strictly.
@@ -28,4 +28,4 @@ Guidelines:
28
28
  - caption: optional context users might see below the image; keep short.
29
29
  - description: 1\u20132 short sentences; can include context/usage if known.
30
30
  `+(he?`
31
- Follow these additional instructions: ${he}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),P=await S.run(async({signal:O,onStatus:ie})=>(await Bn({messages:M,images:[nt],outputLanguage:"en",responseConstraint:bo},{signal:O,onStatus:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result);if(!P){ee("");return}let re=(y&&y!=="auto"?y:null)||Mt(),oe=sa(P).trim();try{pe("Translating result...");let O=await S.run(async({signal:ie})=>await yo(oe,re,{signal:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0}));ee(O)}catch(O){ee(oe),console.warn("AI Kit: failed to parse SEO JSON",O)}break}}}catch(R){Ae(R instanceof Error?R.message:o.get("An unknown error occurred."))}pe(void 0)},[J,S,he,et,y,Xe,ve,I,c,Ve,gt,ae,He]),vt=bt(async()=>{await At("backend-only")},[At]),tt=bt(a=>{switch(c){case"proofread":return p(lo,{className:a});case"translate":return p(uo,{className:a});case"summarize":return p(mo,{className:a});case"rewrite":case"write":return p(co,{className:a});case"generateImageMetadata":case"generatePostMetadata":return p(go,{className:a});default:return p(Xr,{mode:c,className:a})}},[c]),wt=bt(()=>{switch(c){case"proofread":return S.lastSource?o.get("Proofread again"):o.get("Proofread");case"translate":return S.lastSource?o.get("Translate again"):o.get("Translate");case"rewrite":return S.lastSource?o.get("Rewrite again"):o.get("Rewrite");case"summarize":return S.lastSource?o.get("Summarize again"):o.get("Summarize");default:return S.lastSource?o.get("Regenerate"):o.get("Generate")}},[W,S.lastSource,c]),Zt=bt(()=>{switch(c){case"proofread":return o.get("Proofread on Backend");case"translate":return o.get("Translate on Backend");case"rewrite":return o.get("Rewrite on Backend");case"summarize":return o.get("Summarize on Backend");default:return o.get("Regenerate on Backend")}},[W,c]),_e=bt(async()=>{Re(!1),ee(null),Ae(null),ze.current=!1,S.reset(),E||me()},[me,ze,S,E]),ht=bt(async()=>{S.busy&&S.cancel()},[S.busy]);ua(()=>{!Se||!d||!ae||S.busy||U||ze.current||(ze.current=!0,queueMicrotask(()=>{At(ge)}))},[S.busy,ze,Se,ae,d,U,At,ge]),ua(()=>{He&&c!=="proofread"&&(ae||(ce(!0),ze.current=!0))},[He,ae,c]),ua(()=>{let a=!0;return(async()=>{try{await ro();let h=await Sn();a&&Qe(h)}catch(h){console.error(h),a&&Qe(!1)}})(),()=>{a=!1}},[]),ua(()=>{ye&&(De("auto"),Ct(ye),qe(void 0))},[ye]);let Lt=Bt(()=>{let a=[];if(c==="translate"){let h=da.find(R=>R.value===gt)?.label;a.push(o.get("Input language")+": "+(h?o.get(h):"auto"))}if(y&&_?.outputLanguage){let h=da.find(R=>R.value===y)?.label;a.push(o.get("Output language")+": "+(h?o.get(h):y))}return c==="summarize"&&Ve&&_?.type&&a.push(o.get("Type")+": "+o.get(Ve)),(c==="write"||c==="rewrite")&&ve&&_?.tone&&a.push(o.get("Tone")+": "+o.get(ve)),(c==="write"||c==="rewrite"||c==="summarize")&&et&&_?.length&&a.push(o.get("Length")+": "+o.get(et)),he?.trim()&&_?.instructions&&a.push(o.get("Instructions")+": \u2713"),a.length?a.join(" \u2022 "):o.get("No overrides")},[W,c,gt,y,Ve,ve,et,he]),$e={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},ft=u==="modal"?qt.Root:kt,Qt=u==="modal"?qt.Content:kt,g=u==="modal"?qt.Body:kt,f=C==="collapse"?Jr:Kt,K=C==="horizontal"?kt:Kt,D=Bt(()=>Be.find(a=>a.value===jt)??Be[0],[jt,Be]),ne=bt((a="sm")=>p(Yt,{allowDeselect:!1,"aria-label":o.get("Interface language"),checkIconPosition:"right",className:"ai-feature-language-selector",data:Be.map(h=>({value:h.value,label:""})),disabled:S.busy,leftSection:D?.countryCode?p(jn,{countryCode:D.countryCode,size:18}):null,onChange:h=>{let R=Ea(h);R&&x(R)},renderOption:({option:h})=>{let R=Be.find(M=>M.value===h.value);return R?fe(kt,{gap:"xs",wrap:"nowrap",children:[R.countryCode?p(jn,{countryCode:R.countryCode,size:18}):null,p("span",{children:o.get(R.label)})]}):h.label},rightSection:null,searchable:!1,size:a,styles:{dropdown:{minWidth:220},input:{backgroundColor:"transparent",border:0,boxShadow:"none",color:"inherit",fontSize:18,lineHeight:1,minHeight:a==="sm"?36:28,paddingInlineStart:0,paddingInlineEnd:0,backgroundImage:"none",width:a==="sm"?44:36},option:{color:"inherit"},section:{color:"inherit",alignItems:"center",display:"flex",height:"100%",insetInlineStart:0,justifyContent:"center",pointerEvents:"none",width:"100%"}},value:D?.value||null,w:a==="sm"?44:36}),[S.busy,D?.countryCode,D?.value,x,Be]);return ua(()=>{if(!(u!=="modal"||!Se))return document.body.style.overflow="hidden",document.body.onkeydown=a=>{a.key==="Escape"&&(a.preventDefault(),_e())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[_e,u]),fe(ca,{children:[E&&p(Ft,{leftSection:Q&&(X?p("span",{dangerouslySetInnerHTML:{__html:X}}):tt()),className:se?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:Se,onClick:()=>Re(!0),"data-ai-kit-open-button":!0,children:se&&o.get($||ot)}),Se&&fe(ft,{opened:!0,className:"ai-feature-root",onClose:_e,padding:"md",gap:"md",size:"md",portalProps:u==="modal"?{target:Ge,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":H,"data-ai-kit-variation":u,children:[u==="modal"&&p(qt.Overlay,{}),fe(Qt,{w:"100%",dir:ct,style:{left:0},children:[u==="modal"&&fe(qt.Header,{dir:ct,style:{zIndex:1e3},children:[tt("ai-feature-title-icon"),p(qt.Title,{children:o.get(ot)}),p("div",{style:{display:"flex",flex:1,justifyContent:"flex-start",marginRight:8},children:ne("xs")}),p(qt.CloseButton,{})]}),p(g,{w:"100%",style:{zIndex:1001},children:fe(na,{enabled:u!=="modal",working:S.busy,variation:u,children:[fe(Kt,{gap:"sm",mb:"sm",p:"sm",dir:ct,children:[u!=="modal"&&p(kt,{justify:"flex-end",children:ne()}),dt&&p(Ma,{color:"red",children:o.get(dt)}),He&&c!=="proofread"&&fe(Zr,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":C,children:[fe(kt,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:C==="collapse"?()=>ce(a=>!a):void 0,children:[C==="collapse"&&fe(Kt,{gap:0,children:[p(En,{size:"sm",fw:600,style:{lineHeight:1.1},children:o.get("Options")}),p(En,{size:"xs",c:"dimmed",style:{marginTop:2},children:Lt})]}),C==="collapse"&&p(Ft,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:a=>{a.stopPropagation(),ce(h=>!h)},children:Fe?o.get("Hide"):o.get("Show")})]}),fe(f,{in:Fe,children:[C==="collapse"&&p(_r,{my:"sm"}),fe(K,{gap:"xs",justify:"space-between",children:[c==="write"&&_?.text&&p(Et,{label:o.get("The topic or subject for the AI to write about."),disabled:C!=="horizontal",position:"top",children:p(Dt,{size:"xs",className:"ai-feature-option",styles:$e,disabled:S.busy,label:o.get("Topic"),description:C!=="horizontal"?o.get("The topic or subject for the AI to write about."):void 0,value:Xe||"",onChange:a=>{let h=a.target.value;N(h),L?.({text:h})}})}),(c==="write"||c==="rewrite"||c==="generateImageMetadata"||c==="generatePostMetadata")&&_?.instructions&&p(Et,{label:o.get("Additional instructions to guide the AI."),disabled:C!=="horizontal",position:"top",children:p(Dt,{disabled:S.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Instructions"),description:C!=="horizontal"?o.get("Additional instructions to guide the AI."):void 0,value:he||"",onChange:a=>{let h=a.target.value;zt(h),L?.({instructions:h})}})}),c==="translate"&&p(Et,{label:o.get("The language of the input text."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:S.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.get("Input language"),description:C!=="horizontal"?o.get("The language of the input text."):void 0,data:[{value:"auto",label:o.get("Auto-detect")},...da.map(a=>({value:a.value,label:o.get(a.label)})).sort((a,h)=>a.label.localeCompare(h.label))],value:gt||"auto",onChange:a=>{let h=a;de(h),qe(void 0),L?.({inputLanguage:h})}})}),_?.outputLanguage&&p(Et,{label:o.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:S.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.get("Output language"),description:C!=="horizontal"?o.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[c==="rewrite"?{value:"auto",label:o.get("Auto-detect")}:void 0].filter(Boolean),...da.map(a=>({value:a.value,label:o.get(a.label)})).sort((a,h)=>a.label.localeCompare(h.label))],value:y||On.settings.defaultOutputLanguage||(c==="rewrite"?"auto":""),onChange:a=>{let h=a;Ct(h),qe(void 0),L?.({outputLanguage:h})}})}),c==="summarize"&&_?.type&&p(Et,{label:o.get("The summary style to generate."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:S.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Type"),description:C!=="horizontal"?o.get("The summary style to generate."):void 0,data:[{value:"headline",label:o.get("Headline")},{value:"key-points",label:o.get("Key Points")},{value:"teaser",label:o.get("Teaser")},{value:"tldr",label:o.get("TL;DR")}],value:Ve||"key-points",onChange:a=>{let h=a;Je(h),L?.({type:h})}})}),(c==="write"||c==="rewrite")&&_?.tone&&p(Et,{label:o.get("The tone or style for the AI to use."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:S.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Tone"),description:C!=="horizontal"?o.get("The tone or style for the AI to use."):void 0,data:c==="write"?[{value:"neutral",label:o.get("Neutral")},{value:"formal",label:o.get("Formal")},{value:"casual",label:o.get("Casual")}]:[{value:"as-is",label:o.get("As-Is")},{value:"more-formal",label:o.get("More formal")},{value:"more-casual",label:o.get("More casual")}],value:ve||(c==="write"?"neutral":"as-is"),onChange:a=>{let h=a;pt(h),L?.({tone:h})}})}),(c==="write"||c==="rewrite"||c==="summarize")&&_?.length&&p(Et,{label:o.get("The target output length."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:S.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Length"),description:C!=="horizontal"?o.get("The target output length."):void 0,data:c==="write"||c==="summarize"?[{value:"short",label:o.get("Short")},{value:"medium",label:o.get("Medium")},{value:"long",label:o.get("Long")}]:[{value:"as-is",label:o.get("As-Is")},{value:"shorter",label:o.get("Shorter")},{value:"longer",label:o.get("Longer")}],value:et||(c==="rewrite"?"as-is":"short"),onChange:a=>{let h=a;mt(h),L?.({length:h})}})}),c==="summarize"||c==="write"||c==="rewrite"&&_?.outputFormat&&p(Et,{label:o.get("The format for the generated output."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:S.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Output format"),description:C!=="horizontal"?o.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:o.get("Plain Text")},{value:"markdown",label:o.get("Markdown")},{value:"html",label:o.get("HTML")}],value:Ee||"markdown",onChange:a=>{let h=a;$t(h),L?.({outputFormat:h})}})})]})]})]}),S.busy&&Pe&&p(na,{enabled:u==="modal",working:!0,variation:u,children:fe(kt,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[p($r,{size:"sm"}),p(Da.Label,{className:"ai-feature-status-text",children:Pe})]})}),U&&fe(Kt,{mt:"md",children:[c==="proofread"&&(U.corrections.length===0?p(Ma,{color:"green",children:o.get("No issues found. Your text looks great!")}):fe(ca,{children:[p("p",{style:{marginTop:0,opacity:.85},children:o.get("Hover highlights to see explanations.")}),p(Dn,{original:Xe,corrections:U.corrections}),U.correctedInput?fe(ca,{children:[p("h4",{style:{marginTop:16,marginBottom:8},children:o.get("Corrected")}),p(kt,{c:"pre",className:"ai-feature-generated-content",children:U.correctedInput})]}):null]})),c==="generateImageMetadata"&&fe(ca,{children:[p(Dt,{readOnly:!i,label:o.get("Alt Text"),description:o.get("The alt text for the image."),value:U.alt_text||"",onChange:a=>ee({...U,alt_text:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Title"),description:o.get("The title for the image."),value:U.title||"",onChange:a=>ee({...U,title:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Caption"),description:o.get("The caption for the image."),value:U.caption||"",onChange:a=>ee({...U,caption:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Description"),description:o.get("The description for the image."),value:U.description||"",onChange:a=>ee({...U,description:a.target.value})})]}),c==="generatePostMetadata"&&fe(ca,{children:[p(Dt,{readOnly:!i,label:o.get("Title"),description:o.get("The title for the post."),value:U.title||"",onChange:a=>ee({...U,title:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Excerpt"),description:o.get("The excerpt for the post."),value:U.excerpt||"",onChange:a=>ee({...U,excerpt:a.target.value})})]}),c!=="proofread"&&c!=="generateImageMetadata"&&c!=="generatePostMetadata"&&typeof U=="string"&&p(Nn,{contentLanguage:rt,value:U,editable:!!i,onChange:a=>{ee(a)}})]}),U===""&&p(Nn,{contentLanguage:rt,value:U,editable:!1})]}),fe(kt,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[S.busy&&p(Ft,{variant:"outline",size:"sm",onClick:ht,"data-ai-kit-cancel-button":!0,children:o.get("Cancel")}),!S.busy&&p(Ft,{variant:"filled",size:"sm",disabled:!ae,onClick:()=>At(),"data-ai-kit-generate-button":!0,children:wt()}),!S.busy&&S.lastSource==="on-device"&&Ze&&Ne&&p(Ft,{variant:"filled",size:"sm",disabled:!ae,onClick:vt,"data-ai-kit-regenerate-on-backend-button":!0,children:Zt()}),!S.busy&&b&&p(Ft,{variant:"outline",size:"sm",disabled:!U||c==="proofread"&&U.corrections.length===0,onClick:async()=>{b(Ee==="html"?await La(U):U),_e()},"data-ai-kit-accept-button":!0,children:o.get(te)}),p(Ft,{variant:"default",size:"sm",onClick:_e,"data-ai-kit-close-button":!0,children:o.get("Close")})]}),p(ha,{variation:u})]})})]})]})]})};function Nn(e){let{contentLanguage:n,value:d,editable:i,onChange:r}=e,u=Hn(n)?"rtl":"ltr",T=u==="rtl"?"right":"left";return i?fe(Kt,{p:0,gap:"sm",dir:u,style:{textAlign:T},children:[p(Da.Label,{children:o.get("Generated content")}),p(Qr,{value:d,onChange:E=>r?.(E.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor",styles:{input:{direction:u,textAlign:T}}}),p(Da.Label,{children:o.get("Preview")}),p(Kt,{className:"ai-feature-generated-content ai-feature-preview",dir:u,style:{textAlign:T},children:p(Kn,{remarkPlugins:[Un],children:d})})]}):p(Kt,{className:"ai-feature-generated-content",dir:u,style:{textAlign:T},children:d?p(Kn,{remarkPlugins:[Un],children:d}):p(Ma,{color:"yellow",children:o.get("No content generated.")})})}var wo=Wt(vo);import{ActionIcon as Wn,Anchor as xo,Box as Lo,Button as it,Group as Me,Input as Po,List as Fn,Modal as Vt,Stack as st,Text as xe,Textarea as Mo}from"@mantine/core";import{IconMaximize as Do,IconMessage as Eo,IconMicrophone as Bo,IconMinimize as Ko,IconPaperclip as Uo,IconPencil as Oo,IconPlayerStop as jo,IconSend as No,IconTrash as Go,IconX as Ho}from"@tabler/icons-react";import{getStoreSelect as Wo,sendChatMessage as Fo,sendFeedbackMessage as qo}from"@smart-cloud/ai-kit-core";import{useSelect as Yo}from"@wordpress/data";import{I18n as A}from"aws-amplify/utils";import{useCallback as q,useEffect as ke,useMemo as Te,useRef as Ce,useState as be}from"react";import Vo from"react-markdown";import Jo from"remark-gfm";var To="ai-kit-chatbot-attachments",yt="attachments";var Ba=null;function So(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function ya(){if(!So())return null;Ba||(Ba=new Promise(e=>{try{let n=window.indexedDB.open(To,1);n.onerror=()=>e(null),n.onblocked=()=>e(null),n.onupgradeneeded=()=>{let d=n.result;d.objectStoreNames.contains(yt)||d.createObjectStore(yt,{keyPath:"id"})},n.onsuccess=()=>e(n.result)}catch(n){console.warn("[AiChatbot] IndexedDB is not available",n),e(null)}}));try{return await Ba}catch(e){return console.warn("[AiChatbot] Failed to open attachment store",e),null}}async function Ka(e,n){let d=await ya();return d?new Promise((i,r)=>{try{let u=d.transaction(yt,e),T=u.objectStore(yt),E=n(T);u.oncomplete=()=>i(E),u.onerror=()=>r(u.error),u.onabort=()=>r(u.error)}catch(u){r(u)}}).catch(i=>(console.warn("[AiChatbot] Attachment store transaction failed",i),null)):null}async function Ua(e,n,d){await Io();let i={id:e,blob:n,name:d.name,type:d.type,size:d.size,createdAt:Date.now()};return await Ka("readwrite",u=>(u.put(i),e))}async function Oa(e){let n=await ya();return n?new Promise((d,i)=>{try{let r=n.transaction(yt,"readonly"),u=r.objectStore(yt).get(e);u.onsuccess=()=>{let T=u.result;d(T??null)},u.onerror=()=>i(u.error),r.onabort=()=>i(r.error)}catch(r){i(r)}}).catch(d=>(console.warn("[AiChatbot] Failed to load attachment",d),null)):null}async function Ro(e){await Ka("readwrite",n=>{n.delete(e)})}async function Aa(){await Ka("readwrite",e=>{e.clear()})}async function ja(e){let n=await ya();n&&await new Promise((d,i)=>{try{let r=n.transaction(yt,"readwrite"),u=r.objectStore(yt),T=u.getAllKeys();T.onsuccess=()=>{let E=T.result;for(let se of E){let Q=String(se);e.has(Q)||u.delete(se)}},T.onerror=()=>i(T.error),r.oncomplete=()=>d(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)}catch(r){i(r)}}).catch(d=>{console.warn("[AiChatbot] Failed to cleanup attachments",d)})}var zo=50*1024*1024;async function Co(){let e=await ya();return e?new Promise((n,d)=>{try{let i=e.transaction(yt,"readonly"),r=i.objectStore(yt).getAll();r.onsuccess=()=>{let u=r.result||[];n(u)},r.onerror=()=>d(r.error),i.onerror=()=>d(i.error),i.onabort=()=>d(i.error)}catch(i){d(i)}}).catch(n=>(console.warn("[AiChatbot] Failed to get all attachments",n),[])):[]}async function Io(){let e=await Co();if(e.length===0)return;let n=e.sort((u,T)=>u.createdAt-T.createdAt),d=n.reduce((u,T)=>u+T.size,0),i=[],r=0;for(;d>zo&&r<n.length;){let u=n[r];u&&(i.push(u.id),d-=u.size),r++}for(let u of i)await Ro(u);i.length>0&&console.log(`[AiChatbot] Deleted ${i.length} old attachment(s) to enforce storage quota`)}import{Fragment as Yn,jsx as m,jsxs as G}from"react/jsx-runtime";A.putVocabularies(Gt);var va=1440*60*1e3,Na=!1,_o=1,$o="localstorage",ra=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,Ha={modalTitle:"AI Assistant",userLabel:"User",assistantLabel:"Assistant",assistantThinkingLabel:"Assistant is thinking...",askMeLabel:"Ask me",sendLabel:"Send",cancelLabel:"Cancel",resetLabel:"Reset",confirmLabel:"Confirm",clickAgainToConfirmLabel:"Click again to confirm",notSentLabel:"Not sent",editLabel:"Edit",readyLabel:"Ready.",readyEmptyLabel:"I'm ready to assist you.",addLabel:"Add",addImageLabel:"Add image",removeImageLabel:"Remove image",closeChatLabel:"Close chat",maximizeLabel:"Maximize",restoreSizeLabel:"Restore size",referencesLabel:"References",referenceLabel:"Reference",acceptResponseLabel:"Accept response",rejectResponseLabel:"Reject response",placeholder:"Ask anything\u2026",emptyResponseLabel:"Empty response",unexpectedErrorLabel:"Unexpected error"};function Ut(e){return`${e}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var Zo=4,Qo=5*1024*1024,Xo=e=>{let n=(e?.name||"").toString(),d=(e?.code||"").toString(),i=(e?.message||"").toString();return n==="AbortError"||d==="ABORT_ERR"||/abort|aborted|cancel/i.test(i)},ei=(e,n)=>{if(!e)return null;let d=e.step,i=A.get((e.message??"").trim()),r=typeof e.progress=="number"?e.progress:null,u=r==null?null:Math.round(r*100);switch(d){case"decide":return i||A.get("Checking capabilities...");case"on-device:init":return i||A.get("Initializing on-device AI...");case"on-device:download":return u==null?i||A.get("Downloading model..."):i||`${A.get("Downloading model...")} ${u}%`;case"on-device:ready":return i||A.get("On-device model ready...");case"on-device:run":return i||A.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return A.get(n.assistantThinkingLabel??Ha.assistantThinkingLabel);case"done":return i||A.get("Done.");case"error":return i||A.get("An error occurred.");default:return i||null}};function Ga(e){if(typeof window>"u")return null;try{return e==="localstorage"?window.localStorage:e==="sessionstorage"?window.sessionStorage:null}catch{return null}}var oa=e=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(e)}catch{return null}},wa=e=>{if(e&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(e)}catch{}},Vn=e=>{!e||e.length===0||e.forEach(n=>wa(n.objectUrl))},qn=e=>{e.forEach(n=>Vn(n.attachments))},ti=e=>{let{rootElement:n,store:d,previewMode:i,title:r,openButtonTitle:u,openButtonIcon:T,showOpenButtonTitle:E=!0,showOpenButtonIcon:se=!0,colorMode:Q,language:$,onClose:X,context:Ne,placeholder:te,maxImages:C,maxImageBytes:c,historyStorage:I=$o,emptyHistoryAfterDays:ge=_o,labels:H,openButtonIconLayout:V="top",openButtonPosition:me="bottom-right"}=e,b=Te(()=>({...Ha,...H||{}}),[H]),L=aa(),[J,ue]=be(""),[Ge,ye]=be([]),[x,Z]=be(null),[De,W]=be(!1),[jt,ct]=be(0),_=Ce(null),He=Ce([]),We=Ce(null),pe=Ce(null),Se=Ce(null),[Re,Fe]=be([]),[ce,Ze]=be(null),[Qe,dt]=be(!1),[Ae,U]=be(!1),[ee,Xe]=be(!1),[N,nt]=be(!1),[he,zt]=be(!0),[Le,qe]=be(null),[gt,de]=be(!1),[Ee,$t]=be(null),[y,Ct]=be(null),[et,mt]=be(!1),[ve,pt]=be(null),Ve=Ce(ve);ke(()=>{Ve.current=ve},[ve]);let Je=Ce(null),rt=Ce(!1),[It,ze]=be(null),Be=Ce(null),ot=Ce(null),Ke=Ce(null),Ue=Ce(null),ae=q(t=>{t.forEach(l=>wa(l.objectUrl))},[]),S=q(()=>{ae(ht.current),ye([]),Be.current&&(Be.current.value="")},[ae]),Pe=q(()=>{Lt.current&&wa(Lt.current.objectUrl),Z(null),He.current=[],ct(0)},[]),xt=q(async()=>{try{ue(""),Pe();let t=await navigator.mediaDevices.getUserMedia({audio:!0}),l=new MediaRecorder(t,{mimeType:"audio/webm"}),k=new AudioContext,s=k.createMediaStreamSource(t),z=k.createAnalyser();z.fftSize=2048,z.smoothingTimeConstant=.8,s.connect(z),We.current=k,pe.current=z;let v=new Uint8Array(z.fftSize),B=()=>{if(!pe.current)return;pe.current.getByteTimeDomainData(v);let F=0;for(let Ye=0;Ye<v.length;Ye++){let Nt=(v[Ye]-128)/128;F+=Nt*Nt}let Ie=Math.sqrt(F/v.length),je=Math.min(100,Ie*200);ct(je),Se.current=requestAnimationFrame(B)};B(),He.current=[];let j=Date.now();l.ondataavailable=F=>{F.data.size>0&&He.current.push(F.data)},l.onstop=()=>{let F=new Blob(He.current,{type:"audio/webm"}),Ie=(Date.now()-j)/1e3,je=oa(F);je&&Z({id:Ut("composer-audio"),blob:F,objectUrl:je,duration:Ie}),t.getTracks().forEach(Ye=>Ye.stop()),Se.current&&(cancelAnimationFrame(Se.current),Se.current=null),We.current&&(We.current.close(),We.current=null),pe.current=null,ct(0)},_.current=l,l.start(),W(!0)}catch(t){console.error("Failed to start recording:",t)}},[Pe]),At=q(()=>{_.current&&De&&(_.current.stop(),W(!1))},[De]);ke(()=>()=>{Se.current&&cancelAnimationFrame(Se.current),We.current&&We.current.close(),Pe()},[Pe]);let[vt,tt]=be(null),wt=Ce(J),Zt=Ce(Re),_e=Ce(vt),ht=Ce(Ge),Lt=Ce(x);ke(()=>{wt.current=J},[J]),ke(()=>{ht.current=Ge},[Ge]),ke(()=>{Lt.current=x},[x]),ke(()=>{Zt.current=Re},[Re]),ke(()=>{_e.current=vt},[vt]),ke(()=>{$&&A.setLanguage($||"en")},[$]);let $e=Yo(()=>Wo(d).isShowChatbotPreview()),ft=Te(()=>Math.max(0,C??Zo),[C]),Qt=Te(()=>Math.max(0,c??Qo),[c]),g=Re.length>0,f=Te(()=>L.busy&&ve==="chat",[L.busy,ve]),K=Te(()=>f?!1:J.trim().length>0||x!==null,[J,f,x]),D=Te(()=>{let t=u||b.askMeLabel;return A.get(t)},[u,b.askMeLabel,$]),ne=Te(()=>{let t=r||b.modalTitle;return A.get(t)},[r,b.modalTitle,$]),a=Te(()=>{let t=te||b.placeholder;return A.get(t)},[te,b.placeholder,$]),h=Te(()=>{let t="ai-docs-ask",l=`ai-open-btn--${me}`;return`${t} ${l}`},[me]),R=q(()=>{let t=Ue.current;if(t)try{let l=window.innerHeight||document.documentElement.clientHeight,k=360,s=1e3,z=Math.floor(l*.8),v=Math.max(k,Math.min(z,s));t.style.height=`${v}px`}catch{}},[]),M=q(()=>{let t=y;t&&window.setTimeout(()=>{try{t.scrollTop=t.scrollHeight}catch{}},50)},[y]),P=q(()=>{nt(!1),Ae&&U(!1),Xe(!1),X?.()},[Ae,X]);ke(()=>{if(N)return R(),window.addEventListener("resize",R),()=>window.removeEventListener("resize",R)},[N,R]),ke(()=>{if(!(!N||!Ae))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[N,Ae,P]);let re=Te(()=>Ge.map(t=>({id:t.id,url:t.objectUrl,title:t.file.name})),[Ge]);ke(()=>{g||zt(!0)},[g]),ke(()=>()=>{ae(ht.current)},[ae]),ke(()=>{let t=y;if(!t)return;let l=()=>{let k=t.scrollHeight-(t.scrollTop+t.clientHeight);zt(k<20)};return t.addEventListener("scroll",l),()=>{t.removeEventListener("scroll",l)}},[N,y]),ke(()=>{if(!he)return;let t=y;t&&t.scrollHeight>t.clientHeight&&(t.scrollTop=t.scrollHeight)},[Re,L.busy,he,y]),ke(()=>{N||qe(null)},[N]);let oe=Te(()=>L.busy?ei(L.statusEvent,b)||A.get("Working\u2026"):null,[L.busy,L.statusEvent,$,b]),O=Te(()=>{for(let t=Re.length-1;t>=0;t--){let l=Re[t];if(l.role==="user"&&l.clientStatus==="canceled")return l.id}return null},[Re]),ie=q(t=>{Fe(l=>{let k=[...l].map((v,B)=>({m:v,i:B})).reverse().find(v=>v.m.role==="user"&&v.m.clientStatus==="pending")?.i;if(k==null)return l;let s=l.slice(),z=s[k];return s[k]={...z,clientStatus:t??void 0},s})},[Fe]),Oe=q(()=>{if(!(!L.busy||Ve.current!=="chat")){rt.current=!0;try{L.cancel()}catch{}ie("canceled"),pt(null),Ze(null),M()}},[L,ie,M]),Xt=q(t=>{let l=ht.current,k=Array.from(t.target.files||[]),s=Math.max(0,ft-l.length);if(s===0){t.currentTarget.value="";return}let z=[];for(let v of k){if(z.length>=s)break;let B=/image\/(jpeg|png|gif|webp)/i.test(v.type),j=v.size<=Qt,F=[...l,...z].some(je=>je.file.name===v.name&&je.file.size===v.size&&je.file.lastModified===v.lastModified);if(!B||!j||F)continue;let Ie=oa(v);Ie&&z.push({id:Ut("composer-image"),file:v,objectUrl:Ie})}z.length&&ye(v=>[...v,...z]),t.currentTarget.value=""},[ft,Qt]),ea=q(t=>{ye(l=>{if(t<0||t>=l.length)return l;let k=l[t];return k&&wa(k.objectUrl),l.filter((s,z)=>z!==t)})},[]),Pt=Ce(null);ke(()=>{if(ce)return Pt.current&&(window.clearTimeout(Pt.current),Pt.current=null),Pt.current=window.setTimeout(()=>{Ze(null),Pt.current=null},6e3),()=>{Pt.current&&(window.clearTimeout(Pt.current),Pt.current=null)}},[ce]);let Fa=q(async(t,l)=>{let k=I!=="nostorage",s=[];if(t.length>0){let z=await Promise.all(t.map(async v=>{let B=Ut("attachment-image"),j;if(k)try{j=await Ua(B,v.file,{name:v.file.name,type:v.file.type,size:v.file.size})??void 0}catch(Ie){console.warn("[AiChatbot] Failed to persist image",Ie)}let F=oa(v.file);return{id:B,name:v.file.name,type:v.file.type||"application/octet-stream",size:v.file.size,blobId:j,objectUrl:F??void 0,blob:v.file,mediaType:"image"}}));s.push(...z.filter(Boolean))}if(l){let z=Ut("attachment-audio"),v;if(k)try{v=await Ua(z,l.blob,{name:`audio-${Date.now()}.webm`,type:l.blob.type,size:l.blob.size})??void 0}catch(j){console.warn("[AiChatbot] Failed to persist audio",j)}let B=oa(l.blob);s.push({id:z,name:`audio-${Date.now()}.webm`,type:l.blob.type||"audio/webm",size:l.blob.size,blobId:v,objectUrl:B??void 0,blob:l.blob,duration:l.duration,mediaType:"audio"})}return s},[I]),qa=q(async t=>{let l=[];for(let k of t){let s;if(k.attachments&&k.attachments.length>0){s=[];for(let z of k.attachments){let v;if(z.blobId)try{v=(await Oa(z.blobId))?.blob??void 0}catch(j){console.warn("[AiChatbot] Failed to hydrate attachment",j)}if(!v)continue;let B=v?oa(v):null;s.push({...z,objectUrl:B??void 0,blob:v??void 0})}}l.push({...k,attachments:s})}return l},[]),Ya=q(async t=>{if(!t||t.length===0){S();return}let l=[];for(let k of t){let s=k.blob;if(!s&&k.blobId)try{s=(await Oa(k.blobId))?.blob??void 0}catch(B){console.warn("[AiChatbot] Failed to reload attachment",B)}if(!s)continue;let z=s instanceof File?s:new File([s],k.name||"attachment",{type:k.type||s.type||"application/octet-stream"}),v=oa(z);if(v&&(l.push({id:Ut("composer-image"),file:z,objectUrl:v}),l.length>=ft))break}if(l.length===0){S();return}ye(k=>(ae(k),l)),Be.current&&(Be.current.value="")},[S,ae,ft]),Ta=q((t,l)=>{t&&qe({url:t,title:l})},[]),er=q(()=>{qe(null)},[]),Va=q(()=>{qn(Zt.current),S(),Pe(),Fe([]),Ze(null),Ke.current=null,tt(null),zt(!0),dt(!1);let t=Ga(I);if(t)try{t.removeItem(ra)}catch{}Aa()},[S,Pe,I]),tr=q(()=>{dt(!0)},[]),ar=q(()=>{L.busy&&Ve.current==="chat"&&Oe(),Va()},[L.busy,Oe,Va]),Ja=q(()=>{dt(!1)},[]),_a=q(async(t,l)=>{if(!L.busy)try{let k=Ke.current&&Date.now()-Ke.current.storedAt<ge*va?Ke.current.id:void 0;if(!k)return;pt("feedback"),Ze(null),await L.run(async({signal:s,onStatus:z})=>(await qo({sessionId:k,feedbackMessageId:t,feedbackType:l},{signal:s,onStatus:z,context:Ne}),null)),Ze(null)}catch(k){let s=k?.message?.trim()||A.get("An error occurred.");Ze(s),console.error("Failed to send feedback",k)}finally{pt(k=>k==="feedback"?null:k)}},[L,$]),$a=q((t,l)=>{Fe(k=>k.map(s=>s.id!==t||s.role!=="assistant"?s:s.feedback===l?{...s,feedback:void 0}:{...s,feedback:l})),_a(t,l)},[_a]),pa=q(async()=>{let t=wt.current.trim(),l=Lt.current;if(!t&&!l||L.busy)return;rt.current=!1,Ze(null),pt("chat");let k=[...ht.current],s=await Fa(k,l),z=Ut("user"),v=Date.now(),B={id:z,role:"user",content:t||(l?"[Audio message]":""),createdAt:v,clientStatus:"pending",attachments:s.length?s:void 0};ue(""),S(),Pe(),Fe(j=>[...j,B]),N||nt(!0),M();try{let j=Ke.current&&Date.now()-Ke.current.storedAt<ge*va?Ke.current.id:void 0,F=await L.run(async({signal:je,onStatus:Ye})=>await Fo({sessionId:j,message:t||void 0,audio:l?.blob,images:k.map(pr=>pr.file)},{signal:je,onStatus:Ye,context:Ne}));if(rt.current){ie("canceled");return}if(!F)throw new Error(A.get(L.error??b.emptyResponseLabel));F.sessionId&&(Ke.current={id:F.sessionId,storedAt:Date.now()});let Ie={id:F.metadata?.messageId||Ut("assistant"),role:"assistant",content:F.result||"",citations:F.citations,createdAt:Date.now()};Fe(je=>[...je.map(Nt=>Nt.id===z?{...Nt,clientStatus:void 0}:Nt),Ie]),tt(v)}catch(j){if(console.error("Error during ask()",j),rt.current||Xo(j)){ie("canceled");return}let F=j?.message?.trim()||A.get(b.unexpectedErrorLabel);Fe(Ie=>[...Ie.map(Ye=>Ye.id===z?{...Ye,clientStatus:void 0}:Ye),{id:Ut("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${F}`,createdAt:Date.now()}]),tt(v)}finally{pt(j=>j==="chat"?null:j),rt.current=!1,ot.current&&ot.current.focus(),M()}},[L,Fa,S,Pe,N,M,ie,b.emptyResponseLabel,b.unexpectedErrorLabel,$]),nr=q(t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),K&&pa())},[pa,K]),rr=q(()=>{nt(!0)},[]);ke(()=>()=>{Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null)},[]);let or=q(()=>{U(t=>{let l=!t;return Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null),l?(Xe(!0),requestAnimationFrame(()=>{Je.current=requestAnimationFrame(()=>{Xe(!1),Je.current=null})})):Xe(!1),l})},[]),ir=q(t=>{ue(t.content),(async()=>(await Ya(t.attachments),Fe(l=>l.filter(k=>k.id!==t.id)),Vn(t.attachments),queueMicrotask(()=>ot.current?.focus())))()},[Ya]),Za=Te(()=>se?T?m("img",{src:T,className:"ai-open-btn-icon",alt:A.get(b.askMeLabel||D)}):m(Eo,{size:18}):null,[se,T,b,D,$]),sr=Te(()=>{let t=Za,l=E?m(xe,{inherit:!0,children:D}):null;if(!se&&!l)return null;if(!se)return l;if(!E)return t;switch(V){case"top":return G(st,{gap:4,align:"center",children:[t,l]});case"bottom":return G(st,{gap:4,align:"center",children:[l,t]});case"right":return G(Me,{gap:6,align:"center",children:[l,t]});default:return G(Me,{gap:6,align:"center",children:[t,l]})}},[Za,se,E,D,V]),lr=Te(()=>f,[f]),ur=Te(()=>!f,[f]),cr=Te(()=>ce||(g?A.get(b.readyLabel):A.get(b.readyEmptyLabel)),[ce,g,b.readyLabel,b.readyEmptyLabel,$]),dr=Te(()=>f?A.get(b.cancelLabel):A.get(b.sendLabel),[f,b.cancelLabel,b.sendLabel,$]),gr=Te(()=>f?m(jo,{size:18}):m(No,{size:18}),[f]),mr=q(()=>{if(f){Oe();return}pa()},[f,Oe,pa]);return ke(()=>{if(!N||!Ee||!y)return;let t=()=>{let j=window.getComputedStyle(y).overflowY,F=j==="auto"||j==="scroll",Ie=Math.ceil(y.scrollHeight),je=Math.floor(y.clientHeight),Ye=Ie>je;return F&&Ye},l=!1,k=B=>{if(!t())return;B.preventDefault();let j=y.scrollHeight-y.clientHeight;y.scrollTop=Math.max(0,Math.min(j,y.scrollTop+B.deltaY))},s=()=>{let B=t();mt(B),B!==l&&(l=B,l?Ee.addEventListener("wheel",k,{passive:!1}):Ee.removeEventListener("wheel",k))};s();let z=new ResizeObserver(s);z.observe(y);let v=new MutationObserver(s);return v.observe(y,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",s),()=>{l&&Ee.removeEventListener("wheel",k),z.disconnect(),v.disconnect(),window.removeEventListener("resize",s)}},[N,Ee,y]),ke(()=>{let t=!1,l=Ga(I);if(!l){I==="nostorage"&&Aa(),de(!0);return}return(async()=>{try{let k=l.getItem(ra);if(!k){de(!0);return}let s=JSON.parse(k),z=typeof s?.lastUserSentAt=="number"?s.lastUserSentAt:null;if(!z||Date.now()-z>ge*va){l.removeItem(ra),await Aa(),de(!0);return}let B=(Array.isArray(s.messages)?s.messages:[]).map(F=>F?.role==="user"&&F.clientStatus==="pending"?{...F,clientStatus:"canceled"}:F),j=await qa(B);if(t){qn(j);return}Fe(j),tt(z),s.session&&s.session.id&&(Ke.current=s.session)}catch(k){console.warn("[AiChatbot] Failed to load history",k);try{l.removeItem(ra)}catch{}}finally{t||de(!0)}})(),()=>{t=!0}},[I,ge,qa]),ke(()=>{if(!gt)return;let t=Ga(I);if(!t)return;let l=_e.current;if(!l)return;if(Date.now()-l>ge*va){try{t.removeItem(ra)}catch{}ja(new Set);return}let k=Re.map(({attachments:v,...B})=>({...B,attachments:v?.map(({objectUrl:j,blob:F,...Ie})=>Ie)})),s={version:1,lastUserSentAt:l,session:Ke.current,messages:k};try{t.setItem(ra,JSON.stringify(s))}catch{}let z=new Set;k.forEach(v=>{v.attachments?.forEach(B=>{B.blobId&&z.add(B.blobId)})}),ja(z)},[gt,Re,vt,I,ge]),i&&!$e||!i&&$e?null:G(Me,{className:h,children:[!N&&m(it,{variant:"filled",className:E?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:rr,"aria-label":D,title:D,"data-ai-kit-open-button":!0,children:sr}),N&&m(Vt.Root,{ref:Ue,opened:N,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:P,className:h+" ai-chat-container"+(Ae?" maximized":"")+(Ae&&ee?" ai-max-enter":""),portalProps:{target:n,reuseTargetNode:!0},"data-ai-kit-theme":Q,"data-ai-kit-variation":"modal",children:G("div",{className:"ai-chat-container-internal",ref:$t,children:[G(Vt.Header,{className:"ai-chat-header-bar",children:[m(Vt.Title,{className:"ai-chat-title",children:ne}),G(Me,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&m(Wn,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:or,title:Ae?A.get(b.restoreSizeLabel):A.get(b.maximizeLabel),"aria-label":Ae?A.get(b.restoreSizeLabel):A.get(b.maximizeLabel),"data-ai-kit-maximize-button":!0,children:Ae?m(Ko,{size:16}):m(Do,{size:16})}),m(Vt.CloseButton,{"aria-label":A.get(b.closeChatLabel)})]})]}),G(Vt.Body,{className:"ai-chat-scroll",ref:Ct,"data-scrollable":et?"true":"false",children:[Re.map(t=>{let l=t.role==="user",k=l&&t.clientStatus==="canceled"&&t.id===O;return m(Me,{justify:l?"flex-end":"flex-start",className:"ai-chat-row "+t.role,onMouseEnter:()=>ze(t.id),onMouseLeave:()=>ze(s=>s===t.id?null:s),children:G(st,{gap:4,w:"100%",style:{alignItems:l?"flex-end":"flex-start"},children:[G(st,{className:"ai-chat-bubble",children:[G(xe,{className:"ai-chat-header",children:[m(xe,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:l?A.get(b.userLabel):A.get(b.assistantLabel)}),"\xA0",m(xe,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),t.role==="assistant"?m(Vo,{remarkPlugins:[Jo],children:t.content}):m(xe,{size:"sm",miw:"100px",children:t.content})]}),t.attachments&&t.attachments.length>0&&G(st,{gap:"xs",style:{maxWidth:"min(400px, 100%)"},children:[t.attachments.filter(s=>s.mediaType==="image"||!s.mediaType&&s.type.startsWith("image/")).length>0&&m(Me,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:t.attachments.filter(s=>s.mediaType==="image"||!s.mediaType&&s.type.startsWith("image/")).map(s=>m("button",{type:"button",className:"thumb",style:{backgroundImage:s.objectUrl?`url(${s.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>Ta(s.objectUrl,s.name),disabled:!s.objectUrl,title:s.name||A.get("View image"),"aria-label":s.name||A.get("View image"),children:!s.objectUrl&&m(xe,{size:"xs",c:"dimmed",children:A.get("Image no longer available")})},s.id))}),t.attachments.filter(s=>s.mediaType==="audio"||!s.mediaType&&s.type.startsWith("audio/")).map(s=>m(Lo,{p:"sm",style:{backgroundColor:"var(--ai-kit-chat-surface-subtle)",borderRadius:"var(--ai-kit-radius-sm)",border:"1px solid var(--ai-kit-chat-border-color)"},children:s.objectUrl?G(st,{gap:"xs",children:[m("audio",{className:"ai-kit-audio-player",controls:!0,src:s.objectUrl,preload:"metadata"}),s.duration&&G(xe,{size:"xs",c:"dimmed",style:{textAlign:"right"},children:[Math.round(s.duration),"s"]})]}):m(xe,{size:"xs",c:"dimmed",children:A.get("Audio no longer available")})},s.id))]}),k&&G(Me,{justify:"flex-end",gap:"xs",children:[m(xe,{size:"xs",c:"dimmed",children:m("em",{children:A.get(b.notSentLabel)})}),It===t.id&&m(Wn,{size:"sm",variant:"subtle",onClick:()=>ir(t),title:A.get(b.editLabel),"aria-label":A.get(b.editLabel),"data-ai-kit-edit-button":!0,children:m(Oo,{size:14})})]}),t.citations&&t.citations.length>0&&G(st,{className:"ai-citations",children:[m(xe,{fw:"bold",size:"sm",mb:"xs",children:A.get(b.referencesLabel)}),m(Fn,{spacing:"xs",size:"sm",children:t.citations.map((s,z)=>{let v=s.sourceUrl||s.url,B=s.title||v||`${A.get(b.referenceLabel)} #${z+1}`;return G(Fn.Item,{children:[v?m(xo,{href:v,target:"_blank",rel:"noreferrer",children:B}):m(xe,{children:B}),s.snippet?m(xe,{size:"xs",c:"dimmed",mt:4,children:s.snippet}):null]},z)})})]}),t.role==="assistant"&&G(Me,{className:"ai-feedback",gap:"xs",children:[m(it,{className:t.feedback==="accepted"?"active":void 0,onClick:()=>$a(t.id,"accepted"),"aria-label":A.get(b.acceptResponseLabel),disabled:L.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),m(it,{type:"button",className:t.feedback==="rejected"?"active":void 0,onClick:()=>$a(t.id,"rejected"),"aria-label":A.get(b.rejectResponseLabel),disabled:L.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},t.id)}),lr&&m(Me,{justify:"flex-start",className:"ai-chat-row assistant status",children:G(st,{className:"ai-chat-bubble typing",children:[oe?m(xe,{size:"sm",c:"dimmed",children:m("em",{children:oe})}):null,G("div",{className:"typing-indicator",children:[m("span",{}),m("span",{}),m("span",{})]})]})})]}),ur&&m(Me,{className:"ai-status-line",children:m(xe,{className:"ai-status-text",children:m("em",{children:cr})})}),G(st,{className:"ai-box ai-box-open",children:[G(Vt,{opened:Qe,onClose:Ja,centered:!0,title:A.get("Reset conversation"),style:{zIndex:"var(--mb-z-index)",position:"fixed"},left:0,children:[m(xe,{size:"sm",children:A.get("Are you sure you want to reset the conversation?")}),G(Me,{justify:"flex-end",mt:"md",children:[m(it,{variant:"default",onClick:Ja,"data-ai-kit-no-button":!0,children:A.get("No")}),m(it,{color:"var(--ai-kit-color-danger, red)",onClick:ar,disabled:!g&&!f,"data-ai-kit-yes-button":!0,children:A.get("Yes")})]})]}),m(Me,{children:m(Mo,{className:"ai-message",ref:ot,placeholder:a,value:J,onChange:t=>{ue(t.target.value),x&&Pe()},onKeyDown:nr,rows:3,disabled:De||!!x})}),Na&&De&&G(st,{gap:"xs",mt:"xs",children:[m(xe,{size:"xs",c:"dimmed",children:m("em",{children:A.get("Recording...")})}),m("div",{style:{width:"100%",height:"4px",backgroundColor:"var(--mantine-color-gray-3)",borderRadius:"2px",overflow:"hidden"},children:m("div",{style:{width:`${jt}%`,height:"100%",backgroundColor:"var(--mantine-color-red-6)",transition:"width 0.1s ease"}})})]}),Na&&x&&!De&&G(st,{gap:"xs",mt:"xs",children:[m(xe,{size:"xs",c:"dimmed",children:G("em",{children:[A.get("Audio recorded")," (",Math.round(x.duration),"s)"]})}),m("audio",{className:"ai-kit-audio-player",controls:!0,src:x.objectUrl})]}),G(Me,{className:"ai-actions",justify:"space-between",w:"100%",children:[m(Me,{justify:"flex-start",children:m(it,{variant:"light",leftSection:m(Go,{size:18}),onClick:tr,disabled:!g&&!f,"data-ai-kit-reset-button":!0,children:A.get(b.resetLabel)})}),G(Me,{justify:"flex-end",children:[Na&&m(Yn,{children:x?m(it,{variant:"outline",leftSection:m(Ho,{size:18}),onClick:Pe,disabled:f,title:A.get("Clear audio"),"data-ai-kit-clear-audio-button":!0,children:A.get("Clear")}):m(it,{variant:"outline",leftSection:m(Bo,{size:18}),onClick:De?At:xt,disabled:f,title:De?A.get("Stop recording"):A.get("Record audio"),color:De?"red":void 0,"data-ai-kit-microphone-button":!0,children:De?A.get("Stop"):A.get("Record")})}),ft>0&&G(Yn,{children:[m(it,{variant:"outline",leftSection:m(Uo,{size:18}),onClick:()=>Be.current?.click(),disabled:Ge.length>=ft||f||De||!!x,title:A.get(b.addImageLabel),"data-ai-kit-add-image-button":!0,children:A.get(b.addLabel)}),m(Po,{ref:Be,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:Xt})]}),m(it,{leftSection:gr,variant:"filled",onClick:mr,disabled:!f&&!K,"data-ai-kit-send-button":!0,children:dr})]})]}),re.length>0&&m(Me,{className:"ai-thumbs",mt:"xs",gap:"xs",children:re.map(({url:t,title:l},k)=>m("div",{role:"button",tabIndex:0,className:"thumb",style:{backgroundImage:t?`url(${t})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",overflow:"visible"},"aria-label":l||A.get("View image"),onClick:()=>Ta(t,l),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),Ta(t,l))},children:m(it,{variant:"white",onClick:s=>{s.stopPropagation(),ea(k)},"aria-label":A.get(b.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:A.get(b.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},Ge[k]?.id??k))})]})]})}),m(Vt,{opened:!!Le,onClose:er,centered:!0,size:"auto",title:Le?.title||A.get("Image preview"),children:Le&&m("img",{src:Le.url,alt:Le.title||A.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},ai=Wt(ti,{showOpenButton:!0,variation:"modal"});import{Alert as ni,Anchor as Jn,Button as Jt,Checkbox as _n,Collapse as ri,Divider as $n,Group as St,Loader as oi,Modal as _t,MultiSelect as ii,Paper as Zn,Progress as si,Stack as Rt,Text as lt,TextInput as li,Title as ui}from"@mantine/core";import{AiKitDocSearchIcon as ci,dispatchBackend as di,resolveBackend as gi,sendSearchMessage as mi}from"@smart-cloud/ai-kit-core";import{I18n as Y}from"aws-amplify/utils";import{useCallback as ga,useEffect as ia,useMemo as ut,useRef as Ot,useState as at}from"react";import pi from"react-markdown";import hi from"rehype-raw";import fi from"remark-gfm";import{IconChevronDown as ki,IconChevronRight as bi,IconMicrophone as yi,IconMicrophoneOff as Ai,IconSearch as Qn,IconX as vi}from"@tabler/icons-react";import{Fragment as ma,jsx as w,jsxs as le}from"react/jsx-runtime";Y.putVocabularies(Gt);var Xn=!1;function wi(e){let n=e?.citations?.docs??[],d=e?.citations?.chunks??[],i=new Map;for(let r of n)i.set(r.docId,{doc:r,chunks:[]});for(let r of d){let u=i.get(r.docId);u?u.chunks.push(r):i.set(r.docId,{doc:{docId:r.docId},chunks:[r]})}return Array.from(i.values())}function Wa(e){return!!e&&/[\p{L}\p{N}_]/u.test(e)}function Ti(e,n){let d=e.length;if(n<=0)return 0;if(n>=d)return d;let i=e[n-1]??"",r=e[n]??"";if(Wa(i)&&Wa(r)){let u=n;for(;u<d&&Wa(e[u]??"");)u++;return u}return n}function Si(e){let n=globalThis?.CSS?.escape;return typeof n=="function"?n(e):e.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}var Ri=e=>{let{autoRun:n=!0,context:d,title:i,showOpenButton:r=!1,openButtonTitle:u,showOpenButtonTitle:T=!0,openButtonIcon:E,showOpenButtonIcon:se=!0,searchButtonIcon:Q,showSearchButtonTitle:$=!0,showSearchButtonIcon:X=!0,showSources:Ne=!0,topK:te=10,getSearchText:C,enableUserFilters:c=!1,availableCategories:I,availableTags:ge,variation:H,rootElement:V,colorMode:me,language:b,onClose:L,onClickDoc:J}=e,[ue,Ge]=at(!r),[ye,x]=at(""),[Z,De]=at(!1),[W,jt]=at(null),[ct,_]=at(0),He=Ot(null),We=Ot([]),pe=Ot(null),Se=Ot(null),[Re,Fe]=at(!1),[ce,Ze]=at([]),[Qe,dt]=at([]),[Ae,U]=at([]),[ee,Xe]=at(""),[N,nt]=at(null),[he,zt]=at(!1),Le=Ot(null),qe=Ot(null),gt=1440*60*1e3,{busy:de,error:Ee,statusEvent:$t,result:y,run:Ct,cancel:et,reset:mt}=aa(),ve=Ot(!1),pt=Ot([]),Ve=y?.sessionId,Je=y?.citations?.docs??[],rt=y?.citations?.chunks??[],It=y?.citations?.anchors??[],ze=y?.result??"",Be=ut(()=>{if(X)return Q?.trim()?w("img",{src:Q,alt:"",style:{width:18,height:18,objectFit:"contain"}}):w(Qn,{size:18})},[Q,X]),ot=ut(()=>(b&&Y.setLanguage(b||"en"),Y.get(i||"Search with AI-Kit")),[b]),Ke=ut(()=>$t?Y.get("Searching\u2026"):null,[b,$t]),Ue=ut(()=>ye||C,[ye,C]),ae=ut(()=>{if(de||!ue)return!1;let g=typeof Ue=="function"?Ue():Ue;return!!(g&&g.trim().length>0||W)},[Ue,de,W,ue]),S=ut(()=>{if(!N)return!1;let g=Object.keys(N.allowedCategories).length>0,f=N.allowedTags.length>0;return g||f},[N]),Pe=ut(()=>ce.length===0||!N?[]:ce.flatMap(g=>N.allowedCategories[g]||[]).filter((g,f,K)=>K.indexOf(g)===f),[ce,N]),xt=ga(async()=>{try{x("");let g=await navigator.mediaDevices.getUserMedia({audio:!0}),f=new MediaRecorder(g,{mimeType:"audio/webm"}),K=new AudioContext,D=K.createMediaStreamSource(g),ne=K.createAnalyser();ne.fftSize=2048,ne.smoothingTimeConstant=.8,D.connect(ne),pe.current=K,Se.current=ne;let a=new Uint8Array(ne.fftSize),h=()=>{if(!Se.current)return;Se.current.getByteTimeDomainData(a);let R=0;for(let re=0;re<a.length;re++){let oe=(a[re]-128)/128;R+=oe*oe}let M=Math.sqrt(R/a.length),P=Math.min(100,M*200);_(P),Le.current=requestAnimationFrame(h)};h(),We.current=[],f.ondataavailable=R=>{R.data.size>0&&We.current.push(R.data)},f.onstop=()=>{let R=new Blob(We.current,{type:"audio/webm"});jt(R),g.getTracks().forEach(M=>M.stop()),Le.current&&(cancelAnimationFrame(Le.current),Le.current=null),pe.current&&(pe.current.close(),pe.current=null),Se.current=null,_(0)},He.current=f,f.start(),De(!0)}catch(g){console.error("Failed to start recording:",g)}},[]),At=ga(()=>{He.current&&Z&&(He.current.stop(),De(!1))},[Z]),vt=ga(()=>{jt(null),We.current=[],_(0),qe.current=null},[]);ia(()=>()=>{Le.current&&cancelAnimationFrame(Le.current),pe.current&&pe.current.close()},[]),ia(()=>{if(!c)return;if(I||ge){nt({allowedCategories:I||{},allowedTags:ge||[]});return}(async()=>{zt(!0);try{let f=await gi();if(!f.available){console.error("Backend not available for metadata options");return}let K={feature:"prompt",source:"backend",mode:"backend-only",onDeviceAvailable:!1,backendAvailable:f.available,backendTransport:f.transport,backendApiName:f.apiName,backendBaseUrl:f.baseUrl,reason:f.reason??""},D=await di(K,d??"frontend","/kb/metadata-options","GET",null,{});nt({allowedCategories:D.allowedCategories||{},allowedTags:D.allowedTags||[]})}catch(f){console.error("Failed to load metadata options:",f)}finally{zt(!1)}})()},[c,I,ge,d]);let tt=ga(async()=>{let g;if(!W){if(g=typeof Ue=="function"?Ue():Ue,!g)return;x(g)}let f=Date.now(),K=W&&qe.current?.blob===W&&f-qe.current.uploadTimestamp<gt;W&&!K&&(qe.current={blob:W,uploadTimestamp:f}),mt(),await Ct(async({signal:D,onStatus:ne})=>await mi({sessionId:Ve,...g&&{query:g},...W&&{audio:W},topK:te,...c&&{userSelectedCategories:ce},...c&&Qe.length>0&&{userSelectedSubcategories:Qe},...c&&Ae.length>0&&{userSelectedTags:Ae}},{signal:D,onStatus:ne,context:d}))},[d,Ue,W,Ct,mt,te,Ve,c,ce,Qe,Ae]),wt=ga(async()=>{Ge(!1),mt(),r||L()},[L,mt,ve,r]);ia(()=>{!n||!ae||de||ve.current||(ve.current=!0,queueMicrotask(()=>{tt()}))},[de,ve,ae,n,tt]),ia(()=>{ae||(ve.current=!0)},[ae]),ia(()=>{let g=pt.current,f=ce;(g.length!==f.length||!f.every(D=>g.includes(D)))&&g.length>0&&mt(),pt.current=[...f]},[ce,mt]);let Zt=ut(()=>wi(y),[y]),_e=ut(()=>{let g=new Map;return Je.forEach((f,K)=>{f?.docId&&g.set(f.docId,K+1)}),g},[Je]),ht=ut(()=>{let g=new Map;return rt.forEach(f=>{f?.chunkId&&f?.docId&&g.set(f.chunkId,f.docId)}),g},[rt]),Lt=ut(()=>{if(!ze)return"";if(!It.length||_e.size===0)return ze;let g=[...It].filter(D=>Array.isArray(D?.chunkIds)&&D?.span?.end!==void 0).sort((D,ne)=>{let a=D.span?.end??0,h=ne.span?.end??0;return a-h}),f=0,K=[];for(let D of g){let ne=D.span?.end;if(typeof ne!="number"||ne<f)continue;let a=Array.from(new Set((D.chunkIds??[]).map(P=>P?ht.get(P):void 0).map(P=>P?_e.get(P):void 0).filter(P=>typeof P=="number")));if(!a.length)continue;let h=Math.min(ne,ze.length),R=Ti(ze,h);K.push(ze.slice(f,R));let M=a.map(P=>`<a href="#docsearch-source-${P}" data-docsearch-cite="${P}" style="color: inherit; text-decoration: none;">${P}</a>`).join(",");K.push(`<sup>${M}</sup>`),f=R}return K.push(ze.slice(f)),K.join("")},[It,ze,_e,ht]),$e=H==="modal"?_t.Root:St,ft=H==="modal"?_t.Content:St,Qt=H==="modal"?_t.Body:St;return ia(()=>{if(!(H!=="modal"||!ue))return document.body.style.overflow="hidden",document.body.onkeydown=g=>{g.key==="Escape"&&(g.preventDefault(),wt())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[wt,H,ue]),le(ma,{children:[r&&w(Jt,{leftSection:se&&(E?w("span",{dangerouslySetInnerHTML:{__html:E}}):w(Qn,{size:18})),className:T?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:ue,onClick:()=>Ge(!0),"data-ai-kit-open-button":!0,children:T&&Y.get(u||ot)}),ue&&le($e,{opened:!0,className:"doc-search-root",onClose:wt,padding:"md",gap:"md",size:"xl",portalProps:H==="modal"?{target:V,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":me,"data-ai-kit-variation":H,children:[H==="modal"&&w(_t.Overlay,{}),le(ft,{w:"100%",style:{left:0,...H==="modal"&&!y?.result&&{overflow:"visible"}},children:[H==="modal"&&le(_t.Header,{style:{zIndex:1e3},children:[w(ci,{className:"doc-search-title-icon"}),w(_t.Title,{children:Y.get(ot)}),w(_t.CloseButton,{})]}),w(Qt,{w:"100%",style:{zIndex:1001,...H==="modal"&&!y?.result&&{overflow:"visible"}},children:w(na,{enabled:H!=="modal",working:de,variation:H,children:w(Zn,{shadow:"sm",radius:"md",p:"md",children:le(Rt,{gap:"sm",children:[H!=="modal"&&le(St,{justify:"space-between",children:[w(ui,{order:4,style:{margin:0},children:Y.get(ot)}),r&&w(Jt,{variant:"subtle",color:"gray",size:"xs",onClick:wt,style:{minWidth:32,padding:0,display:"flex",alignItems:"center",justifyContent:"center"},"aria-label":Y.get("Close"),children:w(vi,{size:18,style:{color:me==="dark"?"var(--mantine-color-dark-1)":"var(--mantine-color-gray-7)"}})})]}),le(St,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[w(li,{style:{flex:1},value:ye,onChange:g=>{x(g.currentTarget.value),W&&vt()},placeholder:W?Y.get("Audio recorded"):Y.get("Search the documentation\u2026"),disabled:de||Z||!!W,onKeyDown:g=>{g.key==="Enter"&&ae&&(g.preventDefault(),tt())}}),Xn&&w(ma,{children:W?w(Jt,{variant:"outline",size:"sm",color:"red",onClick:vt,disabled:de,title:Y.get("Clear audio"),children:w(Ai,{size:18})}):w(Jt,{variant:Z?"filled":"outline",size:"sm",color:Z?"red":"gray",onClick:Z?At:xt,disabled:de,title:Z?Y.get("Stop recording"):Y.get("Record audio"),style:Z?{transform:`scale(${1+ct/300})`,transition:"transform 0.1s ease-out"}:void 0,children:w(yi,{size:18})})}),w(Jt,{variant:"filled",size:"sm",leftSection:Be,onClick:()=>{tt()},disabled:!ae,className:$?"doc-search-button":"doc-search-button-no-title",children:$?Y.get("Search"):null}),de?w(Jt,{variant:"outline",size:"sm",onClick:et,children:Y.get("Stop")}):null]}),!de&&!Ee&&!y?.result?w(lt,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:Y.get("Enter a search query to start.")}):null,c&&N&&S&&le(Rt,{gap:"xs",children:[w(Jt,{variant:"subtle",size:"xs",onClick:()=>Fe(!Re),leftSection:Re?w(ki,{size:14}):w(bi,{size:14}),style:{alignSelf:"flex-start"},children:Y.get("Filters")}),w(ri,{in:Re,children:le(Rt,{gap:"md",children:[Object.keys(N.allowedCategories).length>0&&le("div",{children:[w(lt,{size:"sm",fw:500,mb:"xs",children:Y.get("Categories")}),w(St,{gap:"md",children:Object.keys(N.allowedCategories).map(g=>w(_n,{label:Y.get(g),checked:ce.includes(g),onChange:f=>{if(f.currentTarget.checked)Ze([...ce,g]);else{Ze(ce.filter(D=>D!==g));let K=N.allowedCategories[g]||[];dt(Qe.filter(D=>!K.includes(D)))}},disabled:de||he},g))})]}),Pe.length>0&&le("div",{children:[w(lt,{size:"sm",fw:500,mb:"xs",children:Y.get("Subcategories")}),w(St,{gap:"md",children:Pe.map(g=>w(_n,{label:Y.get(g),checked:Qe.includes(g),onChange:f=>{f.currentTarget.checked?dt([...Qe,g]):dt(Qe.filter(K=>K!==g))},disabled:de||he},g))})]}),N.allowedTags.length>0&&w(ii,{label:Y.get("Tags"),placeholder:Y.get("Select or type tags..."),data:N.allowedTags.map(g=>({value:g,label:Y.get(g)})),value:Ae,onChange:U,searchValue:ee,onSearchChange:Xe,disabled:de||he,searchable:!0,clearable:!0,maxDropdownHeight:200,limit:20})]})})]}),Xn&&le(ma,{children:[Z&&le(Rt,{gap:"xs",children:[le(lt,{size:"xs",c:"dimmed",children:[Y.get("Recording...")," \u{1F3A4}"]}),w(si,{value:ct,size:"sm",color:"red",animated:!0,striped:!0})]}),W&&!Z&&le(Rt,{gap:"xs",children:[w(lt,{size:"xs",c:"dimmed",children:Y.get("Recorded audio:")}),w("audio",{controls:!0,src:URL.createObjectURL(W),className:"ai-kit-audio-player"})]})]}),Ee?w(ni,{color:"red",title:Y.get("Error"),children:Ee}):null,de&&Ke&&w(na,{enabled:H==="modal",working:!0,variation:H,children:le(St,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[w(oi,{size:"sm"}),w(lt,{size:"sm",c:"dimmed",children:Ke})]})}),y?.result?le(ma,{children:[w($n,{}),le(Rt,{gap:"xs","data-doc-search-result":!0,children:[w(lt,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:Y.get("AI Summary")}),w(pi,{remarkPlugins:[fi],rehypePlugins:[hi],components:{a:({href:g,children:f,...K})=>{let D=typeof g=="string"&&g.startsWith("#docsearch-source-");return w("a",{href:g,...K,onClick:ne=>{if(!D)return;ne.preventDefault();let a=g.slice(1),h=`#${Si(a)}`;(V??document).querySelector?.(h)?.scrollIntoView({block:"start",behavior:"smooth"})},children:f})}},"data-doc-search-result-content":!0,children:Lt||ze})]})]}):null,Ne&&(y?.citations?.docs?.length||y?.citations?.chunks?.length)?le(ma,{children:[w($n,{}),le(Rt,{gap:"sm","data-doc-search-sources":!0,children:[w(lt,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:Y.get("Sources")}),Zt.map(({doc:g})=>{let f=g.sourceUrl?.trim()||void 0,K=g.docId?_e.get(g.docId):void 0,D=g.title?.trim()||g.docId,ne=le(lt,{fw:600,style:{display:"inline"},children:[K?`${K}. `:"",D]});return w(Zn,{withBorder:!0,radius:"md",p:"sm",id:K?`docsearch-source-${K}`:void 0,style:{wordBreak:"break-word"},children:w(Rt,{gap:"xs",children:w(St,{justify:"space-between",align:"flex-start",children:le(Rt,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[f?w(Jn,{href:f,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:a=>{J&&(a.preventDefault(),J?.(g))},"data-doc-search-source-title":!0,children:ne}):ne,w(Jn,{href:f,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:a=>{J&&(a.preventDefault(),J?.(g))},"data-doc-search-source-url":!0,children:g.sourceUrl}),g.author?w(lt,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:g.author}):null,g.description?w(lt,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:g.description}):null]})})})},g.docId)})]})]}):null,w(ha,{variation:H})]})})})})]})]})]})},zi=Wt(Ri);export{ai as AiChatbot,wo as AiFeature,Ha as DEFAULT_CHATBOT_LABELS,zi as DocSearch,Sn as isBackendConfigured,La as markdownToHtml,Mt as readDefaultOutputLanguage,sa as stripCodeFence,Gt as translations,aa as useAiRun,Wt as withAiKitShell};
31
+ Follow these additional instructions: ${he}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),P=await R.run(async({signal:O,onStatus:ie})=>(await Bn({messages:M,images:[nt],outputLanguage:"en",responseConstraint:bo},{signal:O,onStatus:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r})).result);if(!P){ee("");return}let re=(y&&y!=="auto"?y:null)||Mt(),oe=sa(P).trim();try{pe("Translating result...");let O=await R.run(async({signal:ie})=>await yo(oe,re,{signal:ie,context:I,modeOverride:a,onDeviceTimeoutOverride:r,silent:!0}));ee(O)}catch(O){ee(oe),console.warn("AI Kit: failed to parse SEO JSON",O)}break}}}catch(S){Ae(S instanceof Error?S.message:o.get("An unknown error occurred."))}pe(void 0)},[J,R,he,et,y,Xe,ve,I,c,Ve,gt,ae,He]),vt=bt(async()=>{await At("backend-only")},[At]),tt=bt(a=>{switch(c){case"proofread":return p(lo,{className:a});case"translate":return p(uo,{className:a});case"summarize":return p(mo,{className:a});case"rewrite":case"write":return p(co,{className:a});case"generateImageMetadata":case"generatePostMetadata":return p(go,{className:a});default:return p(Xr,{mode:c,className:a})}},[c]),wt=bt(()=>{switch(c){case"proofread":return R.lastSource?o.get("Proofread again"):o.get("Proofread");case"translate":return R.lastSource?o.get("Translate again"):o.get("Translate");case"rewrite":return R.lastSource?o.get("Rewrite again"):o.get("Rewrite");case"summarize":return R.lastSource?o.get("Summarize again"):o.get("Summarize");default:return R.lastSource?o.get("Regenerate"):o.get("Generate")}},[W,R.lastSource,c]),Zt=bt(()=>{switch(c){case"proofread":return o.get("Proofread on Backend");case"translate":return o.get("Translate on Backend");case"rewrite":return o.get("Rewrite on Backend");case"summarize":return o.get("Summarize on Backend");default:return o.get("Regenerate on Backend")}},[W,c]),_e=bt(async()=>{Re(!1),ee(null),Ae(null),ze.current=!1,R.reset(),E||me()},[me,ze,R,E]),ht=bt(async()=>{R.busy&&R.cancel()},[R.busy]);ua(()=>{!Se||!d||!ae||R.busy||U||ze.current||(ze.current=!0,queueMicrotask(()=>{At(ge)}))},[R.busy,ze,Se,ae,d,U,At,ge]),ua(()=>{He&&c!=="proofread"&&(ae||(ce(!0),ze.current=!0))},[He,ae,c]),ua(()=>{let a=!0;return(async()=>{try{await ro();let h=await Sn();a&&Qe(h)}catch(h){console.error(h),a&&Qe(!1)}})(),()=>{a=!1}},[]),ua(()=>{ye&&(De("auto"),Ct(ye),qe(void 0))},[ye]);let Lt=Bt(()=>{let a=[];if(c==="translate"){let h=da.find(S=>S.value===gt)?.label;a.push(o.get("Input language")+": "+(h?o.get(h):"auto"))}if(y&&_?.outputLanguage){let h=da.find(S=>S.value===y)?.label;a.push(o.get("Output language")+": "+(h?o.get(h):y))}return c==="summarize"&&Ve&&_?.type&&a.push(o.get("Type")+": "+o.get(Ve)),(c==="write"||c==="rewrite")&&ve&&_?.tone&&a.push(o.get("Tone")+": "+o.get(ve)),(c==="write"||c==="rewrite"||c==="summarize")&&et&&_?.length&&a.push(o.get("Length")+": "+o.get(et)),he?.trim()&&_?.instructions&&a.push(o.get("Instructions")+": \u2713"),a.length?a.join(" \u2022 "):o.get("No overrides")},[W,c,gt,y,Ve,ve,et,he]),$e={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},ft=u==="modal"?qt.Root:kt,Qt=u==="modal"?qt.Content:kt,g=u==="modal"?qt.Body:kt,f=C==="collapse"?Jr:Kt,K=C==="horizontal"?kt:Kt,D=Bt(()=>Be.find(a=>a.value===jt)??Be[0],[jt,Be]),ne=bt((a="sm")=>p(Yt,{allowDeselect:!1,"aria-label":o.get("Interface language"),checkIconPosition:"right",className:"ai-feature-language-selector",data:Be.map(h=>({value:h.value,label:""})),leftSection:D?.countryCode?p(jn,{countryCode:D.countryCode,size:18}):null,onChange:h=>{let S=Ea(h);S&&x(S)},renderOption:({option:h})=>{let S=Be.find(M=>M.value===h.value);return S?fe(kt,{gap:"xs",wrap:"nowrap",children:[S.countryCode?p(jn,{countryCode:S.countryCode,size:18}):null,p("span",{children:o.get(S.label)})]}):h.label},rightSection:null,searchable:!1,size:a,styles:{dropdown:{minWidth:220},input:{backgroundColor:"transparent",border:0,boxShadow:"none",color:"inherit",fontSize:18,lineHeight:1,minHeight:a==="sm"?36:28,paddingInlineStart:0,paddingInlineEnd:0,backgroundImage:"none",width:a==="sm"?44:36},option:{color:"inherit"},section:{color:"inherit",alignItems:"center",display:"flex",height:"100%",insetInlineStart:0,justifyContent:"center",pointerEvents:"none",width:"100%"}},value:D?.value||null,w:a==="sm"?44:36}),[R.busy,D?.countryCode,D?.value,x,Be]);return ua(()=>{if(!(u!=="modal"||!Se))return document.body.style.overflow="hidden",document.body.onkeydown=a=>{a.key==="Escape"&&(a.preventDefault(),_e())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[_e,u]),fe(ca,{children:[E&&p(Ft,{leftSection:Q&&(X?p("span",{dangerouslySetInnerHTML:{__html:X}}):tt()),className:se?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:Se,onClick:()=>Re(!0),"data-ai-kit-open-button":!0,children:se&&o.get($||ot)}),Se&&fe(ft,{opened:!0,className:"ai-feature-root",onClose:_e,padding:"md",gap:"md",size:"md",portalProps:u==="modal"?{target:Ge,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":H,"data-ai-kit-variation":u,children:[u==="modal"&&p(qt.Overlay,{}),fe(Qt,{w:"100%",dir:ct,style:{left:0},children:[u==="modal"&&fe(qt.Header,{dir:ct,style:{zIndex:1e3},children:[tt("ai-feature-title-icon"),p(qt.Title,{children:o.get(ot)}),p("div",{style:{display:"flex",flex:1,justifyContent:"flex-start",marginRight:8},children:ne("xs")}),p(qt.CloseButton,{})]}),p(g,{w:"100%",style:{zIndex:1001},children:fe(na,{enabled:u!=="modal",working:R.busy,variation:u,children:[fe(Kt,{gap:"sm",mb:"sm",p:"sm",dir:ct,children:[u!=="modal"&&p(kt,{justify:"flex-end",children:ne()}),dt&&p(Ma,{color:"red",children:o.get(dt)}),He&&c!=="proofread"&&fe(Zr,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":C,children:[fe(kt,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:C==="collapse"?()=>ce(a=>!a):void 0,children:[C==="collapse"&&fe(Kt,{gap:0,children:[p(En,{size:"sm",fw:600,style:{lineHeight:1.1},children:o.get("Options")}),p(En,{size:"xs",c:"dimmed",style:{marginTop:2},children:Lt})]}),C==="collapse"&&p(Ft,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:a=>{a.stopPropagation(),ce(h=>!h)},children:Fe?o.get("Hide"):o.get("Show")})]}),fe(f,{in:Fe,children:[C==="collapse"&&p(_r,{my:"sm"}),fe(K,{gap:"xs",justify:"space-between",children:[c==="write"&&_?.text&&p(Et,{label:o.get("The topic or subject for the AI to write about."),disabled:C!=="horizontal",position:"top",children:p(Dt,{size:"xs",className:"ai-feature-option",styles:$e,disabled:R.busy,label:o.get("Topic"),description:C!=="horizontal"?o.get("The topic or subject for the AI to write about."):void 0,value:Xe||"",onChange:a=>{let h=a.target.value;N(h),L?.({text:h})}})}),(c==="write"||c==="rewrite"||c==="generateImageMetadata"||c==="generatePostMetadata")&&_?.instructions&&p(Et,{label:o.get("Additional instructions to guide the AI."),disabled:C!=="horizontal",position:"top",children:p(Dt,{disabled:R.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Instructions"),description:C!=="horizontal"?o.get("Additional instructions to guide the AI."):void 0,value:he||"",onChange:a=>{let h=a.target.value;zt(h),L?.({instructions:h})}})}),c==="translate"&&p(Et,{label:o.get("The language of the input text."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:R.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.get("Input language"),description:C!=="horizontal"?o.get("The language of the input text."):void 0,data:[{value:"auto",label:o.get("Auto-detect")},...da.map(a=>({value:a.value,label:o.get(a.label)})).sort((a,h)=>a.label.localeCompare(h.label))],value:gt||"auto",onChange:a=>{let h=a;de(h),qe(void 0),L?.({inputLanguage:h})}})}),_?.outputLanguage&&p(Et,{label:o.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:R.busy,size:"xs",styles:$e,className:"ai-feature-option",label:o.get("Output language"),description:C!=="horizontal"?o.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[c==="rewrite"?{value:"auto",label:o.get("Auto-detect")}:void 0].filter(Boolean),...da.map(a=>({value:a.value,label:o.get(a.label)})).sort((a,h)=>a.label.localeCompare(h.label))],value:y||On.settings.defaultOutputLanguage||(c==="rewrite"?"auto":""),onChange:a=>{let h=a;Ct(h),qe(void 0),L?.({outputLanguage:h})}})}),c==="summarize"&&_?.type&&p(Et,{label:o.get("The summary style to generate."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:R.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Type"),description:C!=="horizontal"?o.get("The summary style to generate."):void 0,data:[{value:"headline",label:o.get("Headline")},{value:"key-points",label:o.get("Key Points")},{value:"teaser",label:o.get("Teaser")},{value:"tldr",label:o.get("TL;DR")}],value:Ve||"key-points",onChange:a=>{let h=a;Je(h),L?.({type:h})}})}),(c==="write"||c==="rewrite")&&_?.tone&&p(Et,{label:o.get("The tone or style for the AI to use."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:R.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Tone"),description:C!=="horizontal"?o.get("The tone or style for the AI to use."):void 0,data:c==="write"?[{value:"neutral",label:o.get("Neutral")},{value:"formal",label:o.get("Formal")},{value:"casual",label:o.get("Casual")}]:[{value:"as-is",label:o.get("As-Is")},{value:"more-formal",label:o.get("More formal")},{value:"more-casual",label:o.get("More casual")}],value:ve||(c==="write"?"neutral":"as-is"),onChange:a=>{let h=a;pt(h),L?.({tone:h})}})}),(c==="write"||c==="rewrite"||c==="summarize")&&_?.length&&p(Et,{label:o.get("The target output length."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:R.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Length"),description:C!=="horizontal"?o.get("The target output length."):void 0,data:c==="write"||c==="summarize"?[{value:"short",label:o.get("Short")},{value:"medium",label:o.get("Medium")},{value:"long",label:o.get("Long")}]:[{value:"as-is",label:o.get("As-Is")},{value:"shorter",label:o.get("Shorter")},{value:"longer",label:o.get("Longer")}],value:et||(c==="rewrite"?"as-is":"short"),onChange:a=>{let h=a;mt(h),L?.({length:h})}})}),c==="summarize"||c==="write"||c==="rewrite"&&_?.outputFormat&&p(Et,{label:o.get("The format for the generated output."),disabled:C!=="horizontal",position:"top",children:p(Yt,{disabled:R.busy,size:"xs",className:"ai-feature-option",styles:$e,label:o.get("Output format"),description:C!=="horizontal"?o.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:o.get("Plain Text")},{value:"markdown",label:o.get("Markdown")},{value:"html",label:o.get("HTML")}],value:Ee||"markdown",onChange:a=>{let h=a;$t(h),L?.({outputFormat:h})}})})]})]})]}),R.busy&&Pe&&p(na,{enabled:u==="modal",working:!0,variation:u,children:fe(kt,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[p($r,{size:"sm"}),p(Da.Label,{className:"ai-feature-status-text",children:Pe})]})}),U&&fe(Kt,{mt:"md",children:[c==="proofread"&&(U.corrections.length===0?p(Ma,{color:"green",children:o.get("No issues found. Your text looks great!")}):fe(ca,{children:[p("p",{style:{marginTop:0,opacity:.85},children:o.get("Hover highlights to see explanations.")}),p(Dn,{original:Xe,corrections:U.corrections}),U.correctedInput?fe(ca,{children:[p("h4",{style:{marginTop:16,marginBottom:8},children:o.get("Corrected")}),p(kt,{c:"pre",className:"ai-feature-generated-content",children:U.correctedInput})]}):null]})),c==="generateImageMetadata"&&fe(ca,{children:[p(Dt,{readOnly:!i,label:o.get("Alt Text"),description:o.get("The alt text for the image."),value:U.alt_text||"",onChange:a=>ee({...U,alt_text:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Title"),description:o.get("The title for the image."),value:U.title||"",onChange:a=>ee({...U,title:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Caption"),description:o.get("The caption for the image."),value:U.caption||"",onChange:a=>ee({...U,caption:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Description"),description:o.get("The description for the image."),value:U.description||"",onChange:a=>ee({...U,description:a.target.value})})]}),c==="generatePostMetadata"&&fe(ca,{children:[p(Dt,{readOnly:!i,label:o.get("Title"),description:o.get("The title for the post."),value:U.title||"",onChange:a=>ee({...U,title:a.target.value})}),p(Dt,{readOnly:!i,label:o.get("Excerpt"),description:o.get("The excerpt for the post."),value:U.excerpt||"",onChange:a=>ee({...U,excerpt:a.target.value})})]}),c!=="proofread"&&c!=="generateImageMetadata"&&c!=="generatePostMetadata"&&typeof U=="string"&&p(Nn,{contentLanguage:rt,value:U,editable:!!i,onChange:a=>{ee(a)}})]}),U===""&&p(Nn,{contentLanguage:rt,value:U,editable:!1})]}),fe(kt,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[R.busy&&p(Ft,{variant:"outline",size:"sm",onClick:ht,"data-ai-kit-cancel-button":!0,children:o.get("Cancel")}),!R.busy&&p(Ft,{variant:"filled",size:"sm",disabled:!ae,onClick:()=>At(),"data-ai-kit-generate-button":!0,children:wt()}),!R.busy&&R.lastSource==="on-device"&&Ze&&Ne&&p(Ft,{variant:"filled",size:"sm",disabled:!ae,onClick:vt,"data-ai-kit-regenerate-on-backend-button":!0,children:Zt()}),!R.busy&&b&&p(Ft,{variant:"outline",size:"sm",disabled:!U||c==="proofread"&&U.corrections.length===0,onClick:async()=>{b(Ee==="html"?await La(U):U),_e()},"data-ai-kit-accept-button":!0,children:o.get(te)}),p(Ft,{variant:"default",size:"sm",onClick:_e,"data-ai-kit-close-button":!0,children:o.get("Close")})]}),p(ha,{variation:u})]})})]})]})]})};function Nn(e){let{contentLanguage:n,value:d,editable:i,onChange:r}=e,u=Hn(n)?"rtl":"ltr",T=u==="rtl"?"right":"left";return i?fe(Kt,{p:0,gap:"sm",dir:u,style:{textAlign:T},children:[p(Da.Label,{children:o.get("Generated content")}),p(Qr,{value:d,onChange:E=>r?.(E.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor",styles:{input:{direction:u,textAlign:T}}}),p(Da.Label,{children:o.get("Preview")}),p(Kt,{className:"ai-feature-generated-content ai-feature-preview",dir:u,style:{textAlign:T},children:p(Kn,{remarkPlugins:[Un],children:d})})]}):p(Kt,{className:"ai-feature-generated-content",dir:u,style:{textAlign:T},children:d?p(Kn,{remarkPlugins:[Un],children:d}):p(Ma,{color:"yellow",children:o.get("No content generated.")})})}var wo=Wt(vo);import{ActionIcon as Wn,Anchor as xo,Box as Lo,Button as it,Group as Me,Input as Po,List as Fn,Modal as Vt,Stack as st,Text as xe,Textarea as Mo}from"@mantine/core";import{IconMaximize as Do,IconMessage as Eo,IconMicrophone as Bo,IconMinimize as Ko,IconPaperclip as Uo,IconPencil as Oo,IconPlayerStop as jo,IconSend as No,IconTrash as Go,IconX as Ho}from"@tabler/icons-react";import{getStoreSelect as Wo,sendChatMessage as Fo,sendFeedbackMessage as qo}from"@smart-cloud/ai-kit-core";import{useSelect as Yo}from"@wordpress/data";import{I18n as A}from"aws-amplify/utils";import{useCallback as q,useEffect as ke,useMemo as Te,useRef as Ce,useState as be}from"react";import Vo from"react-markdown";import Jo from"remark-gfm";var To="ai-kit-chatbot-attachments",yt="attachments";var Ba=null;function So(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function ya(){if(!So())return null;Ba||(Ba=new Promise(e=>{try{let n=window.indexedDB.open(To,1);n.onerror=()=>e(null),n.onblocked=()=>e(null),n.onupgradeneeded=()=>{let d=n.result;d.objectStoreNames.contains(yt)||d.createObjectStore(yt,{keyPath:"id"})},n.onsuccess=()=>e(n.result)}catch(n){console.warn("[AiChatbot] IndexedDB is not available",n),e(null)}}));try{return await Ba}catch(e){return console.warn("[AiChatbot] Failed to open attachment store",e),null}}async function Ka(e,n){let d=await ya();return d?new Promise((i,r)=>{try{let u=d.transaction(yt,e),T=u.objectStore(yt),E=n(T);u.oncomplete=()=>i(E),u.onerror=()=>r(u.error),u.onabort=()=>r(u.error)}catch(u){r(u)}}).catch(i=>(console.warn("[AiChatbot] Attachment store transaction failed",i),null)):null}async function Ua(e,n,d){await Io();let i={id:e,blob:n,name:d.name,type:d.type,size:d.size,createdAt:Date.now()};return await Ka("readwrite",u=>(u.put(i),e))}async function Oa(e){let n=await ya();return n?new Promise((d,i)=>{try{let r=n.transaction(yt,"readonly"),u=r.objectStore(yt).get(e);u.onsuccess=()=>{let T=u.result;d(T??null)},u.onerror=()=>i(u.error),r.onabort=()=>i(r.error)}catch(r){i(r)}}).catch(d=>(console.warn("[AiChatbot] Failed to load attachment",d),null)):null}async function Ro(e){await Ka("readwrite",n=>{n.delete(e)})}async function Aa(){await Ka("readwrite",e=>{e.clear()})}async function ja(e){let n=await ya();n&&await new Promise((d,i)=>{try{let r=n.transaction(yt,"readwrite"),u=r.objectStore(yt),T=u.getAllKeys();T.onsuccess=()=>{let E=T.result;for(let se of E){let Q=String(se);e.has(Q)||u.delete(se)}},T.onerror=()=>i(T.error),r.oncomplete=()=>d(),r.onerror=()=>i(r.error),r.onabort=()=>i(r.error)}catch(r){i(r)}}).catch(d=>{console.warn("[AiChatbot] Failed to cleanup attachments",d)})}var zo=50*1024*1024;async function Co(){let e=await ya();return e?new Promise((n,d)=>{try{let i=e.transaction(yt,"readonly"),r=i.objectStore(yt).getAll();r.onsuccess=()=>{let u=r.result||[];n(u)},r.onerror=()=>d(r.error),i.onerror=()=>d(i.error),i.onabort=()=>d(i.error)}catch(i){d(i)}}).catch(n=>(console.warn("[AiChatbot] Failed to get all attachments",n),[])):[]}async function Io(){let e=await Co();if(e.length===0)return;let n=e.sort((u,T)=>u.createdAt-T.createdAt),d=n.reduce((u,T)=>u+T.size,0),i=[],r=0;for(;d>zo&&r<n.length;){let u=n[r];u&&(i.push(u.id),d-=u.size),r++}for(let u of i)await Ro(u);i.length>0&&console.log(`[AiChatbot] Deleted ${i.length} old attachment(s) to enforce storage quota`)}import{Fragment as Yn,jsx as m,jsxs as G}from"react/jsx-runtime";A.putVocabularies(Gt);var va=1440*60*1e3,Na=!1,_o=1,$o="localstorage",ra=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,Ha={modalTitle:"AI Assistant",userLabel:"User",assistantLabel:"Assistant",assistantThinkingLabel:"Assistant is thinking...",askMeLabel:"Ask me",sendLabel:"Send",cancelLabel:"Cancel",resetLabel:"Reset",confirmLabel:"Confirm",clickAgainToConfirmLabel:"Click again to confirm",notSentLabel:"Not sent",editLabel:"Edit",readyLabel:"Ready.",readyEmptyLabel:"I'm ready to assist you.",addLabel:"Add",addImageLabel:"Add image",removeImageLabel:"Remove image",closeChatLabel:"Close chat",maximizeLabel:"Maximize",restoreSizeLabel:"Restore size",referencesLabel:"References",referenceLabel:"Reference",acceptResponseLabel:"Accept response",rejectResponseLabel:"Reject response",placeholder:"Ask anything\u2026",emptyResponseLabel:"Empty response",unexpectedErrorLabel:"Unexpected error"};function Ut(e){return`${e}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var Zo=4,Qo=5*1024*1024,Xo=e=>{let n=(e?.name||"").toString(),d=(e?.code||"").toString(),i=(e?.message||"").toString();return n==="AbortError"||d==="ABORT_ERR"||/abort|aborted|cancel/i.test(i)},ei=(e,n)=>{if(!e)return null;let d=e.step,i=A.get((e.message??"").trim()),r=typeof e.progress=="number"?e.progress:null,u=r==null?null:Math.round(r*100);switch(d){case"decide":return i||A.get("Checking capabilities...");case"on-device:init":return i||A.get("Initializing on-device AI...");case"on-device:download":return u==null?i||A.get("Downloading model..."):i||`${A.get("Downloading model...")} ${u}%`;case"on-device:ready":return i||A.get("On-device model ready...");case"on-device:run":return i||A.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return A.get(n.assistantThinkingLabel??Ha.assistantThinkingLabel);case"done":return i||A.get("Done.");case"error":return i||A.get("An error occurred.");default:return i||null}};function Ga(e){if(typeof window>"u")return null;try{return e==="localstorage"?window.localStorage:e==="sessionstorage"?window.sessionStorage:null}catch{return null}}var oa=e=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(e)}catch{return null}},wa=e=>{if(e&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(e)}catch{}},Vn=e=>{!e||e.length===0||e.forEach(n=>wa(n.objectUrl))},qn=e=>{e.forEach(n=>Vn(n.attachments))},ti=e=>{let{rootElement:n,store:d,previewMode:i,title:r,openButtonTitle:u,openButtonIcon:T,showOpenButtonTitle:E=!0,showOpenButtonIcon:se=!0,colorMode:Q,language:$,onClose:X,context:Ne,placeholder:te,maxImages:C,maxImageBytes:c,historyStorage:I=$o,emptyHistoryAfterDays:ge=_o,labels:H,openButtonIconLayout:V="top",openButtonPosition:me="bottom-right"}=e,b=Te(()=>({...Ha,...H||{}}),[H]),L=aa(),[J,ue]=be(""),[Ge,ye]=be([]),[x,Z]=be(null),[De,W]=be(!1),[jt,ct]=be(0),_=Ce(null),He=Ce([]),We=Ce(null),pe=Ce(null),Se=Ce(null),[Re,Fe]=be([]),[ce,Ze]=be(null),[Qe,dt]=be(!1),[Ae,U]=be(!1),[ee,Xe]=be(!1),[N,nt]=be(!1),[he,zt]=be(!0),[Le,qe]=be(null),[gt,de]=be(!1),[Ee,$t]=be(null),[y,Ct]=be(null),[et,mt]=be(!1),[ve,pt]=be(null),Ve=Ce(ve);ke(()=>{Ve.current=ve},[ve]);let Je=Ce(null),rt=Ce(!1),[It,ze]=be(null),Be=Ce(null),ot=Ce(null),Ke=Ce(null),Ue=Ce(null),ae=q(t=>{t.forEach(l=>wa(l.objectUrl))},[]),R=q(()=>{ae(ht.current),ye([]),Be.current&&(Be.current.value="")},[ae]),Pe=q(()=>{Lt.current&&wa(Lt.current.objectUrl),Z(null),He.current=[],ct(0)},[]),xt=q(async()=>{try{ue(""),Pe();let t=await navigator.mediaDevices.getUserMedia({audio:!0}),l=new MediaRecorder(t,{mimeType:"audio/webm"}),k=new AudioContext,s=k.createMediaStreamSource(t),z=k.createAnalyser();z.fftSize=2048,z.smoothingTimeConstant=.8,s.connect(z),We.current=k,pe.current=z;let v=new Uint8Array(z.fftSize),B=()=>{if(!pe.current)return;pe.current.getByteTimeDomainData(v);let F=0;for(let Ye=0;Ye<v.length;Ye++){let Nt=(v[Ye]-128)/128;F+=Nt*Nt}let Ie=Math.sqrt(F/v.length),je=Math.min(100,Ie*200);ct(je),Se.current=requestAnimationFrame(B)};B(),He.current=[];let j=Date.now();l.ondataavailable=F=>{F.data.size>0&&He.current.push(F.data)},l.onstop=()=>{let F=new Blob(He.current,{type:"audio/webm"}),Ie=(Date.now()-j)/1e3,je=oa(F);je&&Z({id:Ut("composer-audio"),blob:F,objectUrl:je,duration:Ie}),t.getTracks().forEach(Ye=>Ye.stop()),Se.current&&(cancelAnimationFrame(Se.current),Se.current=null),We.current&&(We.current.close(),We.current=null),pe.current=null,ct(0)},_.current=l,l.start(),W(!0)}catch(t){console.error("Failed to start recording:",t)}},[Pe]),At=q(()=>{_.current&&De&&(_.current.stop(),W(!1))},[De]);ke(()=>()=>{Se.current&&cancelAnimationFrame(Se.current),We.current&&We.current.close(),Pe()},[Pe]);let[vt,tt]=be(null),wt=Ce(J),Zt=Ce(Re),_e=Ce(vt),ht=Ce(Ge),Lt=Ce(x);ke(()=>{wt.current=J},[J]),ke(()=>{ht.current=Ge},[Ge]),ke(()=>{Lt.current=x},[x]),ke(()=>{Zt.current=Re},[Re]),ke(()=>{_e.current=vt},[vt]),ke(()=>{$&&A.setLanguage($||"en")},[$]);let $e=Yo(()=>Wo(d).isShowChatbotPreview()),ft=Te(()=>Math.max(0,C??Zo),[C]),Qt=Te(()=>Math.max(0,c??Qo),[c]),g=Re.length>0,f=Te(()=>L.busy&&ve==="chat",[L.busy,ve]),K=Te(()=>f?!1:J.trim().length>0||x!==null,[J,f,x]),D=Te(()=>{let t=u||b.askMeLabel;return A.get(t)},[u,b.askMeLabel,$]),ne=Te(()=>{let t=r||b.modalTitle;return A.get(t)},[r,b.modalTitle,$]),a=Te(()=>{let t=te||b.placeholder;return A.get(t)},[te,b.placeholder,$]),h=Te(()=>{let t="ai-docs-ask",l=`ai-open-btn--${me}`;return`${t} ${l}`},[me]),S=q(()=>{let t=Ue.current;if(t)try{let l=window.innerHeight||document.documentElement.clientHeight,k=360,s=1e3,z=Math.floor(l*.8),v=Math.max(k,Math.min(z,s));t.style.height=`${v}px`}catch{}},[]),M=q(()=>{let t=y;t&&window.setTimeout(()=>{try{t.scrollTop=t.scrollHeight}catch{}},50)},[y]),P=q(()=>{nt(!1),Ae&&U(!1),Xe(!1),X?.()},[Ae,X]);ke(()=>{if(N)return S(),window.addEventListener("resize",S),()=>window.removeEventListener("resize",S)},[N,S]),ke(()=>{if(!(!N||!Ae))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[N,Ae,P]);let re=Te(()=>Ge.map(t=>({id:t.id,url:t.objectUrl,title:t.file.name})),[Ge]);ke(()=>{g||zt(!0)},[g]),ke(()=>()=>{ae(ht.current)},[ae]),ke(()=>{let t=y;if(!t)return;let l=()=>{let k=t.scrollHeight-(t.scrollTop+t.clientHeight);zt(k<20)};return t.addEventListener("scroll",l),()=>{t.removeEventListener("scroll",l)}},[N,y]),ke(()=>{if(!he)return;let t=y;t&&t.scrollHeight>t.clientHeight&&(t.scrollTop=t.scrollHeight)},[Re,L.busy,he,y]),ke(()=>{N||qe(null)},[N]);let oe=Te(()=>L.busy?ei(L.statusEvent,b)||A.get("Working\u2026"):null,[L.busy,L.statusEvent,$,b]),O=Te(()=>{for(let t=Re.length-1;t>=0;t--){let l=Re[t];if(l.role==="user"&&l.clientStatus==="canceled")return l.id}return null},[Re]),ie=q(t=>{Fe(l=>{let k=[...l].map((v,B)=>({m:v,i:B})).reverse().find(v=>v.m.role==="user"&&v.m.clientStatus==="pending")?.i;if(k==null)return l;let s=l.slice(),z=s[k];return s[k]={...z,clientStatus:t??void 0},s})},[Fe]),Oe=q(()=>{if(!(!L.busy||Ve.current!=="chat")){rt.current=!0;try{L.cancel()}catch{}ie("canceled"),pt(null),Ze(null),M()}},[L,ie,M]),Xt=q(t=>{let l=ht.current,k=Array.from(t.target.files||[]),s=Math.max(0,ft-l.length);if(s===0){t.currentTarget.value="";return}let z=[];for(let v of k){if(z.length>=s)break;let B=/image\/(jpeg|png|gif|webp)/i.test(v.type),j=v.size<=Qt,F=[...l,...z].some(je=>je.file.name===v.name&&je.file.size===v.size&&je.file.lastModified===v.lastModified);if(!B||!j||F)continue;let Ie=oa(v);Ie&&z.push({id:Ut("composer-image"),file:v,objectUrl:Ie})}z.length&&ye(v=>[...v,...z]),t.currentTarget.value=""},[ft,Qt]),ea=q(t=>{ye(l=>{if(t<0||t>=l.length)return l;let k=l[t];return k&&wa(k.objectUrl),l.filter((s,z)=>z!==t)})},[]),Pt=Ce(null);ke(()=>{if(ce)return Pt.current&&(window.clearTimeout(Pt.current),Pt.current=null),Pt.current=window.setTimeout(()=>{Ze(null),Pt.current=null},6e3),()=>{Pt.current&&(window.clearTimeout(Pt.current),Pt.current=null)}},[ce]);let Fa=q(async(t,l)=>{let k=I!=="nostorage",s=[];if(t.length>0){let z=await Promise.all(t.map(async v=>{let B=Ut("attachment-image"),j;if(k)try{j=await Ua(B,v.file,{name:v.file.name,type:v.file.type,size:v.file.size})??void 0}catch(Ie){console.warn("[AiChatbot] Failed to persist image",Ie)}let F=oa(v.file);return{id:B,name:v.file.name,type:v.file.type||"application/octet-stream",size:v.file.size,blobId:j,objectUrl:F??void 0,blob:v.file,mediaType:"image"}}));s.push(...z.filter(Boolean))}if(l){let z=Ut("attachment-audio"),v;if(k)try{v=await Ua(z,l.blob,{name:`audio-${Date.now()}.webm`,type:l.blob.type,size:l.blob.size})??void 0}catch(j){console.warn("[AiChatbot] Failed to persist audio",j)}let B=oa(l.blob);s.push({id:z,name:`audio-${Date.now()}.webm`,type:l.blob.type||"audio/webm",size:l.blob.size,blobId:v,objectUrl:B??void 0,blob:l.blob,duration:l.duration,mediaType:"audio"})}return s},[I]),qa=q(async t=>{let l=[];for(let k of t){let s;if(k.attachments&&k.attachments.length>0){s=[];for(let z of k.attachments){let v;if(z.blobId)try{v=(await Oa(z.blobId))?.blob??void 0}catch(j){console.warn("[AiChatbot] Failed to hydrate attachment",j)}if(!v)continue;let B=v?oa(v):null;s.push({...z,objectUrl:B??void 0,blob:v??void 0})}}l.push({...k,attachments:s})}return l},[]),Ya=q(async t=>{if(!t||t.length===0){R();return}let l=[];for(let k of t){let s=k.blob;if(!s&&k.blobId)try{s=(await Oa(k.blobId))?.blob??void 0}catch(B){console.warn("[AiChatbot] Failed to reload attachment",B)}if(!s)continue;let z=s instanceof File?s:new File([s],k.name||"attachment",{type:k.type||s.type||"application/octet-stream"}),v=oa(z);if(v&&(l.push({id:Ut("composer-image"),file:z,objectUrl:v}),l.length>=ft))break}if(l.length===0){R();return}ye(k=>(ae(k),l)),Be.current&&(Be.current.value="")},[R,ae,ft]),Ta=q((t,l)=>{t&&qe({url:t,title:l})},[]),er=q(()=>{qe(null)},[]),Va=q(()=>{qn(Zt.current),R(),Pe(),Fe([]),Ze(null),Ke.current=null,tt(null),zt(!0),dt(!1);let t=Ga(I);if(t)try{t.removeItem(ra)}catch{}Aa()},[R,Pe,I]),tr=q(()=>{dt(!0)},[]),ar=q(()=>{L.busy&&Ve.current==="chat"&&Oe(),Va()},[L.busy,Oe,Va]),Ja=q(()=>{dt(!1)},[]),_a=q(async(t,l)=>{if(!L.busy)try{let k=Ke.current&&Date.now()-Ke.current.storedAt<ge*va?Ke.current.id:void 0;if(!k)return;pt("feedback"),Ze(null),await L.run(async({signal:s,onStatus:z})=>(await qo({sessionId:k,feedbackMessageId:t,feedbackType:l},{signal:s,onStatus:z,context:Ne}),null)),Ze(null)}catch(k){let s=k?.message?.trim()||A.get("An error occurred.");Ze(s),console.error("Failed to send feedback",k)}finally{pt(k=>k==="feedback"?null:k)}},[L,$]),$a=q((t,l)=>{Fe(k=>k.map(s=>s.id!==t||s.role!=="assistant"?s:s.feedback===l?{...s,feedback:void 0}:{...s,feedback:l})),_a(t,l)},[_a]),pa=q(async()=>{let t=wt.current.trim(),l=Lt.current;if(!t&&!l||L.busy)return;rt.current=!1,Ze(null),pt("chat");let k=[...ht.current],s=await Fa(k,l),z=Ut("user"),v=Date.now(),B={id:z,role:"user",content:t||(l?"[Audio message]":""),createdAt:v,clientStatus:"pending",attachments:s.length?s:void 0};ue(""),R(),Pe(),Fe(j=>[...j,B]),N||nt(!0),M();try{let j=Ke.current&&Date.now()-Ke.current.storedAt<ge*va?Ke.current.id:void 0,F=await L.run(async({signal:je,onStatus:Ye})=>await Fo({sessionId:j,message:t||void 0,audio:l?.blob,images:k.map(pr=>pr.file)},{signal:je,onStatus:Ye,context:Ne}));if(rt.current){ie("canceled");return}if(!F)throw new Error(A.get(L.error??b.emptyResponseLabel));F.sessionId&&(Ke.current={id:F.sessionId,storedAt:Date.now()});let Ie={id:F.metadata?.messageId||Ut("assistant"),role:"assistant",content:F.result||"",citations:F.citations,createdAt:Date.now()};Fe(je=>[...je.map(Nt=>Nt.id===z?{...Nt,clientStatus:void 0}:Nt),Ie]),tt(v)}catch(j){if(console.error("Error during ask()",j),rt.current||Xo(j)){ie("canceled");return}let F=j?.message?.trim()||A.get(b.unexpectedErrorLabel);Fe(Ie=>[...Ie.map(Ye=>Ye.id===z?{...Ye,clientStatus:void 0}:Ye),{id:Ut("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${F}`,createdAt:Date.now()}]),tt(v)}finally{pt(j=>j==="chat"?null:j),rt.current=!1,ot.current&&ot.current.focus(),M()}},[L,Fa,R,Pe,N,M,ie,b.emptyResponseLabel,b.unexpectedErrorLabel,$]),nr=q(t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),K&&pa())},[pa,K]),rr=q(()=>{nt(!0)},[]);ke(()=>()=>{Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null)},[]);let or=q(()=>{U(t=>{let l=!t;return Je.current!=null&&(cancelAnimationFrame(Je.current),Je.current=null),l?(Xe(!0),requestAnimationFrame(()=>{Je.current=requestAnimationFrame(()=>{Xe(!1),Je.current=null})})):Xe(!1),l})},[]),ir=q(t=>{ue(t.content),(async()=>(await Ya(t.attachments),Fe(l=>l.filter(k=>k.id!==t.id)),Vn(t.attachments),queueMicrotask(()=>ot.current?.focus())))()},[Ya]),Za=Te(()=>se?T?m("img",{src:T,className:"ai-open-btn-icon",alt:A.get(b.askMeLabel||D)}):m(Eo,{size:18}):null,[se,T,b,D,$]),sr=Te(()=>{let t=Za,l=E?m(xe,{inherit:!0,children:D}):null;if(!se&&!l)return null;if(!se)return l;if(!E)return t;switch(V){case"top":return G(st,{gap:4,align:"center",children:[t,l]});case"bottom":return G(st,{gap:4,align:"center",children:[l,t]});case"right":return G(Me,{gap:6,align:"center",children:[l,t]});default:return G(Me,{gap:6,align:"center",children:[t,l]})}},[Za,se,E,D,V]),lr=Te(()=>f,[f]),ur=Te(()=>!f,[f]),cr=Te(()=>ce||(g?A.get(b.readyLabel):A.get(b.readyEmptyLabel)),[ce,g,b.readyLabel,b.readyEmptyLabel,$]),dr=Te(()=>f?A.get(b.cancelLabel):A.get(b.sendLabel),[f,b.cancelLabel,b.sendLabel,$]),gr=Te(()=>f?m(jo,{size:18}):m(No,{size:18}),[f]),mr=q(()=>{if(f){Oe();return}pa()},[f,Oe,pa]);return ke(()=>{if(!N||!Ee||!y)return;let t=()=>{let j=window.getComputedStyle(y).overflowY,F=j==="auto"||j==="scroll",Ie=Math.ceil(y.scrollHeight),je=Math.floor(y.clientHeight),Ye=Ie>je;return F&&Ye},l=!1,k=B=>{if(!t())return;B.preventDefault();let j=y.scrollHeight-y.clientHeight;y.scrollTop=Math.max(0,Math.min(j,y.scrollTop+B.deltaY))},s=()=>{let B=t();mt(B),B!==l&&(l=B,l?Ee.addEventListener("wheel",k,{passive:!1}):Ee.removeEventListener("wheel",k))};s();let z=new ResizeObserver(s);z.observe(y);let v=new MutationObserver(s);return v.observe(y,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",s),()=>{l&&Ee.removeEventListener("wheel",k),z.disconnect(),v.disconnect(),window.removeEventListener("resize",s)}},[N,Ee,y]),ke(()=>{let t=!1,l=Ga(I);if(!l){I==="nostorage"&&Aa(),de(!0);return}return(async()=>{try{let k=l.getItem(ra);if(!k){de(!0);return}let s=JSON.parse(k),z=typeof s?.lastUserSentAt=="number"?s.lastUserSentAt:null;if(!z||Date.now()-z>ge*va){l.removeItem(ra),await Aa(),de(!0);return}let B=(Array.isArray(s.messages)?s.messages:[]).map(F=>F?.role==="user"&&F.clientStatus==="pending"?{...F,clientStatus:"canceled"}:F),j=await qa(B);if(t){qn(j);return}Fe(j),tt(z),s.session&&s.session.id&&(Ke.current=s.session)}catch(k){console.warn("[AiChatbot] Failed to load history",k);try{l.removeItem(ra)}catch{}}finally{t||de(!0)}})(),()=>{t=!0}},[I,ge,qa]),ke(()=>{if(!gt)return;let t=Ga(I);if(!t)return;let l=_e.current;if(!l)return;if(Date.now()-l>ge*va){try{t.removeItem(ra)}catch{}ja(new Set);return}let k=Re.map(({attachments:v,...B})=>({...B,attachments:v?.map(({objectUrl:j,blob:F,...Ie})=>Ie)})),s={version:1,lastUserSentAt:l,session:Ke.current,messages:k};try{t.setItem(ra,JSON.stringify(s))}catch{}let z=new Set;k.forEach(v=>{v.attachments?.forEach(B=>{B.blobId&&z.add(B.blobId)})}),ja(z)},[gt,Re,vt,I,ge]),i&&!$e||!i&&$e?null:G(Me,{className:h,children:[!N&&m(it,{variant:"filled",className:E?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:rr,"aria-label":D,title:D,"data-ai-kit-open-button":!0,children:sr}),N&&m(Vt.Root,{ref:Ue,opened:N,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:P,className:h+" ai-chat-container"+(Ae?" maximized":"")+(Ae&&ee?" ai-max-enter":""),portalProps:{target:n,reuseTargetNode:!0},"data-ai-kit-theme":Q,"data-ai-kit-variation":"modal",children:G("div",{className:"ai-chat-container-internal",ref:$t,children:[G(Vt.Header,{className:"ai-chat-header-bar",children:[m(Vt.Title,{className:"ai-chat-title",children:ne}),G(Me,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&m(Wn,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:or,title:Ae?A.get(b.restoreSizeLabel):A.get(b.maximizeLabel),"aria-label":Ae?A.get(b.restoreSizeLabel):A.get(b.maximizeLabel),"data-ai-kit-maximize-button":!0,children:Ae?m(Ko,{size:16}):m(Do,{size:16})}),m(Vt.CloseButton,{"aria-label":A.get(b.closeChatLabel)})]})]}),G(Vt.Body,{className:"ai-chat-scroll",ref:Ct,"data-scrollable":et?"true":"false",children:[Re.map(t=>{let l=t.role==="user",k=l&&t.clientStatus==="canceled"&&t.id===O;return m(Me,{justify:l?"flex-end":"flex-start",className:"ai-chat-row "+t.role,onMouseEnter:()=>ze(t.id),onMouseLeave:()=>ze(s=>s===t.id?null:s),children:G(st,{gap:4,w:"100%",style:{alignItems:l?"flex-end":"flex-start"},children:[G(st,{className:"ai-chat-bubble",children:[G(xe,{className:"ai-chat-header",children:[m(xe,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:l?A.get(b.userLabel):A.get(b.assistantLabel)}),"\xA0",m(xe,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),t.role==="assistant"?m(Vo,{remarkPlugins:[Jo],children:t.content}):m(xe,{size:"sm",miw:"100px",children:t.content})]}),t.attachments&&t.attachments.length>0&&G(st,{gap:"xs",style:{maxWidth:"min(400px, 100%)"},children:[t.attachments.filter(s=>s.mediaType==="image"||!s.mediaType&&s.type.startsWith("image/")).length>0&&m(Me,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:t.attachments.filter(s=>s.mediaType==="image"||!s.mediaType&&s.type.startsWith("image/")).map(s=>m("button",{type:"button",className:"thumb",style:{backgroundImage:s.objectUrl?`url(${s.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>Ta(s.objectUrl,s.name),disabled:!s.objectUrl,title:s.name||A.get("View image"),"aria-label":s.name||A.get("View image"),children:!s.objectUrl&&m(xe,{size:"xs",c:"dimmed",children:A.get("Image no longer available")})},s.id))}),t.attachments.filter(s=>s.mediaType==="audio"||!s.mediaType&&s.type.startsWith("audio/")).map(s=>m(Lo,{p:"sm",style:{backgroundColor:"var(--ai-kit-chat-surface-subtle)",borderRadius:"var(--ai-kit-radius-sm)",border:"1px solid var(--ai-kit-chat-border-color)"},children:s.objectUrl?G(st,{gap:"xs",children:[m("audio",{className:"ai-kit-audio-player",controls:!0,src:s.objectUrl,preload:"metadata"}),s.duration&&G(xe,{size:"xs",c:"dimmed",style:{textAlign:"right"},children:[Math.round(s.duration),"s"]})]}):m(xe,{size:"xs",c:"dimmed",children:A.get("Audio no longer available")})},s.id))]}),k&&G(Me,{justify:"flex-end",gap:"xs",children:[m(xe,{size:"xs",c:"dimmed",children:m("em",{children:A.get(b.notSentLabel)})}),It===t.id&&m(Wn,{size:"sm",variant:"subtle",onClick:()=>ir(t),title:A.get(b.editLabel),"aria-label":A.get(b.editLabel),"data-ai-kit-edit-button":!0,children:m(Oo,{size:14})})]}),t.citations&&t.citations.length>0&&G(st,{className:"ai-citations",children:[m(xe,{fw:"bold",size:"sm",mb:"xs",children:A.get(b.referencesLabel)}),m(Fn,{spacing:"xs",size:"sm",children:t.citations.map((s,z)=>{let v=s.sourceUrl||s.url,B=s.title||v||`${A.get(b.referenceLabel)} #${z+1}`;return G(Fn.Item,{children:[v?m(xo,{href:v,target:"_blank",rel:"noreferrer",children:B}):m(xe,{children:B}),s.snippet?m(xe,{size:"xs",c:"dimmed",mt:4,children:s.snippet}):null]},z)})})]}),t.role==="assistant"&&G(Me,{className:"ai-feedback",gap:"xs",children:[m(it,{className:t.feedback==="accepted"?"active":void 0,onClick:()=>$a(t.id,"accepted"),"aria-label":A.get(b.acceptResponseLabel),disabled:L.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),m(it,{type:"button",className:t.feedback==="rejected"?"active":void 0,onClick:()=>$a(t.id,"rejected"),"aria-label":A.get(b.rejectResponseLabel),disabled:L.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},t.id)}),lr&&m(Me,{justify:"flex-start",className:"ai-chat-row assistant status",children:G(st,{className:"ai-chat-bubble typing",children:[oe?m(xe,{size:"sm",c:"dimmed",children:m("em",{children:oe})}):null,G("div",{className:"typing-indicator",children:[m("span",{}),m("span",{}),m("span",{})]})]})})]}),ur&&m(Me,{className:"ai-status-line",children:m(xe,{className:"ai-status-text",children:m("em",{children:cr})})}),G(st,{className:"ai-box ai-box-open",children:[G(Vt,{opened:Qe,onClose:Ja,centered:!0,title:A.get("Reset conversation"),style:{zIndex:"var(--mb-z-index)",position:"fixed"},left:0,children:[m(xe,{size:"sm",children:A.get("Are you sure you want to reset the conversation?")}),G(Me,{justify:"flex-end",mt:"md",children:[m(it,{variant:"default",onClick:Ja,"data-ai-kit-no-button":!0,children:A.get("No")}),m(it,{color:"var(--ai-kit-color-danger, red)",onClick:ar,disabled:!g&&!f,"data-ai-kit-yes-button":!0,children:A.get("Yes")})]})]}),m(Me,{children:m(Mo,{className:"ai-message",ref:ot,placeholder:a,value:J,onChange:t=>{ue(t.target.value),x&&Pe()},onKeyDown:nr,rows:3,disabled:De||!!x})}),Na&&De&&G(st,{gap:"xs",mt:"xs",children:[m(xe,{size:"xs",c:"dimmed",children:m("em",{children:A.get("Recording...")})}),m("div",{style:{width:"100%",height:"4px",backgroundColor:"var(--mantine-color-gray-3)",borderRadius:"2px",overflow:"hidden"},children:m("div",{style:{width:`${jt}%`,height:"100%",backgroundColor:"var(--mantine-color-red-6)",transition:"width 0.1s ease"}})})]}),Na&&x&&!De&&G(st,{gap:"xs",mt:"xs",children:[m(xe,{size:"xs",c:"dimmed",children:G("em",{children:[A.get("Audio recorded")," (",Math.round(x.duration),"s)"]})}),m("audio",{className:"ai-kit-audio-player",controls:!0,src:x.objectUrl})]}),G(Me,{className:"ai-actions",justify:"space-between",w:"100%",children:[m(Me,{justify:"flex-start",children:m(it,{variant:"light",leftSection:m(Go,{size:18}),onClick:tr,disabled:!g&&!f,"data-ai-kit-reset-button":!0,children:A.get(b.resetLabel)})}),G(Me,{justify:"flex-end",children:[Na&&m(Yn,{children:x?m(it,{variant:"outline",leftSection:m(Ho,{size:18}),onClick:Pe,disabled:f,title:A.get("Clear audio"),"data-ai-kit-clear-audio-button":!0,children:A.get("Clear")}):m(it,{variant:"outline",leftSection:m(Bo,{size:18}),onClick:De?At:xt,disabled:f,title:De?A.get("Stop recording"):A.get("Record audio"),color:De?"red":void 0,"data-ai-kit-microphone-button":!0,children:De?A.get("Stop"):A.get("Record")})}),ft>0&&G(Yn,{children:[m(it,{variant:"outline",leftSection:m(Uo,{size:18}),onClick:()=>Be.current?.click(),disabled:Ge.length>=ft||f||De||!!x,title:A.get(b.addImageLabel),"data-ai-kit-add-image-button":!0,children:A.get(b.addLabel)}),m(Po,{ref:Be,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:Xt})]}),m(it,{leftSection:gr,variant:"filled",onClick:mr,disabled:!f&&!K,"data-ai-kit-send-button":!0,children:dr})]})]}),re.length>0&&m(Me,{className:"ai-thumbs",mt:"xs",gap:"xs",children:re.map(({url:t,title:l},k)=>m("div",{role:"button",tabIndex:0,className:"thumb",style:{backgroundImage:t?`url(${t})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",overflow:"visible"},"aria-label":l||A.get("View image"),onClick:()=>Ta(t,l),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),Ta(t,l))},children:m(it,{variant:"white",onClick:s=>{s.stopPropagation(),ea(k)},"aria-label":A.get(b.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:A.get(b.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},Ge[k]?.id??k))})]})]})}),m(Vt,{opened:!!Le,onClose:er,centered:!0,size:"auto",title:Le?.title||A.get("Image preview"),children:Le&&m("img",{src:Le.url,alt:Le.title||A.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},ai=Wt(ti,{showOpenButton:!0,variation:"modal"});import{Alert as ni,Anchor as Jn,Button as Jt,Checkbox as _n,Collapse as ri,Divider as $n,Group as St,Loader as oi,Modal as _t,MultiSelect as ii,Paper as Zn,Progress as si,Stack as Rt,Text as lt,TextInput as li,Title as ui}from"@mantine/core";import{AiKitDocSearchIcon as ci,dispatchBackend as di,resolveBackend as gi,sendSearchMessage as mi}from"@smart-cloud/ai-kit-core";import{I18n as Y}from"aws-amplify/utils";import{useCallback as ga,useEffect as ia,useMemo as ut,useRef as Ot,useState as at}from"react";import pi from"react-markdown";import hi from"rehype-raw";import fi from"remark-gfm";import{IconChevronDown as ki,IconChevronRight as bi,IconMicrophone as yi,IconMicrophoneOff as Ai,IconSearch as Qn,IconX as vi}from"@tabler/icons-react";import{Fragment as ma,jsx as w,jsxs as le}from"react/jsx-runtime";Y.putVocabularies(Gt);var Xn=!1;function wi(e){let n=e?.citations?.docs??[],d=e?.citations?.chunks??[],i=new Map;for(let r of n)i.set(r.docId,{doc:r,chunks:[]});for(let r of d){let u=i.get(r.docId);u?u.chunks.push(r):i.set(r.docId,{doc:{docId:r.docId},chunks:[r]})}return Array.from(i.values())}function Wa(e){return!!e&&/[\p{L}\p{N}_]/u.test(e)}function Ti(e,n){let d=e.length;if(n<=0)return 0;if(n>=d)return d;let i=e[n-1]??"",r=e[n]??"";if(Wa(i)&&Wa(r)){let u=n;for(;u<d&&Wa(e[u]??"");)u++;return u}return n}function Si(e){let n=globalThis?.CSS?.escape;return typeof n=="function"?n(e):e.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}var Ri=e=>{let{autoRun:n=!0,context:d,title:i,showOpenButton:r=!1,openButtonTitle:u,showOpenButtonTitle:T=!0,openButtonIcon:E,showOpenButtonIcon:se=!0,searchButtonIcon:Q,showSearchButtonTitle:$=!0,showSearchButtonIcon:X=!0,showSources:Ne=!0,topK:te=10,getSearchText:C,enableUserFilters:c=!1,availableCategories:I,availableTags:ge,variation:H,rootElement:V,colorMode:me,language:b,onClose:L,onClickDoc:J}=e,[ue,Ge]=at(!r),[ye,x]=at(""),[Z,De]=at(!1),[W,jt]=at(null),[ct,_]=at(0),He=Ot(null),We=Ot([]),pe=Ot(null),Se=Ot(null),[Re,Fe]=at(!1),[ce,Ze]=at([]),[Qe,dt]=at([]),[Ae,U]=at([]),[ee,Xe]=at(""),[N,nt]=at(null),[he,zt]=at(!1),Le=Ot(null),qe=Ot(null),gt=1440*60*1e3,{busy:de,error:Ee,statusEvent:$t,result:y,run:Ct,cancel:et,reset:mt}=aa(),ve=Ot(!1),pt=Ot([]),Ve=y?.sessionId,Je=y?.citations?.docs??[],rt=y?.citations?.chunks??[],It=y?.citations?.anchors??[],ze=y?.result??"",Be=ut(()=>{if(X)return Q?.trim()?w("img",{src:Q,alt:"",style:{width:18,height:18,objectFit:"contain"}}):w(Qn,{size:18})},[Q,X]),ot=ut(()=>(b&&Y.setLanguage(b||"en"),Y.get(i||"Search with AI-Kit")),[b]),Ke=ut(()=>$t?Y.get("Searching\u2026"):null,[b,$t]),Ue=ut(()=>ye||C,[ye,C]),ae=ut(()=>{if(de||!ue)return!1;let g=typeof Ue=="function"?Ue():Ue;return!!(g&&g.trim().length>0||W)},[Ue,de,W,ue]),R=ut(()=>{if(!N)return!1;let g=Object.keys(N.allowedCategories).length>0,f=N.allowedTags.length>0;return g||f},[N]),Pe=ut(()=>ce.length===0||!N?[]:ce.flatMap(g=>N.allowedCategories[g]||[]).filter((g,f,K)=>K.indexOf(g)===f),[ce,N]),xt=ga(async()=>{try{x("");let g=await navigator.mediaDevices.getUserMedia({audio:!0}),f=new MediaRecorder(g,{mimeType:"audio/webm"}),K=new AudioContext,D=K.createMediaStreamSource(g),ne=K.createAnalyser();ne.fftSize=2048,ne.smoothingTimeConstant=.8,D.connect(ne),pe.current=K,Se.current=ne;let a=new Uint8Array(ne.fftSize),h=()=>{if(!Se.current)return;Se.current.getByteTimeDomainData(a);let S=0;for(let re=0;re<a.length;re++){let oe=(a[re]-128)/128;S+=oe*oe}let M=Math.sqrt(S/a.length),P=Math.min(100,M*200);_(P),Le.current=requestAnimationFrame(h)};h(),We.current=[],f.ondataavailable=S=>{S.data.size>0&&We.current.push(S.data)},f.onstop=()=>{let S=new Blob(We.current,{type:"audio/webm"});jt(S),g.getTracks().forEach(M=>M.stop()),Le.current&&(cancelAnimationFrame(Le.current),Le.current=null),pe.current&&(pe.current.close(),pe.current=null),Se.current=null,_(0)},He.current=f,f.start(),De(!0)}catch(g){console.error("Failed to start recording:",g)}},[]),At=ga(()=>{He.current&&Z&&(He.current.stop(),De(!1))},[Z]),vt=ga(()=>{jt(null),We.current=[],_(0),qe.current=null},[]);ia(()=>()=>{Le.current&&cancelAnimationFrame(Le.current),pe.current&&pe.current.close()},[]),ia(()=>{if(!c)return;if(I||ge){nt({allowedCategories:I||{},allowedTags:ge||[]});return}(async()=>{zt(!0);try{let f=await gi();if(!f.available){console.error("Backend not available for metadata options");return}let K={feature:"prompt",source:"backend",mode:"backend-only",onDeviceAvailable:!1,backendAvailable:f.available,backendTransport:f.transport,backendApiName:f.apiName,backendBaseUrl:f.baseUrl,reason:f.reason??""},D=await di(K,d??"frontend","/kb/metadata-options","GET",null,{});nt({allowedCategories:D.allowedCategories||{},allowedTags:D.allowedTags||[]})}catch(f){console.error("Failed to load metadata options:",f)}finally{zt(!1)}})()},[c,I,ge,d]);let tt=ga(async()=>{let g;if(!W){if(g=typeof Ue=="function"?Ue():Ue,!g)return;x(g)}let f=Date.now(),K=W&&qe.current?.blob===W&&f-qe.current.uploadTimestamp<gt;W&&!K&&(qe.current={blob:W,uploadTimestamp:f}),mt(),await Ct(async({signal:D,onStatus:ne})=>await mi({sessionId:Ve,...g&&{query:g},...W&&{audio:W},topK:te,...c&&{userSelectedCategories:ce},...c&&Qe.length>0&&{userSelectedSubcategories:Qe},...c&&Ae.length>0&&{userSelectedTags:Ae}},{signal:D,onStatus:ne,context:d}))},[d,Ue,W,Ct,mt,te,Ve,c,ce,Qe,Ae]),wt=ga(async()=>{Ge(!1),mt(),r||L()},[L,mt,ve,r]);ia(()=>{!n||!ae||de||ve.current||(ve.current=!0,queueMicrotask(()=>{tt()}))},[de,ve,ae,n,tt]),ia(()=>{ae||(ve.current=!0)},[ae]),ia(()=>{let g=pt.current,f=ce;(g.length!==f.length||!f.every(D=>g.includes(D)))&&g.length>0&&mt(),pt.current=[...f]},[ce,mt]);let Zt=ut(()=>wi(y),[y]),_e=ut(()=>{let g=new Map;return Je.forEach((f,K)=>{f?.docId&&g.set(f.docId,K+1)}),g},[Je]),ht=ut(()=>{let g=new Map;return rt.forEach(f=>{f?.chunkId&&f?.docId&&g.set(f.chunkId,f.docId)}),g},[rt]),Lt=ut(()=>{if(!ze)return"";if(!It.length||_e.size===0)return ze;let g=[...It].filter(D=>Array.isArray(D?.chunkIds)&&D?.span?.end!==void 0).sort((D,ne)=>{let a=D.span?.end??0,h=ne.span?.end??0;return a-h}),f=0,K=[];for(let D of g){let ne=D.span?.end;if(typeof ne!="number"||ne<f)continue;let a=Array.from(new Set((D.chunkIds??[]).map(P=>P?ht.get(P):void 0).map(P=>P?_e.get(P):void 0).filter(P=>typeof P=="number")));if(!a.length)continue;let h=Math.min(ne,ze.length),S=Ti(ze,h);K.push(ze.slice(f,S));let M=a.map(P=>`<a href="#docsearch-source-${P}" data-docsearch-cite="${P}" style="color: inherit; text-decoration: none;">${P}</a>`).join(",");K.push(`<sup>${M}</sup>`),f=S}return K.push(ze.slice(f)),K.join("")},[It,ze,_e,ht]),$e=H==="modal"?_t.Root:St,ft=H==="modal"?_t.Content:St,Qt=H==="modal"?_t.Body:St;return ia(()=>{if(!(H!=="modal"||!ue))return document.body.style.overflow="hidden",document.body.onkeydown=g=>{g.key==="Escape"&&(g.preventDefault(),wt())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[wt,H,ue]),le(ma,{children:[r&&w(Jt,{leftSection:se&&(E?w("span",{dangerouslySetInnerHTML:{__html:E}}):w(Qn,{size:18})),className:T?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:ue,onClick:()=>Ge(!0),"data-ai-kit-open-button":!0,children:T&&Y.get(u||ot)}),ue&&le($e,{opened:!0,className:"doc-search-root",onClose:wt,padding:"md",gap:"md",size:"xl",portalProps:H==="modal"?{target:V,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":me,"data-ai-kit-variation":H,children:[H==="modal"&&w(_t.Overlay,{}),le(ft,{w:"100%",style:{left:0,...H==="modal"&&!y?.result&&{overflow:"visible"}},children:[H==="modal"&&le(_t.Header,{style:{zIndex:1e3},children:[w(ci,{className:"doc-search-title-icon"}),w(_t.Title,{children:Y.get(ot)}),w(_t.CloseButton,{})]}),w(Qt,{w:"100%",style:{zIndex:1001,...H==="modal"&&!y?.result&&{overflow:"visible"}},children:w(na,{enabled:H!=="modal",working:de,variation:H,children:w(Zn,{shadow:"sm",radius:"md",p:"md",children:le(Rt,{gap:"sm",children:[H!=="modal"&&le(St,{justify:"space-between",children:[w(ui,{order:4,style:{margin:0},children:Y.get(ot)}),r&&w(Jt,{variant:"subtle",color:"gray",size:"xs",onClick:wt,style:{minWidth:32,padding:0,display:"flex",alignItems:"center",justifyContent:"center"},"aria-label":Y.get("Close"),children:w(vi,{size:18,style:{color:me==="dark"?"var(--mantine-color-dark-1)":"var(--mantine-color-gray-7)"}})})]}),le(St,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[w(li,{style:{flex:1},value:ye,onChange:g=>{x(g.currentTarget.value),W&&vt()},placeholder:W?Y.get("Audio recorded"):Y.get("Search the documentation\u2026"),disabled:de||Z||!!W,onKeyDown:g=>{g.key==="Enter"&&ae&&(g.preventDefault(),tt())}}),Xn&&w(ma,{children:W?w(Jt,{variant:"outline",size:"sm",color:"red",onClick:vt,disabled:de,title:Y.get("Clear audio"),children:w(Ai,{size:18})}):w(Jt,{variant:Z?"filled":"outline",size:"sm",color:Z?"red":"gray",onClick:Z?At:xt,disabled:de,title:Z?Y.get("Stop recording"):Y.get("Record audio"),style:Z?{transform:`scale(${1+ct/300})`,transition:"transform 0.1s ease-out"}:void 0,children:w(yi,{size:18})})}),w(Jt,{variant:"filled",size:"sm",leftSection:Be,onClick:()=>{tt()},disabled:!ae,className:$?"doc-search-button":"doc-search-button-no-title",children:$?Y.get("Search"):null}),de?w(Jt,{variant:"outline",size:"sm",onClick:et,children:Y.get("Stop")}):null]}),!de&&!Ee&&!y?.result?w(lt,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:Y.get("Enter a search query to start.")}):null,c&&N&&R&&le(Rt,{gap:"xs",children:[w(Jt,{variant:"subtle",size:"xs",onClick:()=>Fe(!Re),leftSection:Re?w(ki,{size:14}):w(bi,{size:14}),style:{alignSelf:"flex-start"},children:Y.get("Filters")}),w(ri,{in:Re,children:le(Rt,{gap:"md",children:[Object.keys(N.allowedCategories).length>0&&le("div",{children:[w(lt,{size:"sm",fw:500,mb:"xs",children:Y.get("Categories")}),w(St,{gap:"md",children:Object.keys(N.allowedCategories).map(g=>w(_n,{label:Y.get(g),checked:ce.includes(g),onChange:f=>{if(f.currentTarget.checked)Ze([...ce,g]);else{Ze(ce.filter(D=>D!==g));let K=N.allowedCategories[g]||[];dt(Qe.filter(D=>!K.includes(D)))}},disabled:de||he},g))})]}),Pe.length>0&&le("div",{children:[w(lt,{size:"sm",fw:500,mb:"xs",children:Y.get("Subcategories")}),w(St,{gap:"md",children:Pe.map(g=>w(_n,{label:Y.get(g),checked:Qe.includes(g),onChange:f=>{f.currentTarget.checked?dt([...Qe,g]):dt(Qe.filter(K=>K!==g))},disabled:de||he},g))})]}),N.allowedTags.length>0&&w(ii,{label:Y.get("Tags"),placeholder:Y.get("Select or type tags..."),data:N.allowedTags.map(g=>({value:g,label:Y.get(g)})),value:Ae,onChange:U,searchValue:ee,onSearchChange:Xe,disabled:de||he,searchable:!0,clearable:!0,maxDropdownHeight:200,limit:20})]})})]}),Xn&&le(ma,{children:[Z&&le(Rt,{gap:"xs",children:[le(lt,{size:"xs",c:"dimmed",children:[Y.get("Recording...")," \u{1F3A4}"]}),w(si,{value:ct,size:"sm",color:"red",animated:!0,striped:!0})]}),W&&!Z&&le(Rt,{gap:"xs",children:[w(lt,{size:"xs",c:"dimmed",children:Y.get("Recorded audio:")}),w("audio",{controls:!0,src:URL.createObjectURL(W),className:"ai-kit-audio-player"})]})]}),Ee?w(ni,{color:"red",title:Y.get("Error"),children:Ee}):null,de&&Ke&&w(na,{enabled:H==="modal",working:!0,variation:H,children:le(St,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[w(oi,{size:"sm"}),w(lt,{size:"sm",c:"dimmed",children:Ke})]})}),y?.result?le(ma,{children:[w($n,{}),le(Rt,{gap:"xs","data-doc-search-result":!0,children:[w(lt,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:Y.get("AI Summary")}),w(pi,{remarkPlugins:[fi],rehypePlugins:[hi],components:{a:({href:g,children:f,...K})=>{let D=typeof g=="string"&&g.startsWith("#docsearch-source-");return w("a",{href:g,...K,onClick:ne=>{if(!D)return;ne.preventDefault();let a=g.slice(1),h=`#${Si(a)}`;(V??document).querySelector?.(h)?.scrollIntoView({block:"start",behavior:"smooth"})},children:f})}},"data-doc-search-result-content":!0,children:Lt||ze})]})]}):null,Ne&&(y?.citations?.docs?.length||y?.citations?.chunks?.length)?le(ma,{children:[w($n,{}),le(Rt,{gap:"sm","data-doc-search-sources":!0,children:[w(lt,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:Y.get("Sources")}),Zt.map(({doc:g})=>{let f=g.sourceUrl?.trim()||void 0,K=g.docId?_e.get(g.docId):void 0,D=g.title?.trim()||g.docId,ne=le(lt,{fw:600,style:{display:"inline"},children:[K?`${K}. `:"",D]});return w(Zn,{withBorder:!0,radius:"md",p:"sm",id:K?`docsearch-source-${K}`:void 0,style:{wordBreak:"break-word"},children:w(Rt,{gap:"xs",children:w(St,{justify:"space-between",align:"flex-start",children:le(Rt,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[f?w(Jn,{href:f,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:a=>{J&&(a.preventDefault(),J?.(g))},"data-doc-search-source-title":!0,children:ne}):ne,w(Jn,{href:f,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:a=>{J&&(a.preventDefault(),J?.(g))},"data-doc-search-source-url":!0,children:g.sourceUrl}),g.author?w(lt,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:g.author}):null,g.description?w(lt,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:g.description}):null]})})})},g.docId)})]})]}):null,w(ha,{variation:H})]})})})})]})]})]})},zi=Wt(Ri);export{ai as AiChatbot,wo as AiFeature,Ha as DEFAULT_CHATBOT_LABELS,zi as DocSearch,Sn as isBackendConfigured,La as markdownToHtml,Mt as readDefaultOutputLanguage,sa as stripCodeFence,Gt as translations,aa as useAiRun,Wt as withAiKitShell};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smart-cloud/ai-kit-ui",
3
- "version": "1.4.8",
3
+ "version": "1.4.9",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -1321,7 +1321,6 @@ Follow these additional instructions: ${instructions}`
1321
1321
  value: option.value,
1322
1322
  label: "",
1323
1323
  }))}
1324
- disabled={ai.busy}
1325
1324
  leftSection={
1326
1325
  selectedLanguageOption?.countryCode ? (
1327
1326
  <LanguageFlag