7 lines
4.5 KiB
JavaScript
7 lines
4.5 KiB
JavaScript
import{_ as C}from"./PageHead.vue_vue_type_script_setup_true_lang-4URWY3a8.js";import{_ as E}from"./LoadState.vue_vue_type_script_setup_true_lang-BlmCGQyT.js";import{d as L,q as V,A as z,c as u,h as k,i as v,r as B,E as A,G as H,o as l,F as y,b as w,m as j,a as p,B as W,t as f,e as h,y as M,s as N,k as D}from"./index-CcCE3P1z.js";import{T as F,i as P,j as G}from"./format-bcE-cYHJ.js";const O={"&":"&","<":"<",">":">",'"':""","'":"'"};function _(a){return a.replace(/[&<>"']/g,t=>O[t])}function T(a){const t=a.trim().replace(/[\u0000-\u001f\u007f\s]+/g,"");return/^https?:\/\/[^/]/i.test(t)||/^mailto:[^\s]+$/i.test(t)||t.startsWith("/")&&!t.startsWith("//")||t.startsWith("#")?t:null}function b(a){const t=[],s=i=>`\0${t.push(i)-1}\0`;let e=a.replace(/\u0000/g,"");return e=e.replace(/`([^`\n]+)`/g,(i,c)=>s(`<code>${_(c)}</code>`)),e=e.replace(/\[([^\]\n]+)\]\(([^()\s]*(?:\([^()\s]*\)[^()\s]*)*)\)/g,(i,c,r)=>{const d=T(r),o=S(_(c));if(!d)return s(o);const n=/^https?:/i.test(d)?' target="_blank" rel="noopener noreferrer nofollow"':"";return s(`<a href="${_(d)}"${n}>${o}</a>`)}),e=S(_(e)),e.replace(/\u0000(\d+)\u0000/g,(i,c)=>t[Number(c)]??"")}function S(a){return a.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>").replace(/(^|[\s(])\*([^*\n]+)\*(?=$|[\s).,;:!?])/g,"$1<em>$2</em>").replace(/(^|[\s(])_([^_\n]+)_(?=$|[\s).,;:!?])/g,"$1<em>$2</em>")}function q(a){if(!a)return"";const t=a.replace(/\r\n?/g,`
|
|
`).split(`
|
|
`),s=[];let e=0;const i=r=>r.trim()==="",c=r=>/^(#{1,6})\s/.test(r)||/^```/.test(r)||/^>\s?/.test(r)||/^\s*([-*+]|\d+[.)])\s+/.test(r)||/^(-{3,}|\*{3,}|_{3,})\s*$/.test(r);for(;e<t.length;){const r=t[e];if(i(r)){e++;continue}if(/^```/.test(r)){const n=[];for(e++;e<t.length&&!/^```/.test(t[e]);)n.push(t[e++]);e++,s.push(`<pre><code>${_(n.join(`
|
|
`))}</code></pre>`);continue}const d=/^(#{1,6})\s+(.*?)\s*#*\s*$/.exec(r);if(d){const n=Math.min(d[1].length+1,6);s.push(`<h${n}>${b(d[2])}</h${n}>`),e++;continue}if(/^(-{3,}|\*{3,}|_{3,})\s*$/.test(r)){s.push("<hr>"),e++;continue}if(/^>\s?/.test(r)){const n=[];for(;e<t.length&&/^>\s?/.test(t[e]);)n.push(t[e++].replace(/^>\s?/,""));s.push(`<blockquote>${q(n.join(`
|
|
`))}</blockquote>`);continue}const o=/^\s*([-*+]|\d+[.)])\s+(.*)$/.exec(r);if(o){const n=/\d/.test(o[1]),$=[];for(;e<t.length;){const g=/^\s*([-*+]|\d+[.)])\s+(.*)$/.exec(t[e]);if(!g||/\d/.test(g[1])!==n)break;let x=g[2];for(e++;e<t.length&&/^\s{2,}\S/.test(t[e])&&!/^\s*([-*+]|\d+[.)])\s+/.test(t[e]);)x+=" "+t[e++].trim();$.push(`<li>${b(x)}</li>`)}s.push(n?`<ol>${$.join("")}</ol>`:`<ul>${$.join("")}</ul>`);continue}const m=[r];for(e++;e<t.length&&!i(t[e])&&!c(t[e]);)m.push(t[e++]);s.push(`<p>${m.map(n=>b(n.trim())).join(" ")}</p>`)}return s.join(`
|
|
`)}const R={class:"muted small"},U={key:1},Y={key:0},I={key:1},J=["href"],K=["innerHTML"],Q={key:3,class:"section","aria-labelledby":"files-h"},X={class:"rows"},Z=["href","download"],ee={class:"when"},ae=L({__name:"MaterialView",props:{id:{}},setup(a){const t=a,s=B(null),e=B("");async function i(){s.value=null,e.value="";try{s.value=await A.material(Number(t.id))}catch(d){e.value=H(d)}}V(i),z(()=>t.id,i);const c=N(()=>q(s.value?.body)),r=N(()=>s.value?.url?T(s.value.url):null);return(d,o)=>{const m=D("router-link");return l(),u("div",null,[k(E,{ready:!!s.value,error:e.value,onRetry:o[0]||(o[0]=n=>i())},{default:v(()=>[s.value?(l(),u(y,{key:0},[k(C,{eyebrow:`${w(F)[s.value.type]}${s.value.published_at?" · "+w(P)(s.value.published_at):""}`,title:s.value.title},{default:v(()=>[k(m,{class:"btn small ghost",to:"/materialy"},{default:v(()=>[...o[1]||(o[1]=[j("← Materiały",-1)])]),_:1})]),_:1},8,["eyebrow","title"]),p("p",R,[s.value.course?(l(),W(m,{key:0,to:`/przedmioty/${s.value.course.id}`},{default:v(()=>[j(f(s.value.course.name),1)]),_:1},8,["to"])):h("",!0),s.value.source?(l(),u("span",U," · "+f(s.value.source),1)):h("",!0)]),s.value.tags.length?(l(),u("p",Y,[(l(!0),u(y,null,M(s.value.tags,n=>(l(),u("span",{key:n.id,class:"badge",style:{"margin-right":"4px"}},f(n.name),1))),128))])):h("",!0),r.value?(l(),u("p",I,[p("a",{class:"btn small",href:r.value,target:"_blank",rel:"noopener noreferrer"},"Otwórz link",8,J)])):h("",!0),c.value?(l(),u("div",{key:2,class:"prose card",innerHTML:c.value},null,8,K)):h("",!0),s.value.files.length?(l(),u("section",Q,[o[2]||(o[2]=p("div",{class:"section-head"},[p("h2",{id:"files-h"},"Pliki")],-1)),p("ul",X,[(l(!0),u(y,null,M(s.value.files,n=>(l(),u("li",{key:n.id,class:"row-main"},[p("a",{href:n.url,download:n.name},f(n.name),9,Z),p("span",ee,f(w(G)(n.size)),1)]))),128))])])):h("",!0)],64)):h("",!0)]),_:1},8,["ready","error"])])}}});export{ae as default};
|