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