Files
sm-bm-plugin/public/assets/DashboardView-DMXf4cww.js

3 lines
65 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{y as ze,z as Ae,B as Fe,T as xt,d as ue,n as a,c as s,C as de,b as n,t as v,p as ee,e as p,D as It,f as x,F,E as ae,s as me,j as pe,G as Ct,H as Se,i as L,x as m,l as dt,I as Et,J as jt,K as Le,r as $,L as Tt,M as Dt,R as Mt,N as mt,O as vt,P as St,Q as Bt,S as Lt,U as ce,V as xe,_ as oe,w as Pe,v as qe,W as Nt,h as He,X as je,Y as pt,Z as Q,$ as Ce,a0 as ye,a1 as Ye,o as Ue,a2 as Rt,a3 as Wt,a4 as Ee,a5 as tt,a6 as Ne,a7 as At,q as Pt,a8 as Ge,a9 as qt,aa as Ht,ab as Ut,ac as Ot,ad as Kt,u as Ft,ae as Zt,af as Vt,ag as Xt,k as Yt,m as Gt,ah as Qt,ai as Jt,aj as en,ak as tn,al as nn}from"./index-pecOIxjM.js";import{_ as an}from"./PageHead.vue_vue_type_script_setup_true_lang-B1ObQL_V.js";import{_ as sn}from"./LoadState.vue_vue_type_script_setup_true_lang-CcJJXXGw.js";import{_ as st}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-DiJt6mo2.js";import{e as we,s as ot,f as lt}from"./safeText-O-oWGdGq.js";import{n as ft}from"./tabs-nNm7HGNT.js";const on=5,Qe=t=>`${t}T12:00:00Z`;function it(t,i){return Ae(Qe(i),new Date(Qe(t)))}function ln(t,i,e,o=new Date){let l;if(i){const u=it(t.starts_on,t.ends_on)+1;l={value:`${Math.min(Math.max(it(t.starts_on,ze(o))+1,1),u)}/${u}`,caption:"dzień zjazdu"}}else{const u=Math.max(Ae(Qe(t.starts_on),o),0);l={value:String(u),caption:Fe(u,"dzień do zjazdu","dni do zjazdu","dni do zjazdu")}}const r=t.sessions_count,c=o.getTime(),h=e.filter(u=>Date.parse(u.due_at)>=c&&ze(u.due_at)<=t.ends_on).length;return[l,{value:String(r),caption:Fe(r,"zajęcia","zajęcia","zajęć")},{value:String(h),caption:Fe(h,"termin do końca zjazdu","terminy do końca zjazdu","terminów do końca zjazdu")}]}function rn(t,i){return i.filter(e=>{if(e.meeting_id!==null)return e.meeting_id===t.id;const o=ze(e.starts_at);return o>=t.starts_on&&o<=t.ends_on})}const un=/^https?:\/\//i;function rt(t){const i=[t.is_required?"obowiązkowa":"",t.author??"",t.course?.name??""].filter(o=>o!=="").join(" · "),e=t.url&&un.test(t.url)?t.url:null;return{key:`r${t.id}`,title:t.title,meta:i,href:e,to:`/lektury#lektura-${t.id}`}}function cn(t){const i=[xt[t.type]??"",t.course?.name??""].filter(e=>e!=="").join(" · ");return{key:`m${t.id}`,title:t.title,meta:i,href:null,to:`/materialy/${t.id}`}}function dn(t){return[...t.filter(i=>i.is_required),...t.filter(i=>!i.is_required)]}function mn(t,i,e,o,l=on){const r=e.filter(d=>d.meeting_id===t.id),c=o.filter(d=>d.meeting_id===t.id);let h,u;if(r.length||c.length)u=[...dn(r.filter(d=>d.read_at===null)).map(rt),...c.map(cn)],h=u.length?"meeting":"done";else{const d=new Set(rn(t,i).map(y=>y.course_id));u=e.filter(y=>y.is_required&&y.read_at===null&&d.has(y.course_id)).map(rt),h=u.length?"courses":"none"}const _=u.slice(l),f=_.length&&_.every(d=>d.key.startsWith("m"))?"/materialy":"/lektury";return{source:h,items:u.slice(0,l),more:_.length,moreTo:f}}const vn={class:"hero-main"},pn={class:"eyebrow hero-eyebrow"},fn={id:"hero-h",class:"hero-title"},hn={class:"hero-dates"},yn={key:0,class:"hero-extra muted"},bn={class:"hero-stats"},_n={class:"hero-num"},kn={class:"hero-cap"},gn={class:"hero-cap"},$n=["aria-valuenow"],wn={class:"hero-timeline"},zn={class:"eyebrow"},xn={key:0,class:"hero-rows"},In=["href"],Cn={key:2,class:"hero-read-meta"},En={key:0,class:"hero-more"},jn={key:1,class:"muted"},Tn={key:1,class:"card hero hero-empty","aria-labelledby":"hero-h"},Dn={class:"hero-main"},Mn=ue({__name:"ZjazdHero",props:{meeting:{},isCurrent:{type:Boolean},schedule:{},deadlines:{},readings:{},materials:{},now:{},checklist:{}},setup(t){const i=t,e=m(()=>Et(i.meeting?.notes)),o=m(()=>jt(i.meeting?.notes)),l=m(()=>i.meeting?ln(i.meeting,i.isCurrent,i.deadlines,i.now):[]),r=m(()=>i.meeting&&i.materials?mn(i.meeting,i.schedule,i.readings,i.materials):null),c=m(()=>({name:"schedule",query:{zjazd:i.meeting?.number}}));return(h,u)=>{const _=dt("router-link");return t.meeting?(a(),s("section",{key:0,class:de(["card hero",{hl:t.isCurrent}]),"aria-labelledby":"hero-h"},[n("div",vn,[n("span",pn,v(t.isCurrent?"Trwa zjazd":"Najbliższy zjazd"),1),n("h2",fn,"Zjazd "+v(t.meeting.number),1),n("p",hn,[ee(v(p(It)(t.meeting.starts_on,t.meeting.ends_on))+" ",1),e.value?(a(),s("span",{key:0,class:de(["badge",e.value==="online"?"online":"onsite"])},v(e.value),3)):x("",!0)]),o.value?(a(),s("p",yn,v(o.value),1)):x("",!0),n("ul",bn,[(a(!0),s(F,null,ae(l.value,f=>(a(),s("li",{key:f.caption},[n("span",_n,v(f.value),1),n("span",kn,v(f.caption),1)]))),128))]),t.checklist?(a(),me(_,{key:1,class:"hero-prep",to:`/checklisty/${t.checklist.id}`,"aria-label":"Przygotowanie do zjazdu"},{default:pe(()=>[n("span",gn,"Przygotowanie · "+v(p(Ct)(t.checklist.progress)),1),n("span",{class:"progress-bar",role:"progressbar","aria-valuenow":t.checklist.progress.percent,"aria-valuemin":"0","aria-valuemax":"100"},[n("span",{style:Se({width:t.checklist.progress.percent+"%"})},null,4)],8,$n)]),_:1},8,["to"])):x("",!0),L(_,{class:"btn hero-btn",to:c.value},{default:pe(()=>[...u[0]||(u[0]=[ee("Zobacz plan zjazdu",-1)])]),_:1},8,["to"])]),n("div",wn,[n("span",zn,v(r.value?.source==="courses"?"Czytaj teraz":"Do przeczytania na zjazd"),1),r.value?(a(),s(F,{key:0},[r.value.items.length?(a(),s("ul",xn,[(a(!0),s(F,null,ae(r.value.items,f=>(a(),s("li",{key:f.key},[f.href?(a(),s("a",{key:0,class:"hero-read-title",href:f.href,target:"_blank",rel:"noopener"},v(f.title),9,In)):(a(),me(_,{key:1,class:"hero-read-title",to:f.to},{default:pe(()=>[ee(v(f.title),1)]),_:2},1032,["to"])),f.meta?(a(),s("span",Cn,v(f.meta),1)):x("",!0)]))),128)),r.value.more>0?(a(),s("li",En,[L(_,{to:r.value.moreTo},{default:pe(()=>[ee("+ "+v(r.value.more)+" więcej",1)]),_:1},8,["to"])])):x("",!0)])):(a(),s("p",jn,v(r.value.source==="done"?"Wszystko na ten zjazd przeczytane.":"Nic do przeczytania na ten zjazd."),1))],64)):x("",!0)])],2)):(a(),s("section",Tn,[n("div",Dn,[u[2]||(u[2]=n("h2",{id:"hero-h",class:"hero-empty-h"},"Brak zaplanowanych zjazdów",-1)),u[3]||(u[3]=n("p",{class:"muted"},"Plan kolejnych zjazdów pojawi się tutaj, gdy zostanie opublikowany.",-1)),L(_,{class:"btn hero-btn",to:"/plan"},{default:pe(()=>[...u[1]||(u[1]=[ee("Cały plan",-1)])]),_:1})])]))}}});function ht(t){const i=t.indexOf("@");return i>0?t.slice(0,i):t}function $e(t,i=""){const e=t?.name?.trim()??"",o=t?.surname?.trim()??"";if(e&&t?.is_bot)return e;if(e&&o)return`${e} ${o[0]}.`;if(e)return e;if(t?.handle)return`@${t.handle}`;const l=i.trim();return l?ht(l):"Nieznana osoba"}function Re(t,i=""){return[t?.name?.trim(),t?.surname?.trim()].filter(Boolean).join(" ")||$e(t,i)}function yt(t,i=""){const e=t?.name?.trim()??"",o=t?.surname?.trim()??"";let l="";return e||o?l=e.slice(0,1)+o.slice(0,1):t?.handle?l=t.handle.slice(0,2):l=ht(i.trim()).slice(0,2),(l||"?").toLocaleUpperCase("pl-PL")}function Sn(t){return Math.abs(Math.trunc(t))%8+1}function Bn(t,i=new Date){const e=Ae(t,i);if(e===0)return"DZIŚ";if(e===-1)return"WCZORAJ";const o=ze(t).slice(0,4);return(o===ze(i).slice(0,4)?Le(t):`${Le(t)} ${o}`).toLocaleUpperCase("pl-PL")}const Ln=300*1e3;function Nn(t,i=new Date){const e=[];let o=null,l="";for(const r of t){const c=ze(r.created_at),h=c!==l;h&&e.push({kind:"day",key:`day-${c}`,label:Bn(r.created_at,i)});const u=!h&&o!==null&&o.sender_id===r.sender_id&&Date.parse(r.created_at)-Date.parse(o.created_at)<=Ln;e.push({kind:"message",key:`m-${r.id}`,message:r,followUp:u}),o=r,l=c}return e}function Ze(t){return t.toLocaleLowerCase("pl-PL").replace(/ł/g,"l").normalize("NFD").replace(/\p{Diacritic}/gu,"")}function Je(t,i,e){const o=Ze(i.trim()),l=[];for(const r of t){if(r.id===e)continue;const c=Ze(r.name??""),h=Ze(r.surname??"");(!o||c.startsWith(o)||h.startsWith(o)||`${c} ${h}`.startsWith(o))&&l.push(r)}return l.sort((r,c)=>Re(r).localeCompare(Re(c),"pl"))}const Rn=10;function Wn(t,i){const e=t.slice(0,Rn).map(l=>$e(i.get(l))),o=t.length-e.length;return o>0?`${e.join(", ")} i ${o} innych`:e.join(", ")}const ut=' target="_blank" rel="noopener noreferrer nofollow"',bt=/(?<![A-Za-z0-9_.@])@([A-Za-z0-9_.-]{2,255})/g,_t=/`([^`\n]+)`/g,An=/\[([^\]\n]+)\]\(([^()\s]*(?:\([^()\s]*\)[^()\s]*)*)\)/g,Pn=/(?<![\w/@.])https?:\/\/[^\s<>"'`]+/gi;function kt(t,i){if(i(t))return{handle:t,rest:""};const e=t.replace(/[.-]+$/,"");return e.length>=2&&e!==t&&i(e)?{handle:e,rest:t.slice(e.length)}:null}function qn(t){let i=t;for(;;){const e=i.at(-1);if(!e)break;if(`.,;:!?'"]}`.includes(e)){i=i.slice(0,-1);continue}if(e===")"&&(i.match(/\(/g)?.length??0)<(i.match(/\)/g)?.length??0)){i=i.slice(0,-1);continue}break}return{url:i,rest:t.slice(i.length)}}function Hn(t,i=new Map){if(!t)return"";const e=[],o=c=>c.replace(/\u0000(\d+)\u0000/g,(h,u)=>e[Number(u)]??""),l=c=>`\0${e.push(o(c))-1}\0`;let r=t.replace(/\r\n?/g,`
`).replace(/\u0000/g,"");return r=r.replace(_t,(c,h)=>l(`<code>${we(h)}</code>`)),r=r.replace(An,(c,h,u)=>{if(u.includes("\0"))return c;const _=ot(u),f=lt(we(h));if(!_)return l(f);const d=/^https?:/i.test(_)?ut:"";return l(`<a href="${we(_)}"${d}>${f}</a>`)}),r=r.replace(Pn,c=>{if(c.includes("\0"))return c;const{url:h,rest:u}=qn(c),_=ot(h);return _?l(`<a href="${we(_)}"${ut}>${we(h)}</a>`)+u:c}),r=r.replace(bt,(c,h)=>{const u=kt(h,d=>i.has(d));if(!u)return c;const _=i.get(u.handle),f=`@${$e(_)}`;return l(`<span class="mention" title="@${we(u.handle)}">${we(f)}</span>`)+u.rest}),r=lt(we(r)).replace(/\n/g,"<br>"),o(r)}function Un(t,i){if(!t||!i)return!1;const e=t.replace(_t," ");for(const o of e.matchAll(bt))if(kt(o[1],l=>l===i))return!0;return!1}function On(t,i){const e=t.slice(0,Math.max(0,i)),o=/(^|\s)@([^\s@]*)$/u.exec(e);return o?{start:e.length-o[2].length-1,query:o[2]}:null}function Kn(t,i,e){const o=t.slice(0,i.start),l=t.slice(i.end),r=`@${e}`;return l.startsWith(" ")?{text:o+r+l,caret:o.length+r.length+1}:{text:`${o}${r} ${l}`,caret:o.length+r.length+1}}function nt(t){const i=$(!1);if(typeof window>"u"||typeof window.matchMedia!="function")return i;const e=window.matchMedia(t);i.value=e.matches;const o=l=>{i.value=l.matches};return e.addEventListener("change",o),Tt()&&Dt(()=>e.removeEventListener("change",o)),i}function Fn(t){return nt(`(min-width: ${t}px)`)}const Zn={class:"embed-main"},Vn={class:"embed-type"},Xn={class:"embed-title"},Yn={key:0,class:"embed-meta"},Gn={key:1,class:"embed-card static"},Qn={class:"embed-main"},Jn={class:"embed-type"},ea={class:"embed-title"},ta={key:0,class:"embed-meta"},na={key:2,class:"embed-card unavailable"},aa={class:"embed-main"},sa={class:"embed-type"},oa={key:3,class:"embed-card loading","aria-busy":"true"},la={class:"embed-main"},ia={class:"embed-type"},gt=ue({__name:"EmbedCard",props:{embedRef:{},item:{},static:{type:Boolean}},setup(t){const i=t,e=m(()=>mt[i.embedRef.type]),o=m(()=>i.item===void 0),l=m(()=>i.item??null),r=m(()=>l.value?vt(l.value):""),c=m(()=>l.value?St(l.value):""),h=m(()=>l.value?Bt(l.value):null),u=m(()=>l.value?Lt(l.value):"");return(_,f)=>l.value&&!t.static?(a(),me(p(Mt),{key:0,class:"embed-card",to:u.value},{default:pe(()=>[n("span",Zn,[n("span",Vn,v(e.value),1),n("span",Xn,v(r.value),1),c.value?(a(),s("span",Yn,v(c.value),1)):x("",!0)]),h.value?(a(),s("span",{key:0,class:de(["badge",{warn:h.value.warn}])},v(h.value.text),3)):x("",!0)]),_:1},8,["to"])):l.value?(a(),s("span",Gn,[n("span",Qn,[n("span",Jn,v(e.value),1),n("span",ea,v(r.value),1),c.value?(a(),s("span",ta,v(c.value),1)):x("",!0)]),h.value?(a(),s("span",{key:0,class:de(["badge",{warn:h.value.warn}])},v(h.value.text),3)):x("",!0)])):o.value?(a(),s("span",oa,[n("span",la,[n("span",ia,v(e.value),1),f[2]||(f[2]=n("span",{class:"embed-title"},[n("span",{class:"skeleton embed-skeleton","aria-label":"Wczytywanie"})],-1)),f[3]||(f[3]=n("span",{class:"embed-meta"}," ",-1))])])):(a(),s("div",na,[n("span",aa,[n("span",sa,v(e.value),1),f[0]||(f[0]=n("span",{class:"embed-title"},"Element niedostępny",-1)),f[1]||(f[1]=n("span",{class:"embed-meta"},"Ten element usunięto albo nie masz do niego dostępu.",-1))])]))}}),ra=["aria-labelledby"],ua={class:"chat-dialog-head"},ca=["id"],da={class:"embed-tabs",role:"tablist","aria-label":"Rodzaj elementu"},ma=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],va=["id","aria-labelledby"],pa={class:"field"},fa=["for"],ha=["id","placeholder"],ya={class:"picker-results"},ba={key:0,class:"embed-searching",role:"status"},_a={key:1,class:"chat-skeletons picker-skeletons","aria-busy":"true","aria-label":"Szukam…"},ka={key:2,class:"notice error",role:"alert"},ga={key:3,class:"empty"},$a={key:4,class:"empty"},wa={key:5,class:"picker-rows"},za=["aria-disabled","onClick"],xa={key:0,class:"embed-staged"},Ia=250,Ca=ue({__name:"EmbedPicker",props:{staged:{}},emits:["pick"],setup(t,{expose:i,emit:e}){const o=t,l=e,r=[{type:"deadline",label:"Terminy",placeholder:"Szukaj terminu…"},{type:"class",label:"Zajęcia",placeholder:"Szukaj zajęć…"},{type:"reading",label:"Lektury",placeholder:"Szukaj lektury…"}],c=je(),h=$(null),u=$(null),_=$([]),f=$("deadline"),d=$(""),y=$(null),C=$("idle"),U=$("");let O=0,k=null,I=null,E=!1;const R=m(()=>r.find(T=>T.type===f.value)??r[0]),q=m(()=>new Set(o.staged));async function W(){k&&clearTimeout(k),k=null;const T=++O,H=f.value,M=d.value.trim();C.value="loading";try{const te=await pt.embeds(H,M);if(T!==O)return;y.value=Array.isArray(te)?te.filter(j=>j&&j.type===H):[],U.value=M,C.value="ready"}catch{if(T!==O)return;C.value="error"}}function le(){k&&clearTimeout(k),k=setTimeout(()=>{W()},Ia)}ce(d,le);function G(T,H=!1){f.value!==T&&(f.value=T,y.value=null,W()),H&&Q(()=>_.value[r.findIndex(M=>M.type===T)]?.focus())}function ne(T,H){let M=-1;T.key==="ArrowRight"?M=(H+1)%r.length:T.key==="ArrowLeft"?M=(H-1+r.length)%r.length:T.key==="Home"?M=0:T.key==="End"&&(M=r.length-1),!(M<0)&&(T.preventDefault(),G(r[M].type,!0))}function V(){I=document.activeElement instanceof HTMLElement?document.activeElement:null,E=!1,d.value="",y.value=null,h.value?.showModal(),W(),Q(()=>u.value?.focus())}function se(){h.value?.close()}function ve(){k&&clearTimeout(k),k=null,O++,E||I?.focus(),I=null}function N(T){T.target===h.value&&se()}function S(T){return q.value.has(Ce(T))}function A(T){S(T)||(E=!0,se(),l("pick",T))}return xe(()=>{k&&clearTimeout(k)}),i({open:V}),(T,H)=>(a(),s("dialog",{ref_key:"dialog",ref:h,class:"chat-dialog embed-picker","aria-labelledby":`embed-h-${p(c)}`,onClose:ve,onClick:N},[n("div",ua,[n("h2",{id:`embed-h-${p(c)}`,class:"chat-dialog-title"},"Podepnij do wiadomości",8,ca),n("button",{class:"icon-btn",type:"button","aria-label":"Zamknij",onClick:se},[L(oe,{name:"close"})])]),n("div",da,[(a(),s(F,null,ae(r,(M,te)=>n("button",{id:`embed-tab-${p(c)}-${M.type}`,key:M.type,ref_for:!0,ref_key:"tabEls",ref:_,class:"embed-tab",type:"button",role:"tab","aria-selected":f.value===M.type?"true":"false","aria-controls":`embed-panel-${p(c)}`,tabindex:f.value===M.type?0:-1,onClick:j=>G(M.type),onKeydown:j=>ne(j,te)},v(M.label),41,ma)),64))]),n("div",{id:`embed-panel-${p(c)}`,class:"embed-panel",role:"tabpanel","aria-labelledby":`embed-tab-${p(c)}-${f.value}`},[n("div",pa,[n("label",{for:`embed-q-${p(c)}`},"Szukaj",8,fa),Pe(n("input",{id:`embed-q-${p(c)}`,ref_key:"search",ref:u,"onUpdate:modelValue":H[0]||(H[0]=M=>d.value=M),type:"text",autocomplete:"off",placeholder:R.value.placeholder,onKeydown:H[1]||(H[1]=Nt(He(()=>{},["prevent"]),["enter"]))},null,40,ha),[[qe,d.value]])]),n("div",ya,[C.value==="loading"&&y.value?(a(),s("p",ba,"Szukam…")):x("",!0),C.value==="loading"&&!y.value?(a(),s("div",_a,[...H[2]||(H[2]=[n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1)])])):C.value==="error"?(a(),s("div",ka,[H[3]||(H[3]=ee(" Nie udało się wczytać wyników. ",-1)),n("button",{class:"linkish",type:"button",onClick:W},"Spróbuj ponownie")])):y.value&&!y.value.length&&U.value?(a(),s("p",ga,"Nic nie znaleziono dla „"+v(U.value)+"”.",1)):y.value&&!y.value.length?(a(),s("p",$a,"Nic tu jeszcze nie ma.")):y.value?(a(),s("ul",wa,[(a(!0),s(F,null,ae(y.value,M=>(a(),s("li",{key:`${M.type}:${M.id}`},[n("button",{class:"picker-row embed-pick",type:"button","aria-disabled":S(M)?"true":void 0,onClick:te=>A(M)},[L(gt,{"embed-ref":M,item:M,static:""},null,8,["embed-ref","item"]),S(M)?(a(),s("span",xa,"podpięte")):x("",!0)],8,za)]))),128))])):x("",!0)])],8,va)],40,ra))}}),Be=ue({__name:"Avatar",props:{userId:{},member:{default:null},fallback:{default:""},size:{default:32},me:{type:Boolean,default:!1}},setup(t){const i=t,e=m(()=>yt(i.member,i.fallback)),o=m(()=>i.me?void 0:{background:`var(--av-${Sn(i.userId)})`});return(l,r)=>(a(),s("span",{class:de(["avatar",[`s${t.size}`,{me:t.me}]]),style:Se(o.value),"aria-hidden":"true"},v(e.value),7))}}),Ea=["id"],ja={key:0,class:"mention-empty",role:"option","aria-disabled":"true","aria-selected":"false"},Ta=["id","aria-selected","onMousedown","onMousemove"],Da={class:"mention-name"},Ma={class:"mention-handle"},Sa=ue({__name:"MentionPopup",props:{id:{},options:{},active:{},query:{}},emits:["pick","hover"],setup(t,{emit:i}){const e=i;function o(l,r){return`${l}-opt-${r}`}return(l,r)=>(a(),s("ul",{id:t.id,class:"mention-pop",role:"listbox","aria-label":"Wspomnij osobę"},[t.options.length?x("",!0):(a(),s("li",ja,"Brak osób pasujących do „"+v(t.query)+"”.",1)),(a(!0),s(F,null,ae(t.options,(c,h)=>(a(),s("li",{id:o(t.id,h),key:c.id,class:de(["mention-option",{active:h===t.active}]),role:"option","aria-selected":h===t.active?"true":"false",onMousedown:He(u=>e("pick",c),["prevent"]),onMousemove:u=>h!==t.active&&e("hover",h)},[L(Be,{"user-id":c.id,member:c,size:24},null,8,["user-id","member"]),n("span",Da,v(p(Re)(c)),1),n("span",Ma,"@"+v(c.handle),1)],42,Ta))),128))],8,Ea))}}),Ba={key:0,class:"staging","aria-label":"Załączniki i podpięcia"},La=["title"],Na={key:0,class:"staging-size"},Ra=["onClick"],Wa={key:2,class:"staging-size"},Aa=["aria-label","disabled","onClick"],Pa={class:"staging-type"},qa=["title"],Ha=["aria-label","disabled","onClick"],ct=ue({__name:"StagingChips",props:{conversationId:{}},emits:["removed"],setup(t,{emit:i}){const e=t,o=i,l=ye(),r=m(()=>l.draft(e.conversationId));function c(_){const f=l.embedItem(_);return f===void 0?"Wczytywanie…":f===null?"Element niedostępny":vt(f)}function h(_){l.unstageEmbed(e.conversationId,_),o("removed")}function u(_){l.removeFile(e.conversationId,_.localId),o("removed")}return(_,f)=>r.value.files.length||r.value.embeds.length?(a(),s("ul",Ba,[(a(!0),s(F,null,ae(r.value.files,d=>(a(),s("li",{key:`file-${d.localId}`,class:de(["staging-chip file",d.state])},[n("span",{class:"staging-name file-name",title:d.name},v(d.name),9,La),d.state==="uploading"?(a(),s("span",Na,"Wysyłanie… "+v(d.progress)+"%",1)):d.state==="failed"?(a(),s(F,{key:1},[f[0]||(f[0]=n("span",{class:"staging-failed"},"Nie wysłano",-1)),n("button",{class:"linkish",type:"button",onClick:y=>p(l).retryUpload(t.conversationId,d.localId)},"Spróbuj ponownie",8,Ra)],64)):(a(),s("span",Wa,v(p(Ye)(d.size)),1)),n("button",{class:"staging-remove",type:"button","aria-label":`Usuń załącznik ${d.name}`,disabled:r.value.sending,onClick:y=>u(d)},[L(oe,{name:"close"})],8,Aa),d.state==="uploading"?(a(),s("span",{key:3,class:"staging-progress",style:Se({width:`${d.progress}%`}),"aria-hidden":"true"},null,4)):x("",!0)],2))),128)),(a(!0),s(F,null,ae(r.value.embeds,d=>(a(),s("li",{key:p(Ce)(d),class:"staging-chip embed"},[n("span",Pa,v(p(mt)[d.type]),1),n("span",{class:"staging-name embed-name",title:c(d)},v(c(d)),9,qa),n("button",{class:"staging-remove",type:"button","aria-label":`Usuń podpięcie ${c(d)}`,disabled:r.value.sending,onClick:y=>h(d)},[L(oe,{name:"close"})],8,Ha)]))),128))])):x("",!0)}}),Ua={key:0,class:"error-text",role:"alert"},Oa={class:"composer-row"},Ka={key:0,class:"composer-add"},Fa=["aria-expanded","disabled"],Za=["disabled","title","onClick"],Va={class:"composer-field"},Xa=["rows","placeholder","readonly","aria-expanded","aria-activedescendant"],Ya={key:2,class:"composer-tools"},Ga=["disabled"],Qa=["title","disabled"],Ja=["disabled"],es=["aria-busy","disabled"],ts=["aria-busy","disabled"],Ve="Możesz podpiąć najwyżej 3 elementy do jednej wiadomości.",ns=24,as=6,ss=ue({__name:"ChatComposer",props:{conversationId:{},label:{},placeholder:{}},emits:["sent"],setup(t,{expose:i,emit:e}){const o=t,l=e,r=ye(),c=je(),h=`composer-${c}`,u=`composer-hint-${c}`,_=`mentions-${c}`,f=$(null),d=nt("(min-width: 1100px) and (pointer: fine)"),y=m(()=>r.draft(o.conversationId)),C=$(""),U=m(()=>y.value.error||C.value),O=m({get:()=>y.value.text,set:b=>{C.value="",r.setDraftText(o.conversationId,b),b.trim()&&r.emitTyping(o.conversationId,b)}}),k=m(()=>r.canSend(o.conversationId)),I=$(null);function E(){y.value.sending||I.value?.click()}function R(){const b=I.value;b?.files?.length&&(C.value="",r.uploadFiles(o.conversationId,[...b.files]),b.value="",Q(Te))}const q=`composer-menu-${c}`,W=$(!1),le=$(null),G=$([]);function ne(){W.value=!0,Q(()=>G.value[0]?.focus())}function V(b=!0){W.value&&(W.value=!1,b&&Q(()=>le.value?.focus()))}function se(b){const z=G.value.filter(re=>!re.disabled),K=z.indexOf(document.activeElement);if(b.key==="Escape")b.preventDefault(),b.stopPropagation(),V();else if(b.key==="ArrowDown"||b.key==="ArrowUp"){if(b.preventDefault(),!z.length)return;const re=b.key==="ArrowDown"?(K+1)%z.length:(K-1+z.length)%z.length;z[re]?.focus()}else b.key==="Home"||b.key==="End"?(b.preventDefault(),z[b.key==="Home"?0:z.length-1]?.focus()):b.key==="Tab"&&V(!1)}function ve(){V(!1),E()}function N(){V(!1),le.value?.focus(),j()}const S=m(()=>[{label:"Dołącz plik",icon:"paperclip",disabled:!1,title:void 0,run:ve},{label:"Podepnij termin, zajęcia lub lekturę",icon:"calendar",disabled:M.value,title:M.value?Ve:void 0,run:N}]);function A(b){const z=b.target;z instanceof Node&&(le.value?.contains(z)||G.value.some(K=>K.contains(z)))||V(!1)}ce(W,b=>{b?document.addEventListener("pointerdown",A,!0):document.removeEventListener("pointerdown",A,!0)}),ce(d,()=>V(!1)),xe(()=>document.removeEventListener("pointerdown",A,!0));const T=$(null),H=m(()=>y.value.embeds.map(Ce)),M=m(()=>y.value.embeds.length>=r.maxEmbeds),te=m(()=>M.value?Ve:"Podepnij termin, zajęcia lub lekturę");function j(){M.value||y.value.sending||T.value?.open()}function B(b){C.value="",r.stageEmbed(o.conversationId,{type:b.type,id:b.id},b),Q(Te)}function X(b){if(y.value.sending)return;const z=b.clipboardData?.getData("text/plain")??"";if(!z)return;const K=Rt(z,window.location.origin);if(!K.refs.length)return;const re=new Set(H.value);let De=0,Ie=0;for(const Ke of K.refs)re.has(Ce(Ke))||(r.stageEmbed(o.conversationId,Ke)?(re.add(Ce(Ke)),De++):Ie++);K.insertText===""&&(De>0||Ie===0)&&b.preventDefault(),Ie>0&&setTimeout(()=>C.value=Ve)}function P(){const b=f.value;if(!b)return;b.style.height="auto";const z=getComputedStyle(b),K=parseFloat(z.paddingTop)+parseFloat(z.paddingBottom),re=ns*(d.value?8:4)+K;b.style.height=`${Math.min(b.scrollHeight,re)}px`,b.style.overflowY=b.scrollHeight>re?"auto":"hidden"}ce([O,d],()=>{Q(P)}),Ue(P);const Y=$(null),ie=$(0);let fe=null;const be=m(()=>Y.value?Je(r.members.values(),Y.value.query,r.userId).slice(0,as):[]),g=m(()=>Y.value!==null&&r.membersState==="ready"),w=m(()=>g.value&&be.value.length?`${_}-opt-${ie.value}`:void 0);function Z(){const b=f.value;if(!b)return;const z=b.selectionStart===b.selectionEnd?On(b.value,b.selectionStart??0):null;if(!z){fe=null,Y.value=null;return}z.start!==fe&&((!Y.value||Y.value.start!==z.start||Y.value.query!==z.query)&&(ie.value=0),Y.value=z)}function _e(){Y.value&&(fe=Y.value.start),Y.value=null}function D(b){const z=f.value,K=Y.value;if(!z||!K||!b.handle)return;const re=Kn(z.value,{start:K.start,end:z.selectionStart??K.start+K.query.length+1},b.handle);O.value=re.text,Y.value=null,fe=null,Q(()=>{z.focus(),z.setSelectionRange(re.caret,re.caret)})}function he(){const b=f.value;if(!b)return;const z=b.selectionStart??b.value.length,K=b.selectionEnd??z,re=b.value.slice(0,z),De=re===""||/\s$/.test(re)?"@":" @";O.value=re+De+b.value.slice(K),r.loadMembers(),Q(()=>{const Ie=z+De.length;b.focus(),b.setSelectionRange(Ie,Ie),fe=null,Z()})}function J(b){if(!g.value)return!1;const z=be.value.length;switch(b.key){case"ArrowDown":return z&&(ie.value=(ie.value+1)%z),!0;case"ArrowUp":return z&&(ie.value=(ie.value-1+z)%z),!0;case"Enter":return b.shiftKey&&!z?!1:(z?D(be.value[ie.value]):_e(),!0);case"Tab":return z?(D(be.value[ie.value]),!0):(_e(),!1);case"Escape":return b.stopPropagation(),_e(),!0;default:return!1}}ce(()=>o.conversationId,()=>{Y.value=null,fe=null});async function ke(){k.value&&await r.send(o.conversationId)&&l("sent")}function wt(b){if(!b.isComposing){if(J(b)){b.preventDefault();return}b.key!=="Enter"||b.shiftKey||(b.preventDefault(),ke())}}function zt(b){(["ArrowLeft","ArrowRight","Home","End"].includes(b.key)||!g.value&&["ArrowUp","ArrowDown"].includes(b.key))&&Z()}function Te(){f.value?.focus()}return i({focus:Te}),(b,z)=>(a(),s("form",{class:de(["composer",{compact:!p(d)}]),onSubmit:He(ke,["prevent"])},[n("label",{class:de(p(d)?"composer-label":"sr-only"),for:h},v(t.label),3),U.value?(a(),s("p",Ua,v(U.value),1)):x("",!0),p(d)?x("",!0):(a(),me(ct,{key:1,"conversation-id":t.conversationId,onRemoved:Te},null,8,["conversation-id"])),n("div",Oa,[p(d)?x("",!0):(a(),s("div",Ka,[n("button",{ref_key:"menuButton",ref:le,class:"composer-plus",type:"button","aria-label":"Dodaj do wiadomości","aria-haspopup":"menu","aria-expanded":W.value?"true":"false","aria-controls":q,disabled:y.value.sending,onClick:z[0]||(z[0]=K=>W.value?V():ne())},[L(oe,{name:"plus"})],8,Fa),W.value?(a(),s("div",{key:0,id:q,class:"composer-menu",role:"menu","aria-label":"Dodaj do wiadomości",onKeydown:se},[(a(!0),s(F,null,ae(S.value,K=>(a(),s("button",{key:K.label,ref_for:!0,ref_key:"menuItems",ref:G,class:"composer-menu-item",type:"button",role:"menuitem",tabindex:"-1",disabled:K.disabled,title:K.title,onClick:K.run},[L(oe,{name:K.icon},null,8,["name"]),ee(v(K.label),1)],8,Za))),128))],32)):x("",!0)])),n("div",Va,[p(d)?(a(),me(ct,{key:0,"conversation-id":t.conversationId,onRemoved:Te},null,8,["conversation-id"])):x("",!0),g.value&&Y.value?(a(),me(Sa,{key:1,id:_,options:be.value,active:ie.value,query:Y.value.query,onPick:D,onHover:z[1]||(z[1]=K=>ie.value=K)},null,8,["options","active","query"])):x("",!0),Pe(n("textarea",{id:h,ref_key:"input",ref:f,"onUpdate:modelValue":z[2]||(z[2]=K=>O.value=K),rows:p(d)?3:1,placeholder:p(d)?"Napisz wiadomość…":t.placeholder,enterkeyhint:"send",readonly:y.value.sending,"aria-describedby":u,role:"combobox","aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":_,"aria-expanded":g.value?"true":"false","aria-activedescendant":w.value,onKeydown:wt,onKeyup:zt,onInput:Z,onClick:Z,onPaste:X,onBlur:z[3]||(z[3]=K=>Y.value=null)},null,40,Xa),[[qe,O.value]]),p(d)?(a(),s("div",Ya,[n("button",{class:"composer-tool",type:"button","aria-label":"Dołącz plik",title:"Dołącz plik",disabled:y.value.sending,onClick:E},[L(oe,{name:"paperclip"})],8,Ga),n("button",{class:"composer-tool",type:"button","aria-label":"Podepnij termin, zajęcia lub lekturę",title:te.value,disabled:y.value.sending||M.value,onClick:j},[L(oe,{name:"calendar"})],8,Qa),n("button",{class:"composer-tool",type:"button","aria-label":"Wspomnij osobę",title:"Wspomnij osobę",disabled:y.value.sending,onClick:he},[L(oe,{name:"at"})],8,Ja),z[5]||(z[5]=n("span",{class:"composer-tools-gap"},null,-1)),n("button",{class:"btn primary small composer-send",type:"submit","aria-label":"Wyślij wiadomość","aria-busy":y.value.sending?"true":void 0,disabled:!k.value},[z[4]||(z[4]=ee(" Wyślij",-1)),L(oe,{name:"arrow-right"})],8,es)])):x("",!0)]),p(d)?x("",!0):(a(),s("button",{key:1,class:"composer-send round",type:"submit","aria-label":"Wyślij wiadomość","aria-busy":y.value.sending?"true":void 0,disabled:!k.value},[L(oe,{name:"arrow-up"})],8,ts))]),n("span",{id:u,class:"sr-only"},"Enter wysyła, Shift+Enter dodaje nową linię."),n("input",{ref_key:"fileInput",ref:I,class:"sr-only",type:"file",multiple:"",tabindex:"-1","aria-hidden":"true",onChange:R},null,544),L(Ca,{ref_key:"picker",ref:T,staged:H.value,onPick:B},null,8,["staged"])],34))}}),os={class:"chat-head"},ls={class:"chat-head-row"},is={class:"chat-head-name"},rs={class:"eyebrow"},us={class:"chat-title"},cs={class:"chat-presence","aria-hidden":"true"},ds={key:0,class:"presence-stack"},ms={key:1,class:"presence-text"},vs={class:"presence-text"},ps={class:"chat-tabs",role:"tablist","aria-label":"Rozmowy"},fs=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],hs={key:0,class:"mention-badge"},ys={class:"sr-only"},bs={key:1,class:"unread-badge"},_s={"aria-hidden":"true"},ks={class:"sr-only"},gs={key:0,class:"chat-strip"},$s=ue({__name:"ChatHeader",props:{view:{},dmName:{},dmUserId:{},idBase:{}},emits:["select","back"],setup(t,{emit:i}){const e=t,o=i,l=[{key:"general",label:"# ogólny"},{key:"dms",label:"Wiadomości"}],r=k=>`${e.idBase}-tab-${k}`,c=ye(),h=m(()=>{switch(c.connection){case"connecting":return"Łączenie z czatem…";case"reconnecting":return"Ponowne łączenie…";case"unavailable":return"Czat bez aktualizacji na żywo — odświeżam co 15 s.";default:return""}}),u=m(()=>({general:{unread:c.generalId===null?0:c.unreadOf(c.generalId),mentions:c.totalMentions},dms:{unread:c.dmUnread,mentions:0}})),_=m(()=>c.othersOnline.slice(0,3)),f=m(()=>Math.max(0,c.othersOnline.length-3)),d=m(()=>e.view==="dm"&&e.dmUserId!=null&&c.isOnline(e.dmUserId)),y=m(()=>e.view==="general"?"general":"dms"),C=m(()=>e.view==="general"?"Czat roku":e.view==="dms"?"Wiadomości":"Wiadomość prywatna"),U=m(()=>e.view==="general"?"# ogólny":e.view==="dms"?"Wiadomości":e.dmName??"");function O(k,I){const E=ft(k.key,I,l.length);E!==null&&(k.preventDefault(),o("select",l[E].key),Q(()=>document.getElementById(r(l[E].key))?.focus()))}return(k,I)=>(a(),s(F,null,[n("header",os,[n("div",ls,[t.view==="dm"?(a(),s("button",{key:0,class:"icon-btn chat-back",type:"button","aria-label":"Wróć do listy wiadomości",onClick:I[0]||(I[0]=E=>o("back"))},[L(oe,{name:"arrow-left"})])):x("",!0),n("div",is,[n("span",rs,v(C.value),1),n("h2",us,v(U.value),1)]),n("div",cs,[t.view==="general"&&p(c).presenceAvailable?(a(),s(F,{key:0},[_.value.length?(a(),s("span",ds,[(a(!0),s(F,null,ae(_.value,E=>(a(),me(Be,{key:E,"user-id":E,member:p(c).members.get(E),size:24},null,8,["user-id","member"]))),128))])):x("",!0),f.value?(a(),s("span",ms,"+"+v(f.value),1)):x("",!0),I[1]||(I[1]=n("span",{class:"presence-dot"},null,-1)),n("span",vs,v(p(c).onlineCount>1?`${p(c).onlineCount} online`:"tylko Ty"),1)],64)):d.value?(a(),s(F,{key:1},[I[2]||(I[2]=n("span",{class:"presence-dot"},null,-1)),I[3]||(I[3]=n("span",{class:"presence-text"},"online",-1))],64)):x("",!0)])]),n("div",ps,[(a(),s(F,null,ae(l,(E,R)=>n("button",{id:r(E.key),key:E.key,class:"chat-tab",type:"button",role:"tab","aria-selected":y.value===E.key,"aria-controls":`${t.idBase}-body`,tabindex:y.value===E.key?0:-1,onClick:q=>o("select",E.key),onKeydown:q=>O(q,R)},[ee(v(E.label)+" ",1),u.value[E.key].mentions>0?(a(),s("span",hs,[I[4]||(I[4]=n("span",{"aria-hidden":"true"},"@",-1)),n("span",ys,", "+v(p(Wt)(u.value[E.key].mentions)),1)])):x("",!0),p(Ee)(u.value[E.key].unread)?(a(),s("span",bs,[n("span",_s,v(p(Ee)(u.value[E.key].unread)),1),n("span",ks,", "+v(p(tt)(u.value[E.key].unread)),1)])):x("",!0)],40,fs)),64))])]),h.value?(a(),s("p",gs,v(h.value),1)):x("",!0)],64))}}),ws={class:"dm-list"},zs={class:"dm-new"},xs={key:0,class:"chat-skeletons dm-skeletons","aria-busy":"true","aria-label":"Wczytywanie rozmów"},Is={key:1,class:"notice error dm-notice",role:"alert"},Cs={key:2,class:"empty chat-empty dm-empty"},Es={key:3,class:"dm-rows"},js=["onClick"],Ts={class:"dm-text"},Ds={class:"dm-name"},Ms={class:"dm-preview"},Ss={class:"dm-meta"},Bs=["datetime"],Ls={key:1,class:"unread-badge"},Ns={"aria-hidden":"true"},Rs={class:"sr-only"},Ws=ue({__name:"DmList",emits:["compose"],setup(t,{emit:i}){const e=i,o=ye(),l=m(()=>o.dmRows),r=m(()=>!l.value.length&&(o.bootstrapState==="loading"||o.bootstrapState==="idle")),c=m(()=>!l.value.length&&o.bootstrapState==="error");function h(f){return $e(o.members.get(f.other_user_id))}function u(f){const d=f.last_message;return d?d.sender_id===o.userId?`Ty: ${d.content}`:d.content:""}function _(f){const d=f.last_message?.created_at;return d?ze(d)===ze(new Date)?Ne(d):At(d):""}return(f,d)=>(a(),s("div",ws,[n("div",zs,[n("button",{class:"btn small",type:"button",onClick:d[0]||(d[0]=y=>e("compose"))},[L(oe,{name:"plus"}),d[2]||(d[2]=ee("Nowa wiadomość",-1))])]),r.value?(a(),s("div",xs,[...d[3]||(d[3]=[n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1)])])):c.value?(a(),s("div",Is,[d[4]||(d[4]=ee(" Nie udało się wczytać rozmów. ",-1)),n("button",{class:"linkish",type:"button",onClick:d[1]||(d[1]=y=>p(o).bootstrap())},"Spróbuj ponownie")])):l.value.length?(a(),s("ul",Es,[(a(!0),s(F,null,ae(l.value,y=>(a(),s("li",{key:y.id},[n("button",{class:de(["dm-row",{unread:y.unread>0}]),type:"button",onClick:C=>p(o).openDm(y.id)},[L(Be,{"user-id":y.other_user_id,member:p(o).members.get(y.other_user_id)},null,8,["user-id","member"]),n("span",Ts,[n("span",Ds,v(h(y)),1),n("span",Ms,v(u(y)),1)]),n("span",Ss,[y.last_message?(a(),s("time",{key:0,datetime:y.last_message.created_at},v(_(y)),9,Bs)):x("",!0),p(Ee)(y.unread)?(a(),s("span",Ls,[n("span",Ns,v(p(Ee)(y.unread)),1),n("span",Rs,", "+v(p(tt)(y.unread)),1)])):x("",!0)])],10,js)]))),128))])):(a(),s("div",Cs,[...d[5]||(d[5]=[n("p",{class:"chat-empty-h"},"Nie masz jeszcze wiadomości prywatnych",-1),n("p",null,"Kliknij „Nowa wiadomość”, wybierz osobę i napisz do niej.",-1)])]))]))}}),As=["aria-labelledby"],Ps={class:"chat-dialog-head"},qs=["id"],Hs={class:"field"},Us=["for"],Os=["id"],Ks={key:0,class:"error-text",role:"alert"},Fs={class:"picker-results"},Zs={key:0,class:"chat-skeletons picker-skeletons","aria-busy":"true","aria-label":"Wczytywanie osób"},Vs={key:1,class:"notice error",role:"alert"},Xs={key:2,class:"empty"},Ys={key:3,class:"empty"},Gs={key:4,class:"picker-rows"},Qs=["disabled","onClick"],Js={class:"picker-name"},eo=ue({__name:"MemberPicker",emits:["started"],setup(t,{expose:i,emit:e}){const o=e,l=ye(),r=je(),c=$(null),h=$(null),u=$(""),_=$(!1);let f=null,d=!1;const y=m(()=>Je(l.members.values(),"",l.userId)),C=m(()=>Je(l.members.values(),u.value,l.userId));function U(){f=document.activeElement instanceof HTMLElement?document.activeElement:null,d=!1,u.value="",l.dmError="",l.loadMembers(),c.value?.showModal(),Q(()=>h.value?.focus())}function O(){c.value?.close()}function k(){d||f?.focus(),f=null}function I(R){R.target===c.value&&O()}async function E(R){if(!_.value){_.value=!0;try{const q=await l.startDm(R);if(q===null)return;d=!0,O(),o("started",q)}finally{_.value=!1}}}return i({open:U}),(R,q)=>(a(),s("dialog",{ref_key:"dialog",ref:c,class:"chat-dialog","aria-labelledby":`picker-h-${p(r)}`,onClose:k,onClick:I},[n("div",Ps,[n("h2",{id:`picker-h-${p(r)}`,class:"chat-dialog-title"},"Nowa wiadomość",8,qs),n("button",{class:"icon-btn",type:"button","aria-label":"Zamknij",onClick:O},[L(oe,{name:"close"})])]),n("div",Hs,[n("label",{for:`picker-q-${p(r)}`},"Do kogo?",8,Us),Pe(n("input",{id:`picker-q-${p(r)}`,ref_key:"search",ref:h,"onUpdate:modelValue":q[0]||(q[0]=W=>u.value=W),type:"text",autocomplete:"off",placeholder:"Wpisz imię lub nazwisko…"},null,8,Os),[[qe,u.value]])]),p(l).dmError?(a(),s("p",Ks,v(p(l).dmError),1)):x("",!0),n("div",Fs,[p(l).membersState==="loading"&&!p(l).members.size?(a(),s("div",Zs,[...q[2]||(q[2]=[n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1)])])):p(l).membersState==="error"&&!p(l).members.size?(a(),s("div",Vs,[q[3]||(q[3]=ee(" Nie udało się wczytać listy osób. ",-1)),n("button",{class:"linkish",type:"button",onClick:q[1]||(q[1]=W=>p(l).loadMembers(!0))},"Spróbuj ponownie")])):y.value.length?C.value.length?(a(),s("ul",Gs,[(a(!0),s(F,null,ae(C.value,W=>(a(),s("li",{key:W.id},[n("button",{class:"picker-row",type:"button",disabled:_.value,onClick:le=>E(W.id)},[L(Be,{"user-id":W.id,member:W,size:24},null,8,["user-id","member"]),n("span",Js,v(p(Re)(W)),1)],8,Qs)]))),128))])):(a(),s("p",Ys,"Nikt nie pasuje do „"+v(u.value.trim())+"”.",1)):(a(),s("p",Xs,"Na czacie nie ma jeszcze innych osób."))])],40,As))}}),to=["aria-pressed","aria-label","title","onClick"],no={class:"reaction-emoji","aria-hidden":"true"},ao={class:"reaction-count","aria-hidden":"true"},so={class:"reaction-add-wrap"},oo=["aria-expanded","aria-controls","disabled"],lo=["aria-label","tabindex","onClick","onFocus"],ge=6,io=ue({__name:"ReactionBar",props:{message:{}},emits:["closed"],setup(t,{expose:i,emit:e}){const o=t,l=e,r=ye(),h=`reactions-${je()}`,u=$(null),_=$(null),f=$(null),d=$(!1),y=$(!1),C=$(0);let U=null;const O=m(()=>(o.message.reactions??[]).filter(N=>N.count>0).map(N=>{const S=r.userId!==null&&N.user_ids.includes(r.userId);return{key:N.key,count:N.count,mine:S,label:`${N.key} ${N.count}. ${S?"Cofnij swoją reakcję":"Dodaj swoją reakcję"}`,title:Wn(N.user_ids,r.members)}})),k=m(()=>r.allowedReactions??[]),I=m(()=>k.value.length>0);function E(N){r.toggleReaction(o.message,N)}function R(){const N=u.value,S=N?.closest(".chat-list");if(!N||!S){y.value=!1;return}const A=Math.ceil(k.value.length/ge),T=A*36+(A-1)*4+16+2+8;y.value=N.getBoundingClientRect().top-S.getBoundingClientRect().top<T}function q(){return f.value?[...f.value.querySelectorAll("button")]:[]}function W(){Q(()=>q()[C.value]?.focus())}function le(N){if(!I.value){r.loadReactions();return}U=N??_.value,C.value=0,R(),d.value=!0,document.addEventListener("pointerdown",ne,!0),W()}function G(N=!0){if(!d.value)return;d.value=!1,document.removeEventListener("pointerdown",ne,!0);const S=U;U=null,N&&S?.focus(),l("closed")}function ne(N){const S=N.target;if(S&&(f.value?.contains(S)||_.value?.contains(S)))return;const A=U;G(!1),setTimeout(()=>{const T=document.activeElement;(!T||T===document.body||f.value?.contains(T))&&A?.focus()})}function V(N){E(N),G()}function se(){d.value?G():le(_.value)}function ve(N){const S=k.value.length;if(!S)return;let A=C.value;switch(N.key){case"Escape":N.preventDefault(),N.stopPropagation(),G();return;case"ArrowRight":A=(C.value+1)%S;break;case"ArrowLeft":A=(C.value-1+S)%S;break;case"ArrowDown":A=C.value+ge<S?C.value+ge:C.value%ge;break;case"ArrowUp":A=C.value-ge>=0?C.value-ge:Math.min(S-1,C.value%ge+Math.floor((S-1)/ge)*ge);break;case"Home":A=0;break;case"End":A=S-1;break;case"Tab":G(!1);return;default:return}N.preventDefault(),C.value=A,W()}return xe(()=>document.removeEventListener("pointerdown",ne,!0)),i({openPicker:le}),(N,S)=>(a(),s("div",{ref_key:"root",ref:u,class:"reactions"},[(a(!0),s(F,null,ae(O.value,A=>(a(),s("button",{key:A.key,class:"reaction-chip",type:"button","aria-pressed":A.mine?"true":"false","aria-label":A.label,title:A.title,onClick:T=>E(A.key)},[n("span",no,v(A.key),1),n("span",ao,v(A.count),1)],8,to))),128)),n("span",so,[n("button",{ref_key:"addBtn",ref:_,class:"reaction-add",type:"button","aria-label":"Dodaj reakcję","aria-haspopup":"true","aria-expanded":d.value?"true":"false","aria-controls":d.value?h:void 0,disabled:!I.value,onClick:se},[L(oe,{name:"smile"})],8,oo),d.value?(a(),s("div",{key:0,id:h,ref_key:"pop",ref:f,class:de(["reaction-pop",{below:y.value}]),role:"group","aria-label":"Dodaj reakcję",onKeydown:ve},[(a(!0),s(F,null,ae(k.value,(A,T)=>(a(),s("button",{key:A,class:"reaction-pick",type:"button","aria-label":A,tabindex:T===C.value?0:-1,onClick:H=>V(A),onFocus:H=>C.value=T},v(A),41,lo))),128))],34)):x("",!0)])],512))}}),ro=["data-message-id"],uo={class:"msg-gutter"},co=["datetime","title"],mo={class:"msg-content"},vo={key:0,class:"msg-head"},po={class:"msg-name"},fo={key:0,class:"msg-tag"},ho={key:1,class:"msg-tag me"},yo=["datetime","title"],bo=["title"],_o={key:1,class:"sr-only"},ko={key:2,class:"msg-deleted"},go={class:"composer-field"},$o=["readonly"],wo={key:0,class:"error-text",role:"alert"},zo={class:"btn-row"},xo=["aria-busy"],Io=["disabled"],Co=["innerHTML"],Eo=["title"],jo={key:5,class:"msg-files"},To=["aria-label","aria-busy","onClick"],Do={class:"msg-file-name"},Mo={class:"msg-file-size"},So={key:6,class:"msg-embeds"},Bo={key:0,class:"msg-actions",role:"toolbar","aria-label":"Działania wiadomości"},Lo=["disabled"],Me=$(null),No=ue({__name:"ChatMessage",props:{message:{},followUp:{type:Boolean},author:{},meId:{}},emits:["delete"],setup(t,{emit:i}){const e=t,o=i,l=ye(),r=nt("(hover: none)"),c=$(null),h=$(null),u=$(null),_=$(null),f=$(null),d=$(null),y=m(()=>e.meId!==null&&e.message.sender_id===e.meId),C=m(()=>$e(e.author,e.message.sender_name)),U=m(()=>Ne(e.message.created_at)),O=m(()=>Ge(e.message.created_at)),k=m(()=>!!e.author?.is_bot),I=m(()=>!y.value&&Un(e.message.content,l.myHandle)),E=m(()=>e.message.edited_at?`Edytowano ${Ge(e.message.edited_at)}`:""),R=m(()=>(e.message.reactions??[]).some(D=>D.count>0)),q=$(!1),W=m(()=>Me.value===e.message.id),le=m(()=>!!l.allowedReactions?.length),G=m(()=>!!e.message.deleted_at),ne=m(()=>l.canEdit(e.message)),V=m(()=>l.canDelete(e.message)),se=m(()=>qt(e.message,l.maxEmbeds)),ve=m(()=>!e.message.content||Ht(e.message.content,se.value)),N=m(()=>e.message.attachments??[]),S=$(null),A=Pt();async function T(D){if(S.value===null){S.value=D.id;try{await pt.download(e.message.id,D.id,D.filename)}catch{A.show("Nie udało się pobrać pliku. Spróbuj ponownie.")}finally{S.value=null}}}const H=$(!1),M=$(""),te=$(!1),j=$(""),B=24;function X(){const D=d.value;if(!D)return;D.style.height="auto";const he=getComputedStyle(D),J=B*8+parseFloat(he.paddingTop)+parseFloat(he.paddingBottom);D.style.height=`${Math.min(D.scrollHeight,J)}px`,D.style.overflowY=D.scrollHeight>J?"auto":"hidden"}async function P(){if(!ne.value)return;M.value=e.message.content??"",j.value="",H.value=!0,Me.value=null,await Q();const D=d.value;D&&(X(),D.focus(),D.setSelectionRange(D.value.length,D.value.length))}function Y(){H.value=!1,j.value="",Q(()=>_.value?.focus())}async function ie(){if(te.value)return;te.value=!0,j.value="";const D=await l.edit(e.message,M.value);if(te.value=!1,D){j.value=D;return}Y()}function fe(D){if(!D.isComposing){if(D.key==="Escape"){D.preventDefault(),D.stopPropagation(),te.value||Y();return}D.key==="Enter"&&!D.shiftKey&&(D.preventDefault(),ie())}}ce(M,()=>{Q(X)}),ce(G,D=>{D&&(H.value=!1)});function be(){V.value&&o("delete",e.message,f.value)}async function g(){le.value&&(q.value=!0,await Q(),h.value?.openPicker(u.value))}function w(){q.value=!1}function Z(D){!r.value||D.target?.closest("a, button, textarea, input, .msg-actions")||(Me.value=W.value?null:e.message.id)}function _e(D){c.value&&D.target instanceof Node&&c.value.contains(D.target)||W.value&&(Me.value=null)}return ce(W,D=>{D?document.addEventListener("pointerdown",_e,!0):document.removeEventListener("pointerdown",_e,!0)}),xe(()=>{document.removeEventListener("pointerdown",_e,!0),W.value&&(Me.value=null)}),(D,he)=>(a(),s("article",{ref_key:"root",ref:c,class:de(["msg",{follow:t.followUp,"actions-open":W.value,"mentions-me":I.value}]),"data-message-id":t.message.id,onClick:Z},[n("div",uo,[t.followUp?(a(),s("time",{key:1,class:"msg-time",datetime:t.message.created_at,title:O.value},v(U.value),9,co)):(a(),me(Be,{key:0,"user-id":t.message.sender_id,member:t.author,fallback:t.message.sender_name,me:y.value},null,8,["user-id","member","fallback","me"]))]),n("div",mo,[t.followUp?(a(),s("span",_o,v(C.value)+", "+v(U.value)+":",1)):(a(),s("div",vo,[n("span",po,v(C.value),1),k.value?(a(),s("span",fo,"Bot")):y.value?(a(),s("span",ho,"Ty")):x("",!0),n("time",{class:"msg-time",datetime:t.message.created_at,title:O.value},v(U.value),9,yo),t.message.edited_at?(a(),s("span",{key:2,class:"msg-edited",title:E.value},"(edytowano)",8,bo)):x("",!0)])),G.value?(a(),s("p",ko,"Wiadomość usunięta.")):H.value?(a(),s("form",{key:3,class:"msg-edit",onSubmit:He(ie,["prevent"])},[n("div",go,[Pe(n("textarea",{ref_key:"editInput",ref:d,"onUpdate:modelValue":he[0]||(he[0]=J=>M.value=J),rows:"1","aria-label":"Edytuj wiadomość",readonly:te.value,onKeydown:fe},null,40,$o),[[qe,M.value]])]),j.value?(a(),s("p",wo,v(j.value),1)):x("",!0),n("div",zo,[n("button",{class:"btn primary small",type:"submit","aria-busy":te.value?"true":void 0},"Zapisz zmiany",8,xo),n("button",{class:"btn ghost small",type:"button",disabled:te.value,onClick:Y},"Anuluj edycję",8,Io)])],32)):(a(),s(F,{key:4},[ve.value?x("",!0):(a(),s("div",{key:0,class:"msg-body prose",innerHTML:p(Hn)(t.message.content,p(l).membersByHandle)},null,8,Co)),t.followUp&&t.message.edited_at?(a(),s("span",{key:1,class:"msg-edited",title:E.value},"(edytowano)",8,Eo)):x("",!0)],64)),!G.value&&N.value.length?(a(),s("ul",jo,[(a(!0),s(F,null,ae(N.value,J=>(a(),s("li",{key:J.id},[n("button",{class:"msg-file",type:"button","aria-label":`Pobierz ${J.filename} (${p(Ye)(J.size)})`,"aria-busy":S.value===J.id?"true":void 0,onClick:ke=>T(J)},[L(oe,{name:"file"}),n("span",Do,v(J.filename),1),n("span",Mo,v(p(Ye)(J.size)),1)],8,To)]))),128))])):x("",!0),!G.value&&se.value.length?(a(),s("div",So,[(a(!0),s(F,null,ae(se.value,J=>(a(),me(gt,{key:p(Ce)(J),"embed-ref":J,item:p(l).embedItem(J)},null,8,["embed-ref","item"]))),128))])):x("",!0),!G.value&&(R.value||q.value)?(a(),me(io,{key:7,ref_key:"bar",ref:h,message:t.message,onClosed:w},null,8,["message"])):x("",!0)]),!G.value&&!H.value?(a(),s("div",Bo,[n("button",{ref_key:"reactBtn",ref:u,class:"msg-action",type:"button","aria-label":"Dodaj reakcję",title:"Dodaj reakcję",disabled:!le.value,onClick:g},[L(oe,{name:"smile"})],8,Lo),ne.value?(a(),s("button",{key:0,ref_key:"editBtn",ref:_,class:"msg-action",type:"button","aria-label":"Edytuj",title:"Edytuj",onClick:P},[L(oe,{name:"pencil"})],512)):x("",!0),V.value?(a(),s("button",{key:1,ref_key:"deleteBtn",ref:f,class:"msg-action miss",type:"button","aria-label":"Usuń",title:"Usuń",onClick:be},[L(oe,{name:"trash"})],512)):x("",!0)])):x("",!0)],10,ro))}}),Ro=["aria-labelledby","aria-describedby"],Wo=["id"],Ao=["id"],Po={key:0,class:"error-text",role:"alert"},qo={class:"btn-row chat-confirm-buttons"},Ho=["aria-busy","disabled"],Uo=["disabled"],Oo=ue({__name:"DeleteDialog",setup(t,{expose:i}){const e=ye(),o=je(),l=$(null),r=$(null),c=$(null),h=$(!1),u=$("");let _=null,f=null;const d=m(()=>!!c.value&&c.value.sender_id===e.userId),y=m(()=>{const R=c.value;return!R||d.value?"Wiadomość zniknie z rozmowy u wszystkich. Tego nie można cofnąć.":`Usuniesz wiadomość od ${$e(e.members.get(R.sender_id),R.sender_name)} u wszystkich. Tego nie można cofnąć.`});function C(R,q){c.value=R,u.value="",h.value=!1,_=q??(document.activeElement instanceof HTMLElement?document.activeElement:null),f=_?.closest(".chat-list")??null,l.value?.showModal(),Q(()=>r.value?.focus())}function U(){l.value?.close()}function O(R){h.value&&R.preventDefault()}function k(){_?.isConnected?_.focus():f?.focus(),_=null,f=null,c.value=null}function I(R){R.target===l.value&&!h.value&&U()}async function E(){const R=c.value;if(!R||h.value)return;h.value=!0,u.value="";const q=await e.remove(R);if(h.value=!1,q){u.value=q;return}U()}return i({open:C}),(R,q)=>(a(),s("dialog",{ref_key:"dialog",ref:l,class:"chat-dialog chat-confirm","aria-labelledby":`delete-h-${p(o)}`,"aria-describedby":`delete-b-${p(o)}`,onCancel:O,onClose:k,onClick:I},[n("h2",{id:`delete-h-${p(o)}`,class:"chat-dialog-title"},"Usunąć wiadomość?",8,Wo),n("p",{id:`delete-b-${p(o)}`,class:"chat-confirm-body"},v(y.value),9,Ao),u.value?(a(),s("p",Po,v(u.value),1)):x("",!0),n("div",qo,[n("button",{class:"btn danger",type:"button","aria-busy":h.value?"true":void 0,disabled:h.value,onClick:E},"Usuń wiadomość",8,Ho),n("button",{ref_key:"keepBtn",ref:r,class:"btn ghost",type:"button",disabled:h.value,onClick:U},"Zostaw wiadomość",8,Uo)])],40,Ro))}}),Ko={class:"chat-list-wrap"},Fo=["aria-label"],Zo={key:0,class:"notice error",role:"alert"},Vo={key:1,class:"chat-skeletons","aria-busy":"true","aria-label":"Wczytywanie wiadomości"},Xo={key:2,class:"chat-start"},Yo={key:3,class:"empty chat-empty"},Go={key:0,class:"error-text"},Qo={key:1,class:"chat-start"},Jo={key:2,class:"chat-start"},el=["aria-label"],tl={"aria-hidden":"true"},nl={key:0,class:"chat-new",role:"separator","aria-label":"Nowe wiadomości"},al={class:"sr-only","aria-live":"polite"},sl=ue({__name:"MessageList",props:{conversationId:{},name:{},kind:{default:"general"},otherName:{default:""},visible:{type:Boolean,default:!0}},setup(t,{expose:i}){const e=t,o=ye(),l=$(null),r=$(null),c=$(null);function h(g,w){c.value?.open(g,w)}const u=m(()=>o.messages[e.conversationId]),_=m(()=>o.errors[e.conversationId]??""),f=m(()=>Nn(u.value??[],new Date)),d=m(()=>u.value?.at(-1)?.id??null),y=m(()=>!!o.olderLoading[e.conversationId]),C=m(()=>o.olderError[e.conversationId]??""),U=m(()=>!!o.reachedStart[e.conversationId]),O=m(()=>e.kind==="dm"?"To początek Waszej rozmowy.":"To początek kanału # ogólny.");let k=!1;ce(u,g=>{g&&(o.resolveFor(g,!k),k=!0)},{immediate:!0,deep:1});const I=o.unreadOf(e.conversationId),E=$(null);let R=!1;function q(){R||!u.value||(R=!0,E.value=Ut(u.value,I,o.userId))}const W=$(0),le=$(""),G=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;function ne(){return!!l.value&&l.value.clientHeight>0}function V(){const g=l.value;return!g||g.scrollHeight-g.scrollTop-g.clientHeight<=48}function se(){return!l.value||!ne()||!u.value?null:V()?{atBottom:!0,messageId:null,offset:0}:ve()??{atBottom:!0,messageId:null,offset:0}}function ve(){const g=l.value;if(!g)return null;for(const w of g.querySelectorAll("[data-message-id]"))if(w.offsetTop+w.offsetHeight>g.scrollTop)return{atBottom:!1,messageId:Number(w.dataset.messageId),offset:w.offsetTop-g.scrollTop};return null}function N(){const g=se();g&&o.saveAnchor(e.conversationId,g)}let S=!0;const A=$(!1);function T(){if(!u.value||!ne())return;Ot({active:o.activeId===e.conversationId,visible:e.visible,focused:typeof document>"u"||document.hasFocus(),atBottom:V()})&&o.markRead(e.conversationId)}function H(g=!1){Q(()=>{const w=l.value;w&&(g&&!G&&typeof w.scrollTo=="function"?w.scrollTo({top:w.scrollHeight,behavior:"smooth"}):w.scrollTop=w.scrollHeight,S=!0,W.value=0,ne()&&o.saveAnchor(e.conversationId,{atBottom:!0,messageId:null,offset:0}),T())})}function M(g){if(E.value===null)return!1;const w=g.querySelector(".chat-new");if(!w)return!1;const Z=g.scrollHeight-g.clientHeight;return w.offsetTop>=Z?!1:(g.scrollTop=w.offsetTop-48,!0)}function te(){Q(()=>{const g=l.value;!g||!ne()||!u.value||(q(),Q(()=>{const w=o.anchorFor(e.conversationId),Z=w&&!w.atBottom&&w.messageId!==null?g.querySelector(`[data-message-id="${w.messageId}"]`):null;Z?g.scrollTop=Z.offsetTop-(w?.offset??0):E.value!==null&&!A.value&&M(g)||(g.scrollTop=g.scrollHeight),S=V(),S&&(W.value=0),A.value=!0,T(),Y()}))})}let j=0;function B(){S=V(),S&&(W.value=0),!j&&(j=requestAnimationFrame(()=>{j=0,N(),T()}))}ce(()=>u.value===void 0,(g,w)=>{!g&&w&&te()}),ce(d,(g,w)=>{if(g===null||g===w||w===null)return;const Z=u.value??[],_e=Z.filter(ke=>ke.id>w),D=Z.at(-1),he=_e.filter(ke=>ke.sender_id!==o.userId),J=he.at(-1);if(J&&e.visible){const ke=(J.content??"").replace(/\s+/g," ").trim().slice(0,80);le.value=`${$e(o.members.get(J.sender_id),J.sender_name)}: ${ke}`}S||D&&D.sender_id===o.userId?H():W.value+=he.length}),ce(()=>e.visible,(g,w)=>{w&&!g&&N(),g&&!w&&te()});let X=null;async function P(){const g=l.value;if(!g||!A.value||y.value||C.value||U.value)return;const w=ve();if(await o.loadOlder(e.conversationId),await Q(),w?.messageId!=null){const Z=g.querySelector(`[data-message-id="${w.messageId}"]`);Z&&(g.scrollTop=Z.offsetTop-w.offset)}Y()}function Y(){const g=r.value;!X||!g||(X.unobserve(g),X.observe(g))}function ie(){o.olderError[e.conversationId]="",Q(()=>{P()})}ce(r,(g,w)=>{w&&X?.unobserve(w),g&&X?.observe(g)});function fe(){T()}function be(){document.visibilityState==="visible"&&T()}return Ue(()=>{typeof IntersectionObserver<"u"&&l.value&&(X=new IntersectionObserver(g=>{g.some(w=>w.isIntersecting)&&P()},{root:l.value,rootMargin:"200px 0px 0px 0px"}),r.value&&X.observe(r.value)),window.addEventListener("focus",fe),document.addEventListener("visibilitychange",be),te()}),xe(()=>{j&&cancelAnimationFrame(j),X?.disconnect(),window.removeEventListener("focus",fe),document.removeEventListener("visibilitychange",be),N()}),i({scrollToBottom:H}),(g,w)=>(a(),s("div",Ko,[n("div",{ref_key:"el",ref:l,class:"chat-list",role:"region","aria-label":`Wiadomości w ${t.name}`,tabindex:"0",onScrollPassive:B},[!u.value&&_.value?(a(),s("div",Zo,[ee(v(_.value)+" ",1),n("button",{class:"linkish",type:"button",onClick:w[0]||(w[0]=Z=>p(o).loadLatest(t.conversationId))},"Spróbuj ponownie")])):u.value?!u.value.length&&t.kind==="dm"?(a(),s("p",Xo,"To początek Waszej rozmowy z "+v(t.otherName)+".",1)):u.value.length?(a(),s(F,{key:4},[n("div",{ref_key:"sentinel",ref:r,class:"chat-older"},[C.value?(a(),s("p",Go,[ee(v(C.value)+" ",1),n("button",{class:"linkish",type:"button",onClick:ie},"Spróbuj ponownie")])):y.value?(a(),s("p",Qo,"Wczytywanie starszych wiadomości…")):U.value?(a(),s("p",Jo,v(O.value),1)):x("",!0)],512),(a(!0),s(F,null,ae(f.value,Z=>(a(),s(F,{key:Z.key},[Z.kind==="day"?(a(),s("div",{key:0,class:"chat-day",role:"separator","aria-label":Z.label},[n("span",tl,v(Z.label),1)],8,el)):(a(),s(F,{key:1},[Z.message.id===E.value?(a(),s("div",nl,[...w[4]||(w[4]=[n("span",{"aria-hidden":"true"},"Nowe wiadomości",-1)])])):x("",!0),L(No,{message:Z.message,"follow-up":Z.followUp&&Z.message.id!==E.value,author:p(o).members.get(Z.message.sender_id),"me-id":p(o).userId,onDelete:h},null,8,["message","follow-up","author","me-id"])],64))],64))),128))],64)):(a(),s("div",Yo,[...w[3]||(w[3]=[n("p",{class:"chat-empty-h"},"Na # ogólny jeszcze cisza",-1),n("p",null,"Napisz pierwszą wiadomość do całego roku. Przyciskiem kalendarza podepniesz termin, zajęcia albo lekturę.",-1)])])):(a(),s("div",Vo,[...w[2]||(w[2]=[n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1),n("div",{class:"skeleton"},null,-1)])]))],40,Fo),W.value>0?(a(),s("button",{key:0,class:"btn small chat-jump",type:"button",onClick:w[1]||(w[1]=Z=>H(!0))},[L(oe,{name:"arrow-down"}),ee("Nowe wiadomości: "+v(W.value),1)])):x("",!0),n("div",al,v(le.value),1),L(Oo,{ref_key:"deleteDialog",ref:c},null,512)]))}}),ol=["role","aria-label","aria-labelledby"],ll=["id","aria-labelledby"],il={class:"chat-typing","aria-hidden":"true"},rl={key:2,class:"chat-list"},ul=ue({__name:"ChatPanel",props:{wide:{type:Boolean,default:!0},visible:{type:Boolean,default:!0},labelledBy:{default:void 0}},setup(t){const i=t,e=ye(),o=`chat-${je()}`,l=$(null),r=$(null),c=$(null),h=m(()=>i.wide?void 0:"tabpanel"),u=m(()=>e.view==="dms"?null:e.activeId),_=m(()=>e.view==="dm"?e.conversations.find(k=>k.id===e.activeId):void 0),f=m(()=>_.value?$e(e.members.get(_.value.other_user_id)):""),d=m(()=>e.view==="dm"?f.value:"# ogólny"),y=m(()=>u.value===null?"":Kt(e.typingIn(u.value).map(k=>$e(e.members.get(k),"Ktoś")))),C=m(()=>`${o}-tab-${e.view==="general"?"general":"dms"}`);ce(()=>i.visible,k=>e.panelVisible=k,{immediate:!0}),xe(()=>e.panelVisible=!1);function U(k){k==="general"?e.showGeneral():e.showDms()}function O(){Q(()=>r.value?.focus())}return(k,I)=>(a(),s("aside",{class:"chat",role:h.value,"aria-label":t.wide?"Czat":void 0,"aria-labelledby":t.wide?void 0:t.labelledBy},[L($s,{view:p(e).view,"dm-name":f.value,"dm-user-id":_.value?.other_user_id??null,"id-base":o,onSelect:U,onBack:I[0]||(I[0]=E=>p(e).showDms())},null,8,["view","dm-name","dm-user-id"]),n("div",{id:`${o}-body`,class:"chat-body",role:"tabpanel","aria-labelledby":C.value},[p(e).view==="dms"?(a(),me(Ws,{key:0,onCompose:I[1]||(I[1]=E=>c.value?.open())})):u.value!==null?(a(),s(F,{key:1},[(a(),me(sl,{ref_key:"list",ref:l,key:u.value,"conversation-id":u.value,name:d.value,kind:p(e).view==="dm"?"dm":"general","other-name":f.value,visible:t.visible},null,8,["conversation-id","name","kind","other-name","visible"])),n("div",il,v(y.value),1),L(ss,{ref_key:"composer",ref:r,"conversation-id":u.value,label:`Wiadomość do ${d.value}`,placeholder:p(e).view==="dm"?`Napisz do ${f.value}…`:"Napisz na # ogólny…",onSent:I[2]||(I[2]=E=>l.value?.scrollToBottom())},null,8,["conversation-id","label","placeholder"])],64)):(a(),s("div",rl,[...I[3]||(I[3]=[n("div",{class:"chat-skeletons","aria-busy":"true","aria-label":"Wczytywanie czatu"},[n("div",{class:"skeleton"}),n("div",{class:"skeleton"}),n("div",{class:"skeleton"})],-1)])]))],8,ll),L(eo,{ref_key:"picker",ref:c,onStarted:O},null,512)],8,ol))}}),et="bm.chatWidth",Oe=280,cl=16,dl=64;function $t(){try{return window.localStorage}catch{return null}}function at(t){return Math.max(Oe,Math.floor(t/2))}function We(t,i){return Math.min(at(i),Math.max(Oe,Math.round(t)))}function ml(t){return Math.min(420,Math.max(340,Math.round(t*.26)))}function vl(t,i,e,o){const l=i?dl:cl;switch(t){case"ArrowLeft":return We(e+l,o);case"ArrowRight":return We(e-l,o);case"Home":return Oe;case"End":return at(o);default:return null}}const pl=/^\d+(\.\d+)?$/;function fl(t=$t()){if(!t)return null;try{const i=t.getItem(et);if(i===null||!pl.test(i))return null;const e=Number(i);return Number.isFinite(e)&&e>0?Math.round(e):null}catch{return null}}function Xe(t,i=$t()){if(i)try{t===null?i.removeItem(et):i.setItem(et,String(Math.round(t)))}catch{}}const hl=["aria-controls","aria-valuenow","aria-valuemin","aria-valuemax","aria-valuetext"],yl=ue({__name:"ChatResizer",props:{width:{},controls:{}},emits:["update:width"],setup(t,{emit:i}){const e=t,o=i,l=$(typeof window>"u"?0:window.innerWidth);function r(){l.value=window.innerWidth}const c=m(()=>We(e.width??ml(l.value),l.value)),h=m(()=>at(l.value));let u=null;const _=$(!1);function f(k){if(!k.isPrimary||k.button!==0)return;k.preventDefault();const I=document.getElementById(e.controls),E=I?Math.round(I.getBoundingClientRect().width):c.value;k.currentTarget.setPointerCapture(k.pointerId),u={pointerId:k.pointerId,startX:k.clientX,startWidth:E,last:null},_.value=!0,document.documentElement.classList.add("chat-resizing")}function d(k){if(!u||k.pointerId!==u.pointerId)return;const I=We(u.startWidth+(u.startX-k.clientX),l.value);I!==u.last&&(u.last=I,o("update:width",I))}function y(){const k=u;u=null,_.value=!1,document.documentElement.classList.remove("chat-resizing"),k&&k.last!==null&&Xe(k.last)}function C(k){o("update:width",k),Xe(k)}function U(k){const I=vl(k.key,k.shiftKey,c.value,l.value);I!==null&&(k.preventDefault(),C(I))}function O(){o("update:width",null),Xe(null)}return Ue(()=>{r(),window.addEventListener("resize",r)}),xe(()=>{window.removeEventListener("resize",r),y()}),(k,I)=>(a(),s("div",{class:de(["chat-resizer",{dragging:_.value}]),role:"separator","aria-orientation":"vertical","aria-label":"Szerokość czatu","aria-controls":t.controls,"aria-valuenow":c.value,"aria-valuemin":p(Oe),"aria-valuemax":h.value,"aria-valuetext":`${c.value} px`,tabindex:"0",title:"Przeciągnij, aby zmienić szerokość czatu. Dwuklik przywraca domyślną.",onPointerdown:f,onPointermove:d,onPointerup:y,onPointercancel:y,onLostpointercapture:y,onKeydown:U,onDblclick:O},null,42,hl))}}),bl={key:0,class:"pulpit-tabs",role:"tablist","aria-label":"Widok"},_l=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],kl={key:0,class:"unread-badge"},gl={"aria-hidden":"true"},$l={class:"sr-only"},wl=["role","aria-labelledby"],zl={class:"pulpit-lists"},xl={"aria-labelledby":"next-h"},Il={class:"section-head"},Cl={key:0,class:"rows"},El={class:"row-main"},jl={class:"title"},Tl={class:"when"},Dl={class:"muted small"},Ml={key:0,class:"badge online"},Sl={key:1,class:"badge onsite"},Bl={key:1,class:"empty"},Ll={"aria-labelledby":"dl-h"},Nl={class:"section-head"},Rl={key:0,class:"rows"},Wl={class:"row-main"},Al={class:"title"},Pl={class:"muted small"},ql={key:0},Hl={key:1,class:"empty"},Ul={class:"pulpit-cards"},Ol={class:"card","aria-labelledby":"read-h"},Kl={style:{margin:"0 0 8px"}},Fl={class:"big-num"},Zl={class:"muted"},Vl=["aria-valuenow"],Xl={class:"muted small",style:{margin:"8px 0 10px"}},Yl={class:"card","aria-labelledby":"quiz-h"},ai=ue({__name:"DashboardView",setup(t){const i=Ft(),e=Zt(),o=Vt(),l=ye(),r=Yt(),c=Gt(),h=$(new Date);Ue(()=>{h.value=new Date,Promise.all([e.loadDashboard(),e.loadCourses(),e.loadSchedule(),e.loadDeadlines(),e.loadReadings()]),o.loadList()});const u=m(()=>e.loaded.schedule&&e.loaded.courses&&e.loaded.readings&&e.loaded.deadlines&&e.loaded.dashboard),_=m(()=>e.dashboard?.current_meeting??e.dashboard?.next_meeting??null),f=m(()=>!!e.dashboard?.current_meeting),d=m(()=>o.list?.find(j=>j.meeting_id===_.value?.id)??null),y=$(null);let C=0;async function U(j){const B=++C;if(j===void 0){y.value=[];return}y.value=null;try{const X=await nn.materials({meeting:j,per_page:100});B===C&&(y.value=X.data)}catch{B===C&&(y.value=[])}}ce(()=>_.value?.id,j=>{U(j)},{immediate:!0});const O=m(()=>y.value===null?null:tn(y.value,e.hidden)),k=m(()=>e.schedule.filter(j=>Date.parse(j.ends_at)>h.value.getTime()).slice(0,5)),I=m(()=>e.deadlines.filter(j=>Date.parse(j.due_at)>=h.value.getTime()).slice(0,5)),E=j=>{const B=Ae(j,h.value);return B>=0&&B<=14},R=m(()=>e.readingStats),q=m(()=>R.value.requiredTotal?Math.round(R.value.requiredRead/R.value.requiredTotal*100):0),W=m(()=>i.user?.name?`Cześć, ${i.user.name}`:"Pulpit"),le=m(()=>`Pulpit · ${Le(h.value.toISOString())}`),G=m(()=>{const j=i.user;return yt({name:j?.name??"",surname:j?.surname??"",handle:""},j?.email??"")}),ne=Fn(1100),V=m(()=>l.member===!0),se=m(()=>r.query.tab==="czat"?"czat":"pulpit"),ve=m(()=>V.value&&!ne.value),N=m(()=>V.value&&(ne.value||se.value==="czat")),S=$(fl()),A=m(()=>S.value===null?void 0:{"--chat-width":`${S.value}px`}),T=[{key:"pulpit",label:"Pulpit",id:"tab-pulpit",panel:"panel-pulpit"},{key:"czat",label:"Czat",id:"tab-czat",panel:"panel-czat"}];function H(j){if(j==="czat")return{...r.query,tab:"czat"};const{tab:B,...X}=r.query;return X}function M(j){j!==se.value&&c.push({query:H(j)})}function te(j,B){const X=ft(j.key,B,T.length);X!==null&&(j.preventDefault(),M(T[X].key),Q(()=>document.getElementById(T[X].id)?.focus()))}return ce([()=>l.member,()=>r.query.tab],([j,B])=>{j===!1&&B==="czat"&&c.replace({query:H("pulpit")})},{immediate:!0}),(j,B)=>{const X=dt("router-link");return a(),s("div",{class:de(["pulpit",{"with-chat":V.value,czat:V.value&&se.value==="czat"}]),style:Se(A.value)},[L(an,{class:"pulpit-head",eyebrow:le.value,title:W.value},{default:pe(()=>[L(st,{part:"chip"}),L(X,{class:"profile-link",to:"/profil","aria-label":"Profil"},{default:pe(()=>[ee(v(G.value),1)]),_:1})]),_:1},8,["eyebrow","title"]),V.value?(a(),s("div",bl,[(a(),s(F,null,ae(T,(P,Y)=>n("button",{id:P.id,key:P.key,class:"pulpit-tab",type:"button",role:"tab","aria-selected":se.value===P.key,"aria-controls":P.panel,tabindex:se.value===P.key?0:-1,onClick:ie=>M(P.key),onKeydown:ie=>te(ie,Y)},[ee(v(P.label)+" ",1),P.key==="czat"&&p(Ee)(p(l).totalUnread)?(a(),s("span",kl,[n("span",gl,v(p(Ee)(p(l).totalUnread)),1),n("span",$l,", "+v(p(tt)(p(l).totalUnread)),1)])):x("",!0)],40,_l)),64))])):x("",!0),n("div",{id:"panel-pulpit",class:"pulpit-main",role:ve.value?"tabpanel":void 0,"aria-labelledby":ve.value?"tab-pulpit":void 0},[L(st,{part:"notice"}),L(sn,{ready:u.value,error:p(e).error,onRetry:B[0]||(B[0]=P=>p(e).retry())},{default:pe(()=>[L(Mn,{meeting:_.value,"is-current":f.value,schedule:p(e).schedule,deadlines:p(e).deadlines,readings:p(e).readings,materials:O.value,now:h.value,checklist:d.value},null,8,["meeting","is-current","schedule","deadlines","readings","materials","now","checklist"]),n("div",zl,[n("section",xl,[n("div",Il,[B[3]||(B[3]=n("h2",{id:"next-h"},"Najbliższe zajęcia",-1)),L(X,{to:"/plan",class:"small"},{default:pe(()=>[...B[2]||(B[2]=[ee("Cały plan",-1)])]),_:1})]),k.value.length?(a(),s("ul",Cl,[(a(!0),s(F,null,ae(k.value,P=>(a(),s("li",{key:P.id},[n("div",El,[n("span",jl,v(P.course.name),1),n("span",Tl,v(p(Ne)(P.starts_at))+"–"+v(p(Ne)(P.ends_at)),1)]),n("div",Dl,[ee(v(p(Le)(P.starts_at))+" · "+v(p(Qt)[P.course.form])+" ",1),P.is_online?(a(),s("span",Ml,"online")):P.room?(a(),s("span",Sl,"sala "+v(P.room),1)):x("",!0)])]))),128))])):(a(),s("p",Bl,"Nie ma już zaplanowanych zajęć."))]),n("section",Ll,[n("div",Nl,[B[5]||(B[5]=n("h2",{id:"dl-h"},"Terminy",-1)),L(X,{to:"/terminarz",class:"small"},{default:pe(()=>[...B[4]||(B[4]=[ee("Terminarz",-1)])]),_:1})]),I.value.length?(a(),s("ul",Rl,[(a(!0),s(F,null,ae(I.value,P=>(a(),s("li",{key:P.id},[n("div",Wl,[n("span",Al,v(P.title),1),n("span",{class:de(["badge",{warn:E(P.due_at)}])},v(p(Jt)(P.due_at,h.value)),3)]),n("div",Pl,[ee(v(p(Ge)(P.due_at))+" · "+v(p(en)[P.kind]),1),P.course?(a(),s("span",ql," · "+v(P.course.name),1)):x("",!0)])]))),128))])):(a(),s("p",Hl,"Brak nadchodzących terminów."))])]),n("div",Ul,[n("section",Ol,[B[7]||(B[7]=n("span",{class:"eyebrow"},"Lektury",-1)),B[8]||(B[8]=n("h2",{id:"read-h",style:{margin:"4px 0 8px"}},"Postęp czytania",-1)),n("p",Kl,[n("span",Fl,v(R.value.requiredRead),1),n("span",Zl," z "+v(R.value.requiredTotal)+" obowiązkowych",1)]),n("div",{class:"progress-bar",role:"progressbar","aria-valuenow":q.value,"aria-valuemin":"0","aria-valuemax":"100","aria-label":"Przeczytane lektury obowiązkowe"},[n("span",{style:Se({width:q.value+"%"})},null,4)],8,Vl),n("p",Xl,"Łącznie przeczytano "+v(R.value.read)+" z "+v(p(Xt)(R.value.total,"lektury","lektur","lektur"))+".",1),L(X,{class:"btn small",to:"/lektury"},{default:pe(()=>[...B[6]||(B[6]=[ee("Lista lektur",-1)])]),_:1})]),n("section",Yl,[B[10]||(B[10]=n("span",{class:"eyebrow"},"Quizy",-1)),B[11]||(B[11]=n("h2",{id:"quiz-h",style:{margin:"4px 0 8px"}},"Sprawdź się",-1)),B[12]||(B[12]=n("p",{class:"muted",style:{margin:"0 0 12px"}},"Fiszki z powtórki: losuj po 5 pytań, oznaczaj Wiem / Nie wiem i wracaj do tych, których nie znasz.",-1)),L(X,{class:"btn primary small",to:"/quizy"},{default:pe(()=>[...B[9]||(B[9]=[ee("Zacznij quiz",-1)])]),_:1})])])]),_:1},8,["ready","error"])],8,wl),V.value&&p(ne)?(a(),me(yl,{key:1,width:S.value,"onUpdate:width":B[1]||(B[1]=P=>S.value=P),controls:"panel-czat"},null,8,["width"])):x("",!0),V.value?(a(),me(ul,{key:2,id:"panel-czat",wide:p(ne),visible:N.value,"labelled-by":"tab-czat"},null,8,["wide","visible"])):x("",!0)],6)}}});export{ai as default};