@coffer-org/web 7.4.0 → 7.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ChatWidget-BpM6H_NG.js → ChatWidget-CZFJNVBt.js} +2 -2
- package/dist/assets/{DiagnosticsPage-Dzhks26m.js → DiagnosticsPage-BRGLbMCb.js} +1 -1
- package/dist/assets/{MarkdownEditor-CANj53YF.js → MarkdownEditor-DsKPqeIt.js} +1 -1
- package/dist/assets/{NewRecordView-Y6PoWPB9.js → NewRecordView-B1jdKkrr.js} +1 -1
- package/dist/assets/{PluginSettingsPage-BIUa4IUX.js → PluginSettingsPage-Dasrpx47.js} +1 -1
- package/dist/assets/{SettingsForm-D7Go7QNO.js → SettingsForm-C-xB5cdD.js} +1 -1
- package/dist/assets/SettingsPage-DjRQ1bY5.js +3 -0
- package/dist/assets/{ThemeSwitcher-DuYQMxYo.js → ThemeSwitcher-BJRcZMR7.js} +1 -1
- package/dist/assets/{data-size-BMG0D59K.js → data-size-CO-LGHbN.js} +1 -1
- package/dist/assets/{extend-yQ8zoqGc.js → extend-CHOe1AVl.js} +1 -1
- package/dist/assets/{fields-CV3RQg0Y.js → fields-Ce51pRua.js} +1 -1
- package/dist/assets/{ilamy-view-Dddf8Q2O.js → ilamy-view-D7DQZ577.js} +2 -2
- package/dist/assets/index-CpRTFlxk.js +22 -0
- package/dist/assets/index-Le8YFirR.css +2 -0
- package/dist/assets/{list-cache-DOhsI_p2.js → list-cache-wPeWyKg1.js} +1 -1
- package/dist/assets/{registration-BBxYynR4.js → registration-43gjHJ3X.js} +1 -1
- package/dist/assets/settings-BEzSaRjz.js +1 -0
- package/dist/assets/{shelf-Cj_pNvd-.js → shelf-DjiUBfgQ.js} +1 -1
- package/dist/assets/{src-Q4BhkNtH.js → src-B-FFwJ-G.js} +1 -1
- package/dist/assets/{src-C46sbhiF.js → src-B1LWYTOR.js} +1 -1
- package/dist/assets/{src-B2aXBzDf.js → src-B7dY0wwO.js} +2 -2
- package/dist/assets/{src-Bhz_DXRd.js → src-BDP8FIN_.js} +1 -1
- package/dist/assets/{src-DnN2GqEI.js → src-BPuTgDYD.js} +1 -1
- package/dist/assets/{src-Bl8rYgUt2.js → src-BRP-DLVM2.js} +1 -1
- package/dist/assets/src-BU56fYCH2.js +1 -0
- package/dist/assets/{src-qJ0szNVM.js → src-BmgYgIDb.js} +1 -1
- package/dist/assets/{src-BrHtOaqX.js → src-C06O0ceD.js} +1 -1
- package/dist/assets/src-CCeQIMl_.js +1 -0
- package/dist/assets/{src-CQOQ3BNT.js → src-CgXkpslu.js} +1 -1
- package/dist/assets/src-CheiTWox.js +7 -0
- package/dist/assets/src-CjPxrk6V.js +1 -0
- package/dist/assets/{src-BHz-TcxU.js → src-Co7xh07B.js} +1 -1
- package/dist/assets/{src-tKMBP4Dv.js → src-CtQWxdaS.js} +1 -1
- package/dist/assets/src-CwyJPFKQ.js +1 -0
- package/dist/assets/src-DDtMlZ03.js +1 -0
- package/dist/assets/{src-rMuD7zD4.js → src-DNx0vmvI.js} +1 -1
- package/dist/assets/{src-4bmZI2h_.js → src-DjrjxzQu.js} +1 -1
- package/dist/assets/{src-CE1TPDES.js → src-Dsh4Yd_x.js} +1 -1
- package/dist/assets/{src-xh_qAK43.js → src-Du26RLvk.js} +1 -1
- package/dist/assets/src-G94LYhEo.js +1 -0
- package/dist/assets/{src-BmyfVP9z.js → src-aPsTM6Fr.js} +1 -1
- package/dist/assets/{src-0TBpEeKK.js → src-iJXhTwKd.js} +1 -1
- package/dist/assets/{src-Dr_dOgc9.js → src-rXsbV4Ce.js} +1 -1
- package/dist/assets/{ui-D0o4fruq.js → ui-BLiPhfyz.js} +1 -1
- package/dist/assets/{ui-CZNm-1na.js → ui-DL6R5B56.js} +2 -2
- package/dist/assets/{ui-BpQAH_5F.js → ui-jz6tZ6GD.js} +1 -1
- package/dist/assets/ui-mefYc6et.js +2 -0
- package/dist/index.html +9 -9
- package/dist-vendor/web-ui.js +8626 -8597
- package/package.json +1 -1
- package/dist/assets/SettingsPage-BmyDzHcF.js +0 -3
- package/dist/assets/index-Brc5FUYA.css +0 -2
- package/dist/assets/index-VReUcCHo.js +0 -22
- package/dist/assets/settings-Bo5IOwVg.js +0 -1
- package/dist/assets/src-BZK1QVol.js +0 -1
- package/dist/assets/src-CD1zBxk2.js +0 -1
- package/dist/assets/src-D14fQdLH.js +0 -1
- package/dist/assets/src-DgQcfYnz.js +0 -1
- package/dist/assets/src-Ds6m7Evp2.js +0 -1
- package/dist/assets/src-Mln-mCD3.js +0 -1
- package/dist/assets/src-r8PGv9_a.js +0 -7
- package/dist/assets/ui-CPQ5ERi6.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{l as r,t as i}from"./react-vendor-CzSUaSLk.js";import{Ar as a,Ct as o,
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{l as r,t as i}from"./react-vendor-CzSUaSLk.js";import{Ar as a,Ct as o,Ir as s,Or as c,Pr as l,Rr as u,Tr as d,Vt as f,ai as p,ar as m,ii as h,jr as g,pi as _,rr as v,wr as y}from"./src-CheiTWox.js";import{n as b,r as x}from"./input-BFMNMo6y.js";import{n as S,r as C,t as w}from"./file-text-BdYRF4MO.js";import{f as T,l as E,p as D}from"./phone-input-8QtHMHO_.js";import{c as O}from"./popover-UkAmHo3Y.js";var k=x(`file-archive`,[[`path`,{d:`M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5`,key:`4pqfef`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 12v-1`,key:`1ej8lb`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`path`,{d:`M8 7V6`,key:`1nbb54`}],[`circle`,{cx:`8`,cy:`20`,r:`2`,key:`ckkr5m`}]]),A=x(`file-headphone`,[[`path`,{d:`M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343`,key:`1vfytu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0`,key:`1etmh7`}]]),j=x(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),M=x(`file-play`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z`,key:`1tzo1f`}]]),N=x(`file-spreadsheet`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 13h2`,key:`yr2amv`}],[`path`,{d:`M14 13h2`,key:`un5t4a`}],[`path`,{d:`M8 17h2`,key:`2yhykz`}],[`path`,{d:`M14 17h2`,key:`10kma7`}]]),ee=x(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),P=x(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),te=x(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),F=x(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),I=x(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),L=e(t(),1);async function*ne(e){let t=e.getReader(),n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let a;for(;(a=r.indexOf(`
|
|
2
2
|
|
|
3
3
|
`))!==-1;){let e=r.slice(0,a);r=r.slice(a+2);let t=`message`,n=[];for(let r of e.split(`
|
|
4
4
|
`))!r||r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trim():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));n.length&&(yield{event:t,data:n.join(`
|
|
5
|
-
`)})}}}var R=`/api/plugins/webchat/user`;async function z(e,t){let n=await fetch(`${R}/${e}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(e);return await n.json()}async function re(){return(await z(`threads`,{})).threads}async function B(e){return z(`history`,{convId:e})}async function V(e){let t=await z(`agents`,{convId:e});return{agents:t.agents??[],defaultAgentId:t.defaultAgentId??null,selection:t.selection??{agentId:null,presetId:null},starters:t.starters??[]}}async function ie(e,t){return(await z(`selectAgent`,{convId:e,...t})).selection}async function ae(e,t){return z(`setVisibility`,{convId:e,private:t})}async function oe(e){return z(`send`,{convId:e.convId,text:e.text,replyTo:e.replyTo,context:e.context,...e.attachments?.length?{attachments:e.attachments}:{}})}async function se(e){if(!(await fetch(`${R}/stop`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e})})).ok)throw Error(`stop`)}async function ce(e,t,n){let r=await fetch(`${R}/channel/stream`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e}),signal:n});if(!r.ok||!r.body)throw Error(`http ${r.status}`);for await(let e of ne(r.body))try{let n=JSON.parse(e.data);e.event===`user`?t.onUser({msgId:String(n.msgId??``),text:String(n.text??``),ts:typeof n.ts==`number`?n.ts:0,...Array.isArray(n.attachments)?{attachments:n.attachments}:{}}):e.event===`message`?t.onMessage({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`delta`?t.onDelta({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`reasoning`?t.onReasoning({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`done`?t.onDone({msgId:n.msgId??null,parentMsgId:String(n.parentMsgId??``),suggestions:Array.isArray(n.suggestions)?n.suggestions:null}):e.event===`refresh`?t.onRefresh({...typeof n.library==`string`?{library:n.library}:{},...typeof n.shelf==`string`?{shelf:n.shelf}:{},...typeof n.id==`string`?{id:n.id}:{},...n.gone===!0?{gone:!0}:{}}):e.event===`error`&&t.onError({message:n.message??null,parentMsgId:typeof n.parentMsgId==`string`?n.parentMsgId:null})}catch(e){t.onError({message:`malformed frame: ${String(e)}`,parentMsgId:null})}}function le(){return crypto.randomUUID()}function ue(e){switch(e.kind){case`user`:case`message`:case`delta`:case`reasoning`:return e.data.msgId;case`done`:return e.data.msgId;case`error`:return null}}var de=1e3,fe=3e4;function pe(){let[e,t]=(0,L.useState)([]),[n,r]=(0,L.useState)(null),[i,a]=(0,L.useState)([]),[o,s]=(0,L.useState)(null),[c,l]=(0,L.useState)(null),[u,d]=(0,L.useState)(null),[f,p]=(0,L.useState)([]),[m,_]=(0,L.useState)(null),[v,y]=(0,L.useState)({agentId:null,presetId:null}),[b,x]=(0,L.useState)([]),[S,C]=(0,L.useState)(null),w=(0,L.useRef)(null),T=(0,L.useRef)(!1),E=(0,L.useRef)(null),D=(0,L.useRef)(``),O=(0,L.useRef)(null),k=(0,L.useRef)(0),A=(0,L.useRef)(!0);(0,L.useEffect)(()=>(A.current=!0,()=>{A.current=!1,k.current++}),[]);let j=(0,L.useCallback)(()=>{re().then(e=>{A.current&&t(e)}).catch(()=>{})},[]);(0,L.useEffect)(()=>{if(!n)return;let e=!1;return V(n).then(t=>{e||(p(t.agents),_(t.defaultAgentId),y(t.selection),x(t.starters))}).catch(()=>{}),()=>{e=!0}},[n]);let M=(0,L.useCallback)((e,t)=>{let n=ue(e),r=t!==null&&n!==null&&t.has(n);switch(e.kind){case`user`:{if(r)break;let{msgId:t,text:n,ts:i,attachments:o}=e.data;a(e=>e.some(e=>e.msgId===t)?e:[...e,{msgId:t,role:`user`,text:n,ts:i,...o?.length?{attachments:o}:{}}]);break}case`message`:case`delta`:if(r)break;D.current=e.data.text,s(e.data.text);break;case`reasoning`:if(r)break;O.current=e.data.text,l(e.data.text);break;case`done`:{let{msgId:t,parentMsgId:n,suggestions:i}=e.data;if(w.current=t??n,C(i??null),!r&&t&&D.current){let e=D.current,n=O.current;a(r=>r.some(e=>e.msgId===t)?r:[...r,{msgId:t,role:`assistant`,text:e,ts:Math.floor(Date.now()/1e3),...n?{reasoning:n}:{}}])}D.current=``,O.current=null,s(null),l(null),E.current!==null&&E.current===n&&(T.current=!1,E.current=null),j();break}case`error`:d(e.data.message??`error`),D.current=``,O.current=null,s(null),l(null),E.current!==null&&E.current===e.data.parentMsgId&&(T.current=!1,E.current=null);break}},[j]);(0,L.useEffect)(()=>{if(!n)return;let e=n,t=!1,r=null,i=0,o=new AbortController;async function s(){if(t)return;let n=!0,c=!1,l=[],u=e=>{t||(c=!0,n?l.push(e):M(e,null))},f=ce(e,{onUser:e=>u({kind:`user`,data:e}),onMessage:e=>u({kind:`message`,data:e}),onDelta:e=>u({kind:`delta`,data:e}),onReasoning:e=>u({kind:`reasoning`,data:e}),onDone:e=>u({kind:`done`,data:e}),onRefresh:({gone:e,...n})=>{t||(e?h(n):g(n))},onError:e=>u({kind:`error`,data:e})},o.signal).then(()=>!0,()=>!1);try{let r=await B(e);if(t)return;w.current=r.headMsgId;let i=new Set(r.messages.map(e=>e.msgId));a(e=>{let t=E.current,n=e.filter(e=>!i.has(e.msgId)&&(e.msgId.startsWith(`local-`)||e.msgId===t));return n.length?[...r.messages,...n]:r.messages}),C(r.messages.at(-1)?.suggestions??null),n=!1;for(let e of l)M(e,i)}catch(e){if(t)return;d(e.message),n=!1;for(let e of l)M(e,null)}if(await f,t)return;c&&(i=0);let p=Math.min(de*2**i,fe);i++,r=setTimeout(()=>void s(),p)}return s(),()=>{t=!0,r&&clearTimeout(r),o.abort()}},[n,M]);let N=(0,L.useCallback)(e=>{let t=v;y(e),n&&ie(n,e).then(y).catch(e=>{y(t),d(e instanceof Error?e.message:String(e))})},[n,v]),ee=(0,L.useCallback)((n,r)=>{let i=e.find(e=>e.convId===n)?.private??!1;t(e=>e.map(e=>e.convId===n?{...e,private:r}:e)),ae(n,r).then(e=>{t(t=>t.map(t=>t.convId===n?{...t,private:e.visibility===`private`}:t))}).catch(()=>{t(e=>e.map(e=>e.convId===n?{...e,private:i}:e))})},[e]),P=(0,L.useMemo)(()=>{let e=f.find(e=>e.id===v.agentId)?.media;return!e||e.image.accepts.length>0||e.document.accepts.length>0},[f,v]),te=(0,L.useCallback)(()=>{k.current++,T.current=!1,E.current=null,w.current=null,r(le()),a([]),s(null),l(null),D.current=``,O.current=null,d(null),C(null)},[]),F=(0,L.useCallback)(async e=>{k.current++,T.current=!1,E.current=null,r(e),w.current=null,a([]),s(null),l(null),D.current=``,O.current=null,d(null),C(null)},[]),I=(0,L.useCallback)(()=>{n&&se(n).catch(()=>{})},[n]);return{threads:e,convId:n,messages:i,pending:o,pendingReasoning:c,error:u,agents:f,defaultAgentId:m,selection:v,starters:b,suggestions:S,attachmentsAllowed:P,chooseAgent:N,togglePrivate:ee,send:(0,L.useCallback)((e,t,i=[])=>{if(!e.trim()||T.current)return!1;T.current=!0;let o=k.current,c=n??le();n===null&&r(c),d(null),C(null);let u=`local-${le()}`;return a(t=>[...t,{msgId:u,role:`user`,text:e,ts:Math.floor(Date.now()/1e3),...i.length?{attachments:i}:{}}]),s(``),(async()=>{try{let{msgId:n}=await oe({convId:c,text:e,replyTo:w.current,context:t,attachments:i});if(k.current!==o)return;if(n===null){T.current=!1,s(null),l(null);return}a(e=>e.some(e=>e.msgId===n)?e.filter(e=>e.msgId!==u):e.map(e=>e.msgId===u?{...e,msgId:n}:e)),E.current=n}catch(e){k.current===o&&(T.current=!1,d(e.message),s(null),l(null))}})(),!0},[n]),open:F,newConversation:te,loadThreads:j,stop:I}}var me=`—`;function he(){if(typeof document>`u`)return;let e=document.querySelector(`[role="heading"][aria-level="1"]`)?.textContent?.trim();return e&&e!==me?e:void 0}function ge(e){let t=e.split(`/`).filter(Boolean),n=new Set([`settings`,`browse`,`plugins`,`login`,`setup`]);if(t.length<2||n.has(t[0]))return{path:e};let[r,i,a]=t,o=!!(a&&a!==`new`),s=o?he():void 0;return{path:e,library:r,type:i,...o?{id:a}:{},...s?{title:s}:{}}}function _e(){let{pathname:e}=r();return(0,L.useCallback)(()=>ge(e),[e])}var H=i(),ve=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-nav.tsx`,ye=(0,L.createContext)(()=>{});function be({onNavigate:e,children:t}){return(0,H.jsxDEV)(ye.Provider,{value:e,children:t},void 0,!1,{fileName:ve,lineNumber:9,columnNumber:10},this)}function xe(){return(0,L.useContext)(ye)}var Se=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-markdown.tsx`;function Ce({text:e,className:t}){let n=xe();return(0,H.jsxDEV)(f,{value:e,className:t??`md-static md-chat`,onNavigate:n},void 0,!1,{fileName:Se,lineNumber:21,columnNumber:10},this)}var U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatAttachments.tsx`,W=2,we=[[/\.(png|jpe?g|gif|webp|avif|svg|bmp|heic|heif)$/i,j],[/\.(mp3|wav|ogg|oga|flac|m4a|aac|opus)$/i,A],[/\.(mp4|mov|mkv|webm|avi|m4v)$/i,M],[/\.(zip|rar|7z|tar|gz|tgz|bz2|xz)$/i,k],[/\.(csv|tsv|xlsx?|ods|numbers)$/i,N],[/\.(json|xml|ya?ml|toml|ini|js|jsx|ts|tsx|css|html?|sh|py|sql)$/i,S]];function Te(e){let t=e.mime?.toLowerCase().split(`;`,1)[0]??``;if(t.startsWith(`image/`))return j;if(t.startsWith(`audio/`))return A;if(t.startsWith(`video/`))return M;if(t===`text/csv`||t.includes(`spreadsheet`)||t.includes(`excel`))return N;if(t===`application/json`||t===`application/xml`||t.startsWith(`text/x`))return S;if(t===`application/zip`||t.includes(`compressed`)||t.includes(`tar`))return k;let n=e.label??e.name;for(let[e,t]of we)if(e.test(n))return t;return w}function Ee(e){let t=e.lastIndexOf(`.`);return t<=0||e.length-t>11?{stem:e,ext:``}:{stem:e.slice(0,t),ext:e.slice(t)}}function De({a:e,onRemove:t}){let{t:r}=n(),i=e.label??e.name,{stem:a,ext:o}=Ee(i),s=C(e.size);return(0,H.jsxDEV)(`li`,{className:`flex min-w-0 items-center gap-2 rounded-[calc(var(--radius-md)+1px)] border border-border bg-background py-1 pr-1.5 pl-2`,children:[(0,H.jsxDEV)(Te(e),{size:14,"aria-hidden":!0,className:`shrink-0 text-muted-foreground`},void 0,!1,{fileName:U,lineNumber:100,columnNumber:7},this),(0,H.jsxDEV)(`span`,{className:`flex min-w-0 flex-1 text-xs`,title:i,children:[(0,H.jsxDEV)(`span`,{className:`truncate`,children:a},void 0,!1,{fileName:U,lineNumber:102,columnNumber:9},this),o&&(0,H.jsxDEV)(`span`,{className:`shrink-0 text-muted-foreground`,children:o},void 0,!1,{fileName:U,lineNumber:103,columnNumber:17},this)]},void 0,!0,{fileName:U,lineNumber:101,columnNumber:7},this),s&&(0,H.jsxDEV)(`span`,{className:`shrink-0 text-[0.6875rem] tabular-nums text-muted-foreground`,children:s},void 0,!1,{fileName:U,lineNumber:105,columnNumber:16},this),t&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-label":r(`webchat.removeAttachment`,{name:i}),title:r(`webchat.removeAttachment`,{name:i}),className:`shrink-0 rounded p-0.5 text-muted-foreground hover:text-destructive focus-visible:outline-2 focus-visible:outline-ring`,onClick:t,children:(0,H.jsxDEV)(T,{size:13},void 0,!1,{fileName:U,lineNumber:114,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:99,columnNumber:5},this)}function Oe({items:e,onRemove:t,className:r=``}){let{t:i}=n(),[a,o]=(0,L.useState)(!1),s=(0,L.useId)();if(!e.length)return null;let c=a?0:Math.max(0,e.length-W),l=c?e.slice(0,W):e;return(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1 ${r}`,"data-chat-attachments":!0,children:[(0,H.jsxDEV)(`ul`,{id:s,"aria-label":i(`webchat.attachments`),className:`flex flex-col gap-1`,children:l.map((e,n)=>(0,H.jsxDEV)(De,{a:e,...t?{onRemove:()=>t(n)}:{}},`${e.name}-${n}`,!1,{fileName:U,lineNumber:141,columnNumber:11},this))},void 0,!1,{fileName:U,lineNumber:139,columnNumber:7},this),e.length>W&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-expanded":a,"aria-controls":s,className:`inline-flex items-center gap-1 self-start rounded px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>o(e=>!e),children:[(0,H.jsxDEV)(D,{size:12,"aria-hidden":!0,className:a?`rotate-180 transition-transform`:`transition-transform`},void 0,!1,{fileName:U,lineNumber:152,columnNumber:11},this),a?i(`webchat.fewerFiles`):i(`webchat.moreFiles`,{count:c})]},void 0,!0,{fileName:U,lineNumber:145,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:138,columnNumber:5},this)}var G=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatMessages.tsx`;function ke({messages:e,pending:t,pendingReasoning:r,trailing:i}){let{t:a}=n(),o=(0,L.useRef)(null);return(0,L.useEffect)(()=>{let e=o.current;e&&(e.scrollTop=e.scrollHeight)},[e.length,t]),(0,H.jsxDEV)(`div`,{ref:o,"data-chat-list":!0,className:`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2`,children:[!e.length&&t===null&&r===null?(0,H.jsxDEV)(`div`,{className:`grid flex-1 place-items-center px-6 text-center text-sm text-muted-foreground`,children:(0,H.jsxDEV)(`span`,{className:`flex flex-col items-center gap-2`,children:[(0,H.jsxDEV)(P,{size:28,"aria-hidden":!0,className:`text-faint`},void 0,!1,{fileName:G,lineNumber:43,columnNumber:13},this),a(`webchat.empty`)]},void 0,!0,{fileName:G,lineNumber:42,columnNumber:11},this)},void 0,!1,{fileName:G,lineNumber:41,columnNumber:9},this):(0,H.jsxDEV)(H.Fragment,{children:[e.map(e=>(0,H.jsxDEV)(Ae,{role:e.role,text:e.text,reasoning:e.reasoning,attachments:e.attachments},e.msgId,!1,{fileName:G,lineNumber:50,columnNumber:13},this)),t!==null&&(0,H.jsxDEV)(Ae,{role:`assistant`,text:t||a(`webchat.thinking`),reasoning:r},void 0,!1,{fileName:G,lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:G,lineNumber:48,columnNumber:9},this),i]},void 0,!0,{fileName:G,lineNumber:39,columnNumber:5},this)}var Ae=(0,L.memo)(function({role:e,text:t,reasoning:r,attachments:i}){let{t:a}=n();return e===`user`?(0,H.jsxDEV)(`div`,{className:`max-w-[85%] min-w-0 self-end rounded-2xl rounded-br-sm border border-border bg-accent px-3 py-2 text-[0.8125rem] break-words whitespace-pre-wrap`,children:[i?.length?(0,H.jsxDEV)(Oe,{items:i,className:`-mx-1 ${t?`mb-2`:``}`},void 0,!1,{fileName:G,lineNumber:90,columnNumber:32},this):null,t]},void 0,!0,{fileName:G,lineNumber:89,columnNumber:7},this):(0,H.jsxDEV)(`div`,{className:`max-w-[95%] min-w-0 self-start rounded-2xl rounded-bl-sm bg-muted px-3 py-2 text-sm break-words`,children:[r?(0,H.jsxDEV)(`details`,{className:`group/reason -mx-1 mb-2 rounded-[calc(var(--radius-md)+1px)] border border-border bg-background px-2 py-1`,children:[(0,H.jsxDEV)(`summary`,{className:`flex cursor-pointer list-none items-center gap-1 select-none text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden`,children:[(0,H.jsxDEV)(u,{size:12,"aria-hidden":!0,className:`shrink-0 transition-transform group-open/reason:rotate-90`},void 0,!1,{fileName:G,lineNumber:114,columnNumber:13},this),a(`webchat.reasoning`)]},void 0,!0,{fileName:G,lineNumber:113,columnNumber:11},this),(0,H.jsxDEV)(Ce,{text:r,className:`md-static md-chat md-chat-sub mt-1 text-muted-foreground`},void 0,!1,{fileName:G,lineNumber:117,columnNumber:11},this)]},void 0,!0,{fileName:G,lineNumber:112,columnNumber:9},this):null,(0,H.jsxDEV)(Ce,{text:t,className:`md-static md-chat`},void 0,!1,{fileName:G,lineNumber:120,columnNumber:7},this)]},void 0,!0,{fileName:G,lineNumber:96,columnNumber:5},this)}),K=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/AgentPicker.tsx`;function je({agents:e,defaultAgentId:t,selection:r,onChange:i}){let{t:a}=n(),[o,s]=(0,L.useState)(!1),c=(0,L.useRef)(null),l=(0,L.useRef)(null);(0,L.useEffect)(()=>{if(!o)return;function e(e){c.current&&!c.current.contains(e.target)&&s(!1)}function t(e){e.key===`Escape`&&(s(!1),l.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[o]);let u=e.length>1,d=e.flatMap(e=>e.presets.map(t=>({agentId:e.id,presetId:t.id,label:u?`${e.title} · ${t.title}`:t.title,hint:t.hint,isDefault:t.default===!0})));if(d.length===0)return null;let f=d.find(e=>e.agentId===r.agentId&&e.presetId===r.presetId)??d.find(e=>e.agentId===t&&e.isDefault)??d.find(e=>e.isDefault)??d[0];return(0,H.jsxDEV)(`div`,{className:`relative`,ref:c,children:[(0,H.jsxDEV)(`button`,{ref:l,type:`button`,"aria-haspopup":`menu`,"aria-expanded":o,className:`flex items-center gap-1 rounded-md px-2 py-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>s(e=>!e),children:[(0,H.jsxDEV)(`span`,{className:`max-w-40 truncate`,children:f.hint?`${f.label} · ${f.hint}`:f.label},void 0,!1,{fileName:K,lineNumber:103,columnNumber:9},this),(0,H.jsxDEV)(D,{size:12,className:`shrink-0`},void 0,!1,{fileName:K,lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:95,columnNumber:7},this),o&&(0,H.jsxDEV)(`ul`,{"aria-label":a(`webchat.agentPicker`),className:`absolute bottom-full left-0 z-10 mb-1 max-h-64 w-64 max-w-[calc(100vw-2rem)] overflow-y-auto rounded-md border border-border bg-muted py-1 shadow-lg`,children:d.map(e=>{let t=e===f;return(0,H.jsxDEV)(`li`,{children:(0,H.jsxDEV)(`button`,{type:`button`,...t?{"aria-current":!0}:{},className:`flex w-full items-center gap-2 px-2 py-1.5 text-left text-xs hover:bg-card focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>{s(!1),i({agentId:e.agentId,presetId:e.presetId})},children:[(0,H.jsxDEV)(b,{size:12,className:t?`shrink-0 text-primary`:`shrink-0 opacity-0`},void 0,!1,{fileName:K,lineNumber:132,columnNumber:19},this),(0,H.jsxDEV)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label},void 0,!1,{fileName:K,lineNumber:133,columnNumber:19},this),e.hint?(0,H.jsxDEV)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.hint},void 0,!1,{fileName:K,lineNumber:134,columnNumber:29},this):null]},void 0,!0,{fileName:K,lineNumber:123,columnNumber:17},this)},`${e.agentId}/${e.presetId}`,!1,{fileName:K,lineNumber:122,columnNumber:15},this)})},void 0,!1,{fileName:K,lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:94,columnNumber:5},this)}var q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatComposer.tsx`;function Me({streaming:e,onSend:t,onStop:r,attachments:i,uploading:a,uploadError:o,uploadProgress:c,canRetryUpload:u,onRetryUpload:f,onPickFiles:p,onRemoveAttachment:m,agents:h,defaultAgentId:g,selection:_,onChooseAgent:v,attachmentsAllowed:y}){let{t:b}=n(),[x,S]=(0,L.useState)(``);function C(){!x.trim()||e||t(x.trim(),i)&&S(``)}return(0,H.jsxDEV)(`div`,{className:`flex shrink-0 flex-col gap-2 border-t border-border p-2`,children:[(i.length>0||a||o)&&(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1.5 px-1`,children:[(0,H.jsxDEV)(Oe,{items:i,onRemove:m},void 0,!1,{fileName:q,lineNumber:65,columnNumber:11},this),a&&(0,H.jsxDEV)(`div`,{className:`flex min-w-32 flex-1 items-center gap-2`,"aria-label":b(`webchat.uploading`),children:[(0,H.jsxDEV)(d,{size:14,className:`shrink-0 animate-spin text-muted-foreground`},void 0,!1,{fileName:q,lineNumber:68,columnNumber:15},this),(0,H.jsxDEV)(`div`,{role:`progressbar`,"aria-label":b(`webchat.uploadProgress`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c,className:`h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-border`,children:(0,H.jsxDEV)(`div`,{className:`h-full rounded-full bg-primary transition-[width]`,style:{width:`${c}%`}},void 0,!1,{fileName:q,lineNumber:77,columnNumber:17},this)},void 0,!1,{fileName:q,lineNumber:69,columnNumber:15},this),(0,H.jsxDEV)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:[c,`%`]},void 0,!0,{fileName:q,lineNumber:82,columnNumber:15},this)]},void 0,!0,{fileName:q,lineNumber:67,columnNumber:13},this),o&&(0,H.jsxDEV)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 text-xs text-destructive`,children:[(0,H.jsxDEV)(`span`,{className:`min-w-0 flex-1`,children:b(o)},void 0,!1,{fileName:q,lineNumber:87,columnNumber:15},this),u&&(0,H.jsxDEV)(`button`,{type:`button`,className:`inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 font-medium text-primary hover:bg-muted focus-visible:outline-2 focus-visible:outline-ring`,onClick:f,children:[(0,H.jsxDEV)(s,{size:12},void 0,!1,{fileName:q,lineNumber:94,columnNumber:19},this),` `,b(`webchat.retryUpload`)]},void 0,!0,{fileName:q,lineNumber:89,columnNumber:17},this)]},void 0,!0,{fileName:q,lineNumber:86,columnNumber:13},this)]},void 0,!0,{fileName:q,lineNumber:64,columnNumber:9},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsxDEV)(`textarea`,{className:`max-h-32 w-full resize-none rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors outline-none placeholder:text-faint focus:border-ring focus:ring-2 focus:ring-ring`,rows:1,value:x,placeholder:b(`webchat.placeholder`),onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),C())}},void 0,!1,{fileName:q,lineNumber:104,columnNumber:9},this),(0,H.jsxDEV)(`div`,{className:`flex items-center gap-1`,children:[y&&(0,H.jsxDEV)(`label`,{title:b(`webchat.attach`),className:`flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-within:ring-2 focus-within:ring-ring ${a?`pointer-events-none opacity-60`:``}`,children:[(0,H.jsxDEV)(F,{size:18,"aria-hidden":!0},void 0,!1,{fileName:q,lineNumber:127,columnNumber:15},this),(0,H.jsxDEV)(`input`,{type:`file`,multiple:!0,"aria-label":b(`webchat.attach`),className:`sr-only`,disabled:a,onChange:e=>{e.target.files?.length&&p(e.target.files),e.currentTarget.value=``}},void 0,!1,{fileName:q,lineNumber:128,columnNumber:15},this)]},void 0,!0,{fileName:q,lineNumber:120,columnNumber:13},this),(0,H.jsxDEV)(je,{agents:h,defaultAgentId:g,selection:_,onChange:v},void 0,!1,{fileName:q,lineNumber:141,columnNumber:11},this),(0,H.jsxDEV)(`div`,{className:`flex-1`},void 0,!1,{fileName:q,lineNumber:142,columnNumber:11},this),e?(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":b(`webchat.stop`),title:b(`webchat.stop`),className:`shrink-0`,onClick:r,children:(0,H.jsxDEV)(l,{size:18},void 0,!1,{fileName:q,lineNumber:153,columnNumber:15},this)},void 0,!1,{fileName:q,lineNumber:144,columnNumber:13},this):(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":b(`webchat.send`),title:b(`webchat.send`),disabled:!x.trim(),className:`shrink-0 hover:text-primary`,onClick:C,children:(0,H.jsxDEV)(I,{size:18},void 0,!1,{fileName:q,lineNumber:168,columnNumber:15},this)},void 0,!1,{fileName:q,lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:q,lineNumber:118,columnNumber:9},this)]},void 0,!0,{fileName:q,lineNumber:103,columnNumber:7},this)]},void 0,!0,{fileName:q,lineNumber:59,columnNumber:5},this)}var J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatThreadList.tsx`;function Ne({threads:e,activeId:t,onOpen:r,onNew:i,onTogglePrivate:a,className:o=`w-[220px] shrink-0`}){let{t:s}=n();return(0,H.jsxDEV)(`aside`,{"aria-label":s(`webchat.threads`),className:`${o} flex flex-col border-r border-border`,children:[(0,H.jsxDEV)(`button`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 text-sm font-medium text-primary hover:bg-muted focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring`,onClick:i,children:[(0,H.jsxDEV)(c,{size:16,"aria-hidden":!0},void 0,!1,{fileName:J,lineNumber:32,columnNumber:9},this),` `,s(`webchat.newConversation`)]},void 0,!0,{fileName:J,lineNumber:28,columnNumber:7},this),(0,H.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto`,children:e.map(e=>{let n=e.convId===t;return(0,H.jsxDEV)(`div`,{className:`flex items-center gap-1 border-l-2 pr-2 pl-1 ${n?`border-ring bg-accent`:`border-transparent hover:bg-muted`}`,children:[(0,H.jsxDEV)(`button`,{onClick:()=>r(e.convId),className:`min-w-0 flex-1 rounded-sm py-2 pl-2 text-left text-sm focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring ${n?`font-medium`:``}`,children:[(0,H.jsxDEV)(`span`,{className:`block truncate`,children:e.title||s(`webchat.newConversation`)},void 0,!1,{fileName:J,lineNumber:52,columnNumber:17},this),(e.mine||e.ownerName)&&(0,H.jsxDEV)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.mine?s(`webchat.you`):e.ownerName},void 0,!1,{fileName:J,lineNumber:57,columnNumber:19},this)]},void 0,!0,{fileName:J,lineNumber:48,columnNumber:15},this),e.mine&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-label":e.private?s(`webchat.makePublic`):s(`webchat.makePrivate`),title:e.private?s(`webchat.makePublic`):s(`webchat.makePrivate`),onClick:t=>{t.stopPropagation(),a(e.convId,!e.private)},className:`shrink-0 rounded p-1 text-muted-foreground hover:bg-card hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:(0,H.jsxDEV)(m,{name:e.private?`lucide:shield`:`lucide:globe`,size:14},void 0,!1,{fileName:J,lineNumber:73,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:63,columnNumber:17},this)]},e.convId,!0,{fileName:J,lineNumber:42,columnNumber:13},this)})},void 0,!1,{fileName:J,lineNumber:34,columnNumber:7},this)]},void 0,!0,{fileName:J,lineNumber:27,columnNumber:5},this)}var Pe=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/SuggestionChips.tsx`;function Fe({items:e,onPick:t}){let{t:r}=n();return e?.length?(0,H.jsxDEV)(`div`,{role:`group`,"aria-label":r(`webchat.suggestions`),className:`flex flex-wrap gap-1.5 px-2 pb-1.5`,children:e.map((e,n)=>(0,H.jsxDEV)(`button`,{type:`button`,title:e,className:`max-w-full truncate rounded-full border border-border bg-muted px-3 py-1 text-xs text-foreground hover:border-border2 hover:bg-card focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>t(e),children:e},`${n}-${e}`,!1,{fileName:Pe,lineNumber:24,columnNumber:9},this))},void 0,!1,{fileName:Pe,lineNumber:22,columnNumber:5},this):null}var Y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatWidget.tsx`,Ie=25*1024*1024;function X(e){return Array.from(e.dataTransfer.types).includes(`Files`)}function Le({children:e,onFiles:t,className:r}){let{t:i}=n(),[o,s]=(0,L.useState)(!1),c=(0,L.useRef)(0);function l(e){X(e)&&(e.preventDefault(),c.current+=1,s(!0))}function u(e){X(e)&&(e.preventDefault(),c.current=Math.max(0,c.current-1),c.current===0&&s(!1))}function d(e){X(e)&&(e.preventDefault(),c.current=0,s(!1),t(Array.from(e.dataTransfer.files)))}return(0,H.jsxDEV)(`div`,{className:r,onDragEnter:l,onDragLeave:u,onDragOver:e=>{X(e)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:d,children:[e,o&&(0,H.jsxDEV)(`div`,{"data-chat-drop-overlay":!0,"data-testid":`chat-drop-overlay`,className:`pointer-events-none absolute inset-0 z-50 grid place-items-center bg-card/95 p-6 text-center backdrop-blur-sm`,children:(0,H.jsxDEV)(`div`,{className:`flex h-full w-full flex-col items-center justify-center rounded-2xl border-2 border-dashed border-ring text-primary`,children:[(0,H.jsxDEV)(a,{size:34},void 0,!1,{fileName:Y,lineNumber:83,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`mt-3 text-base font-medium`,children:i(`webchat.dropFiles`)},void 0,!1,{fileName:Y,lineNumber:84,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`mt-1 text-xs text-muted-foreground`,children:i(`webchat.dropFilesHint`)},void 0,!1,{fileName:Y,lineNumber:85,columnNumber:13},this)]},void 0,!0,{fileName:Y,lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:59,columnNumber:5},this)}function Z(e){return e?[`bubble`,`panel`,`modal`]:[`bubble`,`modal`]}function Q(e){return Z(e)[1]}function $(e,t,n){let r=Z(t),i=r.indexOf(e)+n;return r[Math.min(r.length-1,Math.max(0,i))]}function Re(){let{t:e}=n(),t=pe(),r=_e(),[i,a]=(0,L.useState)(`bubble`),[s,l]=(0,L.useState)(!1),[u,d]=(0,L.useState)([]),[f,m]=(0,L.useState)(!1),[h,g]=(0,L.useState)(0),[b,x]=(0,L.useState)(null),[S,C]=(0,L.useState)([]),w=o(`sm`,640),D=w&&i===`modal`,k=(0,L.useCallback)(()=>{a(Q(w))},[w]),A=(0,L.useRef)(null),j=(0,L.useRef)(`bubble`);(0,L.useEffect)(()=>{if(i!==`modal`)return;let e=e=>{e.key===`Escape`&&a($(`modal`,w,-1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i,w]),(0,L.useEffect)(()=>{Z(w).includes(i)||a(Q(w))},[i,w]),(0,L.useEffect)(()=>{i===`panel`&&j.current===`modal`&&A.current?.focus(),j.current=i},[i]),(0,L.useEffect)(()=>{(i===`bubble`||D)&&l(!1)},[i,D]),(0,L.useEffect)(()=>{if(i!==`modal`)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[i]);let M=i!==`bubble`;(0,L.useEffect)(()=>{M&&t.loadThreads()},[M,t.loadThreads]);let{convId:N,newConversation:P}=t;(0,L.useEffect)(()=>{M&&N===null&&P()},[M,N,P]);function F(){t.newConversation(),d([]),x(null),C([]),l(!1)}let I=(0,L.useCallback)(async e=>{if(!e.length)return;x(null),C([]),m(!0),g(0);let t=[],n=[],r=null;for(let i of e){if(i.size>Ie){r??=`webchat.uploadTooLarge`;continue}try{g(0);let e=await v(i,g);e?t.push({...e,label:i.name}):(n.push(i),r??=`webchat.uploadFailed`)}catch{n.push(i),r??=`webchat.uploadFailed`}}t.length&&d(e=>[...e,...t]),m(!1),g(0),C(n),r&&x(r)},[]),ne=(0,L.useCallback)(()=>{S.length&&I(S)},[I,S]),R=(0,L.useCallback)((e,n)=>{let i=r(),a=n.length?t.send(e,i,n):t.send(e,i);return a&&(d([]),x(null),C([])),a},[t,r]),z=t.messages.length>0||t.pending!==null,re=t.threads.find(e=>e.convId===t.convId)?.title,B=(0,H.jsxDEV)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-border px-3 py-1.5`,children:[(0,H.jsxDEV)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:re||e(`webchat.title`)},void 0,!1,{fileName:Y,lineNumber:298,columnNumber:7},this),(0,H.jsxDEV)(`div`,{className:`-mr-1 flex shrink-0 items-center gap-0.5`,children:[z&&(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.newConversation`),title:e(`webchat.newConversation`),onClick:F,children:(0,H.jsxDEV)(c,{size:16},void 0,!1,{fileName:Y,lineNumber:313,columnNumber:13},this)},void 0,!1,{fileName:Y,lineNumber:305,columnNumber:11},this),!D&&(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.threads`),title:e(`webchat.threads`),"aria-expanded":s,className:s?`bg-muted text-foreground`:``,onClick:()=>l(e=>!e),children:(0,H.jsxDEV)(O,{size:16},void 0,!1,{fileName:Y,lineNumber:330,columnNumber:13},this)},void 0,!1,{fileName:Y,lineNumber:320,columnNumber:11},this),Z(w).includes(`panel`)&&(0,H.jsxDEV)(E,{ref:A,type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(i===`modal`?`webchat.collapse`:`webchat.expand`),title:e(i===`modal`?`webchat.collapse`:`webchat.expand`),onClick:()=>a($(i,w,i===`modal`?-1:1)),children:i===`modal`?(0,H.jsxDEV)(te,{size:16},void 0,!1,{fileName:Y,lineNumber:345,columnNumber:33},this):(0,H.jsxDEV)(ee,{size:16},void 0,!1,{fileName:Y,lineNumber:345,columnNumber:59},this)},void 0,!1,{fileName:Y,lineNumber:336,columnNumber:11},this),(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.close`),title:e(`webchat.close`),onClick:()=>a(`bubble`),children:(0,H.jsxDEV)(T,{size:16},void 0,!1,{fileName:Y,lineNumber:356,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:348,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:299,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:297,columnNumber:5},this),V=(0,H.jsxDEV)(Ne,{threads:t.threads,activeId:t.convId,onOpen:e=>{t.open(e),d([]),x(null),C([]),l(!1)},onNew:F,onTogglePrivate:t.togglePrivate,className:D?`w-[220px] shrink-0`:`w-full`},void 0,!1,{fileName:Y,lineNumber:365,columnNumber:5},this),ie=(0,H.jsxDEV)(be,{onNavigate:k,children:(0,H.jsxDEV)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[t.error&&(0,H.jsxDEV)(`div`,{className:`px-3 py-2 text-sm text-destructive`,children:e(`webchat.error`,{message:t.error})},void 0,!1,{fileName:Y,lineNumber:387,columnNumber:11},this),(0,H.jsxDEV)(ke,{messages:t.messages,pending:t.pending,pendingReasoning:t.pendingReasoning,trailing:t.messages.length===0?(0,H.jsxDEV)(Fe,{items:t.starters,onPick:e=>R(e,u)},void 0,!1,{fileName:Y,lineNumber:395,columnNumber:15},this):(0,H.jsxDEV)(Fe,{items:t.suggestions,onPick:e=>R(e,u)},void 0,!1,{fileName:Y,lineNumber:397,columnNumber:15},this)},void 0,!1,{fileName:Y,lineNumber:389,columnNumber:9},this),(0,H.jsxDEV)(Me,{streaming:t.pending!==null,attachments:u,uploading:f,uploadProgress:h,uploadError:b,canRetryUpload:S.length>0&&!f,onRetryUpload:ne,onPickFiles:e=>void I(Array.from(e)),onRemoveAttachment:e=>d(t=>t.filter((t,n)=>n!==e)),agents:t.agents,defaultAgentId:t.defaultAgentId,selection:t.selection,onChooseAgent:t.chooseAgent,attachmentsAllowed:t.attachmentsAllowed,onSend:R,onStop:t.stop},void 0,!1,{fileName:Y,lineNumber:401,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:385,columnNumber:7},this)},void 0,!1,{fileName:Y,lineNumber:382,columnNumber:5},this);return i===`bubble`?(0,H.jsxDEV)(`button`,{"aria-label":e(`webchat.open`),onClick:()=>a(Q(w)),className:`fixed bottom-4 right-4 z-40 grid h-14 w-14 place-items-center rounded-full bg-primary text-on-accent ring-1 ring-border2 shadow-lg`,children:(0,H.jsxDEV)(y,{size:24},void 0,!1,{fileName:Y,lineNumber:447,columnNumber:9},this)},void 0,!1,{fileName:Y,lineNumber:425,columnNumber:7},this):i===`panel`?(0,H.jsxDEV)(Le,{onFiles:I,className:`fixed bottom-4 right-4 z-40 flex h-[560px] max-h-[80dvh] w-[380px] max-w-[calc(100vw-2rem)] flex-col overflow-hidden rounded-2xl border border-border bg-card shadow-xl`,children:[B,s?V:ie]},void 0,!0,{fileName:Y,lineNumber:454,columnNumber:7},this):(0,H.jsxDEV)(p,{open:!0,modal:!1,onOpenChange:e=>!e&&a($(`modal`,w,-1)),children:[(0,H.jsxDEV)(`div`,{"data-chat-backdrop":!0,"aria-hidden":`true`,className:`fixed inset-0 z-[45] bg-black/50 backdrop-blur-sm`},void 0,!1,{fileName:Y,lineNumber:476,columnNumber:7},this),(0,H.jsxDEV)(_,{hideClose:!0,className:`h-[85dvh] w-full p-0 md:h-[85dvh] md:w-[80vw] md:max-w-[1040px] md:overflow-y-hidden`,children:(0,H.jsxDEV)(Le,{onFiles:I,className:`h-full`,children:(0,H.jsxDEV)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[B,(0,H.jsxDEV)(`div`,{className:`flex min-h-0 flex-1`,children:[(D||s)&&V,(D||!s)&&ie]},void 0,!0,{fileName:Y,lineNumber:489,columnNumber:13},this)]},void 0,!0,{fileName:Y,lineNumber:487,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:486,columnNumber:9},this)},void 0,!1,{fileName:Y,lineNumber:482,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:473,columnNumber:5},this)}export{Re as ChatWidget,Re as default,Z as chatModes,Q as restingMode,$ as stepMode};
|
|
5
|
+
`)})}}}var R=`/api/plugins/webchat/user`;async function z(e,t){let n=await fetch(`${R}/${e}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)});if(!n.ok)throw Error(e);return await n.json()}async function re(){return(await z(`threads`,{})).threads}async function B(e){return z(`history`,{convId:e})}async function V(e){let t=await z(`agents`,{convId:e});return{agents:t.agents??[],defaultAgentId:t.defaultAgentId??null,selection:t.selection??{agentId:null,presetId:null},starters:t.starters??[]}}async function ie(e,t){return(await z(`selectAgent`,{convId:e,...t})).selection}async function ae(e,t){return z(`setVisibility`,{convId:e,private:t})}async function oe(e){return z(`send`,{convId:e.convId,text:e.text,replyTo:e.replyTo,context:e.context,...e.attachments?.length?{attachments:e.attachments}:{}})}async function se(e){if(!(await fetch(`${R}/stop`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e})})).ok)throw Error(`stop`)}async function ce(e,t,n){let r=await fetch(`${R}/channel/stream`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({convId:e}),signal:n});if(!r.ok||!r.body)throw Error(`http ${r.status}`);for await(let e of ne(r.body))try{let n=JSON.parse(e.data);e.event===`user`?t.onUser({msgId:String(n.msgId??``),text:String(n.text??``),ts:typeof n.ts==`number`?n.ts:0,...Array.isArray(n.attachments)?{attachments:n.attachments}:{}}):e.event===`message`?t.onMessage({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`delta`?t.onDelta({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`reasoning`?t.onReasoning({msgId:String(n.msgId??``),text:String(n.text??``)}):e.event===`done`?t.onDone({msgId:n.msgId??null,parentMsgId:String(n.parentMsgId??``),suggestions:Array.isArray(n.suggestions)?n.suggestions:null}):e.event===`refresh`?t.onRefresh({...typeof n.library==`string`?{library:n.library}:{},...typeof n.shelf==`string`?{shelf:n.shelf}:{},...typeof n.id==`string`?{id:n.id}:{},...n.gone===!0?{gone:!0}:{}}):e.event===`error`&&t.onError({message:n.message??null,parentMsgId:typeof n.parentMsgId==`string`?n.parentMsgId:null})}catch(e){t.onError({message:`malformed frame: ${String(e)}`,parentMsgId:null})}}function le(){return crypto.randomUUID()}function ue(e){switch(e.kind){case`user`:case`message`:case`delta`:case`reasoning`:return e.data.msgId;case`done`:return e.data.msgId;case`error`:return null}}var de=1e3,fe=3e4;function pe(){let[e,t]=(0,L.useState)([]),[n,r]=(0,L.useState)(null),[i,a]=(0,L.useState)([]),[o,s]=(0,L.useState)(null),[c,l]=(0,L.useState)(null),[u,d]=(0,L.useState)(null),[f,m]=(0,L.useState)([]),[g,_]=(0,L.useState)(null),[v,y]=(0,L.useState)({agentId:null,presetId:null}),[b,x]=(0,L.useState)([]),[S,C]=(0,L.useState)(null),w=(0,L.useRef)(null),T=(0,L.useRef)(!1),E=(0,L.useRef)(null),D=(0,L.useRef)(``),O=(0,L.useRef)(null),k=(0,L.useRef)(0),A=(0,L.useRef)(!0);(0,L.useEffect)(()=>(A.current=!0,()=>{A.current=!1,k.current++}),[]);let j=(0,L.useCallback)(()=>{re().then(e=>{A.current&&t(e)}).catch(()=>{})},[]);(0,L.useEffect)(()=>{if(!n)return;let e=!1;return V(n).then(t=>{e||(m(t.agents),_(t.defaultAgentId),y(t.selection),x(t.starters))}).catch(()=>{}),()=>{e=!0}},[n]);let M=(0,L.useCallback)((e,t)=>{let n=ue(e),r=t!==null&&n!==null&&t.has(n);switch(e.kind){case`user`:{if(r)break;let{msgId:t,text:n,ts:i,attachments:o}=e.data;a(e=>e.some(e=>e.msgId===t)?e:[...e,{msgId:t,role:`user`,text:n,ts:i,...o?.length?{attachments:o}:{}}]);break}case`message`:case`delta`:if(r)break;D.current=e.data.text,s(e.data.text);break;case`reasoning`:if(r)break;O.current=e.data.text,l(e.data.text);break;case`done`:{let{msgId:t,parentMsgId:n,suggestions:i}=e.data;if(w.current=t??n,C(i??null),!r&&t&&D.current){let e=D.current,n=O.current;a(r=>r.some(e=>e.msgId===t)?r:[...r,{msgId:t,role:`assistant`,text:e,ts:Math.floor(Date.now()/1e3),...n?{reasoning:n}:{}}])}D.current=``,O.current=null,s(null),l(null),E.current!==null&&E.current===n&&(T.current=!1,E.current=null),j();break}case`error`:d(e.data.message??`error`),D.current=``,O.current=null,s(null),l(null),E.current!==null&&E.current===e.data.parentMsgId&&(T.current=!1,E.current=null);break}},[j]);(0,L.useEffect)(()=>{if(!n)return;let e=n,t=!1,r=null,i=0,o=new AbortController;async function s(){if(t)return;let n=!0,c=!1,l=[],u=e=>{t||(c=!0,n?l.push(e):M(e,null))},f=ce(e,{onUser:e=>u({kind:`user`,data:e}),onMessage:e=>u({kind:`message`,data:e}),onDelta:e=>u({kind:`delta`,data:e}),onReasoning:e=>u({kind:`reasoning`,data:e}),onDone:e=>u({kind:`done`,data:e}),onRefresh:({gone:e,...n})=>{t||(e?h(n):p(n))},onError:e=>u({kind:`error`,data:e})},o.signal).then(()=>!0,()=>!1);try{let r=await B(e);if(t)return;w.current=r.headMsgId;let i=new Set(r.messages.map(e=>e.msgId));a(e=>{let t=E.current,n=e.filter(e=>!i.has(e.msgId)&&(e.msgId.startsWith(`local-`)||e.msgId===t));return n.length?[...r.messages,...n]:r.messages}),C(r.messages.at(-1)?.suggestions??null),n=!1;for(let e of l)M(e,i)}catch(e){if(t)return;d(e.message),n=!1;for(let e of l)M(e,null)}if(await f,t)return;c&&(i=0);let m=Math.min(de*2**i,fe);i++,r=setTimeout(()=>void s(),m)}return s(),()=>{t=!0,r&&clearTimeout(r),o.abort()}},[n,M]);let N=(0,L.useCallback)(e=>{let t=v;y(e),n&&ie(n,e).then(y).catch(e=>{y(t),d(e instanceof Error?e.message:String(e))})},[n,v]),ee=(0,L.useCallback)((n,r)=>{let i=e.find(e=>e.convId===n)?.private??!1;t(e=>e.map(e=>e.convId===n?{...e,private:r}:e)),ae(n,r).then(e=>{t(t=>t.map(t=>t.convId===n?{...t,private:e.visibility===`private`}:t))}).catch(()=>{t(e=>e.map(e=>e.convId===n?{...e,private:i}:e))})},[e]),P=(0,L.useMemo)(()=>{let e=f.find(e=>e.id===v.agentId)?.media;return!e||e.image.accepts.length>0||e.document.accepts.length>0},[f,v]),te=(0,L.useCallback)(()=>{k.current++,T.current=!1,E.current=null,w.current=null,r(le()),a([]),s(null),l(null),D.current=``,O.current=null,d(null),C(null)},[]),F=(0,L.useCallback)(async e=>{k.current++,T.current=!1,E.current=null,r(e),w.current=null,a([]),s(null),l(null),D.current=``,O.current=null,d(null),C(null)},[]),I=(0,L.useCallback)(()=>{n&&se(n).catch(()=>{})},[n]);return{threads:e,convId:n,messages:i,pending:o,pendingReasoning:c,error:u,agents:f,defaultAgentId:g,selection:v,starters:b,suggestions:S,attachmentsAllowed:P,chooseAgent:N,togglePrivate:ee,send:(0,L.useCallback)((e,t,i=[])=>{if(!e.trim()||T.current)return!1;T.current=!0;let o=k.current,c=n??le();n===null&&r(c),d(null),C(null);let u=`local-${le()}`;return a(t=>[...t,{msgId:u,role:`user`,text:e,ts:Math.floor(Date.now()/1e3),...i.length?{attachments:i}:{}}]),s(``),(async()=>{try{let{msgId:n}=await oe({convId:c,text:e,replyTo:w.current,context:t,attachments:i});if(k.current!==o)return;if(n===null){T.current=!1,s(null),l(null);return}a(e=>e.some(e=>e.msgId===n)?e.filter(e=>e.msgId!==u):e.map(e=>e.msgId===u?{...e,msgId:n}:e)),E.current=n}catch(e){k.current===o&&(T.current=!1,d(e.message),s(null),l(null))}})(),!0},[n]),open:F,newConversation:te,loadThreads:j,stop:I}}var me=`—`;function he(){if(typeof document>`u`)return;let e=document.querySelector(`[role="heading"][aria-level="1"]`)?.textContent?.trim();return e&&e!==me?e:void 0}function ge(e){let t=e.split(`/`).filter(Boolean),n=new Set([`settings`,`browse`,`plugins`,`login`,`setup`]);if(t.length<2||n.has(t[0]))return{path:e};let[r,i,a]=t,o=!!(a&&a!==`new`),s=o?he():void 0;return{path:e,library:r,type:i,...o?{id:a}:{},...s?{title:s}:{}}}function _e(){let{pathname:e}=r();return(0,L.useCallback)(()=>ge(e),[e])}var H=i(),ve=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-nav.tsx`,ye=(0,L.createContext)(()=>{});function be({onNavigate:e,children:t}){return(0,H.jsxDEV)(ye.Provider,{value:e,children:t},void 0,!1,{fileName:ve,lineNumber:9,columnNumber:10},this)}function xe(){return(0,L.useContext)(ye)}var Se=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/chat-markdown.tsx`;function Ce({text:e,className:t}){let n=xe();return(0,H.jsxDEV)(f,{value:e,className:t??`md-static md-chat`,onNavigate:n},void 0,!1,{fileName:Se,lineNumber:21,columnNumber:10},this)}var U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatAttachments.tsx`,W=2,we=[[/\.(png|jpe?g|gif|webp|avif|svg|bmp|heic|heif)$/i,j],[/\.(mp3|wav|ogg|oga|flac|m4a|aac|opus)$/i,A],[/\.(mp4|mov|mkv|webm|avi|m4v)$/i,M],[/\.(zip|rar|7z|tar|gz|tgz|bz2|xz)$/i,k],[/\.(csv|tsv|xlsx?|ods|numbers)$/i,N],[/\.(json|xml|ya?ml|toml|ini|js|jsx|ts|tsx|css|html?|sh|py|sql)$/i,S]];function Te(e){let t=e.mime?.toLowerCase().split(`;`,1)[0]??``;if(t.startsWith(`image/`))return j;if(t.startsWith(`audio/`))return A;if(t.startsWith(`video/`))return M;if(t===`text/csv`||t.includes(`spreadsheet`)||t.includes(`excel`))return N;if(t===`application/json`||t===`application/xml`||t.startsWith(`text/x`))return S;if(t===`application/zip`||t.includes(`compressed`)||t.includes(`tar`))return k;let n=e.label??e.name;for(let[e,t]of we)if(e.test(n))return t;return w}function Ee(e){let t=e.lastIndexOf(`.`);return t<=0||e.length-t>11?{stem:e,ext:``}:{stem:e.slice(0,t),ext:e.slice(t)}}function De({a:e,onRemove:t}){let{t:r}=n(),i=e.label??e.name,{stem:a,ext:o}=Ee(i),s=C(e.size);return(0,H.jsxDEV)(`li`,{className:`flex min-w-0 items-center gap-2 rounded-[calc(var(--radius-md)+1px)] border border-border bg-background py-1 pr-1.5 pl-2`,children:[(0,H.jsxDEV)(Te(e),{size:14,"aria-hidden":!0,className:`shrink-0 text-muted-foreground`},void 0,!1,{fileName:U,lineNumber:100,columnNumber:7},this),(0,H.jsxDEV)(`span`,{className:`flex min-w-0 flex-1 text-xs`,title:i,children:[(0,H.jsxDEV)(`span`,{className:`truncate`,children:a},void 0,!1,{fileName:U,lineNumber:102,columnNumber:9},this),o&&(0,H.jsxDEV)(`span`,{className:`shrink-0 text-muted-foreground`,children:o},void 0,!1,{fileName:U,lineNumber:103,columnNumber:17},this)]},void 0,!0,{fileName:U,lineNumber:101,columnNumber:7},this),s&&(0,H.jsxDEV)(`span`,{className:`shrink-0 text-[0.6875rem] tabular-nums text-muted-foreground`,children:s},void 0,!1,{fileName:U,lineNumber:105,columnNumber:16},this),t&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-label":r(`webchat.removeAttachment`,{name:i}),title:r(`webchat.removeAttachment`,{name:i}),className:`shrink-0 rounded p-0.5 text-muted-foreground hover:text-destructive focus-visible:outline-2 focus-visible:outline-ring`,onClick:t,children:(0,H.jsxDEV)(T,{size:13},void 0,!1,{fileName:U,lineNumber:114,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:99,columnNumber:5},this)}function Oe({items:e,onRemove:t,className:r=``}){let{t:i}=n(),[a,o]=(0,L.useState)(!1),s=(0,L.useId)();if(!e.length)return null;let c=a?0:Math.max(0,e.length-W),l=c?e.slice(0,W):e;return(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1 ${r}`,"data-chat-attachments":!0,children:[(0,H.jsxDEV)(`ul`,{id:s,"aria-label":i(`webchat.attachments`),className:`flex flex-col gap-1`,children:l.map((e,n)=>(0,H.jsxDEV)(De,{a:e,...t?{onRemove:()=>t(n)}:{}},`${e.name}-${n}`,!1,{fileName:U,lineNumber:141,columnNumber:11},this))},void 0,!1,{fileName:U,lineNumber:139,columnNumber:7},this),e.length>W&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-expanded":a,"aria-controls":s,className:`inline-flex items-center gap-1 self-start rounded px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>o(e=>!e),children:[(0,H.jsxDEV)(D,{size:12,"aria-hidden":!0,className:a?`rotate-180 transition-transform`:`transition-transform`},void 0,!1,{fileName:U,lineNumber:152,columnNumber:11},this),a?i(`webchat.fewerFiles`):i(`webchat.moreFiles`,{count:c})]},void 0,!0,{fileName:U,lineNumber:145,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:138,columnNumber:5},this)}var G=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatMessages.tsx`;function ke({messages:e,pending:t,pendingReasoning:r,trailing:i}){let{t:a}=n(),o=(0,L.useRef)(null);return(0,L.useEffect)(()=>{let e=o.current;e&&(e.scrollTop=e.scrollHeight)},[e.length,t]),(0,H.jsxDEV)(`div`,{ref:o,"data-chat-list":!0,className:`flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-2`,children:[!e.length&&t===null&&r===null?(0,H.jsxDEV)(`div`,{className:`grid flex-1 place-items-center px-6 text-center text-sm text-muted-foreground`,children:(0,H.jsxDEV)(`span`,{className:`flex flex-col items-center gap-2`,children:[(0,H.jsxDEV)(P,{size:28,"aria-hidden":!0,className:`text-faint`},void 0,!1,{fileName:G,lineNumber:43,columnNumber:13},this),a(`webchat.empty`)]},void 0,!0,{fileName:G,lineNumber:42,columnNumber:11},this)},void 0,!1,{fileName:G,lineNumber:41,columnNumber:9},this):(0,H.jsxDEV)(H.Fragment,{children:[e.map(e=>(0,H.jsxDEV)(Ae,{role:e.role,text:e.text,reasoning:e.reasoning,attachments:e.attachments},e.msgId,!1,{fileName:G,lineNumber:50,columnNumber:13},this)),t!==null&&(0,H.jsxDEV)(Ae,{role:`assistant`,text:t||a(`webchat.thinking`),reasoning:r},void 0,!1,{fileName:G,lineNumber:53,columnNumber:13},this)]},void 0,!0,{fileName:G,lineNumber:48,columnNumber:9},this),i]},void 0,!0,{fileName:G,lineNumber:39,columnNumber:5},this)}var Ae=(0,L.memo)(function({role:e,text:t,reasoning:r,attachments:i}){let{t:a}=n();return e===`user`?(0,H.jsxDEV)(`div`,{className:`max-w-[85%] min-w-0 self-end rounded-2xl rounded-br-sm border border-border bg-accent px-3 py-2 text-[0.8125rem] break-words whitespace-pre-wrap`,children:[i?.length?(0,H.jsxDEV)(Oe,{items:i,className:`-mx-1 ${t?`mb-2`:``}`},void 0,!1,{fileName:G,lineNumber:90,columnNumber:32},this):null,t]},void 0,!0,{fileName:G,lineNumber:89,columnNumber:7},this):(0,H.jsxDEV)(`div`,{className:`max-w-[95%] min-w-0 self-start rounded-2xl rounded-bl-sm bg-muted px-3 py-2 text-sm break-words`,children:[r?(0,H.jsxDEV)(`details`,{className:`group/reason -mx-1 mb-2 rounded-[calc(var(--radius-md)+1px)] border border-border bg-background px-2 py-1`,children:[(0,H.jsxDEV)(`summary`,{className:`flex cursor-pointer list-none items-center gap-1 select-none text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden`,children:[(0,H.jsxDEV)(u,{size:12,"aria-hidden":!0,className:`shrink-0 transition-transform group-open/reason:rotate-90`},void 0,!1,{fileName:G,lineNumber:114,columnNumber:13},this),a(`webchat.reasoning`)]},void 0,!0,{fileName:G,lineNumber:113,columnNumber:11},this),(0,H.jsxDEV)(Ce,{text:r,className:`md-static md-chat md-chat-sub mt-1 text-muted-foreground`},void 0,!1,{fileName:G,lineNumber:117,columnNumber:11},this)]},void 0,!0,{fileName:G,lineNumber:112,columnNumber:9},this):null,(0,H.jsxDEV)(Ce,{text:t,className:`md-static md-chat`},void 0,!1,{fileName:G,lineNumber:120,columnNumber:7},this)]},void 0,!0,{fileName:G,lineNumber:96,columnNumber:5},this)}),K=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/AgentPicker.tsx`;function je({agents:e,defaultAgentId:t,selection:r,onChange:i}){let{t:a}=n(),[o,s]=(0,L.useState)(!1),c=(0,L.useRef)(null),l=(0,L.useRef)(null);(0,L.useEffect)(()=>{if(!o)return;function e(e){c.current&&!c.current.contains(e.target)&&s(!1)}function t(e){e.key===`Escape`&&(s(!1),l.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[o]);let u=e.length>1,d=e.flatMap(e=>e.presets.map(t=>({agentId:e.id,presetId:t.id,label:u?`${e.title} · ${t.title}`:t.title,hint:t.hint,isDefault:t.default===!0})));if(d.length===0)return null;let f=d.find(e=>e.agentId===r.agentId&&e.presetId===r.presetId)??d.find(e=>e.agentId===t&&e.isDefault)??d.find(e=>e.isDefault)??d[0];return(0,H.jsxDEV)(`div`,{className:`relative`,ref:c,children:[(0,H.jsxDEV)(`button`,{ref:l,type:`button`,"aria-haspopup":`menu`,"aria-expanded":o,className:`flex items-center gap-1 rounded-md px-2 py-1 text-xs text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>s(e=>!e),children:[(0,H.jsxDEV)(`span`,{className:`max-w-40 truncate`,children:f.hint?`${f.label} · ${f.hint}`:f.label},void 0,!1,{fileName:K,lineNumber:103,columnNumber:9},this),(0,H.jsxDEV)(D,{size:12,className:`shrink-0`},void 0,!1,{fileName:K,lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:95,columnNumber:7},this),o&&(0,H.jsxDEV)(`ul`,{"aria-label":a(`webchat.agentPicker`),className:`absolute bottom-full left-0 z-10 mb-1 max-h-64 w-64 max-w-[calc(100vw-2rem)] overflow-y-auto rounded-md border border-border bg-muted py-1 shadow-lg`,children:d.map(e=>{let t=e===f;return(0,H.jsxDEV)(`li`,{children:(0,H.jsxDEV)(`button`,{type:`button`,...t?{"aria-current":!0}:{},className:`flex w-full items-center gap-2 px-2 py-1.5 text-left text-xs hover:bg-card focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>{s(!1),i({agentId:e.agentId,presetId:e.presetId})},children:[(0,H.jsxDEV)(b,{size:12,className:t?`shrink-0 text-primary`:`shrink-0 opacity-0`},void 0,!1,{fileName:K,lineNumber:132,columnNumber:19},this),(0,H.jsxDEV)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label},void 0,!1,{fileName:K,lineNumber:133,columnNumber:19},this),e.hint?(0,H.jsxDEV)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.hint},void 0,!1,{fileName:K,lineNumber:134,columnNumber:29},this):null]},void 0,!0,{fileName:K,lineNumber:123,columnNumber:17},this)},`${e.agentId}/${e.presetId}`,!1,{fileName:K,lineNumber:122,columnNumber:15},this)})},void 0,!1,{fileName:K,lineNumber:112,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:94,columnNumber:5},this)}var q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatComposer.tsx`;function Me({streaming:e,onSend:t,onStop:r,attachments:i,uploading:o,uploadError:l,uploadProgress:u,canRetryUpload:d,onRetryUpload:f,onPickFiles:p,onRemoveAttachment:m,agents:h,defaultAgentId:g,selection:_,onChooseAgent:v,attachmentsAllowed:y}){let{t:b}=n(),[x,S]=(0,L.useState)(``);function C(){!x.trim()||e||t(x.trim(),i)&&S(``)}return(0,H.jsxDEV)(`div`,{className:`flex shrink-0 flex-col gap-2 border-t border-border p-2`,children:[(i.length>0||o||l)&&(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1.5 px-1`,children:[(0,H.jsxDEV)(Oe,{items:i,onRemove:m},void 0,!1,{fileName:q,lineNumber:65,columnNumber:11},this),o&&(0,H.jsxDEV)(`div`,{className:`flex min-w-32 flex-1 items-center gap-2`,"aria-label":b(`webchat.uploading`),children:[(0,H.jsxDEV)(s,{size:14,className:`shrink-0 animate-spin text-muted-foreground`},void 0,!1,{fileName:q,lineNumber:68,columnNumber:15},this),(0,H.jsxDEV)(`div`,{role:`progressbar`,"aria-label":b(`webchat.uploadProgress`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":u,className:`h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-border`,children:(0,H.jsxDEV)(`div`,{className:`h-full rounded-full bg-primary transition-[width]`,style:{width:`${u}%`}},void 0,!1,{fileName:q,lineNumber:77,columnNumber:17},this)},void 0,!1,{fileName:q,lineNumber:69,columnNumber:15},this),(0,H.jsxDEV)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:[u,`%`]},void 0,!0,{fileName:q,lineNumber:82,columnNumber:15},this)]},void 0,!0,{fileName:q,lineNumber:67,columnNumber:13},this),l&&(0,H.jsxDEV)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 text-xs text-destructive`,children:[(0,H.jsxDEV)(`span`,{className:`min-w-0 flex-1`,children:b(l)},void 0,!1,{fileName:q,lineNumber:87,columnNumber:15},this),d&&(0,H.jsxDEV)(`button`,{type:`button`,className:`inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 font-medium text-primary hover:bg-muted focus-visible:outline-2 focus-visible:outline-ring`,onClick:f,children:[(0,H.jsxDEV)(a,{size:12},void 0,!1,{fileName:q,lineNumber:94,columnNumber:19},this),` `,b(`webchat.retryUpload`)]},void 0,!0,{fileName:q,lineNumber:89,columnNumber:17},this)]},void 0,!0,{fileName:q,lineNumber:86,columnNumber:13},this)]},void 0,!0,{fileName:q,lineNumber:64,columnNumber:9},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsxDEV)(`textarea`,{className:`max-h-32 w-full resize-none rounded-lg border border-border bg-background px-3 py-2 text-sm transition-colors outline-none placeholder:text-faint focus:border-ring focus:ring-2 focus:ring-ring`,rows:1,value:x,placeholder:b(`webchat.placeholder`),onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),C())}},void 0,!1,{fileName:q,lineNumber:104,columnNumber:9},this),(0,H.jsxDEV)(`div`,{className:`flex items-center gap-1`,children:[y&&(0,H.jsxDEV)(`label`,{title:b(`webchat.attach`),className:`flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-within:ring-2 focus-within:ring-ring ${o?`pointer-events-none opacity-60`:``}`,children:[(0,H.jsxDEV)(F,{size:18,"aria-hidden":!0},void 0,!1,{fileName:q,lineNumber:127,columnNumber:15},this),(0,H.jsxDEV)(`input`,{type:`file`,multiple:!0,"aria-label":b(`webchat.attach`),className:`sr-only`,disabled:o,onChange:e=>{e.target.files?.length&&p(e.target.files),e.currentTarget.value=``}},void 0,!1,{fileName:q,lineNumber:128,columnNumber:15},this)]},void 0,!0,{fileName:q,lineNumber:120,columnNumber:13},this),(0,H.jsxDEV)(je,{agents:h,defaultAgentId:g,selection:_,onChange:v},void 0,!1,{fileName:q,lineNumber:141,columnNumber:11},this),(0,H.jsxDEV)(`div`,{className:`flex-1`},void 0,!1,{fileName:q,lineNumber:142,columnNumber:11},this),e?(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":b(`webchat.stop`),title:b(`webchat.stop`),className:`shrink-0`,onClick:r,children:(0,H.jsxDEV)(c,{size:18},void 0,!1,{fileName:q,lineNumber:153,columnNumber:15},this)},void 0,!1,{fileName:q,lineNumber:144,columnNumber:13},this):(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":b(`webchat.send`),title:b(`webchat.send`),disabled:!x.trim(),className:`shrink-0 hover:text-primary`,onClick:C,children:(0,H.jsxDEV)(I,{size:18},void 0,!1,{fileName:q,lineNumber:168,columnNumber:15},this)},void 0,!1,{fileName:q,lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:q,lineNumber:118,columnNumber:9},this)]},void 0,!0,{fileName:q,lineNumber:103,columnNumber:7},this)]},void 0,!0,{fileName:q,lineNumber:59,columnNumber:5},this)}var J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatThreadList.tsx`;function Ne({threads:e,activeId:t,onOpen:r,onNew:i,onTogglePrivate:a,className:o=`w-[220px] shrink-0`}){let{t:s}=n();return(0,H.jsxDEV)(`aside`,{"aria-label":s(`webchat.threads`),className:`${o} flex flex-col border-r border-border`,children:[(0,H.jsxDEV)(`button`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 text-sm font-medium text-primary hover:bg-muted focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring`,onClick:i,children:[(0,H.jsxDEV)(g,{size:16,"aria-hidden":!0},void 0,!1,{fileName:J,lineNumber:32,columnNumber:9},this),` `,s(`webchat.newConversation`)]},void 0,!0,{fileName:J,lineNumber:28,columnNumber:7},this),(0,H.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto`,children:e.map(e=>{let n=e.convId===t;return(0,H.jsxDEV)(`div`,{className:`flex items-center gap-1 border-l-2 pr-2 pl-1 ${n?`border-ring bg-accent`:`border-transparent hover:bg-muted`}`,children:[(0,H.jsxDEV)(`button`,{onClick:()=>r(e.convId),className:`min-w-0 flex-1 rounded-sm py-2 pl-2 text-left text-sm focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring ${n?`font-medium`:``}`,children:[(0,H.jsxDEV)(`span`,{className:`block truncate`,children:e.title||s(`webchat.newConversation`)},void 0,!1,{fileName:J,lineNumber:52,columnNumber:17},this),(e.mine||e.ownerName)&&(0,H.jsxDEV)(`span`,{className:`block truncate text-xs text-muted-foreground`,children:e.mine?s(`webchat.you`):e.ownerName},void 0,!1,{fileName:J,lineNumber:57,columnNumber:19},this)]},void 0,!0,{fileName:J,lineNumber:48,columnNumber:15},this),e.mine&&(0,H.jsxDEV)(`button`,{type:`button`,"aria-label":e.private?s(`webchat.makePublic`):s(`webchat.makePrivate`),title:e.private?s(`webchat.makePublic`):s(`webchat.makePrivate`),onClick:t=>{t.stopPropagation(),a(e.convId,!e.private)},className:`shrink-0 rounded p-1 text-muted-foreground hover:bg-card hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:(0,H.jsxDEV)(y,{name:e.private?`lucide:shield`:`lucide:globe`,size:14},void 0,!1,{fileName:J,lineNumber:73,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:63,columnNumber:17},this)]},e.convId,!0,{fileName:J,lineNumber:42,columnNumber:13},this)})},void 0,!1,{fileName:J,lineNumber:34,columnNumber:7},this)]},void 0,!0,{fileName:J,lineNumber:27,columnNumber:5},this)}var Pe=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/SuggestionChips.tsx`;function Fe({items:e,onPick:t}){let{t:r}=n();return e?.length?(0,H.jsxDEV)(`div`,{role:`group`,"aria-label":r(`webchat.suggestions`),className:`flex flex-wrap gap-1.5 px-2 pb-1.5`,children:e.map((e,n)=>(0,H.jsxDEV)(`button`,{type:`button`,title:e,className:`max-w-full truncate rounded-full border border-border bg-muted px-3 py-1 text-xs text-foreground hover:border-border2 hover:bg-card focus-visible:outline-2 focus-visible:outline-ring`,onClick:()=>t(e),children:e},`${n}-${e}`,!1,{fileName:Pe,lineNumber:24,columnNumber:9},this))},void 0,!1,{fileName:Pe,lineNumber:22,columnNumber:5},this):null}var Y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/plugin-webchat/src/ui/ChatWidget.tsx`,Ie=25*1024*1024;function X(e){return Array.from(e.dataTransfer.types).includes(`Files`)}function Le({children:e,onFiles:t,className:r}){let{t:i}=n(),[a,o]=(0,L.useState)(!1),s=(0,L.useRef)(0);function c(e){X(e)&&(e.preventDefault(),s.current+=1,o(!0))}function l(e){X(e)&&(e.preventDefault(),s.current=Math.max(0,s.current-1),s.current===0&&o(!1))}function u(e){X(e)&&(e.preventDefault(),s.current=0,o(!1),t(Array.from(e.dataTransfer.files)))}return(0,H.jsxDEV)(`div`,{className:r,onDragEnter:c,onDragLeave:l,onDragOver:e=>{X(e)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:u,children:[e,a&&(0,H.jsxDEV)(`div`,{"data-chat-drop-overlay":!0,"data-testid":`chat-drop-overlay`,className:`pointer-events-none absolute inset-0 z-50 grid place-items-center bg-card/95 p-6 text-center backdrop-blur-sm`,children:(0,H.jsxDEV)(`div`,{className:`flex h-full w-full flex-col items-center justify-center rounded-2xl border-2 border-dashed border-ring text-primary`,children:[(0,H.jsxDEV)(d,{size:34},void 0,!1,{fileName:Y,lineNumber:83,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`mt-3 text-base font-medium`,children:i(`webchat.dropFiles`)},void 0,!1,{fileName:Y,lineNumber:84,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`mt-1 text-xs text-muted-foreground`,children:i(`webchat.dropFilesHint`)},void 0,!1,{fileName:Y,lineNumber:85,columnNumber:13},this)]},void 0,!0,{fileName:Y,lineNumber:82,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:77,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:59,columnNumber:5},this)}function Z(e){return e?[`bubble`,`panel`,`modal`]:[`bubble`,`modal`]}function Q(e){return Z(e)[1]}function $(e,t,n){let r=Z(t),i=r.indexOf(e)+n;return r[Math.min(r.length-1,Math.max(0,i))]}function Re(){let{t:e}=n(),t=pe(),r=_e(),[i,a]=(0,L.useState)(`bubble`),[s,c]=(0,L.useState)(!1),[u,d]=(0,L.useState)([]),[f,p]=(0,L.useState)(!1),[h,y]=(0,L.useState)(0),[b,x]=(0,L.useState)(null),[S,C]=(0,L.useState)([]),w=o(`sm`,640),D=w&&i===`modal`,k=(0,L.useCallback)(()=>{a(Q(w))},[w]),A=(0,L.useRef)(null),j=(0,L.useRef)(`bubble`);(0,L.useEffect)(()=>{if(i!==`modal`)return;let e=e=>{e.key===`Escape`&&a($(`modal`,w,-1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i,w]),(0,L.useEffect)(()=>{Z(w).includes(i)||a(Q(w))},[i,w]),(0,L.useEffect)(()=>{i===`panel`&&j.current===`modal`&&A.current?.focus(),j.current=i},[i]),(0,L.useEffect)(()=>{(i===`bubble`||D)&&c(!1)},[i,D]),(0,L.useEffect)(()=>{if(i!==`modal`)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[i]);let M=i!==`bubble`;(0,L.useEffect)(()=>{M&&t.loadThreads()},[M,t.loadThreads]);let{convId:N,newConversation:P}=t;(0,L.useEffect)(()=>{M&&N===null&&P()},[M,N,P]);function F(){t.newConversation(),d([]),x(null),C([]),c(!1)}let I=(0,L.useCallback)(async e=>{if(!e.length)return;x(null),C([]),p(!0),y(0);let t=[],n=[],r=null;for(let i of e){if(i.size>Ie){r??=`webchat.uploadTooLarge`;continue}try{y(0);let e=await _(i,y);e?t.push({...e,label:i.name}):(n.push(i),r??=`webchat.uploadFailed`)}catch{n.push(i),r??=`webchat.uploadFailed`}}t.length&&d(e=>[...e,...t]),p(!1),y(0),C(n),r&&x(r)},[]),ne=(0,L.useCallback)(()=>{S.length&&I(S)},[I,S]),R=(0,L.useCallback)((e,n)=>{let i=r(),a=n.length?t.send(e,i,n):t.send(e,i);return a&&(d([]),x(null),C([])),a},[t,r]),z=t.messages.length>0||t.pending!==null,re=t.threads.find(e=>e.convId===t.convId)?.title,B=(0,H.jsxDEV)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-border px-3 py-1.5`,children:[(0,H.jsxDEV)(`span`,{className:`min-w-0 truncate text-sm font-medium`,children:re||e(`webchat.title`)},void 0,!1,{fileName:Y,lineNumber:298,columnNumber:7},this),(0,H.jsxDEV)(`div`,{className:`-mr-1 flex shrink-0 items-center gap-0.5`,children:[z&&(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.newConversation`),title:e(`webchat.newConversation`),onClick:F,children:(0,H.jsxDEV)(g,{size:16},void 0,!1,{fileName:Y,lineNumber:313,columnNumber:13},this)},void 0,!1,{fileName:Y,lineNumber:305,columnNumber:11},this),!D&&(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.threads`),title:e(`webchat.threads`),"aria-expanded":s,className:s?`bg-muted text-foreground`:``,onClick:()=>c(e=>!e),children:(0,H.jsxDEV)(O,{size:16},void 0,!1,{fileName:Y,lineNumber:330,columnNumber:13},this)},void 0,!1,{fileName:Y,lineNumber:320,columnNumber:11},this),Z(w).includes(`panel`)&&(0,H.jsxDEV)(E,{ref:A,type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(i===`modal`?`webchat.collapse`:`webchat.expand`),title:e(i===`modal`?`webchat.collapse`:`webchat.expand`),onClick:()=>a($(i,w,i===`modal`?-1:1)),children:i===`modal`?(0,H.jsxDEV)(te,{size:16},void 0,!1,{fileName:Y,lineNumber:345,columnNumber:33},this):(0,H.jsxDEV)(ee,{size:16},void 0,!1,{fileName:Y,lineNumber:345,columnNumber:59},this)},void 0,!1,{fileName:Y,lineNumber:336,columnNumber:11},this),(0,H.jsxDEV)(E,{type:`button`,variant:`ghost`,size:`iconSm`,"aria-label":e(`webchat.close`),title:e(`webchat.close`),onClick:()=>a(`bubble`),children:(0,H.jsxDEV)(T,{size:16},void 0,!1,{fileName:Y,lineNumber:356,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:348,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:299,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:297,columnNumber:5},this),V=(0,H.jsxDEV)(Ne,{threads:t.threads,activeId:t.convId,onOpen:e=>{t.open(e),d([]),x(null),C([]),c(!1)},onNew:F,onTogglePrivate:t.togglePrivate,className:D?`w-[220px] shrink-0`:`w-full`},void 0,!1,{fileName:Y,lineNumber:365,columnNumber:5},this),ie=(0,H.jsxDEV)(be,{onNavigate:k,children:(0,H.jsxDEV)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[t.error&&(0,H.jsxDEV)(`div`,{className:`px-3 py-2 text-sm text-destructive`,children:e(`webchat.error`,{message:t.error})},void 0,!1,{fileName:Y,lineNumber:387,columnNumber:11},this),(0,H.jsxDEV)(ke,{messages:t.messages,pending:t.pending,pendingReasoning:t.pendingReasoning,trailing:t.messages.length===0?(0,H.jsxDEV)(Fe,{items:t.starters,onPick:e=>R(e,u)},void 0,!1,{fileName:Y,lineNumber:395,columnNumber:15},this):(0,H.jsxDEV)(Fe,{items:t.suggestions,onPick:e=>R(e,u)},void 0,!1,{fileName:Y,lineNumber:397,columnNumber:15},this)},void 0,!1,{fileName:Y,lineNumber:389,columnNumber:9},this),(0,H.jsxDEV)(Me,{streaming:t.pending!==null,attachments:u,uploading:f,uploadProgress:h,uploadError:b,canRetryUpload:S.length>0&&!f,onRetryUpload:ne,onPickFiles:e=>void I(Array.from(e)),onRemoveAttachment:e=>d(t=>t.filter((t,n)=>n!==e)),agents:t.agents,defaultAgentId:t.defaultAgentId,selection:t.selection,onChooseAgent:t.chooseAgent,attachmentsAllowed:t.attachmentsAllowed,onSend:R,onStop:t.stop},void 0,!1,{fileName:Y,lineNumber:401,columnNumber:9},this)]},void 0,!0,{fileName:Y,lineNumber:385,columnNumber:7},this)},void 0,!1,{fileName:Y,lineNumber:382,columnNumber:5},this);return i===`bubble`?(0,H.jsxDEV)(`button`,{"aria-label":e(`webchat.open`),onClick:()=>a(Q(w)),className:`fixed bottom-4 right-4 z-40 grid h-14 w-14 place-items-center rounded-full bg-primary text-on-accent ring-1 ring-border2 shadow-lg`,children:(0,H.jsxDEV)(l,{size:24},void 0,!1,{fileName:Y,lineNumber:447,columnNumber:9},this)},void 0,!1,{fileName:Y,lineNumber:425,columnNumber:7},this):i===`panel`?(0,H.jsxDEV)(Le,{onFiles:I,className:`fixed bottom-4 right-4 z-40 flex h-[560px] max-h-[80dvh] w-[380px] max-w-[calc(100vw-2rem)] flex-col overflow-hidden rounded-2xl border border-border bg-card shadow-xl`,children:[B,s?V:ie]},void 0,!0,{fileName:Y,lineNumber:454,columnNumber:7},this):(0,H.jsxDEV)(v,{open:!0,modal:!1,onOpenChange:e=>!e&&a($(`modal`,w,-1)),children:[(0,H.jsxDEV)(`div`,{"data-chat-backdrop":!0,"aria-hidden":`true`,className:`fixed inset-0 z-[45] bg-black/50 backdrop-blur-sm`},void 0,!1,{fileName:Y,lineNumber:476,columnNumber:7},this),(0,H.jsxDEV)(m,{hideClose:!0,className:`h-[85dvh] w-full p-0 md:h-[85dvh] md:w-[80vw] md:max-w-[1040px] md:overflow-y-hidden`,children:(0,H.jsxDEV)(Le,{onFiles:I,className:`h-full`,children:(0,H.jsxDEV)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[B,(0,H.jsxDEV)(`div`,{className:`flex min-h-0 flex-1`,children:[(D||s)&&V,(D||!s)&&ie]},void 0,!0,{fileName:Y,lineNumber:489,columnNumber:13},this)]},void 0,!0,{fileName:Y,lineNumber:487,columnNumber:11},this)},void 0,!1,{fileName:Y,lineNumber:486,columnNumber:9},this)},void 0,!1,{fileName:Y,lineNumber:482,columnNumber:7},this)]},void 0,!0,{fileName:Y,lineNumber:473,columnNumber:5},this)}export{Re as ChatWidget,Re as default,Z as chatModes,Q as restingMode,$ as stepMode};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{Ht as i,Or as a,Yn as o,br as s,kr as c,vr as l}from"./src-r8PGv9_a.js";import{l as u}from"./phone-input-8QtHMHO_.js";import{h as d,m as f,y as p}from"./api-QNHQU9to.js";import{n as m}from"./auth-context-CoCE5oPD.js";import{n as h,t as g}from"./plugin-label-CfdhA4_L.js";var _=e(t(),1),v=r(),y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/DiagnosticsPage.tsx`;function b(){let{t:e}=n(),{role:t}=m(),[r,b]=(0,_.useState)(null),[S,C]=(0,_.useState)([]),[w,T]=(0,_.useState)(null),[E,D]=(0,_.useState)(`loading`),[O,k]=(0,_.useState)(!0),[A,j]=(0,_.useState)(!1),M=(0,_.useCallback)(async()=>{k(!0),j(!1),D(`loading`);let e=fetch(`/health`).then(e=>D(e.ok?`ok`:`error`)).catch(()=>D(`error`));try{let[e,t,n]=await Promise.all([f(),p(),d()]);b(e),C(t),T(n)}catch{j(!0)}finally{await e,k(!1)}},[]);if((0,_.useEffect)(()=>{t===`admin`&&M()},[M,t]),t!==`admin`)return(0,v.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxDEV)(i,{overline:e(`settings.title`),title:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:64,columnNumber:9},this),(0,v.jsxDEV)(a,{children:(0,v.jsxDEV)(`p`,{className:`text-sm text-destructive`,children:e(`diagnostics.adminOnly`)},void 0,!1,{fileName:y,lineNumber:66,columnNumber:11},this)},void 0,!1,{fileName:y,lineNumber:65,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:63,columnNumber:7},this);let N=S.filter(e=>e.latestVersion&&h(e.latestVersion,e.installedVersion));return(0,v.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxDEV)(i,{overline:e(`settings.title`),title:e(`diagnostics.title`),actions:(0,v.jsxDEV)(u,{type:`button`,variant:`ghost`,size:`sm`,className:`shrink-0 border border-border`,disabled:O,onClick:()=>void M(),children:[(0,v.jsxDEV)(c,{name:`lucide:refresh-cw`,size:15,className:O?`animate-spin`:void 0},void 0,!1,{fileName:y,lineNumber:88,columnNumber:13},this),e(O?`diagnostics.refreshing`:`diagnostics.refresh`)]},void 0,!0,{fileName:y,lineNumber:80,columnNumber:11},this)},void 0,!1,{fileName:y,lineNumber:76,columnNumber:7},this),(0,v.jsxDEV)(a,{children:[(0,v.jsxDEV)(`p`,{className:`mb-6 text-sm text-muted-foreground`,children:e(`diagnostics.description`)},void 0,!1,{fileName:y,lineNumber:94,columnNumber:9},this),A&&(0,v.jsxDEV)(o,{tone:`danger`,className:`mb-5`,children:e(`diagnostics.loadFailed`)},void 0,!1,{fileName:y,lineNumber:97,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.server`)},void 0,!1,{fileName:y,lineNumber:104,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-2 font-semibold text-foreground`,children:[(0,v.jsxDEV)(`span`,{className:`h-2.5 w-2.5 rounded-full ${E===`ok`?`bg-success`:E===`error`?`bg-destructive`:`bg-muted`}`},void 0,!1,{fileName:y,lineNumber:106,columnNumber:15},this),e(E===`ok`?`diagnostics.healthy`:E===`error`?`diagnostics.unavailable`:`common.loading`)]},void 0,!0,{fileName:y,lineNumber:105,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:103,columnNumber:11},this),(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.agents`)},void 0,!1,{fileName:y,lineNumber:117,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:r?.agents.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:120,columnNumber:17},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted-foreground`,children:`—`},void 0,!1,{fileName:y,lineNumber:123,columnNumber:21},this)},void 0,!1,{fileName:y,lineNumber:118,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:116,columnNumber:11},this),(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.connectors`)},void 0,!1,{fileName:y,lineNumber:127,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:r?.connectors.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:130,columnNumber:17},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted-foreground`,children:`—`},void 0,!1,{fileName:y,lineNumber:133,columnNumber:21},this)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:126,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:102,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.versions`)},void 0,!1,{fileName:y,lineNumber:139,columnNumber:11},this),(0,v.jsxDEV)(l,{className:`overflow-hidden`,children:[(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2 text-xs font-medium text-muted-foreground`,children:[(0,v.jsxDEV)(`span`,{children:e(`diagnostics.component`)},void 0,!1,{fileName:y,lineNumber:142,columnNumber:15},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.installed`)},void 0,!1,{fileName:y,lineNumber:143,columnNumber:15},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.latest`)},void 0,!1,{fileName:y,lineNumber:144,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:141,columnNumber:13},this),w?.installedVersion&&(0,v.jsxDEV)(x,{name:e(`plugins.runtimeLabel`),installed:w.installedVersion,latest:w.latestVersion},void 0,!1,{fileName:y,lineNumber:147,columnNumber:15},this),S.filter(e=>e.id!==`core`).map(t=>(0,v.jsxDEV)(x,{name:g(e,t),installed:t.installedVersion,latest:t.latestVersion},t.id,!1,{fileName:y,lineNumber:156,columnNumber:17},this)),!w?.installedVersion&&S.length===0&&(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noData`)},void 0,!1,{fileName:y,lineNumber:164,columnNumber:15},this),N.length>0&&(0,v.jsxDEV)(`div`,{className:`border-t border-border px-4 py-2 text-xs text-primary`,children:e(`diagnostics.outdated`,{count:N.length})},void 0,!1,{fileName:y,lineNumber:167,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:140,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:138,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.recentMessages`)},void 0,!1,{fileName:y,lineNumber:175,columnNumber:11},this),(0,v.jsxDEV)(l,{className:`overflow-x-auto`,children:r?.recentMessages.length?(0,v.jsxDEV)(`table`,{className:`w-full min-w-[34rem] text-left text-xs`,children:[(0,v.jsxDEV)(`thead`,{className:`border-b border-border text-muted-foreground`,children:(0,v.jsxDEV)(`tr`,{children:[(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.time`)},void 0,!1,{fileName:y,lineNumber:181,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.connector`)},void 0,!1,{fileName:y,lineNumber:182,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.role`)},void 0,!1,{fileName:y,lineNumber:183,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.duration`)},void 0,!1,{fileName:y,lineNumber:184,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.tokens`)},void 0,!1,{fileName:y,lineNumber:185,columnNumber:21},this)]},void 0,!0,{fileName:y,lineNumber:180,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:179,columnNumber:17},this),(0,v.jsxDEV)(`tbody`,{children:r.recentMessages.map(e=>(0,v.jsxDEV)(`tr`,{className:`border-b border-border last:border-0`,children:[(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-muted-foreground`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:191,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-foreground`,children:e.connector},void 0,!1,{fileName:y,lineNumber:192,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-foreground`,children:e.role},void 0,!1,{fileName:y,lineNumber:193,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted-foreground`,children:e.ms==null?`—`:`${e.ms} ms`},void 0,!1,{fileName:y,lineNumber:194,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted-foreground`,children:e.tokensIn==null&&e.tokensOut==null?`—`:`${e.tokensIn??0} / ${e.tokensOut??0}`},void 0,!1,{fileName:y,lineNumber:197,columnNumber:23},this)]},e.id,!0,{fileName:y,lineNumber:190,columnNumber:21},this))},void 0,!1,{fileName:y,lineNumber:188,columnNumber:17},this)]},void 0,!0,{fileName:y,lineNumber:178,columnNumber:15},this):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noMessages`)},void 0,!1,{fileName:y,lineNumber:207,columnNumber:15},this)},void 0,!1,{fileName:y,lineNumber:176,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:174,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.recentErrors`)},void 0,!1,{fileName:y,lineNumber:213,columnNumber:11},this),(0,v.jsxDEV)(l,{className:`overflow-hidden`,children:r?.recentErrors.length?r.recentErrors.map((e,t)=>(0,v.jsxDEV)(`div`,{className:`border-b border-border px-4 py-3 last:border-0`,children:[(0,v.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,v.jsxDEV)(s,{variant:`destructive`,children:e.level},void 0,!1,{fileName:y,lineNumber:219,columnNumber:21},this),(0,v.jsxDEV)(`span`,{className:`font-medium text-foreground`,children:e.source},void 0,!1,{fileName:y,lineNumber:220,columnNumber:21},this),(0,v.jsxDEV)(`span`,{className:`text-muted-foreground`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:221,columnNumber:21},this)]},void 0,!0,{fileName:y,lineNumber:218,columnNumber:19},this),(0,v.jsxDEV)(`div`,{className:`mt-1 break-words text-sm text-destructive`,children:e.message},void 0,!1,{fileName:y,lineNumber:223,columnNumber:19},this)]},`${e.ts}-${t}`,!0,{fileName:y,lineNumber:217,columnNumber:17},this)):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noErrors`)},void 0,!1,{fileName:y,lineNumber:227,columnNumber:15},this)},void 0,!1,{fileName:y,lineNumber:214,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:212,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:93,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:75,columnNumber:5},this)}function x({name:e,installed:t,latest:n}){return(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2.5 text-sm last:border-0`,children:[(0,v.jsxDEV)(`span`,{className:`min-w-0 truncate text-foreground`,children:e},void 0,!1,{fileName:y,lineNumber:239,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:`text-muted-foreground`,children:[`v`,t]},void 0,!0,{fileName:y,lineNumber:240,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:n&&h(n,t)?`text-primary`:`text-muted-foreground`,children:n?`v${n}`:`—`},void 0,!1,{fileName:y,lineNumber:241,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:238,columnNumber:5},this)}export{b as DiagnosticsPage};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{Cr as i,Ht as a,Jn as o,hr as s,pr as c,wr as l}from"./src-CheiTWox.js";import{l as u}from"./phone-input-8QtHMHO_.js";import{h as d,m as f,y as p}from"./api-QNHQU9to.js";import{n as m}from"./auth-context-CoCE5oPD.js";import{n as h,t as g}from"./plugin-label-CfdhA4_L.js";var _=e(t(),1),v=r(),y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/DiagnosticsPage.tsx`;function b(){let{t:e}=n(),{role:t}=m(),[r,b]=(0,_.useState)(null),[S,C]=(0,_.useState)([]),[w,T]=(0,_.useState)(null),[E,D]=(0,_.useState)(`loading`),[O,k]=(0,_.useState)(!0),[A,j]=(0,_.useState)(!1),M=(0,_.useCallback)(async()=>{k(!0),j(!1),D(`loading`);let e=fetch(`/health`).then(e=>D(e.ok?`ok`:`error`)).catch(()=>D(`error`));try{let[e,t,n]=await Promise.all([f(),p(),d()]);b(e),C(t),T(n)}catch{j(!0)}finally{await e,k(!1)}},[]);if((0,_.useEffect)(()=>{t===`admin`&&M()},[M,t]),t!==`admin`)return(0,v.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxDEV)(a,{overline:e(`settings.title`),title:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:64,columnNumber:9},this),(0,v.jsxDEV)(i,{children:(0,v.jsxDEV)(`p`,{className:`text-sm text-destructive`,children:e(`diagnostics.adminOnly`)},void 0,!1,{fileName:y,lineNumber:66,columnNumber:11},this)},void 0,!1,{fileName:y,lineNumber:65,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:63,columnNumber:7},this);let N=S.filter(e=>e.latestVersion&&h(e.latestVersion,e.installedVersion));return(0,v.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,v.jsxDEV)(a,{overline:e(`settings.title`),title:e(`diagnostics.title`),actions:(0,v.jsxDEV)(u,{type:`button`,variant:`ghost`,size:`sm`,className:`shrink-0 border border-border`,disabled:O,onClick:()=>void M(),children:[(0,v.jsxDEV)(l,{name:`lucide:refresh-cw`,size:15,className:O?`animate-spin`:void 0},void 0,!1,{fileName:y,lineNumber:88,columnNumber:13},this),e(O?`diagnostics.refreshing`:`diagnostics.refresh`)]},void 0,!0,{fileName:y,lineNumber:80,columnNumber:11},this)},void 0,!1,{fileName:y,lineNumber:76,columnNumber:7},this),(0,v.jsxDEV)(i,{children:[(0,v.jsxDEV)(`p`,{className:`mb-6 text-sm text-muted-foreground`,children:e(`diagnostics.description`)},void 0,!1,{fileName:y,lineNumber:94,columnNumber:9},this),A&&(0,v.jsxDEV)(o,{tone:`danger`,className:`mb-5`,children:e(`diagnostics.loadFailed`)},void 0,!1,{fileName:y,lineNumber:97,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,v.jsxDEV)(c,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.server`)},void 0,!1,{fileName:y,lineNumber:104,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-2 font-semibold text-foreground`,children:[(0,v.jsxDEV)(`span`,{className:`h-2.5 w-2.5 rounded-full ${E===`ok`?`bg-success`:E===`error`?`bg-destructive`:`bg-muted`}`},void 0,!1,{fileName:y,lineNumber:106,columnNumber:15},this),e(E===`ok`?`diagnostics.healthy`:E===`error`?`diagnostics.unavailable`:`common.loading`)]},void 0,!0,{fileName:y,lineNumber:105,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:103,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.agents`)},void 0,!1,{fileName:y,lineNumber:117,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:r?.agents.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:120,columnNumber:17},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted-foreground`,children:`—`},void 0,!1,{fileName:y,lineNumber:123,columnNumber:21},this)},void 0,!1,{fileName:y,lineNumber:118,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:116,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted-foreground`,children:e(`diagnostics.connectors`)},void 0,!1,{fileName:y,lineNumber:127,columnNumber:13},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:r?.connectors.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:130,columnNumber:17},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted-foreground`,children:`—`},void 0,!1,{fileName:y,lineNumber:133,columnNumber:21},this)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:126,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:102,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.versions`)},void 0,!1,{fileName:y,lineNumber:139,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`overflow-hidden`,children:[(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2 text-xs font-medium text-muted-foreground`,children:[(0,v.jsxDEV)(`span`,{children:e(`diagnostics.component`)},void 0,!1,{fileName:y,lineNumber:142,columnNumber:15},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.installed`)},void 0,!1,{fileName:y,lineNumber:143,columnNumber:15},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.latest`)},void 0,!1,{fileName:y,lineNumber:144,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:141,columnNumber:13},this),w?.installedVersion&&(0,v.jsxDEV)(x,{name:e(`plugins.runtimeLabel`),installed:w.installedVersion,latest:w.latestVersion},void 0,!1,{fileName:y,lineNumber:147,columnNumber:15},this),S.filter(e=>e.id!==`core`).map(t=>(0,v.jsxDEV)(x,{name:g(e,t),installed:t.installedVersion,latest:t.latestVersion},t.id,!1,{fileName:y,lineNumber:156,columnNumber:17},this)),!w?.installedVersion&&S.length===0&&(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noData`)},void 0,!1,{fileName:y,lineNumber:164,columnNumber:15},this),N.length>0&&(0,v.jsxDEV)(`div`,{className:`border-t border-border px-4 py-2 text-xs text-primary`,children:e(`diagnostics.outdated`,{count:N.length})},void 0,!1,{fileName:y,lineNumber:167,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:140,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:138,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.recentMessages`)},void 0,!1,{fileName:y,lineNumber:175,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`overflow-x-auto`,children:r?.recentMessages.length?(0,v.jsxDEV)(`table`,{className:`w-full min-w-[34rem] text-left text-xs`,children:[(0,v.jsxDEV)(`thead`,{className:`border-b border-border text-muted-foreground`,children:(0,v.jsxDEV)(`tr`,{children:[(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.time`)},void 0,!1,{fileName:y,lineNumber:181,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.connector`)},void 0,!1,{fileName:y,lineNumber:182,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.role`)},void 0,!1,{fileName:y,lineNumber:183,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.duration`)},void 0,!1,{fileName:y,lineNumber:184,columnNumber:21},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.tokens`)},void 0,!1,{fileName:y,lineNumber:185,columnNumber:21},this)]},void 0,!0,{fileName:y,lineNumber:180,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:179,columnNumber:17},this),(0,v.jsxDEV)(`tbody`,{children:r.recentMessages.map(e=>(0,v.jsxDEV)(`tr`,{className:`border-b border-border last:border-0`,children:[(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-muted-foreground`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:191,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-foreground`,children:e.connector},void 0,!1,{fileName:y,lineNumber:192,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-foreground`,children:e.role},void 0,!1,{fileName:y,lineNumber:193,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted-foreground`,children:e.ms==null?`—`:`${e.ms} ms`},void 0,!1,{fileName:y,lineNumber:194,columnNumber:23},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted-foreground`,children:e.tokensIn==null&&e.tokensOut==null?`—`:`${e.tokensIn??0} / ${e.tokensOut??0}`},void 0,!1,{fileName:y,lineNumber:197,columnNumber:23},this)]},e.id,!0,{fileName:y,lineNumber:190,columnNumber:21},this))},void 0,!1,{fileName:y,lineNumber:188,columnNumber:17},this)]},void 0,!0,{fileName:y,lineNumber:178,columnNumber:15},this):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noMessages`)},void 0,!1,{fileName:y,lineNumber:207,columnNumber:15},this)},void 0,!1,{fileName:y,lineNumber:176,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:174,columnNumber:9},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:e(`diagnostics.recentErrors`)},void 0,!1,{fileName:y,lineNumber:213,columnNumber:11},this),(0,v.jsxDEV)(c,{className:`overflow-hidden`,children:r?.recentErrors.length?r.recentErrors.map((e,t)=>(0,v.jsxDEV)(`div`,{className:`border-b border-border px-4 py-3 last:border-0`,children:[(0,v.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,v.jsxDEV)(s,{variant:`destructive`,children:e.level},void 0,!1,{fileName:y,lineNumber:219,columnNumber:21},this),(0,v.jsxDEV)(`span`,{className:`font-medium text-foreground`,children:e.source},void 0,!1,{fileName:y,lineNumber:220,columnNumber:21},this),(0,v.jsxDEV)(`span`,{className:`text-muted-foreground`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:221,columnNumber:21},this)]},void 0,!0,{fileName:y,lineNumber:218,columnNumber:19},this),(0,v.jsxDEV)(`div`,{className:`mt-1 break-words text-sm text-destructive`,children:e.message},void 0,!1,{fileName:y,lineNumber:223,columnNumber:19},this)]},`${e.ts}-${t}`,!0,{fileName:y,lineNumber:217,columnNumber:17},this)):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted-foreground`,children:e(`diagnostics.noErrors`)},void 0,!1,{fileName:y,lineNumber:227,columnNumber:15},this)},void 0,!1,{fileName:y,lineNumber:214,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:212,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:93,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:75,columnNumber:5},this)}function x({name:e,installed:t,latest:n}){return(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2.5 text-sm last:border-0`,children:[(0,v.jsxDEV)(`span`,{className:`min-w-0 truncate text-foreground`,children:e},void 0,!1,{fileName:y,lineNumber:239,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:`text-muted-foreground`,children:[`v`,t]},void 0,!0,{fileName:y,lineNumber:240,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:n&&h(n,t)?`text-primary`:`text-muted-foreground`,children:n?`v${n}`:`—`},void 0,!1,{fileName:y,lineNumber:241,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:238,columnNumber:5},this)}export{b as DiagnosticsPage};
|
|
@@ -186,4 +186,4 @@ ${t.innerHTML}
|
|
|
186
186
|
`?t:t[t.length-1]===`
|
|
187
187
|
`?t.slice(0,-1):t};return e.renderer.rules.hardbreak=t(e.renderer.rules.hardbreak),e.renderer.rules.softbreak=t(e.renderer.rules.softbreak),e.renderer.rules.fence=t(e.renderer.rules.fence),e.renderer.rules.code_block=t(e.renderer.rules.code_block),e.renderer.renderToken=t(e.renderer.renderToken.bind(e.renderer)),e}},yD=V.create({name:`markdownClipboard`,addOptions(){return{transformPastedText:!1,transformCopiedText:!1}},addProseMirrorPlugins(){return[new M({key:new N(`markdownClipboard`),props:{clipboardTextParser:(e,t,n)=>{if(n||!this.options.transformPastedText)return null;let r=this.editor.storage.markdown.parser.parse(e,{inline:!0});return Tt.fromSchema(this.editor.schema).parseSlice(KE(r),{preserveWhitespace:!0,context:t})},clipboardTextSerializer:e=>this.options.transformCopiedText?this.editor.storage.markdown.serializer.serialize(e.content):null}})]}}),bD=V.create({name:`markdown`,priority:50,addOptions(){return{html:!0,tightLists:!0,tightListClass:`tight`,bulletListMarker:`-`,linkify:!1,breaks:!1,transformPastedText:!1,transformCopiedText:!1}},addCommands(){let e=Uf.Commands.config.addCommands();return{setContent:(t,n)=>r=>e.setContent(r.editor.storage.markdown.parser.parse(t),n)(r),insertContentAt:(t,n,r)=>i=>e.insertContentAt(t,i.editor.storage.markdown.parser.parse(n,{inline:!0}),r)(i)}},onBeforeCreate(){this.editor.storage.markdown={options:{...this.options},parser:new vD(this.editor,this.options),serializer:new _D(this.editor),getMarkdown:()=>this.editor.storage.markdown.serializer.serialize(this.editor.state.doc)},this.editor.options.initialContent=this.editor.options.content,this.editor.options.content=this.editor.storage.markdown.parser.parse(this.editor.options.content)},onCreate(){this.editor.options.content=this.editor.options.initialContent,delete this.editor.options.initialContent},addStorage(){return{}},addExtensions(){return[IE.configure({tight:this.options.tightLists,tightClass:this.options.tightListClass}),yD.configure({transformPastedText:this.options.transformPastedText,transformCopiedText:this.options.transformCopiedText})]}});function xD(e){let{char:t,allowSpaces:n,allowToIncludeChar:r,allowedPrefixes:i,startOfLine:a,$position:o}=e,s=n&&!r,c=hf(t),l=RegExp(`\\s${c}$`),u=a?`^`:``,d=r?``:c,f=RegExp(s?`${u}${c}.*?(?=\\s${d}|$)`:`${u}(?:^)?${c}[^\\s${d}]*`,`gm`),p=o.nodeBefore?.isText&&o.nodeBefore.text;if(!p)return null;let m=o.pos-p.length,h=Array.from(p.matchAll(f)).pop();if(!h||h.input===void 0||h.index===void 0)return null;let g=h.input.slice(Math.max(0,h.index-1),h.index),_=RegExp(`^[${i?.join(``)}\0]?$`).test(g);if(i!==null&&!_)return null;let v=m+h.index,y=v+h[0].length;return s&&l.test(p.slice(y-1,y+1))&&(h[0]+=` `,y+=1),v<o.pos&&y>=o.pos?{range:{from:v,to:y},query:h[0].slice(t.length),text:h[0]}:null}function SD(e){return e.docChanged?e.steps.some(e=>{let t=e.slice;if(!t?.content)return!1;let n=t.content.textBetween(0,t.content.size,`
|
|
188
188
|
`);return/\s/.test(n)}):!1}function CD(e){return()=>{let t=e.state.selection.$anchor.pos,{top:n,right:r,bottom:i,left:a}=e.view.coordsAtPos(t);try{return new DOMRect(a,n,r-a,i-n)}catch{return null}}}function wD(e,t,n,r){return n?()=>{let n=r.getState(e.state)?.decorationId;return t.dom.querySelector(`[data-decoration-id="${n}"]`)?.getBoundingClientRect()||null}:CD(e)}function TD({match:e,dismissedRange:t,state:n,transaction:r,editor:i,shouldResetDismissed:a,effectiveAllowSpaces:o}){return a?.({editor:i,state:n,range:t,match:e,transaction:r,allowSpaces:o})?!1:o?e.range.from===t.from:e.range.from===t.from&&!SD(r)}function ED({view:e,pluginKeyRef:t}){let n=e.state.tr.setMeta(t,{exit:!0});e.dispatch(n)}function DD({pluginKey:e,decorationTag:t,decorationClass:n,decorationContent:r,decorationEmptyClass:i,renderer:a,dispatchExit:o}){return{handleKeyDown(t,n){var r;let i=e.getState(t.state);return i.active?n.key===`Escape`||n.key===`Esc`?((r=a?.onKeyDown)==null||r.call(a,{view:t,event:n,range:i.range}),o(t),!0):(a?.onKeyDown)?.call(a,{view:t,event:n,range:i.range})||!1:!1},decorations(a){let{active:o,range:s,decorationId:c,query:l}=e.getState(a);if(!o)return null;let u=!l?.length,d=[n];return u&&d.push(i),I.create(a.doc,[Zs.inline(s.from,s.to,{nodeName:t,class:d.join(` `),"data-decoration-id":c||void 0,"data-decoration-content":r})])}}}function OD({editor:e,char:t,effectiveAllowSpaces:n,allowToIncludeChar:r,allowedPrefixes:i,startOfLine:a,findSuggestionMatch:o,allow:s,shouldShow:c,shouldKeepDismissed:l,pluginKey:u}){return{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1,dismissedRange:null}},apply(d,f,p,m){let{isEditable:h}=e,{composing:g}=e.view,{selection:_}=d,{empty:v,from:y}=_,b={...f},x=d.getMeta(u);if(x&&x.exit)return b.active=!1,b.decorationId=null,b.range={from:0,to:0},b.query=null,b.text=null,b.dismissedRange=f.active?{...f.range}:f.dismissedRange,b;if(b.composing=g,d.docChanged&&b.dismissedRange!==null&&(b.dismissedRange={from:d.mapping.map(b.dismissedRange.from),to:d.mapping.map(b.dismissedRange.to)}),h&&(v||e.view.composing)){(y<f.range.from||y>f.range.to)&&!g&&!f.composing&&(b.active=!1);let u=o({char:t,allowSpaces:n,allowToIncludeChar:r,allowedPrefixes:i,startOfLine:a,$position:_.$from}),p=`id_${Math.floor(Math.random()*4294967295)}`;u&&s({editor:e,state:m,range:u.range,isActive:f.active})&&(!c||c({editor:e,range:u.range,query:u.query,text:u.text,transaction:d}))?(b.dismissedRange!==null&&!l({match:u,dismissedRange:b.dismissedRange,state:m,transaction:d})&&(b.dismissedRange=null),b.dismissedRange===null?(b.active=!0,b.decorationId=f.decorationId||p,b.range=u.range,b.query=u.query,b.text=u.text):b.active=!1):(u||(b.dismissedRange=null),b.active=!1)}else b.active=!1;return b.active||(b.decorationId=null,b.range={from:0,to:0},b.query=null,b.text=null),b}}}function kD({editor:e,items:t}){let n=null,r=null,i=null,a=()=>{r!==null&&(clearTimeout(r),r=null),i?.(),i=null},o=e=>new Promise(t=>{i=t,r=setTimeout(()=>{r=null;let e=i;i=null,e?.()},e)}),s=()=>{n?.abort(),a(),n=null};return{abort:s,fetch:async(r,i)=>{s(),n=new AbortController;let a=n;if(i>0&&await o(i),n!==a||a.signal.aborted)return{status:`aborted`};try{let i=await t({editor:e,query:r,signal:a.signal});return n!==a||a.signal.aborted?{status:`aborted`}:{status:`resolved`,items:i}}catch{return n!==a||a.signal.aborted?{status:`aborted`}:{status:`error`}}}}}function AD({placement:e,offset:t,flip:n,floatingUi:r}){let i=[ee({mainAxis:t.mainAxis??4,crossAxis:t.crossAxis??0})];return n&&i.push(C()),r?.middleware?.length&&i.push(...r.middleware),{placement:e,strategy:r?.strategy??`absolute`,middleware:i}}function jD(e){if(e instanceof HTMLElement)return e;if(typeof e==`string`)try{let t=document.querySelector(e);if(t)return t}catch{return document.body}return document.body}function MD({getReferenceRect:e,contextElement:t,config:n,container:r,dismissOnOutsideClick:i,dismiss:a}){return(o,s={})=>{let c={getBoundingClientRect:()=>e()??new DOMRect,contextElement:t},l=!1,u=!o.isConnected;u&&jD(r).appendChild(o),s.onPosition||(o.style.visibility=`hidden`,o.style.width=`max-content`);let d=x(c,o,()=>{S(c,o,{placement:n.placement,strategy:n.strategy,middleware:n.middleware}).then(({x:e,y:t,placement:n,strategy:r})=>{if(s.onPosition){s.onPosition({x:e,y:t,placement:n,strategy:r});return}Object.assign(o.style,{position:r,left:`${e}px`,top:`${t}px`}),l||(l=!0,o.style.visibility=``)})},s.autoUpdate),f;return i&&(f=e=>{let n=e.target;!(n instanceof Node)||o.contains(n)||t.contains(n)||a()},document.addEventListener(`pointerdown`,f,!0)),()=>{d(),f&&document.removeEventListener(`pointerdown`,f,!0),u&&o.remove()}}}function ND({editor:e,pluginKey:t,items:n,renderer:r,minQueryLength:i,debounce:a,initialItems:o,placement:s,offset:c,container:l,flip:u,floatingUi:d,dismissOnOutsideClick:f,command:p,clientRectFor:m,dispatchExit:h}){let g,_=kD({editor:e,items:n}),v=AD({placement:s,offset:c,flip:u,floatingUi:d});function y(e,t){var n,i,a;switch(e){case`started`:(n=r?.onStart)==null||n.call(r,t);break;case`updated`:(i=r?.onUpdate)==null||i.call(r,t);break;case`stopped`:(a=r?.onExit)==null||a.call(r,t);break;default:break}}return{update:async(n,d)=>{var b,x;let S=t.getState(d),C=t.getState(n.state);if(!S||!C)return;let w=null,ee=S.query!==C.query,te=S.text!==C.text,ne=S.range.from!==C.range.from||S.range.to!==C.range.to,re=ee||te||ne;if(!S.active&&C.active)w=`started`;else if(S.active&&!C.active)w=`stopped`;else if(C.active&&re)w=`updated`;else return;let ie=w===`stopped`?S:C,ae=n.dom.querySelector(`[data-decoration-id="${ie.decorationId}"]`),oe=m(n,ae),se=i===0||(ie.query?ie.query.length>=i:!1),ce=(w===`started`||w===`updated`)&&se;if(g={editor:e,range:ie.range,query:ie.query||``,text:ie.text||``,items:o??[],command:t=>p({editor:e,range:ie.range,props:t}),decorationNode:ae,clientRect:oe,loading:ce,placement:s,offset:{mainAxis:c.mainAxis??4,crossAxis:c.crossAxis??0},container:l,flip:u,floatingUi:v,mount:MD({getReferenceRect:oe,contextElement:n.dom,config:v,container:l,dismissOnOutsideClick:f,dismiss:()=>h(e.view)})},w===`started`&&((b=r?.onBeforeStart)==null||b.call(r,g)),w===`updated`&&((x=r?.onBeforeUpdate)==null||x.call(r,g)),w===`started`&&y(w,g),w===`started`||w===`updated`)if(!ce)_.abort(),g={...g,items:o??[],loading:!1};else{g={...g,items:o??[],loading:!0},w=`updated`,y(w,g);let e=await _.fetch(ie.query||``,a);if(e.status===`aborted`)return;if(!t.getState(n.state)?.active){_.abort();return}g=e.status===`resolved`?{...g,items:e.items,loading:!1}:{...g,loading:!1}}if(w===`stopped`){_.abort(),y(w,g),g=void 0;return}w===`updated`&&y(w,g)},destroy:()=>{var e;_.abort(),g&&((e=r?.onExit)==null||e.call(r,g))}}}var PD=new N(`suggestion`);function FD({pluginKey:e=PD,editor:t,char:n=`@`,allowSpaces:r=!1,allowToIncludeChar:i=!1,allowedPrefixes:a=[` `],startOfLine:o=!1,decorationTag:s=`span`,decorationClass:c=`suggestion`,decorationContent:l=``,decorationEmptyClass:u=`is-empty`,command:d=()=>null,items:f=()=>[],minQueryLength:p=0,debounce:m=0,initialItems:h,placement:g=`bottom-start`,offset:_={},container:v,flip:y=!0,floatingUi:b,dismissOnOutsideClick:x=!0,render:S=()=>({}),allow:C=()=>!0,findSuggestionMatch:w=xD,shouldShow:ee,shouldResetDismissed:te}){let ne=S?.(),re=r&&!i,ie=(n,r)=>wD(t,n,r,e);function ae(e){return TD({...e,editor:t,shouldResetDismissed:te,effectiveAllowSpaces:re})}let oe=t=>ED({view:t,pluginKeyRef:e});return new M({key:e,view:()=>ND({editor:t,pluginKey:e,items:f,renderer:ne,minQueryLength:p,debounce:m,initialItems:h,placement:g,offset:_,container:v,flip:y,floatingUi:b,dismissOnOutsideClick:x,command:d,clientRectFor:ie,dispatchExit:oe}),state:OD({editor:t,char:n,effectiveAllowSpaces:re,allowToIncludeChar:i,allowedPrefixes:a,startOfLine:o,findSuggestionMatch:w,allow:C,shouldShow:ee,shouldKeepDismissed:ae,pluginKey:e}),props:DD({pluginKey:e,decorationTag:s,decorationClass:c,decorationContent:l,decorationEmptyClass:u,renderer:ne,dispatchExit:oe})})}var ID=FD;function LD(e){return V.create({name:`slashMenu`,addProseMirrorPlugins(){return[ID({editor:this.editor,char:`/`,allowedPrefixes:[` `,`
|
|
189
|
-
`],items:({query:t})=>e.filter(t),command:({editor:e,range:t,props:n})=>n.run({editor:e,range:t}),render:()=>{let t=t=>e.open({rect:t.clientRect?.()??null,items:t.items,pick:t.command});return{onStart:t,onUpdate:t,onKeyDown:({event:t})=>e.keyDown(t),onExit:()=>e.close()}}})]}})}function RD(e){return[Xy.configure({link:{openOnClick:!1},underline:!1}),Mv,jv.configure({nested:!0}),sS,Gx,Wx,Ux,lS.configure({inline:!1}),bD.configure({transformPastedText:!0,linkify:!1}),...e.placeholder?[Hy.configure({placeholder:e.placeholder})]:[],...e.slash?[LD(e.slash)]:[]]}var zD=(e,t)=>{let n=e.chain().focus();return t?n.deleteRange(t):n},BD=(e,t)=>({key:`h${e}`,icon:t,run:(t,n)=>zD(t,n).toggleHeading({level:e}).run(),active:t=>t.isActive(`heading`,{level:e})}),VD=[BD(1,se),BD(2,ce),BD(3,le),{key:`bulletList`,icon:f,run:(e,t)=>zD(e,t).toggleBulletList().run(),active:e=>e.isActive(`bulletList`)},{key:`orderedList`,icon:fe,run:(e,t)=>zD(e,t).toggleOrderedList().run(),active:e=>e.isActive(`orderedList`)},{key:`taskList`,icon:h,run:(e,t)=>zD(e,t).toggleTaskList().run(),active:e=>e.isActive(`taskList`)},{key:`blockquote`,icon:pe,run:(e,t)=>zD(e,t).toggleBlockquote().run(),active:e=>e.isActive(`blockquote`)},{key:`codeBlock`,icon:ie,run:(e,t)=>zD(e,t).toggleCodeBlock().run(),active:e=>e.isActive(`codeBlock`)},{key:`horizontalRule`,icon:_,run:(e,t)=>zD(e,t).setHorizontalRule().run()},{key:`table`,icon:ge,run:(e,t)=>zD(e,t).insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),active:e=>e.isActive(`table`)}],Q=s(),$=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web-ui/src/markdown/toolbar.tsx`,HD=(0,T.forwardRef)(({icon:e,label:t,active:n,disabled:r,tone:i,onClick:a,...o},s)=>(0,Q.jsxDEV)(`button`,{ref:s,type:`button`,"aria-label":t,title:t,"aria-pressed":n??!1,disabled:r,onClick:a,...o,className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40 ${i===`danger`?`hover:bg-muted hover:text-destructive`:`hover:bg-muted hover:text-foreground`} ${n?`bg-muted text-primary`:``}`,children:(0,Q.jsxDEV)(e,{size:15},void 0,!1,{fileName:$,lineNumber:66,columnNumber:5},void 0)},void 0,!1,{fileName:$,lineNumber:53,columnNumber:3},void 0));HD.displayName=`ToolButton`;var UD=()=>(0,Q.jsxDEV)(`span`,{className:`mx-0.5 h-5 w-px shrink-0 bg-border`,"aria-hidden":!0},void 0,!1,{fileName:$,lineNumber:71,columnNumber:23},void 0),WD=[{key:`bold`,icon:re,run:e=>e.chain().focus().toggleBold().run(),active:e=>e.isActive(`bold`)},{key:`italic`,icon:de,run:e=>e.chain().focus().toggleItalic().run(),active:e=>e.isActive(`italic`)},{key:`strike`,icon:he,run:e=>e.chain().focus().toggleStrike().run(),active:e=>e.isActive(`strike`)},{key:`code`,icon:p,run:e=>e.chain().focus().toggleCode().run(),active:e=>e.isActive(`code`)}];function GD({editor:e,onDone:t}){let{t:n}=a(),[r,i]=(0,T.useState)(e.getAttributes(`link`).href??``),o=()=>{let n=e.chain().focus().extendMarkRange(`link`);r.trim()===``?n.unsetLink().run():n.setLink({href:r.trim()}).run(),t()};return(0,Q.jsxDEV)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsxDEV)(u,{autoFocus:!0,value:r,placeholder:`https://`,"aria-label":n(`form.mdLink`),onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o()),e.key===`Escape`&&(e.preventDefault(),t())},className:`h-7 flex-1 text-sm`},void 0,!1,{fileName:$,lineNumber:103,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:c,label:n(`actions.save`),onClick:o},void 0,!1,{fileName:$,lineNumber:121,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:ve,label:n(`form.md.unlink`),onClick:()=>{e.chain().focus().extendMarkRange(`link`).unsetLink().run(),t()}},void 0,!1,{fileName:$,lineNumber:122,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:102,columnNumber:5},this)}function KD({editor:e,onDone:t}){let{t:n}=a(),[r,i]=(0,T.useState)(``),[o,s]=(0,T.useState)(``),l=()=>{let n=r.trim();n&&e.chain().focus().setImage({src:n,alt:o.trim()||void 0}).run(),t()};return(0,Q.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,Q.jsxDEV)(u,{autoFocus:!0,value:r,placeholder:`https://… /uploads/…`,"aria-label":n(`form.md.imageUrl`),onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),l()),e.key===`Escape`&&(e.preventDefault(),t())},className:`h-7 min-w-0 flex-1 text-sm`},void 0,!1,{fileName:$,lineNumber:156,columnNumber:7},this),(0,Q.jsxDEV)(u,{value:o,placeholder:n(`form.md.imageAlt`),"aria-label":n(`form.md.imageAlt`),onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),l()),e.key===`Escape`&&(e.preventDefault(),t())},className:`h-7 w-32 text-sm`},void 0,!1,{fileName:$,lineNumber:174,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:c,label:n(`actions.save`),disabled:!r.trim(),onClick:l},void 0,!1,{fileName:$,lineNumber:191,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:155,columnNumber:5},this)}function qD({editor:e}){let{t}=a();return(0,Q.jsxDEV)(Q.Fragment,{children:[(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:205,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:ne,label:t(`form.md.addRow`),onClick:()=>e.chain().focus().addRowAfter().run()},void 0,!1,{fileName:$,lineNumber:206,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:te,label:t(`form.md.addColumn`),onClick:()=>e.chain().focus().addColumnAfter().run()},void 0,!1,{fileName:$,lineNumber:211,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:g,tone:`danger`,label:t(`form.md.deleteRow`),onClick:()=>e.chain().focus().deleteRow().run()},void 0,!1,{fileName:$,lineNumber:216,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:ae,tone:`danger`,label:t(`form.md.deleteColumn`),onClick:()=>e.chain().focus().deleteColumn().run()},void 0,!1,{fileName:$,lineNumber:222,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:oe,tone:`danger`,label:t(`form.md.deleteTable`),onClick:()=>e.chain().focus().deleteTable().run()},void 0,!1,{fileName:$,lineNumber:228,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:204,columnNumber:5},this)}function JD({icon:e,label:t,active:n,open:r,onOpenChange:i,children:a}){return(0,Q.jsxDEV)(v,{open:r,onOpenChange:i,children:[(0,Q.jsxDEV)(d,{render:(0,Q.jsxDEV)(HD,{icon:e,label:t,active:n||r},void 0,!1,{fileName:$,lineNumber:257,columnNumber:31},this)},void 0,!1,{fileName:$,lineNumber:257,columnNumber:7},this),(0,Q.jsxDEV)(m,{align:`start`,className:`w-80 p-2`,children:a},void 0,!1,{fileName:$,lineNumber:258,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:256,columnNumber:5},this)}function YD({editor:e}){let{t}=a(),[n,r]=(0,T.useState)(null),i=vm({editor:e,selector:({editor:e})=>e&&!e.isDestroyed?{marks:WD.map(t=>t.active(e)),blocks:VD.map(t=>t.active?.(e)??!1),link:e.isActive(`link`),table:e.isActive(`table`),canUndo:e.can().undo(),canRedo:e.can().redo()}:{marks:WD.map(()=>!1),blocks:VD.map(()=>!1),link:!1,table:!1,canUndo:!1,canRedo:!1}}),o=e=>(0,Q.jsxDEV)(`div`,{className:`flex items-center gap-0.5`,children:e},void 0,!1,{fileName:$,lineNumber:299,columnNumber:42},this);return(0,Q.jsxDEV)(`div`,{className:`flex flex-col gap-1.5`,children:(0,Q.jsxDEV)(`div`,{className:`-mx-0.5 flex items-center gap-0.5 overflow-x-auto overscroll-x-contain border-b border-border px-0.5 pb-1.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[o((0,Q.jsxDEV)(Q.Fragment,{children:[(0,Q.jsxDEV)(HD,{icon:_e,label:t(`form.md.undo`),disabled:!i.canUndo,onClick:()=>e.chain().focus().undo().run()},void 0,!1,{fileName:$,lineNumber:308,columnNumber:13},this),(0,Q.jsxDEV)(HD,{icon:me,label:t(`form.md.redo`),disabled:!i.canRedo,onClick:()=>e.chain().focus().redo().run()},void 0,!1,{fileName:$,lineNumber:314,columnNumber:13},this)]},void 0,!0,{fileName:$,lineNumber:307,columnNumber:11},this)),(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:322,columnNumber:9},this),o(WD.map((n,r)=>(0,Q.jsxDEV)(HD,{icon:n.icon,label:t(`form.md.${n.key}`),active:i.marks[r],onClick:()=>n.run(e)},n.key,!1,{fileName:$,lineNumber:325,columnNumber:13},this))),(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:334,columnNumber:9},this),o(VD.map((n,r)=>(0,Q.jsxDEV)(HD,{icon:n.icon,label:t(`form.md.${n.key}`),active:i.blocks[r],onClick:()=>n.run(e)},n.key,!1,{fileName:$,lineNumber:337,columnNumber:13},this))),(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:346,columnNumber:9},this),o((0,Q.jsxDEV)(Q.Fragment,{children:[(0,Q.jsxDEV)(JD,{icon:y,label:t(`form.md.link`),active:i.link,open:n===`link`,onOpenChange:e=>r(e?`link`:null),children:(0,Q.jsxDEV)(GD,{editor:e,onDone:()=>r(null)},void 0,!1,{fileName:$,lineNumber:356,columnNumber:15},this)},void 0,!1,{fileName:$,lineNumber:349,columnNumber:13},this),(0,Q.jsxDEV)(JD,{icon:ue,label:t(`form.md.image`),open:n===`image`,onOpenChange:e=>r(e?`image`:null),children:(0,Q.jsxDEV)(KD,{editor:e,onDone:()=>r(null)},void 0,!1,{fileName:$,lineNumber:364,columnNumber:15},this)},void 0,!1,{fileName:$,lineNumber:358,columnNumber:13},this)]},void 0,!0,{fileName:$,lineNumber:348,columnNumber:11},this)),i.table&&(0,Q.jsxDEV)(qD,{editor:e},void 0,!1,{fileName:$,lineNumber:368,columnNumber:25},this)]},void 0,!0,{fileName:$,lineNumber:305,columnNumber:7},this)},void 0,!1,{fileName:$,lineNumber:302,columnNumber:5},this)}var XD=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web-ui/src/MarkdownEditor.tsx`,ZD=e=>e&&!e.isDestroyed?e.storage.markdown:void 0;function QD({value:e,onChange:t,placeholder:n,readonly:r}){let{t:i}=a(),[o,s]=(0,T.useState)(null),c=(0,T.useRef)(null);c.current=o;let l=e=>i(`form.md.${e}`),u=(0,T.useRef)(l);u.current=l;let d=(0,T.useMemo)(()=>({filter:e=>{let t=e.trim().toLowerCase(),n=VD.map(e=>({key:e.key,run:({editor:t,range:n})=>e.run(t,n)}));return t?n.filter(e=>e.key.toLowerCase().includes(t)||u.current(e.key).toLowerCase().includes(t)):n},open:({rect:e,items:t,pick:n})=>s(r=>({rect:e,items:t,pick:n,index:r&&r.index<t.length?r.index:0})),close:()=>s(null),keyDown:e=>{let t=c.current;if(!t)return!1;let n=t.items.length-1;if(e.key===`ArrowDown`)return s({...t,index:t.index>=n?0:t.index+1}),!0;if(e.key===`ArrowUp`)return s({...t,index:t.index<=0?n:t.index-1}),!0;if(e.key===`Enter`){let e=t.items[t.index];return e?(t.pick(e),!0):!1}return e.key===`Escape`?(s(null),!0):!1}}),[]),f=Cm({editable:!r,extensions:RD({placeholder:r?void 0:n,slash:d}),content:e,autofocus:!1,onUpdate:({editor:e})=>{let n=ZD(e);n&&t?.(n.getMarkdown())},editorProps:{attributes:{class:`md-static outline-none`}}});return(0,T.useEffect)(()=>{let t=ZD(f);!f||!t||e!==t.getMarkdown()&&f.commands.setContent(e,{emitUpdate:!1})},[f,e]),!f||f.isDestroyed?null:(0,Q.jsxDEV)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-1.5 md:gap-2`,children:[!r&&(0,Q.jsxDEV)(YD,{editor:f},void 0,!1,{fileName:XD,lineNumber:138,columnNumber:21},this),(0,Q.jsxDEV)(hm,{editor:f,className:`min-h-48 w-full min-w-0 max-w-full flex-1 overflow-y-auto rounded-lg border border-border bg-background px-2 py-1.5 transition-colors focus-within:border-ring md:min-h-64 md:rounded-xl md:px-4 md:py-3`},void 0,!1,{fileName:XD,lineNumber:141,columnNumber:7},this),o&&o.items.length>0&&(0,Q.jsxDEV)(`div`,{role:`listbox`,className:`fixed z-50 max-h-64 w-56 overflow-y-auto rounded-lg border border-border bg-card p-1 shadow-lg`,style:{top:(o.rect?.bottom??0)+4,left:o.rect?.left??0},children:o.items.map((e,t)=>{let n=VD.find(t=>t.key===e.key)?.icon;return(0,Q.jsxDEV)(`button`,{type:`button`,role:`option`,"aria-selected":t===o.index,onMouseEnter:()=>s({...o,index:t}),onClick:()=>o.pick(e),className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm ${t===o.index?`bg-muted text-foreground`:`text-muted-foreground`}`,children:[n&&(0,Q.jsxDEV)(n,{size:15,className:`shrink-0`},void 0,!1,{fileName:XD,lineNumber:165,columnNumber:26},this),l(e.key)]},e.key,!0,{fileName:XD,lineNumber:154,columnNumber:15},this)})},void 0,!1,{fileName:XD,lineNumber:146,columnNumber:9},this)]},void 0,!0,{fileName:XD,lineNumber:137,columnNumber:5},this)}export{QD as default};
|
|
189
|
+
`],items:({query:t})=>e.filter(t),command:({editor:e,range:t,props:n})=>n.run({editor:e,range:t}),render:()=>{let t=t=>e.open({rect:t.clientRect?.()??null,items:t.items,pick:t.command});return{onStart:t,onUpdate:t,onKeyDown:({event:t})=>e.keyDown(t),onExit:()=>e.close()}}})]}})}function RD(e){return[Xy.configure({link:{openOnClick:!1},underline:!1}),Mv,jv.configure({nested:!0}),sS,Gx,Wx,Ux,lS.configure({inline:!1}),bD.configure({transformPastedText:!0,linkify:!1}),...e.placeholder?[Hy.configure({placeholder:e.placeholder})]:[],...e.slash?[LD(e.slash)]:[]]}var zD=(e,t)=>{let n=e.chain().focus();return t?n.deleteRange(t):n},BD=(e,t)=>({key:`h${e}`,icon:t,run:(t,n)=>zD(t,n).toggleHeading({level:e}).run(),active:t=>t.isActive(`heading`,{level:e})}),VD=[BD(1,se),BD(2,ce),BD(3,le),{key:`bulletList`,icon:f,run:(e,t)=>zD(e,t).toggleBulletList().run(),active:e=>e.isActive(`bulletList`)},{key:`orderedList`,icon:fe,run:(e,t)=>zD(e,t).toggleOrderedList().run(),active:e=>e.isActive(`orderedList`)},{key:`taskList`,icon:h,run:(e,t)=>zD(e,t).toggleTaskList().run(),active:e=>e.isActive(`taskList`)},{key:`blockquote`,icon:pe,run:(e,t)=>zD(e,t).toggleBlockquote().run(),active:e=>e.isActive(`blockquote`)},{key:`codeBlock`,icon:ie,run:(e,t)=>zD(e,t).toggleCodeBlock().run(),active:e=>e.isActive(`codeBlock`)},{key:`horizontalRule`,icon:_,run:(e,t)=>zD(e,t).setHorizontalRule().run()},{key:`table`,icon:ge,run:(e,t)=>zD(e,t).insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),active:e=>e.isActive(`table`)}],Q=s(),$=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web-ui/src/markdown/toolbar.tsx`,HD=(0,T.forwardRef)(({icon:e,label:t,active:n,disabled:r,tone:i,onClick:a,...o},s)=>(0,Q.jsxDEV)(`button`,{ref:s,type:`button`,"aria-label":t,title:t,"aria-pressed":n??!1,disabled:r,onClick:a,...o,className:`flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-40 ${i===`danger`?`hover:bg-muted hover:text-destructive`:`hover:bg-muted hover:text-foreground`} ${n?`bg-muted text-primary`:``}`,children:(0,Q.jsxDEV)(e,{size:15},void 0,!1,{fileName:$,lineNumber:66,columnNumber:5},void 0)},void 0,!1,{fileName:$,lineNumber:53,columnNumber:3},void 0));HD.displayName=`ToolButton`;var UD=()=>(0,Q.jsxDEV)(`span`,{className:`mx-0.5 h-5 w-px shrink-0 bg-border`,"aria-hidden":!0},void 0,!1,{fileName:$,lineNumber:71,columnNumber:23},void 0),WD=[{key:`bold`,icon:re,run:e=>e.chain().focus().toggleBold().run(),active:e=>e.isActive(`bold`)},{key:`italic`,icon:de,run:e=>e.chain().focus().toggleItalic().run(),active:e=>e.isActive(`italic`)},{key:`strike`,icon:he,run:e=>e.chain().focus().toggleStrike().run(),active:e=>e.isActive(`strike`)},{key:`code`,icon:p,run:e=>e.chain().focus().toggleCode().run(),active:e=>e.isActive(`code`)}];function GD({editor:e,onDone:t}){let{t:n}=a(),[r,i]=(0,T.useState)(e.getAttributes(`link`).href??``),o=()=>{let n=e.chain().focus().extendMarkRange(`link`);r.trim()===``?n.unsetLink().run():n.setLink({href:r.trim()}).run(),t()};return(0,Q.jsxDEV)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsxDEV)(u,{autoFocus:!0,value:r,placeholder:`https://`,"aria-label":n(`form.mdLink`),onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o()),e.key===`Escape`&&(e.preventDefault(),t())},className:`h-7 flex-1 text-sm`},void 0,!1,{fileName:$,lineNumber:103,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:c,label:n(`actions.save`),onClick:o},void 0,!1,{fileName:$,lineNumber:121,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:ve,label:n(`form.md.unlink`),onClick:()=>{e.chain().focus().extendMarkRange(`link`).unsetLink().run(),t()}},void 0,!1,{fileName:$,lineNumber:122,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:102,columnNumber:5},this)}function KD({editor:e,onDone:t}){let{t:n}=a(),[r,i]=(0,T.useState)(``),[o,s]=(0,T.useState)(``),l=()=>{let n=r.trim();n&&e.chain().focus().setImage({src:n,alt:o.trim()||void 0}).run(),t()};return(0,Q.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,Q.jsxDEV)(u,{autoFocus:!0,value:r,placeholder:`https://… /uploads/…`,"aria-label":n(`form.md.imageUrl`),onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),l()),e.key===`Escape`&&(e.preventDefault(),t())},className:`h-7 min-w-0 flex-1 text-sm`},void 0,!1,{fileName:$,lineNumber:156,columnNumber:7},this),(0,Q.jsxDEV)(u,{value:o,placeholder:n(`form.md.imageAlt`),"aria-label":n(`form.md.imageAlt`),onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),l()),e.key===`Escape`&&(e.preventDefault(),t())},className:`h-7 w-32 text-sm`},void 0,!1,{fileName:$,lineNumber:174,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:c,label:n(`actions.save`),disabled:!r.trim(),onClick:l},void 0,!1,{fileName:$,lineNumber:191,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:155,columnNumber:5},this)}function qD({editor:e}){let{t}=a();return(0,Q.jsxDEV)(Q.Fragment,{children:[(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:205,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:ne,label:t(`form.md.addRow`),onClick:()=>e.chain().focus().addRowAfter().run()},void 0,!1,{fileName:$,lineNumber:206,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:te,label:t(`form.md.addColumn`),onClick:()=>e.chain().focus().addColumnAfter().run()},void 0,!1,{fileName:$,lineNumber:211,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:g,tone:`danger`,label:t(`form.md.deleteRow`),onClick:()=>e.chain().focus().deleteRow().run()},void 0,!1,{fileName:$,lineNumber:216,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:ae,tone:`danger`,label:t(`form.md.deleteColumn`),onClick:()=>e.chain().focus().deleteColumn().run()},void 0,!1,{fileName:$,lineNumber:222,columnNumber:7},this),(0,Q.jsxDEV)(HD,{icon:oe,tone:`danger`,label:t(`form.md.deleteTable`),onClick:()=>e.chain().focus().deleteTable().run()},void 0,!1,{fileName:$,lineNumber:228,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:204,columnNumber:5},this)}function JD({icon:e,label:t,active:n,open:r,onOpenChange:i,children:a}){return(0,Q.jsxDEV)(v,{open:r,onOpenChange:i,children:[(0,Q.jsxDEV)(d,{render:(0,Q.jsxDEV)(HD,{icon:e,label:t,active:n||r},void 0,!1,{fileName:$,lineNumber:257,columnNumber:31},this)},void 0,!1,{fileName:$,lineNumber:257,columnNumber:7},this),(0,Q.jsxDEV)(m,{align:`start`,className:`w-80 p-2`,children:a},void 0,!1,{fileName:$,lineNumber:258,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:256,columnNumber:5},this)}function YD({editor:e}){let{t}=a(),[n,r]=(0,T.useState)(null),i=vm({editor:e,selector:({editor:e})=>e&&!e.isDestroyed?{marks:WD.map(t=>t.active(e)),blocks:VD.map(t=>t.active?.(e)??!1),link:e.isActive(`link`),table:e.isActive(`table`),canUndo:e.can().undo(),canRedo:e.can().redo()}:{marks:WD.map(()=>!1),blocks:VD.map(()=>!1),link:!1,table:!1,canUndo:!1,canRedo:!1}}),o=e=>(0,Q.jsxDEV)(`div`,{className:`flex items-center gap-0.5`,children:e},void 0,!1,{fileName:$,lineNumber:299,columnNumber:42},this);return(0,Q.jsxDEV)(`div`,{className:`flex flex-col gap-1.5`,children:(0,Q.jsxDEV)(`div`,{className:`-mx-0.5 flex items-center gap-0.5 overflow-x-auto overscroll-x-contain border-b border-border px-0.5 pb-1.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[o((0,Q.jsxDEV)(Q.Fragment,{children:[(0,Q.jsxDEV)(HD,{icon:_e,label:t(`form.md.undo`),disabled:!i.canUndo,onClick:()=>e.chain().focus().undo().run()},void 0,!1,{fileName:$,lineNumber:308,columnNumber:13},this),(0,Q.jsxDEV)(HD,{icon:me,label:t(`form.md.redo`),disabled:!i.canRedo,onClick:()=>e.chain().focus().redo().run()},void 0,!1,{fileName:$,lineNumber:314,columnNumber:13},this)]},void 0,!0,{fileName:$,lineNumber:307,columnNumber:11},this)),(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:322,columnNumber:9},this),o(WD.map((n,r)=>(0,Q.jsxDEV)(HD,{icon:n.icon,label:t(`form.md.${n.key}`),active:i.marks[r],onClick:()=>n.run(e)},n.key,!1,{fileName:$,lineNumber:325,columnNumber:13},this))),(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:334,columnNumber:9},this),o(VD.map((n,r)=>(0,Q.jsxDEV)(HD,{icon:n.icon,label:t(`form.md.${n.key}`),active:i.blocks[r],onClick:()=>n.run(e)},n.key,!1,{fileName:$,lineNumber:337,columnNumber:13},this))),(0,Q.jsxDEV)(UD,{},void 0,!1,{fileName:$,lineNumber:346,columnNumber:9},this),o((0,Q.jsxDEV)(Q.Fragment,{children:[(0,Q.jsxDEV)(JD,{icon:y,label:t(`form.md.link`),active:i.link,open:n===`link`,onOpenChange:e=>r(e?`link`:null),children:(0,Q.jsxDEV)(GD,{editor:e,onDone:()=>r(null)},void 0,!1,{fileName:$,lineNumber:356,columnNumber:15},this)},void 0,!1,{fileName:$,lineNumber:349,columnNumber:13},this),(0,Q.jsxDEV)(JD,{icon:ue,label:t(`form.md.image`),open:n===`image`,onOpenChange:e=>r(e?`image`:null),children:(0,Q.jsxDEV)(KD,{editor:e,onDone:()=>r(null)},void 0,!1,{fileName:$,lineNumber:364,columnNumber:15},this)},void 0,!1,{fileName:$,lineNumber:358,columnNumber:13},this)]},void 0,!0,{fileName:$,lineNumber:348,columnNumber:11},this)),i.table&&(0,Q.jsxDEV)(qD,{editor:e},void 0,!1,{fileName:$,lineNumber:368,columnNumber:25},this)]},void 0,!0,{fileName:$,lineNumber:305,columnNumber:7},this)},void 0,!1,{fileName:$,lineNumber:302,columnNumber:5},this)}var XD=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web-ui/src/MarkdownEditor.tsx`,ZD=e=>e&&!e.isDestroyed?e.storage.markdown:void 0;function QD({value:e,onChange:t,placeholder:n,readonly:r}){let{t:i}=a(),[o,s]=(0,T.useState)(null),c=(0,T.useRef)(null);c.current=o;let l=e=>i(`form.md.${e}`),u=(0,T.useRef)(l);u.current=l;let d=(0,T.useMemo)(()=>({filter:e=>{let t=e.trim().toLowerCase(),n=VD.map(e=>({key:e.key,run:({editor:t,range:n})=>e.run(t,n)}));return t?n.filter(e=>e.key.toLowerCase().includes(t)||u.current(e.key).toLowerCase().includes(t)):n},open:({rect:e,items:t,pick:n})=>s(r=>({rect:e,items:t,pick:n,index:r&&r.index<t.length?r.index:0})),close:()=>s(null),keyDown:e=>{let t=c.current;if(!t)return!1;let n=t.items.length-1;if(e.key===`ArrowDown`)return s({...t,index:t.index>=n?0:t.index+1}),!0;if(e.key===`ArrowUp`)return s({...t,index:t.index<=0?n:t.index-1}),!0;if(e.key===`Enter`){let e=t.items[t.index];return e?(t.pick(e),!0):!1}return e.key===`Escape`?(s(null),!0):!1}}),[]),f=Cm({editable:!r,extensions:RD({placeholder:r?void 0:n,slash:d}),content:e,autofocus:!1,onUpdate:({editor:e})=>{let n=ZD(e);n&&t?.(n.getMarkdown())},editorProps:{attributes:{class:`md-static outline-none`}}});return(0,T.useEffect)(()=>{let t=ZD(f);!f||!t||e!==t.getMarkdown()&&f.commands.setContent(e,{emitUpdate:!1})},[f,e]),!f||f.isDestroyed?null:(0,Q.jsxDEV)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-1.5 md:gap-2`,children:[!r&&(0,Q.jsxDEV)(YD,{editor:f},void 0,!1,{fileName:XD,lineNumber:138,columnNumber:21},this),(0,Q.jsxDEV)(hm,{editor:f,className:`min-h-48 w-full min-w-0 max-w-full flex-1 overflow-y-auto bg-transparent px-2 py-1.5 transition-colors focus-within:border-ring md:min-h-64 md:px-4 md:py-3 ${r?`border-t border-border`:`border-0`}`},void 0,!1,{fileName:XD,lineNumber:139,columnNumber:7},this),o&&o.items.length>0&&(0,Q.jsxDEV)(`div`,{role:`listbox`,className:`fixed z-50 max-h-64 w-56 overflow-y-auto rounded-lg border border-border bg-card p-1 shadow-lg`,style:{top:(o.rect?.bottom??0)+4,left:o.rect?.left??0},children:o.items.map((e,t)=>{let n=VD.find(t=>t.key===e.key)?.icon;return(0,Q.jsxDEV)(`button`,{type:`button`,role:`option`,"aria-selected":t===o.index,onMouseEnter:()=>s({...o,index:t}),onClick:()=>o.pick(e),className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm ${t===o.index?`bg-muted text-foreground`:`text-muted-foreground`}`,children:[n&&(0,Q.jsxDEV)(n,{size:15,className:`shrink-0`},void 0,!1,{fileName:XD,lineNumber:163,columnNumber:26},this),l(e.key)]},e.key,!0,{fileName:XD,lineNumber:152,columnNumber:15},this)})},void 0,!1,{fileName:XD,lineNumber:144,columnNumber:9},this)]},void 0,!0,{fileName:XD,lineNumber:137,columnNumber:5},this)}export{QD as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{a as r,d as i,t as a,u as o}from"./react-vendor-CzSUaSLk.js";import{o as s,t as c}from"./list-cache-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{a as r,d as i,t as a,u as o}from"./react-vendor-CzSUaSLk.js";import{o as s,t as c}from"./list-cache-wPeWyKg1.js";import{c as l}from"./api-QNHQU9to.js";var u=e(t(),1),d=a(),f=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/record/NewRecordView.tsx`,p=new Map;function m(e,t){let n=`${e}/${t}`,r=p.get(n);if(r)return r;let i=l(e,t,{}).finally(()=>{p.delete(n)});return p.set(n,i),i}function h(){let{t:e}=n(),{library:t,shelf:a}=i(),l=o(),p=s().flatMap(e=>e.shelves).find(e=>e.library===t&&e.shelf===a),[h,g]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{if(!p||p.standalone===!1||p.single)return;let e=`${p.library}/${p.shelf}`,t=!0;return m(p.library,p.shelf).then(n=>{if(t){if(!n.ok||n.row?.id==null){g(!0);return}c(e),l(`/${e}/${String(n.row.id)}`,{replace:!0})}}),()=>{t=!1}},[p,l]),!p||p.standalone===!1?(0,d.jsxDEV)(`div`,{className:`p-6 text-muted-foreground`,children:e(`common.notFound`)},void 0,!1,{fileName:f,lineNumber:79,columnNumber:44},this):p.single?(0,d.jsxDEV)(r,{to:`/${t}/${a}`,replace:!0},void 0,!1,{fileName:f,lineNumber:84,columnNumber:24},this):h?(0,d.jsxDEV)(`div`,{className:`p-6 text-destructive text-sm`,role:`alert`,children:e(`common.error`)},void 0,!1,{fileName:f,lineNumber:88,columnNumber:7},this):(0,d.jsxDEV)(`div`,{className:`flex items-center justify-center py-20 text-muted-foreground text-sm`,children:e(`common.loading`)},void 0,!1,{fileName:f,lineNumber:94,columnNumber:5},this)}export{h as NewRecordView};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{d as r,t as i}from"./react-vendor-CzSUaSLk.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{d as r,t as i}from"./react-vendor-CzSUaSLk.js";import{Cr as a}from"./src-CheiTWox.js";import{t as o}from"./SettingsForm-C-xB5cdD.js";var s=e(t(),1),c=i(),l=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/PluginSettingsPage.tsx`;function u(){let{groupId:e}=r(),{t}=n(),[i,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(!0);if((0,s.useEffect)(()=>{let t=!1;return f(!0),fetch(`/api/settings`).then(e=>e.ok?e.json():[]).then(n=>{t||(u(n.find(t=>t.id===e)??null),f(!1))}).catch(()=>{t||(u(null),f(!1))}),()=>{t=!0}},[e]),d)return(0,c.jsxDEV)(a,{children:(0,c.jsxDEV)(`p`,{className:`text-muted-foreground`,children:t(`plugins.loading`)},void 0,!1,{fileName:l,lineNumber:44,columnNumber:9},this)},void 0,!1,{fileName:l,lineNumber:43,columnNumber:7},this);if(!i||i.fields.length===0)return(0,c.jsxDEV)(a,{children:(0,c.jsxDEV)(`p`,{className:`text-muted-foreground`,children:t(`common.notFound`)},void 0,!1,{fileName:l,lineNumber:52,columnNumber:9},this)},void 0,!1,{fileName:l,lineNumber:51,columnNumber:7},this);async function p(){let t=await fetch(`/api/settings/${e}`);return t.ok?t.json():{}}async function m(t,n){let r=await fetch(`/api/settings/${e}`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify({[t]:n})});return r.ok?{ok:!0,row:(await r.json()).row??{}}:r.status===422?{ok:!1,status:422,issues:(await r.json()).issues}:{ok:!1,status:r.status}}return(0,c.jsxDEV)(o,{fields:i.fields,recordCtx:{library:``,shelf:e??``,recordId:`settings`},load:p,commit:m,title:t(i.label,{defaultValue:e??``}),overline:t(`settings.title`)},void 0,!1,{fileName:l,lineNumber:86,columnNumber:5},this)}export{u as PluginSettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{Dt as i,
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{Dt as i,Et as a,Ht as o,Jn as s,_ as c,br as l,bt as u,vt as d,xr as f,yt as p}from"./src-CheiTWox.js";import{o as m}from"./shelf-DjiUBfgQ.js";var h=e(t(),1),g=r(),_=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsForm.tsx`;function v(e){let t=`${e.recordCtx.library}/${e.recordCtx.shelf}/${e.recordCtx.recordId}`;return(0,g.jsxDEV)(y,{...e},t,!1,{fileName:_,lineNumber:38,columnNumber:10},this)}function y(e){let{t}=n(),r=(0,h.useMemo)(()=>m(e.fields),[e.fields]),[v,y]=(0,h.useState)({}),b=(0,h.useRef)(v);(0,h.useEffect)(()=>{b.current=v},[v]);let[x,S]=(0,h.useState)({}),[C,w]=(0,h.useState)(null),T=p(t),E=e=>x[e.join(`.`)];function D(e){let t={};for(let[n,i]of r)t[n]=e[n]??i.default??(i.prim!==`checkbox`&&``);return t}(0,h.useEffect)(()=>{let n=!0;return e.load().then(e=>n&&y(D(e))).catch(()=>n&&w(t(`common.loadError`))),()=>{n=!1}},[]);async function O(n,r){let i=b.current[n];S(e=>d(e,n)),y(e=>({...e,[n]:r}));let a=await e.commit(n,r);if(a.ok){y(D(a.row));return}y(e=>({...e,[n]:i}));let o=a.issues??[];S(e=>({...d(e,n),...u(o,T)}));let s=o.find(e=>e.field===n)??o[0];return s?T(s.code,s.params):t(`validation.server`)}return(0,g.jsxDEV)(f,{children:(0,g.jsxDEV)(i,{children:(0,g.jsxDEV)(`div`,{className:`flex flex-col`,children:[(0,g.jsxDEV)(o,{overline:e.overline,title:e.title,actions:(0,g.jsxDEV)(l,{},void 0,!1,{fileName:_,lineNumber:112,columnNumber:78},this)},void 0,!1,{fileName:_,lineNumber:112,columnNumber:11},this),(0,g.jsxDEV)(a,{children:C?(0,g.jsxDEV)(`div`,{className:`mx-auto w-full max-w-7xl px-5 py-8 md:px-8 md:py-10`,children:(0,g.jsxDEV)(s,{tone:`danger`,children:C},void 0,!1,{fileName:_,lineNumber:119,columnNumber:17},this)},void 0,!1,{fileName:_,lineNumber:118,columnNumber:15},this):(0,g.jsxDEV)(c,{fields:e.fields,values:v,recordCtx:e.recordCtx,onCommit:O,errorAt:E,children:e.footer},void 0,!1,{fileName:_,lineNumber:122,columnNumber:15},this)},void 0,!1,{fileName:_,lineNumber:116,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:109,columnNumber:9},this)},void 0,!1,{fileName:_,lineNumber:108,columnNumber:7},this)},void 0,!1,{fileName:_,lineNumber:107,columnNumber:5},this)}export{v as t};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-CzSUaSLk.js";import{Cr as a,Ht as o,Jn as s,Ut as c,_n as l,hr as u,nr as d,pr as f,wr as p}from"./src-CheiTWox.js";import{t as ee}from"./ThemeSwitcher-BJRcZMR7.js";import{l as m}from"./phone-input-8QtHMHO_.js";import{A as h,I as g,N as _,P as v,h as y,y as b}from"./api-QNHQU9to.js";import{n as x}from"./auth-context-CoCE5oPD.js";import{n as S,t as C}from"./plugin-label-CfdhA4_L.js";var w=e(t(),1),T=i(),E=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`,D=null,O=null;function k(){D=null}function A(e=!1){if(!e&&D)return Promise.resolve(D);if(!e&&O)return O;let t=Promise.all([b(e?{refresh:!0}:void 0),y(e?{refresh:!0}:void 0)]).then(([e,t])=>{let n={plugins:e,runtime:t,checkedAt:Date.now()};return D=n,n});return e||(O=t,t.then(()=>{O===t&&(O=null)},()=>{O===t&&(O=null)})),t}async function j(){let e=Date.now();for(;Date.now()-e<6e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}function M(){let{t:e}=n(),{role:t}=x(),i=t===`admin`,[y,b]=(0,w.useState)(()=>D?.plugins??[]),[O,M]=(0,w.useState)(()=>D===null),[P,F]=(0,w.useState)(()=>D?.checkedAt??null),[I,L]=(0,w.useState)(null),[R,z]=(0,w.useState)(!1),B=e=>I===e||I===`*`,[V,H]=(0,w.useState)(()=>D?.runtime??null),U=y.filter(e=>e.latestVersion&&S(e.latestVersion,e.installedVersion)),W=!!(V?.latestVersion&&V.installedVersion&&S(V.latestVersion,V.installedVersion)),G=U.length+ +!!W,[K,q]=(0,w.useState)(null),[J,Y]=(0,w.useState)(!1),X=t=>{let n=y.find(e=>e.id===t);return n?C(e,n):t},Z={has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},Q=(e=!1)=>A(e).then(({plugins:e,runtime:t,checkedAt:n})=>{b(e),H(t),F(n),M(!1)});(0,w.useEffect)(()=>{Q()},[]);async function $(){z(!0),q(null);try{await Q(!0)}catch{q(e(`plugins.updateCheckError`))}finally{z(!1)}}async function te(t){L(t.id),q(null);let n=await h(t.id,!t.enabled);if(!n.ok){L(null),q(Z[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function ne(t){if(!t.latestVersion||!await d({title:e(`plugins.updateTitle`,{from:t.installedVersion,to:t.latestVersion}),description:e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion}),confirmLabel:e(`plugins.updateButton`)}))return;L(t.id),q(null);let n=await v(t.id);if(!n.ok){L(null),q(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}Y(!0),await j()?(k(),window.location.reload()):(L(null),q(e(`plugins.restartTimeout`)))}async function re(){if(G===0)return;let t=U.map(t=>`${C(e,t)}: v${t.installedVersion} → v${t.latestVersion}`);W&&t.push(`${e(`plugins.runtimeLabel`)}: v${V.installedVersion} → v${V.latestVersion}`);let n=t.join(`
|
|
2
|
+
`);if(!await d({title:e(`plugins.updateAllButton`,{count:G}),description:e(`plugins.confirmUpdateAll`,{count:G,list:n}),confirmLabel:e(`plugins.updateButton`)}))return;L(`*`),q(null);let r=await _();if(!r.ok){L(null),q(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}Y(!0),await j()?(k(),window.location.reload()):(L(null),q(e(`plugins.restartTimeout`)))}let ie=W;async function ae(){let t=[];if(W&&t.push(`${e(`plugins.runtimeLabel`)}: v${V.installedVersion} → v${V.latestVersion}`),t.length===0||!await d({title:e(`plugins.updateAllButton`,{count:t.length}),description:e(`plugins.confirmUpdateAll`,{count:t.length,list:t.join(`
|
|
3
|
+
`)}),confirmLabel:e(`plugins.updateButton`)}))return;L(`*`),q(null);let n=await g();if(!n.ok){L(null),q(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}Y(!0),await j()?(k(),window.location.reload()):(L(null),q(e(`plugins.restartTimeout`)))}return(0,T.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,T.jsxDEV)(o,{overline:e(`dashboard.title`),title:e(`settings.title`)},void 0,!1,{fileName:E,lineNumber:291,columnNumber:7},this),(0,T.jsxDEV)(a,{children:[(0,T.jsxDEV)(`section`,{className:`mb-6`,children:[(0,T.jsxDEV)(`h2`,{className:`mb-1 ${c}`,children:e(`settings.appearance`)},void 0,!1,{fileName:E,lineNumber:294,columnNumber:11},this),(0,T.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-2`,children:(0,T.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,T.jsxDEV)(ee,{},void 0,!1,{fileName:E,lineNumber:299,columnNumber:15},this)},void 0,!1,{fileName:E,lineNumber:298,columnNumber:13},this)},void 0,!1,{fileName:E,lineNumber:297,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:293,columnNumber:9},this),(0,T.jsxDEV)(`section`,{className:`mb-6`,children:[(0,T.jsxDEV)(`h2`,{className:`mb-1 ${c}`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:E,lineNumber:306,columnNumber:11},this),(0,T.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,T.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,T.jsxDEV)(`span`,{className:`font-semibold text-foreground`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:E,lineNumber:309,columnNumber:15},this)},void 0,!1,{fileName:E,lineNumber:308,columnNumber:13},this),(0,T.jsxDEV)(m,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,T.jsxDEV)(r,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,T.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:313,columnNumber:17},this)},void 0,!1,{fileName:E,lineNumber:312,columnNumber:15},this)},void 0,!1,{fileName:E,lineNumber:311,columnNumber:13},this)]},void 0,!0,{fileName:E,lineNumber:307,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:305,columnNumber:9},this),i&&(0,T.jsxDEV)(T.Fragment,{children:[(0,T.jsxDEV)(`section`,{className:`mb-6`,children:[(0,T.jsxDEV)(`h2`,{className:`mb-1 min-w-0 font-sans text-[11px] font-medium tracking-wide text-muted-foreground`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:E,lineNumber:323,columnNumber:15},this),(0,T.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted-foreground`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:E,lineNumber:324,columnNumber:15},this),(0,T.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,T.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,T.jsxDEV)(`span`,{className:`font-semibold text-foreground`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:E,lineNumber:327,columnNumber:19},this)},void 0,!1,{fileName:E,lineNumber:326,columnNumber:17},this),(0,T.jsxDEV)(m,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,T.jsxDEV)(r,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,T.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:331,columnNumber:21},this)},void 0,!1,{fileName:E,lineNumber:330,columnNumber:19},this)},void 0,!1,{fileName:E,lineNumber:329,columnNumber:17},this)]},void 0,!0,{fileName:E,lineNumber:325,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:322,columnNumber:13},this),(0,T.jsxDEV)(`section`,{className:`mb-6`,children:[(0,T.jsxDEV)(`h2`,{className:`mb-1 min-w-0 font-sans text-[11px] font-medium tracking-wide text-muted-foreground`,children:e(`settings.diagnosticsTitle`)},void 0,!1,{fileName:E,lineNumber:338,columnNumber:15},this),(0,T.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted-foreground`,children:e(`settings.diagnosticsDescription`)},void 0,!1,{fileName:E,lineNumber:339,columnNumber:15},this),(0,T.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,T.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,T.jsxDEV)(`span`,{className:`font-semibold text-foreground`,children:e(`diagnostics.title`)},void 0,!1,{fileName:E,lineNumber:342,columnNumber:19},this)},void 0,!1,{fileName:E,lineNumber:341,columnNumber:17},this),(0,T.jsxDEV)(m,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,T.jsxDEV)(r,{to:`/settings/diagnostics`,title:e(`diagnostics.title`),"aria-label":e(`diagnostics.title`),children:(0,T.jsxDEV)(p,{name:`lucide:activity`,size:16},void 0,!1,{fileName:E,lineNumber:346,columnNumber:21},this)},void 0,!1,{fileName:E,lineNumber:345,columnNumber:19},this)},void 0,!1,{fileName:E,lineNumber:344,columnNumber:17},this)]},void 0,!0,{fileName:E,lineNumber:340,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:337,columnNumber:13},this),(0,T.jsxDEV)(`section`,{children:[(0,T.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,T.jsxDEV)(`h2`,{className:`min-w-0 font-sans text-[11px] font-medium tracking-wide text-muted-foreground`,children:e(`settings.componentsTitle`)},void 0,!1,{fileName:E,lineNumber:355,columnNumber:17},this),(0,T.jsxDEV)(m,{variant:`ghost`,size:`sm`,type:`button`,disabled:I!==null||R,onClick:$,title:e(`plugins.checkUpdates`),className:`shrink-0 border border-border`,children:[(0,T.jsxDEV)(p,{name:`lucide:refresh-cw`,size:14,className:R?`animate-spin`:void 0},void 0,!1,{fileName:E,lineNumber:365,columnNumber:19},this),e(R?`plugins.checkingUpdates`:`plugins.checkUpdates`)]},void 0,!0,{fileName:E,lineNumber:356,columnNumber:17},this),G>0&&(0,T.jsxDEV)(m,{size:`sm`,type:`button`,disabled:I!==null,onClick:re,variant:`accentOutline`,className:`shrink-0`,children:e(`plugins.updateAllButton`,{count:G})},void 0,!1,{fileName:E,lineNumber:369,columnNumber:19},this)]},void 0,!0,{fileName:E,lineNumber:354,columnNumber:15},this),(0,T.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted-foreground`,children:e(`settings.componentsDescription`)},void 0,!1,{fileName:E,lineNumber:381,columnNumber:15},this),!O&&P!==null&&(0,T.jsxDEV)(`p`,{className:`mb-3 text-xs text-muted-foreground`,"aria-live":`polite`,children:[G>0?e(`plugins.updatesAvailable`,{count:G}):e(`plugins.noUpdates`),` `,e(`plugins.lastChecked`,{time:new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(P)})]},void 0,!0,{fileName:E,lineNumber:383,columnNumber:17},this),O?(0,T.jsxDEV)(`p`,{className:`text-muted-foreground`,children:e(`plugins.loading`)},void 0,!1,{fileName:E,lineNumber:394,columnNumber:17},this):(0,T.jsxDEV)(T.Fragment,{children:[J&&(0,T.jsxDEV)(s,{tone:`info`,className:`mb-5`,children:[e(`plugins.restartBannerBefore`),(0,T.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:E,lineNumber:400,columnNumber:23},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:E,lineNumber:398,columnNumber:21},this),K&&(0,T.jsxDEV)(s,{tone:`danger`,className:`mb-5`,children:K},void 0,!1,{fileName:E,lineNumber:405,columnNumber:21},this),(0,T.jsxDEV)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-card`,children:[(0,T.jsxDEV)(`div`,{className:`flex flex-col gap-3 border-b border-border px-4 py-3 sm:flex-row sm:items-center sm:gap-4`,children:[(0,T.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsxDEV)(`span`,{className:`font-semibold text-foreground`,children:e(`core.settings.label`)},void 0,!1,{fileName:E,lineNumber:415,columnNumber:27},this),V?.installedVersion&&(0,T.jsxDEV)(u,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,V.installedVersion]},void 0,!0,{fileName:E,lineNumber:417,columnNumber:29},this),ie&&(0,T.jsxDEV)(m,{size:`sm`,type:`button`,disabled:I!==null,onClick:ae,title:e(`settings.systemUpdateTitle`),variant:`accentOutline`,className:`shrink-0`,children:e(`plugins.updateButton`)},void 0,!1,{fileName:E,lineNumber:422,columnNumber:29},this)]},void 0,!0,{fileName:E,lineNumber:414,columnNumber:25},this),(0,T.jsxDEV)(`div`,{className:`text-xs text-muted-foreground mt-0.5 truncate`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:E,lineNumber:435,columnNumber:25},this)]},void 0,!0,{fileName:E,lineNumber:413,columnNumber:23},this),(0,T.jsxDEV)(`div`,{className:`flex w-full shrink-0 justify-end border-t border-border pt-3 sm:w-auto sm:border-t-0 sm:pt-0`,children:(0,T.jsxDEV)(m,{variant:`ghost`,size:`sm`,type:`button`,className:`border border-border`,asChild:!0,children:(0,T.jsxDEV)(r,{to:`/settings/system`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,T.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:446,columnNumber:29},this)},void 0,!1,{fileName:E,lineNumber:441,columnNumber:27},this)},void 0,!1,{fileName:E,lineNumber:440,columnNumber:25},this)},void 0,!1,{fileName:E,lineNumber:439,columnNumber:23},this)]},void 0,!0,{fileName:E,lineNumber:412,columnNumber:21},this),y.map(t=>{let n=t.description?e(t.description):``,i=t.enabled?y.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],a=i.length>0,o=a?e(`plugins.blockedByDependents`,{list:i.map(t=>C(e,t)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),s=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(X).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(t=>e(t.label)).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(t=>e(t.label)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,T.jsxDEV)(`div`,{className:`flex flex-col gap-3 border-b border-border px-4 py-3 last:border-b-0 sm:flex-row sm:items-center sm:gap-4`,children:[(0,T.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,T.jsxDEV)(`span`,{className:`font-semibold text-foreground`,children:C(e,t)},void 0,!1,{fileName:E,lineNumber:483,columnNumber:31},this),(0,T.jsxDEV)(N,{plugin:t,busy:B(t.id),onUpdate:()=>ne(t)},void 0,!1,{fileName:E,lineNumber:484,columnNumber:31},this)]},void 0,!0,{fileName:E,lineNumber:482,columnNumber:29},this),n&&(0,T.jsxDEV)(`div`,{className:`text-xs text-muted-foreground mt-0.5 truncate`,children:n},void 0,!1,{fileName:E,lineNumber:487,columnNumber:31},this),(0,T.jsxDEV)(`div`,{className:`text-xs text-muted-foreground mt-0.5 truncate`,children:s},void 0,!1,{fileName:E,lineNumber:489,columnNumber:29},this)]},void 0,!0,{fileName:E,lineNumber:481,columnNumber:27},this),(0,T.jsxDEV)(`div`,{className:`flex w-full shrink-0 items-center justify-end gap-2 border-t border-border pt-3 sm:w-auto sm:border-t-0 sm:pt-0`,children:[t.hasSettings&&(0,T.jsxDEV)(m,{variant:`ghost`,size:`sm`,type:`button`,className:`border border-border`,asChild:!0,children:(0,T.jsxDEV)(r,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`),"aria-label":e(`plugins.settingsTitle`),children:(0,T.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:E,lineNumber:499,columnNumber:35},this)},void 0,!1,{fileName:E,lineNumber:494,columnNumber:33},this)},void 0,!1,{fileName:E,lineNumber:493,columnNumber:31},this),(0,T.jsxDEV)(`span`,{title:o,children:(0,T.jsxDEV)(l,{checked:t.enabled,disabled:B(t.id)||a,onCheckedChange:()=>te(t),title:o},void 0,!1,{fileName:E,lineNumber:506,columnNumber:31},this)},void 0,!1,{fileName:E,lineNumber:505,columnNumber:29},this)]},void 0,!0,{fileName:E,lineNumber:491,columnNumber:27},this)]},t.id,!0,{fileName:E,lineNumber:477,columnNumber:25},this)})]},void 0,!0,{fileName:E,lineNumber:410,columnNumber:19},this)]},void 0,!0,{fileName:E,lineNumber:396,columnNumber:17},this)]},void 0,!0,{fileName:E,lineNumber:353,columnNumber:13},this)]},void 0,!0,{fileName:E,lineNumber:320,columnNumber:11},this)]},void 0,!0,{fileName:E,lineNumber:292,columnNumber:7},this)]},void 0,!0,{fileName:E,lineNumber:290,columnNumber:5},this)}function N({plugin:e,busy:t,onUpdate:r}){let{t:i}=n(),a=!!(e.latestVersion&&S(e.latestVersion,e.installedVersion));return(0,T.jsxDEV)(T.Fragment,{children:[(0,T.jsxDEV)(u,{variant:`secondary`,className:`text-[11px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:E,lineNumber:533,columnNumber:7},this),a&&(0,T.jsxDEV)(m,{size:`sm`,type:`button`,disabled:t,onClick:r,title:i(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),variant:`accentOutline`,className:`shrink-0`,children:i(`plugins.updateButton`)},void 0,!1,{fileName:E,lineNumber:537,columnNumber:9},this)]},void 0,!0,{fileName:E,lineNumber:532,columnNumber:5},this)}export{M as SettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{t as r}from"./react-vendor-CzSUaSLk.js";import{Nr as i}from"./src-CheiTWox.js";import{i as a,r as o}from"./input-BFMNMo6y.js";import{a as s,i as c,t as l}from"./popover-UkAmHo3Y.js";var u=o(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),d=o(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),f=o(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),p=e(t(),1),m=`coffer-theme`;function h(e){return e===`light`||e===`dark`||e===`eink`?e:`auto`}function g(){try{return h(localStorage.getItem(m))}catch{return h(null)}}function _(e){if(e===`auto`){delete document.documentElement.dataset.theme;try{localStorage.removeItem(m)}catch{}}else{document.documentElement.dataset.theme=e;try{localStorage.setItem(m,e)}catch{}}}function v(e,t,n){let r=n*Math.PI/180,i=t*Math.cos(r),a=t*Math.sin(r),o=e+.3963377774*i+.2158037573*a,s=e-.1055613458*i-.0638541728*a,c=e-.0894841775*i-1.291485548*a,l=o*o*o,u=s*s*s,d=c*c*c;return{r:4.0767416621*l-3.3077115913*u+.2309699292*d,g:-1.2684380046*l+2.6097574011*u-.3413193965*d,b:-.0041960863*l-.7034186147*u+1.707614701*d}}function y(e){let t=e<0?-1:1,n=Math.abs(e);return t*(n<=.0031308?12.92*n:1.055*n**(1/2.4)-.055)}function b(e,t,n){let r=v(e,t,n);return{r:y(r.r),g:y(r.g),b:y(r.b)}}function x(e,t,n){let{r,g:i,b:a}=b(e,t,n);return[r,i,a].every(e=>e>=-.002&&e<=1.002)}function S(e,t){let n=0,r=.4;for(let i=0;i<40;i++){let i=(n+r)/2;x(e,i,t)?n=i:r=i}return n}var C=`coffer-accent`,w=`oklch(0.62 0.107 162)`,T=[{titleKey:`appearance.colours`,items:[[12,`red`],[42,`orange`],[72,`yellow`],[102,`lime`],[132,`green`],[162,`emerald`],[192,`teal`],[222,`azure`],[252,`blue`],[282,`violet`],[312,`purple`],[342,`pink`]].map(([e,t])=>({id:`oklch(0.62 0.107 ${e})`,titleKey:`appearance.hue.${t}`}))},{titleKey:`appearance.neutral`,items:[{id:`oklch(0.5 0 0)`,titleKey:`appearance.hue.grey`}]}],E=/^(#[0-9a-f]{6}|oklch\(\s*[\d.]+\s+[\d.]+\s+[\d.]+\s*\))$/i;function D(e){let t=e?.trim();return t&&E.test(t)?t:w}function O(){try{return D(localStorage.getItem(C))}catch{return w}}var k=.09,A=[`panel`,`panel-raised`];function j(e){let t=/^oklch\(\s*[\d.]+\s+([\d.]+)\s+([\d.]+)\s*\)$/i.exec(e);return t?Number.parseFloat(t[1])===0?null:Number.parseFloat(t[2]):null}function M(e){let t=document.documentElement,n=j(D(e));for(let e of A){if(n===null){t.style.removeProperty(`--c-${e}-max`);continue}let r=Number.parseFloat(getComputedStyle(t).getPropertyValue(`--l-${e}`));Number.isFinite(r)&&t.style.setProperty(`--c-${e}-max`,String(Math.min(k,S(r,n))))}}function N(e){let t=D(e);document.documentElement.style.setProperty(`--accent`,t),M(t);try{t===`oklch(0.62 0.107 162)`?localStorage.removeItem(C):localStorage.setItem(C,t)}catch{}}function P(){let[e,t]=(0,p.useState)(()=>g()),[n,r]=(0,p.useState)(()=>O());return(0,p.useEffect)(()=>{M(O())},[]),{choice:e,setChoice:(0,p.useCallback)(e=>{_(e),M(O()),t(e)},[]),accent:n,setAccent:(0,p.useCallback)(e=>{N(e),r(e)},[])}}var F=r(),I=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/theme/ThemeSwitcher.tsx`,L=[{value:`auto`,Icon:i,labelKey:`theme.auto`},{value:`light`,Icon:f,labelKey:`theme.light`},{value:`dark`,Icon:d,labelKey:`theme.dark`},{value:`eink`,Icon:u,labelKey:`theme.eink`}];function R({compact:e=!1}){let{t}=n(),{choice:r,setChoice:i,accent:o,setAccent:u}=P();return(0,F.jsxDEV)(l,{children:[(0,F.jsxDEV)(s,{"aria-label":t(`appearance.label`),className:a(`flex min-h-11 touch-manipulation items-center rounded-xl text-sm text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,e?`w-full flex-col gap-0.5 py-2`:`w-full gap-2 px-3 py-2`),children:[(0,F.jsxDEV)(`span`,{className:`block size-4 shrink-0 rounded-full border border-border`,style:{background:o}},void 0,!1,{fileName:I,lineNumber:40,columnNumber:9},this),e?(0,F.jsxDEV)(`span`,{className:`text-[10px] font-semibold`,children:t(`appearance.label`)},void 0,!1,{fileName:I,lineNumber:42,columnNumber:11},this):(0,F.jsxDEV)(`span`,{className:`flex-1 text-left`,children:t(`appearance.label`)},void 0,!1,{fileName:I,lineNumber:44,columnNumber:11},this)]},void 0,!0,{fileName:I,lineNumber:31,columnNumber:7},this),(0,F.jsxDEV)(c,{align:`end`,className:`w-[292px] max-w-[calc(100vw-32px)] p-3`,children:[(0,F.jsxDEV)(`section`,{children:[(0,F.jsxDEV)(`h3`,{className:`label mb-1.5 border-b border-border pb-1.5`,children:t(`appearance.theme`)},void 0,!1,{fileName:I,lineNumber:50,columnNumber:11},this),(0,F.jsxDEV)(`div`,{className:`grid grid-cols-2 gap-1`,children:L.map(({value:e,Icon:n,labelKey:o})=>(0,F.jsxDEV)(`button`,{type:`button`,"aria-pressed":r===e,onClick:()=>i(e),className:a(`flex min-h-11 touch-manipulation items-center gap-2 rounded-md border border-transparent px-2 text-sm hover:bg-background`,r===e&&`border-border bg-background text-foreground`),children:[(0,F.jsxDEV)(n,{size:15,className:`shrink-0`},void 0,!1,{fileName:I,lineNumber:63,columnNumber:17},this),(0,F.jsxDEV)(`span`,{className:`truncate`,children:t(o)},void 0,!1,{fileName:I,lineNumber:64,columnNumber:17},this)]},e,!0,{fileName:I,lineNumber:53,columnNumber:15},this))},void 0,!1,{fileName:I,lineNumber:51,columnNumber:11},this)]},void 0,!0,{fileName:I,lineNumber:49,columnNumber:9},this),T.map(e=>(0,F.jsxDEV)(`section`,{className:`mt-3`,children:[(0,F.jsxDEV)(`h3`,{className:`label mb-1.5 border-b border-border pb-1.5`,children:t(e.titleKey)},void 0,!1,{fileName:I,lineNumber:72,columnNumber:13},this),(0,F.jsxDEV)(`div`,{className:`grid grid-cols-3 gap-0.5`,children:e.items.map(e=>(0,F.jsxDEV)(`button`,{type:`button`,"aria-pressed":o===e.id,onClick:()=>u(e.id),className:a(`flex min-w-0 touch-manipulation flex-col items-center gap-1.5 rounded-md border border-transparent px-1 py-2 hover:bg-background`,o===e.id&&`border-text bg-background`),children:[(0,F.jsxDEV)(`span`,{className:`block size-4 shrink-0 rounded-full border border-border`,style:{background:e.id}},void 0,!1,{fileName:I,lineNumber:86,columnNumber:19},this),(0,F.jsxDEV)(`span`,{className:a(`w-full truncate text-[11px] leading-tight`,o===e.id?`text-foreground`:`text-muted-foreground`),children:t(e.titleKey)},void 0,!1,{fileName:I,lineNumber:90,columnNumber:19},this)]},e.id,!0,{fileName:I,lineNumber:76,columnNumber:17},this))},void 0,!1,{fileName:I,lineNumber:74,columnNumber:13},this)]},e.titleKey,!0,{fileName:I,lineNumber:71,columnNumber:11},this))]},void 0,!0,{fileName:I,lineNumber:48,columnNumber:7},this)]},void 0,!0,{fileName:I,lineNumber:30,columnNumber:5},this)}export{R as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,D as t,b as n,s as r,w as i}from"./fields-
|
|
1
|
+
import{C as e,D as t,b as n,s as r,w as i}from"./fields-Ce51pRua.js";var a={decimal:[[`B`,1],[`KB`,1e3],[`MB`,1e6],[`GB`,1e9],[`TB`,0xe8d4a51000]],binary:[[`B`,1],[`KiB`,1024],[`MiB`,1024**2],[`GiB`,1024**3],[`TiB`,1024**4]]},o=e=>e.hints.system??`decimal`,s=(e,t)=>a[e].find(e=>e[0]===t)?.[1]??1;function c(e,t){let n=a[t],r=n[0];for(let t of n)e>=t[1]&&(r=t);return r}function l(e,t=`decimal`){if(e==null||e===``||Number.isNaN(Number(e)))return``;let n=Number(e),[r,i]=c(n,t);return`${Number((n/i).toFixed(2))} ${r}`}function u(a){let o=i(a),s=r({label:a.label,rules:{...a.rules,min:0},ui:{...a.ui}}),c=e(s)?n(s):s;return t(void 0,o,{...c,kind:`dataSize`,hints:{...c.hints,system:a.system??`decimal`,unit:a.unit??`GB`}})}function d(e){return u({...e,system:`binary`,unit:`GiB`})}function f(e){return u({...e,system:`decimal`,unit:`GB`})}export{s as a,o as c,f as i,c as n,l as o,u as r,d as s,a as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{x as e}from"./fields-
|
|
1
|
+
import{x as e}from"./fields-Ce51pRua.js";import{n as t,o as n}from"./shelf-DjiUBfgQ.js";function r(r){let i=e(r),a=n(i.fields).map(([e])=>e),o=a.find((e,t)=>a.indexOf(e)!==t);if(o)throw Error(`[extend] ${i.id}: duplicate key '${o}'`);return t(i.fields,`[extend] ${i.id}`),i}function i(e,t,n){return e.attachTo.some(e=>!(e.library!==t||e.shelf&&e.shelf!==n))}export{i as n,r as t};
|