Files
sm-bm-plugin/public/assets/MaterialView-BCG8drdV.js

2 lines
11 KiB
JavaScript

import{d as ae,n,c as o,b as l,F as E,E as R,t as c,e as r,av as M,i as g,_ as te,f as u,w as G,v as ne,aw as le,ax as oe,h as se,C as ie,X as re,r as y,x as b,ay as ue,ae as ce,q as de,U as X,o as pe,j as w,al as C,ap as A,T as ve,ar as me,s as J,p as h,at as ye,a1 as fe,g as _e,az as he,aA as Y,A as be,aB as ke,l as we,m as ge}from"./index-pecOIxjM.js";import{_ as $e}from"./PageHead.vue_vue_type_script_setup_true_lang-B1ObQL_V.js";import{_ as ze}from"./LoadState.vue_vue_type_script_setup_true_lang-CcJJXXGw.js";import{u as Me,r as Ce}from"./markdown-DfJQ-uoA.js";import{_ as Ve}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DBvHD95I.js";import{b as Q,c as ee}from"./materialListCache-CbOkBNjz.js";import{p as xe,c as Te}from"./materialPins-CTQ_1quC.js";import{s as Ue}from"./safeText-O-oWGdGq.js";const Be={class:"field"},je={key:0,class:"share-chips","aria-label":"Udostępniono"},Ie=["title"],Le=["aria-label","onClick"],Ne=["aria-expanded","aria-activedescendant","placeholder"],Ae={key:0,class:"share-option share-empty",role:"option","aria-disabled":"true","aria-selected":"false"},Ee=["id","aria-selected","onMousedown","onMousemove"],De={class:"share-option-name"},Se={key:0,class:"share-option-email"},Pe={key:0,class:"muted small share-none"},Ke={class:"sr-only",role:"status","aria-live":"polite"},qe=ae({__name:"ShareUserInput",props:{users:{},modelValue:{}},emits:["update:modelValue"],setup(D,{emit:S}){const d=D,V=S,x=re(),s=`${x}-input`,T=`${x}-list`,k=y(null),f=b(()=>new Map(d.users.map(e=>[e.id,e]))),p=b(()=>d.modelValue.map(e=>f.value.get(e)).filter(e=>!!e)),{query:v,open:m,active:_,announcement:$,suggestions:U,activeId:Z,optionId:P,announce:B,onInput:z,onKeydown:K,close:j,hover:q,reset:I}=Me({listId:T,suggest:e=>ue(d.users,e,d.modelValue,8),onPick:F,onBackspace:()=>{const e=p.value[p.value.length-1];e&&L(e)}}),O=b(()=>{const e=v.value.trim();return d.users.length&&e?`Nikt nie pasuje do „${e}”.`:"Brak innych osób."});function F(e){d.modelValue.includes(e.id)||(V("update:modelValue",[...d.modelValue,e.id]),I(),B(`Dodano: ${M(e)}`))}function L(e){V("update:modelValue",d.modelValue.filter(a=>a!==e.id)),B(`Usunięto: ${M(e)}`),k.value?.focus()}function W(e){const a=e.target;(a===e.currentTarget||a.classList.contains("share-chips"))&&k.value?.focus()}return(e,a)=>(n(),o("div",Be,[l("label",{for:s},"Udostępnij osobom"),l("div",{class:"share-field",onClick:W},[p.value.length?(n(),o("ul",je,[(n(!0),o(E,null,R(p.value,t=>(n(),o("li",{key:t.id,class:"share-chip"},[l("span",{class:"share-chip-label",title:t.email},c(r(M)(t)),9,Ie),l("button",{class:"share-chip-remove",type:"button","aria-label":`Usuń ${r(M)(t)}`,onClick:i=>L(t)},[g(te,{name:"close"})],8,Le)]))),128))])):u("",!0),G(l("input",{id:s,ref_key:"input",ref:k,"onUpdate:modelValue":a[0]||(a[0]=t=>le(v)?v.value=t:null),class:"share-input",type:"text",role:"combobox","aria-autocomplete":"list","aria-expanded":r(m)?"true":"false","aria-controls":T,"aria-activedescendant":r(Z),autocomplete:"off",enterkeyhint:"done",placeholder:r(v)?void 0:"Imię, nazwisko lub e-mail",onInput:a[1]||(a[1]=(...t)=>r(z)&&r(z)(...t)),onKeydown:a[2]||(a[2]=(...t)=>r(K)&&r(K)(...t)),onBlur:a[3]||(a[3]=(...t)=>r(j)&&r(j)(...t))},null,40,Ne),[[ne,r(v)]]),G(l("ul",{id:T,class:"share-pop",role:"listbox","aria-label":"Pasujące osoby"},[r(U).length?u("",!0):(n(),o("li",Ae,c(O.value),1)),(n(!0),o(E,null,R(r(U),(t,i)=>(n(),o("li",{id:r(P)(i),key:t.id,class:ie(["share-option",{active:i===r(_)}]),role:"option","aria-selected":i===r(_)?"true":"false",onMousedown:se(H=>F(t),["prevent"]),onMousemove:H=>r(q)(i)},[l("span",De,c(r(M)(t)),1),r(M)(t)!==t.email?(n(),o("span",Se,c(t.email),1)):u("",!0)],42,Ee))),128))],512),[[oe,r(m)]])]),D.modelValue.length?u("",!0):(n(),o("p",Pe,"Nikomu nie udostępniono.")),l("span",Ke,c(r($)),1)]))}}),Fe=["href"],He={class:"muted small"},Re={key:1},Ze={key:2},Oe={key:3},We={key:4},Xe={key:0},Ye={class:"btn-row material-actions"},Ge=["href"],Je=["aria-pressed"],Qe={key:1,class:"btn-row author-actions"},ea=["href","onClick"],aa=["innerHTML"],sa={key:3,class:"section","aria-labelledby":"files-h"},ta={class:"rows"},na=["href","download"],la={class:"when"},oa={key:4,class:"section no-print","aria-labelledby":"access-h"},ia={class:"card"},ra={key:0,class:"notice error",role:"alert"},ua={key:1,class:"skeleton","aria-busy":"true"},ca={class:"check"},da={class:"muted small"},pa={key:0,class:"muted small"},va={class:"btn-row"},ma=["disabled"],ya={key:0,class:"muted small"},fa={key:1,class:"muted small",role:"status"},_a={key:1,class:"notice error",role:"alert"},Ca=ae({__name:"MaterialView",props:{id:{}},setup(D){const S=D,d=ge(),V=ce(),x=de(),s=y(null);X(s,e=>{e?.title&&(document.title=`${e.title} · BM II°`)});const T=Te({pin:C.pinMaterial,unpin:C.unpinMaterial,onSaved:ee,onError:e=>x.show(`Nie udało się zapisać zmiany. ${A(e)}`)}),k=y(""),f=y(null),p=y(""),v=y(""),m=y(!1),_=y([]),$=y(!1);function U(e){f.value=e,m.value=e.is_private,_.value=he(e.shares).map(a=>a.id)}const Z=b(()=>{const e=f.value;if(!e)return[];const a=new Set(e.users.map(t=>t.id));return[...e.users,...e.shares.filter(t=>!a.has(t.id))]}),P=b(()=>{const e=f.value;if(!e)return!1;const a=Y(m.value,_.value),t=Y(e.is_private,e.shares.map(i=>i.id));return a.is_private!==t.is_private||a.user_ids.join(",")!==t.user_ids.join(",")});X(P,e=>{e&&(v.value="")});async function B(e){p.value="";try{U(await C.materialAccess(e))}catch(a){p.value=A(a)}}async function z(){s.value=null,k.value="",f.value=null,v.value="",p.value="",V.loadMeetings();try{s.value=await C.material(Number(S.id))}catch(e){k.value=A(e);return}s.value.can_manage&&await B(s.value.id)}async function K(){const e=s.value;if(!(!e||$.value)){$.value=!0,v.value="",p.value="";try{const a=await C.saveMaterialAccess(e.id,Y(m.value,_.value));if(s.value!==e)return;U(a),e.is_private=a.is_private,v.value="Zapisano."}catch(a){p.value=A(a)}finally{$.value=!1}}}pe(z),X(()=>S.id,z);const j=b(()=>Ce(s.value?.body)),q=b(()=>s.value?.url?Ue(s.value.url):null),I=b(()=>{const e=s.value?.meeting_id;return e==null?null:(V.meetings??[]).find(a=>a.id===e)??null});function O(e){e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),Q(window.history.state?.back,a=>d.resolve(a).name)?d.back():d.push("/materialy"))}function F(){window.print()}const L=y(null);async function W(e){const a=s.value,t=L.value;if(!a||!t)return;let i=!1;await t.open({from:e.currentTarget instanceof HTMLElement?e.currentTarget:null,action:async()=>{try{await C.unpublishMaterial(a.id)}catch(N){if(N instanceof be&&N.status===404){i=!0;return}throw new Error(`Nie udało się usunąć: ${ke(A(N))}.`)}}})==="confirm"&&(ee(),x.show(i?"Tego materiału już nie ma w Materiałach.":"Materiał przeniesiony do szkiców."),Q(window.history.state?.back,N=>d.resolve(N).name)?d.back():d.replace("/materialy"))}return(e,a)=>{const t=we("router-link");return n(),o("div",null,[g(ze,{ready:!!s.value,error:k.value,onRetry:a[4]||(a[4]=i=>z())},{default:w(()=>[s.value?(n(),o(E,{key:0},[g($e,{eyebrow:`${r(ve)[s.value.type]}${s.value.published_at?" · "+r(me)(s.value.published_at):""} · #${s.value.id}`,title:s.value.title},{default:w(()=>[g(t,{to:"/materialy",custom:""},{default:w(({href:i})=>[l("a",{class:"btn small ghost",href:i,onClick:O},"← Materiały",8,Fe)]),_:1})]),_:1},8,["eyebrow","title"]),l("p",He,[s.value.course?(n(),J(t,{key:0,to:`/przedmioty/${s.value.course.id}`},{default:w(()=>[h(c(s.value.course.name),1)]),_:1},8,["to"])):u("",!0),I.value?(n(),o("span",Re,[a[5]||(a[5]=h(" · ",-1)),g(t,{to:`/plan?zjazd=${I.value.number}`},{default:w(()=>[h(c(r(ye)(I.value)),1)]),_:1},8,["to"])])):u("",!0),s.value.source?(n(),o("span",Ze," · "+c(s.value.source),1)):u("",!0),s.value.is_private?(n(),o("span",Oe,[...a[6]||(a[6]=[h(" · ",-1),l("span",{class:"badge alert"},"prywatny",-1)])])):u("",!0),s.value.pinned?(n(),o("span",We,[...a[7]||(a[7]=[h(" · ",-1),l("span",{class:"badge pin"},"przypięty",-1)])])):u("",!0)]),s.value.tags.length?(n(),o("p",Xe,[(n(!0),o(E,null,R(s.value.tags,i=>(n(),o("span",{key:i.id,class:"badge",style:{"margin-right":"4px"}},c(i.name),1))),128))])):u("",!0),l("div",Ye,[q.value?(n(),o("a",{key:0,class:"btn small",href:q.value,target:"_blank",rel:"noopener noreferrer"},"Otwórz link",8,Ge)):u("",!0),l("button",{class:"btn small",type:"button",onClick:F},"Drukuj"),l("button",{class:"btn small pin no-print",type:"button","aria-pressed":s.value.pinned,onClick:a[0]||(a[0]=i=>r(T).toggle(s.value))},c(r(xe)(s.value.pinned)),9,Je),s.value.can_manage?(n(),o("span",Qe,[g(t,{to:`/materialy/${s.value.id}/edytuj`,custom:""},{default:w(({href:i,navigate:H})=>[l("a",{class:"btn small",href:i,onClick:H},"Edytuj",8,ea)]),_:1},8,["to"]),l("button",{class:"btn small miss",type:"button",onClick:W},"Usuń")])):u("",!0)]),s.value.can_manage?(n(),J(Ve,{key:1,ref_key:"removeDialog",ref:L,tone:"danger",title:"Usunąć materiał?","confirm-label":"Usuń materiał","cancel-label":"Zostaw materiał"},{default:w(()=>[h(" „"+c(s.value.title)+"” zniknie z Materiałów u wszystkich, także u Ciebie. Trafi do szkiców: przywrócisz go w /bmadmin albo przez ",1),a[8]||(a[8]=l("code",null,"bm-notatka push",-1)),a[9]||(a[9]=h(". ",-1))]),_:1},512)):u("",!0),j.value?(n(),o("div",{key:2,class:"prose card",innerHTML:j.value},null,8,aa)):u("",!0),s.value.files.length?(n(),o("section",sa,[a[10]||(a[10]=l("div",{class:"section-head"},[l("h2",{id:"files-h"},"Pliki")],-1)),l("ul",ta,[(n(!0),o(E,null,R(s.value.files,i=>(n(),o("li",{key:i.id,class:"row-main"},[l("a",{href:i.url,download:i.name},c(i.name),9,na),l("span",la,c(r(fe)(i.size)),1)]))),128))])])):u("",!0),s.value.can_manage?(n(),o("section",oa,[a[12]||(a[12]=l("div",{class:"section-head"},[l("h2",{id:"access-h"},"Dostęp")],-1)),l("div",ia,[p.value&&!f.value?(n(),o("div",ra,[h(c(p.value)+" ",1),l("button",{class:"linkish",type:"button",onClick:a[1]||(a[1]=i=>B(s.value.id))},"Spróbuj ponownie")])):f.value?(n(),o("form",{key:2,onSubmit:se(K,["prevent"])},[l("label",ca,[G(l("input",{"onUpdate:modelValue":a[2]||(a[2]=i=>m.value=i),type:"checkbox"},null,512),[[_e,m.value]]),a[11]||(a[11]=l("span",null,"Materiał prywatny",-1))]),l("p",da,c(m.value?"Widzisz go tylko Ty i osoby, którym go udostępnisz.":"Materiał publiczny: widzą go wszyscy."),1),g(qe,{modelValue:_.value,"onUpdate:modelValue":a[3]||(a[3]=i=>_.value=i),users:Z.value},null,8,["modelValue","users"]),m.value?u("",!0):(n(),o("p",pa,"Udostępnienie działa, gdy materiał jest prywatny.")),l("div",va,[l("button",{class:"btn small",type:"submit",disabled:$.value},"Zapisz dostęp",8,ma),P.value?(n(),o("span",ya,"Niezapisane zmiany.")):v.value?(n(),o("span",fa,c(v.value),1)):u("",!0)]),p.value?(n(),o("div",_a,c(p.value),1)):u("",!0)],32)):(n(),o("div",ua))])])):u("",!0)],64)):u("",!0)]),_:1},8,["ready","error"])])}}});export{Ca as default};