@runeya/runeya 2.0.152 → 2.0.154
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/{chat-Z7SFBEXS.js → chat-COP27XB3.js} +3 -3
- package/{chunk-EUTW2S4P.js → chunk-OLHL5NFP.js} +7 -4
- package/chunk-OLHL5NFP.js.map +1 -0
- package/{chunk-QJSIN26R.js → chunk-VKYSHTYT.js} +443 -78
- package/chunk-VKYSHTYT.js.map +1 -0
- package/{companion-ZDEGNZ2G.js → companion-3MW23ONE.js} +2 -2
- package/index.js +7 -7
- package/{install-gate-TSCXUCYE.js → install-gate-3UVXPA57.js} +2 -2
- package/package.json +1 -1
- package/{src-NWPED6TK.js → src-K4E6GUCZ.js} +37 -25
- package/src-K4E6GUCZ.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-0pB6D9jL.js → AgentScalarChatInterface.vue-BtA-f77q.js} +3 -3
- package/web/assets/{AgentTerminalPage-D1c5A1Ol.js → AgentTerminalPage-2Ky-vEkw.js} +1 -1
- package/web/assets/AiChatModals-BV3vIIqN.js +4 -0
- package/web/assets/AiChatModals-DS5R3Oz1.css +1 -0
- package/web/assets/AppLayout-BgPr-urw.css +1 -0
- package/web/assets/AppLayout-DsczwAFI.js +1 -0
- package/web/assets/{AuditPage-B_Ee8f0S.js → AuditPage-DoKHFRJ7.js} +1 -1
- package/web/assets/{CloudAccountPage-D1L8Z_V3.js → CloudAccountPage-CDQNalgx.js} +1 -1
- package/web/assets/{CloudMessagingPage-CyZF0sdY.js → CloudMessagingPage-DduCz3KB.js} +1 -1
- package/web/assets/{DashboardPage-BeWd0GWF.js → DashboardPage-ClJR5DiP.js} +1 -1
- package/web/assets/{DirectoryPickerDialog-BGhbB66i.js → DirectoryPickerDialog-CVVg3SzI.js} +1 -1
- package/web/assets/{EditorIcon-CcU8Z46_.js → EditorIcon-DksI79ZN.js} +1 -1
- package/web/assets/{EnvironmentForm-B0FYydAK.js → EnvironmentForm-eMpLFv_-.js} +1 -1
- package/web/assets/{EnvironmentFormPage-BdTdOUBD.js → EnvironmentFormPage-DXH2lgk_.js} +1 -1
- package/web/assets/{EnvironmentListPage-Cy9Kg5pY.js → EnvironmentListPage-D-g_8lQw.js} +1 -1
- package/web/assets/{FlagChip-maG1f7pl.js → FlagChip-DjC14z4J.js} +1 -1
- package/web/assets/KanbanBoardPage-BeSkCN6I.js +4 -0
- package/web/assets/KanbanBoardPage-BrFqn87r.css +1 -0
- package/web/assets/{KanbanListPage-BigioApQ.css → KanbanListPage-DCK-N3nw.css} +1 -1
- package/web/assets/{KanbanListPage-BOxLKDpW.js → KanbanListPage-DnhCC5ET.js} +1 -1
- package/web/assets/{LaunchProjectPage-zlY3PK3t.js → LaunchProjectPage-DyNqhic1.js} +1 -1
- package/web/assets/{LaunchServicesPage-BsM0bP8N.js → LaunchServicesPage-bI7pVeU7.js} +1 -1
- package/web/assets/{LaunchShell-BznQ7GLD.js → LaunchShell-CokT4E5l.js} +1 -1
- package/web/assets/{LogViewer-9e3e9X-R.js → LogViewer-Cs3Y8vaZ.js} +1 -1
- package/web/assets/{OrgKeyPrompt-Ckq1sJ8-.js → OrgKeyPrompt-DtgelhnI.js} +1 -1
- package/web/assets/{ProcessControls-Br_aLfW7.js → ProcessControls-CxlDLGiO.js} +1 -1
- package/web/assets/{ProcessDetailPage-D3BNcm7N.js → ProcessDetailPage-D93cKCHb.js} +1 -1
- package/web/assets/{ProcessMetrics-D-rQkzqK.js → ProcessMetrics-C_7_boMv.js} +1 -1
- package/web/assets/{ProjectCreateDialog-BzJRqXun.js → ProjectCreateDialog-Bko_A5wp.js} +1 -1
- package/web/assets/{ProjectLocationGate-DjBwSAKc.js → ProjectLocationGate-jsy8WetY.js} +1 -1
- package/web/assets/{ProjectPublishDialog-yakoPg1D.js → ProjectPublishDialog-7kR1zZAo.js} +1 -1
- package/web/assets/{RandomJobTestPage-Dh0-shVq.js → RandomJobTestPage-Dp9prwa7.js} +1 -1
- package/web/assets/{ScenarioEditorPage-DEdlwmf3.js → ScenarioEditorPage-fv9yLH75.js} +1 -1
- package/web/assets/{SendToChatDialog-_ai4UP8l.js → SendToChatDialog-BVSbXcbf.js} +1 -1
- package/web/assets/{ServiceControlsBar-Bo-jHhJK.js → ServiceControlsBar-DFECGWL8.js} +1 -1
- package/web/assets/{ServiceDetailPage-CWB3XIMA.js → ServiceDetailPage-BQA74240.js} +1 -1
- package/web/assets/{ServiceFormPage-BzARwyAF.js → ServiceFormPage-ChsRsoLt.js} +1 -1
- package/web/assets/SettingsPage-BXKsN9Py.js +2086 -0
- package/web/assets/{SettingsPage-NpFX7FAy.css → SettingsPage-Dsuzjo8r.css} +1 -1
- package/web/assets/{UnlockPage-C08Itng5.js → UnlockPage-DhEN16uX.js} +1 -1
- package/web/assets/{VaultMigrationPage-BLZc5pXH.js → VaultMigrationPage-BgRNUuTP.js} +1 -1
- package/web/assets/{VersionBadge-lBKbqt98.js → VersionBadge-CXJ-2h5V.js} +1 -1
- package/web/assets/{WikiPage-RCU0T1IS.js → WikiPage-BT5a9d5Q.js} +1 -1
- package/web/assets/{WikiView-BV8MZ8qm.js → WikiView-BNReLsq5.js} +1 -1
- package/web/assets/{add-scalar-classes-CvUuKrM6.js → add-scalar-classes-C_lKfiMa.js} +2 -2
- package/web/assets/{agent.store-yrwtq9oP.js → agent.store-B6OM7edC.js} +1 -1
- package/web/assets/{auth-LbzJj0JF.js → auth-5bsz5kSC.js} +2 -2
- package/web/assets/{cloud-chat.store-y_9urSQZ.js → cloud-chat.store-Di38xQRJ.js} +1 -1
- package/web/assets/{cloud-client-DhjJyZHU.js → cloud-client-CEVx-bg6.js} +2 -2
- package/web/assets/{cloud-session-BlihYcy2.js → cloud-session-w6eNQX1X.js} +2 -2
- package/web/assets/composables-CCbqJqnd.js +1 -0
- package/web/assets/i18n-DbgjJIf8.js +1 -0
- package/web/assets/index-DB3-fmza.css +1 -0
- package/web/assets/{index-Ci2pSJuu.js → index-mvpLwxNT.js} +74 -74
- package/web/assets/modal-Bslt0NZi.js +5 -0
- package/web/assets/{notification.store-Bp37Xsss.js → notification.store-CAG1kWYq.js} +1 -1
- package/web/assets/{project-launch.store-AB257LRF.js → project-launch.store-Im5SMon9.js} +1 -1
- package/web/assets/{project.store-qBZ_R1td.js → project.store-CITAykC3.js} +1 -1
- package/web/assets/{scenario.store-B5ybSSzx.js → scenario.store-C9sSoRzb.js} +2 -2
- package/web/assets/{service.store-BrKRjCtb.js → service.store-CZJuuJiv.js} +1 -1
- package/web/assets/{settings-scope-BSdUKgjx.js → settings-scope-vcJEMNnD.js} +1 -1
- package/web/assets/{settings.store-C8guF9Fl.js → settings.store-CydW_2jh.js} +1 -1
- package/web/assets/src-CIOvFTGI.js +1960 -0
- package/web/assets/{src-Br-M9ln7.js → src-COZZWm-m.js} +1 -1
- package/web/assets/{src-DOcCcTQv.js → src-Ck_MutzB.js} +1 -1
- package/web/assets/src-DOziuDw8.css +1 -0
- package/web/assets/src-DrVR8mhy.css +1 -0
- package/web/assets/{trpc-CAKhySL_.js → trpc-BQ0mLnfI.js} +3 -3
- package/web/assets/{useCloudOrg-B_JPalTv.js → useCloudOrg-CQvEbrZv.js} +1 -1
- package/web/assets/{useEnvVarAutocomplete-DCZCMfLC.js → useEnvVarAutocomplete-hy3rO3SN.js} +1 -1
- package/web/assets/{useProjectCatalog-CCJAkQi_.js → useProjectCatalog-CWHpf3Yj.js} +1 -1
- package/web/assets/{useProjectCloudOrg-CG4CriU2.js → useProjectCloudOrg-B3rNPes5.js} +1 -1
- package/web/assets/{useServiceUrlHost-C1gL6Mjg.js → useServiceUrlHost-BFfie_6h.js} +1 -1
- package/web/index.html +19 -19
- package/chunk-EUTW2S4P.js.map +0 -1
- package/chunk-QJSIN26R.js.map +0 -1
- package/mcp-server/external.d.ts +0 -44
- package/mcp-server/index.d.ts +0 -1
- package/mcp-server/launch.d.ts +0 -89
- package/src-NWPED6TK.js.map +0 -1
- package/web/assets/AiChatModals-B_Cn5wNS.js +0 -4
- package/web/assets/AiChatModals-BmWxg-Sr.css +0 -1
- package/web/assets/AppLayout-BsFZ6nG3.js +0 -1
- package/web/assets/AppLayout-Djk3-XbN.css +0 -1
- package/web/assets/KanbanBoardPage-BOEK_sKt.js +0 -4
- package/web/assets/KanbanBoardPage-Bb_8xU-I.css +0 -1
- package/web/assets/SettingsPage-CsIXEQrW.js +0 -2086
- package/web/assets/composables-DguCUR3O.js +0 -1
- package/web/assets/i18n-DxVwqoxL.js +0 -1
- package/web/assets/index-Ck_3m_I9.css +0 -1
- package/web/assets/modal-KpWdqKSY.js +0 -5
- package/web/assets/src-Dbg3CMY2.css +0 -1
- package/web/assets/src-dQGrnDw0.css +0 -1
- package/web/assets/src-recq0B6o.js +0 -1960
- /package/{chat-Z7SFBEXS.js.map → chat-COP27XB3.js.map} +0 -0
- /package/{companion-ZDEGNZ2G.js.map → companion-3MW23ONE.js.map} +0 -0
- /package/{install-gate-TSCXUCYE.js.map → install-gate-3UVXPA57.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,C as t,N as n,x as r}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as i,E as a,Ht as o,_ as s,b as c,bt as l,ct as u,en as d,g as f,k as p,mt as m,nn as h,o as g,qt as _,rn as v,tt as y,v as b,xt as x,y as S}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C,w}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{G as T,J as E,K as D,O as ee,S as te,W as O,Y as k,dt as A,ft as j,q as ne}from"./src-DOcCcTQv.js";import{r as re}from"./composables-DguCUR3O.js";import{N as ie,P as ae}from"./index-Ci2pSJuu.js";var M=`runeya.chat.sound`,oe=t(se()??!0);function se(){if(typeof localStorage>`u`)return null;let e=localStorage.getItem(M);return e===null?null:e===`1`}function ce(e){oe.value=e;try{localStorage.setItem(M,e?`1`:`0`)}catch{}}async function le(e){try{let t=(await e.$fetch(`/user/prefs`,{method:`GET`}))?.data?.prefs?.chatSound;typeof t==`boolean`&&ce(t)}catch{}}function ue(e,t){e.$fetch(`/user/prefs`,{method:`POST`,body:{prefs:{chatSound:t}}})}var N=null;function de(){if(oe.value&&typeof window<`u`)try{let e=window.AudioContext??window.webkitAudioContext;if(!e)return;N??=new e,N.state===`suspended`&&N.resume();let t=N.currentTime,n=N.createOscillator(),r=N.createGain();n.type=`sine`,n.frequency.setValueAtTime(660,t),n.frequency.exponentialRampToValueAtTime(880,t+.08),r.gain.setValueAtTime(1e-4,t),r.gain.exponentialRampToValueAtTime(.16,t+.012),r.gain.exponentialRampToValueAtTime(1e-4,t+.25),n.connect(r).connect(N.destination),n.start(t),n.stop(t+.26)}catch{}}var fe={class:`chat`},pe={class:`sidebar`},me={class:`group`},he={class:`group-head`},ge={class:`acts`},_e={class:`list`},ve=[`onClick`],ye={class:`hash`},be={class:`name`},xe={key:0,class:`badge`},Se={class:`group`},Ce={class:`group-head`},we={class:`list`},Te=[`onClick`],Ee={class:`name`},De={key:0,class:`badge`},Oe={class:`main`},ke={class:`retention-banner__text`},Ae={class:`retention-banner__cta`},je={class:`pane-head`},Me={key:0},Ne={class:`head-actions`},Pe={class:`sel-count`},Fe={key:0,class:`loading-older`},Ie={key:1,class:`empty`},Le=[`onClick`],Re={key:0,class:`ti ti-check`},ze=[`src`,`onError`],Be={class:`msg-body`},Ve={class:`msg-head`},He={class:`msg-author`},Ue={class:`msg-time`},We=[`innerHTML`],Ge={key:0,class:`msg-cards`},Ke={key:1,class:`error`},qe={key:2,class:`placeholder`},Je={class:`hash-input`},Ye={class:`toggle-row`},Xe={key:0,class:`dlg-empty`},Ze={key:1,class:`pick-list`},Qe=[`onClick`],$e={class:`pick-name`},et={class:`join`},tt={key:0,class:`dlg-empty`},nt={class:`dlg-hint`},rt={key:0,class:`dlg-empty`},it={key:1,class:`pick-list`},at=[`onClick`],ot={class:`pick-avatar`},st={class:`pick-name`},ct={key:0,class:`ti ti-check picked`},lt={key:0,class:`dlg-empty`},ut={key:0,class:`dlg-empty`},dt={key:1,class:`pick-list`},ft=[`onClick`],pt={class:`pick-avatar`},mt={class:`pick-name`},ht={key:0,class:`ti ti-check picked`},gt=80,_t=120,P=j(p({__name:`ChatPanel`,props:{client:{},orgId:{},cloudApiBaseUrl:{},avatarUrl:{},streamUrl:{type:Function,default:void 0},currentUserId:{default:void 0},members:{},t:{},enableSelectToAi:{type:Boolean,default:!1},notifyOnUnread:{type:Boolean,default:!0},internalOrigins:{default:()=>[]},cardColumn:{type:Function,default:void 0}},emits:[`channel-read`,`ai-context`,`internal-link`,`upgrade`,`card-refs`],setup(p,{emit:te}){let O=p,j=te,M=O.t,se=n(O,`orgId`),N=f(()=>O.client),P=f(()=>O.currentUserId),F=re(N.value,se,{...O.streamUrl?{streamUrl:O.streamUrl}:{baseURL:O.cloudApiBaseUrl},currentUserId:P}),I=f(()=>O.members),L=t(null);function vt(e){return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`})}async function yt(e){if(L.value=null,e)try{let t=await N.value.$fetch(`/chat/retention/status`,{method:`GET`,query:{organizationId:e}});L.value=t.data??null}catch{}}o(se,e=>void yt(e),{immediate:!0});let R=f(()=>{let e=L.value;return e?e.capped&&e.enforcing?{text:M(`retention.enforcing`,{days:e.retentionDays}),enforcing:!0}:e.capped&&e.cutoffAt?{text:M(`retention.grace`,{date:vt(e.cutoffAt),days:e.retentionDays}),enforcing:!1}:e.pending?{text:M(`retention.pending`,{date:vt(e.pending.effectiveAt),days:e.pending.retentionDays}),enforcing:!1}:null:null}),bt=e=>`runeya.chat.lastChannel.${e}`;o(()=>F.activeChannelId.value,e=>{if(e&&O.orgId)try{localStorage.setItem(bt(O.orgId),e)}catch{}});let xt=``;o([()=>O.orgId,F.channels],()=>{let e=O.orgId;if(!e||xt===e||!F.channels.value.length||(xt=e,F.activeChannelId.value))return;let t=null;try{t=localStorage.getItem(bt(e))}catch{}t&&F.channels.value.some(e=>e.id===t)&&F.selectChannel(t)},{immediate:!0});let St=f(()=>F.channels.value.filter(e=>e.kind===`channel`)),Ct=f(()=>F.channels.value.filter(e=>e.kind===`dm`)),z=f(()=>F.channels.value.find(e=>e.id===F.activeChannelId.value)??null),wt=f(()=>I.value.filter(e=>e.userId!==P.value));function Tt(e){return I.value.find(t=>t.userId===e)?.name??M(`someone`)}function Et(e){let t=e.memberIds.filter(e=>e!==P.value);return t.length?t.map(Tt).join(`, `):M(`someone`)}function Dt(e){return e.kind===`dm`?Et(e):e.name}let Ot=f(()=>{let e=z.value;return e?I.value.filter(t=>!e.memberIds.includes(t.userId)):[]}),B=t(null),kt=f({get:()=>B.value===`create`,set:e=>{B.value=e?`create`:null}}),At=f({get:()=>B.value===`browse`,set:e=>{B.value=e?`browse`:null}}),jt=f({get:()=>B.value===`newdm`,set:e=>{B.value=e?`newdm`:null}}),Mt=f({get:()=>B.value===`invite`,set:e=>{B.value=e?`invite`:null}}),V=t(``),H=t(!1),U=t([]),W=t([]),G=t([]),K=t(``);function Nt(e){let t=K.value.trim().toLowerCase();return!t||e.name.toLowerCase().includes(t)||e.email.toLowerCase().includes(t)}let Pt=f(()=>Ot.value.filter(Nt)),Ft=f(()=>wt.value.filter(Nt));function It(){B.value=null}async function Lt(){U.value=await F.browseChannels(),B.value=`browse`}function Rt(){W.value=[],K.value=``,B.value=`invite`}function zt(){G.value=[],K.value=``,B.value=`newdm`}function Bt(e){W.value=W.value.includes(e)?W.value.filter(t=>t!==e):[...W.value,e]}function Vt(e){G.value=G.value.includes(e)?G.value.filter(t=>t!==e):[...G.value,e]}async function Ht(){await F.createChannel(V.value,H.value)&&(V.value=``,H.value=!1,It())}async function Ut(e){await F.joinChannel(e)&&(U.value=U.value.filter(t=>t.id!==e),It())}async function Wt(){if(!G.value.length)return;let e=G.value;It(),await F.openDm(e)}async function Gt(){let e=z.value;if(e&&W.value.length){for(let t of W.value)await F.inviteToChannel(e.id,t);W.value=[],It(),await F.reloadChannels()}}let q=t(``),Kt=t(null);async function qt(){await y();let e=Kt.value?.$el;e instanceof HTMLTextAreaElement?e.focus():e?.querySelector(`textarea`)?.focus()}async function Jt(){await F.send(q.value)&&(q.value=``),await qt()}function Yt(e){e.shiftKey||e.isComposing||(e.preventDefault(),Jt())}o(()=>F.activeChannelId.value,e=>{e&&qt()});let J=oe;u(()=>{le(N.value)});function Xt(){ce(!J.value),ue(N.value,J.value),J.value&&de()}let Zt=0,Qt=!1;o(()=>Object.values(F.unread.value).reduce((e,t)=>e+t,0),e=>{O.notifyOnUnread&&Qt&&e>Zt&&de(),Zt=e,Qt=!0},{immediate:!0});let $t=typeof window<`u`?window.location.origin:``,en={ALLOWED_TAGS:[`p`,`br`,`strong`,`b`,`em`,`i`,`u`,`s`,`del`,`code`,`pre`,`blockquote`,`ul`,`ol`,`li`,`a`,`h1`,`h2`,`h3`,`h4`,`hr`],ALLOWED_ATTR:[`href`,`title`]};function tn(e){let t=ae.parse(e??``,{async:!1,gfm:!0,breaks:!0});return ie.sanitize(t,en)}let nn=/\/app\/[^/\s)]+\/kanban\/([^/\s)]+)\/card\/([^/\s)?#]+)/g;function rn(e){let t=[],n=new Set;for(let r of(e??``).matchAll(nn)){let e=decodeURIComponent(r[1]??``),i=decodeURIComponent(r[2]??``),a=`${e}:${i}`;e&&i&&!n.has(a)&&(n.add(a),t.push({boardId:e,cardId:i}))}return t}function an(e){return O.cardColumn?rn(e).map(e=>({key:`${e.boardId}:${e.cardId}`,column:O.cardColumn?.(e.boardId,e.cardId)??``})).filter(e=>e.column):[]}o(()=>F.messages.value.map(e=>e.content).join(`\0`),()=>{let e=[],t=new Set;for(let n of F.messages.value)for(let r of rn(n.content)){let n=`${r.boardId}:${r.cardId}`;t.has(n)||(t.add(n),e.push(r))}j(`card-refs`,e)},{immediate:!0});function on(e){let t=(e.target?.closest(`a`))?.getAttribute(`href`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=[$t,...O.internalOrigins].filter(Boolean).find(e=>t===e||t.startsWith(`${e}/`));n?j(`internal-link`,t.slice(n.length)||`/`,n):/^https?:\/\//i.test(t)&&window.open(t,`_blank`,`noopener,noreferrer`)}function sn(e){return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function cn(e){let t=0;for(let n=0;n<e.length;n+=1)t=(t*31+e.charCodeAt(n))%360;return{background:`linear-gradient(135deg, hsl(${t} 62% 52%), hsl(${(t+40)%360} 62% 46%))`}}let ln=r(new Set);function un(e){return O.avatarUrl?.(e)??`${O.cloudApiBaseUrl}/api/avatar/${e}`}let Y=t(null),X=t(0),Z=0;function dn(){let e=Y.value;return!e||e.scrollHeight-e.scrollTop-e.clientHeight<=gt}function fn(){let e=F.activeChannelId.value;e&&(F.markRead(e),F.unread.value[e]&&(F.unread.value={...F.unread.value,[e]:0}),j(`channel-read`,e))}function pn(e=!1){let t=Y.value;t&&(t.scrollTo({top:t.scrollHeight,behavior:e?`smooth`:`auto`}),X.value=0,fn())}let mn=!1;async function hn(){let e=Y.value;if(!e||!F.hasMore.value||F.loadingOlder.value)return;mn=!0;let t=e.scrollHeight,n=e.scrollTop;await F.loadOlder(),await y(),e.scrollTop=n+(e.scrollHeight-t),mn=!1}function gn(){let e=Y.value;e&&e.scrollTop<_t&&hn(),dn()&&(X.value=0,fn())}o(()=>F.messages.value.length,async e=>{if(mn){Z=e;return}if(e<Z){Z=e,X.value=0;return}let t=e-Z,n=F.messages.value.at(-1)?.userId===P.value,r=Z===0||n||dn();if(Z>0&&t>0&&!n&&de(),Z=e,await y(),r)pn();else if(t>0){X.value+=t;let e=F.activeChannelId.value;e&&(F.unread.value={...F.unread.value,[e]:(F.unread.value[e]??0)+t})}}),o(()=>F.activeChannelId.value,()=>{Z=0,X.value=0});let Q=t(!1),$=r(new Set);function _n(e){$.has(e)?$.delete(e):$.add(e)}function vn(){Q.value=!1,$.clear()}o(()=>F.activeChannelId.value,vn);function yn(){let e=F.messages.value.filter(e=>$.has(e.id));if(!e.length)return;let t=z.value?Dt(z.value):``;j(`ai-context`,{title:t,messages:e}),vn()}return(t,n)=>(m(),c(`div`,fe,[s(`aside`,pe,[x(t.$slots,`sidebar-top`,{},void 0,!0),s(`div`,me,[s(`div`,he,[s(`span`,null,v(e(M)(`channels`)),1),s(`span`,ge,[i(e(A),{icon:`ti ti-search`,variant:`text`,rounded:``,size:`small`,onClick:Lt}),i(e(A),{icon:`ti ti-plus`,variant:`text`,rounded:``,size:`small`,onClick:n[0]||=e=>B.value=`create`})])]),s(`ul`,_e,[(m(!0),c(g,null,l(St.value,t=>(m(),c(`li`,{key:t.id},[s(`button`,{class:d([`chan`,{active:t.id===e(F).activeChannelId.value}]),onClick:n=>e(F).selectChannel(t.id)},[s(`span`,ye,v(t.isPrivate?`🔒`:`#`),1),s(`span`,be,v(t.name),1),e(F).unread.value[t.id]?(m(),c(`span`,xe,v(e(F).unread.value[t.id]),1)):S(``,!0)],10,ve)]))),128))])]),s(`div`,Se,[s(`div`,Ce,[s(`span`,null,v(e(M)(`directMessages`)),1),i(e(A),{icon:`ti ti-plus`,variant:`text`,rounded:``,size:`small`,onClick:zt})]),s(`ul`,we,[(m(!0),c(g,null,l(Ct.value,t=>(m(),c(`li`,{key:t.id},[s(`button`,{class:d([`chan`,{active:t.id===e(F).activeChannelId.value}]),onClick:n=>e(F).selectChannel(t.id)},[s(`span`,Ee,v(Et(t)),1),e(F).unread.value[t.id]?(m(),c(`span`,De,v(e(F).unread.value[t.id]),1)):S(``,!0)],10,Te)]))),128))])])]),s(`div`,Oe,[R.value?(m(),c(`a`,{key:0,class:d([`retention-banner`,{enforcing:R.value.enforcing}]),href:`#`,onClick:n[1]||=w(e=>j(`upgrade`),[`prevent`])},[s(`span`,ke,v(R.value.text),1),s(`span`,Ae,v(e(M)(`retention.cta`)),1)],2)):S(``,!0),z.value?(m(),c(g,{key:1},[s(`header`,je,[s(`h2`,null,[z.value.kind===`channel`?(m(),c(`span`,Me,v(z.value.isPrivate?`🔒`:`#`),1)):S(``,!0),a(v(Dt(z.value)),1)]),s(`span`,Ne,[i(e(A),{icon:e(J)?`ti ti-volume`:`ti ti-volume-off`,variant:`text`,rounded:``,size:`small`,title:e(J)?e(M)(`soundOn`):e(M)(`soundOff`),onClick:Xt},null,8,[`icon`,`title`]),p.enableSelectToAi&&Q.value?(m(),c(g,{key:0},[s(`span`,Pe,v(e(M)(`selectedCount`,{count:$.size})),1),i(e(A),{label:e(M)(`sendToAi`),icon:`ti ti-sparkles`,size:`small`,disabled:!$.size,onClick:yn},null,8,[`label`,`disabled`]),i(e(A),{label:e(M)(`cancel`),size:`small`,variant:`text`,onClick:vn},null,8,[`label`])],64)):(m(),c(g,{key:1},[p.enableSelectToAi?(m(),b(e(A),{key:0,label:e(M)(`select`),icon:`ti ti-square-check`,size:`small`,variant:`text`,onClick:n[2]||=e=>Q.value=!0},null,8,[`label`])):S(``,!0),z.value.kind===`channel`?(m(),b(e(A),{key:1,label:e(M)(`invite`),size:`small`,variant:`outlined`,onClick:Rt},null,8,[`label`])):S(``,!0)],64))])]),s(`div`,{ref_key:`listEl`,ref:Y,class:`thread`,onScroll:gn},[e(F).loadingOlder.value?(m(),c(`div`,Fe,[...n[14]||=[s(`i`,{class:`ti ti-spin ti-loader-2`},null,-1)]])):S(``,!0),!e(F).messages.value.length&&!e(F).loading.value?(m(),c(`p`,Ie,v(e(M)(`empty`)),1)):S(``,!0),(m(!0),c(g,null,l(e(F).messages.value,t=>(m(),c(`div`,{key:t.id,class:d([`msg`,{selectable:p.enableSelectToAi&&Q.value,selected:$.has(t.id)}]),onClick:e=>p.enableSelectToAi&&Q.value&&_n(t.id)},[p.enableSelectToAi&&Q.value?(m(),c(`span`,{key:0,class:d([`msg-check`,{on:$.has(t.id)}])},[$.has(t.id)?(m(),c(`i`,Re)):S(``,!0)],2)):S(``,!0),s(`div`,{class:`msg-avatar`,style:h(cn(t.userId))},[ln.has(t.userId)?(m(),c(g,{key:1},[a(v(t.userName.charAt(0).toUpperCase()),1)],64)):(m(),c(`img`,{key:0,src:un(t.userId),alt:``,onError:e=>ln.add(t.userId)},null,40,ze))],4),s(`div`,Be,[s(`div`,Ve,[s(`span`,He,v(t.userName),1),s(`span`,Ue,v(sn(t.createdAt)),1)]),s(`div`,{class:`msg-content`,innerHTML:tn(t.content),onClick:n[3]||=e=>on(e)},null,8,We),an(t.content).length?(m(),c(`div`,Ge,[(m(!0),c(g,null,l(an(t.content),t=>(m(),c(`span`,{key:t.key,class:`card-col`},[n[15]||=s(`i`,{class:`ti ti-list`},null,-1),a(v(e(M)(`cardColumn`,{column:t.column})),1)]))),128))])):S(``,!0)])],10,Le))),128))],544),X.value>0?(m(),c(`button`,{key:0,class:`new-msgs`,onClick:n[4]||=e=>pn(!0)},[n[16]||=s(`i`,{class:`ti ti-arrow-down`},null,-1),a(` `+v(X.value)+` `+v(e(M)(`newMessages`)),1)])):S(``,!0),s(`form`,{class:`composer`,onSubmit:w(Jt,[`prevent`])},[i(e(ne),{ref_key:`composerInput`,ref:Kt,modelValue:q.value,"onUpdate:modelValue":n[5]||=e=>q.value=e,placeholder:e(M)(`placeholder`),disabled:e(F).sending.value,rows:`1`,"auto-resize":``,onKeydown:C(Yt,[`enter`])},null,8,[`modelValue`,`placeholder`,`disabled`]),i(e(A),{type:`submit`,label:e(M)(`send`),disabled:e(F).sending.value||!q.value.trim()},null,8,[`label`,`disabled`])],32),e(F).error.value?(m(),c(`p`,Ke,v(e(F).error.value),1)):S(``,!0)],64)):(m(),c(`div`,qe,v(e(M)(`pickChannel`)),1))]),i(e(k),{visible:kt.value,"onUpdate:visible":n[8]||=e=>kt.value=e,header:e(M)(`createChannel`),modal:``,style:{width:`26rem`}},{default:_(()=>[s(`form`,{class:`dlg-form`,onSubmit:w(Ht,[`prevent`])},[s(`div`,Je,[n[17]||=s(`span`,null,`#`,-1),i(e(E),{modelValue:V.value,"onUpdate:modelValue":n[6]||=e=>V.value=e,placeholder:e(M)(`channelName`)},null,8,[`modelValue`,`placeholder`])]),s(`label`,Ye,[i(e(ee),{modelValue:H.value,"onUpdate:modelValue":n[7]||=e=>H.value=e,binary:``},null,8,[`modelValue`]),s(`span`,null,[s(`strong`,null,v(e(M)(`private`)),1),a(` · `+v(e(M)(`privateHint`)),1)])]),i(e(A),{type:`submit`,label:e(M)(`create`),disabled:!V.value.trim()},null,8,[`label`,`disabled`])],32)]),_:1},8,[`visible`,`header`]),i(e(k),{visible:At.value,"onUpdate:visible":n[9]||=e=>At.value=e,header:e(M)(`browse`),modal:``,style:{width:`26rem`}},{default:_(()=>[U.value.length?(m(),c(`ul`,Ze,[(m(!0),c(g,null,l(U.value,t=>(m(),c(`li`,{key:t.id},[s(`button`,{class:`pick-item`,onClick:e=>Ut(t.id)},[s(`span`,$e,`# `+v(t.name),1),s(`span`,et,v(e(M)(`join`)),1)],8,Qe)]))),128))])):(m(),c(`p`,Xe,v(e(M)(`noBrowse`)),1))]),_:1},8,[`visible`,`header`]),i(e(k),{visible:jt.value,"onUpdate:visible":n[11]||=e=>jt.value=e,header:e(M)(`newDm`),modal:``,style:{width:`26rem`}},{default:_(()=>[wt.value.length?(m(),c(g,{key:1},[s(`p`,nt,v(e(M)(`dmHint`)),1),i(e(D),{class:`search-field`},{default:_(()=>[i(e(T),{class:`ti ti-search`}),i(e(E),{modelValue:K.value,"onUpdate:modelValue":n[10]||=e=>K.value=e,placeholder:e(M)(`searchPeople`)},null,8,[`modelValue`,`placeholder`])]),_:1}),Ft.value.length?(m(),c(`ul`,it,[(m(!0),c(g,null,l(Ft.value,e=>(m(),c(`li`,{key:e.userId},[s(`button`,{class:d([`pick-item`,{selected:G.value.includes(e.userId)}]),onClick:t=>Vt(e.userId)},[s(`span`,ot,v(e.name.charAt(0).toUpperCase()),1),s(`span`,st,v(e.name),1),G.value.includes(e.userId)?(m(),c(`i`,ct)):S(``,!0)],10,at)]))),128))])):(m(),c(`p`,rt,v(e(M)(`noMatch`)),1)),i(e(A),{class:`dlg-cta`,label:G.value.length>1?e(M)(`startGroup`,{count:G.value.length}):e(M)(`startDm`),disabled:!G.value.length,onClick:Wt},null,8,[`label`,`disabled`])],64)):(m(),c(`p`,tt,v(e(M)(`noMembers`)),1))]),_:1},8,[`visible`,`header`]),i(e(k),{visible:Mt.value,"onUpdate:visible":n[13]||=e=>Mt.value=e,header:e(M)(`invite`),modal:``,style:{width:`26rem`}},{default:_(()=>[Ot.value.length?(m(),c(g,{key:1},[i(e(D),{class:`search-field`},{default:_(()=>[i(e(T),{class:`ti ti-search`}),i(e(E),{modelValue:K.value,"onUpdate:modelValue":n[12]||=e=>K.value=e,placeholder:e(M)(`searchPeople`)},null,8,[`modelValue`,`placeholder`])]),_:1}),Pt.value.length?(m(),c(`ul`,dt,[(m(!0),c(g,null,l(Pt.value,e=>(m(),c(`li`,{key:e.userId},[s(`button`,{class:d([`pick-item`,{selected:W.value.includes(e.userId)}]),onClick:t=>Bt(e.userId)},[s(`span`,pt,v(e.name.charAt(0).toUpperCase()),1),s(`span`,mt,v(e.name),1),W.value.includes(e.userId)?(m(),c(`i`,ht)):S(``,!0)],10,ft)]))),128))])):(m(),c(`p`,ut,v(e(M)(`noMatch`)),1)),i(e(A),{class:`dlg-cta`,label:W.value.length?e(M)(`addSelected`,{count:W.value.length}):e(M)(`addPeople`),disabled:!W.value.length,onClick:Gt},null,8,[`label`,`disabled`])],64)):(m(),c(`p`,lt,v(e(M)(`noInvitable`)),1))]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-054a1e52`]]),F={key:0,class:`stc-empty`},I={key:1,class:`stc-form`},L={key:0,class:`stc-field`},vt={class:`stc-field`},yt={class:`stc-preview-label`},R={key:0,class:`stc-trunc`},bt={class:`stc-preview`},xt=j(p({__name:`SendToChatDialog`,props:{client:{},t:{},currentUserId:{default:void 0},organizations:{default:()=>[]},orgId:{default:``},lockOrganization:{type:Boolean,default:!1},maxLength:{default:4e3}},emits:[`sent`],setup(n,{expose:r,emit:l}){let u=n,d=l,p=u.t,h=f(()=>u.client),g=t(!1),y=t(``),x=t(u.orgId),C=t(``),w=t(!1),T=t(null),E=t(!1),D=t([]),ee=t([]),j=f(()=>y.value.length>u.maxLength),ne=f(()=>j.value?`${y.value.slice(0,u.maxLength-20)}\n… (${p(`truncated`)})`:y.value);function re(e){return ee.value.find(t=>t.userId===e)?.name??`?`}function ie(e){let t=e.memberIds.filter(e=>e!==u.currentUserId);return t.length?t.map(re).join(`, `):`?`}let ae=f(()=>{let e=D.value.filter(e=>e.kind===`channel`).map(e=>({id:e.id,label:`${e.isPrivate?`🔒`:`#`} ${e.name}`})),t=D.value.filter(e=>e.kind===`dm`).map(e=>({id:e.id,label:ie(e)})),n=[];return e.length&&n.push({label:p(`channels`),items:e}),t.length&&n.push({label:p(`directMessages`),items:t}),n});async function M(e){if(D.value=[],ee.value=[],C.value=``,e){E.value=!0;try{let[t,n]=await Promise.all([h.value.$fetch(`/chat/channel/list`,{method:`GET`,query:{organizationId:e}}),h.value.organization.getFullOrganization({query:{organizationId:e}})]);if(D.value=t?.data?.channels??[],!n.error&&n.data){let e=n.data;ee.value=(e.members??[]).map(e=>({userId:e.userId,name:e.user?.name||e.user?.email||`?`}))}}finally{E.value=!1}}}o(x,e=>{M(e)}),o(()=>u.orgId,e=>{e&&u.lockOrganization&&(x.value=e)});async function oe(){if(C.value&&ne.value.trim()){w.value=!0,T.value=null;try{if((await h.value.$fetch(`/chat/message/send`,{method:`POST`,body:{channelId:C.value,content:ne.value}}))?.error)throw Error(p(`failed`));d(`sent`,C.value),g.value=!1}catch(e){T.value=e.message||p(`failed`)}finally{w.value=!1}}}function se(e){if(y.value=e,T.value=null,C.value=``,g.value=!0,!u.currentUserId)return;if(u.lockOrganization||x.value){let e=u.lockOrganization?u.orgId:x.value;x.value=e,M(e);return}let t=u.organizations[0];t&&(x.value=t.id)}return r({open:se}),(t,r)=>(m(),b(e(k),{visible:g.value,"onUpdate:visible":r[3]||=e=>g.value=e,header:e(p)(`title`),modal:``,style:{width:`30rem`}},{footer:_(()=>[i(e(A),{label:e(p)(`cancel`),variant:`text`,severity:`secondary`,disabled:w.value,onClick:r[2]||=e=>g.value=!1},null,8,[`label`,`disabled`]),n.currentUserId?(m(),b(e(A),{key:0,label:e(p)(`send`),icon:`ti ti-send`,loading:w.value,disabled:!C.value,onClick:oe},null,8,[`label`,`loading`,`disabled`])):S(``,!0)]),default:_(()=>[n.currentUserId?(m(),c(`div`,I,[n.lockOrganization?S(``,!0):(m(),c(`div`,L,[s(`label`,null,v(e(p)(`org`)),1),i(e(te),{modelValue:x.value,"onUpdate:modelValue":r[0]||=e=>x.value=e,options:n.organizations,"option-label":`name`,"option-value":`id`,placeholder:e(p)(`orgPlaceholder`),class:`stc-select`},null,8,[`modelValue`,`options`,`placeholder`])])),s(`div`,vt,[s(`label`,null,v(e(p)(`target`)),1),i(e(te),{modelValue:C.value,"onUpdate:modelValue":r[1]||=e=>C.value=e,options:ae.value,"option-label":`label`,"option-value":`id`,"option-group-label":`label`,"option-group-children":`items`,placeholder:e(p)(`targetPlaceholder`),disabled:!x.value||E.value,loading:E.value,class:`stc-select`,filter:``},null,8,[`modelValue`,`options`,`placeholder`,`disabled`,`loading`])]),s(`p`,yt,[a(v(e(p)(`preview`))+` `,1),j.value?(m(),c(`span`,R,`· `+v(e(p)(`truncated`)),1)):S(``,!0)]),s(`pre`,bt,v(ne.value),1),T.value?(m(),b(e(O),{key:1,severity:`error`},{default:_(()=>[a(v(T.value),1)]),_:1})):S(``,!0)])):(m(),c(`div`,F,v(e(p)(`notConnected`)),1))]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-d0a9c435`]]);export{de as i,P as n,le as r,xt as t};
|
|
1
|
+
import{B as e,C as t,N as n,x as r}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{D as i,E as a,Ht as o,_ as s,b as c,bt as l,ct as u,en as d,g as f,k as p,mt as m,nn as h,o as g,qt as _,rn as v,tt as y,v as b,xt as x,y as S}from"./runtime-core.esm-bundler-DujKY9QV.js";import{C,w}from"./runtime-dom.esm-bundler-CyEVRK6B.js";import{G as T,J as E,K as D,O as ee,S as te,W as O,Y as k,dt as A,ft as j,q as ne}from"./src-Ck_MutzB.js";import{r as re}from"./composables-CCbqJqnd.js";import{N as ie,P as ae}from"./index-mvpLwxNT.js";var M=`runeya.chat.sound`,oe=t(se()??!0);function se(){if(typeof localStorage>`u`)return null;let e=localStorage.getItem(M);return e===null?null:e===`1`}function ce(e){oe.value=e;try{localStorage.setItem(M,e?`1`:`0`)}catch{}}async function le(e){try{let t=(await e.$fetch(`/user/prefs`,{method:`GET`}))?.data?.prefs?.chatSound;typeof t==`boolean`&&ce(t)}catch{}}function ue(e,t){e.$fetch(`/user/prefs`,{method:`POST`,body:{prefs:{chatSound:t}}})}var N=null;function de(){if(oe.value&&typeof window<`u`)try{let e=window.AudioContext??window.webkitAudioContext;if(!e)return;N??=new e,N.state===`suspended`&&N.resume();let t=N.currentTime,n=N.createOscillator(),r=N.createGain();n.type=`sine`,n.frequency.setValueAtTime(660,t),n.frequency.exponentialRampToValueAtTime(880,t+.08),r.gain.setValueAtTime(1e-4,t),r.gain.exponentialRampToValueAtTime(.16,t+.012),r.gain.exponentialRampToValueAtTime(1e-4,t+.25),n.connect(r).connect(N.destination),n.start(t),n.stop(t+.26)}catch{}}var fe={class:`chat`},pe={class:`sidebar`},me={class:`group`},he={class:`group-head`},ge={class:`acts`},_e={class:`list`},ve=[`onClick`],ye={class:`hash`},be={class:`name`},xe={key:0,class:`badge`},Se={class:`group`},Ce={class:`group-head`},we={class:`list`},Te=[`onClick`],Ee={class:`name`},De={key:0,class:`badge`},Oe={class:`main`},ke={class:`retention-banner__text`},Ae={class:`retention-banner__cta`},je={class:`pane-head`},Me={key:0},Ne={class:`head-actions`},Pe={class:`sel-count`},Fe={key:0,class:`loading-older`},Ie={key:1,class:`empty`},Le=[`onClick`],Re={key:0,class:`ti ti-check`},ze=[`src`,`onError`],Be={class:`msg-body`},Ve={class:`msg-head`},He={class:`msg-author`},Ue={class:`msg-time`},We=[`innerHTML`],Ge={key:0,class:`msg-cards`},Ke={key:1,class:`error`},qe={key:2,class:`placeholder`},Je={class:`hash-input`},Ye={class:`toggle-row`},Xe={key:0,class:`dlg-empty`},Ze={key:1,class:`pick-list`},Qe=[`onClick`],$e={class:`pick-name`},et={class:`join`},tt={key:0,class:`dlg-empty`},nt={class:`dlg-hint`},rt={key:0,class:`dlg-empty`},it={key:1,class:`pick-list`},at=[`onClick`],ot={class:`pick-avatar`},st={class:`pick-name`},ct={key:0,class:`ti ti-check picked`},lt={key:0,class:`dlg-empty`},ut={key:0,class:`dlg-empty`},dt={key:1,class:`pick-list`},ft=[`onClick`],pt={class:`pick-avatar`},mt={class:`pick-name`},ht={key:0,class:`ti ti-check picked`},gt=80,_t=120,P=j(p({__name:`ChatPanel`,props:{client:{},orgId:{},cloudApiBaseUrl:{},avatarUrl:{},streamUrl:{type:Function,default:void 0},currentUserId:{default:void 0},members:{},t:{},enableSelectToAi:{type:Boolean,default:!1},notifyOnUnread:{type:Boolean,default:!0},internalOrigins:{default:()=>[]},cardColumn:{type:Function,default:void 0}},emits:[`channel-read`,`ai-context`,`internal-link`,`upgrade`,`card-refs`],setup(p,{emit:te}){let O=p,j=te,M=O.t,se=n(O,`orgId`),N=f(()=>O.client),P=f(()=>O.currentUserId),F=re(N.value,se,{...O.streamUrl?{streamUrl:O.streamUrl}:{baseURL:O.cloudApiBaseUrl},currentUserId:P}),I=f(()=>O.members),L=t(null);function vt(e){return new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`})}async function yt(e){if(L.value=null,e)try{let t=await N.value.$fetch(`/chat/retention/status`,{method:`GET`,query:{organizationId:e}});L.value=t.data??null}catch{}}o(se,e=>void yt(e),{immediate:!0});let R=f(()=>{let e=L.value;return e?e.capped&&e.enforcing?{text:M(`retention.enforcing`,{days:e.retentionDays}),enforcing:!0}:e.capped&&e.cutoffAt?{text:M(`retention.grace`,{date:vt(e.cutoffAt),days:e.retentionDays}),enforcing:!1}:e.pending?{text:M(`retention.pending`,{date:vt(e.pending.effectiveAt),days:e.pending.retentionDays}),enforcing:!1}:null:null}),bt=e=>`runeya.chat.lastChannel.${e}`;o(()=>F.activeChannelId.value,e=>{if(e&&O.orgId)try{localStorage.setItem(bt(O.orgId),e)}catch{}});let xt=``;o([()=>O.orgId,F.channels],()=>{let e=O.orgId;if(!e||xt===e||!F.channels.value.length||(xt=e,F.activeChannelId.value))return;let t=null;try{t=localStorage.getItem(bt(e))}catch{}t&&F.channels.value.some(e=>e.id===t)&&F.selectChannel(t)},{immediate:!0});let St=f(()=>F.channels.value.filter(e=>e.kind===`channel`)),Ct=f(()=>F.channels.value.filter(e=>e.kind===`dm`)),z=f(()=>F.channels.value.find(e=>e.id===F.activeChannelId.value)??null),wt=f(()=>I.value.filter(e=>e.userId!==P.value));function Tt(e){return I.value.find(t=>t.userId===e)?.name??M(`someone`)}function Et(e){let t=e.memberIds.filter(e=>e!==P.value);return t.length?t.map(Tt).join(`, `):M(`someone`)}function Dt(e){return e.kind===`dm`?Et(e):e.name}let Ot=f(()=>{let e=z.value;return e?I.value.filter(t=>!e.memberIds.includes(t.userId)):[]}),B=t(null),kt=f({get:()=>B.value===`create`,set:e=>{B.value=e?`create`:null}}),At=f({get:()=>B.value===`browse`,set:e=>{B.value=e?`browse`:null}}),jt=f({get:()=>B.value===`newdm`,set:e=>{B.value=e?`newdm`:null}}),Mt=f({get:()=>B.value===`invite`,set:e=>{B.value=e?`invite`:null}}),V=t(``),H=t(!1),U=t([]),W=t([]),G=t([]),K=t(``);function Nt(e){let t=K.value.trim().toLowerCase();return!t||e.name.toLowerCase().includes(t)||e.email.toLowerCase().includes(t)}let Pt=f(()=>Ot.value.filter(Nt)),Ft=f(()=>wt.value.filter(Nt));function It(){B.value=null}async function Lt(){U.value=await F.browseChannels(),B.value=`browse`}function Rt(){W.value=[],K.value=``,B.value=`invite`}function zt(){G.value=[],K.value=``,B.value=`newdm`}function Bt(e){W.value=W.value.includes(e)?W.value.filter(t=>t!==e):[...W.value,e]}function Vt(e){G.value=G.value.includes(e)?G.value.filter(t=>t!==e):[...G.value,e]}async function Ht(){await F.createChannel(V.value,H.value)&&(V.value=``,H.value=!1,It())}async function Ut(e){await F.joinChannel(e)&&(U.value=U.value.filter(t=>t.id!==e),It())}async function Wt(){if(!G.value.length)return;let e=G.value;It(),await F.openDm(e)}async function Gt(){let e=z.value;if(e&&W.value.length){for(let t of W.value)await F.inviteToChannel(e.id,t);W.value=[],It(),await F.reloadChannels()}}let q=t(``),Kt=t(null);async function qt(){await y();let e=Kt.value?.$el;e instanceof HTMLTextAreaElement?e.focus():e?.querySelector(`textarea`)?.focus()}async function Jt(){await F.send(q.value)&&(q.value=``),await qt()}function Yt(e){e.shiftKey||e.isComposing||(e.preventDefault(),Jt())}o(()=>F.activeChannelId.value,e=>{e&&qt()});let J=oe;u(()=>{le(N.value)});function Xt(){ce(!J.value),ue(N.value,J.value),J.value&&de()}let Zt=0,Qt=!1;o(()=>Object.values(F.unread.value).reduce((e,t)=>e+t,0),e=>{O.notifyOnUnread&&Qt&&e>Zt&&de(),Zt=e,Qt=!0},{immediate:!0});let $t=typeof window<`u`?window.location.origin:``,en={ALLOWED_TAGS:[`p`,`br`,`strong`,`b`,`em`,`i`,`u`,`s`,`del`,`code`,`pre`,`blockquote`,`ul`,`ol`,`li`,`a`,`h1`,`h2`,`h3`,`h4`,`hr`],ALLOWED_ATTR:[`href`,`title`]};function tn(e){let t=ae.parse(e??``,{async:!1,gfm:!0,breaks:!0});return ie.sanitize(t,en)}let nn=/\/app\/[^/\s)]+\/kanban\/([^/\s)]+)\/card\/([^/\s)?#]+)/g;function rn(e){let t=[],n=new Set;for(let r of(e??``).matchAll(nn)){let e=decodeURIComponent(r[1]??``),i=decodeURIComponent(r[2]??``),a=`${e}:${i}`;e&&i&&!n.has(a)&&(n.add(a),t.push({boardId:e,cardId:i}))}return t}function an(e){return O.cardColumn?rn(e).map(e=>({key:`${e.boardId}:${e.cardId}`,column:O.cardColumn?.(e.boardId,e.cardId)??``})).filter(e=>e.column):[]}o(()=>F.messages.value.map(e=>e.content).join(`\0`),()=>{let e=[],t=new Set;for(let n of F.messages.value)for(let r of rn(n.content)){let n=`${r.boardId}:${r.cardId}`;t.has(n)||(t.add(n),e.push(r))}j(`card-refs`,e)},{immediate:!0});function on(e){let t=(e.target?.closest(`a`))?.getAttribute(`href`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=[$t,...O.internalOrigins].filter(Boolean).find(e=>t===e||t.startsWith(`${e}/`));n?j(`internal-link`,t.slice(n.length)||`/`,n):/^https?:\/\//i.test(t)&&window.open(t,`_blank`,`noopener,noreferrer`)}function sn(e){return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}function cn(e){let t=0;for(let n=0;n<e.length;n+=1)t=(t*31+e.charCodeAt(n))%360;return{background:`linear-gradient(135deg, hsl(${t} 62% 52%), hsl(${(t+40)%360} 62% 46%))`}}let ln=r(new Set);function un(e){return O.avatarUrl?.(e)??`${O.cloudApiBaseUrl}/api/avatar/${e}`}let Y=t(null),X=t(0),Z=0;function dn(){let e=Y.value;return!e||e.scrollHeight-e.scrollTop-e.clientHeight<=gt}function fn(){let e=F.activeChannelId.value;e&&(F.markRead(e),F.unread.value[e]&&(F.unread.value={...F.unread.value,[e]:0}),j(`channel-read`,e))}function pn(e=!1){let t=Y.value;t&&(t.scrollTo({top:t.scrollHeight,behavior:e?`smooth`:`auto`}),X.value=0,fn())}let mn=!1;async function hn(){let e=Y.value;if(!e||!F.hasMore.value||F.loadingOlder.value)return;mn=!0;let t=e.scrollHeight,n=e.scrollTop;await F.loadOlder(),await y(),e.scrollTop=n+(e.scrollHeight-t),mn=!1}function gn(){let e=Y.value;e&&e.scrollTop<_t&&hn(),dn()&&(X.value=0,fn())}o(()=>F.messages.value.length,async e=>{if(mn){Z=e;return}if(e<Z){Z=e,X.value=0;return}let t=e-Z,n=F.messages.value.at(-1)?.userId===P.value,r=Z===0||n||dn();if(Z>0&&t>0&&!n&&de(),Z=e,await y(),r)pn();else if(t>0){X.value+=t;let e=F.activeChannelId.value;e&&(F.unread.value={...F.unread.value,[e]:(F.unread.value[e]??0)+t})}}),o(()=>F.activeChannelId.value,()=>{Z=0,X.value=0});let Q=t(!1),$=r(new Set);function _n(e){$.has(e)?$.delete(e):$.add(e)}function vn(){Q.value=!1,$.clear()}o(()=>F.activeChannelId.value,vn);function yn(){let e=F.messages.value.filter(e=>$.has(e.id));if(!e.length)return;let t=z.value?Dt(z.value):``;j(`ai-context`,{title:t,messages:e}),vn()}return(t,n)=>(m(),c(`div`,fe,[s(`aside`,pe,[x(t.$slots,`sidebar-top`,{},void 0,!0),s(`div`,me,[s(`div`,he,[s(`span`,null,v(e(M)(`channels`)),1),s(`span`,ge,[i(e(A),{icon:`ti ti-search`,variant:`text`,rounded:``,size:`small`,onClick:Lt}),i(e(A),{icon:`ti ti-plus`,variant:`text`,rounded:``,size:`small`,onClick:n[0]||=e=>B.value=`create`})])]),s(`ul`,_e,[(m(!0),c(g,null,l(St.value,t=>(m(),c(`li`,{key:t.id},[s(`button`,{class:d([`chan`,{active:t.id===e(F).activeChannelId.value}]),onClick:n=>e(F).selectChannel(t.id)},[s(`span`,ye,v(t.isPrivate?`🔒`:`#`),1),s(`span`,be,v(t.name),1),e(F).unread.value[t.id]?(m(),c(`span`,xe,v(e(F).unread.value[t.id]),1)):S(``,!0)],10,ve)]))),128))])]),s(`div`,Se,[s(`div`,Ce,[s(`span`,null,v(e(M)(`directMessages`)),1),i(e(A),{icon:`ti ti-plus`,variant:`text`,rounded:``,size:`small`,onClick:zt})]),s(`ul`,we,[(m(!0),c(g,null,l(Ct.value,t=>(m(),c(`li`,{key:t.id},[s(`button`,{class:d([`chan`,{active:t.id===e(F).activeChannelId.value}]),onClick:n=>e(F).selectChannel(t.id)},[s(`span`,Ee,v(Et(t)),1),e(F).unread.value[t.id]?(m(),c(`span`,De,v(e(F).unread.value[t.id]),1)):S(``,!0)],10,Te)]))),128))])])]),s(`div`,Oe,[R.value?(m(),c(`a`,{key:0,class:d([`retention-banner`,{enforcing:R.value.enforcing}]),href:`#`,onClick:n[1]||=w(e=>j(`upgrade`),[`prevent`])},[s(`span`,ke,v(R.value.text),1),s(`span`,Ae,v(e(M)(`retention.cta`)),1)],2)):S(``,!0),z.value?(m(),c(g,{key:1},[s(`header`,je,[s(`h2`,null,[z.value.kind===`channel`?(m(),c(`span`,Me,v(z.value.isPrivate?`🔒`:`#`),1)):S(``,!0),a(v(Dt(z.value)),1)]),s(`span`,Ne,[i(e(A),{icon:e(J)?`ti ti-volume`:`ti ti-volume-off`,variant:`text`,rounded:``,size:`small`,title:e(J)?e(M)(`soundOn`):e(M)(`soundOff`),onClick:Xt},null,8,[`icon`,`title`]),p.enableSelectToAi&&Q.value?(m(),c(g,{key:0},[s(`span`,Pe,v(e(M)(`selectedCount`,{count:$.size})),1),i(e(A),{label:e(M)(`sendToAi`),icon:`ti ti-sparkles`,size:`small`,disabled:!$.size,onClick:yn},null,8,[`label`,`disabled`]),i(e(A),{label:e(M)(`cancel`),size:`small`,variant:`text`,onClick:vn},null,8,[`label`])],64)):(m(),c(g,{key:1},[p.enableSelectToAi?(m(),b(e(A),{key:0,label:e(M)(`select`),icon:`ti ti-square-check`,size:`small`,variant:`text`,onClick:n[2]||=e=>Q.value=!0},null,8,[`label`])):S(``,!0),z.value.kind===`channel`?(m(),b(e(A),{key:1,label:e(M)(`invite`),size:`small`,variant:`outlined`,onClick:Rt},null,8,[`label`])):S(``,!0)],64))])]),s(`div`,{ref_key:`listEl`,ref:Y,class:`thread`,onScroll:gn},[e(F).loadingOlder.value?(m(),c(`div`,Fe,[...n[14]||=[s(`i`,{class:`ti ti-spin ti-loader-2`},null,-1)]])):S(``,!0),!e(F).messages.value.length&&!e(F).loading.value?(m(),c(`p`,Ie,v(e(M)(`empty`)),1)):S(``,!0),(m(!0),c(g,null,l(e(F).messages.value,t=>(m(),c(`div`,{key:t.id,class:d([`msg`,{selectable:p.enableSelectToAi&&Q.value,selected:$.has(t.id)}]),onClick:e=>p.enableSelectToAi&&Q.value&&_n(t.id)},[p.enableSelectToAi&&Q.value?(m(),c(`span`,{key:0,class:d([`msg-check`,{on:$.has(t.id)}])},[$.has(t.id)?(m(),c(`i`,Re)):S(``,!0)],2)):S(``,!0),s(`div`,{class:`msg-avatar`,style:h(cn(t.userId))},[ln.has(t.userId)?(m(),c(g,{key:1},[a(v(t.userName.charAt(0).toUpperCase()),1)],64)):(m(),c(`img`,{key:0,src:un(t.userId),alt:``,onError:e=>ln.add(t.userId)},null,40,ze))],4),s(`div`,Be,[s(`div`,Ve,[s(`span`,He,v(t.userName),1),s(`span`,Ue,v(sn(t.createdAt)),1)]),s(`div`,{class:`msg-content`,innerHTML:tn(t.content),onClick:n[3]||=e=>on(e)},null,8,We),an(t.content).length?(m(),c(`div`,Ge,[(m(!0),c(g,null,l(an(t.content),t=>(m(),c(`span`,{key:t.key,class:`card-col`},[n[15]||=s(`i`,{class:`ti ti-list`},null,-1),a(v(e(M)(`cardColumn`,{column:t.column})),1)]))),128))])):S(``,!0)])],10,Le))),128))],544),X.value>0?(m(),c(`button`,{key:0,class:`new-msgs`,onClick:n[4]||=e=>pn(!0)},[n[16]||=s(`i`,{class:`ti ti-arrow-down`},null,-1),a(` `+v(X.value)+` `+v(e(M)(`newMessages`)),1)])):S(``,!0),s(`form`,{class:`composer`,onSubmit:w(Jt,[`prevent`])},[i(e(ne),{ref_key:`composerInput`,ref:Kt,modelValue:q.value,"onUpdate:modelValue":n[5]||=e=>q.value=e,placeholder:e(M)(`placeholder`),disabled:e(F).sending.value,rows:`1`,"auto-resize":``,onKeydown:C(Yt,[`enter`])},null,8,[`modelValue`,`placeholder`,`disabled`]),i(e(A),{type:`submit`,label:e(M)(`send`),disabled:e(F).sending.value||!q.value.trim()},null,8,[`label`,`disabled`])],32),e(F).error.value?(m(),c(`p`,Ke,v(e(F).error.value),1)):S(``,!0)],64)):(m(),c(`div`,qe,v(e(M)(`pickChannel`)),1))]),i(e(k),{visible:kt.value,"onUpdate:visible":n[8]||=e=>kt.value=e,header:e(M)(`createChannel`),modal:``,style:{width:`26rem`}},{default:_(()=>[s(`form`,{class:`dlg-form`,onSubmit:w(Ht,[`prevent`])},[s(`div`,Je,[n[17]||=s(`span`,null,`#`,-1),i(e(E),{modelValue:V.value,"onUpdate:modelValue":n[6]||=e=>V.value=e,placeholder:e(M)(`channelName`)},null,8,[`modelValue`,`placeholder`])]),s(`label`,Ye,[i(e(ee),{modelValue:H.value,"onUpdate:modelValue":n[7]||=e=>H.value=e,binary:``},null,8,[`modelValue`]),s(`span`,null,[s(`strong`,null,v(e(M)(`private`)),1),a(` · `+v(e(M)(`privateHint`)),1)])]),i(e(A),{type:`submit`,label:e(M)(`create`),disabled:!V.value.trim()},null,8,[`label`,`disabled`])],32)]),_:1},8,[`visible`,`header`]),i(e(k),{visible:At.value,"onUpdate:visible":n[9]||=e=>At.value=e,header:e(M)(`browse`),modal:``,style:{width:`26rem`}},{default:_(()=>[U.value.length?(m(),c(`ul`,Ze,[(m(!0),c(g,null,l(U.value,t=>(m(),c(`li`,{key:t.id},[s(`button`,{class:`pick-item`,onClick:e=>Ut(t.id)},[s(`span`,$e,`# `+v(t.name),1),s(`span`,et,v(e(M)(`join`)),1)],8,Qe)]))),128))])):(m(),c(`p`,Xe,v(e(M)(`noBrowse`)),1))]),_:1},8,[`visible`,`header`]),i(e(k),{visible:jt.value,"onUpdate:visible":n[11]||=e=>jt.value=e,header:e(M)(`newDm`),modal:``,style:{width:`26rem`}},{default:_(()=>[wt.value.length?(m(),c(g,{key:1},[s(`p`,nt,v(e(M)(`dmHint`)),1),i(e(D),{class:`search-field`},{default:_(()=>[i(e(T),{class:`ti ti-search`}),i(e(E),{modelValue:K.value,"onUpdate:modelValue":n[10]||=e=>K.value=e,placeholder:e(M)(`searchPeople`)},null,8,[`modelValue`,`placeholder`])]),_:1}),Ft.value.length?(m(),c(`ul`,it,[(m(!0),c(g,null,l(Ft.value,e=>(m(),c(`li`,{key:e.userId},[s(`button`,{class:d([`pick-item`,{selected:G.value.includes(e.userId)}]),onClick:t=>Vt(e.userId)},[s(`span`,ot,v(e.name.charAt(0).toUpperCase()),1),s(`span`,st,v(e.name),1),G.value.includes(e.userId)?(m(),c(`i`,ct)):S(``,!0)],10,at)]))),128))])):(m(),c(`p`,rt,v(e(M)(`noMatch`)),1)),i(e(A),{class:`dlg-cta`,label:G.value.length>1?e(M)(`startGroup`,{count:G.value.length}):e(M)(`startDm`),disabled:!G.value.length,onClick:Wt},null,8,[`label`,`disabled`])],64)):(m(),c(`p`,tt,v(e(M)(`noMembers`)),1))]),_:1},8,[`visible`,`header`]),i(e(k),{visible:Mt.value,"onUpdate:visible":n[13]||=e=>Mt.value=e,header:e(M)(`invite`),modal:``,style:{width:`26rem`}},{default:_(()=>[Ot.value.length?(m(),c(g,{key:1},[i(e(D),{class:`search-field`},{default:_(()=>[i(e(T),{class:`ti ti-search`}),i(e(E),{modelValue:K.value,"onUpdate:modelValue":n[12]||=e=>K.value=e,placeholder:e(M)(`searchPeople`)},null,8,[`modelValue`,`placeholder`])]),_:1}),Pt.value.length?(m(),c(`ul`,dt,[(m(!0),c(g,null,l(Pt.value,e=>(m(),c(`li`,{key:e.userId},[s(`button`,{class:d([`pick-item`,{selected:W.value.includes(e.userId)}]),onClick:t=>Bt(e.userId)},[s(`span`,pt,v(e.name.charAt(0).toUpperCase()),1),s(`span`,mt,v(e.name),1),W.value.includes(e.userId)?(m(),c(`i`,ht)):S(``,!0)],10,ft)]))),128))])):(m(),c(`p`,ut,v(e(M)(`noMatch`)),1)),i(e(A),{class:`dlg-cta`,label:W.value.length?e(M)(`addSelected`,{count:W.value.length}):e(M)(`addPeople`),disabled:!W.value.length,onClick:Gt},null,8,[`label`,`disabled`])],64)):(m(),c(`p`,lt,v(e(M)(`noInvitable`)),1))]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-054a1e52`]]),F={key:0,class:`stc-empty`},I={key:1,class:`stc-form`},L={key:0,class:`stc-field`},vt={class:`stc-field`},yt={class:`stc-preview-label`},R={key:0,class:`stc-trunc`},bt={class:`stc-preview`},xt=j(p({__name:`SendToChatDialog`,props:{client:{},t:{},currentUserId:{default:void 0},organizations:{default:()=>[]},orgId:{default:``},lockOrganization:{type:Boolean,default:!1},maxLength:{default:4e3}},emits:[`sent`],setup(n,{expose:r,emit:l}){let u=n,d=l,p=u.t,h=f(()=>u.client),g=t(!1),y=t(``),x=t(u.orgId),C=t(``),w=t(!1),T=t(null),E=t(!1),D=t([]),ee=t([]),j=f(()=>y.value.length>u.maxLength),ne=f(()=>j.value?`${y.value.slice(0,u.maxLength-20)}\n… (${p(`truncated`)})`:y.value);function re(e){return ee.value.find(t=>t.userId===e)?.name??`?`}function ie(e){let t=e.memberIds.filter(e=>e!==u.currentUserId);return t.length?t.map(re).join(`, `):`?`}let ae=f(()=>{let e=D.value.filter(e=>e.kind===`channel`).map(e=>({id:e.id,label:`${e.isPrivate?`🔒`:`#`} ${e.name}`})),t=D.value.filter(e=>e.kind===`dm`).map(e=>({id:e.id,label:ie(e)})),n=[];return e.length&&n.push({label:p(`channels`),items:e}),t.length&&n.push({label:p(`directMessages`),items:t}),n});async function M(e){if(D.value=[],ee.value=[],C.value=``,e){E.value=!0;try{let[t,n]=await Promise.all([h.value.$fetch(`/chat/channel/list`,{method:`GET`,query:{organizationId:e}}),h.value.organization.getFullOrganization({query:{organizationId:e}})]);if(D.value=t?.data?.channels??[],!n.error&&n.data){let e=n.data;ee.value=(e.members??[]).map(e=>({userId:e.userId,name:e.user?.name||e.user?.email||`?`}))}}finally{E.value=!1}}}o(x,e=>{M(e)}),o(()=>u.orgId,e=>{e&&u.lockOrganization&&(x.value=e)});async function oe(){if(C.value&&ne.value.trim()){w.value=!0,T.value=null;try{if((await h.value.$fetch(`/chat/message/send`,{method:`POST`,body:{channelId:C.value,content:ne.value}}))?.error)throw Error(p(`failed`));d(`sent`,C.value),g.value=!1}catch(e){T.value=e.message||p(`failed`)}finally{w.value=!1}}}function se(e){if(y.value=e,T.value=null,C.value=``,g.value=!0,!u.currentUserId)return;if(u.lockOrganization||x.value){let e=u.lockOrganization?u.orgId:x.value;x.value=e,M(e);return}let t=u.organizations[0];t&&(x.value=t.id)}return r({open:se}),(t,r)=>(m(),b(e(k),{visible:g.value,"onUpdate:visible":r[3]||=e=>g.value=e,header:e(p)(`title`),modal:``,style:{width:`30rem`}},{footer:_(()=>[i(e(A),{label:e(p)(`cancel`),variant:`text`,severity:`secondary`,disabled:w.value,onClick:r[2]||=e=>g.value=!1},null,8,[`label`,`disabled`]),n.currentUserId?(m(),b(e(A),{key:0,label:e(p)(`send`),icon:`ti ti-send`,loading:w.value,disabled:!C.value,onClick:oe},null,8,[`label`,`loading`,`disabled`])):S(``,!0)]),default:_(()=>[n.currentUserId?(m(),c(`div`,I,[n.lockOrganization?S(``,!0):(m(),c(`div`,L,[s(`label`,null,v(e(p)(`org`)),1),i(e(te),{modelValue:x.value,"onUpdate:modelValue":r[0]||=e=>x.value=e,options:n.organizations,"option-label":`name`,"option-value":`id`,placeholder:e(p)(`orgPlaceholder`),class:`stc-select`},null,8,[`modelValue`,`options`,`placeholder`])])),s(`div`,vt,[s(`label`,null,v(e(p)(`target`)),1),i(e(te),{modelValue:C.value,"onUpdate:modelValue":r[1]||=e=>C.value=e,options:ae.value,"option-label":`label`,"option-value":`id`,"option-group-label":`label`,"option-group-children":`items`,placeholder:e(p)(`targetPlaceholder`),disabled:!x.value||E.value,loading:E.value,class:`stc-select`,filter:``},null,8,[`modelValue`,`options`,`placeholder`,`disabled`,`loading`])]),s(`p`,yt,[a(v(e(p)(`preview`))+` `,1),j.value?(m(),c(`span`,R,`· `+v(e(p)(`truncated`)),1)):S(``,!0)]),s(`pre`,bt,v(ne.value),1),T.value?(m(),b(e(O),{key:1,severity:`error`},{default:_(()=>[a(v(T.value),1)]),_:1})):S(``,!0)])):(m(),c(`div`,F,v(e(p)(`notConnected`)),1))]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-d0a9c435`]]);export{de as i,P as n,le as r,xt as t};
|