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

7 lines
4.5 KiB
JavaScript

import{_ as L}from"./PageHead.vue_vue_type_script_setup_true_lang-D45_AHIh.js";import{_ as V}from"./LoadState.vue_vue_type_script_setup_true_lang-DkVVX15k.js";import{d as q,o as z,D as E,c as u,i as k,j as v,r as j,H,I as D,n as l,F as y,e as w,p as B,b as p,s as W,t as f,f as h,B as M,x as N,l as A}from"./index-BJq7_SVs.js";import{T as F,i as P,j as I}from"./format-bcE-cYHJ.js";const O={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(o){return o.replace(/[&<>"']/g,t=>O[t])}function T(o){const t=o.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(o){const t=[],s=i=>`\0${t.push(i)-1}\0`;let e=o.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),a=S(_(c));if(!d)return s(a);const n=/^https?:/i.test(d)?' target="_blank" rel="noopener noreferrer nofollow"':"";return s(`<a href="${_(d)}"${n}>${a}</a>`)}),e=S(_(e)),e.replace(/\u0000(\d+)\u0000/g,(i,c)=>t[Number(c)]??"")}function S(o){return o.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 C(o){if(!o)return"";const t=o.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>${C(n.join(`
`))}</blockquote>`);continue}const a=/^\s*([-*+]|\d+[.)])\s+(.*)$/.exec(r);if(a){const n=/\d/.test(a[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},G={key:1},J=["href"],K=["innerHTML"],Q={key:3,class:"section","aria-labelledby":"files-h"},X={class:"rows"},Z=["href","download"],ee={class:"when"},oe=q({__name:"MaterialView",props:{id:{}},setup(o){const t=o,s=j(null),e=j("");async function i(){s.value=null,e.value="";try{s.value=await H.material(Number(t.id))}catch(d){e.value=D(d)}}z(i),E(()=>t.id,i);const c=N(()=>C(s.value?.body)),r=N(()=>s.value?.url?T(s.value.url):null);return(d,a)=>{const m=A("router-link");return l(),u("div",null,[k(V,{ready:!!s.value,error:e.value,onRetry:a[0]||(a[0]=n=>i())},{default:v(()=>[s.value?(l(),u(y,{key:0},[k(L,{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(()=>[...a[1]||(a[1]=[B("← 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(()=>[B(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",G,[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,[a[2]||(a[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(I)(n.size)),1)]))),128))])])):h("",!0)],64)):h("",!0)]),_:1},8,["ready","error"])])}}});export{oe as default};