Files
sm-bm-plugin/public/assets/MaterialView-DPDlug6D.js
2026-10-09 02:47:29 +02:00

7 lines
4.6 KiB
JavaScript

import{_ as C}from"./PageHead.vue_vue_type_script_setup_true_lang-BWIoLeiJ.js";import{_ as E}from"./LoadState.vue_vue_type_script_setup_true_lang-so9hsPWx.js";import{d as L,q as V,A as z,c as u,h as k,i as g,r as B,E as A,G as H,o as l,F as y,b,m as j,a as d,B as W,t as f,e as h,y as M,s as N,k as D}from"./index-DHNZ-nL_.js";import{T as F,i as P,j as G}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 w(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 p=T(r),a=S(_(c));if(!p)return s(a);const n=/^https?:/i.test(p)?' target="_blank" rel="noopener noreferrer nofollow"':"";return s(`<a href="${_(p)}"${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 q(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 p=/^(#{1,6})\s+(.*?)\s*#*\s*$/.exec(r);if(p){const n=Math.min(p[1].length+1,6);s.push(`<h${n}>${w(p[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 a=/^\s*([-*+]|\d+[.)])\s+(.*)$/.exec(r);if(a){const n=/\d/.test(a[1]),v=[];for(;e<t.length;){const $=/^\s*([-*+]|\d+[.)])\s+(.*)$/.exec(t[e]);if(!$||/\d/.test($[1])!==n)break;let x=$[2];for(e++;e<t.length&&/^\s{2,}\S/.test(t[e])&&!/^\s*([-*+]|\d+[.)])\s+/.test(t[e]);)x+=" "+t[e++].trim();v.push(`<li>${w(x)}</li>`)}s.push(n?`<ol>${v.join("")}</ol>`:`<ul>${v.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=>w(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"],ee={class:"when"},oe=L({__name:"MaterialView",props:{id:{}},setup(o){const t=o,s=B(null),e=B("");async function i(){s.value=null,e.value="";try{s.value=await A.material(Number(t.id))}catch(p){e.value=H(p)}}V(i),z(()=>t.id,i);const c=N(()=>q(s.value?.body)),r=N(()=>s.value?.url?T(s.value.url):null);return(p,a)=>{const m=D("router-link");return l(),u("div",null,[k(E,{ready:!!s.value,error:e.value,onRetry:a[0]||(a[0]=n=>i())},{default:g(()=>[s.value?(l(),u(y,{key:0},[k(C,{eyebrow:`${b(F)[s.value.type]}${s.value.published_at?" · "+b(P)(s.value.published_at):""}`,title:s.value.title},{default:g(()=>[k(m,{class:"btn small ghost",to:"/materialy"},{default:g(()=>[...a[1]||(a[1]=[j("← Materiały",-1)])]),_:1})]),_:1},8,["eyebrow","title"]),d("p",R,[s.value.course?(l(),W(m,{key:0,to:`/przedmioty/${s.value.course.id}`},{default:g(()=>[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,[d("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]=d("div",{class:"section-head"},[d("h2",{id:"files-h"},"Pliki")],-1)),d("ul",X,[(l(!0),u(y,null,M(s.value.files,n=>(l(),u("li",{key:n.id,class:"row-main"},[d("a",{href:n.url,target:"_blank",rel:"noopener noreferrer",download:""},f(n.name),9,Z),d("span",ee,f(b(G)(n.size)),1)]))),128))])])):h("",!0)],64)):h("",!0)]),_:1},8,["ready","error"])])}}});export{oe as default};