{"version":3,"file":"SideNote.7mVhKgpw.mjs","names":["katex","useState","useRef","useMemo"],"sources":["https:/framerusercontent.com/modules/IzI0Dt2UwXi3cgjoc4OP/JKaFW1UgpmHn3F13KSLz/SideNote.js"],"sourcesContent":["// Side note for CMS rich text: the one component for quotes and callouts. With room beside the\n// article column it floats in the page margin like a textbook sidenote; on narrower screens it\n// collapses into a tap-to-open note in the flow of the text.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useMemo,useRef,useState,startTransition}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// @ts-ignore - Framer runtime supports URL imports; local type-checker has no declaration for this module specifier.\nimport katex from\"https://esm.sh/katex@0.16.22\";const KATEX_CSS_HREF=\"https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css\";const FALLBACK_FONT='Inter, \"Inter Placeholder\", ui-sans-serif, system-ui, sans-serif';const STACK_GAP=20;const EDGE_PADDING=24;// The project's Primary Background in light and dark.\nconst LIGHT_BACKDROP=\"rgb(252, 252, 252)\";const DARK_BACKDROP=\"rgb(13, 13, 13)\";// Margin notes share one column, so a long note pushes the next one down instead of overlapping it.\nconst marginNotes=new Map;let layoutFrame=0;function scheduleMarginLayout(){if(typeof window===\"undefined\"||layoutFrame)return;layoutFrame=window.requestAnimationFrame(()=>{layoutFrame=0;const entries=[...marginNotes.values()].sort((a,b)=>a.top-b.top);let floor=-Infinity;for(const entry of entries){const y=Math.max(entry.top,floor);entry.apply(y);floor=y+entry.height+STACK_GAP;}});}function ensureKatexStylesheet(){if(typeof document===\"undefined\")return;if(document.querySelector(`link[rel=\"stylesheet\"][href=\"${KATEX_CSS_HREF}\"]`))return;const link=document.createElement(\"link\");link.rel=\"stylesheet\";link.href=KATEX_CSS_HREF;document.head.appendChild(link);}function texToHtml(tex){try{return katex.renderToString(tex,{displayMode:false,throwOnError:false,output:\"htmlAndMathml\"});}catch{return tex;}}const INLINE_PATTERN=/\\*\\*([^*]+)\\*\\*|`([^`]+)`|\\$([^$\\n]+)\\$|\\[([^\\]]+)\\]\\(([^)\\s]+)\\)|\\*([^*\\s][^*]*)\\*/g;function renderInline(text,keyPrefix){const out=[];const pattern=new RegExp(INLINE_PATTERN.source,\"g\");let last=0;let index=0;let match;while(match=pattern.exec(text)){if(match.index>last)out.push(text.slice(last,match.index));const key=`${keyPrefix}-${index++}`;if(match[1]!==undefined){out.push(/*#__PURE__*/_jsx(\"strong\",{children:renderInline(match[1],key)},key));}else if(match[2]!==undefined){out.push(/*#__PURE__*/_jsx(\"code\",{className:\"sidenote-code\",children:match[2]},key));}else if(match[3]!==undefined){out.push(/*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:texToHtml(match[3])}},key));}else if(match[4]!==undefined){out.push(/*#__PURE__*/_jsx(\"a\",{href:match[5],target:\"_blank\",rel:\"noreferrer\",children:match[4]},key));}else if(match[6]!==undefined){out.push(/*#__PURE__*/_jsx(\"em\",{children:renderInline(match[6],key)},key));}last=pattern.lastIndex;}if(last<text.length)out.push(text.slice(last));return out;}const ORDERED_ITEM=/^\\s*\\d+[.)]\\s+/;const BULLET_ITEM=/^\\s*[-•]\\s+/;function renderBlocks(source){return source.split(/\\n\\s*\\n/).map(block=>block.replace(/^\\n+|\\n+$/g,\"\")).filter(block=>block.trim().length>0).map((block,blockIndex)=>{const lines=block.split(\"\\n\").filter(line=>line.trim().length>0);const key=`b${blockIndex}`;if(lines.every(line=>ORDERED_ITEM.test(line))){const start=parseInt(lines[0].trim(),10)||1;return /*#__PURE__*/_jsx(\"ol\",{start:start,children:lines.map((line,i)=>/*#__PURE__*/_jsx(\"li\",{children:renderInline(line.replace(ORDERED_ITEM,\"\"),`${key}-${i}`)},i))},key);}if(lines.every(line=>BULLET_ITEM.test(line))){return /*#__PURE__*/_jsx(\"ul\",{children:lines.map((line,i)=>/*#__PURE__*/_jsx(\"li\",{children:renderInline(line.replace(BULLET_ITEM,\"\"),`${key}-${i}`)},i))},key);}return /*#__PURE__*/_jsx(\"p\",{children:lines.map((line,i)=>/*#__PURE__*/_jsxs(\"span\",{children:[i>0&&/*#__PURE__*/_jsx(\"br\",{}),renderInline(line,`${key}-${i}`)]},i))},key);});}function plainText(source){return source.replace(/\\*\\*|`|\\$/g,\"\").replace(/\\[([^\\]]+)\\]\\([^)]+\\)/g,\"$1\").replace(/\\s+/g,\" \").trim();}// A note that opens with a bold phrase uses it as its label; otherwise the label is the opening words.\nfunction splitLead(source){const lead=/^\\s*\\*\\*([^*]+)\\*\\*[\\s:.]*/.exec(source);if(lead){return{label:lead[1].trim().replace(/[\\s:.]+$/,\"\"),body:source.slice(lead[0].length),fromLead:true};}return{label:plainText(source),body:source,fromLead:false};}function useArticleFont(anchor){const[fontFamily,setFontFamily]=useState(FALLBACK_FONT);useEffect(()=>{const el=anchor.current;if(!el)return;const scope=el.closest(\"main\")??el.parentElement;const paragraph=scope?.querySelector(\"p\");const family=paragraph?window.getComputedStyle(paragraph).fontFamily:\"\";if(family)startTransition(()=>setFontFamily(family));},[]);return fontFamily;}function inFramerApp(){if(RenderTarget.current()!==RenderTarget.preview)return true;return typeof window!==\"undefined\"&&/(^|\\.)framer\\.com$/i.test(window.location.hostname);}function parseColor(value){const parts=value.match(/[\\d.]+/g)?.map(Number);if(!parts||parts.length<3)return null;const scale=value.startsWith(\"color(\")?255:1;return[parts[0]*scale,parts[1]*scale,parts[2]*scale,parts[3]??1];}function relativeLuminance([r,g,b]){const linear=channel=>{const c=channel/255;return c<=.03928?c/12.92:((c+.055)/1.055)**2.4;};return .2126*linear(r)+.7152*linear(g)+.0722*linear(b);}// Framer's editor can preview components in the opposite theme to the panel around them, which\n// makes token colours read inverted. If the text would clash with what is behind it, sit on a\n// backdrop in the project's background colour for the text's theme. On the site nothing changes.\nfunction useReadableBackdrop(anchor,color){const[backdrop,setBackdrop]=useState(undefined);useEffect(()=>{const el=anchor.current;if(!el)return;const text=parseColor(window.getComputedStyle(el).color);if(!text)return;let surface=null;for(let node=el.parentElement;node&&!surface;node=node.parentElement){const background=parseColor(window.getComputedStyle(node).backgroundColor);if(background&&background[3]>.5)surface=background;}const textLuminance=relativeLuminance(text);let clashes=inFramerApp();if(surface){const surfaceLuminance=relativeLuminance(surface);const contrast=(Math.max(textLuminance,surfaceLuminance)+.05)/(Math.min(textLuminance,surfaceLuminance)+.05);clashes=contrast<3;}const next=clashes?textLuminance>.18?DARK_BACKDROP:LIGHT_BACKDROP:undefined;startTransition(()=>setBackdrop(next));},[color]);return backdrop;}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n * @framerDisableUnlink\n */export default function SideNote(props){const{content=\"**Side note.** Text that sits beside the article on wide screens and opens on tap on narrow ones.\",textColor=\"#333333\",accentColor=\"#CCCCCC\",fontSize=14,gap=40,minWidth=200,maxWidth=300}=props;// Static inside Framer (canvas and CMS editor): no margin layout and no page-level observers.\nconst isStatic=inFramerApp();const staticRef=useRef(null);const anchorRef=useRef(null);const noteRef=useRef(null);const idRef=useRef(Symbol(\"sidenote\"));const[mode,setMode]=useState(\"inline\");const[geometry,setGeometry]=useState({top:0,left:0,width:maxWidth});const fontFamily=useArticleFont(anchorRef);const backdrop=useReadableBackdrop(staticRef,textColor);const{label,body,fromLead}=useMemo(()=>splitLead(content),[content]);const fullBlocks=useMemo(()=>renderBlocks(content),[content]);const bodyBlocks=useMemo(()=>renderBlocks(body),[body]);useEffect(()=>{if(content.includes(\"$\"))ensureKatexStylesheet();},[content]);// Decide between margin and inline from the room actually left beside the column.\nuseEffect(()=>{if(isStatic||typeof window===\"undefined\")return;let frame=0;const measure=()=>{frame=0;const el=anchorRef.current;if(!el)return;const rect=el.getBoundingClientRect();const viewport=document.documentElement.clientWidth;const room=viewport-rect.right-gap-EDGE_PADDING;const width=Math.min(maxWidth,room);if(width>=minWidth&&rect.width>0){const next={top:rect.top+window.scrollY,left:rect.right+window.scrollX+gap,width};startTransition(()=>{setMode(\"margin\");setGeometry(prev=>prev.top===next.top&&prev.left===next.left&&prev.width===next.width?prev:next);});}else{startTransition(()=>setMode(\"inline\"));}};const schedule=()=>{if(!frame)frame=window.requestAnimationFrame(measure);};measure();const observer=new ResizeObserver(schedule);observer.observe(document.body);window.addEventListener(\"resize\",schedule);window.addEventListener(\"load\",schedule);document.fonts?.ready.then(schedule);return()=>{observer.disconnect();window.removeEventListener(\"resize\",schedule);window.removeEventListener(\"load\",schedule);if(frame)window.cancelAnimationFrame(frame);};},[isStatic,gap,minWidth,maxWidth]);// Register with the shared margin column while floating.\nuseEffect(()=>{const note=noteRef.current;if(mode!==\"margin\"||!note)return;const id=idRef.current;const entry={top:geometry.top,height:note.offsetHeight,apply:y=>{note.style.top=`${y}px`;note.style.opacity=\"1\";}};marginNotes.set(id,entry);scheduleMarginLayout();const observer=new ResizeObserver(()=>{entry.height=note.offsetHeight;scheduleMarginLayout();});observer.observe(note);return()=>{observer.disconnect();marginNotes.delete(id);scheduleMarginLayout();};},[mode,geometry]);const textStyle={fontFamily,fontSize,lineHeight:1.6,letterSpacing:\"-0.01em\",color:textColor};const styles=/*#__PURE__*/_jsx(\"style\",{children:`\n.sidenote-body p { margin: 0 0 0.75em; }\n.sidenote-body p:last-child, .sidenote-body ol:last-child, .sidenote-body ul:last-child { margin-bottom: 0; }\n.sidenote-body ol, .sidenote-body ul { margin: 0 0 0.75em; padding-left: 1.25em; }\n.sidenote-body li + li { margin-top: 0.35em; }\n.sidenote-body strong { font-weight: 600; }\n.sidenote-body a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }\n.sidenote-body .katex, .sidenote-body .katex * { color: inherit !important; }\n.sidenote-code { font-family: \"Fragment Mono\", ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.9em; }\n.sidenote-details > summary { list-style: none; }\n.sidenote-details > summary::-webkit-details-marker { display: none; }\n.sidenote-details[open] .sidenote-toggle { transform: rotate(45deg); }\n.sidenote-details[open] .sidenote-excerpt { display: none; }\n`});const toggleIcon=/*#__PURE__*/_jsx(\"svg\",{className:\"sidenote-toggle\",width:\"10\",height:\"10\",viewBox:\"0 0 10 10\",\"aria-hidden\":\"true\",style:{flexShrink:0,transition:\"transform 0.2s ease\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 1v8M1 5h8\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\"})});const rootStyle={position:\"relative\",width:\"100%\"};if(isStatic){return /*#__PURE__*/_jsxs(\"aside\",{ref:staticRef,style:{...rootStyle,...textStyle,borderLeft:`2px solid ${accentColor}`,paddingLeft:16,...backdrop?{background:backdrop,paddingTop:10,paddingRight:14,paddingBottom:10,borderRadius:\"0 8px 8px 0\"}:null},children:[styles,/*#__PURE__*/_jsx(\"div\",{className:\"sidenote-body\",children:fullBlocks})]});}if(mode===\"margin\"){return /*#__PURE__*/_jsxs(\"div\",{ref:anchorRef,style:{...rootStyle,height:0},children:[styles,typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"aside\",{ref:noteRef,className:\"sidenote-body\",style:{...textStyle,position:\"absolute\",top:geometry.top,left:geometry.left,width:geometry.width,borderLeft:`1px solid ${accentColor}`,paddingLeft:14,opacity:0,transition:\"opacity 0.3s ease\",zIndex:1},children:fullBlocks}),document.body)]});}return /*#__PURE__*/_jsxs(\"div\",{ref:anchorRef,style:rootStyle,children:[styles,/*#__PURE__*/_jsxs(\"details\",{className:\"sidenote-details\",style:{...textStyle,borderLeft:`2px solid ${accentColor}`,paddingLeft:14},children:[/*#__PURE__*/_jsxs(\"summary\",{style:{display:\"flex\",alignItems:\"center\",gap:10,cursor:\"pointer\",userSelect:\"none\",minHeight:28},children:[toggleIcon,/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"0.72em\",fontWeight:600,letterSpacing:\"0.08em\",flexShrink:0},children:\"SIDE NOTE (Click):\"}),/*#__PURE__*/_jsx(\"span\",{className:fromLead?undefined:\"sidenote-excerpt\",style:{fontWeight:fromLead?600:400,overflow:\"hidden\",textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",minWidth:0},children:label})]}),/*#__PURE__*/_jsx(\"div\",{className:\"sidenote-body\",style:{paddingTop:8,paddingBottom:4},children:fromLead?bodyBlocks:fullBlocks})]})]});}SideNote.displayName=\"Side Note\";addPropertyControls(SideNote,{content:{type:ControlType.String,title:\"Content\",displayTextArea:true,defaultValue:\"**Side note.** Text that sits beside the article on wide screens and opens on tap on narrow ones.\",description:\"Blank line = new paragraph. Supports **bold**, *italic*, `code`, $TeX$, [links](url) and 1. / - lists.\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#333333\"},accentColor:{type:ControlType.Color,title:\"Rule\",defaultValue:\"#CCCCCC\"},fontSize:{type:ControlType.Number,title:\"Font Size\",min:10,max:24,defaultValue:14,unit:\"px\"},gap:{type:ControlType.Number,title:\"Margin Gap\",min:0,max:120,defaultValue:40,unit:\"px\"},minWidth:{type:ControlType.Number,title:\"Min Width\",description:\"Below this much room beside the column, the note collapses into the text.\",min:120,max:400,defaultValue:200,unit:\"px\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",min:160,max:480,defaultValue:300,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SideNote\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SideNote.map"],"mappings":"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"}