PageSourceSearch

https://paper2gal.com/assets/BlackboardMarkdown-Cizre-1w.js

js paper2gal.com collected 2026-10-09 22:39:30 UTC 6,478 bytes, 26 lines download raw bytes

1import{r as m,j as l,d as g,b as _}from"./react-vendor-CHQL15iE.js";import{r as k,a as w}from"./katex-math-BxKHCrdI.js";import{M as y,e as $,i as v}from"./markdown-W-rE_H7s.js";const j={trust:!1,strict:"ignore"};class E extends m.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){console.warn("BlackboardMarkdown render error (fallback to plain text):",(e==null?void 0:e.message)||e)}render(){return this.state.hasError?l.jsx("div",{className:"whitespace-pre-wrap break-words",children:this.props.fallback}):this.props.children}}const x=`font-medium h-full max-w-full overflow-x-auto leading-relaxed
2  [&_h1]:text-amber-200 [&_h1]:font-black [&_h1]:text-xl [&_h1]:my-2
3  [&_h2]:text-amber-200 [&_h2]:font-bold [&_h2]:text-lg [&_h2]:my-2
4  [&_h3]:text-amber-200 [&_h3]:font-bold [&_h3]:my-2
5  [&_p]:my-1 [&_p]:text-amber-50
6  [&_ul]:list-disc [&_ul]:pl-5 [&_ul]:my-2
7  [&_ol]:list-decimal [&_ol]:pl-5 [&_ol]:my-2
8  [&_li]:my-0.5
9  [&_blockquote]:border-l-2 [&_blockquote]:border-amber-300 [&_blockquote]:pl-3 [&_blockquote]:italic [&_blockquote]:text-amber-100
10  [&_hr]:my-3 [&_hr]:border-amber-700
11  [&_code]:bg-amber-900/40 [&_code]:px-1 [&_code]:rounded [&_code]:text-amber-100
12  [&_pre]:bg-amber-950/40 [&_pre]:border [&_pre]:border-amber-900 [&_pre]:rounded [&_pre]:p-2 [&_pre]:overflow-auto
13  [&_.katex]:text-amber-50 [&_.katex-display]:text-amber-50 [&_.katex-display]:overflow-x-auto [&_.katex-display]:overflow-y-hidden
14  [&_table]:w-full [&_table]:border-collapse [&_table]:my-2
15  [&_th]:border [&_th]:border-amber-700 [&_th]:bg-amber-900/50 [&_th]:px-2 [&_th]:py-1 [&_th]:text-left [&_th]:text-amber-200 [&_th]:font-bold
16  [&_td]:border [&_td]:border-amber-700 [&_td]:px-2 [&_td]:py-1 [&_td]:text-amber-50
17  [&_thead]:border [&_thead]:border-amber-700`;function p(a){return a.replace(/^\s*\|/,"").replace(/\|\s*$/,"").split("|").map(e=>e.trim())}function N(a){return a?/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/.test(a):!1}function d(a){if(!a)return!1;const e=a.trim();return e.endsWith("|")&&e!=="|"&&p(e).length===1}function S(a,e,o){var n;const r=[];let t=e;for(;t<a.length;){const i=(n=a[t])==null?void 0:n.trim();if(!d(i))break;const s=[p(i)[0]];for(t+=1;s.length<o;){const c=[];let h=!1;for(;t<a.length;){const f=a[t]??"",u=f.trim();if(u==="|"){h=!0,t+=1;break}if(s.length===o-1&&d(u))break;if(!u&&c.length===0)return r.length?{rows:r,next:t}:null;c.push(f),t+=1}const b=c.join(`
18`).trim();if(!b||(s.push(b),s.length<o&&!h))return null}r.push(s)}return r.length?{rows:r,next:t}:null}function M(a,e){const o=t=>t.replace(/\s+/g," ").trim().replace(/(^|[^\\])\|/g,"$1\\|"),r=t=>`| ${t.map(o).join(" | ")} |`;return[r(a),`| ${a.map(()=>"---").join(" | ")} |`,...e.map(r)]}function P(a){const e=a.split(`
19`),o=[];for(let r=0;r<e.length;r++){const t=p(e[r]??"");if(t.length>=3&&(e[r]??"").includes("|")&&!N(e[r+1])&&d(e[r+1])){const n=S(e,r+1,t.length);if(n){o.push(...M(t,n.rows)),r=n.next-1;continue}}o.push(e[r]??"")}return o.join(`
20`)}function B(a){let e=String(a??"");return e=e.replace(/\r\n/g,`
21`).replace(/\r/g,`
22`),e=e.replace(new RegExp("(?<!\\\\)\\\\n(?![a-zA-Z])","g"),`
23`),e=P(T(e)),e.trim()}function C(a){const{alt:e="",className:o="",onPreview:r,...t}=a,n=typeof t.src=="string"?t.src:"",i=!!(n&&r),s=l.jsx("img",{...t,alt:e,loading:"lazy",decoding:"async",draggable:!1,className:`block w-full max-h-[min(36vh,360px)] object-contain rounded border border-amber-700/70 bg-black/20 ${i?"cursor-zoom-in transition hover:border-amber-300 hover:bg-black/30":""} ${o}`});return i?l.jsx("button",{type:"button",className:"block w-full text-left focus:outline-none focus:ring-2 focus:ring-amber-300/80 rounded",onClick:()=>r==null?void 0:r(n,String(e||"")),"aria-label":"预览图片",children:s}):s}const I=a=>{const e=o=>l.jsx(C,{...o,onPreview:a});return{p:({children:o,className:r="",node:t,...n})=>g.Children.toArray(o).some(s=>g.isValidElement(s)&&s.type===e)?l.jsx("div",{...n,className:`my-2 grid grid-cols-[repeat(auto-fit,minmax(160px,1fr))] items-center gap-2 [&>br]:hidden ${r}`,children:o}):l.jsx("p",{...n,className:r,children:o}),img:e}};function z({image:a,onClose:e}){return m.useEffect(()=>{const o=r=>{r.key==="Escape"&&e()};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[e]),typeof document>"u"?null:_.createPortal(l.jsxs("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center bg-black/85 p-4 backdrop-blur-sm",onClick:e,role:"dialog","aria-modal":"true",children:[l.jsx("button",{type:"button",className:"absolute right-4 top-4 roun
23ded-full bg-white/15 px-3 py-1.5 text-xl font-black leading-none text-white shadow-lg backdrop-blur transition hover:bg-white/25 focus:outline-none focus:ring-2 focus:ring-white/70",onClick:e,"aria-label":"关闭预览",children:"×"}),l.jsx("img",{src:a.src,alt:a.alt,draggable:!1,className:"h-full max-h-[94dvh] w-full max-w-[94vw] object-contain",onClick:o=>o.stopPropagation()})]}),document.body)}function T(a){return a.replace(new RegExp("(`{3,}|~{3,})[^\\n]*\\n[\\s\\S]*?^\\1[^\\n]*$|(`+)[^`]*?\\2|(?<!\\\\)(\\$\\$[\\s\\S]*?\\$\\$|\\\\\\[[\\s\\S]*?\\\\\\]|\\\\\\([\\s\\S]*?\\\\\\)|\\$[^$\\n]+?\\$)","gm"),(e,o,r,t)=>{if(o||r||!t)return e;let n=t;return n.startsWith("\\[")&&(n=`$$${n.slice(2,-2)}$$`),n.startsWith("\\(")&&(n=`$${n.slice(2,-2)}$`),n.startsWith("$$")&&n.includes(`
24`)&&(n=`$$
25${n.slice(2,-2).trim()}
26$$`),n.replace(/\\\|/g,"\\Vert ").replace(/\|/g,"\\|")})}function R(){return(a,e)=>{const o=String(e.value),r=t=>{var n;(t.type==="math"||t.type==="inlineMath")&&(t.value=t.value.replace(/\\\|/g,"|"),t.data={...t.data,hName:"code",hProperties:{className:[t.type==="math"?"math-display":"math-inline"]},hChildren:[{type:"text",value:t.value}]}),t.type==="inlineMath"&&o.slice((n=t.position)==null?void 0:n.start.offset).startsWith("$$")&&(t.data={...t.data,hProperties:{className:["math-display"]}}),"children"in t&&t.children.forEach(r)};r(a)}}const D=({content:a,className:e=""})=>{const[o,r]=m.useState(null),t=a!=null&&typeof a=="string"?a:"",n=B(t),i=m.useMemo(()=>I((s,c)=>r({src:s,alt:c})),[]);return n?l.jsxs("div",{className:`${x} ${e}`,children:[l.jsx(E,{fallback:n,children:l.jsx(y,{remarkPlugins:[$,w,R,v],rehypePlugins:[[k,j]],components:i,children:n})},n.slice(0,200)),o&&l.jsx(z,{image:o,onClose:()=>r(null)})]}):l.jsx("div",{className:`${x} ${e}`})};export{D as default,B as normalizeBlackboardContent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.