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