2 lines
9.8 KiB
JavaScript
2 lines
9.8 KiB
JavaScript
import{d as X,U as R,n,c as o,b as i,F as N,E as F,t as h,e as x,i as U,_ as Q,f as p,w as O,v as ee,av as ae,h as Y,C as se,X as te,r as k,x as M,Z as le,ae as ne,o as oe,j as L,al as W,ap as Z,T as ie,ar as re,s as ue,p as j,at as ce,a1 as de,g as ve,l as pe,m as me}from"./index-CtNAsql9.js";import{_ as fe}from"./PageHead.vue_vue_type_script_setup_true_lang-Bu51AEui.js";import{_ as he}from"./LoadState.vue_vue_type_script_setup_true_lang-D66QQkfK.js";import{a as _e}from"./materialQuery-Co-XzH2C.js";import{r as ye,s as ke}from"./markdown-CbtkjRI4.js";function V(d){return d.name.trim()||d.email}function q(d){return d.toLocaleLowerCase("pl").replace(/ł/g,"l").normalize("NFD").replace(/\p{M}/gu,"")}function be(d,_){return q(d.name).includes(_)||q(d.email).includes(_)}function G(d){return[...d].sort((_,v)=>V(_).localeCompare(V(v),"pl"))}function we(d,_,v,w=8){const l=new Set(v),b=q(_.trim()),y=G(d.filter(r=>!l.has(r.id)));if(!b)return y.slice(0,w);const m=[],c=[];for(const r of y){if(!be(r,b))continue;const u=q(V(r));u.startsWith(b)||u.split(/[\s-]+/).some(g=>g.startsWith(b))?m.push(r):c.push(r)}return[...m,...c].slice(0,w)}function H(d,_){return{is_private:d,user_ids:[...new Set(_)].sort((v,w)=>v-w)}}const ge={class:"field"},$e={key:0,class:"share-chips","aria-label":"Udostępniono"},Me=["title"],Ve=["aria-label","onClick"],xe=["aria-expanded","aria-activedescendant","placeholder"],ze={key:0,class:"share-option share-empty",role:"option","aria-disabled":"true","aria-selected":"false"},Ce=["id","aria-selected","onMousedown","onMousemove"],De={class:"share-option-name"},Ue={key:0,class:"share-option-email"},Be={key:0,class:"muted small share-none"},Te={class:"sr-only",role:"status","aria-live":"polite"},Le=X({__name:"ShareUserInput",props:{users:{},modelValue:{}},emits:["update:modelValue"],setup(d,{emit:_}){const v=d,w=_,l=te(),b=`${l}-input`,y=`${l}-list`,m=k(null),c=k(""),r=k(!1),u=k(0),g=k(""),S=M(()=>new Map(v.users.map(e=>[e.id,e]))),z=M(()=>v.modelValue.map(e=>S.value.get(e)).filter(e=>!!e)),$=M(()=>we(v.users,c.value,v.modelValue,8)),A=M(()=>{const e=c.value.trim();return v.users.length&&e?`Nikt nie pasuje do „${e}”.`:"Brak innych osób."}),B=M(()=>r.value&&$.value.length?I(u.value):void 0);R($,()=>{u.value>=$.value.length&&(u.value=0)});function I(e){return`${y}-opt-${e}`}function T(e){g.value="",le(()=>{g.value=e})}function E(){r.value=c.value.trim()!=="",u.value=0}function C(e){v.modelValue.includes(e.id)||(w("update:modelValue",[...v.modelValue,e.id]),c.value="",r.value=!1,u.value=0,T(`Dodano: ${V(e)}`))}function K(e){w("update:modelValue",v.modelValue.filter(a=>a!==e.id)),T(`Usunięto: ${V(e)}`),m.value?.focus()}function P(e){const a=$.value.length;if(!r.value){r.value=!0,u.value=e===1||!a?0:a-1;return}a&&(u.value=(u.value+e+a)%a)}function t(e){if(e.key==="Enter"){e.preventDefault();const a=$.value[u.value];!e.isComposing&&r.value&&a&&C(a);return}switch(e.key){case"ArrowDown":e.preventDefault(),P(1);break;case"ArrowUp":e.preventDefault(),P(-1);break;case"Escape":r.value?(e.preventDefault(),r.value=!1):c.value&&(e.preventDefault(),c.value="");break;case"Backspace":{if(c.value!=="")return;const a=z.value[z.value.length-1];a&&K(a);break}case"Tab":r.value=!1;break}}function s(e){const a=e.target;(a===e.currentTarget||a.classList.contains("share-chips"))&&m.value?.focus()}return(e,a)=>(n(),o("div",ge,[i("label",{for:b},"Udostępnij osobom"),i("div",{class:"share-field",onClick:s},[z.value.length?(n(),o("ul",$e,[(n(!0),o(N,null,F(z.value,f=>(n(),o("li",{key:f.id,class:"share-chip"},[i("span",{class:"share-chip-label",title:f.email},h(x(V)(f)),9,Me),i("button",{class:"share-chip-remove",type:"button","aria-label":`Usuń ${x(V)(f)}`,onClick:D=>K(f)},[U(Q,{name:"close"})],8,Ve)]))),128))])):p("",!0),O(i("input",{id:b,ref_key:"input",ref:m,"onUpdate:modelValue":a[0]||(a[0]=f=>c.value=f),class:"share-input",type:"text",role:"combobox","aria-autocomplete":"list","aria-expanded":r.value?"true":"false","aria-controls":y,"aria-activedescendant":B.value,autocomplete:"off",enterkeyhint:"done",placeholder:c.value?void 0:"Imię, nazwisko lub e-mail",onInput:E,onKeydown:t,onBlur:a[1]||(a[1]=f=>r.value=!1)},null,40,xe),[[ee,c.value]]),O(i("ul",{id:y,class:"share-pop",role:"listbox","aria-label":"Pasujące osoby"},[$.value.length?p("",!0):(n(),o("li",ze,h(A.value),1)),(n(!0),o(N,null,F($.value,(f,D)=>(n(),o("li",{id:I(D),key:f.id,class:se(["share-option",{active:D===u.value}]),role:"option","aria-selected":D===u.value?"true":"false",onMousedown:Y(J=>C(f),["prevent"]),onMousemove:J=>D!==u.value&&(u.value=D)},[i("span",De,h(x(V)(f)),1),x(V)(f)!==f.email?(n(),o("span",Ue,h(f.email),1)):p("",!0)],42,Ce))),128))],512),[[ae,r.value]])]),d.modelValue.length?p("",!0):(n(),o("p",Be,"Nikomu nie udostępniono.")),i("span",Te,h(g.value),1)]))}}),je=["href"],Ne={class:"muted small"},Se={key:1},Ae={key:2},Ie={key:3},Ee={key:0},Ke={class:"btn-row"},Pe=["href"],Fe=["innerHTML"],qe={key:2,class:"section","aria-labelledby":"files-h"},We={class:"rows"},Ze=["href","download"],He={class:"when"},Re={key:3,class:"section no-print","aria-labelledby":"access-h"},Oe={class:"card"},Xe={key:0,class:"notice error",role:"alert"},Ye={key:1,class:"skeleton","aria-busy":"true"},Ge={class:"check"},Je={class:"muted small"},Qe={key:0,class:"muted small"},ea={class:"btn-row"},aa=["disabled"],sa={key:0,class:"muted small"},ta={key:1,class:"muted small",role:"status"},la={key:1,class:"notice error",role:"alert"},ca=X({__name:"MaterialView",props:{id:{}},setup(d){const _=d,v=me(),w=ne(),l=k(null),b=k(""),y=k(null),m=k(""),c=k(""),r=k(!1),u=k([]),g=k(!1);function S(t){y.value=t,r.value=t.is_private,u.value=G(t.shares).map(s=>s.id)}const z=M(()=>{const t=y.value;if(!t)return[];const s=new Set(t.users.map(e=>e.id));return[...t.users,...t.shares.filter(e=>!s.has(e.id))]}),$=M(()=>{const t=y.value;if(!t)return!1;const s=H(r.value,u.value),e=H(t.is_private,t.shares.map(a=>a.id));return s.is_private!==e.is_private||s.user_ids.join(",")!==e.user_ids.join(",")});R($,t=>{t&&(c.value="")});async function A(t){m.value="";try{S(await W.materialAccess(t))}catch(s){m.value=Z(s)}}async function B(){l.value=null,b.value="",y.value=null,c.value="",m.value="",w.loadMeetings();try{l.value=await W.material(Number(_.id))}catch(t){b.value=Z(t);return}l.value.can_manage&&await A(l.value.id)}async function I(){const t=l.value;if(!(!t||g.value)){g.value=!0,c.value="",m.value="";try{const s=await W.saveMaterialAccess(t.id,H(r.value,u.value));if(l.value!==t)return;S(s),t.is_private=s.is_private,c.value="Zapisano."}catch(s){m.value=Z(s)}finally{g.value=!1}}}oe(B),R(()=>_.id,B);const T=M(()=>ye(l.value?.body)),E=M(()=>l.value?.url?ke(l.value.url):null),C=M(()=>{const t=l.value?.meeting_id;return t==null?null:(w.meetings??[]).find(s=>s.id===t)??null});function K(t){t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||(t.preventDefault(),_e(window.history.state?.back,s=>v.resolve(s).name)?v.back():v.push("/materialy"))}function P(){window.print()}return(t,s)=>{const e=pe("router-link");return n(),o("div",null,[U(he,{ready:!!l.value,error:b.value,onRetry:s[3]||(s[3]=a=>B())},{default:L(()=>[l.value?(n(),o(N,{key:0},[U(fe,{eyebrow:`${x(ie)[l.value.type]}${l.value.published_at?" · "+x(re)(l.value.published_at):""}`,title:l.value.title},{default:L(()=>[U(e,{to:"/materialy",custom:""},{default:L(({href:a})=>[i("a",{class:"btn small ghost",href:a,onClick:K},"← Materiały",8,je)]),_:1})]),_:1},8,["eyebrow","title"]),i("p",Ne,[l.value.course?(n(),ue(e,{key:0,to:`/przedmioty/${l.value.course.id}`},{default:L(()=>[j(h(l.value.course.name),1)]),_:1},8,["to"])):p("",!0),C.value?(n(),o("span",Se,[s[4]||(s[4]=j(" · ",-1)),U(e,{to:`/plan?zjazd=${C.value.number}`},{default:L(()=>[j(h(x(ce)(C.value)),1)]),_:1},8,["to"])])):p("",!0),l.value.source?(n(),o("span",Ae," · "+h(l.value.source),1)):p("",!0),l.value.is_private?(n(),o("span",Ie,[...s[5]||(s[5]=[j(" · ",-1),i("span",{class:"badge alert"},"prywatny",-1)])])):p("",!0)]),l.value.tags.length?(n(),o("p",Ee,[(n(!0),o(N,null,F(l.value.tags,a=>(n(),o("span",{key:a.id,class:"badge",style:{"margin-right":"4px"}},h(a.name),1))),128))])):p("",!0),i("p",Ke,[E.value?(n(),o("a",{key:0,class:"btn small",href:E.value,target:"_blank",rel:"noopener noreferrer"},"Otwórz link",8,Pe)):p("",!0),i("button",{class:"btn small",type:"button",onClick:P},"Drukuj")]),T.value?(n(),o("div",{key:1,class:"prose card",innerHTML:T.value},null,8,Fe)):p("",!0),l.value.files.length?(n(),o("section",qe,[s[6]||(s[6]=i("div",{class:"section-head"},[i("h2",{id:"files-h"},"Pliki")],-1)),i("ul",We,[(n(!0),o(N,null,F(l.value.files,a=>(n(),o("li",{key:a.id,class:"row-main"},[i("a",{href:a.url,download:a.name},h(a.name),9,Ze),i("span",He,h(x(de)(a.size)),1)]))),128))])])):p("",!0),l.value.can_manage?(n(),o("section",Re,[s[8]||(s[8]=i("div",{class:"section-head"},[i("h2",{id:"access-h"},"Dostęp")],-1)),i("div",Oe,[m.value&&!y.value?(n(),o("div",Xe,[j(h(m.value)+" ",1),i("button",{class:"linkish",type:"button",onClick:s[0]||(s[0]=a=>A(l.value.id))},"Spróbuj ponownie")])):y.value?(n(),o("form",{key:2,onSubmit:Y(I,["prevent"])},[i("label",Ge,[O(i("input",{"onUpdate:modelValue":s[1]||(s[1]=a=>r.value=a),type:"checkbox"},null,512),[[ve,r.value]]),s[7]||(s[7]=i("span",null,"Materiał prywatny",-1))]),i("p",Je,h(r.value?"Widzisz go tylko Ty i osoby, którym go udostępnisz.":"Materiał publiczny: widzą go wszyscy."),1),U(Le,{modelValue:u.value,"onUpdate:modelValue":s[2]||(s[2]=a=>u.value=a),users:z.value},null,8,["modelValue","users"]),r.value?p("",!0):(n(),o("p",Qe,"Udostępnienie działa, gdy materiał jest prywatny.")),i("div",ea,[i("button",{class:"btn small",type:"submit",disabled:g.value},"Zapisz dostęp",8,aa),$.value?(n(),o("span",sa,"Niezapisane zmiany.")):c.value?(n(),o("span",ta,h(c.value),1)):p("",!0)]),m.value?(n(),o("div",la,h(m.value),1)):p("",!0)],32)):(n(),o("div",Ye))])])):p("",!0)],64)):p("",!0)]),_:1},8,["ready","error"])])}}});export{ca as default};
|