@smart-cloud/ai-kit-ui 1.1.43 → 1.1.44
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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/doc-search/DocSearch.tsx +1 -1
package/dist/index.cjs
CHANGED
|
@@ -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
|
`+(de?`
|
|
31
|
-
Follow these additional instructions: ${de}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),q=await z.run(async({signal:W,onStatus:oe})=>(await(0,O.prompt)({messages:G,images:[qe],outputLanguage:"en",responseConstraint:qa},{signal:W,onStatus:oe,context:x,modeOverride:i,onDeviceTimeoutOverride:a})).result);if(!q){V("");return}let ue=(C&&C!=="auto"?C:null)||et(),Y=lt(q).trim();try{J("Translating result...");let W=await z.run(async({signal:oe})=>await Ja(Y,ue,{signal:oe,context:x,modeOverride:i,onDeviceTimeoutOverride:a,silent:!0}));V(W)}catch(W){V(Y),console.warn("AI Kit: failed to parse SEO JSON",W)}break}}}catch(k){ee(k instanceof Error?k.message:n.I18n.get("An unknown error occurred."))}J(void 0)}},[F,z,de,le,C,Re,ze,x,s,Ye,L,pe,X]),At=(0,B.useCallback)(async()=>{await Ze("backend-only")},[Ze]),pt=(0,B.useCallback)(i=>{switch(s){case"proofread":return(0,l.jsx)(We.IconCircleDashedCheck,{className:i});case"translate":return(0,l.jsx)(We.IconLanguage,{className:i});case"summarize":return(0,l.jsx)(We.IconSum,{className:i});case"rewrite":case"write":return(0,l.jsx)(We.IconPencilCode,{className:i});case"generateImageMetadata":case"generatePostMetadata":return(0,l.jsx)(We.IconSeo,{className:i});default:return(0,l.jsx)(O.AiKitFeatureIcon,{mode:s,className:i})}},[s]),it=(0,B.useCallback)(()=>{switch(s){case"proofread":return z.lastSource?n.I18n.get("Proofread again"):n.I18n.get("Proofread");case"translate":return z.lastSource?n.I18n.get("Translate again"):n.I18n.get("Translate");case"rewrite":return z.lastSource?n.I18n.get("Rewrite again"):n.I18n.get("Rewrite");case"summarize":return z.lastSource?n.I18n.get("Summarize again"):n.I18n.get("Summarize");default:return z.lastSource?n.I18n.get("Regenerate"):n.I18n.get("Generate")}},[F,z.lastSource,s]),vt=(0,B.useCallback)(()=>{switch(s){case"proofread":return n.I18n.get("Proofread on Backend");case"translate":return n.I18n.get("Translate on Backend");case"rewrite":return n.I18n.get("Rewrite on Backend");case"summarize":return n.I18n.get("Summarize on Backend");default:return n.I18n.get("Regenerate on Backend")}},[F,s]),Ee=(0,B.useCallback)(async()=>{Me(!1),V(null),ee(null),Be.current=!1,z.reset(),N||y()},[y,Be,z,N]),wt=(0,B.useCallback)(async()=>{z.busy&&z.cancel()},[z.busy]);(0,B.useEffect)(()=>{!ce||!p||!pe||z.busy||U||Be.current||(Be.current=!0,queueMicrotask(()=>{Ze(be)}))},[z.busy,Be,ce,pe,p,U,Ze,be]),(0,B.useEffect)(()=>{X&&s!=="proofread"&&(pe||(ge(!0),Be.current=!0))},[X,pe,s]),(0,B.useEffect)(()=>{let i=!0;return(async()=>{try{await(0,O.waitForAiKitReady)();let k=await Yt();i&&Se(k)}catch(k){console.error(k),i&&Se(!1)}})(),()=>{i=!1}},[]);let $e=(0,B.useMemo)(()=>{let i=[];if(s==="translate"){let k=O.LANGUAGE_OPTIONS.find(G=>G.value===L)?.label;i.push(n.I18n.get("Input language")+": "+(k?n.I18n.get(k):"auto"))}if(C&&H?.outputLanguage){let k=O.LANGUAGE_OPTIONS.find(G=>G.value===C)?.label;i.push(n.I18n.get("Output language")+": "+(k?n.I18n.get(k):C))}return s==="summarize"&&Ye&&H?.type&&i.push(n.I18n.get("Type")+": "+n.I18n.get(Ye)),(s==="write"||s==="rewrite")&&ze&&H?.tone&&i.push(n.I18n.get("Tone")+": "+n.I18n.get(ze)),(s==="write"||s==="rewrite"||s==="summarize")&&le&&H?.length&&i.push(n.I18n.get("Length")+": "+n.I18n.get(le)),de?.trim()&&H?.instructions&&i.push(n.I18n.get("Instructions")+": \u2713"),i.length?i.join(" \u2022 "):n.I18n.get("No overrides")},[F,s,L,C,Ye,ze,le,de]),_={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},ht=h==="modal"?m.Modal.Root:m.Group,Qe=h==="modal"?m.Modal.Content:m.Group,Gt=h==="modal"?m.Modal.Body:m.Group,jt=S==="collapse"?m.Collapse:m.Stack,Tt=S==="horizontal"?m.Group:m.Stack;return(0,B.useEffect)(()=>{if(!(h!=="modal"||!ce))return document.body.style.overflow="hidden",document.body.onkeydown=i=>{i.key==="Escape"&&(i.preventDefault(),Ee())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[Ee,h]),(0,l.jsxs)(l.Fragment,{children:[N&&(0,l.jsx)(m.Button,{leftSection:ne&&(ae?(0,l.jsx)("span",{dangerouslySetInnerHTML:{__html:ae}}):pt()),className:te?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:ce,onClick:()=>Me(!0),"data-ai-kit-open-button":!0,children:te&&n.I18n.get(E||Ce)}),ce&&(0,l.jsxs)(ht,{opened:!0,className:"ai-feature-root",onClose:Ee,padding:"md",gap:"md",size:"md",portalProps:h==="modal"?{target:ie,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":re,"data-ai-kit-variation":h,children:[h==="modal"&&(0,l.jsx)(m.Modal.Overlay,{}),(0,l.jsxs)(Qe,{w:"100%",style:{left:0},children:[h==="modal"&&(0,l.jsxs)(m.Modal.Header,{style:{zIndex:1e3},children:[pt("ai-feature-title-icon"),(0,l.jsx)(m.Modal.Title,{children:n.I18n.get(Ce)}),(0,l.jsx)(m.Modal.CloseButton,{})]}),(0,l.jsx)(Gt,{w:"100%",style:{zIndex:1001},children:(0,l.jsxs)(ut,{enabled:h!=="modal",working:z.busy,variation:h,children:[(0,l.jsxs)(m.Stack,{gap:"sm",mb:"sm",p:"sm",children:[Ae&&(0,l.jsx)(m.Alert,{color:"red",children:n.I18n.get(Ae)}),X&&s!=="proofread"&&(0,l.jsxs)(m.Paper,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":S,children:[(0,l.jsxs)(m.Group,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:S==="collapse"?()=>ge(i=>!i):void 0,children:[S==="collapse"&&(0,l.jsxs)(m.Stack,{gap:0,children:[(0,l.jsx)(m.Text,{size:"sm",fw:600,style:{lineHeight:1.1},children:n.I18n.get("Options")}),(0,l.jsx)(m.Text,{size:"xs",c:"dimmed",style:{marginTop:2},children:$e})]}),S==="collapse"&&(0,l.jsx)(m.Button,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:i=>{i.stopPropagation(),ge(k=>!k)},children:Je?n.I18n.get("Hide"):n.I18n.get("Show")})]}),(0,l.jsxs)(jt,{in:Je,children:[S==="collapse"&&(0,l.jsx)(m.Divider,{my:"sm"}),(0,l.jsxs)(Tt,{gap:"xs",justify:"space-between",children:[s==="write"&&H?.text&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The topic or subject for the AI to write about."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.TextInput,{size:"xs",className:"ai-feature-option",styles:_,disabled:z.busy,label:n.I18n.get("Topic"),description:S!=="horizontal"?n.I18n.get("The topic or subject for the AI to write about."):void 0,value:Re||"",onChange:i=>{let k=i.target.value;Fe(k),Q?.({text:k})}})}),(s==="write"||s==="rewrite"||s==="generateImageMetadata"||s==="generatePostMetadata")&&H?.instructions&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("Additional instructions to guide the AI."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.TextInput,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Instructions"),description:S!=="horizontal"?n.I18n.get("Additional instructions to guide the AI."):void 0,value:de||"",onChange:i=>{let k=i.target.value;Ve(k),Q?.({instructions:k})}})}),s==="translate"&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The language of the input text."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",styles:_,className:"ai-feature-option",label:n.I18n.get("Input language"),description:S!=="horizontal"?n.I18n.get("The language of the input text."):void 0,data:[{value:"auto",label:n.I18n.get("Auto-detect")},...O.LANGUAGE_OPTIONS.map(i=>({value:i.value,label:n.I18n.get(i.label)})).sort((i,k)=>i.label.localeCompare(k.label))],value:L||"auto",onChange:i=>{let k=i;ye(k),I(void 0),Q?.({inputLanguage:k})}})}),H?.outputLanguage&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",styles:_,className:"ai-feature-option",label:n.I18n.get("Output language"),description:S!=="horizontal"?n.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[s==="rewrite"?{value:"auto",label:n.I18n.get("Auto-detect")}:void 0].filter(Boolean),...O.LANGUAGE_OPTIONS.map(i=>({value:i.value,label:n.I18n.get(i.label)})).sort((i,k)=>i.label.localeCompare(k.label))],value:C||ea.settings.defaultOutputLanguage||(s==="rewrite"?"auto":""),onChange:i=>{let k=i;Ie(k),I(void 0),Q?.({outputLanguage:k})}})}),s==="summarize"&&H?.type&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The summary style to generate."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Type"),description:S!=="horizontal"?n.I18n.get("The summary style to generate."):void 0,data:[{value:"headline",label:n.I18n.get("Headline")},{value:"key-points",label:n.I18n.get("Key Points")},{value:"teaser",label:n.I18n.get("Teaser")},{value:"tldr",label:n.I18n.get("TL;DR")}],value:Ye||"key-points",onChange:i=>{let k=i;_e(k),Q?.({type:k})}})}),(s==="write"||s==="rewrite")&&H?.tone&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The tone or style for the AI to use."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Tone"),description:S!=="horizontal"?n.I18n.get("The tone or style for the AI to use."):void 0,data:s==="write"?[{value:"neutral",label:n.I18n.get("Neutral")},{value:"formal",label:n.I18n.get("Formal")},{value:"casual",label:n.I18n.get("Casual")}]:[{value:"as-is",label:n.I18n.get("As-Is")},{value:"more-formal",label:n.I18n.get("More formal")},{value:"more-casual",label:n.I18n.get("More casual")}],value:ze||(s==="write"?"neutral":"as-is"),onChange:i=>{let k=i;Ht(k),Q?.({tone:k})}})}),(s==="write"||s==="rewrite"||s==="summarize")&&H?.length&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The target output length."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Length"),description:S!=="horizontal"?n.I18n.get("The target output length."):void 0,data:s==="write"||s==="summarize"?[{value:"short",label:n.I18n.get("Short")},{value:"medium",label:n.I18n.get("Medium")},{value:"long",label:n.I18n.get("Long")}]:[{value:"as-is",label:n.I18n.get("As-Is")},{value:"shorter",label:n.I18n.get("Shorter")},{value:"longer",label:n.I18n.get("Longer")}],value:le||(s==="rewrite"?"as-is":"short"),onChange:i=>{let k=i;He(k),Q?.({length:k})}})}),s==="summarize"||s==="write"||s==="rewrite"&&H?.outputFormat&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The format for the generated output."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Output format"),description:S!=="horizontal"?n.I18n.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:n.I18n.get("Plain Text")},{value:"markdown",label:n.I18n.get("Markdown")},{value:"html",label:n.I18n.get("HTML")}],value:me||"markdown",onChange:i=>{let k=i;De(k),Q?.({outputFormat:k})}})})]})]})]}),z.busy&&rt&&(0,l.jsx)(ut,{enabled:h==="modal",working:!0,variation:h,children:(0,l.jsxs)(m.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,l.jsx)(m.Loader,{size:"sm"}),(0,l.jsx)(m.Input.Label,{className:"ai-feature-status-text",children:rt})]})}),U&&(0,l.jsxs)(m.Stack,{mt:"md",children:[s==="proofread"&&(U.corrections.length===0?(0,l.jsx)(m.Alert,{color:"green",children:n.I18n.get("No issues found. Your text looks great!")}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("p",{style:{marginTop:0,opacity:.85},children:n.I18n.get("Hover highlights to see explanations.")}),(0,l.jsx)(Vn,{original:Re,corrections:U.corrections}),U.correctedInput?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("h4",{style:{marginTop:16,marginBottom:8},children:n.I18n.get("Corrected")}),(0,l.jsx)(m.Group,{c:"pre",className:"ai-feature-generated-content",children:U.correctedInput})]}):null]})),s==="generateImageMetadata"&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Alt Text"),description:n.I18n.get("The alt text for the image."),value:U.alt_text||"",onChange:i=>V({...U,alt_text:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Title"),description:n.I18n.get("The title for the image."),value:U.title||"",onChange:i=>V({...U,title:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Caption"),description:n.I18n.get("The caption for the image."),value:U.caption||"",onChange:i=>V({...U,caption:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Description"),description:n.I18n.get("The description for the image."),value:U.description||"",onChange:i=>V({...U,description:i.target.value})})]}),s==="generatePostMetadata"&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Title"),description:n.I18n.get("The title for the post."),value:U.title||"",onChange:i=>V({...U,title:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Excerpt"),description:n.I18n.get("The excerpt for the post."),value:U.excerpt||"",onChange:i=>V({...U,excerpt:i.target.value})})]}),s!=="proofread"&&s!=="generateImageMetadata"&&s!=="generatePostMetadata"&&typeof U=="string"&&(0,l.jsx)(ta,{value:U,editable:!!u,onChange:i=>{V(i)}})]}),U===""&&(0,l.jsx)(ta,{value:U,editable:!1})]}),(0,l.jsxs)(m.Group,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[z.busy&&(0,l.jsx)(m.Button,{variant:"outline",size:"sm",onClick:wt,"data-ai-kit-cancel-button":!0,children:n.I18n.get("Cancel")}),!z.busy&&(0,l.jsx)(m.Button,{variant:"filled",size:"sm",disabled:!pe,onClick:()=>Ze(),"data-ai-kit-generate-button":!0,children:it()}),!z.busy&&z.lastSource==="on-device"&&at&&ke&&(0,l.jsx)(m.Button,{variant:"filled",size:"sm",disabled:!pe,onClick:At,"data-ai-kit-regenerate-on-backend-button":!0,children:vt()}),!z.busy&&v&&(0,l.jsx)(m.Button,{variant:"outline",size:"sm",disabled:!U||s==="proofread"&&U.corrections.length===0,onClick:async()=>{v(me==="html"?await Et(U):U),Ee()},"data-ai-kit-accept-button":!0,children:n.I18n.get($)}),(0,l.jsx)(m.Button,{variant:"default",size:"sm",onClick:Ee,"data-ai-kit-close-button":!0,children:n.I18n.get("Close")})]}),(0,l.jsx)(Ct,{variation:h})]})})]})]})]})};function ta(e){let{value:r,editable:p,onChange:u}=e;return p?(0,l.jsxs)(m.Stack,{p:0,gap:"sm",children:[(0,l.jsx)(m.Input.Label,{children:n.I18n.get("Generated content")}),(0,l.jsx)(m.Textarea,{value:r,onChange:a=>u?.(a.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor"}),(0,l.jsx)(m.Input.Label,{children:n.I18n.get("Preview")}),(0,l.jsx)(m.Stack,{className:"ai-feature-generated-content ai-feature-preview",children:(0,l.jsx)(Zt.default,{remarkPlugins:[$t.default],children:r})})]}):(0,l.jsx)(m.Stack,{className:"ai-feature-generated-content",children:r?(0,l.jsx)(Zt.default,{remarkPlugins:[$t.default],children:r}):(0,l.jsx)(m.Alert,{color:"yellow",children:n.I18n.get("No content generated.")})})}var na=tt(_a);var f=require("@mantine/core"),fe=require("@tabler/icons-react"),mt=require("@smart-cloud/ai-kit-core"),oa=require("@wordpress/data"),A=require("aws-amplify/utils"),o=require("react"),sa=Pe(require("react-markdown"),1),la=Pe(require("remark-gfm"),1);var Za="ai-kit-chatbot-attachments",nt="attachments";var Qt=null;function $a(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function Xt(){if(!$a())return null;Qt||(Qt=new Promise(e=>{try{let r=window.indexedDB.open(Za,1);r.onerror=()=>e(null),r.onblocked=()=>e(null),r.onupgradeneeded=()=>{let p=r.result;p.objectStoreNames.contains(nt)||p.createObjectStore(nt,{keyPath:"id"})},r.onsuccess=()=>e(r.result)}catch(r){console.warn("[AiChatbot] IndexedDB is not available",r),e(null)}}));try{return await Qt}catch(e){return console.warn("[AiChatbot] Failed to open attachment store",e),null}}async function aa(e,r){let p=await Xt();return p?new Promise((u,a)=>{try{let h=p.transaction(nt,e),R=h.objectStore(nt),N=r(R);h.oncomplete=()=>u(N),h.onerror=()=>a(h.error),h.onabort=()=>a(h.error)}catch(h){a(h)}}).catch(u=>(console.warn("[AiChatbot] Attachment store transaction failed",u),null)):null}async function ra(e,r,p){let u={id:e,blob:r,name:p.name,type:p.type,size:p.size,createdAt:Date.now()};return await aa("readwrite",h=>(h.put(u),e))}async function en(e){let r=await Xt();return r?new Promise((p,u)=>{try{let a=r.transaction(nt,"readonly"),h=a.objectStore(nt).get(e);h.onsuccess=()=>{let R=h.result;p(R??null)},h.onerror=()=>u(h.error),a.onabort=()=>u(a.error)}catch(a){u(a)}}).catch(p=>(console.warn("[AiChatbot] Failed to load attachment",p),null)):null}async function Kt(){await aa("readwrite",e=>{e.clear()})}async function tn(e){let r=await Xt();r&&await new Promise((p,u)=>{try{let a=r.transaction(nt,"readwrite"),h=a.objectStore(nt),R=h.getAllKeys();R.onsuccess=()=>{let N=R.result;for(let te of N){let ne=String(te);e.has(ne)||h.delete(te)}},R.onerror=()=>u(R.error),a.oncomplete=()=>p(),a.onerror=()=>u(a.error),a.onabort=()=>u(a.error)}catch(a){u(a)}}).catch(p=>{console.warn("[AiChatbot] Failed to cleanup attachments",p)})}var d=require("react/jsx-runtime");A.I18n.putVocabularies(Xe);var Bt=1440*60*1e3,Qa=1,Xa="localstorage",dt=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,Ot={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 gt(e){return`${e}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var er=4,tr=5*1024*1024,nr=e=>{let r=(e?.name||"").toString(),p=(e?.code||"").toString(),u=(e?.message||"").toString();return r==="AbortError"||p==="ABORT_ERR"||/abort|aborted|cancel/i.test(u)},ar=(e,r)=>{if(!e)return null;let p=e.step,u=A.I18n.get((e.message??"").trim()),a=typeof e.progress=="number"?e.progress:null,h=a==null?null:Math.round(a*100);switch(p){case"decide":return u||A.I18n.get("Checking capabilities...");case"on-device:init":return u||A.I18n.get("Initializing on-device AI...");case"on-device:download":return h==null?u||A.I18n.get("Downloading model..."):u||`${A.I18n.get("Downloading model...")} ${h}%`;case"on-device:ready":return u||A.I18n.get("On-device model ready...");case"on-device:run":return u||A.I18n.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return A.I18n.get(r.assistantThinkingLabel??Ot.assistantThinkingLabel);case"done":return u||A.I18n.get("Done.");case"error":return u||A.I18n.get("An error occurred.");default:return u||null}};function nn(e){if(typeof window>"u")return null;try{return e==="localstorage"?window.localStorage:e==="sessionstorage"?window.sessionStorage:null}catch{return null}}var Ut=e=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(e)}catch{return null}},an=e=>{if(e&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(e)}catch{}},ua=e=>{!e||e.length===0||e.forEach(r=>an(r.objectUrl))},ia=e=>{e.forEach(r=>ua(r.attachments))},rr=e=>{let{rootElement:r,store:p,previewMode:u,title:a,openButtonTitle:h,openButtonIcon:R,showOpenButtonTitle:N=!0,showOpenButtonIcon:te=!0,colorMode:ne,language:E,onClose:ae,placeholder:ke,maxImages:$,maxImageBytes:S,historyStorage:s=Xa,emptyHistoryAfterDays:x=Qa,labels:be,openButtonIconLayout:re="top",openButtonPosition:j="bottom-right"}=e,y=(0,o.useMemo)(()=>({...Ot,...be||{}}),[be]),v=ot(),[Q,F]=(0,o.useState)(""),[ie,H]=(0,o.useState)([]),[X,M]=(0,o.useState)([]),[J,ce]=(0,o.useState)(null),[Me,Je]=(0,o.useState)(!1),[ge,at]=(0,o.useState)(!1),[Se,Ae]=(0,o.useState)(!1),[ee,U]=(0,o.useState)(!1),[V,Re]=(0,o.useState)(!0),[Fe,qe]=(0,o.useState)(null),[de,Ve]=(0,o.useState)(!1),[Ne,I]=(0,o.useState)(null),[L,ye]=(0,o.useState)(null),[me,De]=(0,o.useState)(!1),[C,Ie]=(0,o.useState)(null),le=(0,o.useRef)(C);(0,o.useEffect)(()=>{le.current=C},[C]);let He=(0,o.useRef)(null),ze=(0,o.useRef)(!1),[Ht,Ye]=(0,o.useState)(null),_e=(0,o.useRef)(null),Be=(0,o.useRef)(null),Ce=(0,o.useRef)(null),yt=(0,o.useRef)(null),ve=(0,o.useCallback)(t=>{t.forEach(g=>an(g.objectUrl))},[]),pe=(0,o.useCallback)(()=>{ve(it.current),H([]),_e.current&&(_e.current.value="")},[ve]),[z,rt]=(0,o.useState)(null),Ze=(0,o.useRef)(Q),At=(0,o.useRef)(X),pt=(0,o.useRef)(z),it=(0,o.useRef)(ie);(0,o.useEffect)(()=>{Ze.current=Q},[Q]),(0,o.useEffect)(()=>{it.current=ie},[ie]),(0,o.useEffect)(()=>{At.current=X},[X]),(0,o.useEffect)(()=>{pt.current=z},[z]),(0,o.useEffect)(()=>{E&&A.I18n.setLanguage(E||"en")},[E]);let vt=(0,oa.useSelect)(()=>(0,mt.getStoreSelect)(p).isShowChatbotPreview()),Ee=(0,o.useMemo)(()=>Math.max(0,$??er),[$]),wt=(0,o.useMemo)(()=>Math.max(0,S??tr),[S]),$e=X.length>0,_=(0,o.useMemo)(()=>v.busy&&C==="chat",[v.busy,C]),ht=(0,o.useMemo)(()=>_?!1:Q.trim().length>0,[Q,_]),Qe=(0,o.useMemo)(()=>{let t=h||y.askMeLabel;return A.I18n.get(t)},[h,y.askMeLabel,E]),Gt=(0,o.useMemo)(()=>{let t=a||y.modalTitle;return A.I18n.get(t)},[a,y.modalTitle,E]),jt=(0,o.useMemo)(()=>{let t=ke||y.placeholder;return A.I18n.get(t)},[ke,y.placeholder,E]),Tt=(0,o.useMemo)(()=>{let t="ai-docs-ask",g=`ai-open-btn--${j}`;return`${t} ${g}`},[j]),i=(0,o.useCallback)(()=>{let t=yt.current;if(t)try{let g=window.innerHeight||document.documentElement.clientHeight,b=360,c=1e3,D=Math.floor(g*.8),P=Math.max(b,Math.min(D,c));t.style.height=`${P}px`}catch{}},[]),k=(0,o.useCallback)(()=>{let t=L;t&&window.setTimeout(()=>{try{t.scrollTop=t.scrollHeight}catch{}},50)},[L]),G=(0,o.useCallback)(()=>{U(!1),ge&&at(!1),Ae(!1),ae?.()},[ge,ae]);(0,o.useEffect)(()=>{if(ee)return i(),window.addEventListener("resize",i),()=>window.removeEventListener("resize",i)},[ee,i]),(0,o.useEffect)(()=>{if(!(!ee||!ge))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[ee,ge,G]);let q=(0,o.useMemo)(()=>ie.map(t=>({id:t.id,url:t.objectUrl,title:t.file.name})),[ie]);(0,o.useEffect)(()=>{$e||Re(!0)},[$e]),(0,o.useEffect)(()=>()=>{ve(it.current)},[ve]),(0,o.useEffect)(()=>{let t=L;if(!t)return;let g=()=>{let b=t.scrollHeight-(t.scrollTop+t.clientHeight);Re(b<20)};return t.addEventListener("scroll",g),()=>{t.removeEventListener("scroll",g)}},[ee,L]),(0,o.useEffect)(()=>{if(!V)return;let t=L;t&&t.scrollHeight>t.clientHeight&&(t.scrollTop=t.scrollHeight)},[X,v.busy,V,L]),(0,o.useEffect)(()=>{ee||qe(null)},[ee]);let ue=(0,o.useMemo)(()=>v.busy?ar(v.statusEvent,y)||A.I18n.get("Working\u2026"):null,[v.busy,v.statusEvent,E,y]),Y=(0,o.useMemo)(()=>{for(let t=X.length-1;t>=0;t--){let g=X[t];if(g.role==="user"&&g.clientStatus==="canceled")return g.id}return null},[X]),W=(0,o.useCallback)(t=>{M(g=>{let b=[...g].map((P,K)=>({m:P,i:K})).reverse().find(P=>P.m.role==="user"&&P.m.clientStatus==="pending")?.i;if(b==null)return g;let c=g.slice(),D=c[b];return c[b]={...D,clientStatus:t??void 0},c})},[M]),oe=(0,o.useCallback)(()=>{if(!(!v.busy||le.current!=="chat")){ze.current=!0;try{v.cancel()}catch{}W("canceled"),Ie(null),ce(null),k()}},[v,W,k]),Ge=(0,o.useCallback)(t=>{let g=it.current,b=Array.from(t.target.files||[]),c=Math.max(0,Ee-g.length);if(c===0){t.currentTarget.value="";return}let D=[];for(let P of b){if(D.length>=c)break;let K=/image\/(jpeg|png|gif|webp)/i.test(P.type),Z=P.size<=wt,Le=[...g,...D].some(Ke=>Ke.file.name===P.name&&Ke.file.size===P.size&&Ke.file.lastModified===P.lastModified);if(!K||!Z||Le)continue;let Ue=Ut(P);Ue&&D.push({id:gt("composer-image"),file:P,objectUrl:Ue})}D.length&&H(P=>[...P,...D]),t.currentTarget.value=""},[Ee,wt]),St=(0,o.useCallback)(t=>{H(g=>{if(t<0||t>=g.length)return g;let b=g[t];return b&&an(b.objectUrl),g.filter((c,D)=>D!==t)})},[]),xe=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(J)return xe.current&&(window.clearTimeout(xe.current),xe.current=null),xe.current=window.setTimeout(()=>{ce(null),xe.current=null},6e3),()=>{xe.current&&(window.clearTimeout(xe.current),xe.current=null)}},[J]);let rn=(0,o.useCallback)(async t=>{if(!t.length)return[];let g=s!=="nostorage";return(await Promise.all(t.map(async c=>{let D=gt("attachment"),P;if(g)try{P=await ra(D,c.file,{name:c.file.name,type:c.file.type,size:c.file.size})??void 0}catch(Z){console.warn("[AiChatbot] Failed to persist attachment",Z)}let K=Ut(c.file);return{id:D,name:c.file.name,type:c.file.type||"application/octet-stream",size:c.file.size,blobId:P,objectUrl:K??void 0,blob:c.file}}))).filter(Boolean)},[s]),on=(0,o.useCallback)(async t=>{let g=[];for(let b of t){let c;if(b.attachments&&b.attachments.length>0){c=[];for(let D of b.attachments){let P;if(D.blobId)try{P=(await en(D.blobId))?.blob??void 0}catch(Z){console.warn("[AiChatbot] Failed to hydrate attachment",Z)}if(!P)continue;let K=P?Ut(P):null;c.push({...D,objectUrl:K??void 0,blob:P??void 0})}}g.push({...b,attachments:c})}return g},[]),sn=(0,o.useCallback)(async t=>{if(!t||t.length===0){pe();return}let g=[];for(let b of t){let c=b.blob;if(!c&&b.blobId)try{c=(await en(b.blobId))?.blob??void 0}catch(K){console.warn("[AiChatbot] Failed to reload attachment",K)}if(!c)continue;let D=c instanceof File?c:new File([c],b.name||"attachment",{type:b.type||c.type||"application/octet-stream"}),P=Ut(D);if(P&&(g.push({id:gt("composer-image"),file:D,objectUrl:P}),g.length>=Ee))break}if(g.length===0){pe();return}H(b=>(ve(b),g)),_e.current&&(_e.current.value="")},[pe,ve,Ee]),Wt=(0,o.useCallback)((t,g)=>{t&&qe({url:t,title:g})},[]),fa=(0,o.useCallback)(()=>{qe(null)},[]),ln=(0,o.useCallback)(()=>{ia(At.current),pe(),M([]),ce(null),Ce.current=null,rt(null),Re(!0),Je(!1);let t=nn(s);if(t)try{t.removeItem(dt)}catch{}Kt()},[pe,s]),ka=(0,o.useCallback)(()=>{Je(!0)},[]),ba=(0,o.useCallback)(()=>{v.busy&&le.current==="chat"&&oe(),ln()},[v.busy,oe,ln]),un=(0,o.useCallback)(()=>{Je(!1)},[]),cn=(0,o.useCallback)(async(t,g)=>{if(!v.busy)try{let b=Ce.current&&Date.now()-Ce.current.storedAt<x*Bt?Ce.current.id:void 0;if(!b)return;Ie("feedback"),ce(null),await v.run(async({signal:c,onStatus:D})=>(await(0,mt.sendFeedbackMessage)({sessionId:b,feedbackMessageId:t,feedbackType:g},{signal:c,onStatus:D}),null)),ce(null)}catch(b){let c=b?.message?.trim()||A.I18n.get("An error occurred.");ce(c),console.error("Failed to send feedback",b)}finally{Ie(b=>b==="feedback"?null:b)}},[v,E]),dn=(0,o.useCallback)((t,g)=>{M(b=>b.map(c=>c.id!==t||c.role!=="assistant"?c:c.feedback===g?{...c,feedback:void 0}:{...c,feedback:g})),cn(t,g)},[cn]),Rt=(0,o.useCallback)(async()=>{let t=Ze.current.trim();if(!t||v.busy)return;ze.current=!1,ce(null),Ie("chat");let g=[...it.current],b=await rn(g),c=gt("user"),D=Date.now(),P={id:c,role:"user",content:t,createdAt:D,clientStatus:"pending",attachments:b.length?b:void 0};F(""),pe(),M(K=>[...K,P]),ee||U(!0),k();try{let K=Ce.current&&Date.now()-Ce.current.storedAt<x*Bt?Ce.current.id:void 0,Z=await v.run(async({signal:Ue,onStatus:Ke})=>await(0,mt.sendChatMessage)({sessionId:K,message:t,images:g.map(La=>La.file)},{signal:Ue,onStatus:Ke}));if(ze.current){W("canceled");return}if(!Z)throw new Error(A.I18n.get(v.error??y.emptyResponseLabel));Z.sessionId&&(Ce.current={id:Z.sessionId,storedAt:Date.now()});let Le={id:Z.metadata?.messageId||gt("assistant"),role:"assistant",content:Z.result||"",citations:Z.citations,createdAt:Date.now()};M(Ue=>[...Ue.map(st=>st.id===c?{...st,clientStatus:void 0}:st),Le]),rt(D)}catch(K){if(console.error("Error during ask()",K),ze.current||nr(K)){W("canceled");return}let Z=K?.message?.trim()||A.I18n.get(y.unexpectedErrorLabel);M(Le=>[...Le.map(Ke=>Ke.id===c?{...Ke,clientStatus:void 0}:Ke),{id:gt("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${Z}`,createdAt:Date.now()}]),rt(D)}finally{Ie(K=>K==="chat"?null:K),ze.current=!1,Be.current&&Be.current.focus(),k()}},[v,rn,pe,ee,k,W,y.emptyResponseLabel,y.unexpectedErrorLabel,E]),ya=(0,o.useCallback)(t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),ht&&Rt())},[Rt,ht]),Aa=(0,o.useCallback)(()=>{U(!0)},[]);(0,o.useEffect)(()=>()=>{He.current!=null&&(cancelAnimationFrame(He.current),He.current=null)},[]);let va=(0,o.useCallback)(()=>{at(t=>{let g=!t;return He.current!=null&&(cancelAnimationFrame(He.current),He.current=null),g?(Ae(!0),requestAnimationFrame(()=>{He.current=requestAnimationFrame(()=>{Ae(!1),He.current=null})})):Ae(!1),g})},[]),wa=(0,o.useCallback)(t=>{F(t.content),(async()=>(await sn(t.attachments),M(g=>g.filter(b=>b.id!==t.id)),ua(t.attachments),queueMicrotask(()=>Be.current?.focus())))()},[sn]),gn=(0,o.useMemo)(()=>te?R?(0,d.jsx)("img",{src:R,className:"ai-open-btn-icon",alt:A.I18n.get(y.askMeLabel||Qe)}):(0,d.jsx)(fe.IconMessage,{size:18}):null,[te,R,y,Qe,E]),Ta=(0,o.useMemo)(()=>{let t=gn,g=N?(0,d.jsx)(f.Text,{inherit:!0,children:Qe}):null;if(!te&&!g)return null;if(!te)return g;if(!N)return t;switch(re){case"top":return(0,d.jsxs)(f.Stack,{gap:4,align:"center",children:[t,g]});case"bottom":return(0,d.jsxs)(f.Stack,{gap:4,align:"center",children:[g,t]});case"right":return(0,d.jsxs)(f.Group,{gap:6,align:"center",children:[g,t]});default:return(0,d.jsxs)(f.Group,{gap:6,align:"center",children:[t,g]})}},[gn,te,N,Qe,re]),Sa=(0,o.useMemo)(()=>_,[_]),Ra=(0,o.useMemo)(()=>!_,[_]),Ia=(0,o.useMemo)(()=>J||($e?A.I18n.get(y.readyLabel):A.I18n.get(y.readyEmptyLabel)),[J,$e,y.readyLabel,y.readyEmptyLabel,E]),za=(0,o.useMemo)(()=>_?A.I18n.get(y.cancelLabel):A.I18n.get(y.sendLabel),[_,y.cancelLabel,y.sendLabel,E]),Ca=(0,o.useMemo)(()=>_?(0,d.jsx)(fe.IconPlayerStop,{size:18}):(0,d.jsx)(fe.IconSend,{size:18}),[_]),xa=(0,o.useCallback)(()=>{if(_){oe();return}Rt()},[_,oe,Rt]);return(0,o.useEffect)(()=>{if(!ee||!Ne||!L)return;let t=()=>{let Z=window.getComputedStyle(L).overflowY,Le=Z==="auto"||Z==="scroll",Ue=Math.ceil(L.scrollHeight),Ke=Math.floor(L.clientHeight),st=Ue>Ke;return Le&&st},g=!1,b=K=>{if(!t())return;K.preventDefault();let Z=L.scrollHeight-L.clientHeight;L.scrollTop=Math.max(0,Math.min(Z,L.scrollTop+K.deltaY))},c=()=>{let K=t();De(K),K!==g&&(g=K,g?Ne.addEventListener("wheel",b,{passive:!1}):Ne.removeEventListener("wheel",b))};c();let D=new ResizeObserver(c);D.observe(L);let P=new MutationObserver(c);return P.observe(L,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",c),()=>{g&&Ne.removeEventListener("wheel",b),D.disconnect(),P.disconnect(),window.removeEventListener("resize",c)}},[ee,Ne,L]),(0,o.useEffect)(()=>{let t=!1,g=nn(s);if(!g){s==="nostorage"&&Kt(),Ve(!0);return}return(async()=>{try{let b=g.getItem(dt);if(!b){Ve(!0);return}let c=JSON.parse(b),D=typeof c?.lastUserSentAt=="number"?c.lastUserSentAt:null;if(!D||Date.now()-D>x*Bt){g.removeItem(dt),await Kt(),Ve(!0);return}let K=(Array.isArray(c.messages)?c.messages:[]).map(Le=>Le?.role==="user"&&Le.clientStatus==="pending"?{...Le,clientStatus:"canceled"}:Le),Z=await on(K);if(t){ia(Z);return}M(Z),rt(D),c.session&&c.session.id&&(Ce.current=c.session)}catch(b){console.warn("[AiChatbot] Failed to load history",b);try{g.removeItem(dt)}catch{}}finally{t||Ve(!0)}})(),()=>{t=!0}},[s,x,on]),(0,o.useEffect)(()=>{if(!de)return;let t=nn(s);if(!t)return;let g=pt.current;if(!g)return;if(Date.now()-g>x*Bt){try{t.removeItem(dt)}catch{}tn(new Set);return}let b=X.map(({attachments:P,...K})=>({...K,attachments:P?.map(({objectUrl:Z,blob:Le,...Ue})=>Ue)})),c={version:1,lastUserSentAt:g,session:Ce.current,messages:b};try{t.setItem(dt,JSON.stringify(c))}catch{}let D=new Set;b.forEach(P=>{P.attachments?.forEach(K=>{K.blobId&&D.add(K.blobId)})}),tn(D)},[de,X,z,s,x]),u&&!vt||!u&&vt?null:(0,d.jsxs)(f.Group,{className:Tt,children:[!ee&&(0,d.jsx)(f.Button,{variant:"filled",className:N?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:Aa,"aria-label":Qe,title:Qe,"data-ai-kit-open-button":!0,children:Ta}),ee&&(0,d.jsx)(f.Modal.Root,{ref:yt,opened:ee,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:G,className:Tt+" ai-chat-container"+(ge?" maximized":"")+(ge&&Se?" ai-max-enter":""),portalProps:{target:r,reuseTargetNode:!0},"data-ai-kit-theme":ne,"data-ai-kit-variation":"modal",children:(0,d.jsxs)("div",{className:"ai-chat-container-internal",ref:I,children:[(0,d.jsxs)(f.Modal.Header,{className:"ai-chat-header-bar",children:[(0,d.jsx)(f.Modal.Title,{className:"ai-chat-title",children:Gt}),(0,d.jsxs)(f.Group,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&(0,d.jsx)(f.ActionIcon,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:va,title:ge?A.I18n.get(y.restoreSizeLabel):A.I18n.get(y.maximizeLabel),"aria-label":ge?A.I18n.get(y.restoreSizeLabel):A.I18n.get(y.maximizeLabel),"data-ai-kit-maximize-button":!0,children:ge?(0,d.jsx)(fe.IconMinimize,{size:16}):(0,d.jsx)(fe.IconMaximize,{size:16})}),(0,d.jsx)(f.Modal.CloseButton,{"aria-label":A.I18n.get(y.closeChatLabel)})]})]}),(0,d.jsxs)(f.Modal.Body,{className:"ai-chat-scroll",ref:ye,"data-scrollable":me?"true":"false",children:[X.map(t=>{let g=t.role==="user",b=g&&t.clientStatus==="canceled"&&t.id===Y;return(0,d.jsx)(f.Group,{justify:g?"flex-end":"flex-start",className:"ai-chat-row "+t.role,onMouseEnter:()=>Ye(t.id),onMouseLeave:()=>Ye(c=>c===t.id?null:c),children:(0,d.jsxs)(f.Stack,{gap:4,w:"100%",style:{alignItems:g?"flex-end":"flex-start"},children:[(0,d.jsxs)(f.Stack,{className:"ai-chat-bubble",children:[(0,d.jsxs)(f.Text,{className:"ai-chat-header",children:[(0,d.jsx)(f.Text,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:g?A.I18n.get(y.userLabel):A.I18n.get(y.assistantLabel)}),"\xA0",(0,d.jsx)(f.Text,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),t.role==="assistant"?(0,d.jsx)(sa.default,{remarkPlugins:[la.default],children:t.content}):(0,d.jsx)(f.Text,{size:"sm",miw:"100px",children:t.content})]}),t.attachments&&t.attachments.length>0&&(0,d.jsx)(f.Group,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:t.attachments.map(c=>(0,d.jsx)("button",{type:"button",className:"thumb",style:{backgroundImage:c.objectUrl?`url(${c.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>Wt(c.objectUrl,c.name),disabled:!c.objectUrl,title:c.name||A.I18n.get("View image"),"aria-label":c.name||A.I18n.get("View image"),children:!c.objectUrl&&(0,d.jsx)(f.Text,{size:"xs",c:"dimmed",children:A.I18n.get("Loading image...")})},c.id))}),b&&(0,d.jsxs)(f.Group,{justify:"flex-end",gap:"xs",children:[(0,d.jsx)(f.Text,{size:"xs",c:"dimmed",children:(0,d.jsx)("em",{children:A.I18n.get(y.notSentLabel)})}),Ht===t.id&&(0,d.jsx)(f.ActionIcon,{size:"sm",variant:"subtle",onClick:()=>wa(t),title:A.I18n.get(y.editLabel),"aria-label":A.I18n.get(y.editLabel),"data-ai-kit-edit-button":!0,children:(0,d.jsx)(fe.IconPencil,{size:14})})]}),t.citations&&t.citations.length>0&&(0,d.jsxs)(f.Stack,{className:"ai-citations",children:[(0,d.jsx)(f.Text,{fw:"bold",size:"sm",mb:"xs",children:A.I18n.get(y.referencesLabel)}),(0,d.jsx)(f.List,{spacing:"xs",size:"sm",children:t.citations.map((c,D)=>{let P=c.sourceUrl||c.url,K=c.title||P||`${A.I18n.get(y.referenceLabel)} #${D+1}`;return(0,d.jsxs)(f.List.Item,{children:[P?(0,d.jsx)(f.Anchor,{href:P,target:"_blank",rel:"noreferrer",children:K}):(0,d.jsx)(f.Text,{children:K}),c.snippet?(0,d.jsx)(f.Text,{size:"xs",c:"dimmed",mt:4,children:c.snippet}):null]},D)})})]}),t.role==="assistant"&&(0,d.jsxs)(f.Group,{className:"ai-feedback",gap:"xs",children:[(0,d.jsx)(f.Button,{className:t.feedback==="accepted"?"active":void 0,onClick:()=>dn(t.id,"accepted"),"aria-label":A.I18n.get(y.acceptResponseLabel),disabled:v.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),(0,d.jsx)(f.Button,{type:"button",className:t.feedback==="rejected"?"active":void 0,onClick:()=>dn(t.id,"rejected"),"aria-label":A.I18n.get(y.rejectResponseLabel),disabled:v.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},t.id)}),Sa&&(0,d.jsx)(f.Group,{justify:"flex-start",className:"ai-chat-row assistant status",children:(0,d.jsxs)(f.Stack,{className:"ai-chat-bubble typing",children:[ue?(0,d.jsx)(f.Text,{size:"sm",c:"dimmed",children:(0,d.jsx)("em",{children:ue})}):null,(0,d.jsxs)("div",{className:"typing-indicator",children:[(0,d.jsx)("span",{}),(0,d.jsx)("span",{}),(0,d.jsx)("span",{})]})]})})]}),Ra&&(0,d.jsx)(f.Group,{className:"ai-status-line",children:(0,d.jsx)(f.Text,{className:"ai-status-text",children:(0,d.jsx)("em",{children:Ia})})}),(0,d.jsxs)(f.Stack,{className:"ai-box ai-box-open",children:[(0,d.jsxs)(f.Modal,{opened:Me,onClose:un,centered:!0,title:A.I18n.get("Reset conversation"),style:{position:"fixed"},left:0,children:[(0,d.jsx)(f.Text,{size:"sm",children:A.I18n.get("Are you sure you want to reset the conversation?")}),(0,d.jsxs)(f.Group,{justify:"flex-end",mt:"md",children:[(0,d.jsx)(f.Button,{variant:"default",onClick:un,"data-ai-kit-no-button":!0,children:A.I18n.get("No")}),(0,d.jsx)(f.Button,{color:"var(--ai-kit-color-danger, red)",onClick:ba,disabled:!$e&&!_,"data-ai-kit-yes-button":!0,children:A.I18n.get("Yes")})]})]}),(0,d.jsx)(f.Group,{children:(0,d.jsx)(f.Textarea,{className:"ai-message",ref:Be,placeholder:jt,value:Q,onChange:t=>{F(t.target.value)},onKeyDown:ya,rows:3})}),(0,d.jsxs)(f.Group,{className:"ai-actions",justify:"space-between",w:"100%",children:[(0,d.jsx)(f.Group,{justify:"flex-start",children:(0,d.jsx)(f.Button,{variant:"light",leftSection:(0,d.jsx)(fe.IconTrash,{size:18}),onClick:ka,disabled:!$e&&!_,"data-ai-kit-reset-button":!0,children:A.I18n.get(y.resetLabel)})}),(0,d.jsxs)(f.Group,{justify:"flex-end",children:[Ee>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.Button,{variant:"outline",leftSection:(0,d.jsx)(fe.IconPaperclip,{size:18}),onClick:()=>_e.current?.click(),disabled:ie.length>=Ee||_,title:A.I18n.get(y.addImageLabel),"data-ai-kit-add-image-button":!0,children:A.I18n.get(y.addLabel)}),(0,d.jsx)(f.Input,{ref:_e,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:Ge})]}),(0,d.jsx)(f.Button,{leftSection:Ca,variant:"filled",onClick:xa,disabled:!_&&!ht,"data-ai-kit-send-button":!0,children:za})]})]}),q.length>0&&(0,d.jsx)(f.Group,{className:"ai-thumbs",mt:"xs",gap:"xs",children:q.map(({url:t,title:g},b)=>(0,d.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||A.I18n.get("View image"),onClick:()=>Wt(t,g),onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),Wt(t,g))},children:(0,d.jsx)(f.Button,{variant:"white",onClick:c=>{c.stopPropagation(),St(b)},"aria-label":A.I18n.get(y.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:A.I18n.get(y.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},ie[b]?.id??b))})]})]})}),(0,d.jsx)(f.Modal,{opened:!!Fe,onClose:fa,centered:!0,size:"auto",title:Fe?.title||A.I18n.get("Image preview"),children:Fe&&(0,d.jsx)("img",{src:Fe.url,alt:Fe.title||A.I18n.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},ca=tt(rr,{showOpenButton:!0,variation:"modal"});var w=require("@mantine/core"),Nt=require("@smart-cloud/ai-kit-core"),Te=require("aws-amplify/utils"),se=require("react"),da=Pe(require("react-markdown"),1),ga=Pe(require("rehype-raw"),1),ma=Pe(require("remark-gfm"),1),pa=require("@tabler/icons-react");var T=require("react/jsx-runtime");Te.I18n.putVocabularies(Xe);function ir(e){let r=e?.citations?.docs??[],p=e?.citations?.chunks??[],u=new Map;for(let a of r)u.set(a.docId,{doc:a,chunks:[]});for(let a of p){let h=u.get(a.docId);h?h.chunks.push(a):u.set(a.docId,{doc:{docId:a.docId},chunks:[a]})}return Array.from(u.values())}var or=e=>{let{autoRun:r=!0,context:p,title:u,searchButtonIcon:a,showSearchButtonTitle:h=!0,showSearchButtonIcon:R=!0,showSources:N=!0,topK:te=10,getSearchText:ne,variation:E,rootElement:ae,colorMode:ke,language:$,onClose:S,onClickDoc:s}=e,[x,be]=(0,se.useState)(""),{busy:re,error:j,statusEvent:y,result:v,run:Q,cancel:F,reset:ie}=ot(),H=(0,se.useRef)(!1),X=v?.sessionId,M=v?.citations?.docs??[],J=v?.citations?.chunks??[],ce=v?.citations?.anchors??[],Me=v?.result??"",Je=(0,se.useMemo)(()=>{if(R)return a?.trim()?(0,T.jsx)("img",{src:a,alt:"",style:{width:18,height:18,objectFit:"contain"}}):(0,T.jsx)(pa.IconSearch,{size:18})},[a,R]),ge=(0,se.useMemo)(()=>($&&Te.I18n.setLanguage($||"en"),Te.I18n.get(u||"Search with AI-Kit")),[$]),at=(0,se.useMemo)(()=>y?Te.I18n.get("Searching\u2026"):null,[$,y]),Se=(0,se.useMemo)(()=>x||ne,[x,ne]),Ae=(0,se.useMemo)(()=>{if(re)return!1;let I=typeof Se=="function"?Se():Se;return!!(I&&I.trim().length>0)},[Se,re]),ee=(0,se.useCallback)(async()=>{let I=typeof Se=="function"?Se():Se;I&&(be(I),ie(),await Q(async({signal:L,onStatus:ye})=>await(0,Nt.sendSearchMessage)({sessionId:X,query:I,topK:te},{signal:L,onStatus:ye,context:p})))},[p,Se,Q,ie,te,X]),U=(0,se.useCallback)(async()=>{ie(),S(),H.current=!1},[S,ie,H]);(0,se.useEffect)(()=>{!r||!Ae||re||H.current||(H.current=!0,queueMicrotask(()=>{ee()}))},[re,H,Ae,r,ee]),(0,se.useEffect)(()=>{Ae||(H.current=!0)},[Ae]);let V=(0,se.useMemo)(()=>ir(v),[v]),Re=(0,se.useMemo)(()=>{let I=new Map;return M.forEach((L,ye)=>{L?.docId&&I.set(L.docId,ye+1)}),I},[M]),Fe=(0,se.useMemo)(()=>{let I=new Map;return J.forEach(L=>{L?.chunkId&&L?.docId&&I.set(L.chunkId,L.docId)}),I},[J]),qe=(0,se.useMemo)(()=>{if(!Me)return"";if(!ce.length||Re.size===0)return Me;let I=[...ce].filter(me=>Array.isArray(me?.chunkIds)&&me?.span?.end!==void 0).sort((me,De)=>{let C=me.span?.end??0,Ie=De.span?.end??0;return C-Ie}),L=0,ye=[];for(let me of I){let De=me.span?.end;if(typeof De!="number"||De<L)continue;let C=Array.from(new Set((me.chunkIds??[]).map(le=>le?Fe.get(le):void 0).map(le=>le?Re.get(le):void 0).filter(le=>typeof le=="number")));if(!C.length)continue;let Ie=Math.min(De,Me.length);ye.push(Me.slice(L,Ie)),ye.push(`<sup>${C.join(",")}</sup>`),L=Ie}return ye.push(Me.slice(L)),ye.join("")},[ce,Me]),de=E==="modal"?w.Modal.Root:w.Group,Ve=E==="modal"?w.Modal.Content:w.Group,Ne=E==="modal"?w.Modal.Body:w.Group;return(0,se.useEffect)(()=>{if(E==="modal")return document.body.style.overflow="hidden",document.body.onkeydown=I=>{I.key==="Escape"&&(I.preventDefault(),U())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[U,E]),(0,T.jsxs)(de,{opened:!0,className:"doc-search-root",onClose:U,padding:"md",gap:"md",size:"md",portalProps:E==="modal"?{target:ae,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":ke,"data-ai-kit-variation":E,children:[E==="modal"&&(0,T.jsx)(w.Modal.Overlay,{}),(0,T.jsxs)(Ve,{w:"100%",style:{left:0},children:[E==="modal"&&(0,T.jsxs)(w.Modal.Header,{style:{zIndex:1e3},children:[(0,T.jsx)(Nt.AiKitDocSearchIcon,{className:"doc-search-title-icon"}),(0,T.jsx)(w.Modal.Title,{children:Te.I18n.get(ge)}),(0,T.jsx)(w.Modal.CloseButton,{})]}),(0,T.jsx)(Ne,{w:"100%",style:{zIndex:1001},children:(0,T.jsx)(ut,{enabled:E!=="modal",working:re,variation:E,children:(0,T.jsx)(w.Paper,{shadow:"sm",radius:"md",p:"md",children:(0,T.jsxs)(w.Stack,{gap:"sm",children:[E!=="modal"&&(0,T.jsx)(w.Title,{order:4,style:{margin:0},children:Te.I18n.get(ge)}),(0,T.jsxs)(w.Group,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[(0,T.jsx)(w.TextInput,{style:{flex:1},value:x,onChange:I=>be(I.currentTarget.value),placeholder:Te.I18n.get("Search the documentation\u2026"),disabled:re,onKeyDown:I=>{I.key==="Enter"&&Ae&&(I.preventDefault(),ee())}}),(0,T.jsx)(w.Button,{variant:"filled",size:"sm",leftSection:Je,onClick:()=>{ee()},disabled:!Ae,className:h?"doc-search-button":"doc-search-button-no-title",children:h?Te.I18n.get("Search"):null}),re?(0,T.jsx)(w.Button,{variant:"outline",size:"sm",onClick:F,children:Te.I18n.get("Stop")}):null]}),j?(0,T.jsx)(w.Alert,{color:"red",title:Te.I18n.get("Error"),children:j}):null,re&&at&&(0,T.jsx)(ut,{enabled:E==="modal",working:!0,variation:E,children:(0,T.jsxs)(w.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,T.jsx)(w.Loader,{size:"sm"}),(0,T.jsx)(w.Text,{size:"sm",c:"dimmed",children:at})]})}),v?.result?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(w.Divider,{}),(0,T.jsxs)(w.Stack,{gap:"xs","data-doc-search-result":!0,children:[(0,T.jsx)(w.Text,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:Te.I18n.get("AI Summary")}),(0,T.jsx)(da.default,{remarkPlugins:[ma.default],rehypePlugins:[ga.default],"data-doc-search-result-content":!0,children:qe||Me})]})]}):null,N&&(v?.citations?.docs?.length||v?.citations?.chunks?.length)?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(w.Divider,{}),(0,T.jsxs)(w.Stack,{gap:"sm","data-doc-search-sources":!0,children:[(0,T.jsx)(w.Text,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:Te.I18n.get("Sources")}),V.map(({doc:I})=>{let L=I.sourceUrl?.trim()||void 0,ye=I.docId?Re.get(I.docId):void 0,me=I.title?.trim()||I.docId,De=(0,T.jsxs)(w.Text,{fw:600,style:{display:"inline"},children:[ye?`${ye}. `:"",me]});return(0,T.jsx)(w.Paper,{withBorder:!0,radius:"md",p:"sm",children:(0,T.jsx)(w.Stack,{gap:"xs",children:(0,T.jsx)(w.Group,{justify:"space-between",align:"flex-start",children:(0,T.jsxs)(w.Stack,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[L?(0,T.jsx)(w.Anchor,{href:L,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:C=>{s&&(C.preventDefault(),s?.(I))},"data-doc-search-source-title":!0,children:De}):De,(0,T.jsx)(w.Anchor,{href:L,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:C=>{s&&(C.preventDefault(),s?.(I))},"data-doc-search-source-url":!0,children:I.sourceUrl}),I.author?(0,T.jsx)(w.Text,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:I.author}):null,I.description?(0,T.jsx)(w.Text,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:I.description}):null]})})})},I.docId)})]})]}):null,!re&&!j&&!v?.result?(0,T.jsx)(w.Text,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:Te.I18n.get("Enter a search query to start.")}):null,(0,T.jsx)(Ct,{variation:E})]})})})})]})]})},ha=tt(or);0&&(module.exports={AiChatbot,AiFeature,DEFAULT_CHATBOT_LABELS,DocSearch,isBackendConfigured,markdownToHtml,readDefaultOutputLanguage,stripCodeFence,translations,useAiRun,withAiKitShell});
|
|
31
|
+
Follow these additional instructions: ${de}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),q=await z.run(async({signal:W,onStatus:oe})=>(await(0,O.prompt)({messages:G,images:[qe],outputLanguage:"en",responseConstraint:qa},{signal:W,onStatus:oe,context:x,modeOverride:i,onDeviceTimeoutOverride:a})).result);if(!q){V("");return}let ue=(C&&C!=="auto"?C:null)||et(),Y=lt(q).trim();try{J("Translating result...");let W=await z.run(async({signal:oe})=>await Ja(Y,ue,{signal:oe,context:x,modeOverride:i,onDeviceTimeoutOverride:a,silent:!0}));V(W)}catch(W){V(Y),console.warn("AI Kit: failed to parse SEO JSON",W)}break}}}catch(k){ee(k instanceof Error?k.message:n.I18n.get("An unknown error occurred."))}J(void 0)}},[F,z,de,le,C,Re,ze,x,s,Ye,L,pe,X]),At=(0,B.useCallback)(async()=>{await Ze("backend-only")},[Ze]),pt=(0,B.useCallback)(i=>{switch(s){case"proofread":return(0,l.jsx)(We.IconCircleDashedCheck,{className:i});case"translate":return(0,l.jsx)(We.IconLanguage,{className:i});case"summarize":return(0,l.jsx)(We.IconSum,{className:i});case"rewrite":case"write":return(0,l.jsx)(We.IconPencilCode,{className:i});case"generateImageMetadata":case"generatePostMetadata":return(0,l.jsx)(We.IconSeo,{className:i});default:return(0,l.jsx)(O.AiKitFeatureIcon,{mode:s,className:i})}},[s]),it=(0,B.useCallback)(()=>{switch(s){case"proofread":return z.lastSource?n.I18n.get("Proofread again"):n.I18n.get("Proofread");case"translate":return z.lastSource?n.I18n.get("Translate again"):n.I18n.get("Translate");case"rewrite":return z.lastSource?n.I18n.get("Rewrite again"):n.I18n.get("Rewrite");case"summarize":return z.lastSource?n.I18n.get("Summarize again"):n.I18n.get("Summarize");default:return z.lastSource?n.I18n.get("Regenerate"):n.I18n.get("Generate")}},[F,z.lastSource,s]),vt=(0,B.useCallback)(()=>{switch(s){case"proofread":return n.I18n.get("Proofread on Backend");case"translate":return n.I18n.get("Translate on Backend");case"rewrite":return n.I18n.get("Rewrite on Backend");case"summarize":return n.I18n.get("Summarize on Backend");default:return n.I18n.get("Regenerate on Backend")}},[F,s]),Ee=(0,B.useCallback)(async()=>{Me(!1),V(null),ee(null),Be.current=!1,z.reset(),N||y()},[y,Be,z,N]),wt=(0,B.useCallback)(async()=>{z.busy&&z.cancel()},[z.busy]);(0,B.useEffect)(()=>{!ce||!p||!pe||z.busy||U||Be.current||(Be.current=!0,queueMicrotask(()=>{Ze(be)}))},[z.busy,Be,ce,pe,p,U,Ze,be]),(0,B.useEffect)(()=>{X&&s!=="proofread"&&(pe||(ge(!0),Be.current=!0))},[X,pe,s]),(0,B.useEffect)(()=>{let i=!0;return(async()=>{try{await(0,O.waitForAiKitReady)();let k=await Yt();i&&Se(k)}catch(k){console.error(k),i&&Se(!1)}})(),()=>{i=!1}},[]);let $e=(0,B.useMemo)(()=>{let i=[];if(s==="translate"){let k=O.LANGUAGE_OPTIONS.find(G=>G.value===L)?.label;i.push(n.I18n.get("Input language")+": "+(k?n.I18n.get(k):"auto"))}if(C&&H?.outputLanguage){let k=O.LANGUAGE_OPTIONS.find(G=>G.value===C)?.label;i.push(n.I18n.get("Output language")+": "+(k?n.I18n.get(k):C))}return s==="summarize"&&Ye&&H?.type&&i.push(n.I18n.get("Type")+": "+n.I18n.get(Ye)),(s==="write"||s==="rewrite")&&ze&&H?.tone&&i.push(n.I18n.get("Tone")+": "+n.I18n.get(ze)),(s==="write"||s==="rewrite"||s==="summarize")&&le&&H?.length&&i.push(n.I18n.get("Length")+": "+n.I18n.get(le)),de?.trim()&&H?.instructions&&i.push(n.I18n.get("Instructions")+": \u2713"),i.length?i.join(" \u2022 "):n.I18n.get("No overrides")},[F,s,L,C,Ye,ze,le,de]),_={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},ht=h==="modal"?m.Modal.Root:m.Group,Qe=h==="modal"?m.Modal.Content:m.Group,Gt=h==="modal"?m.Modal.Body:m.Group,jt=S==="collapse"?m.Collapse:m.Stack,Tt=S==="horizontal"?m.Group:m.Stack;return(0,B.useEffect)(()=>{if(!(h!=="modal"||!ce))return document.body.style.overflow="hidden",document.body.onkeydown=i=>{i.key==="Escape"&&(i.preventDefault(),Ee())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[Ee,h]),(0,l.jsxs)(l.Fragment,{children:[N&&(0,l.jsx)(m.Button,{leftSection:ne&&(ae?(0,l.jsx)("span",{dangerouslySetInnerHTML:{__html:ae}}):pt()),className:te?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:ce,onClick:()=>Me(!0),"data-ai-kit-open-button":!0,children:te&&n.I18n.get(E||Ce)}),ce&&(0,l.jsxs)(ht,{opened:!0,className:"ai-feature-root",onClose:Ee,padding:"md",gap:"md",size:"md",portalProps:h==="modal"?{target:ie,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":re,"data-ai-kit-variation":h,children:[h==="modal"&&(0,l.jsx)(m.Modal.Overlay,{}),(0,l.jsxs)(Qe,{w:"100%",style:{left:0},children:[h==="modal"&&(0,l.jsxs)(m.Modal.Header,{style:{zIndex:1e3},children:[pt("ai-feature-title-icon"),(0,l.jsx)(m.Modal.Title,{children:n.I18n.get(Ce)}),(0,l.jsx)(m.Modal.CloseButton,{})]}),(0,l.jsx)(Gt,{w:"100%",style:{zIndex:1001},children:(0,l.jsxs)(ut,{enabled:h!=="modal",working:z.busy,variation:h,children:[(0,l.jsxs)(m.Stack,{gap:"sm",mb:"sm",p:"sm",children:[Ae&&(0,l.jsx)(m.Alert,{color:"red",children:n.I18n.get(Ae)}),X&&s!=="proofread"&&(0,l.jsxs)(m.Paper,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":S,children:[(0,l.jsxs)(m.Group,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:S==="collapse"?()=>ge(i=>!i):void 0,children:[S==="collapse"&&(0,l.jsxs)(m.Stack,{gap:0,children:[(0,l.jsx)(m.Text,{size:"sm",fw:600,style:{lineHeight:1.1},children:n.I18n.get("Options")}),(0,l.jsx)(m.Text,{size:"xs",c:"dimmed",style:{marginTop:2},children:$e})]}),S==="collapse"&&(0,l.jsx)(m.Button,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:i=>{i.stopPropagation(),ge(k=>!k)},children:Je?n.I18n.get("Hide"):n.I18n.get("Show")})]}),(0,l.jsxs)(jt,{in:Je,children:[S==="collapse"&&(0,l.jsx)(m.Divider,{my:"sm"}),(0,l.jsxs)(Tt,{gap:"xs",justify:"space-between",children:[s==="write"&&H?.text&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The topic or subject for the AI to write about."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.TextInput,{size:"xs",className:"ai-feature-option",styles:_,disabled:z.busy,label:n.I18n.get("Topic"),description:S!=="horizontal"?n.I18n.get("The topic or subject for the AI to write about."):void 0,value:Re||"",onChange:i=>{let k=i.target.value;Fe(k),Q?.({text:k})}})}),(s==="write"||s==="rewrite"||s==="generateImageMetadata"||s==="generatePostMetadata")&&H?.instructions&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("Additional instructions to guide the AI."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.TextInput,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Instructions"),description:S!=="horizontal"?n.I18n.get("Additional instructions to guide the AI."):void 0,value:de||"",onChange:i=>{let k=i.target.value;Ve(k),Q?.({instructions:k})}})}),s==="translate"&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The language of the input text."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",styles:_,className:"ai-feature-option",label:n.I18n.get("Input language"),description:S!=="horizontal"?n.I18n.get("The language of the input text."):void 0,data:[{value:"auto",label:n.I18n.get("Auto-detect")},...O.LANGUAGE_OPTIONS.map(i=>({value:i.value,label:n.I18n.get(i.label)})).sort((i,k)=>i.label.localeCompare(k.label))],value:L||"auto",onChange:i=>{let k=i;ye(k),I(void 0),Q?.({inputLanguage:k})}})}),H?.outputLanguage&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",styles:_,className:"ai-feature-option",label:n.I18n.get("Output language"),description:S!=="horizontal"?n.I18n.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[s==="rewrite"?{value:"auto",label:n.I18n.get("Auto-detect")}:void 0].filter(Boolean),...O.LANGUAGE_OPTIONS.map(i=>({value:i.value,label:n.I18n.get(i.label)})).sort((i,k)=>i.label.localeCompare(k.label))],value:C||ea.settings.defaultOutputLanguage||(s==="rewrite"?"auto":""),onChange:i=>{let k=i;Ie(k),I(void 0),Q?.({outputLanguage:k})}})}),s==="summarize"&&H?.type&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The summary style to generate."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Type"),description:S!=="horizontal"?n.I18n.get("The summary style to generate."):void 0,data:[{value:"headline",label:n.I18n.get("Headline")},{value:"key-points",label:n.I18n.get("Key Points")},{value:"teaser",label:n.I18n.get("Teaser")},{value:"tldr",label:n.I18n.get("TL;DR")}],value:Ye||"key-points",onChange:i=>{let k=i;_e(k),Q?.({type:k})}})}),(s==="write"||s==="rewrite")&&H?.tone&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The tone or style for the AI to use."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Tone"),description:S!=="horizontal"?n.I18n.get("The tone or style for the AI to use."):void 0,data:s==="write"?[{value:"neutral",label:n.I18n.get("Neutral")},{value:"formal",label:n.I18n.get("Formal")},{value:"casual",label:n.I18n.get("Casual")}]:[{value:"as-is",label:n.I18n.get("As-Is")},{value:"more-formal",label:n.I18n.get("More formal")},{value:"more-casual",label:n.I18n.get("More casual")}],value:ze||(s==="write"?"neutral":"as-is"),onChange:i=>{let k=i;Ht(k),Q?.({tone:k})}})}),(s==="write"||s==="rewrite"||s==="summarize")&&H?.length&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The target output length."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Length"),description:S!=="horizontal"?n.I18n.get("The target output length."):void 0,data:s==="write"||s==="summarize"?[{value:"short",label:n.I18n.get("Short")},{value:"medium",label:n.I18n.get("Medium")},{value:"long",label:n.I18n.get("Long")}]:[{value:"as-is",label:n.I18n.get("As-Is")},{value:"shorter",label:n.I18n.get("Shorter")},{value:"longer",label:n.I18n.get("Longer")}],value:le||(s==="rewrite"?"as-is":"short"),onChange:i=>{let k=i;He(k),Q?.({length:k})}})}),s==="summarize"||s==="write"||s==="rewrite"&&H?.outputFormat&&(0,l.jsx)(m.Tooltip,{label:n.I18n.get("The format for the generated output."),disabled:S!=="horizontal",position:"top",children:(0,l.jsx)(m.Select,{disabled:z.busy,size:"xs",className:"ai-feature-option",styles:_,label:n.I18n.get("Output format"),description:S!=="horizontal"?n.I18n.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:n.I18n.get("Plain Text")},{value:"markdown",label:n.I18n.get("Markdown")},{value:"html",label:n.I18n.get("HTML")}],value:me||"markdown",onChange:i=>{let k=i;De(k),Q?.({outputFormat:k})}})})]})]})]}),z.busy&&rt&&(0,l.jsx)(ut,{enabled:h==="modal",working:!0,variation:h,children:(0,l.jsxs)(m.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,l.jsx)(m.Loader,{size:"sm"}),(0,l.jsx)(m.Input.Label,{className:"ai-feature-status-text",children:rt})]})}),U&&(0,l.jsxs)(m.Stack,{mt:"md",children:[s==="proofread"&&(U.corrections.length===0?(0,l.jsx)(m.Alert,{color:"green",children:n.I18n.get("No issues found. Your text looks great!")}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("p",{style:{marginTop:0,opacity:.85},children:n.I18n.get("Hover highlights to see explanations.")}),(0,l.jsx)(Vn,{original:Re,corrections:U.corrections}),U.correctedInput?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("h4",{style:{marginTop:16,marginBottom:8},children:n.I18n.get("Corrected")}),(0,l.jsx)(m.Group,{c:"pre",className:"ai-feature-generated-content",children:U.correctedInput})]}):null]})),s==="generateImageMetadata"&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Alt Text"),description:n.I18n.get("The alt text for the image."),value:U.alt_text||"",onChange:i=>V({...U,alt_text:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Title"),description:n.I18n.get("The title for the image."),value:U.title||"",onChange:i=>V({...U,title:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Caption"),description:n.I18n.get("The caption for the image."),value:U.caption||"",onChange:i=>V({...U,caption:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Description"),description:n.I18n.get("The description for the image."),value:U.description||"",onChange:i=>V({...U,description:i.target.value})})]}),s==="generatePostMetadata"&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Title"),description:n.I18n.get("The title for the post."),value:U.title||"",onChange:i=>V({...U,title:i.target.value})}),(0,l.jsx)(m.TextInput,{readOnly:!u,label:n.I18n.get("Excerpt"),description:n.I18n.get("The excerpt for the post."),value:U.excerpt||"",onChange:i=>V({...U,excerpt:i.target.value})})]}),s!=="proofread"&&s!=="generateImageMetadata"&&s!=="generatePostMetadata"&&typeof U=="string"&&(0,l.jsx)(ta,{value:U,editable:!!u,onChange:i=>{V(i)}})]}),U===""&&(0,l.jsx)(ta,{value:U,editable:!1})]}),(0,l.jsxs)(m.Group,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[z.busy&&(0,l.jsx)(m.Button,{variant:"outline",size:"sm",onClick:wt,"data-ai-kit-cancel-button":!0,children:n.I18n.get("Cancel")}),!z.busy&&(0,l.jsx)(m.Button,{variant:"filled",size:"sm",disabled:!pe,onClick:()=>Ze(),"data-ai-kit-generate-button":!0,children:it()}),!z.busy&&z.lastSource==="on-device"&&at&&ke&&(0,l.jsx)(m.Button,{variant:"filled",size:"sm",disabled:!pe,onClick:At,"data-ai-kit-regenerate-on-backend-button":!0,children:vt()}),!z.busy&&v&&(0,l.jsx)(m.Button,{variant:"outline",size:"sm",disabled:!U||s==="proofread"&&U.corrections.length===0,onClick:async()=>{v(me==="html"?await Et(U):U),Ee()},"data-ai-kit-accept-button":!0,children:n.I18n.get($)}),(0,l.jsx)(m.Button,{variant:"default",size:"sm",onClick:Ee,"data-ai-kit-close-button":!0,children:n.I18n.get("Close")})]}),(0,l.jsx)(Ct,{variation:h})]})})]})]})]})};function ta(e){let{value:r,editable:p,onChange:u}=e;return p?(0,l.jsxs)(m.Stack,{p:0,gap:"sm",children:[(0,l.jsx)(m.Input.Label,{children:n.I18n.get("Generated content")}),(0,l.jsx)(m.Textarea,{value:r,onChange:a=>u?.(a.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor"}),(0,l.jsx)(m.Input.Label,{children:n.I18n.get("Preview")}),(0,l.jsx)(m.Stack,{className:"ai-feature-generated-content ai-feature-preview",children:(0,l.jsx)(Zt.default,{remarkPlugins:[$t.default],children:r})})]}):(0,l.jsx)(m.Stack,{className:"ai-feature-generated-content",children:r?(0,l.jsx)(Zt.default,{remarkPlugins:[$t.default],children:r}):(0,l.jsx)(m.Alert,{color:"yellow",children:n.I18n.get("No content generated.")})})}var na=tt(_a);var f=require("@mantine/core"),fe=require("@tabler/icons-react"),mt=require("@smart-cloud/ai-kit-core"),oa=require("@wordpress/data"),A=require("aws-amplify/utils"),o=require("react"),sa=Pe(require("react-markdown"),1),la=Pe(require("remark-gfm"),1);var Za="ai-kit-chatbot-attachments",nt="attachments";var Qt=null;function $a(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function Xt(){if(!$a())return null;Qt||(Qt=new Promise(e=>{try{let r=window.indexedDB.open(Za,1);r.onerror=()=>e(null),r.onblocked=()=>e(null),r.onupgradeneeded=()=>{let p=r.result;p.objectStoreNames.contains(nt)||p.createObjectStore(nt,{keyPath:"id"})},r.onsuccess=()=>e(r.result)}catch(r){console.warn("[AiChatbot] IndexedDB is not available",r),e(null)}}));try{return await Qt}catch(e){return console.warn("[AiChatbot] Failed to open attachment store",e),null}}async function aa(e,r){let p=await Xt();return p?new Promise((u,a)=>{try{let h=p.transaction(nt,e),R=h.objectStore(nt),N=r(R);h.oncomplete=()=>u(N),h.onerror=()=>a(h.error),h.onabort=()=>a(h.error)}catch(h){a(h)}}).catch(u=>(console.warn("[AiChatbot] Attachment store transaction failed",u),null)):null}async function ra(e,r,p){let u={id:e,blob:r,name:p.name,type:p.type,size:p.size,createdAt:Date.now()};return await aa("readwrite",h=>(h.put(u),e))}async function en(e){let r=await Xt();return r?new Promise((p,u)=>{try{let a=r.transaction(nt,"readonly"),h=a.objectStore(nt).get(e);h.onsuccess=()=>{let R=h.result;p(R??null)},h.onerror=()=>u(h.error),a.onabort=()=>u(a.error)}catch(a){u(a)}}).catch(p=>(console.warn("[AiChatbot] Failed to load attachment",p),null)):null}async function Kt(){await aa("readwrite",e=>{e.clear()})}async function tn(e){let r=await Xt();r&&await new Promise((p,u)=>{try{let a=r.transaction(nt,"readwrite"),h=a.objectStore(nt),R=h.getAllKeys();R.onsuccess=()=>{let N=R.result;for(let te of N){let ne=String(te);e.has(ne)||h.delete(te)}},R.onerror=()=>u(R.error),a.oncomplete=()=>p(),a.onerror=()=>u(a.error),a.onabort=()=>u(a.error)}catch(a){u(a)}}).catch(p=>{console.warn("[AiChatbot] Failed to cleanup attachments",p)})}var d=require("react/jsx-runtime");A.I18n.putVocabularies(Xe);var Bt=1440*60*1e3,Qa=1,Xa="localstorage",dt=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,Ot={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 gt(e){return`${e}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var er=4,tr=5*1024*1024,nr=e=>{let r=(e?.name||"").toString(),p=(e?.code||"").toString(),u=(e?.message||"").toString();return r==="AbortError"||p==="ABORT_ERR"||/abort|aborted|cancel/i.test(u)},ar=(e,r)=>{if(!e)return null;let p=e.step,u=A.I18n.get((e.message??"").trim()),a=typeof e.progress=="number"?e.progress:null,h=a==null?null:Math.round(a*100);switch(p){case"decide":return u||A.I18n.get("Checking capabilities...");case"on-device:init":return u||A.I18n.get("Initializing on-device AI...");case"on-device:download":return h==null?u||A.I18n.get("Downloading model..."):u||`${A.I18n.get("Downloading model...")} ${h}%`;case"on-device:ready":return u||A.I18n.get("On-device model ready...");case"on-device:run":return u||A.I18n.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return A.I18n.get(r.assistantThinkingLabel??Ot.assistantThinkingLabel);case"done":return u||A.I18n.get("Done.");case"error":return u||A.I18n.get("An error occurred.");default:return u||null}};function nn(e){if(typeof window>"u")return null;try{return e==="localstorage"?window.localStorage:e==="sessionstorage"?window.sessionStorage:null}catch{return null}}var Ut=e=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(e)}catch{return null}},an=e=>{if(e&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(e)}catch{}},ua=e=>{!e||e.length===0||e.forEach(r=>an(r.objectUrl))},ia=e=>{e.forEach(r=>ua(r.attachments))},rr=e=>{let{rootElement:r,store:p,previewMode:u,title:a,openButtonTitle:h,openButtonIcon:R,showOpenButtonTitle:N=!0,showOpenButtonIcon:te=!0,colorMode:ne,language:E,onClose:ae,placeholder:ke,maxImages:$,maxImageBytes:S,historyStorage:s=Xa,emptyHistoryAfterDays:x=Qa,labels:be,openButtonIconLayout:re="top",openButtonPosition:j="bottom-right"}=e,y=(0,o.useMemo)(()=>({...Ot,...be||{}}),[be]),v=ot(),[Q,F]=(0,o.useState)(""),[ie,H]=(0,o.useState)([]),[X,M]=(0,o.useState)([]),[J,ce]=(0,o.useState)(null),[Me,Je]=(0,o.useState)(!1),[ge,at]=(0,o.useState)(!1),[Se,Ae]=(0,o.useState)(!1),[ee,U]=(0,o.useState)(!1),[V,Re]=(0,o.useState)(!0),[Fe,qe]=(0,o.useState)(null),[de,Ve]=(0,o.useState)(!1),[Ne,I]=(0,o.useState)(null),[L,ye]=(0,o.useState)(null),[me,De]=(0,o.useState)(!1),[C,Ie]=(0,o.useState)(null),le=(0,o.useRef)(C);(0,o.useEffect)(()=>{le.current=C},[C]);let He=(0,o.useRef)(null),ze=(0,o.useRef)(!1),[Ht,Ye]=(0,o.useState)(null),_e=(0,o.useRef)(null),Be=(0,o.useRef)(null),Ce=(0,o.useRef)(null),yt=(0,o.useRef)(null),ve=(0,o.useCallback)(t=>{t.forEach(g=>an(g.objectUrl))},[]),pe=(0,o.useCallback)(()=>{ve(it.current),H([]),_e.current&&(_e.current.value="")},[ve]),[z,rt]=(0,o.useState)(null),Ze=(0,o.useRef)(Q),At=(0,o.useRef)(X),pt=(0,o.useRef)(z),it=(0,o.useRef)(ie);(0,o.useEffect)(()=>{Ze.current=Q},[Q]),(0,o.useEffect)(()=>{it.current=ie},[ie]),(0,o.useEffect)(()=>{At.current=X},[X]),(0,o.useEffect)(()=>{pt.current=z},[z]),(0,o.useEffect)(()=>{E&&A.I18n.setLanguage(E||"en")},[E]);let vt=(0,oa.useSelect)(()=>(0,mt.getStoreSelect)(p).isShowChatbotPreview()),Ee=(0,o.useMemo)(()=>Math.max(0,$??er),[$]),wt=(0,o.useMemo)(()=>Math.max(0,S??tr),[S]),$e=X.length>0,_=(0,o.useMemo)(()=>v.busy&&C==="chat",[v.busy,C]),ht=(0,o.useMemo)(()=>_?!1:Q.trim().length>0,[Q,_]),Qe=(0,o.useMemo)(()=>{let t=h||y.askMeLabel;return A.I18n.get(t)},[h,y.askMeLabel,E]),Gt=(0,o.useMemo)(()=>{let t=a||y.modalTitle;return A.I18n.get(t)},[a,y.modalTitle,E]),jt=(0,o.useMemo)(()=>{let t=ke||y.placeholder;return A.I18n.get(t)},[ke,y.placeholder,E]),Tt=(0,o.useMemo)(()=>{let t="ai-docs-ask",g=`ai-open-btn--${j}`;return`${t} ${g}`},[j]),i=(0,o.useCallback)(()=>{let t=yt.current;if(t)try{let g=window.innerHeight||document.documentElement.clientHeight,b=360,c=1e3,D=Math.floor(g*.8),P=Math.max(b,Math.min(D,c));t.style.height=`${P}px`}catch{}},[]),k=(0,o.useCallback)(()=>{let t=L;t&&window.setTimeout(()=>{try{t.scrollTop=t.scrollHeight}catch{}},50)},[L]),G=(0,o.useCallback)(()=>{U(!1),ge&&at(!1),Ae(!1),ae?.()},[ge,ae]);(0,o.useEffect)(()=>{if(ee)return i(),window.addEventListener("resize",i),()=>window.removeEventListener("resize",i)},[ee,i]),(0,o.useEffect)(()=>{if(!(!ee||!ge))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[ee,ge,G]);let q=(0,o.useMemo)(()=>ie.map(t=>({id:t.id,url:t.objectUrl,title:t.file.name})),[ie]);(0,o.useEffect)(()=>{$e||Re(!0)},[$e]),(0,o.useEffect)(()=>()=>{ve(it.current)},[ve]),(0,o.useEffect)(()=>{let t=L;if(!t)return;let g=()=>{let b=t.scrollHeight-(t.scrollTop+t.clientHeight);Re(b<20)};return t.addEventListener("scroll",g),()=>{t.removeEventListener("scroll",g)}},[ee,L]),(0,o.useEffect)(()=>{if(!V)return;let t=L;t&&t.scrollHeight>t.clientHeight&&(t.scrollTop=t.scrollHeight)},[X,v.busy,V,L]),(0,o.useEffect)(()=>{ee||qe(null)},[ee]);let ue=(0,o.useMemo)(()=>v.busy?ar(v.statusEvent,y)||A.I18n.get("Working\u2026"):null,[v.busy,v.statusEvent,E,y]),Y=(0,o.useMemo)(()=>{for(let t=X.length-1;t>=0;t--){let g=X[t];if(g.role==="user"&&g.clientStatus==="canceled")return g.id}return null},[X]),W=(0,o.useCallback)(t=>{M(g=>{let b=[...g].map((P,K)=>({m:P,i:K})).reverse().find(P=>P.m.role==="user"&&P.m.clientStatus==="pending")?.i;if(b==null)return g;let c=g.slice(),D=c[b];return c[b]={...D,clientStatus:t??void 0},c})},[M]),oe=(0,o.useCallback)(()=>{if(!(!v.busy||le.current!=="chat")){ze.current=!0;try{v.cancel()}catch{}W("canceled"),Ie(null),ce(null),k()}},[v,W,k]),Ge=(0,o.useCallback)(t=>{let g=it.current,b=Array.from(t.target.files||[]),c=Math.max(0,Ee-g.length);if(c===0){t.currentTarget.value="";return}let D=[];for(let P of b){if(D.length>=c)break;let K=/image\/(jpeg|png|gif|webp)/i.test(P.type),Z=P.size<=wt,Le=[...g,...D].some(Ke=>Ke.file.name===P.name&&Ke.file.size===P.size&&Ke.file.lastModified===P.lastModified);if(!K||!Z||Le)continue;let Ue=Ut(P);Ue&&D.push({id:gt("composer-image"),file:P,objectUrl:Ue})}D.length&&H(P=>[...P,...D]),t.currentTarget.value=""},[Ee,wt]),St=(0,o.useCallback)(t=>{H(g=>{if(t<0||t>=g.length)return g;let b=g[t];return b&&an(b.objectUrl),g.filter((c,D)=>D!==t)})},[]),xe=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(J)return xe.current&&(window.clearTimeout(xe.current),xe.current=null),xe.current=window.setTimeout(()=>{ce(null),xe.current=null},6e3),()=>{xe.current&&(window.clearTimeout(xe.current),xe.current=null)}},[J]);let rn=(0,o.useCallback)(async t=>{if(!t.length)return[];let g=s!=="nostorage";return(await Promise.all(t.map(async c=>{let D=gt("attachment"),P;if(g)try{P=await ra(D,c.file,{name:c.file.name,type:c.file.type,size:c.file.size})??void 0}catch(Z){console.warn("[AiChatbot] Failed to persist attachment",Z)}let K=Ut(c.file);return{id:D,name:c.file.name,type:c.file.type||"application/octet-stream",size:c.file.size,blobId:P,objectUrl:K??void 0,blob:c.file}}))).filter(Boolean)},[s]),on=(0,o.useCallback)(async t=>{let g=[];for(let b of t){let c;if(b.attachments&&b.attachments.length>0){c=[];for(let D of b.attachments){let P;if(D.blobId)try{P=(await en(D.blobId))?.blob??void 0}catch(Z){console.warn("[AiChatbot] Failed to hydrate attachment",Z)}if(!P)continue;let K=P?Ut(P):null;c.push({...D,objectUrl:K??void 0,blob:P??void 0})}}g.push({...b,attachments:c})}return g},[]),sn=(0,o.useCallback)(async t=>{if(!t||t.length===0){pe();return}let g=[];for(let b of t){let c=b.blob;if(!c&&b.blobId)try{c=(await en(b.blobId))?.blob??void 0}catch(K){console.warn("[AiChatbot] Failed to reload attachment",K)}if(!c)continue;let D=c instanceof File?c:new File([c],b.name||"attachment",{type:b.type||c.type||"application/octet-stream"}),P=Ut(D);if(P&&(g.push({id:gt("composer-image"),file:D,objectUrl:P}),g.length>=Ee))break}if(g.length===0){pe();return}H(b=>(ve(b),g)),_e.current&&(_e.current.value="")},[pe,ve,Ee]),Wt=(0,o.useCallback)((t,g)=>{t&&qe({url:t,title:g})},[]),fa=(0,o.useCallback)(()=>{qe(null)},[]),ln=(0,o.useCallback)(()=>{ia(At.current),pe(),M([]),ce(null),Ce.current=null,rt(null),Re(!0),Je(!1);let t=nn(s);if(t)try{t.removeItem(dt)}catch{}Kt()},[pe,s]),ka=(0,o.useCallback)(()=>{Je(!0)},[]),ba=(0,o.useCallback)(()=>{v.busy&&le.current==="chat"&&oe(),ln()},[v.busy,oe,ln]),un=(0,o.useCallback)(()=>{Je(!1)},[]),cn=(0,o.useCallback)(async(t,g)=>{if(!v.busy)try{let b=Ce.current&&Date.now()-Ce.current.storedAt<x*Bt?Ce.current.id:void 0;if(!b)return;Ie("feedback"),ce(null),await v.run(async({signal:c,onStatus:D})=>(await(0,mt.sendFeedbackMessage)({sessionId:b,feedbackMessageId:t,feedbackType:g},{signal:c,onStatus:D}),null)),ce(null)}catch(b){let c=b?.message?.trim()||A.I18n.get("An error occurred.");ce(c),console.error("Failed to send feedback",b)}finally{Ie(b=>b==="feedback"?null:b)}},[v,E]),dn=(0,o.useCallback)((t,g)=>{M(b=>b.map(c=>c.id!==t||c.role!=="assistant"?c:c.feedback===g?{...c,feedback:void 0}:{...c,feedback:g})),cn(t,g)},[cn]),Rt=(0,o.useCallback)(async()=>{let t=Ze.current.trim();if(!t||v.busy)return;ze.current=!1,ce(null),Ie("chat");let g=[...it.current],b=await rn(g),c=gt("user"),D=Date.now(),P={id:c,role:"user",content:t,createdAt:D,clientStatus:"pending",attachments:b.length?b:void 0};F(""),pe(),M(K=>[...K,P]),ee||U(!0),k();try{let K=Ce.current&&Date.now()-Ce.current.storedAt<x*Bt?Ce.current.id:void 0,Z=await v.run(async({signal:Ue,onStatus:Ke})=>await(0,mt.sendChatMessage)({sessionId:K,message:t,images:g.map(La=>La.file)},{signal:Ue,onStatus:Ke}));if(ze.current){W("canceled");return}if(!Z)throw new Error(A.I18n.get(v.error??y.emptyResponseLabel));Z.sessionId&&(Ce.current={id:Z.sessionId,storedAt:Date.now()});let Le={id:Z.metadata?.messageId||gt("assistant"),role:"assistant",content:Z.result||"",citations:Z.citations,createdAt:Date.now()};M(Ue=>[...Ue.map(st=>st.id===c?{...st,clientStatus:void 0}:st),Le]),rt(D)}catch(K){if(console.error("Error during ask()",K),ze.current||nr(K)){W("canceled");return}let Z=K?.message?.trim()||A.I18n.get(y.unexpectedErrorLabel);M(Le=>[...Le.map(Ke=>Ke.id===c?{...Ke,clientStatus:void 0}:Ke),{id:gt("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${Z}`,createdAt:Date.now()}]),rt(D)}finally{Ie(K=>K==="chat"?null:K),ze.current=!1,Be.current&&Be.current.focus(),k()}},[v,rn,pe,ee,k,W,y.emptyResponseLabel,y.unexpectedErrorLabel,E]),ya=(0,o.useCallback)(t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),ht&&Rt())},[Rt,ht]),Aa=(0,o.useCallback)(()=>{U(!0)},[]);(0,o.useEffect)(()=>()=>{He.current!=null&&(cancelAnimationFrame(He.current),He.current=null)},[]);let va=(0,o.useCallback)(()=>{at(t=>{let g=!t;return He.current!=null&&(cancelAnimationFrame(He.current),He.current=null),g?(Ae(!0),requestAnimationFrame(()=>{He.current=requestAnimationFrame(()=>{Ae(!1),He.current=null})})):Ae(!1),g})},[]),wa=(0,o.useCallback)(t=>{F(t.content),(async()=>(await sn(t.attachments),M(g=>g.filter(b=>b.id!==t.id)),ua(t.attachments),queueMicrotask(()=>Be.current?.focus())))()},[sn]),gn=(0,o.useMemo)(()=>te?R?(0,d.jsx)("img",{src:R,className:"ai-open-btn-icon",alt:A.I18n.get(y.askMeLabel||Qe)}):(0,d.jsx)(fe.IconMessage,{size:18}):null,[te,R,y,Qe,E]),Ta=(0,o.useMemo)(()=>{let t=gn,g=N?(0,d.jsx)(f.Text,{inherit:!0,children:Qe}):null;if(!te&&!g)return null;if(!te)return g;if(!N)return t;switch(re){case"top":return(0,d.jsxs)(f.Stack,{gap:4,align:"center",children:[t,g]});case"bottom":return(0,d.jsxs)(f.Stack,{gap:4,align:"center",children:[g,t]});case"right":return(0,d.jsxs)(f.Group,{gap:6,align:"center",children:[g,t]});default:return(0,d.jsxs)(f.Group,{gap:6,align:"center",children:[t,g]})}},[gn,te,N,Qe,re]),Sa=(0,o.useMemo)(()=>_,[_]),Ra=(0,o.useMemo)(()=>!_,[_]),Ia=(0,o.useMemo)(()=>J||($e?A.I18n.get(y.readyLabel):A.I18n.get(y.readyEmptyLabel)),[J,$e,y.readyLabel,y.readyEmptyLabel,E]),za=(0,o.useMemo)(()=>_?A.I18n.get(y.cancelLabel):A.I18n.get(y.sendLabel),[_,y.cancelLabel,y.sendLabel,E]),Ca=(0,o.useMemo)(()=>_?(0,d.jsx)(fe.IconPlayerStop,{size:18}):(0,d.jsx)(fe.IconSend,{size:18}),[_]),xa=(0,o.useCallback)(()=>{if(_){oe();return}Rt()},[_,oe,Rt]);return(0,o.useEffect)(()=>{if(!ee||!Ne||!L)return;let t=()=>{let Z=window.getComputedStyle(L).overflowY,Le=Z==="auto"||Z==="scroll",Ue=Math.ceil(L.scrollHeight),Ke=Math.floor(L.clientHeight),st=Ue>Ke;return Le&&st},g=!1,b=K=>{if(!t())return;K.preventDefault();let Z=L.scrollHeight-L.clientHeight;L.scrollTop=Math.max(0,Math.min(Z,L.scrollTop+K.deltaY))},c=()=>{let K=t();De(K),K!==g&&(g=K,g?Ne.addEventListener("wheel",b,{passive:!1}):Ne.removeEventListener("wheel",b))};c();let D=new ResizeObserver(c);D.observe(L);let P=new MutationObserver(c);return P.observe(L,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",c),()=>{g&&Ne.removeEventListener("wheel",b),D.disconnect(),P.disconnect(),window.removeEventListener("resize",c)}},[ee,Ne,L]),(0,o.useEffect)(()=>{let t=!1,g=nn(s);if(!g){s==="nostorage"&&Kt(),Ve(!0);return}return(async()=>{try{let b=g.getItem(dt);if(!b){Ve(!0);return}let c=JSON.parse(b),D=typeof c?.lastUserSentAt=="number"?c.lastUserSentAt:null;if(!D||Date.now()-D>x*Bt){g.removeItem(dt),await Kt(),Ve(!0);return}let K=(Array.isArray(c.messages)?c.messages:[]).map(Le=>Le?.role==="user"&&Le.clientStatus==="pending"?{...Le,clientStatus:"canceled"}:Le),Z=await on(K);if(t){ia(Z);return}M(Z),rt(D),c.session&&c.session.id&&(Ce.current=c.session)}catch(b){console.warn("[AiChatbot] Failed to load history",b);try{g.removeItem(dt)}catch{}}finally{t||Ve(!0)}})(),()=>{t=!0}},[s,x,on]),(0,o.useEffect)(()=>{if(!de)return;let t=nn(s);if(!t)return;let g=pt.current;if(!g)return;if(Date.now()-g>x*Bt){try{t.removeItem(dt)}catch{}tn(new Set);return}let b=X.map(({attachments:P,...K})=>({...K,attachments:P?.map(({objectUrl:Z,blob:Le,...Ue})=>Ue)})),c={version:1,lastUserSentAt:g,session:Ce.current,messages:b};try{t.setItem(dt,JSON.stringify(c))}catch{}let D=new Set;b.forEach(P=>{P.attachments?.forEach(K=>{K.blobId&&D.add(K.blobId)})}),tn(D)},[de,X,z,s,x]),u&&!vt||!u&&vt?null:(0,d.jsxs)(f.Group,{className:Tt,children:[!ee&&(0,d.jsx)(f.Button,{variant:"filled",className:N?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:Aa,"aria-label":Qe,title:Qe,"data-ai-kit-open-button":!0,children:Ta}),ee&&(0,d.jsx)(f.Modal.Root,{ref:yt,opened:ee,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:G,className:Tt+" ai-chat-container"+(ge?" maximized":"")+(ge&&Se?" ai-max-enter":""),portalProps:{target:r,reuseTargetNode:!0},"data-ai-kit-theme":ne,"data-ai-kit-variation":"modal",children:(0,d.jsxs)("div",{className:"ai-chat-container-internal",ref:I,children:[(0,d.jsxs)(f.Modal.Header,{className:"ai-chat-header-bar",children:[(0,d.jsx)(f.Modal.Title,{className:"ai-chat-title",children:Gt}),(0,d.jsxs)(f.Group,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&(0,d.jsx)(f.ActionIcon,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:va,title:ge?A.I18n.get(y.restoreSizeLabel):A.I18n.get(y.maximizeLabel),"aria-label":ge?A.I18n.get(y.restoreSizeLabel):A.I18n.get(y.maximizeLabel),"data-ai-kit-maximize-button":!0,children:ge?(0,d.jsx)(fe.IconMinimize,{size:16}):(0,d.jsx)(fe.IconMaximize,{size:16})}),(0,d.jsx)(f.Modal.CloseButton,{"aria-label":A.I18n.get(y.closeChatLabel)})]})]}),(0,d.jsxs)(f.Modal.Body,{className:"ai-chat-scroll",ref:ye,"data-scrollable":me?"true":"false",children:[X.map(t=>{let g=t.role==="user",b=g&&t.clientStatus==="canceled"&&t.id===Y;return(0,d.jsx)(f.Group,{justify:g?"flex-end":"flex-start",className:"ai-chat-row "+t.role,onMouseEnter:()=>Ye(t.id),onMouseLeave:()=>Ye(c=>c===t.id?null:c),children:(0,d.jsxs)(f.Stack,{gap:4,w:"100%",style:{alignItems:g?"flex-end":"flex-start"},children:[(0,d.jsxs)(f.Stack,{className:"ai-chat-bubble",children:[(0,d.jsxs)(f.Text,{className:"ai-chat-header",children:[(0,d.jsx)(f.Text,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:g?A.I18n.get(y.userLabel):A.I18n.get(y.assistantLabel)}),"\xA0",(0,d.jsx)(f.Text,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(t.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),t.role==="assistant"?(0,d.jsx)(sa.default,{remarkPlugins:[la.default],children:t.content}):(0,d.jsx)(f.Text,{size:"sm",miw:"100px",children:t.content})]}),t.attachments&&t.attachments.length>0&&(0,d.jsx)(f.Group,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:t.attachments.map(c=>(0,d.jsx)("button",{type:"button",className:"thumb",style:{backgroundImage:c.objectUrl?`url(${c.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>Wt(c.objectUrl,c.name),disabled:!c.objectUrl,title:c.name||A.I18n.get("View image"),"aria-label":c.name||A.I18n.get("View image"),children:!c.objectUrl&&(0,d.jsx)(f.Text,{size:"xs",c:"dimmed",children:A.I18n.get("Loading image...")})},c.id))}),b&&(0,d.jsxs)(f.Group,{justify:"flex-end",gap:"xs",children:[(0,d.jsx)(f.Text,{size:"xs",c:"dimmed",children:(0,d.jsx)("em",{children:A.I18n.get(y.notSentLabel)})}),Ht===t.id&&(0,d.jsx)(f.ActionIcon,{size:"sm",variant:"subtle",onClick:()=>wa(t),title:A.I18n.get(y.editLabel),"aria-label":A.I18n.get(y.editLabel),"data-ai-kit-edit-button":!0,children:(0,d.jsx)(fe.IconPencil,{size:14})})]}),t.citations&&t.citations.length>0&&(0,d.jsxs)(f.Stack,{className:"ai-citations",children:[(0,d.jsx)(f.Text,{fw:"bold",size:"sm",mb:"xs",children:A.I18n.get(y.referencesLabel)}),(0,d.jsx)(f.List,{spacing:"xs",size:"sm",children:t.citations.map((c,D)=>{let P=c.sourceUrl||c.url,K=c.title||P||`${A.I18n.get(y.referenceLabel)} #${D+1}`;return(0,d.jsxs)(f.List.Item,{children:[P?(0,d.jsx)(f.Anchor,{href:P,target:"_blank",rel:"noreferrer",children:K}):(0,d.jsx)(f.Text,{children:K}),c.snippet?(0,d.jsx)(f.Text,{size:"xs",c:"dimmed",mt:4,children:c.snippet}):null]},D)})})]}),t.role==="assistant"&&(0,d.jsxs)(f.Group,{className:"ai-feedback",gap:"xs",children:[(0,d.jsx)(f.Button,{className:t.feedback==="accepted"?"active":void 0,onClick:()=>dn(t.id,"accepted"),"aria-label":A.I18n.get(y.acceptResponseLabel),disabled:v.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),(0,d.jsx)(f.Button,{type:"button",className:t.feedback==="rejected"?"active":void 0,onClick:()=>dn(t.id,"rejected"),"aria-label":A.I18n.get(y.rejectResponseLabel),disabled:v.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},t.id)}),Sa&&(0,d.jsx)(f.Group,{justify:"flex-start",className:"ai-chat-row assistant status",children:(0,d.jsxs)(f.Stack,{className:"ai-chat-bubble typing",children:[ue?(0,d.jsx)(f.Text,{size:"sm",c:"dimmed",children:(0,d.jsx)("em",{children:ue})}):null,(0,d.jsxs)("div",{className:"typing-indicator",children:[(0,d.jsx)("span",{}),(0,d.jsx)("span",{}),(0,d.jsx)("span",{})]})]})})]}),Ra&&(0,d.jsx)(f.Group,{className:"ai-status-line",children:(0,d.jsx)(f.Text,{className:"ai-status-text",children:(0,d.jsx)("em",{children:Ia})})}),(0,d.jsxs)(f.Stack,{className:"ai-box ai-box-open",children:[(0,d.jsxs)(f.Modal,{opened:Me,onClose:un,centered:!0,title:A.I18n.get("Reset conversation"),style:{position:"fixed"},left:0,children:[(0,d.jsx)(f.Text,{size:"sm",children:A.I18n.get("Are you sure you want to reset the conversation?")}),(0,d.jsxs)(f.Group,{justify:"flex-end",mt:"md",children:[(0,d.jsx)(f.Button,{variant:"default",onClick:un,"data-ai-kit-no-button":!0,children:A.I18n.get("No")}),(0,d.jsx)(f.Button,{color:"var(--ai-kit-color-danger, red)",onClick:ba,disabled:!$e&&!_,"data-ai-kit-yes-button":!0,children:A.I18n.get("Yes")})]})]}),(0,d.jsx)(f.Group,{children:(0,d.jsx)(f.Textarea,{className:"ai-message",ref:Be,placeholder:jt,value:Q,onChange:t=>{F(t.target.value)},onKeyDown:ya,rows:3})}),(0,d.jsxs)(f.Group,{className:"ai-actions",justify:"space-between",w:"100%",children:[(0,d.jsx)(f.Group,{justify:"flex-start",children:(0,d.jsx)(f.Button,{variant:"light",leftSection:(0,d.jsx)(fe.IconTrash,{size:18}),onClick:ka,disabled:!$e&&!_,"data-ai-kit-reset-button":!0,children:A.I18n.get(y.resetLabel)})}),(0,d.jsxs)(f.Group,{justify:"flex-end",children:[Ee>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.Button,{variant:"outline",leftSection:(0,d.jsx)(fe.IconPaperclip,{size:18}),onClick:()=>_e.current?.click(),disabled:ie.length>=Ee||_,title:A.I18n.get(y.addImageLabel),"data-ai-kit-add-image-button":!0,children:A.I18n.get(y.addLabel)}),(0,d.jsx)(f.Input,{ref:_e,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:Ge})]}),(0,d.jsx)(f.Button,{leftSection:Ca,variant:"filled",onClick:xa,disabled:!_&&!ht,"data-ai-kit-send-button":!0,children:za})]})]}),q.length>0&&(0,d.jsx)(f.Group,{className:"ai-thumbs",mt:"xs",gap:"xs",children:q.map(({url:t,title:g},b)=>(0,d.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||A.I18n.get("View image"),onClick:()=>Wt(t,g),onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),Wt(t,g))},children:(0,d.jsx)(f.Button,{variant:"white",onClick:c=>{c.stopPropagation(),St(b)},"aria-label":A.I18n.get(y.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:A.I18n.get(y.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},ie[b]?.id??b))})]})]})}),(0,d.jsx)(f.Modal,{opened:!!Fe,onClose:fa,centered:!0,size:"auto",title:Fe?.title||A.I18n.get("Image preview"),children:Fe&&(0,d.jsx)("img",{src:Fe.url,alt:Fe.title||A.I18n.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},ca=tt(rr,{showOpenButton:!0,variation:"modal"});var w=require("@mantine/core"),Nt=require("@smart-cloud/ai-kit-core"),Te=require("aws-amplify/utils"),se=require("react"),da=Pe(require("react-markdown"),1),ga=Pe(require("rehype-raw"),1),ma=Pe(require("remark-gfm"),1),pa=require("@tabler/icons-react");var T=require("react/jsx-runtime");Te.I18n.putVocabularies(Xe);function ir(e){let r=e?.citations?.docs??[],p=e?.citations?.chunks??[],u=new Map;for(let a of r)u.set(a.docId,{doc:a,chunks:[]});for(let a of p){let h=u.get(a.docId);h?h.chunks.push(a):u.set(a.docId,{doc:{docId:a.docId},chunks:[a]})}return Array.from(u.values())}var or=e=>{let{autoRun:r=!0,context:p,title:u,searchButtonIcon:a,showSearchButtonTitle:h=!0,showSearchButtonIcon:R=!0,showSources:N=!0,topK:te=10,getSearchText:ne,variation:E,rootElement:ae,colorMode:ke,language:$,onClose:S,onClickDoc:s}=e,[x,be]=(0,se.useState)(""),{busy:re,error:j,statusEvent:y,result:v,run:Q,cancel:F,reset:ie}=ot(),H=(0,se.useRef)(!1),X=v?.sessionId,M=v?.citations?.docs??[],J=v?.citations?.chunks??[],ce=v?.citations?.anchors??[],Me=v?.result??"",Je=(0,se.useMemo)(()=>{if(R)return a?.trim()?(0,T.jsx)("img",{src:a,alt:"",style:{width:18,height:18,objectFit:"contain"}}):(0,T.jsx)(pa.IconSearch,{size:18})},[a,R]),ge=(0,se.useMemo)(()=>($&&Te.I18n.setLanguage($||"en"),Te.I18n.get(u||"Search with AI-Kit")),[$]),at=(0,se.useMemo)(()=>y?Te.I18n.get("Searching\u2026"):null,[$,y]),Se=(0,se.useMemo)(()=>x||ne,[x,ne]),Ae=(0,se.useMemo)(()=>{if(re)return!1;let I=typeof Se=="function"?Se():Se;return!!(I&&I.trim().length>0)},[Se,re]),ee=(0,se.useCallback)(async()=>{let I=typeof Se=="function"?Se():Se;I&&(be(I),ie(),await Q(async({signal:L,onStatus:ye})=>await(0,Nt.sendSearchMessage)({sessionId:X,query:I,topK:te},{signal:L,onStatus:ye,context:p})))},[p,Se,Q,ie,te,X]),U=(0,se.useCallback)(async()=>{ie(),S(),H.current=!1},[S,ie,H]);(0,se.useEffect)(()=>{!r||!Ae||re||H.current||(H.current=!0,queueMicrotask(()=>{ee()}))},[re,H,Ae,r,ee]),(0,se.useEffect)(()=>{Ae||(H.current=!0)},[Ae]);let V=(0,se.useMemo)(()=>ir(v),[v]),Re=(0,se.useMemo)(()=>{let I=new Map;return M.forEach((L,ye)=>{L?.docId&&I.set(L.docId,ye+1)}),I},[M]),Fe=(0,se.useMemo)(()=>{let I=new Map;return J.forEach(L=>{L?.chunkId&&L?.docId&&I.set(L.chunkId,L.docId)}),I},[J]),qe=(0,se.useMemo)(()=>{if(!Me)return"";if(!ce.length||Re.size===0)return Me;let I=[...ce].filter(me=>Array.isArray(me?.chunkIds)&&me?.span?.end!==void 0).sort((me,De)=>{let C=me.span?.end??0,Ie=De.span?.end??0;return C-Ie}),L=0,ye=[];for(let me of I){let De=me.span?.end;if(typeof De!="number"||De<L)continue;let C=Array.from(new Set((me.chunkIds??[]).map(le=>le?Fe.get(le):void 0).map(le=>le?Re.get(le):void 0).filter(le=>typeof le=="number")));if(!C.length)continue;let Ie=Math.min(De,Me.length);ye.push(Me.slice(L,Ie)),ye.push(`<sup>${C.join(",")}</sup>`),L=Ie}return ye.push(Me.slice(L)),ye.join("")},[ce,Me]),de=E==="modal"?w.Modal.Root:w.Group,Ve=E==="modal"?w.Modal.Content:w.Group,Ne=E==="modal"?w.Modal.Body:w.Group;return(0,se.useEffect)(()=>{if(E==="modal")return document.body.style.overflow="hidden",document.body.onkeydown=I=>{I.key==="Escape"&&(I.preventDefault(),U())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[U,E]),(0,T.jsxs)(de,{opened:!0,className:"doc-search-root",onClose:U,padding:"md",gap:"md",size:"xl",portalProps:E==="modal"?{target:ae,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":ke,"data-ai-kit-variation":E,children:[E==="modal"&&(0,T.jsx)(w.Modal.Overlay,{}),(0,T.jsxs)(Ve,{w:"100%",style:{left:0},children:[E==="modal"&&(0,T.jsxs)(w.Modal.Header,{style:{zIndex:1e3},children:[(0,T.jsx)(Nt.AiKitDocSearchIcon,{className:"doc-search-title-icon"}),(0,T.jsx)(w.Modal.Title,{children:Te.I18n.get(ge)}),(0,T.jsx)(w.Modal.CloseButton,{})]}),(0,T.jsx)(Ne,{w:"100%",style:{zIndex:1001},children:(0,T.jsx)(ut,{enabled:E!=="modal",working:re,variation:E,children:(0,T.jsx)(w.Paper,{shadow:"sm",radius:"md",p:"md",children:(0,T.jsxs)(w.Stack,{gap:"sm",children:[E!=="modal"&&(0,T.jsx)(w.Title,{order:4,style:{margin:0},children:Te.I18n.get(ge)}),(0,T.jsxs)(w.Group,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[(0,T.jsx)(w.TextInput,{style:{flex:1},value:x,onChange:I=>be(I.currentTarget.value),placeholder:Te.I18n.get("Search the documentation\u2026"),disabled:re,onKeyDown:I=>{I.key==="Enter"&&Ae&&(I.preventDefault(),ee())}}),(0,T.jsx)(w.Button,{variant:"filled",size:"sm",leftSection:Je,onClick:()=>{ee()},disabled:!Ae,className:h?"doc-search-button":"doc-search-button-no-title",children:h?Te.I18n.get("Search"):null}),re?(0,T.jsx)(w.Button,{variant:"outline",size:"sm",onClick:F,children:Te.I18n.get("Stop")}):null]}),j?(0,T.jsx)(w.Alert,{color:"red",title:Te.I18n.get("Error"),children:j}):null,re&&at&&(0,T.jsx)(ut,{enabled:E==="modal",working:!0,variation:E,children:(0,T.jsxs)(w.Group,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[(0,T.jsx)(w.Loader,{size:"sm"}),(0,T.jsx)(w.Text,{size:"sm",c:"dimmed",children:at})]})}),v?.result?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(w.Divider,{}),(0,T.jsxs)(w.Stack,{gap:"xs","data-doc-search-result":!0,children:[(0,T.jsx)(w.Text,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:Te.I18n.get("AI Summary")}),(0,T.jsx)(da.default,{remarkPlugins:[ma.default],rehypePlugins:[ga.default],"data-doc-search-result-content":!0,children:qe||Me})]})]}):null,N&&(v?.citations?.docs?.length||v?.citations?.chunks?.length)?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(w.Divider,{}),(0,T.jsxs)(w.Stack,{gap:"sm","data-doc-search-sources":!0,children:[(0,T.jsx)(w.Text,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:Te.I18n.get("Sources")}),V.map(({doc:I})=>{let L=I.sourceUrl?.trim()||void 0,ye=I.docId?Re.get(I.docId):void 0,me=I.title?.trim()||I.docId,De=(0,T.jsxs)(w.Text,{fw:600,style:{display:"inline"},children:[ye?`${ye}. `:"",me]});return(0,T.jsx)(w.Paper,{withBorder:!0,radius:"md",p:"sm",children:(0,T.jsx)(w.Stack,{gap:"xs",children:(0,T.jsx)(w.Group,{justify:"space-between",align:"flex-start",children:(0,T.jsxs)(w.Stack,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[L?(0,T.jsx)(w.Anchor,{href:L,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:C=>{s&&(C.preventDefault(),s?.(I))},"data-doc-search-source-title":!0,children:De}):De,(0,T.jsx)(w.Anchor,{href:L,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:C=>{s&&(C.preventDefault(),s?.(I))},"data-doc-search-source-url":!0,children:I.sourceUrl}),I.author?(0,T.jsx)(w.Text,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:I.author}):null,I.description?(0,T.jsx)(w.Text,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:I.description}):null]})})})},I.docId)})]})]}):null,!re&&!j&&!v?.result?(0,T.jsx)(w.Text,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:Te.I18n.get("Enter a search query to start.")}):null,(0,T.jsx)(Ct,{variation:E})]})})})})]})]})},ha=tt(or);0&&(module.exports={AiChatbot,AiFeature,DEFAULT_CHATBOT_LABELS,DocSearch,isBackendConfigured,markdownToHtml,readDefaultOutputLanguage,stripCodeFence,translations,useAiRun,withAiKitShell});
|
package/dist/index.js
CHANGED
|
@@ -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
|
`+(le?`
|
|
31
|
-
Follow these additional instructions: ${le}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),N=await w.run(async({signal:U,onStatus:ne})=>(await la({messages:K,images:[je],outputLanguage:"en",responseConstraint:Nr},{signal:U,onStatus:ne,context:S,modeOverride:r,onDeviceTimeoutOverride:a})).result);if(!N){W("");return}let re=(T&&T!=="auto"?T:null)||ut(),H=Ct(N).trim();try{G("Translating result...");let U=await w.run(async({signal:ne})=>await Gr(H,re,{signal:ne,context:S,modeOverride:r,onDeviceTimeoutOverride:a,silent:!0}));W(U)}catch(U){W(H),console.warn("AI Kit: failed to parse SEO JSON",U)}break}}}catch(m){_(m instanceof Error?m.message:t.get("An unknown error occurred."))}G(void 0)}},[O,w,le,ae,T,we,Se,S,o,We,R,ge,V]),Et=nt(async()=>{await Ze("backend-only")},[Ze]),It=nt(r=>{switch(o){case"proofread":return g(Dr,{className:r});case"translate":return g(Er,{className:r});case"summarize":return g(Ur,{className:r});case"rewrite":case"write":return g(Kr,{className:r});case"generateImageMetadata":case"generatePostMetadata":return g(Br,{className:r});default:return g(Rr,{mode:o,className:r})}},[o]),st=nt(()=>{switch(o){case"proofread":return w.lastSource?t.get("Proofread again"):t.get("Proofread");case"translate":return w.lastSource?t.get("Translate again"):t.get("Translate");case"rewrite":return w.lastSource?t.get("Rewrite again"):t.get("Rewrite");case"summarize":return w.lastSource?t.get("Summarize again"):t.get("Summarize");default:return w.lastSource?t.get("Regenerate"):t.get("Generate")}},[O,w.lastSource,o]),Kt=nt(()=>{switch(o){case"proofread":return t.get("Proofread on Backend");case"translate":return t.get("Translate on Backend");case"rewrite":return t.get("Rewrite on Backend");case"summarize":return t.get("Summarize on Backend");default:return t.get("Regenerate on Backend")}},[O,o]),Me=nt(async()=>{Le(!1),W(null),_(null),Be.current=!1,w.reset(),M||h()},[h,Be,w,M]),Bt=nt(async()=>{w.busy&&w.cancel()},[w.busy]);qt(()=>{!se||!d||!ge||w.busy||P||Be.current||(Be.current=!0,queueMicrotask(()=>{Ze(ke)}))},[w.busy,Be,se,ge,d,P,Ze,ke]),qt(()=>{V&&o!=="proofread"&&(ge||(ce(!0),Be.current=!0))},[V,ge,o]),qt(()=>{let r=!0;return(async()=>{try{await Lr();let m=await $n();r&&ve(m)}catch(m){console.error(m),r&&ve(!1)}})(),()=>{r=!1}},[]);let $e=Lt(()=>{let r=[];if(o==="translate"){let m=Ft.find(K=>K.value===R)?.label;r.push(t.get("Input language")+": "+(m?t.get(m):"auto"))}if(T&&D?.outputLanguage){let m=Ft.find(K=>K.value===T)?.label;r.push(t.get("Output language")+": "+(m?t.get(m):T))}return o==="summarize"&&We&&D?.type&&r.push(t.get("Type")+": "+t.get(We)),(o==="write"||o==="rewrite")&&Se&&D?.tone&&r.push(t.get("Tone")+": "+t.get(Se)),(o==="write"||o==="rewrite"||o==="summarize")&&ae&&D?.length&&r.push(t.get("Length")+": "+t.get(ae)),le?.trim()&&D?.instructions&&r.push(t.get("Instructions")+": \u2713"),r.length?r.join(" \u2022 "):t.get("No overrides")},[O,o,R,T,We,Se,ae,le]),F={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},zt=c==="modal"?mt.Root:Xe,Qe=c==="modal"?mt.Content:Xe,Zt=c==="modal"?mt.Body:Xe,$t=y==="collapse"?Ar:at,Ut=y==="horizontal"?Xe:at;return qt(()=>{if(!(c!=="modal"||!se))return document.body.style.overflow="hidden",document.body.onkeydown=r=>{r.key==="Escape"&&(r.preventDefault(),Me())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[Me,c]),ie(Pt,{children:[M&&g(gt,{leftSection:Q&&(X?g("span",{dangerouslySetInnerHTML:{__html:X}}):It()),className:$?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:se,onClick:()=>Le(!0),"data-ai-kit-open-button":!0,children:$&&t.get(x||Re)}),se&&ie(zt,{opened:!0,className:"ai-feature-root",onClose:Me,padding:"md",gap:"md",size:"md",portalProps:c==="modal"?{target:te,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":ee,"data-ai-kit-variation":c,children:[c==="modal"&&g(mt.Overlay,{}),ie(Qe,{w:"100%",style:{left:0},children:[c==="modal"&&ie(mt.Header,{style:{zIndex:1e3},children:[It("ai-feature-title-icon"),g(mt.Title,{children:t.get(Re)}),g(mt.CloseButton,{})]}),g(Zt,{w:"100%",style:{zIndex:1001},children:ie(vt,{enabled:c!=="modal",working:w.busy,variation:c,children:[ie(at,{gap:"sm",mb:"sm",p:"sm",children:[ye&&g(ln,{color:"red",children:t.get(ye)}),V&&o!=="proofread"&&ie(Tr,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":y,children:[ie(Xe,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:y==="collapse"?()=>ce(r=>!r):void 0,children:[y==="collapse"&&ie(at,{gap:0,children:[g(sa,{size:"sm",fw:600,style:{lineHeight:1.1},children:t.get("Options")}),g(sa,{size:"xs",c:"dimmed",style:{marginTop:2},children:$e})]}),y==="collapse"&&g(gt,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:r=>{r.stopPropagation(),ce(m=>!m)},children:Je?t.get("Hide"):t.get("Show")})]}),ie($t,{in:Je,children:[y==="collapse"&&g(vr,{my:"sm"}),ie(Ut,{gap:"xs",justify:"space-between",children:[o==="write"&&D?.text&&g(tt,{label:t.get("The topic or subject for the AI to write about."),disabled:y!=="horizontal",position:"top",children:g(et,{size:"xs",className:"ai-feature-option",styles:F,disabled:w.busy,label:t.get("Topic"),description:y!=="horizontal"?t.get("The topic or subject for the AI to write about."):void 0,value:we||"",onChange:r=>{let m=r.target.value;Ge(m),J?.({text:m})}})}),(o==="write"||o==="rewrite"||o==="generateImageMetadata"||o==="generatePostMetadata")&&D?.instructions&&g(tt,{label:t.get("Additional instructions to guide the AI."),disabled:y!=="horizontal",position:"top",children:g(et,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Instructions"),description:y!=="horizontal"?t.get("Additional instructions to guide the AI."):void 0,value:le||"",onChange:r=>{let m=r.target.value;Ve(m),J?.({instructions:m})}})}),o==="translate"&&g(tt,{label:t.get("The language of the input text."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",styles:F,className:"ai-feature-option",label:t.get("Input language"),description:y!=="horizontal"?t.get("The language of the input text."):void 0,data:[{value:"auto",label:t.get("Auto-detect")},...Ft.map(r=>({value:r.value,label:t.get(r.label)})).sort((r,m)=>r.label.localeCompare(m.label))],value:R||"auto",onChange:r=>{let m=r;be(m),v(void 0),J?.({inputLanguage:m})}})}),D?.outputLanguage&&g(tt,{label:t.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",styles:F,className:"ai-feature-option",label:t.get("Output language"),description:y!=="horizontal"?t.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[o==="rewrite"?{value:"auto",label:t.get("Auto-detect")}:void 0].filter(Boolean),...Ft.map(r=>({value:r.value,label:t.get(r.label)})).sort((r,m)=>r.label.localeCompare(m.label))],value:T||da.settings.defaultOutputLanguage||(o==="rewrite"?"auto":""),onChange:r=>{let m=r;Te(m),v(void 0),J?.({outputLanguage:m})}})}),o==="summarize"&&D?.type&&g(tt,{label:t.get("The summary style to generate."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Type"),description:y!=="horizontal"?t.get("The summary style to generate."):void 0,data:[{value:"headline",label:t.get("Headline")},{value:"key-points",label:t.get("Key Points")},{value:"teaser",label:t.get("Teaser")},{value:"tldr",label:t.get("TL;DR")}],value:We||"key-points",onChange:r=>{let m=r;_e(m),J?.({type:m})}})}),(o==="write"||o==="rewrite")&&D?.tone&&g(tt,{label:t.get("The tone or style for the AI to use."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Tone"),description:y!=="horizontal"?t.get("The tone or style for the AI to use."):void 0,data:o==="write"?[{value:"neutral",label:t.get("Neutral")},{value:"formal",label:t.get("Formal")},{value:"casual",label:t.get("Casual")}]:[{value:"as-is",label:t.get("As-Is")},{value:"more-formal",label:t.get("More formal")},{value:"more-casual",label:t.get("More casual")}],value:Se||(o==="write"?"neutral":"as-is"),onChange:r=>{let m=r;_t(m),J?.({tone:m})}})}),(o==="write"||o==="rewrite"||o==="summarize")&&D?.length&&g(tt,{label:t.get("The target output length."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Length"),description:y!=="horizontal"?t.get("The target output length."):void 0,data:o==="write"||o==="summarize"?[{value:"short",label:t.get("Short")},{value:"medium",label:t.get("Medium")},{value:"long",label:t.get("Long")}]:[{value:"as-is",label:t.get("As-Is")},{value:"shorter",label:t.get("Shorter")},{value:"longer",label:t.get("Longer")}],value:ae||(o==="rewrite"?"as-is":"short"),onChange:r=>{let m=r;Ne(m),J?.({length:m})}})}),o==="summarize"||o==="write"||o==="rewrite"&&D?.outputFormat&&g(tt,{label:t.get("The format for the generated output."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Output format"),description:y!=="horizontal"?t.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:t.get("Plain Text")},{value:"markdown",label:t.get("Markdown")},{value:"html",label:t.get("HTML")}],value:de||"markdown",onChange:r=>{let m=r;Pe(m),J?.({outputFormat:m})}})})]})]})]}),w.busy&&ot&&g(vt,{enabled:c==="modal",working:!0,variation:c,children:ie(Xe,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[g(wr,{size:"sm"}),g(un.Label,{className:"ai-feature-status-text",children:ot})]})}),P&&ie(at,{mt:"md",children:[o==="proofread"&&(P.corrections.length===0?g(ln,{color:"green",children:t.get("No issues found. Your text looks great!")}):ie(Pt,{children:[g("p",{style:{marginTop:0,opacity:.85},children:t.get("Hover highlights to see explanations.")}),g(oa,{original:we,corrections:P.corrections}),P.correctedInput?ie(Pt,{children:[g("h4",{style:{marginTop:16,marginBottom:8},children:t.get("Corrected")}),g(Xe,{c:"pre",className:"ai-feature-generated-content",children:P.correctedInput})]}):null]})),o==="generateImageMetadata"&&ie(Pt,{children:[g(et,{readOnly:!l,label:t.get("Alt Text"),description:t.get("The alt text for the image."),value:P.alt_text||"",onChange:r=>W({...P,alt_text:r.target.value})}),g(et,{readOnly:!l,label:t.get("Title"),description:t.get("The title for the image."),value:P.title||"",onChange:r=>W({...P,title:r.target.value})}),g(et,{readOnly:!l,label:t.get("Caption"),description:t.get("The caption for the image."),value:P.caption||"",onChange:r=>W({...P,caption:r.target.value})}),g(et,{readOnly:!l,label:t.get("Description"),description:t.get("The description for the image."),value:P.description||"",onChange:r=>W({...P,description:r.target.value})})]}),o==="generatePostMetadata"&&ie(Pt,{children:[g(et,{readOnly:!l,label:t.get("Title"),description:t.get("The title for the post."),value:P.title||"",onChange:r=>W({...P,title:r.target.value})}),g(et,{readOnly:!l,label:t.get("Excerpt"),description:t.get("The excerpt for the post."),value:P.excerpt||"",onChange:r=>W({...P,excerpt:r.target.value})})]}),o!=="proofread"&&o!=="generateImageMetadata"&&o!=="generatePostMetadata"&&typeof P=="string"&&g(ga,{value:P,editable:!!l,onChange:r=>{W(r)}})]}),P===""&&g(ga,{value:P,editable:!1})]}),ie(Xe,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[w.busy&&g(gt,{variant:"outline",size:"sm",onClick:Bt,"data-ai-kit-cancel-button":!0,children:t.get("Cancel")}),!w.busy&&g(gt,{variant:"filled",size:"sm",disabled:!ge,onClick:()=>Ze(),"data-ai-kit-generate-button":!0,children:st()}),!w.busy&&w.lastSource==="on-device"&&it&&fe&&g(gt,{variant:"filled",size:"sm",disabled:!ge,onClick:Et,"data-ai-kit-regenerate-on-backend-button":!0,children:Kt()}),!w.busy&&b&&g(gt,{variant:"outline",size:"sm",disabled:!P||o==="proofread"&&P.corrections.length===0,onClick:async()=>{b(de==="html"?await on(P):P),Me()},"data-ai-kit-accept-button":!0,children:t.get(Y)}),g(gt,{variant:"default",size:"sm",onClick:Me,"data-ai-kit-close-button":!0,children:t.get("Close")})]}),g(Ht,{variation:c})]})})]})]})]})};function ga(n){let{value:i,editable:d,onChange:l}=n;return d?ie(at,{p:0,gap:"sm",children:[g(un.Label,{children:t.get("Generated content")}),g(Sr,{value:i,onChange:a=>l?.(a.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor"}),g(un.Label,{children:t.get("Preview")}),g(at,{className:"ai-feature-generated-content ai-feature-preview",children:g(ua,{remarkPlugins:[ca],children:i})})]}):g(at,{className:"ai-feature-generated-content",children:i?g(ua,{remarkPlugins:[ca],children:i}):g(ln,{color:"yellow",children:t.get("No content generated.")})})}var Fr=dt(Wr);import{ActionIcon as fa,Anchor as Jr,Button as qe,Group as he,Input as Vr,List as ka,Modal as pt,Stack as ht,Text as Ce,Textarea as _r}from"@mantine/core";import{IconMaximize as Zr,IconMessage as $r,IconMinimize as Qr,IconPaperclip as Xr,IconPencil as ei,IconPlayerStop as ti,IconSend as ni,IconTrash as ai}from"@tabler/icons-react";import{getStoreSelect as ri,sendChatMessage as ii,sendFeedbackMessage as oi}from"@smart-cloud/ai-kit-core";import{useSelect as si}from"@wordpress/data";import{I18n as k}from"aws-amplify/utils";import{useCallback as j,useEffect as ue,useMemo as oe,useRef as Ee,useState as me}from"react";import li from"react-markdown";import ui from"remark-gfm";var qr="ai-kit-chatbot-attachments",rt="attachments";var cn=null;function Yr(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function dn(){if(!Yr())return null;cn||(cn=new Promise(n=>{try{let i=window.indexedDB.open(qr,1);i.onerror=()=>n(null),i.onblocked=()=>n(null),i.onupgradeneeded=()=>{let d=i.result;d.objectStoreNames.contains(rt)||d.createObjectStore(rt,{keyPath:"id"})},i.onsuccess=()=>n(i.result)}catch(i){console.warn("[AiChatbot] IndexedDB is not available",i),n(null)}}));try{return await cn}catch(n){return console.warn("[AiChatbot] Failed to open attachment store",n),null}}async function pa(n,i){let d=await dn();return d?new Promise((l,a)=>{try{let c=d.transaction(rt,n),A=c.objectStore(rt),M=i(A);c.oncomplete=()=>l(M),c.onerror=()=>a(c.error),c.onabort=()=>a(c.error)}catch(c){a(c)}}).catch(l=>(console.warn("[AiChatbot] Attachment store transaction failed",l),null)):null}async function ha(n,i,d){let l={id:n,blob:i,name:d.name,type:d.type,size:d.size,createdAt:Date.now()};return await pa("readwrite",c=>(c.put(l),n))}async function gn(n){let i=await dn();return i?new Promise((d,l)=>{try{let a=i.transaction(rt,"readonly"),c=a.objectStore(rt).get(n);c.onsuccess=()=>{let A=c.result;d(A??null)},c.onerror=()=>l(c.error),a.onabort=()=>l(a.error)}catch(a){l(a)}}).catch(d=>(console.warn("[AiChatbot] Failed to load attachment",d),null)):null}async function Yt(){await pa("readwrite",n=>{n.clear()})}async function mn(n){let i=await dn();i&&await new Promise((d,l)=>{try{let a=i.transaction(rt,"readwrite"),c=a.objectStore(rt),A=c.getAllKeys();A.onsuccess=()=>{let M=A.result;for(let $ of M){let Q=String($);n.has(Q)||c.delete($)}},A.onerror=()=>l(A.error),a.oncomplete=()=>d(),a.onerror=()=>l(a.error),a.onabort=()=>l(a.error)}catch(a){l(a)}}).catch(d=>{console.warn("[AiChatbot] Failed to cleanup attachments",d)})}import{Fragment as bi,jsx as f,jsxs as Z}from"react/jsx-runtime";k.putVocabularies(lt);var Jt=1440*60*1e3,ci=1,di="localstorage",Tt=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,fn={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 St(n){return`${n}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var gi=4,mi=5*1024*1024,pi=n=>{let i=(n?.name||"").toString(),d=(n?.code||"").toString(),l=(n?.message||"").toString();return i==="AbortError"||d==="ABORT_ERR"||/abort|aborted|cancel/i.test(l)},hi=(n,i)=>{if(!n)return null;let d=n.step,l=k.get((n.message??"").trim()),a=typeof n.progress=="number"?n.progress:null,c=a==null?null:Math.round(a*100);switch(d){case"decide":return l||k.get("Checking capabilities...");case"on-device:init":return l||k.get("Initializing on-device AI...");case"on-device:download":return c==null?l||k.get("Downloading model..."):l||`${k.get("Downloading model...")} ${c}%`;case"on-device:ready":return l||k.get("On-device model ready...");case"on-device:run":return l||k.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return k.get(i.assistantThinkingLabel??fn.assistantThinkingLabel);case"done":return l||k.get("Done.");case"error":return l||k.get("An error occurred.");default:return l||null}};function pn(n){if(typeof window>"u")return null;try{return n==="localstorage"?window.localStorage:n==="sessionstorage"?window.sessionStorage:null}catch{return null}}var Vt=n=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(n)}catch{return null}},hn=n=>{if(n&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(n)}catch{}},ya=n=>{!n||n.length===0||n.forEach(i=>hn(i.objectUrl))},ba=n=>{n.forEach(i=>ya(i.attachments))},fi=n=>{let{rootElement:i,store:d,previewMode:l,title:a,openButtonTitle:c,openButtonIcon:A,showOpenButtonTitle:M=!0,showOpenButtonIcon:$=!0,colorMode:Q,language:x,onClose:X,placeholder:fe,maxImages:Y,maxImageBytes:y,historyStorage:o=di,emptyHistoryAfterDays:S=ci,labels:ke,openButtonIconLayout:ee="top",openButtonPosition:B="bottom-right"}=n,h=oe(()=>({...fn,...ke||{}}),[ke]),b=At(),[J,O]=me(""),[te,D]=me([]),[V,z]=me([]),[G,se]=me(null),[Le,Je]=me(!1),[ce,it]=me(!1),[ve,ye]=me(!1),[_,P]=me(!1),[W,we]=me(!0),[Ge,je]=me(null),[le,Ve]=me(!1),[Oe,v]=me(null),[R,be]=me(null),[de,Pe]=me(!1),[T,Te]=me(null),ae=Ee(T);ue(()=>{ae.current=T},[T]);let Ne=Ee(null),Se=Ee(!1),[_t,We]=me(null),_e=Ee(null),Be=Ee(null),Re=Ee(null),Dt=Ee(null),Ae=j(e=>{e.forEach(u=>hn(u.objectUrl))},[]),ge=j(()=>{Ae(st.current),D([]),_e.current&&(_e.current.value="")},[Ae]),[w,ot]=me(null),Ze=Ee(J),Et=Ee(V),It=Ee(w),st=Ee(te);ue(()=>{Ze.current=J},[J]),ue(()=>{st.current=te},[te]),ue(()=>{Et.current=V},[V]),ue(()=>{It.current=w},[w]),ue(()=>{x&&k.setLanguage(x||"en")},[x]);let Kt=si(()=>ri(d).isShowChatbotPreview()),Me=oe(()=>Math.max(0,Y??gi),[Y]),Bt=oe(()=>Math.max(0,y??mi),[y]),$e=V.length>0,F=oe(()=>b.busy&&T==="chat",[b.busy,T]),zt=oe(()=>F?!1:J.trim().length>0,[J,F]),Qe=oe(()=>{let e=c||h.askMeLabel;return k.get(e)},[c,h.askMeLabel,x]),Zt=oe(()=>{let e=a||h.modalTitle;return k.get(e)},[a,h.modalTitle,x]),$t=oe(()=>{let e=fe||h.placeholder;return k.get(e)},[fe,h.placeholder,x]),Ut=oe(()=>{let e="ai-docs-ask",u=`ai-open-btn--${B}`;return`${e} ${u}`},[B]),r=j(()=>{let e=Dt.current;if(e)try{let u=window.innerHeight||document.documentElement.clientHeight,p=360,s=1e3,C=Math.floor(u*.8),I=Math.max(p,Math.min(C,s));e.style.height=`${I}px`}catch{}},[]),m=j(()=>{let e=R;e&&window.setTimeout(()=>{try{e.scrollTop=e.scrollHeight}catch{}},50)},[R]),K=j(()=>{P(!1),ce&&it(!1),ye(!1),X?.()},[ce,X]);ue(()=>{if(_)return r(),window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)},[_,r]),ue(()=>{if(!(!_||!ce))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[_,ce,K]);let N=oe(()=>te.map(e=>({id:e.id,url:e.objectUrl,title:e.file.name})),[te]);ue(()=>{$e||we(!0)},[$e]),ue(()=>()=>{Ae(st.current)},[Ae]),ue(()=>{let e=R;if(!e)return;let u=()=>{let p=e.scrollHeight-(e.scrollTop+e.clientHeight);we(p<20)};return e.addEventListener("scroll",u),()=>{e.removeEventListener("scroll",u)}},[_,R]),ue(()=>{if(!W)return;let e=R;e&&e.scrollHeight>e.clientHeight&&(e.scrollTop=e.scrollHeight)},[V,b.busy,W,R]),ue(()=>{_||je(null)},[_]);let re=oe(()=>b.busy?hi(b.statusEvent,h)||k.get("Working\u2026"):null,[b.busy,b.statusEvent,x,h]),H=oe(()=>{for(let e=V.length-1;e>=0;e--){let u=V[e];if(u.role==="user"&&u.clientStatus==="canceled")return u.id}return null},[V]),U=j(e=>{z(u=>{let p=[...u].map((I,L)=>({m:I,i:L})).reverse().find(I=>I.m.role==="user"&&I.m.clientStatus==="pending")?.i;if(p==null)return u;let s=u.slice(),C=s[p];return s[p]={...C,clientStatus:e??void 0},s})},[z]),ne=j(()=>{if(!(!b.busy||ae.current!=="chat")){Se.current=!0;try{b.cancel()}catch{}U("canceled"),Te(null),se(null),m()}},[b,U,m]),He=j(e=>{let u=st.current,p=Array.from(e.target.files||[]),s=Math.max(0,Me-u.length);if(s===0){e.currentTarget.value="";return}let C=[];for(let I of p){if(C.length>=s)break;let L=/image\/(jpeg|png|gif|webp)/i.test(I.type),q=I.size<=Bt,ze=[...u,...C].some(De=>De.file.name===I.name&&De.file.size===I.size&&De.file.lastModified===I.lastModified);if(!L||!q||ze)continue;let Ue=Vt(I);Ue&&C.push({id:St("composer-image"),file:I,objectUrl:Ue})}C.length&&D(I=>[...I,...C]),e.currentTarget.value=""},[Me,Bt]),Ot=j(e=>{D(u=>{if(e<0||e>=u.length)return u;let p=u[e];return p&&hn(p.objectUrl),u.filter((s,C)=>C!==e)})},[]),Ie=Ee(null);ue(()=>{if(G)return Ie.current&&(window.clearTimeout(Ie.current),Ie.current=null),Ie.current=window.setTimeout(()=>{se(null),Ie.current=null},6e3),()=>{Ie.current&&(window.clearTimeout(Ie.current),Ie.current=null)}},[G]);let bn=j(async e=>{if(!e.length)return[];let u=o!=="nostorage";return(await Promise.all(e.map(async s=>{let C=St("attachment"),I;if(u)try{I=await ha(C,s.file,{name:s.file.name,type:s.file.type,size:s.file.size})??void 0}catch(q){console.warn("[AiChatbot] Failed to persist attachment",q)}let L=Vt(s.file);return{id:C,name:s.file.name,type:s.file.type||"application/octet-stream",size:s.file.size,blobId:I,objectUrl:L??void 0,blob:s.file}}))).filter(Boolean)},[o]),yn=j(async e=>{let u=[];for(let p of e){let s;if(p.attachments&&p.attachments.length>0){s=[];for(let C of p.attachments){let I;if(C.blobId)try{I=(await gn(C.blobId))?.blob??void 0}catch(q){console.warn("[AiChatbot] Failed to hydrate attachment",q)}if(!I)continue;let L=I?Vt(I):null;s.push({...C,objectUrl:L??void 0,blob:I??void 0})}}u.push({...p,attachments:s})}return u},[]),An=j(async e=>{if(!e||e.length===0){ge();return}let u=[];for(let p of e){let s=p.blob;if(!s&&p.blobId)try{s=(await gn(p.blobId))?.blob??void 0}catch(L){console.warn("[AiChatbot] Failed to reload attachment",L)}if(!s)continue;let C=s instanceof File?s:new File([s],p.name||"attachment",{type:p.type||s.type||"application/octet-stream"}),I=Vt(C);if(I&&(u.push({id:St("composer-image"),file:C,objectUrl:I}),u.length>=Me))break}if(u.length===0){ge();return}D(p=>(Ae(p),u)),_e.current&&(_e.current.value="")},[ge,Ae,Me]),Qt=j((e,u)=>{e&&je({url:e,title:u})},[]),Ia=j(()=>{je(null)},[]),vn=j(()=>{ba(Et.current),ge(),z([]),se(null),Re.current=null,ot(null),we(!0),Je(!1);let e=pn(o);if(e)try{e.removeItem(Tt)}catch{}Yt()},[ge,o]),za=j(()=>{Je(!0)},[]),Ca=j(()=>{b.busy&&ae.current==="chat"&&ne(),vn()},[b.busy,ne,vn]),wn=j(()=>{Je(!1)},[]),Tn=j(async(e,u)=>{if(!b.busy)try{let p=Re.current&&Date.now()-Re.current.storedAt<S*Jt?Re.current.id:void 0;if(!p)return;Te("feedback"),se(null),await b.run(async({signal:s,onStatus:C})=>(await oi({sessionId:p,feedbackMessageId:e,feedbackType:u},{signal:s,onStatus:C}),null)),se(null)}catch(p){let s=p?.message?.trim()||k.get("An error occurred.");se(s),console.error("Failed to send feedback",p)}finally{Te(p=>p==="feedback"?null:p)}},[b,x]),Sn=j((e,u)=>{z(p=>p.map(s=>s.id!==e||s.role!=="assistant"?s:s.feedback===u?{...s,feedback:void 0}:{...s,feedback:u})),Tn(e,u)},[Tn]),Nt=j(async()=>{let e=Ze.current.trim();if(!e||b.busy)return;Se.current=!1,se(null),Te("chat");let u=[...st.current],p=await bn(u),s=St("user"),C=Date.now(),I={id:s,role:"user",content:e,createdAt:C,clientStatus:"pending",attachments:p.length?p:void 0};O(""),ge(),z(L=>[...L,I]),_||P(!0),m();try{let L=Re.current&&Date.now()-Re.current.storedAt<S*Jt?Re.current.id:void 0,q=await b.run(async({signal:Ue,onStatus:De})=>await ii({sessionId:L,message:e,images:u.map(Ha=>Ha.file)},{signal:Ue,onStatus:De}));if(Se.current){U("canceled");return}if(!q)throw new Error(k.get(b.error??h.emptyResponseLabel));q.sessionId&&(Re.current={id:q.sessionId,storedAt:Date.now()});let ze={id:q.metadata?.messageId||St("assistant"),role:"assistant",content:q.result||"",citations:q.citations,createdAt:Date.now()};z(Ue=>[...Ue.map(bt=>bt.id===s?{...bt,clientStatus:void 0}:bt),ze]),ot(C)}catch(L){if(console.error("Error during ask()",L),Se.current||pi(L)){U("canceled");return}let q=L?.message?.trim()||k.get(h.unexpectedErrorLabel);z(ze=>[...ze.map(De=>De.id===s?{...De,clientStatus:void 0}:De),{id:St("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${q}`,createdAt:Date.now()}]),ot(C)}finally{Te(L=>L==="chat"?null:L),Se.current=!1,Be.current&&Be.current.focus(),m()}},[b,bn,ge,_,m,U,h.emptyResponseLabel,h.unexpectedErrorLabel,x]),xa=j(e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),zt&&Nt())},[Nt,zt]),La=j(()=>{P(!0)},[]);ue(()=>()=>{Ne.current!=null&&(cancelAnimationFrame(Ne.current),Ne.current=null)},[]);let Pa=j(()=>{it(e=>{let u=!e;return Ne.current!=null&&(cancelAnimationFrame(Ne.current),Ne.current=null),u?(ye(!0),requestAnimationFrame(()=>{Ne.current=requestAnimationFrame(()=>{ye(!1),Ne.current=null})})):ye(!1),u})},[]),Ma=j(e=>{O(e.content),(async()=>(await An(e.attachments),z(u=>u.filter(p=>p.id!==e.id)),ya(e.attachments),queueMicrotask(()=>Be.current?.focus())))()},[An]),Rn=oe(()=>$?A?f("img",{src:A,className:"ai-open-btn-icon",alt:k.get(h.askMeLabel||Qe)}):f($r,{size:18}):null,[$,A,h,Qe,x]),Da=oe(()=>{let e=Rn,u=M?f(Ce,{inherit:!0,children:Qe}):null;if(!$&&!u)return null;if(!$)return u;if(!M)return e;switch(ee){case"top":return Z(ht,{gap:4,align:"center",children:[e,u]});case"bottom":return Z(ht,{gap:4,align:"center",children:[u,e]});case"right":return Z(he,{gap:6,align:"center",children:[u,e]});default:return Z(he,{gap:6,align:"center",children:[e,u]})}},[Rn,$,M,Qe,ee]),Ea=oe(()=>F,[F]),Ka=oe(()=>!F,[F]),Ba=oe(()=>G||($e?k.get(h.readyLabel):k.get(h.readyEmptyLabel)),[G,$e,h.readyLabel,h.readyEmptyLabel,x]),Ua=oe(()=>F?k.get(h.cancelLabel):k.get(h.sendLabel),[F,h.cancelLabel,h.sendLabel,x]),Oa=oe(()=>F?f(ti,{size:18}):f(ni,{size:18}),[F]),Na=j(()=>{if(F){ne();return}Nt()},[F,ne,Nt]);return ue(()=>{if(!_||!Oe||!R)return;let e=()=>{let q=window.getComputedStyle(R).overflowY,ze=q==="auto"||q==="scroll",Ue=Math.ceil(R.scrollHeight),De=Math.floor(R.clientHeight),bt=Ue>De;return ze&&bt},u=!1,p=L=>{if(!e())return;L.preventDefault();let q=R.scrollHeight-R.clientHeight;R.scrollTop=Math.max(0,Math.min(q,R.scrollTop+L.deltaY))},s=()=>{let L=e();Pe(L),L!==u&&(u=L,u?Oe.addEventListener("wheel",p,{passive:!1}):Oe.removeEventListener("wheel",p))};s();let C=new ResizeObserver(s);C.observe(R);let I=new MutationObserver(s);return I.observe(R,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",s),()=>{u&&Oe.removeEventListener("wheel",p),C.disconnect(),I.disconnect(),window.removeEventListener("resize",s)}},[_,Oe,R]),ue(()=>{let e=!1,u=pn(o);if(!u){o==="nostorage"&&Yt(),Ve(!0);return}return(async()=>{try{let p=u.getItem(Tt);if(!p){Ve(!0);return}let s=JSON.parse(p),C=typeof s?.lastUserSentAt=="number"?s.lastUserSentAt:null;if(!C||Date.now()-C>S*Jt){u.removeItem(Tt),await Yt(),Ve(!0);return}let L=(Array.isArray(s.messages)?s.messages:[]).map(ze=>ze?.role==="user"&&ze.clientStatus==="pending"?{...ze,clientStatus:"canceled"}:ze),q=await yn(L);if(e){ba(q);return}z(q),ot(C),s.session&&s.session.id&&(Re.current=s.session)}catch(p){console.warn("[AiChatbot] Failed to load history",p);try{u.removeItem(Tt)}catch{}}finally{e||Ve(!0)}})(),()=>{e=!0}},[o,S,yn]),ue(()=>{if(!le)return;let e=pn(o);if(!e)return;let u=It.current;if(!u)return;if(Date.now()-u>S*Jt){try{e.removeItem(Tt)}catch{}mn(new Set);return}let p=V.map(({attachments:I,...L})=>({...L,attachments:I?.map(({objectUrl:q,blob:ze,...Ue})=>Ue)})),s={version:1,lastUserSentAt:u,session:Re.current,messages:p};try{e.setItem(Tt,JSON.stringify(s))}catch{}let C=new Set;p.forEach(I=>{I.attachments?.forEach(L=>{L.blobId&&C.add(L.blobId)})}),mn(C)},[le,V,w,o,S]),l&&!Kt||!l&&Kt?null:Z(he,{className:Ut,children:[!_&&f(qe,{variant:"filled",className:M?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:La,"aria-label":Qe,title:Qe,"data-ai-kit-open-button":!0,children:Da}),_&&f(pt.Root,{ref:Dt,opened:_,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:K,className:Ut+" ai-chat-container"+(ce?" maximized":"")+(ce&&ve?" ai-max-enter":""),portalProps:{target:i,reuseTargetNode:!0},"data-ai-kit-theme":Q,"data-ai-kit-variation":"modal",children:Z("div",{className:"ai-chat-container-internal",ref:v,children:[Z(pt.Header,{className:"ai-chat-header-bar",children:[f(pt.Title,{className:"ai-chat-title",children:Zt}),Z(he,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&f(fa,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:Pa,title:ce?k.get(h.restoreSizeLabel):k.get(h.maximizeLabel),"aria-label":ce?k.get(h.restoreSizeLabel):k.get(h.maximizeLabel),"data-ai-kit-maximize-button":!0,children:ce?f(Qr,{size:16}):f(Zr,{size:16})}),f(pt.CloseButton,{"aria-label":k.get(h.closeChatLabel)})]})]}),Z(pt.Body,{className:"ai-chat-scroll",ref:be,"data-scrollable":de?"true":"false",children:[V.map(e=>{let u=e.role==="user",p=u&&e.clientStatus==="canceled"&&e.id===H;return f(he,{justify:u?"flex-end":"flex-start",className:"ai-chat-row "+e.role,onMouseEnter:()=>We(e.id),onMouseLeave:()=>We(s=>s===e.id?null:s),children:Z(ht,{gap:4,w:"100%",style:{alignItems:u?"flex-end":"flex-start"},children:[Z(ht,{className:"ai-chat-bubble",children:[Z(Ce,{className:"ai-chat-header",children:[f(Ce,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:u?k.get(h.userLabel):k.get(h.assistantLabel)}),"\xA0",f(Ce,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(e.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),e.role==="assistant"?f(li,{remarkPlugins:[ui],children:e.content}):f(Ce,{size:"sm",miw:"100px",children:e.content})]}),e.attachments&&e.attachments.length>0&&f(he,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:e.attachments.map(s=>f("button",{type:"button",className:"thumb",style:{backgroundImage:s.objectUrl?`url(${s.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>Qt(s.objectUrl,s.name),disabled:!s.objectUrl,title:s.name||k.get("View image"),"aria-label":s.name||k.get("View image"),children:!s.objectUrl&&f(Ce,{size:"xs",c:"dimmed",children:k.get("Loading image...")})},s.id))}),p&&Z(he,{justify:"flex-end",gap:"xs",children:[f(Ce,{size:"xs",c:"dimmed",children:f("em",{children:k.get(h.notSentLabel)})}),_t===e.id&&f(fa,{size:"sm",variant:"subtle",onClick:()=>Ma(e),title:k.get(h.editLabel),"aria-label":k.get(h.editLabel),"data-ai-kit-edit-button":!0,children:f(ei,{size:14})})]}),e.citations&&e.citations.length>0&&Z(ht,{className:"ai-citations",children:[f(Ce,{fw:"bold",size:"sm",mb:"xs",children:k.get(h.referencesLabel)}),f(ka,{spacing:"xs",size:"sm",children:e.citations.map((s,C)=>{let I=s.sourceUrl||s.url,L=s.title||I||`${k.get(h.referenceLabel)} #${C+1}`;return Z(ka.Item,{children:[I?f(Jr,{href:I,target:"_blank",rel:"noreferrer",children:L}):f(Ce,{children:L}),s.snippet?f(Ce,{size:"xs",c:"dimmed",mt:4,children:s.snippet}):null]},C)})})]}),e.role==="assistant"&&Z(he,{className:"ai-feedback",gap:"xs",children:[f(qe,{className:e.feedback==="accepted"?"active":void 0,onClick:()=>Sn(e.id,"accepted"),"aria-label":k.get(h.acceptResponseLabel),disabled:b.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),f(qe,{type:"button",className:e.feedback==="rejected"?"active":void 0,onClick:()=>Sn(e.id,"rejected"),"aria-label":k.get(h.rejectResponseLabel),disabled:b.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},e.id)}),Ea&&f(he,{justify:"flex-start",className:"ai-chat-row assistant status",children:Z(ht,{className:"ai-chat-bubble typing",children:[re?f(Ce,{size:"sm",c:"dimmed",children:f("em",{children:re})}):null,Z("div",{className:"typing-indicator",children:[f("span",{}),f("span",{}),f("span",{})]})]})})]}),Ka&&f(he,{className:"ai-status-line",children:f(Ce,{className:"ai-status-text",children:f("em",{children:Ba})})}),Z(ht,{className:"ai-box ai-box-open",children:[Z(pt,{opened:Le,onClose:wn,centered:!0,title:k.get("Reset conversation"),style:{position:"fixed"},left:0,children:[f(Ce,{size:"sm",children:k.get("Are you sure you want to reset the conversation?")}),Z(he,{justify:"flex-end",mt:"md",children:[f(qe,{variant:"default",onClick:wn,"data-ai-kit-no-button":!0,children:k.get("No")}),f(qe,{color:"var(--ai-kit-color-danger, red)",onClick:Ca,disabled:!$e&&!F,"data-ai-kit-yes-button":!0,children:k.get("Yes")})]})]}),f(he,{children:f(_r,{className:"ai-message",ref:Be,placeholder:$t,value:J,onChange:e=>{O(e.target.value)},onKeyDown:xa,rows:3})}),Z(he,{className:"ai-actions",justify:"space-between",w:"100%",children:[f(he,{justify:"flex-start",children:f(qe,{variant:"light",leftSection:f(ai,{size:18}),onClick:za,disabled:!$e&&!F,"data-ai-kit-reset-button":!0,children:k.get(h.resetLabel)})}),Z(he,{justify:"flex-end",children:[Me>0&&Z(bi,{children:[f(qe,{variant:"outline",leftSection:f(Xr,{size:18}),onClick:()=>_e.current?.click(),disabled:te.length>=Me||F,title:k.get(h.addImageLabel),"data-ai-kit-add-image-button":!0,children:k.get(h.addLabel)}),f(Vr,{ref:_e,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:He})]}),f(qe,{leftSection:Oa,variant:"filled",onClick:Na,disabled:!F&&!zt,"data-ai-kit-send-button":!0,children:Ua})]})]}),N.length>0&&f(he,{className:"ai-thumbs",mt:"xs",gap:"xs",children:N.map(({url:e,title:u},p)=>f("div",{role:"button",tabIndex:0,className:"thumb",style:{backgroundImage:e?`url(${e})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",overflow:"visible"},"aria-label":u||k.get("View image"),onClick:()=>Qt(e,u),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),Qt(e,u))},children:f(qe,{variant:"white",onClick:s=>{s.stopPropagation(),Ot(p)},"aria-label":k.get(h.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:k.get(h.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},te[p]?.id??p))})]})]})}),f(pt,{opened:!!Ge,onClose:Ia,centered:!0,size:"auto",title:Ge?.title||k.get("Image preview"),children:Ge&&f("img",{src:Ge.url,alt:Ge.title||k.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},ki=dt(fi,{showOpenButton:!0,variation:"modal"});import{Alert as yi,Anchor as Aa,Button as va,Divider as wa,Group as Rt,Loader as Ai,Modal as ft,Paper as Ta,Stack as Mt,Text as kt,TextInput as vi,Title as wi}from"@mantine/core";import{AiKitDocSearchIcon as Ti,sendSearchMessage as Si}from"@smart-cloud/ai-kit-core";import{I18n as xe}from"aws-amplify/utils";import{useCallback as Sa,useEffect as kn,useMemo as Ye,useRef as Ri,useState as Ii}from"react";import zi from"react-markdown";import Ci from"rehype-raw";import xi from"remark-gfm";import{IconSearch as Li}from"@tabler/icons-react";import{Fragment as Ra,jsx as E,jsxs as Ke}from"react/jsx-runtime";xe.putVocabularies(lt);function Pi(n){let i=n?.citations?.docs??[],d=n?.citations?.chunks??[],l=new Map;for(let a of i)l.set(a.docId,{doc:a,chunks:[]});for(let a of d){let c=l.get(a.docId);c?c.chunks.push(a):l.set(a.docId,{doc:{docId:a.docId},chunks:[a]})}return Array.from(l.values())}var Mi=n=>{let{autoRun:i=!0,context:d,title:l,searchButtonIcon:a,showSearchButtonTitle:c=!0,showSearchButtonIcon:A=!0,showSources:M=!0,topK:$=10,getSearchText:Q,variation:x,rootElement:X,colorMode:fe,language:Y,onClose:y,onClickDoc:o}=n,[S,ke]=Ii(""),{busy:ee,error:B,statusEvent:h,result:b,run:J,cancel:O,reset:te}=At(),D=Ri(!1),V=b?.sessionId,z=b?.citations?.docs??[],G=b?.citations?.chunks??[],se=b?.citations?.anchors??[],Le=b?.result??"",Je=Ye(()=>{if(A)return a?.trim()?E("img",{src:a,alt:"",style:{width:18,height:18,objectFit:"contain"}}):E(Li,{size:18})},[a,A]),ce=Ye(()=>(Y&&xe.setLanguage(Y||"en"),xe.get(l||"Search with AI-Kit")),[Y]),it=Ye(()=>h?xe.get("Searching\u2026"):null,[Y,h]),ve=Ye(()=>S||Q,[S,Q]),ye=Ye(()=>{if(ee)return!1;let v=typeof ve=="function"?ve():ve;return!!(v&&v.trim().length>0)},[ve,ee]),_=Sa(async()=>{let v=typeof ve=="function"?ve():ve;v&&(ke(v),te(),await J(async({signal:R,onStatus:be})=>await Si({sessionId:V,query:v,topK:$},{signal:R,onStatus:be,context:d})))},[d,ve,J,te,$,V]),P=Sa(async()=>{te(),y(),D.current=!1},[y,te,D]);kn(()=>{!i||!ye||ee||D.current||(D.current=!0,queueMicrotask(()=>{_()}))},[ee,D,ye,i,_]),kn(()=>{ye||(D.current=!0)},[ye]);let W=Ye(()=>Pi(b),[b]),we=Ye(()=>{let v=new Map;return z.forEach((R,be)=>{R?.docId&&v.set(R.docId,be+1)}),v},[z]),Ge=Ye(()=>{let v=new Map;return G.forEach(R=>{R?.chunkId&&R?.docId&&v.set(R.chunkId,R.docId)}),v},[G]),je=Ye(()=>{if(!Le)return"";if(!se.length||we.size===0)return Le;let v=[...se].filter(de=>Array.isArray(de?.chunkIds)&&de?.span?.end!==void 0).sort((de,Pe)=>{let T=de.span?.end??0,Te=Pe.span?.end??0;return T-Te}),R=0,be=[];for(let de of v){let Pe=de.span?.end;if(typeof Pe!="number"||Pe<R)continue;let T=Array.from(new Set((de.chunkIds??[]).map(ae=>ae?Ge.get(ae):void 0).map(ae=>ae?we.get(ae):void 0).filter(ae=>typeof ae=="number")));if(!T.length)continue;let Te=Math.min(Pe,Le.length);be.push(Le.slice(R,Te)),be.push(`<sup>${T.join(",")}</sup>`),R=Te}return be.push(Le.slice(R)),be.join("")},[se,Le]),le=x==="modal"?ft.Root:Rt,Ve=x==="modal"?ft.Content:Rt,Oe=x==="modal"?ft.Body:Rt;return kn(()=>{if(x==="modal")return document.body.style.overflow="hidden",document.body.onkeydown=v=>{v.key==="Escape"&&(v.preventDefault(),P())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[P,x]),Ke(le,{opened:!0,className:"doc-search-root",onClose:P,padding:"md",gap:"md",size:"md",portalProps:x==="modal"?{target:X,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":fe,"data-ai-kit-variation":x,children:[x==="modal"&&E(ft.Overlay,{}),Ke(Ve,{w:"100%",style:{left:0},children:[x==="modal"&&Ke(ft.Header,{style:{zIndex:1e3},children:[E(Ti,{className:"doc-search-title-icon"}),E(ft.Title,{children:xe.get(ce)}),E(ft.CloseButton,{})]}),E(Oe,{w:"100%",style:{zIndex:1001},children:E(vt,{enabled:x!=="modal",working:ee,variation:x,children:E(Ta,{shadow:"sm",radius:"md",p:"md",children:Ke(Mt,{gap:"sm",children:[x!=="modal"&&E(wi,{order:4,style:{margin:0},children:xe.get(ce)}),Ke(Rt,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[E(vi,{style:{flex:1},value:S,onChange:v=>ke(v.currentTarget.value),placeholder:xe.get("Search the documentation\u2026"),disabled:ee,onKeyDown:v=>{v.key==="Enter"&&ye&&(v.preventDefault(),_())}}),E(va,{variant:"filled",size:"sm",leftSection:Je,onClick:()=>{_()},disabled:!ye,className:c?"doc-search-button":"doc-search-button-no-title",children:c?xe.get("Search"):null}),ee?E(va,{variant:"outline",size:"sm",onClick:O,children:xe.get("Stop")}):null]}),B?E(yi,{color:"red",title:xe.get("Error"),children:B}):null,ee&&it&&E(vt,{enabled:x==="modal",working:!0,variation:x,children:Ke(Rt,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[E(Ai,{size:"sm"}),E(kt,{size:"sm",c:"dimmed",children:it})]})}),b?.result?Ke(Ra,{children:[E(wa,{}),Ke(Mt,{gap:"xs","data-doc-search-result":!0,children:[E(kt,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:xe.get("AI Summary")}),E(zi,{remarkPlugins:[xi],rehypePlugins:[Ci],"data-doc-search-result-content":!0,children:je||Le})]})]}):null,M&&(b?.citations?.docs?.length||b?.citations?.chunks?.length)?Ke(Ra,{children:[E(wa,{}),Ke(Mt,{gap:"sm","data-doc-search-sources":!0,children:[E(kt,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:xe.get("Sources")}),W.map(({doc:v})=>{let R=v.sourceUrl?.trim()||void 0,be=v.docId?we.get(v.docId):void 0,de=v.title?.trim()||v.docId,Pe=Ke(kt,{fw:600,style:{display:"inline"},children:[be?`${be}. `:"",de]});return E(Ta,{withBorder:!0,radius:"md",p:"sm",children:E(Mt,{gap:"xs",children:E(Rt,{justify:"space-between",align:"flex-start",children:Ke(Mt,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[R?E(Aa,{href:R,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:T=>{o&&(T.preventDefault(),o?.(v))},"data-doc-search-source-title":!0,children:Pe}):Pe,E(Aa,{href:R,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:T=>{o&&(T.preventDefault(),o?.(v))},"data-doc-search-source-url":!0,children:v.sourceUrl}),v.author?E(kt,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:v.author}):null,v.description?E(kt,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:v.description}):null]})})})},v.docId)})]})]}):null,!ee&&!B&&!b?.result?E(kt,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:xe.get("Enter a search query to start.")}):null,E(Ht,{variation:x})]})})})})]})]})},Di=dt(Mi);export{ki as AiChatbot,Fr as AiFeature,fn as DEFAULT_CHATBOT_LABELS,Di as DocSearch,$n as isBackendConfigured,on as markdownToHtml,ut as readDefaultOutputLanguage,Ct as stripCodeFence,lt as translations,At as useAiRun,dt as withAiKitShell};
|
|
31
|
+
Follow these additional instructions: ${le}`:"")},{role:"user",content:"What can you see on this image according to the optional knowledge base and shared context?"}].filter(Boolean),N=await w.run(async({signal:U,onStatus:ne})=>(await la({messages:K,images:[je],outputLanguage:"en",responseConstraint:Nr},{signal:U,onStatus:ne,context:S,modeOverride:r,onDeviceTimeoutOverride:a})).result);if(!N){W("");return}let re=(T&&T!=="auto"?T:null)||ut(),H=Ct(N).trim();try{G("Translating result...");let U=await w.run(async({signal:ne})=>await Gr(H,re,{signal:ne,context:S,modeOverride:r,onDeviceTimeoutOverride:a,silent:!0}));W(U)}catch(U){W(H),console.warn("AI Kit: failed to parse SEO JSON",U)}break}}}catch(m){_(m instanceof Error?m.message:t.get("An unknown error occurred."))}G(void 0)}},[O,w,le,ae,T,we,Se,S,o,We,R,ge,V]),Et=nt(async()=>{await Ze("backend-only")},[Ze]),It=nt(r=>{switch(o){case"proofread":return g(Dr,{className:r});case"translate":return g(Er,{className:r});case"summarize":return g(Ur,{className:r});case"rewrite":case"write":return g(Kr,{className:r});case"generateImageMetadata":case"generatePostMetadata":return g(Br,{className:r});default:return g(Rr,{mode:o,className:r})}},[o]),st=nt(()=>{switch(o){case"proofread":return w.lastSource?t.get("Proofread again"):t.get("Proofread");case"translate":return w.lastSource?t.get("Translate again"):t.get("Translate");case"rewrite":return w.lastSource?t.get("Rewrite again"):t.get("Rewrite");case"summarize":return w.lastSource?t.get("Summarize again"):t.get("Summarize");default:return w.lastSource?t.get("Regenerate"):t.get("Generate")}},[O,w.lastSource,o]),Kt=nt(()=>{switch(o){case"proofread":return t.get("Proofread on Backend");case"translate":return t.get("Translate on Backend");case"rewrite":return t.get("Rewrite on Backend");case"summarize":return t.get("Summarize on Backend");default:return t.get("Regenerate on Backend")}},[O,o]),Me=nt(async()=>{Le(!1),W(null),_(null),Be.current=!1,w.reset(),M||h()},[h,Be,w,M]),Bt=nt(async()=>{w.busy&&w.cancel()},[w.busy]);qt(()=>{!se||!d||!ge||w.busy||P||Be.current||(Be.current=!0,queueMicrotask(()=>{Ze(ke)}))},[w.busy,Be,se,ge,d,P,Ze,ke]),qt(()=>{V&&o!=="proofread"&&(ge||(ce(!0),Be.current=!0))},[V,ge,o]),qt(()=>{let r=!0;return(async()=>{try{await Lr();let m=await $n();r&&ve(m)}catch(m){console.error(m),r&&ve(!1)}})(),()=>{r=!1}},[]);let $e=Lt(()=>{let r=[];if(o==="translate"){let m=Ft.find(K=>K.value===R)?.label;r.push(t.get("Input language")+": "+(m?t.get(m):"auto"))}if(T&&D?.outputLanguage){let m=Ft.find(K=>K.value===T)?.label;r.push(t.get("Output language")+": "+(m?t.get(m):T))}return o==="summarize"&&We&&D?.type&&r.push(t.get("Type")+": "+t.get(We)),(o==="write"||o==="rewrite")&&Se&&D?.tone&&r.push(t.get("Tone")+": "+t.get(Se)),(o==="write"||o==="rewrite"||o==="summarize")&&ae&&D?.length&&r.push(t.get("Length")+": "+t.get(ae)),le?.trim()&&D?.instructions&&r.push(t.get("Instructions")+": \u2713"),r.length?r.join(" \u2022 "):t.get("No overrides")},[O,o,R,T,We,Se,ae,le]),F={label:{fontSize:11,opacity:.85},description:{fontSize:11,opacity:.65,marginTop:2},input:{fontSize:12}},zt=c==="modal"?mt.Root:Xe,Qe=c==="modal"?mt.Content:Xe,Zt=c==="modal"?mt.Body:Xe,$t=y==="collapse"?Ar:at,Ut=y==="horizontal"?Xe:at;return qt(()=>{if(!(c!=="modal"||!se))return document.body.style.overflow="hidden",document.body.onkeydown=r=>{r.key==="Escape"&&(r.preventDefault(),Me())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[Me,c]),ie(Pt,{children:[M&&g(gt,{leftSection:Q&&(X?g("span",{dangerouslySetInnerHTML:{__html:X}}):It()),className:$?"ai-feature-open-button":"ai-feature-open-button-no-title",variant:"filled",disabled:se,onClick:()=>Le(!0),"data-ai-kit-open-button":!0,children:$&&t.get(x||Re)}),se&&ie(zt,{opened:!0,className:"ai-feature-root",onClose:Me,padding:"md",gap:"md",size:"md",portalProps:c==="modal"?{target:te,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":ee,"data-ai-kit-variation":c,children:[c==="modal"&&g(mt.Overlay,{}),ie(Qe,{w:"100%",style:{left:0},children:[c==="modal"&&ie(mt.Header,{style:{zIndex:1e3},children:[It("ai-feature-title-icon"),g(mt.Title,{children:t.get(Re)}),g(mt.CloseButton,{})]}),g(Zt,{w:"100%",style:{zIndex:1001},children:ie(vt,{enabled:c!=="modal",working:w.busy,variation:c,children:[ie(at,{gap:"sm",mb:"sm",p:"sm",children:[ye&&g(ln,{color:"red",children:t.get(ye)}),V&&o!=="proofread"&&ie(Tr,{withBorder:!0,p:"sm",mt:"md",className:"ai-feature-options","data-options-display":y,children:[ie(Xe,{justify:"space-between",align:"center",className:"ai-feature-options-summary",onClick:y==="collapse"?()=>ce(r=>!r):void 0,children:[y==="collapse"&&ie(at,{gap:0,children:[g(sa,{size:"sm",fw:600,style:{lineHeight:1.1},children:t.get("Options")}),g(sa,{size:"xs",c:"dimmed",style:{marginTop:2},children:$e})]}),y==="collapse"&&g(gt,{variant:"subtle",size:"xs",style:{minWidth:"fit-content"},onClick:r=>{r.stopPropagation(),ce(m=>!m)},children:Je?t.get("Hide"):t.get("Show")})]}),ie($t,{in:Je,children:[y==="collapse"&&g(vr,{my:"sm"}),ie(Ut,{gap:"xs",justify:"space-between",children:[o==="write"&&D?.text&&g(tt,{label:t.get("The topic or subject for the AI to write about."),disabled:y!=="horizontal",position:"top",children:g(et,{size:"xs",className:"ai-feature-option",styles:F,disabled:w.busy,label:t.get("Topic"),description:y!=="horizontal"?t.get("The topic or subject for the AI to write about."):void 0,value:we||"",onChange:r=>{let m=r.target.value;Ge(m),J?.({text:m})}})}),(o==="write"||o==="rewrite"||o==="generateImageMetadata"||o==="generatePostMetadata")&&D?.instructions&&g(tt,{label:t.get("Additional instructions to guide the AI."),disabled:y!=="horizontal",position:"top",children:g(et,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Instructions"),description:y!=="horizontal"?t.get("Additional instructions to guide the AI."):void 0,value:le||"",onChange:r=>{let m=r.target.value;Ve(m),J?.({instructions:m})}})}),o==="translate"&&g(tt,{label:t.get("The language of the input text."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",styles:F,className:"ai-feature-option",label:t.get("Input language"),description:y!=="horizontal"?t.get("The language of the input text."):void 0,data:[{value:"auto",label:t.get("Auto-detect")},...Ft.map(r=>({value:r.value,label:t.get(r.label)})).sort((r,m)=>r.label.localeCompare(m.label))],value:R||"auto",onChange:r=>{let m=r;be(m),v(void 0),J?.({inputLanguage:m})}})}),D?.outputLanguage&&g(tt,{label:t.get("The language AI-Kit should use for generated text by default (when applicable)."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",styles:F,className:"ai-feature-option",label:t.get("Output language"),description:y!=="horizontal"?t.get("The language AI-Kit should use for generated text by default (when applicable)."):void 0,data:[...[o==="rewrite"?{value:"auto",label:t.get("Auto-detect")}:void 0].filter(Boolean),...Ft.map(r=>({value:r.value,label:t.get(r.label)})).sort((r,m)=>r.label.localeCompare(m.label))],value:T||da.settings.defaultOutputLanguage||(o==="rewrite"?"auto":""),onChange:r=>{let m=r;Te(m),v(void 0),J?.({outputLanguage:m})}})}),o==="summarize"&&D?.type&&g(tt,{label:t.get("The summary style to generate."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Type"),description:y!=="horizontal"?t.get("The summary style to generate."):void 0,data:[{value:"headline",label:t.get("Headline")},{value:"key-points",label:t.get("Key Points")},{value:"teaser",label:t.get("Teaser")},{value:"tldr",label:t.get("TL;DR")}],value:We||"key-points",onChange:r=>{let m=r;_e(m),J?.({type:m})}})}),(o==="write"||o==="rewrite")&&D?.tone&&g(tt,{label:t.get("The tone or style for the AI to use."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Tone"),description:y!=="horizontal"?t.get("The tone or style for the AI to use."):void 0,data:o==="write"?[{value:"neutral",label:t.get("Neutral")},{value:"formal",label:t.get("Formal")},{value:"casual",label:t.get("Casual")}]:[{value:"as-is",label:t.get("As-Is")},{value:"more-formal",label:t.get("More formal")},{value:"more-casual",label:t.get("More casual")}],value:Se||(o==="write"?"neutral":"as-is"),onChange:r=>{let m=r;_t(m),J?.({tone:m})}})}),(o==="write"||o==="rewrite"||o==="summarize")&&D?.length&&g(tt,{label:t.get("The target output length."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Length"),description:y!=="horizontal"?t.get("The target output length."):void 0,data:o==="write"||o==="summarize"?[{value:"short",label:t.get("Short")},{value:"medium",label:t.get("Medium")},{value:"long",label:t.get("Long")}]:[{value:"as-is",label:t.get("As-Is")},{value:"shorter",label:t.get("Shorter")},{value:"longer",label:t.get("Longer")}],value:ae||(o==="rewrite"?"as-is":"short"),onChange:r=>{let m=r;Ne(m),J?.({length:m})}})}),o==="summarize"||o==="write"||o==="rewrite"&&D?.outputFormat&&g(tt,{label:t.get("The format for the generated output."),disabled:y!=="horizontal",position:"top",children:g(wt,{disabled:w.busy,size:"xs",className:"ai-feature-option",styles:F,label:t.get("Output format"),description:y!=="horizontal"?t.get("The format for the generated output."):void 0,data:[{value:"plain-text",label:t.get("Plain Text")},{value:"markdown",label:t.get("Markdown")},{value:"html",label:t.get("HTML")}],value:de||"markdown",onChange:r=>{let m=r;Pe(m),J?.({outputFormat:m})}})})]})]})]}),w.busy&&ot&&g(vt,{enabled:c==="modal",working:!0,variation:c,children:ie(Xe,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[g(wr,{size:"sm"}),g(un.Label,{className:"ai-feature-status-text",children:ot})]})}),P&&ie(at,{mt:"md",children:[o==="proofread"&&(P.corrections.length===0?g(ln,{color:"green",children:t.get("No issues found. Your text looks great!")}):ie(Pt,{children:[g("p",{style:{marginTop:0,opacity:.85},children:t.get("Hover highlights to see explanations.")}),g(oa,{original:we,corrections:P.corrections}),P.correctedInput?ie(Pt,{children:[g("h4",{style:{marginTop:16,marginBottom:8},children:t.get("Corrected")}),g(Xe,{c:"pre",className:"ai-feature-generated-content",children:P.correctedInput})]}):null]})),o==="generateImageMetadata"&&ie(Pt,{children:[g(et,{readOnly:!l,label:t.get("Alt Text"),description:t.get("The alt text for the image."),value:P.alt_text||"",onChange:r=>W({...P,alt_text:r.target.value})}),g(et,{readOnly:!l,label:t.get("Title"),description:t.get("The title for the image."),value:P.title||"",onChange:r=>W({...P,title:r.target.value})}),g(et,{readOnly:!l,label:t.get("Caption"),description:t.get("The caption for the image."),value:P.caption||"",onChange:r=>W({...P,caption:r.target.value})}),g(et,{readOnly:!l,label:t.get("Description"),description:t.get("The description for the image."),value:P.description||"",onChange:r=>W({...P,description:r.target.value})})]}),o==="generatePostMetadata"&&ie(Pt,{children:[g(et,{readOnly:!l,label:t.get("Title"),description:t.get("The title for the post."),value:P.title||"",onChange:r=>W({...P,title:r.target.value})}),g(et,{readOnly:!l,label:t.get("Excerpt"),description:t.get("The excerpt for the post."),value:P.excerpt||"",onChange:r=>W({...P,excerpt:r.target.value})})]}),o!=="proofread"&&o!=="generateImageMetadata"&&o!=="generatePostMetadata"&&typeof P=="string"&&g(ga,{value:P,editable:!!l,onChange:r=>{W(r)}})]}),P===""&&g(ga,{value:P,editable:!1})]}),ie(Xe,{className:"ai-kit-actions",gap:"sm",mb:"sm",p:"sm",children:[w.busy&&g(gt,{variant:"outline",size:"sm",onClick:Bt,"data-ai-kit-cancel-button":!0,children:t.get("Cancel")}),!w.busy&&g(gt,{variant:"filled",size:"sm",disabled:!ge,onClick:()=>Ze(),"data-ai-kit-generate-button":!0,children:st()}),!w.busy&&w.lastSource==="on-device"&&it&&fe&&g(gt,{variant:"filled",size:"sm",disabled:!ge,onClick:Et,"data-ai-kit-regenerate-on-backend-button":!0,children:Kt()}),!w.busy&&b&&g(gt,{variant:"outline",size:"sm",disabled:!P||o==="proofread"&&P.corrections.length===0,onClick:async()=>{b(de==="html"?await on(P):P),Me()},"data-ai-kit-accept-button":!0,children:t.get(Y)}),g(gt,{variant:"default",size:"sm",onClick:Me,"data-ai-kit-close-button":!0,children:t.get("Close")})]}),g(Ht,{variation:c})]})})]})]})]})};function ga(n){let{value:i,editable:d,onChange:l}=n;return d?ie(at,{p:0,gap:"sm",children:[g(un.Label,{children:t.get("Generated content")}),g(Sr,{value:i,onChange:a=>l?.(a.currentTarget.value),autosize:!0,minRows:2,maxRows:12,p:0,className:"ai-feature-generated-content ai-feature-editor"}),g(un.Label,{children:t.get("Preview")}),g(at,{className:"ai-feature-generated-content ai-feature-preview",children:g(ua,{remarkPlugins:[ca],children:i})})]}):g(at,{className:"ai-feature-generated-content",children:i?g(ua,{remarkPlugins:[ca],children:i}):g(ln,{color:"yellow",children:t.get("No content generated.")})})}var Fr=dt(Wr);import{ActionIcon as fa,Anchor as Jr,Button as qe,Group as he,Input as Vr,List as ka,Modal as pt,Stack as ht,Text as Ce,Textarea as _r}from"@mantine/core";import{IconMaximize as Zr,IconMessage as $r,IconMinimize as Qr,IconPaperclip as Xr,IconPencil as ei,IconPlayerStop as ti,IconSend as ni,IconTrash as ai}from"@tabler/icons-react";import{getStoreSelect as ri,sendChatMessage as ii,sendFeedbackMessage as oi}from"@smart-cloud/ai-kit-core";import{useSelect as si}from"@wordpress/data";import{I18n as k}from"aws-amplify/utils";import{useCallback as j,useEffect as ue,useMemo as oe,useRef as Ee,useState as me}from"react";import li from"react-markdown";import ui from"remark-gfm";var qr="ai-kit-chatbot-attachments",rt="attachments";var cn=null;function Yr(){return typeof window<"u"&&typeof window.indexedDB<"u"}async function dn(){if(!Yr())return null;cn||(cn=new Promise(n=>{try{let i=window.indexedDB.open(qr,1);i.onerror=()=>n(null),i.onblocked=()=>n(null),i.onupgradeneeded=()=>{let d=i.result;d.objectStoreNames.contains(rt)||d.createObjectStore(rt,{keyPath:"id"})},i.onsuccess=()=>n(i.result)}catch(i){console.warn("[AiChatbot] IndexedDB is not available",i),n(null)}}));try{return await cn}catch(n){return console.warn("[AiChatbot] Failed to open attachment store",n),null}}async function pa(n,i){let d=await dn();return d?new Promise((l,a)=>{try{let c=d.transaction(rt,n),A=c.objectStore(rt),M=i(A);c.oncomplete=()=>l(M),c.onerror=()=>a(c.error),c.onabort=()=>a(c.error)}catch(c){a(c)}}).catch(l=>(console.warn("[AiChatbot] Attachment store transaction failed",l),null)):null}async function ha(n,i,d){let l={id:n,blob:i,name:d.name,type:d.type,size:d.size,createdAt:Date.now()};return await pa("readwrite",c=>(c.put(l),n))}async function gn(n){let i=await dn();return i?new Promise((d,l)=>{try{let a=i.transaction(rt,"readonly"),c=a.objectStore(rt).get(n);c.onsuccess=()=>{let A=c.result;d(A??null)},c.onerror=()=>l(c.error),a.onabort=()=>l(a.error)}catch(a){l(a)}}).catch(d=>(console.warn("[AiChatbot] Failed to load attachment",d),null)):null}async function Yt(){await pa("readwrite",n=>{n.clear()})}async function mn(n){let i=await dn();i&&await new Promise((d,l)=>{try{let a=i.transaction(rt,"readwrite"),c=a.objectStore(rt),A=c.getAllKeys();A.onsuccess=()=>{let M=A.result;for(let $ of M){let Q=String($);n.has(Q)||c.delete($)}},A.onerror=()=>l(A.error),a.oncomplete=()=>d(),a.onerror=()=>l(a.error),a.onabort=()=>l(a.error)}catch(a){l(a)}}).catch(d=>{console.warn("[AiChatbot] Failed to cleanup attachments",d)})}import{Fragment as bi,jsx as f,jsxs as Z}from"react/jsx-runtime";k.putVocabularies(lt);var Jt=1440*60*1e3,ci=1,di="localstorage",Tt=`ai-kit-chatbot-history-v1:${typeof window<"u"?window.location.hostname:"unknown"}`,fn={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 St(n){return`${n}-${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}var gi=4,mi=5*1024*1024,pi=n=>{let i=(n?.name||"").toString(),d=(n?.code||"").toString(),l=(n?.message||"").toString();return i==="AbortError"||d==="ABORT_ERR"||/abort|aborted|cancel/i.test(l)},hi=(n,i)=>{if(!n)return null;let d=n.step,l=k.get((n.message??"").trim()),a=typeof n.progress=="number"?n.progress:null,c=a==null?null:Math.round(a*100);switch(d){case"decide":return l||k.get("Checking capabilities...");case"on-device:init":return l||k.get("Initializing on-device AI...");case"on-device:download":return c==null?l||k.get("Downloading model..."):l||`${k.get("Downloading model...")} ${c}%`;case"on-device:ready":return l||k.get("On-device model ready...");case"on-device:run":return l||k.get("Running on-device...");case"backend:request":case"backend:waiting":case"backend:response":return k.get(i.assistantThinkingLabel??fn.assistantThinkingLabel);case"done":return l||k.get("Done.");case"error":return l||k.get("An error occurred.");default:return l||null}};function pn(n){if(typeof window>"u")return null;try{return n==="localstorage"?window.localStorage:n==="sessionstorage"?window.sessionStorage:null}catch{return null}}var Vt=n=>{if(typeof window>"u"||typeof URL>"u"||typeof URL.createObjectURL!="function")return null;try{return URL.createObjectURL(n)}catch{return null}},hn=n=>{if(n&&!(typeof window>"u")&&!(typeof URL>"u"||typeof URL.revokeObjectURL!="function"))try{URL.revokeObjectURL(n)}catch{}},ya=n=>{!n||n.length===0||n.forEach(i=>hn(i.objectUrl))},ba=n=>{n.forEach(i=>ya(i.attachments))},fi=n=>{let{rootElement:i,store:d,previewMode:l,title:a,openButtonTitle:c,openButtonIcon:A,showOpenButtonTitle:M=!0,showOpenButtonIcon:$=!0,colorMode:Q,language:x,onClose:X,placeholder:fe,maxImages:Y,maxImageBytes:y,historyStorage:o=di,emptyHistoryAfterDays:S=ci,labels:ke,openButtonIconLayout:ee="top",openButtonPosition:B="bottom-right"}=n,h=oe(()=>({...fn,...ke||{}}),[ke]),b=At(),[J,O]=me(""),[te,D]=me([]),[V,z]=me([]),[G,se]=me(null),[Le,Je]=me(!1),[ce,it]=me(!1),[ve,ye]=me(!1),[_,P]=me(!1),[W,we]=me(!0),[Ge,je]=me(null),[le,Ve]=me(!1),[Oe,v]=me(null),[R,be]=me(null),[de,Pe]=me(!1),[T,Te]=me(null),ae=Ee(T);ue(()=>{ae.current=T},[T]);let Ne=Ee(null),Se=Ee(!1),[_t,We]=me(null),_e=Ee(null),Be=Ee(null),Re=Ee(null),Dt=Ee(null),Ae=j(e=>{e.forEach(u=>hn(u.objectUrl))},[]),ge=j(()=>{Ae(st.current),D([]),_e.current&&(_e.current.value="")},[Ae]),[w,ot]=me(null),Ze=Ee(J),Et=Ee(V),It=Ee(w),st=Ee(te);ue(()=>{Ze.current=J},[J]),ue(()=>{st.current=te},[te]),ue(()=>{Et.current=V},[V]),ue(()=>{It.current=w},[w]),ue(()=>{x&&k.setLanguage(x||"en")},[x]);let Kt=si(()=>ri(d).isShowChatbotPreview()),Me=oe(()=>Math.max(0,Y??gi),[Y]),Bt=oe(()=>Math.max(0,y??mi),[y]),$e=V.length>0,F=oe(()=>b.busy&&T==="chat",[b.busy,T]),zt=oe(()=>F?!1:J.trim().length>0,[J,F]),Qe=oe(()=>{let e=c||h.askMeLabel;return k.get(e)},[c,h.askMeLabel,x]),Zt=oe(()=>{let e=a||h.modalTitle;return k.get(e)},[a,h.modalTitle,x]),$t=oe(()=>{let e=fe||h.placeholder;return k.get(e)},[fe,h.placeholder,x]),Ut=oe(()=>{let e="ai-docs-ask",u=`ai-open-btn--${B}`;return`${e} ${u}`},[B]),r=j(()=>{let e=Dt.current;if(e)try{let u=window.innerHeight||document.documentElement.clientHeight,p=360,s=1e3,C=Math.floor(u*.8),I=Math.max(p,Math.min(C,s));e.style.height=`${I}px`}catch{}},[]),m=j(()=>{let e=R;e&&window.setTimeout(()=>{try{e.scrollTop=e.scrollHeight}catch{}},50)},[R]),K=j(()=>{P(!1),ce&&it(!1),ye(!1),X?.()},[ce,X]);ue(()=>{if(_)return r(),window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)},[_,r]),ue(()=>{if(!(!_||!ce))return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[_,ce,K]);let N=oe(()=>te.map(e=>({id:e.id,url:e.objectUrl,title:e.file.name})),[te]);ue(()=>{$e||we(!0)},[$e]),ue(()=>()=>{Ae(st.current)},[Ae]),ue(()=>{let e=R;if(!e)return;let u=()=>{let p=e.scrollHeight-(e.scrollTop+e.clientHeight);we(p<20)};return e.addEventListener("scroll",u),()=>{e.removeEventListener("scroll",u)}},[_,R]),ue(()=>{if(!W)return;let e=R;e&&e.scrollHeight>e.clientHeight&&(e.scrollTop=e.scrollHeight)},[V,b.busy,W,R]),ue(()=>{_||je(null)},[_]);let re=oe(()=>b.busy?hi(b.statusEvent,h)||k.get("Working\u2026"):null,[b.busy,b.statusEvent,x,h]),H=oe(()=>{for(let e=V.length-1;e>=0;e--){let u=V[e];if(u.role==="user"&&u.clientStatus==="canceled")return u.id}return null},[V]),U=j(e=>{z(u=>{let p=[...u].map((I,L)=>({m:I,i:L})).reverse().find(I=>I.m.role==="user"&&I.m.clientStatus==="pending")?.i;if(p==null)return u;let s=u.slice(),C=s[p];return s[p]={...C,clientStatus:e??void 0},s})},[z]),ne=j(()=>{if(!(!b.busy||ae.current!=="chat")){Se.current=!0;try{b.cancel()}catch{}U("canceled"),Te(null),se(null),m()}},[b,U,m]),He=j(e=>{let u=st.current,p=Array.from(e.target.files||[]),s=Math.max(0,Me-u.length);if(s===0){e.currentTarget.value="";return}let C=[];for(let I of p){if(C.length>=s)break;let L=/image\/(jpeg|png|gif|webp)/i.test(I.type),q=I.size<=Bt,ze=[...u,...C].some(De=>De.file.name===I.name&&De.file.size===I.size&&De.file.lastModified===I.lastModified);if(!L||!q||ze)continue;let Ue=Vt(I);Ue&&C.push({id:St("composer-image"),file:I,objectUrl:Ue})}C.length&&D(I=>[...I,...C]),e.currentTarget.value=""},[Me,Bt]),Ot=j(e=>{D(u=>{if(e<0||e>=u.length)return u;let p=u[e];return p&&hn(p.objectUrl),u.filter((s,C)=>C!==e)})},[]),Ie=Ee(null);ue(()=>{if(G)return Ie.current&&(window.clearTimeout(Ie.current),Ie.current=null),Ie.current=window.setTimeout(()=>{se(null),Ie.current=null},6e3),()=>{Ie.current&&(window.clearTimeout(Ie.current),Ie.current=null)}},[G]);let bn=j(async e=>{if(!e.length)return[];let u=o!=="nostorage";return(await Promise.all(e.map(async s=>{let C=St("attachment"),I;if(u)try{I=await ha(C,s.file,{name:s.file.name,type:s.file.type,size:s.file.size})??void 0}catch(q){console.warn("[AiChatbot] Failed to persist attachment",q)}let L=Vt(s.file);return{id:C,name:s.file.name,type:s.file.type||"application/octet-stream",size:s.file.size,blobId:I,objectUrl:L??void 0,blob:s.file}}))).filter(Boolean)},[o]),yn=j(async e=>{let u=[];for(let p of e){let s;if(p.attachments&&p.attachments.length>0){s=[];for(let C of p.attachments){let I;if(C.blobId)try{I=(await gn(C.blobId))?.blob??void 0}catch(q){console.warn("[AiChatbot] Failed to hydrate attachment",q)}if(!I)continue;let L=I?Vt(I):null;s.push({...C,objectUrl:L??void 0,blob:I??void 0})}}u.push({...p,attachments:s})}return u},[]),An=j(async e=>{if(!e||e.length===0){ge();return}let u=[];for(let p of e){let s=p.blob;if(!s&&p.blobId)try{s=(await gn(p.blobId))?.blob??void 0}catch(L){console.warn("[AiChatbot] Failed to reload attachment",L)}if(!s)continue;let C=s instanceof File?s:new File([s],p.name||"attachment",{type:p.type||s.type||"application/octet-stream"}),I=Vt(C);if(I&&(u.push({id:St("composer-image"),file:C,objectUrl:I}),u.length>=Me))break}if(u.length===0){ge();return}D(p=>(Ae(p),u)),_e.current&&(_e.current.value="")},[ge,Ae,Me]),Qt=j((e,u)=>{e&&je({url:e,title:u})},[]),Ia=j(()=>{je(null)},[]),vn=j(()=>{ba(Et.current),ge(),z([]),se(null),Re.current=null,ot(null),we(!0),Je(!1);let e=pn(o);if(e)try{e.removeItem(Tt)}catch{}Yt()},[ge,o]),za=j(()=>{Je(!0)},[]),Ca=j(()=>{b.busy&&ae.current==="chat"&&ne(),vn()},[b.busy,ne,vn]),wn=j(()=>{Je(!1)},[]),Tn=j(async(e,u)=>{if(!b.busy)try{let p=Re.current&&Date.now()-Re.current.storedAt<S*Jt?Re.current.id:void 0;if(!p)return;Te("feedback"),se(null),await b.run(async({signal:s,onStatus:C})=>(await oi({sessionId:p,feedbackMessageId:e,feedbackType:u},{signal:s,onStatus:C}),null)),se(null)}catch(p){let s=p?.message?.trim()||k.get("An error occurred.");se(s),console.error("Failed to send feedback",p)}finally{Te(p=>p==="feedback"?null:p)}},[b,x]),Sn=j((e,u)=>{z(p=>p.map(s=>s.id!==e||s.role!=="assistant"?s:s.feedback===u?{...s,feedback:void 0}:{...s,feedback:u})),Tn(e,u)},[Tn]),Nt=j(async()=>{let e=Ze.current.trim();if(!e||b.busy)return;Se.current=!1,se(null),Te("chat");let u=[...st.current],p=await bn(u),s=St("user"),C=Date.now(),I={id:s,role:"user",content:e,createdAt:C,clientStatus:"pending",attachments:p.length?p:void 0};O(""),ge(),z(L=>[...L,I]),_||P(!0),m();try{let L=Re.current&&Date.now()-Re.current.storedAt<S*Jt?Re.current.id:void 0,q=await b.run(async({signal:Ue,onStatus:De})=>await ii({sessionId:L,message:e,images:u.map(Ha=>Ha.file)},{signal:Ue,onStatus:De}));if(Se.current){U("canceled");return}if(!q)throw new Error(k.get(b.error??h.emptyResponseLabel));q.sessionId&&(Re.current={id:q.sessionId,storedAt:Date.now()});let ze={id:q.metadata?.messageId||St("assistant"),role:"assistant",content:q.result||"",citations:q.citations,createdAt:Date.now()};z(Ue=>[...Ue.map(bt=>bt.id===s?{...bt,clientStatus:void 0}:bt),ze]),ot(C)}catch(L){if(console.error("Error during ask()",L),Se.current||pi(L)){U("canceled");return}let q=L?.message?.trim()||k.get(h.unexpectedErrorLabel);z(ze=>[...ze.map(De=>De.id===s?{...De,clientStatus:void 0}:De),{id:St("assistant-error"),role:"assistant",content:`\u26A0\uFE0F ${q}`,createdAt:Date.now()}]),ot(C)}finally{Te(L=>L==="chat"?null:L),Se.current=!1,Be.current&&Be.current.focus(),m()}},[b,bn,ge,_,m,U,h.emptyResponseLabel,h.unexpectedErrorLabel,x]),xa=j(e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),zt&&Nt())},[Nt,zt]),La=j(()=>{P(!0)},[]);ue(()=>()=>{Ne.current!=null&&(cancelAnimationFrame(Ne.current),Ne.current=null)},[]);let Pa=j(()=>{it(e=>{let u=!e;return Ne.current!=null&&(cancelAnimationFrame(Ne.current),Ne.current=null),u?(ye(!0),requestAnimationFrame(()=>{Ne.current=requestAnimationFrame(()=>{ye(!1),Ne.current=null})})):ye(!1),u})},[]),Ma=j(e=>{O(e.content),(async()=>(await An(e.attachments),z(u=>u.filter(p=>p.id!==e.id)),ya(e.attachments),queueMicrotask(()=>Be.current?.focus())))()},[An]),Rn=oe(()=>$?A?f("img",{src:A,className:"ai-open-btn-icon",alt:k.get(h.askMeLabel||Qe)}):f($r,{size:18}):null,[$,A,h,Qe,x]),Da=oe(()=>{let e=Rn,u=M?f(Ce,{inherit:!0,children:Qe}):null;if(!$&&!u)return null;if(!$)return u;if(!M)return e;switch(ee){case"top":return Z(ht,{gap:4,align:"center",children:[e,u]});case"bottom":return Z(ht,{gap:4,align:"center",children:[u,e]});case"right":return Z(he,{gap:6,align:"center",children:[u,e]});default:return Z(he,{gap:6,align:"center",children:[e,u]})}},[Rn,$,M,Qe,ee]),Ea=oe(()=>F,[F]),Ka=oe(()=>!F,[F]),Ba=oe(()=>G||($e?k.get(h.readyLabel):k.get(h.readyEmptyLabel)),[G,$e,h.readyLabel,h.readyEmptyLabel,x]),Ua=oe(()=>F?k.get(h.cancelLabel):k.get(h.sendLabel),[F,h.cancelLabel,h.sendLabel,x]),Oa=oe(()=>F?f(ti,{size:18}):f(ni,{size:18}),[F]),Na=j(()=>{if(F){ne();return}Nt()},[F,ne,Nt]);return ue(()=>{if(!_||!Oe||!R)return;let e=()=>{let q=window.getComputedStyle(R).overflowY,ze=q==="auto"||q==="scroll",Ue=Math.ceil(R.scrollHeight),De=Math.floor(R.clientHeight),bt=Ue>De;return ze&&bt},u=!1,p=L=>{if(!e())return;L.preventDefault();let q=R.scrollHeight-R.clientHeight;R.scrollTop=Math.max(0,Math.min(q,R.scrollTop+L.deltaY))},s=()=>{let L=e();Pe(L),L!==u&&(u=L,u?Oe.addEventListener("wheel",p,{passive:!1}):Oe.removeEventListener("wheel",p))};s();let C=new ResizeObserver(s);C.observe(R);let I=new MutationObserver(s);return I.observe(R,{childList:!0,subtree:!0,characterData:!0}),window.addEventListener("resize",s),()=>{u&&Oe.removeEventListener("wheel",p),C.disconnect(),I.disconnect(),window.removeEventListener("resize",s)}},[_,Oe,R]),ue(()=>{let e=!1,u=pn(o);if(!u){o==="nostorage"&&Yt(),Ve(!0);return}return(async()=>{try{let p=u.getItem(Tt);if(!p){Ve(!0);return}let s=JSON.parse(p),C=typeof s?.lastUserSentAt=="number"?s.lastUserSentAt:null;if(!C||Date.now()-C>S*Jt){u.removeItem(Tt),await Yt(),Ve(!0);return}let L=(Array.isArray(s.messages)?s.messages:[]).map(ze=>ze?.role==="user"&&ze.clientStatus==="pending"?{...ze,clientStatus:"canceled"}:ze),q=await yn(L);if(e){ba(q);return}z(q),ot(C),s.session&&s.session.id&&(Re.current=s.session)}catch(p){console.warn("[AiChatbot] Failed to load history",p);try{u.removeItem(Tt)}catch{}}finally{e||Ve(!0)}})(),()=>{e=!0}},[o,S,yn]),ue(()=>{if(!le)return;let e=pn(o);if(!e)return;let u=It.current;if(!u)return;if(Date.now()-u>S*Jt){try{e.removeItem(Tt)}catch{}mn(new Set);return}let p=V.map(({attachments:I,...L})=>({...L,attachments:I?.map(({objectUrl:q,blob:ze,...Ue})=>Ue)})),s={version:1,lastUserSentAt:u,session:Re.current,messages:p};try{e.setItem(Tt,JSON.stringify(s))}catch{}let C=new Set;p.forEach(I=>{I.attachments?.forEach(L=>{L.blobId&&C.add(L.blobId)})}),mn(C)},[le,V,w,o,S]),l&&!Kt||!l&&Kt?null:Z(he,{className:Ut,children:[!_&&f(qe,{variant:"filled",className:M?"ai-launcher-button ai-launcher-text":"ai-launcher-button",onClick:La,"aria-label":Qe,title:Qe,"data-ai-kit-open-button":!0,children:Da}),_&&f(pt.Root,{ref:Dt,opened:_,lockScroll:!1,trapFocus:!1,closeOnEscape:!0,onClose:K,className:Ut+" ai-chat-container"+(ce?" maximized":"")+(ce&&ve?" ai-max-enter":""),portalProps:{target:i,reuseTargetNode:!0},"data-ai-kit-theme":Q,"data-ai-kit-variation":"modal",children:Z("div",{className:"ai-chat-container-internal",ref:v,children:[Z(pt.Header,{className:"ai-chat-header-bar",children:[f(pt.Title,{className:"ai-chat-title",children:Zt}),Z(he,{gap:"4px",align:"center",justify:"center",children:[typeof window<"u"&&window.innerWidth>600&&f(fa,{variant:"subtle",c:"var(--ai-kit-chat-icon-color, var(--ai-kit-color-text))",onClick:Pa,title:ce?k.get(h.restoreSizeLabel):k.get(h.maximizeLabel),"aria-label":ce?k.get(h.restoreSizeLabel):k.get(h.maximizeLabel),"data-ai-kit-maximize-button":!0,children:ce?f(Qr,{size:16}):f(Zr,{size:16})}),f(pt.CloseButton,{"aria-label":k.get(h.closeChatLabel)})]})]}),Z(pt.Body,{className:"ai-chat-scroll",ref:be,"data-scrollable":de?"true":"false",children:[V.map(e=>{let u=e.role==="user",p=u&&e.clientStatus==="canceled"&&e.id===H;return f(he,{justify:u?"flex-end":"flex-start",className:"ai-chat-row "+e.role,onMouseEnter:()=>We(e.id),onMouseLeave:()=>We(s=>s===e.id?null:s),children:Z(ht,{gap:4,w:"100%",style:{alignItems:u?"flex-end":"flex-start"},children:[Z(ht,{className:"ai-chat-bubble",children:[Z(Ce,{className:"ai-chat-header",children:[f(Ce,{fw:"bolder",size:"xs",style:{whiteSpace:"nowrap"},children:u?k.get(h.userLabel):k.get(h.assistantLabel)}),"\xA0",f(Ce,{size:"xs",style:{whiteSpace:"nowrap"},children:new Date(e.createdAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),e.role==="assistant"?f(li,{remarkPlugins:[ui],children:e.content}):f(Ce,{size:"sm",miw:"100px",children:e.content})]}),e.attachments&&e.attachments.length>0&&f(he,{className:"ai-thumbs ai-message-thumbs",gap:"xs",children:e.attachments.map(s=>f("button",{type:"button",className:"thumb",style:{backgroundImage:s.objectUrl?`url(${s.objectUrl})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"},onClick:()=>Qt(s.objectUrl,s.name),disabled:!s.objectUrl,title:s.name||k.get("View image"),"aria-label":s.name||k.get("View image"),children:!s.objectUrl&&f(Ce,{size:"xs",c:"dimmed",children:k.get("Loading image...")})},s.id))}),p&&Z(he,{justify:"flex-end",gap:"xs",children:[f(Ce,{size:"xs",c:"dimmed",children:f("em",{children:k.get(h.notSentLabel)})}),_t===e.id&&f(fa,{size:"sm",variant:"subtle",onClick:()=>Ma(e),title:k.get(h.editLabel),"aria-label":k.get(h.editLabel),"data-ai-kit-edit-button":!0,children:f(ei,{size:14})})]}),e.citations&&e.citations.length>0&&Z(ht,{className:"ai-citations",children:[f(Ce,{fw:"bold",size:"sm",mb:"xs",children:k.get(h.referencesLabel)}),f(ka,{spacing:"xs",size:"sm",children:e.citations.map((s,C)=>{let I=s.sourceUrl||s.url,L=s.title||I||`${k.get(h.referenceLabel)} #${C+1}`;return Z(ka.Item,{children:[I?f(Jr,{href:I,target:"_blank",rel:"noreferrer",children:L}):f(Ce,{children:L}),s.snippet?f(Ce,{size:"xs",c:"dimmed",mt:4,children:s.snippet}):null]},C)})})]}),e.role==="assistant"&&Z(he,{className:"ai-feedback",gap:"xs",children:[f(qe,{className:e.feedback==="accepted"?"active":void 0,onClick:()=>Sn(e.id,"accepted"),"aria-label":k.get(h.acceptResponseLabel),disabled:b.busy,"data-ai-kit-feedback-accept-button":!0,children:"\u{1F44D}"}),f(qe,{type:"button",className:e.feedback==="rejected"?"active":void 0,onClick:()=>Sn(e.id,"rejected"),"aria-label":k.get(h.rejectResponseLabel),disabled:b.busy,"data-ai-kit-feedback-reject-button":!0,children:"\u{1F44E}"})]})]})},e.id)}),Ea&&f(he,{justify:"flex-start",className:"ai-chat-row assistant status",children:Z(ht,{className:"ai-chat-bubble typing",children:[re?f(Ce,{size:"sm",c:"dimmed",children:f("em",{children:re})}):null,Z("div",{className:"typing-indicator",children:[f("span",{}),f("span",{}),f("span",{})]})]})})]}),Ka&&f(he,{className:"ai-status-line",children:f(Ce,{className:"ai-status-text",children:f("em",{children:Ba})})}),Z(ht,{className:"ai-box ai-box-open",children:[Z(pt,{opened:Le,onClose:wn,centered:!0,title:k.get("Reset conversation"),style:{position:"fixed"},left:0,children:[f(Ce,{size:"sm",children:k.get("Are you sure you want to reset the conversation?")}),Z(he,{justify:"flex-end",mt:"md",children:[f(qe,{variant:"default",onClick:wn,"data-ai-kit-no-button":!0,children:k.get("No")}),f(qe,{color:"var(--ai-kit-color-danger, red)",onClick:Ca,disabled:!$e&&!F,"data-ai-kit-yes-button":!0,children:k.get("Yes")})]})]}),f(he,{children:f(_r,{className:"ai-message",ref:Be,placeholder:$t,value:J,onChange:e=>{O(e.target.value)},onKeyDown:xa,rows:3})}),Z(he,{className:"ai-actions",justify:"space-between",w:"100%",children:[f(he,{justify:"flex-start",children:f(qe,{variant:"light",leftSection:f(ai,{size:18}),onClick:za,disabled:!$e&&!F,"data-ai-kit-reset-button":!0,children:k.get(h.resetLabel)})}),Z(he,{justify:"flex-end",children:[Me>0&&Z(bi,{children:[f(qe,{variant:"outline",leftSection:f(Xr,{size:18}),onClick:()=>_e.current?.click(),disabled:te.length>=Me||F,title:k.get(h.addImageLabel),"data-ai-kit-add-image-button":!0,children:k.get(h.addLabel)}),f(Vr,{ref:_e,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},multiple:!0,onChange:He})]}),f(qe,{leftSection:Oa,variant:"filled",onClick:Na,disabled:!F&&!zt,"data-ai-kit-send-button":!0,children:Ua})]})]}),N.length>0&&f(he,{className:"ai-thumbs",mt:"xs",gap:"xs",children:N.map(({url:e,title:u},p)=>f("div",{role:"button",tabIndex:0,className:"thumb",style:{backgroundImage:e?`url(${e})`:void 0,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",overflow:"visible"},"aria-label":u||k.get("View image"),onClick:()=>Qt(e,u),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),Qt(e,u))},children:f(qe,{variant:"white",onClick:s=>{s.stopPropagation(),Ot(p)},"aria-label":k.get(h.removeImageLabel),mt:"-xs",mr:"-xs",size:"xs",p:0,className:"remove-image-button",title:k.get(h.removeImageLabel),"data-ai-kit-remove-image-button":!0,children:"X"})},te[p]?.id??p))})]})]})}),f(pt,{opened:!!Ge,onClose:Ia,centered:!0,size:"auto",title:Ge?.title||k.get("Image preview"),children:Ge&&f("img",{src:Ge.url,alt:Ge.title||k.get("Image preview"),style:{maxWidth:"100%",maxHeight:"70vh"}})})]})},ki=dt(fi,{showOpenButton:!0,variation:"modal"});import{Alert as yi,Anchor as Aa,Button as va,Divider as wa,Group as Rt,Loader as Ai,Modal as ft,Paper as Ta,Stack as Mt,Text as kt,TextInput as vi,Title as wi}from"@mantine/core";import{AiKitDocSearchIcon as Ti,sendSearchMessage as Si}from"@smart-cloud/ai-kit-core";import{I18n as xe}from"aws-amplify/utils";import{useCallback as Sa,useEffect as kn,useMemo as Ye,useRef as Ri,useState as Ii}from"react";import zi from"react-markdown";import Ci from"rehype-raw";import xi from"remark-gfm";import{IconSearch as Li}from"@tabler/icons-react";import{Fragment as Ra,jsx as E,jsxs as Ke}from"react/jsx-runtime";xe.putVocabularies(lt);function Pi(n){let i=n?.citations?.docs??[],d=n?.citations?.chunks??[],l=new Map;for(let a of i)l.set(a.docId,{doc:a,chunks:[]});for(let a of d){let c=l.get(a.docId);c?c.chunks.push(a):l.set(a.docId,{doc:{docId:a.docId},chunks:[a]})}return Array.from(l.values())}var Mi=n=>{let{autoRun:i=!0,context:d,title:l,searchButtonIcon:a,showSearchButtonTitle:c=!0,showSearchButtonIcon:A=!0,showSources:M=!0,topK:$=10,getSearchText:Q,variation:x,rootElement:X,colorMode:fe,language:Y,onClose:y,onClickDoc:o}=n,[S,ke]=Ii(""),{busy:ee,error:B,statusEvent:h,result:b,run:J,cancel:O,reset:te}=At(),D=Ri(!1),V=b?.sessionId,z=b?.citations?.docs??[],G=b?.citations?.chunks??[],se=b?.citations?.anchors??[],Le=b?.result??"",Je=Ye(()=>{if(A)return a?.trim()?E("img",{src:a,alt:"",style:{width:18,height:18,objectFit:"contain"}}):E(Li,{size:18})},[a,A]),ce=Ye(()=>(Y&&xe.setLanguage(Y||"en"),xe.get(l||"Search with AI-Kit")),[Y]),it=Ye(()=>h?xe.get("Searching\u2026"):null,[Y,h]),ve=Ye(()=>S||Q,[S,Q]),ye=Ye(()=>{if(ee)return!1;let v=typeof ve=="function"?ve():ve;return!!(v&&v.trim().length>0)},[ve,ee]),_=Sa(async()=>{let v=typeof ve=="function"?ve():ve;v&&(ke(v),te(),await J(async({signal:R,onStatus:be})=>await Si({sessionId:V,query:v,topK:$},{signal:R,onStatus:be,context:d})))},[d,ve,J,te,$,V]),P=Sa(async()=>{te(),y(),D.current=!1},[y,te,D]);kn(()=>{!i||!ye||ee||D.current||(D.current=!0,queueMicrotask(()=>{_()}))},[ee,D,ye,i,_]),kn(()=>{ye||(D.current=!0)},[ye]);let W=Ye(()=>Pi(b),[b]),we=Ye(()=>{let v=new Map;return z.forEach((R,be)=>{R?.docId&&v.set(R.docId,be+1)}),v},[z]),Ge=Ye(()=>{let v=new Map;return G.forEach(R=>{R?.chunkId&&R?.docId&&v.set(R.chunkId,R.docId)}),v},[G]),je=Ye(()=>{if(!Le)return"";if(!se.length||we.size===0)return Le;let v=[...se].filter(de=>Array.isArray(de?.chunkIds)&&de?.span?.end!==void 0).sort((de,Pe)=>{let T=de.span?.end??0,Te=Pe.span?.end??0;return T-Te}),R=0,be=[];for(let de of v){let Pe=de.span?.end;if(typeof Pe!="number"||Pe<R)continue;let T=Array.from(new Set((de.chunkIds??[]).map(ae=>ae?Ge.get(ae):void 0).map(ae=>ae?we.get(ae):void 0).filter(ae=>typeof ae=="number")));if(!T.length)continue;let Te=Math.min(Pe,Le.length);be.push(Le.slice(R,Te)),be.push(`<sup>${T.join(",")}</sup>`),R=Te}return be.push(Le.slice(R)),be.join("")},[se,Le]),le=x==="modal"?ft.Root:Rt,Ve=x==="modal"?ft.Content:Rt,Oe=x==="modal"?ft.Body:Rt;return kn(()=>{if(x==="modal")return document.body.style.overflow="hidden",document.body.onkeydown=v=>{v.key==="Escape"&&(v.preventDefault(),P())},()=>{document.body.style.overflow="",document.body.onkeydown=null}},[P,x]),Ke(le,{opened:!0,className:"doc-search-root",onClose:P,padding:"md",gap:"md",size:"xl",portalProps:x==="modal"?{target:X,reuseTargetNode:!0}:void 0,"data-ai-kit-theme":fe,"data-ai-kit-variation":x,children:[x==="modal"&&E(ft.Overlay,{}),Ke(Ve,{w:"100%",style:{left:0},children:[x==="modal"&&Ke(ft.Header,{style:{zIndex:1e3},children:[E(Ti,{className:"doc-search-title-icon"}),E(ft.Title,{children:xe.get(ce)}),E(ft.CloseButton,{})]}),E(Oe,{w:"100%",style:{zIndex:1001},children:E(vt,{enabled:x!=="modal",working:ee,variation:x,children:E(Ta,{shadow:"sm",radius:"md",p:"md",children:Ke(Mt,{gap:"sm",children:[x!=="modal"&&E(wi,{order:4,style:{margin:0},children:xe.get(ce)}),Ke(Rt,{gap:"sm",align:"flex-end",wrap:"nowrap",children:[E(vi,{style:{flex:1},value:S,onChange:v=>ke(v.currentTarget.value),placeholder:xe.get("Search the documentation\u2026"),disabled:ee,onKeyDown:v=>{v.key==="Enter"&&ye&&(v.preventDefault(),_())}}),E(va,{variant:"filled",size:"sm",leftSection:Je,onClick:()=>{_()},disabled:!ye,className:c?"doc-search-button":"doc-search-button-no-title",children:c?xe.get("Search"):null}),ee?E(va,{variant:"outline",size:"sm",onClick:O,children:xe.get("Stop")}):null]}),B?E(yi,{color:"red",title:xe.get("Error"),children:B}):null,ee&&it&&E(vt,{enabled:x==="modal",working:!0,variation:x,children:Ke(Rt,{justify:"center",align:"center",gap:"sm",m:"sm",pr:"lg",children:[E(Ai,{size:"sm"}),E(kt,{size:"sm",c:"dimmed",children:it})]})}),b?.result?Ke(Ra,{children:[E(wa,{}),Ke(Mt,{gap:"xs","data-doc-search-result":!0,children:[E(kt,{size:"sm",c:"dimmed","data-doc-search-result-title":!0,children:xe.get("AI Summary")}),E(zi,{remarkPlugins:[xi],rehypePlugins:[Ci],"data-doc-search-result-content":!0,children:je||Le})]})]}):null,M&&(b?.citations?.docs?.length||b?.citations?.chunks?.length)?Ke(Ra,{children:[E(wa,{}),Ke(Mt,{gap:"sm","data-doc-search-sources":!0,children:[E(kt,{size:"sm",c:"dimmed","data-doc-search-sources-title":!0,children:xe.get("Sources")}),W.map(({doc:v})=>{let R=v.sourceUrl?.trim()||void 0,be=v.docId?we.get(v.docId):void 0,de=v.title?.trim()||v.docId,Pe=Ke(kt,{fw:600,style:{display:"inline"},children:[be?`${be}. `:"",de]});return E(Ta,{withBorder:!0,radius:"md",p:"sm",children:E(Mt,{gap:"xs",children:E(Rt,{justify:"space-between",align:"flex-start",children:Ke(Mt,{gap:2,style:{flex:1},"data-doc-search-source":!0,children:[R?E(Aa,{href:R,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:T=>{o&&(T.preventDefault(),o?.(v))},"data-doc-search-source-title":!0,children:Pe}):Pe,E(Aa,{href:R,target:"_blank",rel:"noreferrer",style:{textDecoration:"none"},onClick:T=>{o&&(T.preventDefault(),o?.(v))},"data-doc-search-source-url":!0,children:v.sourceUrl}),v.author?E(kt,{size:"xs",c:"dimmed","data-doc-search-source-author":!0,children:v.author}):null,v.description?E(kt,{size:"sm",c:"dimmed",fs:"italic","data-doc-search-source-description":!0,children:v.description}):null]})})})},v.docId)})]})]}):null,!ee&&!B&&!b?.result?E(kt,{size:"sm",c:"dimmed","data-doc-search-no-results":!0,children:xe.get("Enter a search query to start.")}):null,E(Ht,{variation:x})]})})})})]})]})},Di=dt(Mi);export{ki as AiChatbot,Fr as AiFeature,fn as DEFAULT_CHATBOT_LABELS,Di as DocSearch,$n as isBackendConfigured,on as markdownToHtml,ut as readDefaultOutputLanguage,Ct as stripCodeFence,lt as translations,At as useAiRun,dt as withAiKitShell};
|
package/package.json
CHANGED