agent-canvas 0.1.45 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,91 +1,91 @@
1
- import Y0,{useEffect as k1,useLayoutEffect as p8,useState as Y1,useCallback as b0,useRef as g1,useMemo as C4}from"react";import{createRoot as c8}from"react-dom/client";function p2(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var G0=p2();function c5($){G0=$}var q0={exec:()=>null};function e($,Q=""){let J=typeof $=="string"?$:$.source,X={replace:(Y,Z)=>{let q=typeof Z=="string"?Z:Z.source;return q=q.replace(B1.caret,"$1"),J=J.replace(Y,q),X},getRegex:()=>new RegExp(J,Q)};return X}var x4=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),B1={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:($)=>new RegExp(`^( {0,3}${$})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:($)=>new RegExp(`^ {0,${Math.min(3,$-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:($)=>new RegExp(`^ {0,${Math.min(3,$-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:($)=>new RegExp(`^ {0,${Math.min(3,$-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:($)=>new RegExp(`^ {0,${Math.min(3,$-1)}}#`),htmlBeginRegex:($)=>new RegExp(`^ {0,${Math.min(3,$-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:($)=>new RegExp(`^ {0,${Math.min(3,$-1)}}>`)},f4=/^(?:[ \t]*(?:\n|$))+/,v4=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,u4=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,D0=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,g4=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,c2=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,d5=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,l5=e(d5).replace(/bull/g,c2).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),h4=e(d5).replace(/bull/g,c2).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),d2=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,p4=/^[^\n]+/,l2=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,c4=e(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",l2).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),d4=e(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,c2).getRegex(),K2="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",r2=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,l4=e("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",r2).replace("tag",K2).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),r5=e(d2).replace("hr",D0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",K2).getRegex(),r4=e(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",r5).getRegex(),i2={blockquote:r4,code:v4,def:c4,fences:u4,heading:g4,hr:D0,html:l4,lheading:l5,list:d4,newline:f4,paragraph:r5,table:q0,text:p4},f5=e("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",D0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",K2).getRegex(),i4={...i2,lheading:h4,table:f5,paragraph:e(d2).replace("hr",D0).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",f5).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",K2).getRegex()},o4={...i2,html:e(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",r2).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q0,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:e(d2).replace("hr",D0).replace("heading",` *#{1,6} *[^
2
- ]`).replace("lheading",l5).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},a4=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,s4=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,i5=/^( {2,}|\\)\n(?!\s*$)/,t4=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,O0=/[\p{P}\p{S}]/u,z2=/[\s\p{P}\p{S}]/u,o2=/[^\s\p{P}\p{S}]/u,n4=e(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,z2).getRegex(),o5=/(?!~)[\p{P}\p{S}]/u,e4=/(?!~)[\s\p{P}\p{S}]/u,$6=/(?:[^\s\p{P}\p{S}]|~)/u,Q6=e(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",x4?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),a5=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,J6=e(a5,"u").replace(/punct/g,O0).getRegex(),Y6=e(a5,"u").replace(/punct/g,o5).getRegex(),s5="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",X6=e(s5,"gu").replace(/notPunctSpace/g,o2).replace(/punctSpace/g,z2).replace(/punct/g,O0).getRegex(),q6=e(s5,"gu").replace(/notPunctSpace/g,$6).replace(/punctSpace/g,e4).replace(/punct/g,o5).getRegex(),Z6=e("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,o2).replace(/punctSpace/g,z2).replace(/punct/g,O0).getRegex(),G6=e(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,O0).getRegex(),U6="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",K6=e(U6,"gu").replace(/notPunctSpace/g,o2).replace(/punctSpace/g,z2).replace(/punct/g,O0).getRegex(),z6=e(/\\(punct)/,"gu").replace(/punct/g,O0).getRegex(),_6=e(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),H6=e(r2).replace("(?:-->|$)","-->").getRegex(),W6=e("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",H6).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Z2=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,N6=e(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Z2).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),t5=e(/^!?\[(label)\]\[(ref)\]/).replace("label",Z2).replace("ref",l2).getRegex(),n5=e(/^!?\[(ref)\](?:\[\])?/).replace("ref",l2).getRegex(),B6=e("reflink|nolink(?!\\()","g").replace("reflink",t5).replace("nolink",n5).getRegex(),v5=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,a2={_backpedal:q0,anyPunctuation:z6,autolink:_6,blockSkip:Q6,br:i5,code:s4,del:q0,delLDelim:q0,delRDelim:q0,emStrongLDelim:J6,emStrongRDelimAst:X6,emStrongRDelimUnd:Z6,escape:a4,link:N6,nolink:n5,punctuation:n4,reflink:t5,reflinkSearch:B6,tag:W6,text:t4,url:q0},T6={...a2,link:e(/^!?\[(label)\]\((.*?)\)/).replace("label",Z2).getRegex(),reflink:e(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Z2).getRegex()},h2={...a2,emStrongRDelimAst:q6,emStrongLDelim:Y6,delLDelim:G6,delRDelim:K6,url:e(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",v5).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:e(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",v5).getRegex()},F6={...h2,br:e(i5).replace("{2,}","*").getRegex(),text:e(h2.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},q2={normal:i2,gfm:i4,pedantic:o4},V0={normal:a2,gfm:h2,breaks:F6,pedantic:T6},O6={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},u5=($)=>O6[$];function R1($,Q){if(Q){if(B1.escapeTest.test($))return $.replace(B1.escapeReplace,u5)}else if(B1.escapeTestNoEncode.test($))return $.replace(B1.escapeReplaceNoEncode,u5);return $}function g5($){try{$=encodeURI($).replace(B1.percentDecode,"%")}catch{return null}return $}function h5($,Q){let J=$.replace(B1.findPipe,(Z,q,U)=>{let G=!1,K=q;for(;--K>=0&&U[K]==="\\";)G=!G;return G?"|":" |"}),X=J.split(B1.splitPipe),Y=0;if(X[0].trim()||X.shift(),X.length>0&&!X.at(-1)?.trim()&&X.pop(),Q)if(X.length>Q)X.splice(Q);else for(;X.length<Q;)X.push("");for(;Y<X.length;Y++)X[Y]=X[Y].trim().replace(B1.slashPipe,"|");return X}function k0($,Q,J){let X=$.length;if(X===0)return"";let Y=0;for(;Y<X;){let Z=$.charAt(X-Y-1);if(Z===Q&&!J)Y++;else if(Z!==Q&&J)Y++;else break}return $.slice(0,X-Y)}function L6($,Q){if($.indexOf(Q[1])===-1)return-1;let J=0;for(let X=0;X<$.length;X++)if($[X]==="\\")X++;else if($[X]===Q[0])J++;else if($[X]===Q[1]&&(J--,J<0))return X;return J>0?-2:-1}function M6($,Q=0){let J=Q,X="";for(let Y of $)if(Y==="\t"){let Z=4-J%4;X+=" ".repeat(Z),J+=Z}else X+=Y,J++;return X}function p5($,Q,J,X,Y){let Z=Q.href,q=Q.title||null,U=$[1].replace(Y.other.outputLinkReplace,"$1");X.state.inLink=!0;let G={type:$[0].charAt(0)==="!"?"image":"link",raw:J,href:Z,title:q,text:U,tokens:X.inlineTokens(U)};return X.state.inLink=!1,G}function P6($,Q,J){let X=$.match(J.other.indentCodeCompensation);if(X===null)return Q;let Y=X[1];return Q.split(`
3
- `).map((Z)=>{let q=Z.match(J.other.beginningSpace);if(q===null)return Z;let[U]=q;return U.length>=Y.length?Z.slice(Y.length):Z}).join(`
4
- `)}var G2=class{options;rules;lexer;constructor($){this.options=$||G0}space($){let Q=this.rules.block.newline.exec($);if(Q&&Q[0].length>0)return{type:"space",raw:Q[0]}}code($){let Q=this.rules.block.code.exec($);if(Q){let J=Q[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:Q[0],codeBlockStyle:"indented",text:this.options.pedantic?J:k0(J,`
5
- `)}}}fences($){let Q=this.rules.block.fences.exec($);if(Q){let J=Q[0],X=P6(J,Q[3]||"",this.rules);return{type:"code",raw:J,lang:Q[2]?Q[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):Q[2],text:X}}}heading($){let Q=this.rules.block.heading.exec($);if(Q){let J=Q[2].trim();if(this.rules.other.endingHash.test(J)){let X=k0(J,"#");(this.options.pedantic||!X||this.rules.other.endingSpaceChar.test(X))&&(J=X.trim())}return{type:"heading",raw:Q[0],depth:Q[1].length,text:J,tokens:this.lexer.inline(J)}}}hr($){let Q=this.rules.block.hr.exec($);if(Q)return{type:"hr",raw:k0(Q[0],`
6
- `)}}blockquote($){let Q=this.rules.block.blockquote.exec($);if(Q){let J=k0(Q[0],`
1
+ import ot,{useEffect as Ne,useLayoutEffect as Ql,useState as ie,useCallback as Lt,useRef as Fe,useMemo as Is}from"react";import{createRoot as ec}from"react-dom/client";function Kn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var at=Kn();function Yo(e){at=e}var st={exec:()=>null};function ne(e,t=""){let n=typeof e=="string"?e:e.source,r={replace:(o,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(xe.caret,"$1"),n=n.replace(o,s),r},getRegex:()=>new RegExp(n,t)};return r}var qs=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),xe={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:(e)=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:(e)=>new RegExp(`^ {0,${Math.min(3,e-1)}}>`)},zs=/^(?:[ \t]*(?:\n|$))+/,Vs=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ws=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Dt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Us=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Zn=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Qo=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,er=ne(Qo).replace(/bull/g,Zn).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Gs=ne(Qo).replace(/bull/g,Zn).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Xn=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Ks=/^[^\n]+/,Jn=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Zs=ne(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Jn).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Xs=ne(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Zn).getRegex(),fn="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Yn=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Js=ne("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",Yn).replace("tag",fn).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),tr=ne(Xn).replace("hr",Dt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",fn).getRegex(),Ys=ne(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",tr).getRegex(),Qn={blockquote:Ys,code:Vs,def:Zs,fences:Ws,heading:Us,hr:Dt,html:Js,lheading:er,list:Xs,newline:zs,paragraph:tr,table:st,text:Ks},Uo=ne("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Dt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",fn).getRegex(),Qs={...Qn,lheading:Gs,table:Uo,paragraph:ne(Xn).replace("hr",Dt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Uo).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",fn).getRegex()},ei={...Qn,html:ne(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Yn).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:st,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ne(Xn).replace("hr",Dt).replace("heading",` *#{1,6} *[^
2
+ ]`).replace("lheading",er).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ti=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,ni=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,nr=/^( {2,}|\\)\n(?!\s*$)/,oi=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,vt=/[\p{P}\p{S}]/u,mn=/[\s\p{P}\p{S}]/u,eo=/[^\s\p{P}\p{S}]/u,ri=ne(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,mn).getRegex(),or=/(?!~)[\p{P}\p{S}]/u,si=/(?!~)[\s\p{P}\p{S}]/u,ii=/(?:[^\s\p{P}\p{S}]|~)/u,ai=ne(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",qs?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),rr=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,li=ne(rr,"u").replace(/punct/g,vt).getRegex(),ci=ne(rr,"u").replace(/punct/g,or).getRegex(),sr="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",di=ne(sr,"gu").replace(/notPunctSpace/g,eo).replace(/punctSpace/g,mn).replace(/punct/g,vt).getRegex(),ui=ne(sr,"gu").replace(/notPunctSpace/g,ii).replace(/punctSpace/g,si).replace(/punct/g,or).getRegex(),pi=ne("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,eo).replace(/punctSpace/g,mn).replace(/punct/g,vt).getRegex(),fi=ne(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,vt).getRegex(),mi="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",hi=ne(mi,"gu").replace(/notPunctSpace/g,eo).replace(/punctSpace/g,mn).replace(/punct/g,vt).getRegex(),gi=ne(/\\(punct)/,"gu").replace(/punct/g,vt).getRegex(),xi=ne(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),bi=ne(Yn).replace("(?:-->|$)","-->").getRegex(),vi=ne("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",bi).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),dn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,yi=ne(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",dn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ir=ne(/^!?\[(label)\]\[(ref)\]/).replace("label",dn).replace("ref",Jn).getRegex(),ar=ne(/^!?\[(ref)\](?:\[\])?/).replace("ref",Jn).getRegex(),ki=ne("reflink|nolink(?!\\()","g").replace("reflink",ir).replace("nolink",ar).getRegex(),Go=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,to={_backpedal:st,anyPunctuation:gi,autolink:xi,blockSkip:ai,br:nr,code:ni,del:st,delLDelim:st,delRDelim:st,emStrongLDelim:li,emStrongRDelimAst:di,emStrongRDelimUnd:pi,escape:ti,link:yi,nolink:ar,punctuation:ri,reflink:ir,reflinkSearch:ki,tag:vi,text:oi,url:st},wi={...to,link:ne(/^!?\[(label)\]\((.*?)\)/).replace("label",dn).getRegex(),reflink:ne(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",dn).getRegex()},Gn={...to,emStrongRDelimAst:ui,emStrongLDelim:ci,delLDelim:fi,delRDelim:hi,url:ne(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Go).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:ne(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Go).getRegex()},Ei={...Gn,br:ne(nr).replace("{2,}","*").getRegex(),text:ne(Gn.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},cn={normal:Qn,gfm:Qs,pedantic:ei},Pt={normal:to,gfm:Gn,breaks:Ei,pedantic:wi},Ai={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Ko=(e)=>Ai[e];function Le(e,t){if(t){if(xe.escapeTest.test(e))return e.replace(xe.escapeReplace,Ko)}else if(xe.escapeTestNoEncode.test(e))return e.replace(xe.escapeReplaceNoEncode,Ko);return e}function Zo(e){try{e=encodeURI(e).replace(xe.percentDecode,"%")}catch{return null}return e}function Xo(e,t){let n=e.replace(xe.findPipe,(i,s,l)=>{let a=!1,c=s;for(;--c>=0&&l[c]==="\\";)a=!a;return a?"|":" |"}),r=n.split(xe.splitPipe),o=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;o<r.length;o++)r[o]=r[o].trim().replace(xe.slashPipe,"|");return r}function $t(e,t,n){let r=e.length;if(r===0)return"";let o=0;for(;o<r;){let i=e.charAt(r-o-1);if(i===t&&!n)o++;else if(i!==t&&n)o++;else break}return e.slice(0,r-o)}function Ri(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]==="\\")r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Si(e,t=0){let n=t,r="";for(let o of e)if(o==="\t"){let i=4-n%4;r+=" ".repeat(i),n+=i}else r+=o,n++;return r}function Jo(e,t,n,r,o){let i=t.href,s=t.title||null,l=e[1].replace(o.other.outputLinkReplace,"$1");r.state.inLink=!0;let a={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:i,title:s,text:l,tokens:r.inlineTokens(l)};return r.state.inLink=!1,a}function Ci(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let o=r[1];return t.split(`
3
+ `).map((i)=>{let s=i.match(n.other.beginningSpace);if(s===null)return i;let[l]=s;return l.length>=o.length?i.slice(o.length):i}).join(`
4
+ `)}var un=class{options;rules;lexer;constructor(e){this.options=e||at}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:$t(n,`
5
+ `)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Ci(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=$t(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:$t(t[0],`
6
+ `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=$t(t[0],`
7
7
  `).split(`
8
- `),X="",Y="",Z=[];for(;J.length>0;){let q=!1,U=[],G;for(G=0;G<J.length;G++)if(this.rules.other.blockquoteStart.test(J[G]))U.push(J[G]),q=!0;else if(!q)U.push(J[G]);else break;J=J.slice(G);let K=U.join(`
9
- `),_=K.replace(this.rules.other.blockquoteSetextReplace,`
10
- $1`).replace(this.rules.other.blockquoteSetextReplace2,"");X=X?`${X}
11
- ${K}`:K,Y=Y?`${Y}
12
- ${_}`:_;let z=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(_,Z,!0),this.lexer.state.top=z,J.length===0)break;let W=Z.at(-1);if(W?.type==="code")break;if(W?.type==="blockquote"){let H=W,N=H.raw+`
13
- `+J.join(`
14
- `),O=this.blockquote(N);Z[Z.length-1]=O,X=X.substring(0,X.length-H.raw.length)+O.raw,Y=Y.substring(0,Y.length-H.text.length)+O.text;break}else if(W?.type==="list"){let H=W,N=H.raw+`
15
- `+J.join(`
16
- `),O=this.list(N);Z[Z.length-1]=O,X=X.substring(0,X.length-W.raw.length)+O.raw,Y=Y.substring(0,Y.length-H.raw.length)+O.raw,J=N.substring(Z.at(-1).raw.length).split(`
17
- `);continue}}return{type:"blockquote",raw:X,tokens:Z,text:Y}}}list($){let Q=this.rules.block.list.exec($);if(Q){let J=Q[1].trim(),X=J.length>1,Y={type:"list",raw:"",ordered:X,start:X?+J.slice(0,-1):"",loose:!1,items:[]};J=X?`\\d{1,9}\\${J.slice(-1)}`:`\\${J}`,this.options.pedantic&&(J=X?J:"[*+-]");let Z=this.rules.other.listItemRegex(J),q=!1;for(;$;){let G=!1,K="",_="";if(!(Q=Z.exec($))||this.rules.block.hr.test($))break;K=Q[0],$=$.substring(K.length);let z=M6(Q[2].split(`
18
- `,1)[0],Q[1].length),W=$.split(`
19
- `,1)[0],H=!z.trim(),N=0;if(this.options.pedantic?(N=2,_=z.trimStart()):H?N=Q[1].length+1:(N=z.search(this.rules.other.nonSpaceChar),N=N>4?1:N,_=z.slice(N),N+=Q[1].length),H&&this.rules.other.blankLine.test(W)&&(K+=W+`
20
- `,$=$.substring(W.length+1),G=!0),!G){let O=this.rules.other.nextBulletRegex(N),B=this.rules.other.hrRegex(N),A=this.rules.other.fencesBeginRegex(N),T=this.rules.other.headingBeginRegex(N),M=this.rules.other.htmlBeginRegex(N),y=this.rules.other.blockquoteBeginRegex(N);for(;$;){let L=$.split(`
21
- `,1)[0],w;if(W=L,this.options.pedantic?(W=W.replace(this.rules.other.listReplaceNesting," "),w=W):w=W.replace(this.rules.other.tabCharGlobal," "),A.test(W)||T.test(W)||M.test(W)||y.test(W)||O.test(W)||B.test(W))break;if(w.search(this.rules.other.nonSpaceChar)>=N||!W.trim())_+=`
22
- `+w.slice(N);else{if(H||z.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||A.test(z)||T.test(z)||B.test(z))break;_+=`
23
- `+W}H=!W.trim(),K+=L+`
24
- `,$=$.substring(L.length+1),z=w.slice(N)}}Y.loose||(q?Y.loose=!0:this.rules.other.doubleBlankLine.test(K)&&(q=!0)),Y.items.push({type:"list_item",raw:K,task:!!this.options.gfm&&this.rules.other.listIsTask.test(_),loose:!1,text:_,tokens:[]}),Y.raw+=K}let U=Y.items.at(-1);if(U)U.raw=U.raw.trimEnd(),U.text=U.text.trimEnd();else return;Y.raw=Y.raw.trimEnd();for(let G of Y.items){if(this.lexer.state.top=!1,G.tokens=this.lexer.blockTokens(G.text,[]),G.task){if(G.text=G.text.replace(this.rules.other.listReplaceTask,""),G.tokens[0]?.type==="text"||G.tokens[0]?.type==="paragraph"){G.tokens[0].raw=G.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),G.tokens[0].text=G.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let _=this.lexer.inlineQueue.length-1;_>=0;_--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[_].src)){this.lexer.inlineQueue[_].src=this.lexer.inlineQueue[_].src.replace(this.rules.other.listReplaceTask,"");break}}let K=this.rules.other.listTaskCheckbox.exec(G.raw);if(K){let _={type:"checkbox",raw:K[0]+" ",checked:K[0]!=="[ ]"};G.checked=_.checked,Y.loose?G.tokens[0]&&["paragraph","text"].includes(G.tokens[0].type)&&"tokens"in G.tokens[0]&&G.tokens[0].tokens?(G.tokens[0].raw=_.raw+G.tokens[0].raw,G.tokens[0].text=_.raw+G.tokens[0].text,G.tokens[0].tokens.unshift(_)):G.tokens.unshift({type:"paragraph",raw:_.raw,text:_.raw,tokens:[_]}):G.tokens.unshift(_)}}if(!Y.loose){let K=G.tokens.filter((z)=>z.type==="space"),_=K.length>0&&K.some((z)=>this.rules.other.anyLine.test(z.raw));Y.loose=_}}if(Y.loose)for(let G of Y.items){G.loose=!0;for(let K of G.tokens)K.type==="text"&&(K.type="paragraph")}return Y}}html($){let Q=this.rules.block.html.exec($);if(Q)return{type:"html",block:!0,raw:Q[0],pre:Q[1]==="pre"||Q[1]==="script"||Q[1]==="style",text:Q[0]}}def($){let Q=this.rules.block.def.exec($);if(Q){let J=Q[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),X=Q[2]?Q[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",Y=Q[3]?Q[3].substring(1,Q[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):Q[3];return{type:"def",tag:J,raw:Q[0],href:X,title:Y}}}table($){let Q=this.rules.block.table.exec($);if(!Q||!this.rules.other.tableDelimiter.test(Q[2]))return;let J=h5(Q[1]),X=Q[2].replace(this.rules.other.tableAlignChars,"").split("|"),Y=Q[3]?.trim()?Q[3].replace(this.rules.other.tableRowBlankLine,"").split(`
25
- `):[],Z={type:"table",raw:Q[0],header:[],align:[],rows:[]};if(J.length===X.length){for(let q of X)this.rules.other.tableAlignRight.test(q)?Z.align.push("right"):this.rules.other.tableAlignCenter.test(q)?Z.align.push("center"):this.rules.other.tableAlignLeft.test(q)?Z.align.push("left"):Z.align.push(null);for(let q=0;q<J.length;q++)Z.header.push({text:J[q],tokens:this.lexer.inline(J[q]),header:!0,align:Z.align[q]});for(let q of Y)Z.rows.push(h5(q,Z.header.length).map((U,G)=>({text:U,tokens:this.lexer.inline(U),header:!1,align:Z.align[G]})));return Z}}lheading($){let Q=this.rules.block.lheading.exec($);if(Q){let J=Q[1].trim();return{type:"heading",raw:Q[0],depth:Q[2].charAt(0)==="="?1:2,text:J,tokens:this.lexer.inline(J)}}}paragraph($){let Q=this.rules.block.paragraph.exec($);if(Q){let J=Q[1].charAt(Q[1].length-1)===`
26
- `?Q[1].slice(0,-1):Q[1];return{type:"paragraph",raw:Q[0],text:J,tokens:this.lexer.inline(J)}}}text($){let Q=this.rules.block.text.exec($);if(Q)return{type:"text",raw:Q[0],text:Q[0],tokens:this.lexer.inline(Q[0])}}escape($){let Q=this.rules.inline.escape.exec($);if(Q)return{type:"escape",raw:Q[0],text:Q[1]}}tag($){let Q=this.rules.inline.tag.exec($);if(Q)return!this.lexer.state.inLink&&this.rules.other.startATag.test(Q[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(Q[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(Q[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(Q[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:Q[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:Q[0]}}link($){let Q=this.rules.inline.link.exec($);if(Q){let J=Q[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(J)){if(!this.rules.other.endAngleBracket.test(J))return;let Z=k0(J.slice(0,-1),"\\");if((J.length-Z.length)%2===0)return}else{let Z=L6(Q[2],"()");if(Z===-2)return;if(Z>-1){let q=(Q[0].indexOf("!")===0?5:4)+Q[1].length+Z;Q[2]=Q[2].substring(0,Z),Q[0]=Q[0].substring(0,q).trim(),Q[3]=""}}let X=Q[2],Y="";if(this.options.pedantic){let Z=this.rules.other.pedanticHrefTitle.exec(X);Z&&(X=Z[1],Y=Z[3])}else Y=Q[3]?Q[3].slice(1,-1):"";return X=X.trim(),this.rules.other.startAngleBracket.test(X)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(J)?X=X.slice(1):X=X.slice(1,-1)),p5(Q,{href:X&&X.replace(this.rules.inline.anyPunctuation,"$1"),title:Y&&Y.replace(this.rules.inline.anyPunctuation,"$1")},Q[0],this.lexer,this.rules)}}reflink($,Q){let J;if((J=this.rules.inline.reflink.exec($))||(J=this.rules.inline.nolink.exec($))){let X=(J[2]||J[1]).replace(this.rules.other.multipleSpaceGlobal," "),Y=Q[X.toLowerCase()];if(!Y){let Z=J[0].charAt(0);return{type:"text",raw:Z,text:Z}}return p5(J,Y,J[0],this.lexer,this.rules)}}emStrong($,Q,J=""){let X=this.rules.inline.emStrongLDelim.exec($);if(!X||!X[1]&&!X[2]&&!X[3]&&!X[4]||X[4]&&J.match(this.rules.other.unicodeAlphaNumeric))return;if(!(X[1]||X[3])||!J||this.rules.inline.punctuation.exec(J)){let Y=[...X[0]].length-1,Z,q,U=Y,G=0,K=X[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(K.lastIndex=0,Q=Q.slice(-1*$.length+Y);(X=K.exec(Q))!==null;){if(Z=X[1]||X[2]||X[3]||X[4]||X[5]||X[6],!Z)continue;if(q=[...Z].length,X[3]||X[4]){U+=q;continue}else if((X[5]||X[6])&&Y%3&&!((Y+q)%3)){G+=q;continue}if(U-=q,U>0)continue;q=Math.min(q,q+U+G);let _=[...X[0]][0].length,z=$.slice(0,Y+X.index+_+q);if(Math.min(Y,q)%2){let H=z.slice(1,-1);return{type:"em",raw:z,text:H,tokens:this.lexer.inlineTokens(H)}}let W=z.slice(2,-2);return{type:"strong",raw:z,text:W,tokens:this.lexer.inlineTokens(W)}}}}codespan($){let Q=this.rules.inline.code.exec($);if(Q){let J=Q[2].replace(this.rules.other.newLineCharGlobal," "),X=this.rules.other.nonSpaceChar.test(J),Y=this.rules.other.startingSpaceChar.test(J)&&this.rules.other.endingSpaceChar.test(J);return X&&Y&&(J=J.substring(1,J.length-1)),{type:"codespan",raw:Q[0],text:J}}}br($){let Q=this.rules.inline.br.exec($);if(Q)return{type:"br",raw:Q[0]}}del($,Q,J=""){let X=this.rules.inline.delLDelim.exec($);if(!X)return;if(!X[1]||!J||this.rules.inline.punctuation.exec(J)){let Y=[...X[0]].length-1,Z,q,U=Y,G=this.rules.inline.delRDelim;for(G.lastIndex=0,Q=Q.slice(-1*$.length+Y);(X=G.exec(Q))!==null;){if(Z=X[1]||X[2]||X[3]||X[4]||X[5]||X[6],!Z||(q=[...Z].length,q!==Y))continue;if(X[3]||X[4]){U+=q;continue}if(U-=q,U>0)continue;q=Math.min(q,q+U);let K=[...X[0]][0].length,_=$.slice(0,Y+X.index+K+q),z=_.slice(Y,-Y);return{type:"del",raw:_,text:z,tokens:this.lexer.inlineTokens(z)}}}}autolink($){let Q=this.rules.inline.autolink.exec($);if(Q){let J,X;return Q[2]==="@"?(J=Q[1],X="mailto:"+J):(J=Q[1],X=J),{type:"link",raw:Q[0],text:J,href:X,tokens:[{type:"text",raw:J,text:J}]}}}url($){let Q;if(Q=this.rules.inline.url.exec($)){let J,X;if(Q[2]==="@")J=Q[0],X="mailto:"+J;else{let Y;do Y=Q[0],Q[0]=this.rules.inline._backpedal.exec(Q[0])?.[0]??"";while(Y!==Q[0]);J=Q[0],Q[1]==="www."?X="http://"+Q[0]:X=Q[0]}return{type:"link",raw:Q[0],text:J,href:X,tokens:[{type:"text",raw:J,text:J}]}}}inlineText($){let Q=this.rules.inline.text.exec($);if(Q){let J=this.lexer.state.inRawBlock;return{type:"text",raw:Q[0],text:Q[0],escaped:J}}}},C1=class ${tokens;options;state;inlineQueue;tokenizer;constructor(Q){this.tokens=[],this.tokens.links=Object.create(null),this.options=Q||G0,this.options.tokenizer=this.options.tokenizer||new G2,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let J={other:B1,block:q2.normal,inline:V0.normal};this.options.pedantic?(J.block=q2.pedantic,J.inline=V0.pedantic):this.options.gfm&&(J.block=q2.gfm,this.options.breaks?J.inline=V0.breaks:J.inline=V0.gfm),this.tokenizer.rules=J}static get rules(){return{block:q2,inline:V0}}static lex(Q,J){return new $(J).lex(Q)}static lexInline(Q,J){return new $(J).inlineTokens(Q)}lex(Q){Q=Q.replace(B1.carriageReturn,`
27
- `),this.blockTokens(Q,this.tokens);for(let J=0;J<this.inlineQueue.length;J++){let X=this.inlineQueue[J];this.inlineTokens(X.src,X.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(Q,J=[],X=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(Q=Q.replace(B1.tabCharGlobal," ").replace(B1.spaceLine,""));Q;){let Y;if(this.options.extensions?.block?.some((q)=>(Y=q.call({lexer:this},Q,J))?(Q=Q.substring(Y.raw.length),J.push(Y),!0):!1))continue;if(Y=this.tokenizer.space(Q)){Q=Q.substring(Y.raw.length);let q=J.at(-1);Y.raw.length===1&&q!==void 0?q.raw+=`
28
- `:J.push(Y);continue}if(Y=this.tokenizer.code(Q)){Q=Q.substring(Y.raw.length);let q=J.at(-1);q?.type==="paragraph"||q?.type==="text"?(q.raw+=(q.raw.endsWith(`
8
+ `),r="",o="",i=[];for(;n.length>0;){let s=!1,l=[],a;for(a=0;a<n.length;a++)if(this.rules.other.blockquoteStart.test(n[a]))l.push(n[a]),s=!0;else if(!s)l.push(n[a]);else break;n=n.slice(a);let c=l.join(`
9
+ `),u=c.replace(this.rules.other.blockquoteSetextReplace,`
10
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
11
+ ${c}`:c,o=o?`${o}
12
+ ${u}`:u;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,i,!0),this.lexer.state.top=d,n.length===0)break;let f=i.at(-1);if(f?.type==="code")break;if(f?.type==="blockquote"){let p=f,m=p.raw+`
13
+ `+n.join(`
14
+ `),v=this.blockquote(m);i[i.length-1]=v,r=r.substring(0,r.length-p.raw.length)+v.raw,o=o.substring(0,o.length-p.text.length)+v.text;break}else if(f?.type==="list"){let p=f,m=p.raw+`
15
+ `+n.join(`
16
+ `),v=this.list(m);i[i.length-1]=v,r=r.substring(0,r.length-f.raw.length)+v.raw,o=o.substring(0,o.length-p.raw.length)+v.raw,n=m.substring(i.at(-1).raw.length).split(`
17
+ `);continue}}return{type:"blockquote",raw:r,tokens:i,text:o}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,o={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),s=!1;for(;e;){let a=!1,c="",u="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;c=t[0],e=e.substring(c.length);let d=Si(t[2].split(`
18
+ `,1)[0],t[1].length),f=e.split(`
19
+ `,1)[0],p=!d.trim(),m=0;if(this.options.pedantic?(m=2,u=d.trimStart()):p?m=t[1].length+1:(m=d.search(this.rules.other.nonSpaceChar),m=m>4?1:m,u=d.slice(m),m+=t[1].length),p&&this.rules.other.blankLine.test(f)&&(c+=f+`
20
+ `,e=e.substring(f.length+1),a=!0),!a){let v=this.rules.other.nextBulletRegex(m),g=this.rules.other.hrRegex(m),w=this.rules.other.fencesBeginRegex(m),h=this.rules.other.headingBeginRegex(m),b=this.rules.other.htmlBeginRegex(m),k=this.rules.other.blockquoteBeginRegex(m);for(;e;){let y=e.split(`
21
+ `,1)[0],E;if(f=y,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),E=f):E=f.replace(this.rules.other.tabCharGlobal," "),w.test(f)||h.test(f)||b.test(f)||k.test(f)||v.test(f)||g.test(f))break;if(E.search(this.rules.other.nonSpaceChar)>=m||!f.trim())u+=`
22
+ `+E.slice(m);else{if(p||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||w.test(d)||h.test(d)||g.test(d))break;u+=`
23
+ `+f}p=!f.trim(),c+=y+`
24
+ `,e=e.substring(y.length+1),d=E.slice(m)}}o.loose||(s?o.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(s=!0)),o.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),o.raw+=c}let l=o.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;o.raw=o.raw.trimEnd();for(let a of o.items){if(this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]),a.task){if(a.text=a.text.replace(this.rules.other.listReplaceTask,""),a.tokens[0]?.type==="text"||a.tokens[0]?.type==="paragraph"){a.tokens[0].raw=a.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),a.tokens[0].text=a.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}}let c=this.rules.other.listTaskCheckbox.exec(a.raw);if(c){let u={type:"checkbox",raw:c[0]+" ",checked:c[0]!=="[ ]"};a.checked=u.checked,o.loose?a.tokens[0]&&["paragraph","text"].includes(a.tokens[0].type)&&"tokens"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=u.raw+a.tokens[0].raw,a.tokens[0].text=u.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(u)):a.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):a.tokens.unshift(u)}}if(!o.loose){let c=a.tokens.filter((d)=>d.type==="space"),u=c.length>0&&c.some((d)=>this.rules.other.anyLine.test(d.raw));o.loose=u}}if(o.loose)for(let a of o.items){a.loose=!0;for(let c of a.tokens)c.type==="text"&&(c.type="paragraph")}return o}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",o=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:o}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Xo(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),o=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
25
+ `):[],i={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of o)i.rows.push(Xo(s,i.header.length).map((l,a)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[a]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
26
+ `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let i=$t(n.slice(0,-1),"\\");if((n.length-i.length)%2===0)return}else{let i=Ri(t[2],"()");if(i===-2)return;if(i>-1){let s=(t[0].indexOf("!")===0?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,s).trim(),t[3]=""}}let r=t[2],o="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(r);i&&(r=i[1],o=i[3])}else o=t[3]?t[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),Jo(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=t[r.toLowerCase()];if(!o){let i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return Jo(n,o,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n)){let o=[...r[0]].length-1,i,s,l=o,a=0,c=r[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+o);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(s=[...i].length,r[3]||r[4]){l+=s;continue}else if((r[5]||r[6])&&o%3&&!((o+s)%3)){a+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+a);let u=[...r[0]][0].length,d=e.slice(0,o+r.index+u+s);if(Math.min(o,s)%2){let p=d.slice(1,-1);return{type:"em",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}let f=d.slice(2,-2);return{type:"strong",raw:d,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),o=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&o&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(!r)return;if(!r[1]||!n||this.rules.inline.punctuation.exec(n)){let o=[...r[0]].length-1,i,s,l=o,a=this.rules.inline.delRDelim;for(a.lastIndex=0,t=t.slice(-1*e.length+o);(r=a.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(s=[...i].length,s!==o))continue;if(r[3]||r[4]){l+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l);let c=[...r[0]][0].length,u=e.slice(0,o+r.index+c+s),d=u.slice(o,-o);return{type:"del",raw:u,text:d,tokens:this.lexer.inlineTokens(d)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let o;do o=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(o!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},Ae=class e{tokens;options;state;inlineQueue;tokenizer;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||at,this.options.tokenizer=this.options.tokenizer||new un,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:xe,block:cn.normal,inline:Pt.normal};this.options.pedantic?(n.block=cn.pedantic,n.inline=Pt.pedantic):this.options.gfm&&(n.block=cn.gfm,this.options.breaks?n.inline=Pt.breaks:n.inline=Pt.gfm),this.tokenizer.rules=n}static get rules(){return{block:cn,inline:Pt}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(t){t=t.replace(xe.carriageReturn,`
27
+ `),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){for(this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(xe.tabCharGlobal," ").replace(xe.spaceLine,""));t;){let o;if(this.options.extensions?.block?.some((s)=>(o=s.call({lexer:this},t,n))?(t=t.substring(o.raw.length),n.push(o),!0):!1))continue;if(o=this.tokenizer.space(t)){t=t.substring(o.raw.length);let s=n.at(-1);o.raw.length===1&&s!==void 0?s.raw+=`
28
+ `:n.push(o);continue}if(o=this.tokenizer.code(t)){t=t.substring(o.raw.length);let s=n.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
29
29
  `)?"":`
30
- `)+Y.raw,q.text+=`
31
- `+Y.text,this.inlineQueue.at(-1).src=q.text):J.push(Y);continue}if(Y=this.tokenizer.fences(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.heading(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.hr(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.blockquote(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.list(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.html(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.def(Q)){Q=Q.substring(Y.raw.length);let q=J.at(-1);q?.type==="paragraph"||q?.type==="text"?(q.raw+=(q.raw.endsWith(`
30
+ `)+o.raw,s.text+=`
31
+ `+o.text,this.inlineQueue.at(-1).src=s.text):n.push(o);continue}if(o=this.tokenizer.fences(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.heading(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.hr(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.blockquote(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.list(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.html(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.def(t)){t=t.substring(o.raw.length);let s=n.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
32
32
  `)?"":`
33
- `)+Y.raw,q.text+=`
34
- `+Y.raw,this.inlineQueue.at(-1).src=q.text):this.tokens.links[Y.tag]||(this.tokens.links[Y.tag]={href:Y.href,title:Y.title},J.push(Y));continue}if(Y=this.tokenizer.table(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}if(Y=this.tokenizer.lheading(Q)){Q=Q.substring(Y.raw.length),J.push(Y);continue}let Z=Q;if(this.options.extensions?.startBlock){let q=1/0,U=Q.slice(1),G;this.options.extensions.startBlock.forEach((K)=>{G=K.call({lexer:this},U),typeof G=="number"&&G>=0&&(q=Math.min(q,G))}),q<1/0&&q>=0&&(Z=Q.substring(0,q+1))}if(this.state.top&&(Y=this.tokenizer.paragraph(Z))){let q=J.at(-1);X&&q?.type==="paragraph"?(q.raw+=(q.raw.endsWith(`
33
+ `)+o.raw,s.text+=`
34
+ `+o.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},n.push(o));continue}if(o=this.tokenizer.table(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.lheading(t)){t=t.substring(o.raw.length),n.push(o);continue}let i=t;if(this.options.extensions?.startBlock){let s=1/0,l=t.slice(1),a;this.options.extensions.startBlock.forEach((c)=>{a=c.call({lexer:this},l),typeof a=="number"&&a>=0&&(s=Math.min(s,a))}),s<1/0&&s>=0&&(i=t.substring(0,s+1))}if(this.state.top&&(o=this.tokenizer.paragraph(i))){let s=n.at(-1);r&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(`
35
35
  `)?"":`
36
- `)+Y.raw,q.text+=`
37
- `+Y.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=q.text):J.push(Y),X=Z.length!==Q.length,Q=Q.substring(Y.raw.length);continue}if(Y=this.tokenizer.text(Q)){Q=Q.substring(Y.raw.length);let q=J.at(-1);q?.type==="text"?(q.raw+=(q.raw.endsWith(`
36
+ `)+o.raw,s.text+=`
37
+ `+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):n.push(o),r=i.length!==t.length,t=t.substring(o.raw.length);continue}if(o=this.tokenizer.text(t)){t=t.substring(o.raw.length);let s=n.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
38
38
  `)?"":`
39
- `)+Y.raw,q.text+=`
40
- `+Y.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=q.text):J.push(Y);continue}if(Q){let q="Infinite loop on byte: "+Q.charCodeAt(0);if(this.options.silent){console.error(q);break}else throw Error(q)}}return this.state.top=!0,J}inline(Q,J=[]){return this.inlineQueue.push({src:Q,tokens:J}),J}inlineTokens(Q,J=[]){this.tokenizer.lexer=this;let X=Q,Y=null;if(this.tokens.links){let G=Object.keys(this.tokens.links);if(G.length>0)for(;(Y=this.tokenizer.rules.inline.reflinkSearch.exec(X))!==null;)G.includes(Y[0].slice(Y[0].lastIndexOf("[")+1,-1))&&(X=X.slice(0,Y.index)+"["+"a".repeat(Y[0].length-2)+"]"+X.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(Y=this.tokenizer.rules.inline.anyPunctuation.exec(X))!==null;)X=X.slice(0,Y.index)+"++"+X.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let Z;for(;(Y=this.tokenizer.rules.inline.blockSkip.exec(X))!==null;)Z=Y[2]?Y[2].length:0,X=X.slice(0,Y.index+Z)+"["+"a".repeat(Y[0].length-Z-2)+"]"+X.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);X=this.options.hooks?.emStrongMask?.call({lexer:this},X)??X;let q=!1,U="";for(;Q;){q||(U=""),q=!1;let G;if(this.options.extensions?.inline?.some((_)=>(G=_.call({lexer:this},Q,J))?(Q=Q.substring(G.raw.length),J.push(G),!0):!1))continue;if(G=this.tokenizer.escape(Q)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.tag(Q)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.link(Q)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.reflink(Q,this.tokens.links)){Q=Q.substring(G.raw.length);let _=J.at(-1);G.type==="text"&&_?.type==="text"?(_.raw+=G.raw,_.text+=G.text):J.push(G);continue}if(G=this.tokenizer.emStrong(Q,X,U)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.codespan(Q)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.br(Q)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.del(Q,X,U)){Q=Q.substring(G.raw.length),J.push(G);continue}if(G=this.tokenizer.autolink(Q)){Q=Q.substring(G.raw.length),J.push(G);continue}if(!this.state.inLink&&(G=this.tokenizer.url(Q))){Q=Q.substring(G.raw.length),J.push(G);continue}let K=Q;if(this.options.extensions?.startInline){let _=1/0,z=Q.slice(1),W;this.options.extensions.startInline.forEach((H)=>{W=H.call({lexer:this},z),typeof W=="number"&&W>=0&&(_=Math.min(_,W))}),_<1/0&&_>=0&&(K=Q.substring(0,_+1))}if(G=this.tokenizer.inlineText(K)){Q=Q.substring(G.raw.length),G.raw.slice(-1)!=="_"&&(U=G.raw.slice(-1)),q=!0;let _=J.at(-1);_?.type==="text"?(_.raw+=G.raw,_.text+=G.text):J.push(G);continue}if(Q){let _="Infinite loop on byte: "+Q.charCodeAt(0);if(this.options.silent){console.error(_);break}else throw Error(_)}}return J}},U2=class{options;parser;constructor($){this.options=$||G0}space($){return""}code({text:$,lang:Q,escaped:J}){let X=(Q||"").match(B1.notSpaceStart)?.[0],Y=$.replace(B1.endingNewline,"")+`
41
- `;return X?'<pre><code class="language-'+R1(X)+'">'+(J?Y:R1(Y,!0))+`</code></pre>
42
- `:"<pre><code>"+(J?Y:R1(Y,!0))+`</code></pre>
43
- `}blockquote({tokens:$}){return`<blockquote>
44
- ${this.parser.parse($)}</blockquote>
45
- `}html({text:$}){return $}def($){return""}heading({tokens:$,depth:Q}){return`<h${Q}>${this.parser.parseInline($)}</h${Q}>
46
- `}hr($){return`<hr>
47
- `}list($){let{ordered:Q,start:J}=$,X="";for(let q=0;q<$.items.length;q++){let U=$.items[q];X+=this.listitem(U)}let Y=Q?"ol":"ul",Z=Q&&J!==1?' start="'+J+'"':"";return"<"+Y+Z+`>
48
- `+X+"</"+Y+`>
49
- `}listitem($){return`<li>${this.parser.parse($.tokens)}</li>
50
- `}checkbox({checked:$}){return"<input "+($?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:$}){return`<p>${this.parser.parseInline($)}</p>
51
- `}table($){let Q="",J="";for(let Y=0;Y<$.header.length;Y++)J+=this.tablecell($.header[Y]);Q+=this.tablerow({text:J});let X="";for(let Y=0;Y<$.rows.length;Y++){let Z=$.rows[Y];J="";for(let q=0;q<Z.length;q++)J+=this.tablecell(Z[q]);X+=this.tablerow({text:J})}return X&&(X=`<tbody>${X}</tbody>`),`<table>
39
+ `)+o.raw,s.text+=`
40
+ `+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):n.push(o);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw Error(s)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let r=t,o=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(o=this.tokenizer.rules.inline.reflinkSearch.exec(r))!==null;)a.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(o=this.tokenizer.rules.inline.anyPunctuation.exec(r))!==null;)r=r.slice(0,o.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(o=this.tokenizer.rules.inline.blockSkip.exec(r))!==null;)i=o[2]?o[2].length:0,r=r.slice(0,o.index+i)+"["+"a".repeat(o[0].length-i-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let s=!1,l="";for(;t;){s||(l=""),s=!1;let a;if(this.options.extensions?.inline?.some((u)=>(a=u.call({lexer:this},t,n))?(t=t.substring(a.raw.length),n.push(a),!0):!1))continue;if(a=this.tokenizer.escape(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.tag(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.link(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(a.raw.length);let u=n.at(-1);a.type==="text"&&u?.type==="text"?(u.raw+=a.raw,u.text+=a.text):n.push(a);continue}if(a=this.tokenizer.emStrong(t,r,l)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.codespan(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.br(t)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.del(t,r,l)){t=t.substring(a.raw.length),n.push(a);continue}if(a=this.tokenizer.autolink(t)){t=t.substring(a.raw.length),n.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(t))){t=t.substring(a.raw.length),n.push(a);continue}let c=t;if(this.options.extensions?.startInline){let u=1/0,d=t.slice(1),f;this.options.extensions.startInline.forEach((p)=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(u=Math.min(u,f))}),u<1/0&&u>=0&&(c=t.substring(0,u+1))}if(a=this.tokenizer.inlineText(c)){t=t.substring(a.raw.length),a.raw.slice(-1)!=="_"&&(l=a.raw.slice(-1)),s=!0;let u=n.at(-1);u?.type==="text"?(u.raw+=a.raw,u.text+=a.text):n.push(a);continue}if(t){let u="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw Error(u)}}return n}},pn=class{options;parser;constructor(e){this.options=e||at}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(xe.notSpaceStart)?.[0],o=e.replace(xe.endingNewline,"")+`
41
+ `;return r?'<pre><code class="language-'+Le(r)+'">'+(n?o:Le(o,!0))+`</code></pre>
42
+ `:"<pre><code>"+(n?o:Le(o,!0))+`</code></pre>
43
+ `}blockquote({tokens:e}){return`<blockquote>
44
+ ${this.parser.parse(e)}</blockquote>
45
+ `}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
46
+ `}hr(e){return`<hr>
47
+ `}list(e){let{ordered:t,start:n}=e,r="";for(let s=0;s<e.items.length;s++){let l=e.items[s];r+=this.listitem(l)}let o=t?"ol":"ul",i=t&&n!==1?' start="'+n+'"':"";return"<"+o+i+`>
48
+ `+r+"</"+o+`>
49
+ `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
50
+ `}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
51
+ `}table(e){let t="",n="";for(let o=0;o<e.header.length;o++)n+=this.tablecell(e.header[o]);t+=this.tablerow({text:n});let r="";for(let o=0;o<e.rows.length;o++){let i=e.rows[o];n="";for(let s=0;s<i.length;s++)n+=this.tablecell(i[s]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>
52
52
  <thead>
53
- `+Q+`</thead>
54
- `+X+`</table>
55
- `}tablerow({text:$}){return`<tr>
56
- ${$}</tr>
57
- `}tablecell($){let Q=this.parser.parseInline($.tokens),J=$.header?"th":"td";return($.align?`<${J} align="${$.align}">`:`<${J}>`)+Q+`</${J}>
58
- `}strong({tokens:$}){return`<strong>${this.parser.parseInline($)}</strong>`}em({tokens:$}){return`<em>${this.parser.parseInline($)}</em>`}codespan({text:$}){return`<code>${R1($,!0)}</code>`}br($){return"<br>"}del({tokens:$}){return`<del>${this.parser.parseInline($)}</del>`}link({href:$,title:Q,tokens:J}){let X=this.parser.parseInline(J),Y=g5($);if(Y===null)return X;$=Y;let Z='<a href="'+$+'"';return Q&&(Z+=' title="'+R1(Q)+'"'),Z+=">"+X+"</a>",Z}image({href:$,title:Q,text:J,tokens:X}){X&&(J=this.parser.parseInline(X,this.parser.textRenderer));let Y=g5($);if(Y===null)return R1(J);$=Y;let Z=`<img src="${$}" alt="${R1(J)}"`;return Q&&(Z+=` title="${R1(Q)}"`),Z+=">",Z}text($){return"tokens"in $&&$.tokens?this.parser.parseInline($.tokens):("escaped"in $)&&$.escaped?$.text:R1($.text)}},s2=class{strong({text:$}){return $}em({text:$}){return $}codespan({text:$}){return $}del({text:$}){return $}html({text:$}){return $}text({text:$}){return $}link({text:$}){return""+$}image({text:$}){return""+$}br(){return""}checkbox({raw:$}){return $}},b1=class ${options;renderer;textRenderer;constructor(Q){this.options=Q||G0,this.options.renderer=this.options.renderer||new U2,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new s2}static parse(Q,J){return new $(J).parse(Q)}static parseInline(Q,J){return new $(J).parseInline(Q)}parse(Q){this.renderer.parser=this;let J="";for(let X=0;X<Q.length;X++){let Y=Q[X];if(this.options.extensions?.renderers?.[Y.type]){let q=Y,U=this.options.extensions.renderers[q.type].call({parser:this},q);if(U!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(q.type)){J+=U||"";continue}}let Z=Y;switch(Z.type){case"space":{J+=this.renderer.space(Z);break}case"hr":{J+=this.renderer.hr(Z);break}case"heading":{J+=this.renderer.heading(Z);break}case"code":{J+=this.renderer.code(Z);break}case"table":{J+=this.renderer.table(Z);break}case"blockquote":{J+=this.renderer.blockquote(Z);break}case"list":{J+=this.renderer.list(Z);break}case"checkbox":{J+=this.renderer.checkbox(Z);break}case"html":{J+=this.renderer.html(Z);break}case"def":{J+=this.renderer.def(Z);break}case"paragraph":{J+=this.renderer.paragraph(Z);break}case"text":{J+=this.renderer.text(Z);break}default:{let q='Token with "'+Z.type+'" type was not found.';if(this.options.silent)return console.error(q),"";throw Error(q)}}}return J}parseInline(Q,J=this.renderer){this.renderer.parser=this;let X="";for(let Y=0;Y<Q.length;Y++){let Z=Q[Y];if(this.options.extensions?.renderers?.[Z.type]){let U=this.options.extensions.renderers[Z.type].call({parser:this},Z);if(U!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(Z.type)){X+=U||"";continue}}let q=Z;switch(q.type){case"escape":{X+=J.text(q);break}case"html":{X+=J.html(q);break}case"link":{X+=J.link(q);break}case"image":{X+=J.image(q);break}case"checkbox":{X+=J.checkbox(q);break}case"strong":{X+=J.strong(q);break}case"em":{X+=J.em(q);break}case"codespan":{X+=J.codespan(q);break}case"br":{X+=J.br(q);break}case"del":{X+=J.del(q);break}case"text":{X+=J.text(q);break}default:{let U='Token with "'+q.type+'" type was not found.';if(this.options.silent)return console.error(U),"";throw Error(U)}}}return X}},R0=class{options;block;constructor($){this.options=$||G0}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess($){return $}postprocess($){return $}processAllTokens($){return $}emStrongMask($){return $}provideLexer($=this.block){return $?C1.lex:C1.lexInline}provideParser($=this.block){return $?b1.parse:b1.parseInline}},y6=class{defaults=p2();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b1;Renderer=U2;TextRenderer=s2;Lexer=C1;Tokenizer=G2;Hooks=R0;constructor(...$){this.use(...$)}walkTokens($,Q){let J=[];for(let X of $)switch(J=J.concat(Q.call(this,X)),X.type){case"table":{let Y=X;for(let Z of Y.header)J=J.concat(this.walkTokens(Z.tokens,Q));for(let Z of Y.rows)for(let q of Z)J=J.concat(this.walkTokens(q.tokens,Q));break}case"list":{let Y=X;J=J.concat(this.walkTokens(Y.items,Q));break}default:{let Y=X;this.defaults.extensions?.childTokens?.[Y.type]?this.defaults.extensions.childTokens[Y.type].forEach((Z)=>{let q=Y[Z].flat(1/0);J=J.concat(this.walkTokens(q,Q))}):Y.tokens&&(J=J.concat(this.walkTokens(Y.tokens,Q)))}}return J}use(...$){let Q=this.defaults.extensions||{renderers:{},childTokens:{}};return $.forEach((J)=>{let X={...J};if(X.async=this.defaults.async||X.async||!1,J.extensions&&(J.extensions.forEach((Y)=>{if(!Y.name)throw Error("extension name required");if("renderer"in Y){let Z=Q.renderers[Y.name];Z?Q.renderers[Y.name]=function(...q){let U=Y.renderer.apply(this,q);return U===!1&&(U=Z.apply(this,q)),U}:Q.renderers[Y.name]=Y.renderer}if("tokenizer"in Y){if(!Y.level||Y.level!=="block"&&Y.level!=="inline")throw Error("extension level must be 'block' or 'inline'");let Z=Q[Y.level];Z?Z.unshift(Y.tokenizer):Q[Y.level]=[Y.tokenizer],Y.start&&(Y.level==="block"?Q.startBlock?Q.startBlock.push(Y.start):Q.startBlock=[Y.start]:Y.level==="inline"&&(Q.startInline?Q.startInline.push(Y.start):Q.startInline=[Y.start]))}"childTokens"in Y&&Y.childTokens&&(Q.childTokens[Y.name]=Y.childTokens)}),X.extensions=Q),J.renderer){let Y=this.defaults.renderer||new U2(this.defaults);for(let Z in J.renderer){if(!(Z in Y))throw Error(`renderer '${Z}' does not exist`);if(["options","parser"].includes(Z))continue;let q=Z,U=J.renderer[q],G=Y[q];Y[q]=(...K)=>{let _=U.apply(Y,K);return _===!1&&(_=G.apply(Y,K)),_||""}}X.renderer=Y}if(J.tokenizer){let Y=this.defaults.tokenizer||new G2(this.defaults);for(let Z in J.tokenizer){if(!(Z in Y))throw Error(`tokenizer '${Z}' does not exist`);if(["options","rules","lexer"].includes(Z))continue;let q=Z,U=J.tokenizer[q],G=Y[q];Y[q]=(...K)=>{let _=U.apply(Y,K);return _===!1&&(_=G.apply(Y,K)),_}}X.tokenizer=Y}if(J.hooks){let Y=this.defaults.hooks||new R0;for(let Z in J.hooks){if(!(Z in Y))throw Error(`hook '${Z}' does not exist`);if(["options","block"].includes(Z))continue;let q=Z,U=J.hooks[q],G=Y[q];R0.passThroughHooks.has(Z)?Y[q]=(K)=>{if(this.defaults.async&&R0.passThroughHooksRespectAsync.has(Z))return(async()=>{let z=await U.call(Y,K);return G.call(Y,z)})();let _=U.call(Y,K);return G.call(Y,_)}:Y[q]=(...K)=>{if(this.defaults.async)return(async()=>{let z=await U.apply(Y,K);return z===!1&&(z=await G.apply(Y,K)),z})();let _=U.apply(Y,K);return _===!1&&(_=G.apply(Y,K)),_}}X.hooks=Y}if(J.walkTokens){let Y=this.defaults.walkTokens,Z=J.walkTokens;X.walkTokens=function(q){let U=[];return U.push(Z.call(this,q)),Y&&(U=U.concat(Y.call(this,q))),U}}this.defaults={...this.defaults,...X}}),this}setOptions($){return this.defaults={...this.defaults,...$},this}lexer($,Q){return C1.lex($,Q??this.defaults)}parser($,Q){return b1.parse($,Q??this.defaults)}parseMarkdown($){return(Q,J)=>{let X={...J},Y={...this.defaults,...X},Z=this.onError(!!Y.silent,!!Y.async);if(this.defaults.async===!0&&X.async===!1)return Z(Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof Q>"u"||Q===null)return Z(Error("marked(): input parameter is undefined or null"));if(typeof Q!="string")return Z(Error("marked(): input parameter is of type "+Object.prototype.toString.call(Q)+", string expected"));if(Y.hooks&&(Y.hooks.options=Y,Y.hooks.block=$),Y.async)return(async()=>{let q=Y.hooks?await Y.hooks.preprocess(Q):Q,U=await(Y.hooks?await Y.hooks.provideLexer($):$?C1.lex:C1.lexInline)(q,Y),G=Y.hooks?await Y.hooks.processAllTokens(U):U;Y.walkTokens&&await Promise.all(this.walkTokens(G,Y.walkTokens));let K=await(Y.hooks?await Y.hooks.provideParser($):$?b1.parse:b1.parseInline)(G,Y);return Y.hooks?await Y.hooks.postprocess(K):K})().catch(Z);try{Y.hooks&&(Q=Y.hooks.preprocess(Q));let q=(Y.hooks?Y.hooks.provideLexer($):$?C1.lex:C1.lexInline)(Q,Y);Y.hooks&&(q=Y.hooks.processAllTokens(q)),Y.walkTokens&&this.walkTokens(q,Y.walkTokens);let U=(Y.hooks?Y.hooks.provideParser($):$?b1.parse:b1.parseInline)(q,Y);return Y.hooks&&(U=Y.hooks.postprocess(U)),U}catch(q){return Z(q)}}}onError($,Q){return(J)=>{if(J.message+=`
59
- Please report this to https://github.com/markedjs/marked.`,$){let X="<p>An error occurred:</p><pre>"+R1(J.message+"",!0)+"</pre>";return Q?Promise.resolve(X):X}if(Q)return Promise.reject(J);throw J}}},Z0=new y6;function a($,Q){return Z0.parse($,Q)}a.options=a.setOptions=function($){return Z0.setOptions($),a.defaults=Z0.defaults,c5(a.defaults),a};a.getDefaults=p2;a.defaults=G0;a.use=function(...$){return Z0.use(...$),a.defaults=Z0.defaults,c5(a.defaults),a};a.walkTokens=function($,Q){return Z0.walkTokens($,Q)};a.parseInline=Z0.parseInline;a.Parser=b1;a.parser=b1.parse;a.Renderer=U2;a.TextRenderer=s2;a.Lexer=C1;a.lexer=C1.lex;a.Tokenizer=G2;a.Hooks=R0;a.parse=a;var{options:s8,setOptions:t8,use:n8,walkTokens:e8,parseInline:$9}=a;var Q9=b1.parse,J9=C1.lex;import{SessionContext as k4,ActiveViewCtx as d8}from"#canvas/runtime";import{useState as z0,useCallback as y1,useEffect as _3,useRef as H3,useMemo as W3}from"react";import{AnnotationCtx as m6}from"#canvas/runtime";function D1($,Q,J="current"){let X=`canvas:${$}:rev:${Q}`;return J==="next"?`${X}:next-draft`:X}function L0($,Q){return`${D1($,Q)}:draft-handled`}function U0($,Q,J){try{$.removeItem(D1(Q,J)),$.removeItem(L0(Q,J))}catch{}}function t2($){if(!$)return null;try{let Q=JSON.parse($);return typeof Q==="object"&&Q!==null&&!Array.isArray(Q)?Q:null}catch{return null}}function S6($){if(!Array.isArray($)||$.length<2)return!1;let Q=$[1];if(typeof Q!=="object"||Q===null||Array.isArray(Q))return!1;let J=Reflect.get(Q,"note");if(typeof J==="string"&&J.trim().length>0)return!0;let X=Reflect.get(Q,"value");if(typeof X==="string")return X.trim().length>0;if(Array.isArray(X))return X.length>0;return X!==null&&X!==void 0}function n2($){if(!$)return!1;let Q=Reflect.get($,"annotations");if(Array.isArray(Q)&&Q.length>0)return!0;let J=Reflect.get($,"generalNote");if(typeof J==="string"&&J.trim().length>0)return!0;let X=Reflect.get($,"responses");return Array.isArray(X)&&X.some(S6)}function _2($,Q,J,X){try{let Y=D1(Q,J);if(n2(t2($.getItem(Y))))return $.setItem(L0(Q,J),"1"),null;if($.getItem(L0(Q,J))!==null)return null;let Z=X.filter((q)=>q.revision<J).sort((q,U)=>U.revision-q.revision);for(let q of Z){if(q.hasFeedback){let G=D1(Q,q.revision,"next"),K=t2($.getItem(G));if(!n2(K))return null;return $.setItem(Y,JSON.stringify({...K,feedbackEntries:[]})),$.setItem(L0(Q,J),"1"),$.removeItem(G),q.revision}let U=t2($.getItem(D1(Q,q.revision)));if(!n2(U)){if($.getItem(L0(Q,q.revision))!==null)return null;continue}return $.setItem(Y,JSON.stringify({...U,feedbackEntries:[]})),$.setItem(L0(Q,J),"1"),q.revision}}catch{}return null}function i1($,Q){let J=[],X=$3($);for(let Y of X){let Z=document.createRange();if(Z.selectNodeContents(Y),Y===$.startContainer)Z.setStart(Y,$.startOffset);if(Y===$.endContainer)Z.setEnd(Y,$.endOffset);let q=Z.toString();if(!q||!q.trim())continue;let U=document.createElement("mark");U.setAttribute("data-annotation-id",Q);try{Z.surroundContents(U)}catch{let G=Z.extractContents();U.appendChild(G),Z.insertNode(U)}J.push(U)}return J}function m0($){let Q=$.parentElement;if(Q?.classList.contains("select-none"))return!1;if(Q?.closest("[data-annotation-id]"))return!1;return!0}function $3($){let Q=[],J=$.commonAncestorContainer;if(J.nodeType===Node.TEXT_NODE)return Q.push(J),Q;let X=document.createTreeWalker(J,NodeFilter.SHOW_TEXT),Y;while(Y=X.nextNode()){if(!m0(Y))continue;if($.intersectsNode(Y))Q.push(Y)}return Q}function A6($,Q){let J=document.createRange();if(J.selectNodeContents($),$===Q.startContainer)J.setStart($,Q.startOffset);if($===Q.endContainer)J.setEnd($,Q.endOffset);return J.toString()}function Q3($){let Q="";for(let J of $3($))Q+=A6(J,$);return Q}function M0($,Q){let J=document.querySelectorAll(`[data-annotation-id="${$}"]`);for(let X of J)X.classList.toggle("mark-active",Q)}function E0($,Q){if(Q!=null&&Q!==$)M0(Q,!1);if($!=null)M0($,!0)}function x0($,Q){let J=document.querySelectorAll(`[data-annotation-id="${$}"]`);for(let X of J)X.setAttribute("data-annotation-id",Q)}function f0($,Q){for(let J of Q){if($.querySelector(`[data-annotation-id="${J.id}"]`))continue;let X=J.snippet;if(!X)continue;let{fullText:Y,textNodes:Z}=w6($),q=[],U=0;while(!0){let N=Y.indexOf(X,U);if(N===-1)break;q.push(N),U=N+1}let[G]=q;if(G===void 0)continue;let K=G;if(q.length>1&&J.context){let N=-1;for(let O of q){let B=0;if(J.context.before){let A=Y.slice(Math.max(0,O-80),O);if(A.includes(J.context.before))B+=2;else if(J.context.before.length>10&&A.includes(J.context.before.slice(-10)))B+=1}if(J.context.after){let A=Y.slice(O+X.length,O+X.length+80);if(A.includes(J.context.after))B+=2;else if(J.context.after.length>10&&A.includes(J.context.after.slice(0,10)))B+=1}if(B>N)N=B,K=O}}let _=K,z=K+X.length,W=e5(Z,_),H=e5(Z,z);if(!W||!H)continue;try{let N=document.createRange();N.setStart(W.node,W.offset),N.setEnd(H.node,H.offset),i1(N,J.id)}catch{}}}function w6($){let Q=[],J="",X=document.createTreeWalker($,NodeFilter.SHOW_TEXT),Y;while(Y=X.nextNode()){if(!m0(Y))continue;Q.push({node:Y,start:J.length}),J+=Y.textContent||""}return{fullText:J,textNodes:Q}}function e5($,Q){for(let J=$.length-1;J>=0;J--){let X=$[J];if(!X||X.start>Q)continue;let Y=Q-X.start,Z=X.node.textContent?.length??0;if(Y<=Z)return{node:X.node,offset:Y}}return null}function v0($){let Q=document.querySelectorAll(`[data-annotation-id="${$}"]`);for(let J of Q){let X=J.parentNode;if(!X)continue;if(J.tagName!=="MARK"){X.removeChild(J);continue}while(J.firstChild)X.insertBefore(J.firstChild,J);X.removeChild(J),X.normalize()}}function o1($,Q){let J=J3($,"before",60),X=J3($,"after",60),Y=b6($.startContainer,Q);return{before:J,after:X,hierarchy:Y}}function J3($,Q,J){let X=C6(Q==="before"?$.startContainer:$.endContainer);if(!X)return"";let Y="";if(Q==="before"){let Z=document.createTreeWalker(X,NodeFilter.SHOW_TEXT),q;while(q=Z.nextNode()){if(q===$.startContainer){Y+=(q.textContent||"").slice(0,$.startOffset);break}if(!m0(q))continue;Y+=q.textContent||""}if(Y.length>J){Y=Y.slice(-J);let U=Y.indexOf(" ");if(U>0)Y=Y.slice(U+1)}}else{let Z=document.createTreeWalker(X,NodeFilter.SHOW_TEXT),q=!1,U;while(U=Z.nextNode()){if(U===$.endContainer){Y+=(U.textContent||"").slice($.endOffset),q=!0;continue}if(q){if(!m0(U))continue;Y+=U.textContent||""}}if(Y.length>J){Y=Y.slice(0,J);let G=Y.lastIndexOf(" ");if(G>0)Y=Y.slice(0,G)}}return Y.trim()}function C6($){let Q=new Set(["DIV","P","LI","PRE","BLOCKQUOTE","SECTION","ARTICLE"]),J=$.parentElement;while(J){if(Q.has(J.tagName))return J;J=J.parentElement}return null}function b6($,Q){let J=[],X=$ instanceof Element?$:$.parentElement;while(X&&X!==Q){let Y=X.getAttribute?.("data-task-id");if(Y){let q=X.querySelector(".font-semibold");if(q)J.unshift(q.textContent?.trim()||Y)}let Z=I6(X);if(Z)J.unshift(Z);X=X.parentElement}return J}function I6($){if($.getAttribute("data-md")==="section"){let J=$.getAttribute("data-md-title");if(J)return J}if($.tagName!=="DIV")return null;return $.querySelector(":scope > button > .font-heading, :scope > div > .font-heading")?.textContent?.trim()||null}function H2($){let Q=$.snippet.trim(),J=$.context,X=Q.length<30;if(J&&X&&(J.before||J.after)){let Y=[];if(J.before)Y.push(`...${J.before} `);if(Y.push(`**${Q}**`),J.after)Y.push(` ${J.after}...`);return Y.join("")}return Q}function u0($){return{kind:$.kind,owns:(Q)=>$.parse(Q)!==null,find:(Q,J)=>{let X=$.parse(Q);return X===null?null:$.find(X,J)},restore:(Q,J)=>{let X=$.parse(J.snippet);if(X===null)return;$.restore?.(X,Q,J)},describe:(Q)=>{let J=$.parse(Q);if(J===null||!$.describe)return null;return $.describe(J)}}}function Y3($){let Q=document.createTreeWalker($,NodeFilter.SHOW_TEXT),J="";for(let X=Q.nextNode();X;X=Q.nextNode()){let Y=X.parentElement?.closest("[aria-hidden='true']");if(Y&&$.contains(Y))continue;J+=X.textContent??""}return J.trim()}function W2($,Q,J){return{selector:$,snippet:(X)=>{let Y=X.getAttribute(J);return Y?`${Q} ${Y}`:null}}}var e2=[W2("[data-md='item']","[Item]","data-md-label"),W2("[data-md='section']","[Section]","data-md-title"),W2("[data-md='checklist-item']","[Checklist]","data-md-label"),W2("[data-md='image']","[Image]","data-md-src"),{selector:"[data-md='callout']",snippet:($)=>{return`[Callout:${$.getAttribute("data-md-type")||"info"}] ${Y3($).slice(0,60)||"Callout"}`}},{selector:"[data-md='note']",snippet:($)=>`[Note] ${Y3($).slice(0,60)||"Note"}`},{selector:"[data-md='table'] tbody tr",snippet:($)=>{let Q=Array.from($.querySelectorAll("td")).map((J)=>J.textContent?.trim()).filter(Boolean);return Q.length?`[Row] ${Q.join(" | ")}`:null}}],j6=["[data-md='choice-option']","[data-md='multichoice-option']","[data-md='userinput']","[data-md='rangeinput']"],a1=e2.map(($)=>$.selector).join(", "),P0=[...e2.map(($)=>$.selector),...j6].join(", ");function m1($){for(let Q of e2)if($.matches(Q.selector))return Q.snippet($);return null}var $5={kind:"block",parse:($)=>$.startsWith("[")?{snippet:$}:null,format:($)=>$.snippet,find:($,Q)=>{for(let J of Q.querySelectorAll(a1)){if(!(J instanceof HTMLElement))continue;if(m1(J)===$.snippet)return J}return null}};var J5="data-annotation-image",V6=/^\[Region:(rect|ellipse)\] ([\s\S]+) @(0|[1-9]\d*),(0|[1-9]\d*),(0|[1-9]\d*),(0|[1-9]\d*)$/;function k6($){if($==="rect")return"rect";if($==="ellipse")return"ellipse";return null}function N2($){if($===void 0)return null;let Q=Number($);if(!Number.isInteger(Q)||Q<0||Q>1e4)return null;return Q}function X3($){return Math.min(1e4,Math.max(0,$))}function Y5($,Q,J){if(!($.width>0)||!($.height>0))return null;return{x:X3(Math.round(Q/$.width*1e4)),y:X3(Math.round(J/$.height*1e4))}}function T2($,Q){let J=Math.min($.x,Q.x),X=Math.min($.y,Q.y);return{x:J,y:X,w:Math.min(1e4-J,Math.abs($.x-Q.x)),h:Math.min(1e4-X,Math.abs($.y-Q.y))}}function X5($){return $.w>=30&&$.h>=30}function q3($){return{left:`${$.x/100}%`,top:`${$.y/100}%`,width:`${$.w/100}%`,height:`${$.h/100}%`}}function B2($){return`${($/100).toFixed(1).replace(/\.0$/,"")}%`}function F2($){let Q=`${B2($.x)}-${B2($.x+$.w)}`,J=`${B2($.y)}-${B2($.y+$.h)}`;return`[Region] ${$.src} — ${$.shape} x ${Q}, y ${J} of the image`}function Q5($,Q){for(let J of Q.querySelectorAll("[data-md='image']")){if(!(J instanceof HTMLElement))continue;if(J.getAttribute("data-md-src")!==$)continue;let X=J.querySelector("[data-annotation-image]");if(X instanceof HTMLElement)return X}return null}function O2($,Q){let J=q3(Q);$.style.left=J.left,$.style.top=J.top,$.style.width=J.width,$.style.height=J.height}function L2($,Q,J){let X=document.createElement("div");return X.className="ann-region",X.setAttribute("data-annotation-id",J),X.setAttribute("data-annotation-region",Q),O2(X,$),X}var g0={kind:"region",parse:($)=>{let Q=V6.exec($);if(!Q)return null;let J=k6(Q[1]),X=Q[2],Y=N2(Q[3]),Z=N2(Q[4]),q=N2(Q[5]),U=N2(Q[6]);if(J===null||X===void 0)return null;if(Y===null||Z===null||q===null||U===null)return null;if(q<1||U<1)return null;return{src:X,shape:J,x:Y,y:Z,w:q,h:U}},format:($)=>`[Region:${$.shape}] ${$.src} @${$.x},${$.y},${$.w},${$.h}`,find:($,Q)=>Q5($.src,Q),restore:($,Q,J)=>{if(Q.querySelector(`[data-annotation-id="${J.id}"]`))return;let X=Q5($.src,Q);if(!X)return;X.appendChild(L2($,$.shape,J.id))},describe:F2};var q5={kind:"text",parse:($)=>$?{text:$}:null,format:($)=>$.text,find:()=>null,restore:($,Q,J)=>{f0(Q,[J])}};var I1="__agent-response__";function K0($){return $.filePath&&$.filePath!=="__agent-response__"?$.filePath:void 0}function h0($){return $.uploadUrl!==null}function O1(){return`ann-${Date.now()}-${Math.random().toString(36).slice(2,6)}`}function s1($,Q){$.style.height="auto",$.style.height=(Q?Math.max(Q,$.scrollHeight):$.scrollHeight)+"px"}var M2=[u0(g0),u0($5),u0(q5)];function G3($,Q){for(let J of M2){let X=J.find($,Q);if(X)return X}return null}function Z5($,Q){for(let J of Q){if(!J.snippet)continue;for(let X of M2)X.restore($,J)}}function c0($){for(let Q of M2){let J=Q.describe($);if(J!==null)return J}return $}function p0($){let Q=document.querySelector(`[data-annotation-id="${$.id}"]`);if(Q instanceof HTMLElement)return Q;let J=$.canvasFile?document.querySelector(`[data-canvas-file="${$.canvasFile}"]`):document;if(!J)return null;return G3($.snippet,J)}function Z3($){$.classList.remove("ann-flash"),$.offsetWidth,$.classList.add("ann-flash"),$.addEventListener("animationend",()=>{$.classList.remove("ann-flash")},{once:!0})}function G5($,Q){let J=K0($);if(J)Q({type:"file",path:J}),setTimeout(()=>{let X=p0($);if(X)X.scrollIntoView({behavior:"smooth",block:"center"}),Z3(X)},150);else{let X=p0($);if(X)X.scrollIntoView({behavior:"smooth",block:"center"}),Z3(X)}}function d0($){let Q=[],J=$.snippet.trim(),X=$.context,Y=c0(J);if(Y!==J)Q.push(`> ${Y}`);else if($.filePath&&X&&X.lineStart!=null){let U=X.lineStart,G=X.lineEnd??U,K=J.split(`
60
- `);if(J.length<30&&U===G&&(X.before||X.after)){let z=H2($);Q.push(`> L${U}: ${z}`)}else if(K.length<=6)for(let z=0;z<K.length;z++)Q.push(`> ${U+z} | ${K[z]}`);else{for(let z=0;z<3;z++)Q.push(`> ${U+z} | ${K[z]}`);Q.push(`> ... (${K.length} lines)`);for(let z=K.length-3;z<K.length;z++)Q.push(`> ${U+z} | ${K[z]}`)}}else{let U=H2($);if(J.split(`
61
- `).length<=3)Q.push(`> ${U.split(`
53
+ `+t+`</thead>
54
+ `+r+`</table>
55
+ `}tablerow({text:e}){return`<tr>
56
+ ${e}</tr>
57
+ `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
58
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Le(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),o=Zo(e);if(o===null)return r;e=o;let i='<a href="'+e+'"';return t&&(i+=' title="'+Le(t)+'"'),i+=">"+r+"</a>",i}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let o=Zo(e);if(o===null)return Le(n);e=o;let i=`<img src="${e}" alt="${Le(n)}"`;return t&&(i+=` title="${Le(t)}"`),i+=">",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):("escaped"in e)&&e.escaped?e.text:Le(e.text)}},no=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Re=class e{options;renderer;textRenderer;constructor(t){this.options=t||at,this.options.renderer=this.options.renderer||new pn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new no}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(t){this.renderer.parser=this;let n="";for(let r=0;r<t.length;r++){let o=t[r];if(this.options.extensions?.renderers?.[o.type]){let s=o,l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(s.type)){n+=l||"";continue}}let i=o;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw Error(s)}}}return n}parseInline(t,n=this.renderer){this.renderer.parser=this;let r="";for(let o=0;o<t.length;o++){let i=t[o];if(this.options.extensions?.renderers?.[i.type]){let l=this.options.extensions.renderers[i.type].call({parser:this},i);if(l!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){r+=l||"";continue}}let s=i;switch(s.type){case"escape":{r+=n.text(s);break}case"html":{r+=n.html(s);break}case"link":{r+=n.link(s);break}case"image":{r+=n.image(s);break}case"checkbox":{r+=n.checkbox(s);break}case"strong":{r+=n.strong(s);break}case"em":{r+=n.em(s);break}case"codespan":{r+=n.codespan(s);break}case"br":{r+=n.br(s);break}case"del":{r+=n.del(s);break}case"text":{r+=n.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw Error(l)}}}return r}},Ht=class{options;block;constructor(e){this.options=e||at}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Ae.lex:Ae.lexInline}provideParser(e=this.block){return e?Re.parse:Re.parseInline}},Ni=class{defaults=Kn();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Re;Renderer=pn;TextRenderer=no;Lexer=Ae;Tokenizer=un;Hooks=Ht;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let o=r;for(let i of o.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of o.rows)for(let s of i)n=n.concat(this.walkTokens(s.tokens,t));break}case"list":{let o=r;n=n.concat(this.walkTokens(o.items,t));break}default:{let o=r;this.defaults.extensions?.childTokens?.[o.type]?this.defaults.extensions.childTokens[o.type].forEach((i)=>{let s=o[i].flat(1/0);n=n.concat(this.walkTokens(s,t))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((n)=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach((o)=>{if(!o.name)throw Error("extension name required");if("renderer"in o){let i=t.renderers[o.name];i?t.renderers[o.name]=function(...s){let l=o.renderer.apply(this,s);return l===!1&&(l=i.apply(this,s)),l}:t.renderers[o.name]=o.renderer}if("tokenizer"in o){if(!o.level||o.level!=="block"&&o.level!=="inline")throw Error("extension level must be 'block' or 'inline'");let i=t[o.level];i?i.unshift(o.tokenizer):t[o.level]=[o.tokenizer],o.start&&(o.level==="block"?t.startBlock?t.startBlock.push(o.start):t.startBlock=[o.start]:o.level==="inline"&&(t.startInline?t.startInline.push(o.start):t.startInline=[o.start]))}"childTokens"in o&&o.childTokens&&(t.childTokens[o.name]=o.childTokens)}),r.extensions=t),n.renderer){let o=this.defaults.renderer||new pn(this.defaults);for(let i in n.renderer){if(!(i in o))throw Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let s=i,l=n.renderer[s],a=o[s];o[s]=(...c)=>{let u=l.apply(o,c);return u===!1&&(u=a.apply(o,c)),u||""}}r.renderer=o}if(n.tokenizer){let o=this.defaults.tokenizer||new un(this.defaults);for(let i in n.tokenizer){if(!(i in o))throw Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let s=i,l=n.tokenizer[s],a=o[s];o[s]=(...c)=>{let u=l.apply(o,c);return u===!1&&(u=a.apply(o,c)),u}}r.tokenizer=o}if(n.hooks){let o=this.defaults.hooks||new Ht;for(let i in n.hooks){if(!(i in o))throw Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let s=i,l=n.hooks[s],a=o[s];Ht.passThroughHooks.has(i)?o[s]=(c)=>{if(this.defaults.async&&Ht.passThroughHooksRespectAsync.has(i))return(async()=>{let d=await l.call(o,c);return a.call(o,d)})();let u=l.call(o,c);return a.call(o,u)}:o[s]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await l.apply(o,c);return d===!1&&(d=await a.apply(o,c)),d})();let u=l.apply(o,c);return u===!1&&(u=a.apply(o,c)),u}}r.hooks=o}if(n.walkTokens){let o=this.defaults.walkTokens,i=n.walkTokens;r.walkTokens=function(s){let l=[];return l.push(i.call(this,s)),o&&(l=l.concat(o.call(this,s))),l}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Ae.lex(e,t??this.defaults)}parser(e,t){return Re.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},o={...this.defaults,...r},i=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&r.async===!1)return i(Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return i(Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return i(Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=e),o.async)return(async()=>{let s=o.hooks?await o.hooks.preprocess(t):t,l=await(o.hooks?await o.hooks.provideLexer(e):e?Ae.lex:Ae.lexInline)(s,o),a=o.hooks?await o.hooks.processAllTokens(l):l;o.walkTokens&&await Promise.all(this.walkTokens(a,o.walkTokens));let c=await(o.hooks?await o.hooks.provideParser(e):e?Re.parse:Re.parseInline)(a,o);return o.hooks?await o.hooks.postprocess(c):c})().catch(i);try{o.hooks&&(t=o.hooks.preprocess(t));let s=(o.hooks?o.hooks.provideLexer(e):e?Ae.lex:Ae.lexInline)(t,o);o.hooks&&(s=o.hooks.processAllTokens(s)),o.walkTokens&&this.walkTokens(s,o.walkTokens);let l=(o.hooks?o.hooks.provideParser(e):e?Re.parse:Re.parseInline)(s,o);return o.hooks&&(l=o.hooks.postprocess(l)),l}catch(s){return i(s)}}}onError(e,t){return(n)=>{if(n.message+=`
59
+ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},it=new Ni;function Q(e,t){return it.parse(e,t)}Q.options=Q.setOptions=function(e){return it.setOptions(e),Q.defaults=it.defaults,Yo(Q.defaults),Q};Q.getDefaults=Kn;Q.defaults=at;Q.use=function(...e){return it.use(...e),Q.defaults=it.defaults,Yo(Q.defaults),Q};Q.walkTokens=function(e,t){return it.walkTokens(e,t)};Q.parseInline=it.parseInline;Q.Parser=Re;Q.parser=Re.parse;Q.Renderer=pn;Q.TextRenderer=no;Q.Lexer=Ae;Q.lexer=Ae.lex;Q.Tokenizer=un;Q.Hooks=Ht;Q.parse=Q;var{options:ac,setOptions:lc,use:cc,walkTokens:dc,parseInline:uc}=Q;var pc=Re.parse,fc=Ae.lex;import{SessionContext as Os,ActiveViewCtx as tc}from"#canvas/runtime";import{AnnotationCtx as la}from"#canvas/runtime";import{AnnotationCtx as Kd,AnnotationHostContext as Zd,SessionContext as Xd,useAnnotationHost as Jd,useAnnotations as Yd}from"@fabrika/annotations/runtime";function Ue(e,t){let n=[],r=cr(e);for(let o of r){let i=document.createRange();if(i.selectNodeContents(o),o===e.startContainer)i.setStart(o,e.startOffset);if(o===e.endContainer)i.setEnd(o,e.endOffset);let s=i.toString();if(!s||!s.trim())continue;let l=document.createElement("mark");l.setAttribute("data-annotation-id",t);try{i.surroundContents(l)}catch{let a=i.extractContents();l.appendChild(a),i.insertNode(l)}n.push(l)}return n}function Ot(e){let t=e.parentElement;if(t?.classList.contains("select-none"))return!1;if(t?.closest("[data-annotation-id]"))return!1;return!0}function cr(e){let t=[],n=e.commonAncestorContainer;if(n.nodeType===Node.TEXT_NODE)return t.push(n),t;let r=document.createTreeWalker(n,NodeFilter.SHOW_TEXT),o;while(o=r.nextNode()){if(!Ot(o))continue;if(e.intersectsNode(o))t.push(o)}return t}function Ti(e,t){let n=document.createRange();if(n.selectNodeContents(e),e===t.startContainer)n.setStart(e,t.startOffset);if(e===t.endContainer)n.setEnd(e,t.endOffset);return n.toString()}function dr(e){let t="";for(let n of cr(e))t+=Ti(n,e);return t}function yt(e,t){let n=document.querySelectorAll(`[data-annotation-id="${e}"]`);for(let r of n)r.classList.toggle("mark-active",t)}function Ft(e,t){if(t!=null&&t!==e)yt(t,!1);if(e!=null)yt(e,!0)}function Bt(e,t){let n=document.querySelectorAll(`[data-annotation-id="${e}"]`);for(let r of n)r.setAttribute("data-annotation-id",t)}function _t(e,t){for(let n of t){if(e.querySelector(`[data-annotation-id="${n.id}"]`))continue;let r=n.snippet;if(!r)continue;let{fullText:o,textNodes:i}=Li(e),s=[],l=0;while(!0){let m=o.indexOf(r,l);if(m===-1)break;s.push(m),l=m+1}let[a]=s;if(a===void 0)continue;let c=a;if(s.length>1&&n.context){let m=-1;for(let v of s){let g=0;if(n.context.before){let w=o.slice(Math.max(0,v-80),v);if(w.includes(n.context.before))g+=2;else if(n.context.before.length>10&&w.includes(n.context.before.slice(-10)))g+=1}if(n.context.after){let w=o.slice(v+r.length,v+r.length+80);if(w.includes(n.context.after))g+=2;else if(n.context.after.length>10&&w.includes(n.context.after.slice(0,10)))g+=1}if(g>m)m=g,c=v}}let u=c,d=c+r.length,f=lr(i,u),p=lr(i,d);if(!f||!p)continue;try{let m=document.createRange();m.setStart(f.node,f.offset),m.setEnd(p.node,p.offset),Ue(m,n.id)}catch{}}}function Li(e){let t=[],n="",r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),o;while(o=r.nextNode()){if(!Ot(o))continue;t.push({node:o,start:n.length}),n+=o.textContent||""}return{fullText:n,textNodes:t}}function lr(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if(!r||r.start>t)continue;let o=t-r.start,i=r.node.textContent?.length??0;if(o<=i)return{node:r.node,offset:o}}return null}function jt(e){let t=document.querySelectorAll(`[data-annotation-id="${e}"]`);for(let n of t){let r=n.parentNode;if(!r)continue;if(n.tagName!=="MARK"){r.removeChild(n);continue}while(n.firstChild)r.insertBefore(n.firstChild,n);r.removeChild(n),r.normalize()}}function Ge(e,t){let n=ur(e,"before",60),r=ur(e,"after",60),o=Ii(e.startContainer,t);return{before:n,after:r,hierarchy:o}}function ur(e,t,n){let r=Mi(t==="before"?e.startContainer:e.endContainer);if(!r)return"";let o="";if(t==="before"){let i=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),s;while(s=i.nextNode()){if(s===e.startContainer){o+=(s.textContent||"").slice(0,e.startOffset);break}if(!Ot(s))continue;o+=s.textContent||""}if(o.length>n){o=o.slice(-n);let l=o.indexOf(" ");if(l>0)o=o.slice(l+1)}}else{let i=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),s=!1,l;while(l=i.nextNode()){if(l===e.endContainer){o+=(l.textContent||"").slice(e.endOffset),s=!0;continue}if(s){if(!Ot(l))continue;o+=l.textContent||""}}if(o.length>n){o=o.slice(0,n);let a=o.lastIndexOf(" ");if(a>0)o=o.slice(0,a)}}return o.trim()}function Mi(e){let t=new Set(["DIV","P","LI","PRE","BLOCKQUOTE","SECTION","ARTICLE"]),n=e.parentElement;while(n){if(t.has(n.tagName))return n;n=n.parentElement}return null}function Ii(e,t){let n=[],r=e instanceof Element?e:e.parentElement;while(r&&r!==t){let o=r.getAttribute?.("data-task-id");if(o){let s=r.querySelector(".font-semibold");if(s)n.unshift(s.textContent?.trim()||o)}let i=Pi(r);if(i)n.unshift(i);r=r.parentElement}return n}function Pi(e){if(e.getAttribute("data-md")==="section"){let n=e.getAttribute("data-md-title");if(n)return n}if(e.tagName!=="DIV")return null;return e.querySelector(":scope > button > .font-heading, :scope > div > .font-heading")?.textContent?.trim()||null}function hn(e){let t=e.snippet.trim(),n=e.context,r=t.length<30;if(n&&r&&(n.before||n.after)){let o=[];if(n.before)o.push(`...${n.before} `);if(o.push(`**${t}**`),n.after)o.push(` ${n.after}...`);return o.join("")}return t}function qt(e){return{kind:e.kind,owns:(t)=>e.parse(t)!==null,find:(t,n)=>{let r=e.parse(t);return r===null?null:e.find(r,n)},restore:(t,n)=>{let r=e.parse(n.snippet);if(r===null)return;e.restore?.(r,t,n)},describe:(t)=>{let n=e.parse(t);if(n===null||!e.describe)return null;return e.describe(n)}}}function pr(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),n="";for(let r=t.nextNode();r;r=t.nextNode()){let o=r.parentElement?.closest("[aria-hidden='true']");if(o&&e.contains(o))continue;n+=r.textContent??""}return n.trim()}function gn(e,t,n){return{selector:e,snippet:(r)=>{let o=r.getAttribute(n);return o?`${t} ${o}`:null}}}var oo=[gn("[data-md='item']","[Item]","data-md-label"),gn("[data-md='section']","[Section]","data-md-title"),gn("[data-md='checklist-item']","[Checklist]","data-md-label"),gn("[data-md='image']","[Image]","data-md-src"),{selector:"[data-md='callout']",snippet:(e)=>`[Callout:${e.getAttribute("data-md-type")||"info"}] ${pr(e).slice(0,60)||"Callout"}`},{selector:"[data-md='note']",snippet:(e)=>`[Note] ${pr(e).slice(0,60)||"Note"}`},{selector:"[data-md='table'] tbody tr",snippet:(e)=>{let t=Array.from(e.querySelectorAll("td")).map((n)=>n.textContent?.trim()).filter(Boolean);return t.length?`[Row] ${t.join(" | ")}`:null}}],$i=["[data-md='choice-option']","[data-md='multichoice-option']","[data-md='userinput']","[data-md='rangeinput']"],Ke=oo.map((e)=>e.selector).join(", "),kt=[...oo.map((e)=>e.selector),...$i].join(", ");function Me(e){for(let t of oo)if(e.matches(t.selector))return t.snippet(e);return null}var ro={kind:"block",parse:(e)=>e.startsWith("[")?{snippet:e}:null,format:(e)=>e.snippet,find:(e,t)=>{for(let n of t.querySelectorAll(Ke)){if(!(n instanceof HTMLElement))continue;if(Me(n)===e.snippet)return n}return null}};var io="data-annotation-image",Hi=/^\[Region:(rect|ellipse)\] ([\s\S]+) @(0|[1-9]\d*),(0|[1-9]\d*),(0|[1-9]\d*),(0|[1-9]\d*)$/;function Di(e){if(e==="rect")return"rect";if(e==="ellipse")return"ellipse";return null}function xn(e){if(e===void 0)return null;let t=Number(e);if(!Number.isInteger(t)||t<0||t>1e4)return null;return t}function fr(e){return Math.min(1e4,Math.max(0,e))}function ao(e,t,n){if(!(e.width>0)||!(e.height>0))return null;return{x:fr(Math.round(t/e.width*1e4)),y:fr(Math.round(n/e.height*1e4))}}function vn(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.min(1e4-n,Math.abs(e.x-t.x)),h:Math.min(1e4-r,Math.abs(e.y-t.y))}}function lo(e){return e.w>=30&&e.h>=30}function mr(e){return{left:`${e.x/100}%`,top:`${e.y/100}%`,width:`${e.w/100}%`,height:`${e.h/100}%`}}function bn(e){return`${(e/100).toFixed(1).replace(/\.0$/,"")}%`}function yn(e){let t=`${bn(e.x)}-${bn(e.x+e.w)}`,n=`${bn(e.y)}-${bn(e.y+e.h)}`;return`[Region] ${e.src} — ${e.shape} x ${t}, y ${n} of the image`}function so(e,t){for(let n of t.querySelectorAll("[data-md='image']")){if(!(n instanceof HTMLElement))continue;if(n.getAttribute("data-md-src")!==e)continue;let r=n.querySelector("[data-annotation-image]");if(r instanceof HTMLElement)return r}return null}function kn(e,t){let n=mr(t);e.style.left=n.left,e.style.top=n.top,e.style.width=n.width,e.style.height=n.height}function wn(e,t,n){let r=document.createElement("div");return r.className="ann-region",r.setAttribute("data-annotation-id",n),r.setAttribute("data-annotation-region",t),kn(r,e),r}var zt={kind:"region",parse:(e)=>{let t=Hi.exec(e);if(!t)return null;let n=Di(t[1]),r=t[2],o=xn(t[3]),i=xn(t[4]),s=xn(t[5]),l=xn(t[6]);if(n===null||r===void 0)return null;if(o===null||i===null||s===null||l===null)return null;if(s<1||l<1)return null;return{src:r,shape:n,x:o,y:i,w:s,h:l}},format:(e)=>`[Region:${e.shape}] ${e.src} @${e.x},${e.y},${e.w},${e.h}`,find:(e,t)=>so(e.src,t),restore:(e,t,n)=>{if(t.querySelector(`[data-annotation-id="${n.id}"]`))return;let r=so(e.src,t);if(!r)return;r.appendChild(wn(e,e.shape,n.id))},describe:yn};var co={kind:"text",parse:(e)=>e?{text:e}:null,format:(e)=>e.text,find:()=>null,restore:(e,t,n)=>{_t(t,[n])}};var En=[qt(zt),qt(ro),qt(co)];function uo(e,t){for(let n of En){let r=n.find(e,t);if(r)return r}return null}function po(e,t){for(let n of t){if(!n.snippet)continue;for(let r of En)r.restore(e,n)}}function Vt(e){for(let t of En){let n=t.describe(e);if(n!==null)return n}return e}import{AnnotationCtx as Bc,SessionContext as _c,useAnnotationHost as jc}from"@fabrika/annotations/runtime";import{useEffect as Vc,useState as Wc}from"react";import{useCallback as ct,useMemo as Oi,useState as Fi}from"react";var Se="__agent-response__";function lt(e){return e.filePath&&e.filePath!=="__agent-response__"?e.filePath:void 0}function Wt(e){return e.uploadUrl!==null}function ve(){return`ann-${Date.now()}-${Math.random().toString(36).slice(2,6)}`}function Ze(e,t){e.style.height="auto",e.style.height=(t?Math.max(t,e.scrollHeight):e.scrollHeight)+"px"}function hr(e){let t=e?`[data-annotation-id="${CSS.escape(e)}"]`:"[data-annotation-id]";for(let n of document.querySelectorAll(t))if(n.tagName==="MARK"){let r=n.parentNode;n.replaceWith(document.createTextNode(n.textContent||"")),r?.normalize()}else n.remove()}function An({annotations:e,setAnnotations:t,generalNote:n,setGeneralNote:r,remoteAnnotations:o,isReadOnly:i,onClear:s}){let[l,a]=Fi(null),c=Oi(()=>{if(!o?.length)return e;let w=new Set(e.map((b)=>b.id)),h=o.filter((b)=>!w.has(b.id));return[...e,...h.map((b)=>({...b,source:"remote"}))]},[e,o]),u=ct((w,h,b,k,y,E,R)=>{t((C)=>[...C,{id:w,snippet:h,note:b,createdAt:new Date().toISOString(),filePath:k,context:y,...E?.length?{images:E}:{},...R?{canvasFile:R}:{}}])},[t]),d=ct((w,h,b)=>{u(ve(),w,h,b)},[u]),f=ct((w,h)=>{t((b)=>b.map((k)=>k.id===w?{...k,note:h}:k))},[t]),p=ct((w)=>{if(!e.some((h)=>h.id===w))return;hr(w),t((h)=>h.filter((b)=>b.id!==w)),a((h)=>h===w?null:h)},[e,t]),m=ct((w,h)=>{t((b)=>b.map((k)=>k.id===w?{...k,images:[...k.images||[],h]}:k))},[t]),v=ct((w,h)=>{t((b)=>b.map((k)=>k.id===w?{...k,images:(k.images||[]).filter((y)=>y!==h)}:k))},[t]),g=ct(()=>{hr(),t([]),r(""),a(null),s?.()},[t,r,s]);return{annotations:c,generalNote:n,setGeneralNote:r,activeAnnotationId:l,setActiveAnnotationId:a,addAnnotation:d,addAnnotationWithId:u,updateAnnotation:f,removeAnnotation:p,addAnnotationImage:m,removeAnnotationImage:v,clearAll:g,isReadOnly:i}}import{useAnnotations as Xe}from"@fabrika/annotations/runtime";import{jsxDEV as dt,Fragment as Bi}from"react/jsx-dev-runtime";function fo({hasContent:e,onSubmit:t,onSubmitEmpty:n,notice:r,secondaryAction:o,placeholder:i="General notes...",submitLabel:s="Submit",emptyLabel:l="Submit without feedback"}){let{generalNote:a,setGeneralNote:c}=Xe();return dt(Bi,{children:[dt("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:dt("textarea",{value:a,onChange:(u)=>c(u.currentTarget.value),className:"w-full bg-transparent text-[13px] font-body text-text-primary resize-none leading-relaxed p-0 border-none ring-0 shadow-none outline-none focus:outline-none focus:ring-0 focus:border-none placeholder:text-text-disabled min-h-[40px]",placeholder:i,onInput:(u)=>Ze(u.currentTarget,40),ref:(u)=>{if(u)Ze(u,40)}},void 0,!1,void 0,this)},void 0,!1,void 0,this),r,dt("div",{className:"px-4 py-3 border-t border-border-subtle flex-shrink-0",children:e?dt("div",{className:"flex gap-2",children:[o,dt("button",{onClick:t,className:"flex-1 py-2 rounded-lg font-body text-[13px] font-medium transition-all bg-btn-primary text-btn-primary-text hover:opacity-90 hover:-translate-y-px shadow-sm",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this):dt("button",{onClick:n,className:"w-full py-2 rounded-lg font-body text-[13px] font-medium border border-border-medium text-text-secondary hover:text-text-primary hover:border-border-hover hover:bg-bg-input transition-all",children:l},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useAnnotationHost as _i}from"@fabrika/annotations/runtime";import{useCallback as Be,useEffect as ji,useRef as mo,useState as ho}from"react";import{jsxDEV as me}from"react/jsx-dev-runtime";function go(e){if(e.startsWith("/s/")||e.startsWith("http://")||e.startsWith("https://"))return e;return`/api/uploads/${e.split("/").pop()}`}async function qi(e,t){let n=e.uploadUrl;if(!n)return null;let r=new FormData;r.append("image",t);try{let i=await(await fetch(n(),{method:"POST",body:r})).json();if(e.isShared)return i.url||null;return i.path||null}catch{return null}}function Ut({note:e,onNoteChange:t,images:n,onAddImage:r,onRemoveImage:o,sessionId:i,placeholder:s="Add your note...",autoFocus:l=!1,autoResize:a=!1,readOnly:c=!1,onKeyDown:u,onTextareaClick:d,textareaRef:f,textareaClassName:p,textareaStyle:m,minHeight:v,attachButton:g="always",openFilePickerRef:w}){let h=_i(),b=!c&&Wt(h),[k,y]=ho(!1),[E,R]=ho(!1),[C,M]=ho(!1),L=mo(0),B=mo(null),j=mo(null),W=Be(()=>j.current?.click(),[]);if(w)w.current=W;let de=Be((A)=>{if(B.current=A,f)f.current=A;if(A&&a)Ze(A,v)},[f,a,v]);ji(()=>{if(l&&B.current){let A=B.current;if(A.focus(),A.value)A.setSelectionRange(A.value.length,A.value.length)}},[l]);let N=Be(async(A)=>{if(!A.type.startsWith("image/"))return;R(!0);try{let P=await qi(h,A);if(P)r(P)}finally{R(!1)}},[h,r]),_=Be((A)=>{for(let P of A.clipboardData?.items??[])if(P.type.startsWith("image/")){A.preventDefault();let Y=P.getAsFile();if(Y)N(Y);return}},[N]),z=Be((A)=>{if(A.preventDefault(),L.current++,L.current===1)y(!0)},[]),X=Be((A)=>{A.preventDefault()},[]),G=Be((A)=>{if(A.preventDefault(),L.current--,L.current===0)y(!1)},[]),J=Be((A)=>{A.preventDefault(),L.current=0,y(!1);for(let P of A.dataTransfer?.files??[])if(P.type.startsWith("image/"))N(P)},[N]),V=Be((A)=>{if(t(A.currentTarget.value),a)A.currentTarget.style.height="auto",A.currentTarget.style.height=(v?Math.max(v,A.currentTarget.scrollHeight):A.currentTarget.scrollHeight)+"px"},[t,a,v]),O="w-full bg-transparent text-[13px] font-body text-text-primary resize-none focus:outline-none leading-relaxed p-0 border-none",Z={width:"100%",background:"transparent",border:"none",color:"var(--color-text-primary)",fontFamily:"'Inter', sans-serif",fontSize:"13px",lineHeight:"1.5",outline:"none",...a?{resize:"none",overflow:"hidden"}:{resize:"vertical"}},ue=b&&(g==="always"||g==="on-focus"&&C);return me("div",{style:{position:"relative"},onDragEnter:b?z:void 0,onDragOver:b?X:void 0,onDragLeave:b?G:void 0,onDrop:b?J:void 0,children:[me("textarea",{ref:de,value:e,onChange:c?void 0:V,onPaste:b?_:void 0,onKeyDown:u,onClick:d,onFocus:()=>M(!0),onBlur:()=>{setTimeout(()=>M(!1),150)},readOnly:c,placeholder:s,className:p??O,style:m??Z,rows:a?1:void 0},void 0,!1,void 0,this),b&&me("input",{ref:j,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:(A)=>{let P=A.currentTarget.files;if(P)for(let Y of P)N(Y);A.currentTarget.value=""}},void 0,!1,void 0,this),(n.length>0||ue)&&me("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap",marginTop:"6px",alignItems:"center"},children:[n.map((A)=>me("div",{style:{position:"relative",width:"56px",height:"56px",borderRadius:"6px",overflow:"hidden",border:"1px solid var(--color-border-subtle)",flexShrink:0},children:[me("img",{src:go(A),alt:"",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}},void 0,!1,void 0,this),!c&&me("button",{onClick:(P)=>{P.stopPropagation(),o(A)},style:{position:"absolute",top:"2px",right:"2px",width:"16px",height:"16px",borderRadius:"50%",background:"rgba(0,0,0,0.6)",color:"white",border:"none",cursor:"pointer",fontSize:"11px",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:1,padding:0},title:"Remove image",children:"×"},void 0,!1,void 0,this)]},A,!0,void 0,this)),ue&&me(Rn,{onClick:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this),E&&me("div",{style:{fontSize:"11px",color:"var(--color-text-tertiary)",fontFamily:"'Inter', sans-serif",marginTop:"4px"},children:"Uploading..."},void 0,!1,void 0,this),k&&me("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",background:"var(--color-highlight-bg)",opacity:0.9,border:"2px dashed var(--color-highlight-border)",borderRadius:"6px",zIndex:10,pointerEvents:"none",fontSize:"12px",fontFamily:"'Inter', sans-serif",color:"var(--color-text-secondary)"},children:"Drop image"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Rn({onClick:e,size:t=16}){return me("button",{onClick:(n)=>{n.stopPropagation(),e()},style:{width:`${t*2}px`,height:`${t*2}px`,borderRadius:"6px",border:"none",background:"transparent",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--color-text-tertiary)",flexShrink:0,transition:"color 0.15s"},title:"Attach image",onMouseEnter:(n)=>{n.currentTarget.style.color="var(--color-text-secondary)"},onMouseLeave:(n)=>{n.currentTarget.style.color="var(--color-text-tertiary)"},children:me("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[me("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"},void 0,!1,void 0,this),me("circle",{cx:"8.5",cy:"8.5",r:"1.5"},void 0,!1,void 0,this),me("polyline",{points:"21 15 16 10 5 21"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function xo({images:e}){if(!e.length)return null;return me("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap",marginTop:"6px"},children:e.map((t)=>me("div",{style:{width:"56px",height:"56px",borderRadius:"6px",overflow:"hidden",border:"1px solid var(--color-border-subtle)",flexShrink:0},children:me("img",{src:go(t),alt:"",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}},void 0,!1,void 0,this)},t,!1,void 0,this))},void 0,!1,void 0,this)}import{SessionContext as zi}from"@fabrika/annotations/runtime";import{useContext as Vi,useEffect as Wi,useRef as Ui}from"react";import{jsxDEV as le,Fragment as gr}from"react/jsx-dev-runtime";function Gi(e){let t=Vt(e);return t.length>80?t.slice(0,80)+"...":t}function Gt({annotations:e,readOnly:t=!1,onSelect:n,onReveal:r,includedRemoteIds:o,onToggleRemoteId:i}){let{updateAnnotation:s,removeAnnotation:l,addAnnotationImage:a,removeAnnotationImage:c,activeAnnotationId:u,setActiveAnnotationId:d}=Xe(),f=Vi(zi),p=Ui(new Map);Wi(()=>{if(t||!u)return;let b=p.current.get(u);if(b)b.scrollIntoView({behavior:"smooth",block:"nearest"})},[u,t]);let m=(b)=>{d(b),yt(b,!0)},v=(b)=>{d(null),yt(b,!1)},g=(b)=>{if(b.id===u){d(null);return}d(b.id),n?.(b)},w=!!o&&!!i,h=(b)=>{let k=w&&b.source==="remote";return le("div",{ref:(y)=>{if(y)p.current.set(b.id,y);else p.current.delete(b.id)},className:`group/ann relative px-3 py-2.5 transition-colors duration-150 ${t?"cursor-pointer ":""}${u===b.id?"bg-highlight-selected":k?"bg-accent-purple-muted/30 hover:bg-accent-purple-muted/50":"odd:bg-bg-elevated-half hover:bg-bg-input"}`,onMouseEnter:()=>m(b.id),onMouseLeave:()=>v(b.id),onClick:()=>g(b),children:[k&&b.author&&le("div",{className:"flex items-center gap-1.5 mb-1.5",children:[le("input",{type:"checkbox",checked:o.has(b.id),onChange:(y)=>{y.stopPropagation(),i(b.id)},onClick:(y)=>y.stopPropagation(),className:"accent-accent-purple flex-shrink-0",title:"Include in submission"},void 0,!1,void 0,this),le("span",{className:"inline-flex items-center justify-center w-4 h-4 rounded-full bg-accent-purple text-white text-[9px] font-medium uppercase",children:b.author.name.charAt(0)},void 0,!1,void 0,this),le("span",{className:"text-[11px] font-medium text-accent-purple font-body",children:b.author.name},void 0,!1,void 0,this),le("span",{className:"text-[10px] text-text-tertiary font-body uppercase tracking-widest",children:"Remote"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),le("div",{className:"text-[11px] text-text-tertiary italic line-clamp-2 mb-1.5 leading-snug font-body border-l-2 border-border-medium pl-2",children:Gi(b.snippet)},void 0,!1,void 0,this),t?le(gr,{children:[b.note.trim()&&le("div",{className:"text-[13px] font-body text-text-primary leading-relaxed",children:b.note},void 0,!1,void 0,this),le(xo,{images:b.images||[]},void 0,!1,void 0,this)]},void 0,!0,void 0,this):k?le("div",{className:"text-[13px] font-body text-text-primary leading-relaxed whitespace-pre-wrap",children:b.note},void 0,!1,void 0,this):le("div",{onClick:(y)=>y.stopPropagation(),children:le(Ut,{note:b.note,onNoteChange:(y)=>s(b.id,y),images:b.images||[],onAddImage:(y)=>a(b.id,y),onRemoveImage:(y)=>c(b.id,y),sessionId:f,autoResize:!0,minHeight:20,textareaClassName:"w-full bg-transparent text-[13px] font-body text-text-primary resize-none focus:outline-none leading-relaxed p-0 border-none min-h-[20px]",textareaStyle:{height:"auto",overflow:"hidden"},placeholder:"Add your note...",attachButton:"on-focus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),le("div",{className:"absolute top-1.5 right-1.5 opacity-0 group-hover/ann:opacity-100 transition-opacity duration-100 flex items-center gap-0.5",children:[r&&le("button",{onClick:(y)=>{y.stopPropagation(),r(b)},className:"w-5 h-5 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-input transition-colors",title:"Scroll to annotation",children:le("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[le("circle",{cx:"12",cy:"12",r:"3"},void 0,!1,void 0,this),le("path",{d:"M12 2v4M12 18v4M2 12h4M18 12h4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),!t&&!k&&le("button",{onClick:(y)=>{y.stopPropagation(),l(b.id)},className:"w-5 h-5 flex items-center justify-center rounded text-text-tertiary hover:text-accent-red hover:bg-accent-red-muted transition-colors",title:"Delete annotation",children:le("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[le("polyline",{points:"3 6 5 6 21 6"},void 0,!1,void 0,this),le("path",{d:"M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},b.id,!0,void 0,this)};return le(gr,{children:e.map(h)},void 0,!1,void 0,this)}function Kt(e){let t=[],n=e.snippet.trim(),r=e.context,o=Vt(n);if(o!==n)t.push(`> ${o}`);else if(e.filePath&&r&&r.lineStart!=null){let l=r.lineStart,a=r.lineEnd??l,c=n.split(`
60
+ `);if(n.length<30&&l===a&&(r.before||r.after)){let d=hn(e);t.push(`> L${l}: ${d}`)}else if(c.length<=6)for(let d=0;d<c.length;d++)t.push(`> ${l+d} | ${c[d]}`);else{for(let d=0;d<3;d++)t.push(`> ${l+d} | ${c[d]}`);t.push(`> ... (${c.length} lines)`);for(let d=c.length-3;d<c.length;d++)t.push(`> ${l+d} | ${c[d]}`)}}else{let l=hn(e);if(n.split(`
61
+ `).length<=3)t.push(`> ${l.split(`
62
62
  `).join(`
63
- > `)}`);else{let G=J.split(`
64
- `);Q.push(`> ${G[0]}`),Q.push(`> ... (${G.length} lines)`),Q.push(`> ${G[G.length-1]}`)}}if($.note.trim())Q.push(""),Q.push($.note.trim());let Z=[...$.images??[]],q=new Set(Z);for(let U of $.attachments??[]){if(q.has(U.url))continue;q.add(U.url),Z.push(U.url)}if(Z.length){Q.push("");for(let U of Z)Q.push(`![screenshot](${U})`)}return Q.push(""),Q.join(`
65
- `)}function U5($,Q){let J=new Map;for(let[X,Y]of $)if(Q.has(X))J.set(X,Y);return J}function K5($,Q){if(!$||$.length===0)return!1;return $.every((J)=>Q.has(J))}function l0($,Q,J,X,Y){let Z=[],q=$.filter((H)=>H.source!=="remote"||Y&&Y.has(H.id)),U=q.filter((H)=>H.filePath===I1),G=q.filter((H)=>!H.filePath),K=q.filter((H)=>H.filePath&&H.filePath!==I1),_=J?Array.from(J.values()).filter((H)=>P2(H)):[],z=X?Array.from(X.values()).filter((H)=>H.markdown.trim()):[];if(_.length>0||z.length>0){Z.push("## Responses"),Z.push("");for(let H of _)Z.push(R6(H));for(let H of z)Z.push(H.markdown.trim()),Z.push("")}if(U.length>0){Z.push("## Annotations on agent response"),Z.push("");for(let H of U)Z.push(d0(H))}if(G.length>0){Z.push("## Canvas annotations"),Z.push("");let H=new Map;for(let B of G){let A=B.canvasFile||"";if(!H.has(A))H.set(A,[]);H.get(A).push(B)}let N=[...H.keys()].sort(),O=N.length>1||N.length===1&&N[0]!=="";for(let B of N){let A=H.get(B);if(O&&B)Z.push(`### ${B.replace(/\.jsx$/,"")}`),Z.push("");let T=D6(A);Z.push(z3(T))}}if(K.length>0){let H={};for(let N of K){let O=N.filePath;if(!H[O])H[O]=[];H[O].push(N)}Z.push("## File annotations"),Z.push("");for(let[N,O]of Object.entries(H)){Z.push(`### ${N}`),Z.push("");for(let B of O)Z.push(d0(B))}}if(Q.trim())Z.push("## General notes"),Z.push(""),Z.push(Q.trim()),Z.push("");return Z.join(`
63
+ > `)}`);else{let a=n.split(`
64
+ `);t.push(`> ${a[0]}`),t.push(`> ... (${a.length} lines)`),t.push(`> ${a[a.length-1]}`)}}if(e.note.trim())t.push(""),t.push(e.note.trim());let i=[...e.images??[]],s=new Set(i);for(let l of e.attachments??[]){if(s.has(l.url))continue;s.add(l.url),i.push(l.url)}if(i.length){t.push("");for(let l of i)t.push(`![screenshot](${l})`)}return t.push(""),t.join(`
65
+ `)}import{SessionContext as Ki,useAnnotationHost as Zi}from"@fabrika/annotations/runtime";import{useCallback as Sn,useContext as Xi,useEffect as Ji,useMemo as vr,useRef as Cn,useState as wt}from"react";import{createPortal as Yi}from"react-dom";function xr(e){let t=/^(\d+(?:\.\d+)?)px$/.exec(e.trim());return t?Number(t[1]):void 0}function br(e,t,n=280){let o=t||document.body,i=e.getBoundingClientRect(),s=o.getBoundingClientRect(),l=o===document.body?0:o.scrollTop,a=i.bottom-s.top+l+8,c=Math.max(0,Math.min(i.left-s.left,s.width-n-12));return o.style.position="relative",{style:{position:"absolute",top:`${a}px`,left:`${c}px`},parent:o}}import{jsxDEV as he,Fragment as Qi}from"react/jsx-dev-runtime";function kr({anchorEl:e,scrollContainer:t,onClose:n,ignoreSelector:r,zIndex:o="50",padding:i="12px",width:s="280px",children:l}){let a=Cn(null),c=Cn(n);c.current=n;let{style:u,parent:d}=br(e,t,xr(s));return Ji(()=>{let f=setTimeout(()=>{let p=(m)=>{if(a.current&&!a.current.contains(m.target)){if(r&&m.target.closest?.(r))return;c.current(),document.removeEventListener("mousedown",p)}};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},0);return()=>clearTimeout(f)},[r]),Yi(he("div",{ref:a,style:{...u,zIndex:o,width:s,background:"var(--color-bg-elevated)",border:"1px solid var(--color-border-hover)",borderRadius:"8px",boxShadow:"0 4px 12px var(--color-shadow)",padding:i,fontFamily:"'Inter', sans-serif"},children:l},void 0,!1,void 0,this),d)}var wr=[{label:"Clarity",items:["Unclear","Why?","Needs example","Missing context"]},{label:"Scope",items:["Overkill","Out of scope","Important","Risky"]},{label:"Action",items:["Simplify","Rethink","Expand on this","Skip this"]}],yr=wr.flatMap((e)=>e.items);function bo({anchorEl:e,scrollContainer:t,snippet:n,truncateAt:r=100,header:o,initialNote:i="",initialImages:s,onConfirm:l,onCancel:a,onDelete:c}){let u=Xi(Ki),d=Zi(),f=Wt(d),p=i!==""||!!c,[m,v]=wt(i),[g,w]=wt(s||[]),[h,b]=wt(null),[k,y]=wt(p),[E,R]=wt(!1),C=Cn(null),M=Cn(null),L=Sn(()=>{if(m.trim()||g.length>0)l(m.trim(),g);else if(p&&c)c();else a()},[m,g,l,a,p,c]),B=Sn(()=>{if(p){if(!m.trim()&&g.length===0&&c){c(),a();return}l(m,g);return}a()},[m,g,p,l,a,c]),j=!p,W=m.trim().length>0?yr.filter((T)=>T.toLowerCase().startsWith(m.trim().toLowerCase())):yr,de=!j||k?[]:W.length===1&&W[0]?.toLowerCase()===m.trim().toLowerCase()?[]:W,N=new Set(de),_=wr.map((T)=>({label:T.label,items:T.items.filter((H)=>N.has(H))})).filter((T)=>T.items.length>0),z=_.map((T)=>T.items),X=(T)=>z[T]?.length??0,G=z.flat(),J=vr(()=>{if(h===null)return 0;let T=0;for(let H=0;H<z.length;H++){if(h<T+X(H))return H;T+=X(H)}return 0},[h,z]),V=vr(()=>{if(h===null)return 0;let T=0;for(let H=0;H<J;H++)T+=X(H);return h-T},[h,J,z]),O=(T,H)=>{let F=0;for(let oe=0;oe<T;oe++)F+=X(oe);return F+H},[Z,ue]=wt(m);if(m!==Z)ue(m),b(null),y(p);let A=Sn((T)=>{v(T)},[]),P=n.length>r?n.slice(0,r)+"...":n,Y=Sn((T)=>{if(G.length>0&&(T.key==="ArrowDown"||T.key==="ArrowUp"||T.key==="ArrowLeft"||T.key==="ArrowRight")){if(T.preventDefault(),h===null){b(0);return}if(T.key==="ArrowDown"){let F=Math.min(V+1,X(J)-1);b(O(J,F))}else if(T.key==="ArrowUp"){let F=Math.max(V-1,0);b(O(J,F))}else if(T.key==="ArrowRight"){let F=Math.min(J+1,z.length-1),oe=Math.min(V,X(F)-1);b(O(F,oe))}else if(T.key==="ArrowLeft"){let F=Math.max(J-1,0),oe=Math.min(V,X(F)-1);b(O(F,oe))}return}let H=h===null?void 0:G[h];if(H!==void 0){if(T.key==="Tab"){T.preventDefault(),A(H);return}if(T.key==="Enter"&&!T.shiftKey){T.preventDefault(),l(H,g);return}}if(T.key==="Enter"&&!T.shiftKey){T.preventDefault(),L();return}if(T.key==="Escape")if(G.length>0&&!k)y(!0);else if(p)B();else a()},[G,h,V,J,z,O,A,l,g,L,k,p,B,a]);return he(kr,{anchorEl:e,scrollContainer:t,onClose:p?B:a,ignoreSelector:p?"[data-annotation-id]":void 0,zIndex:p?"60":"50",padding:p?"10px 12px":"12px",width:"420px",children:[!p&&(o??he("div",{style:{fontSize:"11px",color:"var(--color-text-tertiary)",fontStyle:"italic",marginBottom:"8px",lineHeight:"1.4",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:["“",P,"”"]},void 0,!0,void 0,this)),he(Ut,{note:m,onNoteChange:v,images:g,onAddImage:(T)=>w((H)=>[...H,T]),onRemoveImage:(T)=>w((H)=>H.filter((F)=>F!==T)),sessionId:u,autoFocus:!0,autoResize:p,textareaRef:C,onKeyDown:Y,attachButton:"none",openFilePickerRef:M,textareaStyle:p?{width:"100%",background:"transparent",border:"none",color:"var(--color-text-primary)",fontFamily:"'Inter', sans-serif",fontSize:"13px",lineHeight:"1.5",resize:"none",outline:"none",overflow:"hidden"}:{width:"100%",minHeight:"60px",background:"transparent",border:"none",color:"var(--color-text-primary)",fontFamily:"'Inter', sans-serif",fontSize:"13px",lineHeight:"1.5",resize:"vertical",outline:"none"},placeholder:"Add your note..."},void 0,!1,void 0,this),he("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:p?"6px":"8px"},children:[f&&he(Rn,{onClick:()=>M.current?.(),size:14},void 0,!1,void 0,this),he("div",{style:{flex:1}},void 0,!1,void 0,this),p?he("button",{onClick:()=>{if(c)c();a()},onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{fontSize:"11px",color:E?"var(--color-accent-red)":"var(--color-text-tertiary)",background:"none",border:"none",cursor:"pointer",padding:"2px 0",fontFamily:"'Inter', sans-serif"},children:"Delete"},void 0,!1,void 0,this):he(Qi,{children:[he("button",{onClick:a,style:{fontSize:"11px",color:"var(--color-text-tertiary)",background:"none",border:"none",cursor:"pointer",padding:"4px 12px",fontFamily:"'Inter', sans-serif"},children:"Cancel"},void 0,!1,void 0,this),he("button",{onClick:L,style:{fontSize:"11px",fontWeight:500,padding:"4px 12px",borderRadius:"6px",background:"var(--color-highlight-bg)",color:"var(--color-text-primary)",border:"1px solid var(--color-highlight-border)",cursor:"pointer",fontFamily:"'Inter', sans-serif"},children:"Add"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G.length>0&&he("div",{style:{marginTop:"6px",borderTop:"1px solid var(--color-border-subtle)",paddingTop:"8px",display:"flex",gap:"4px"},children:_.map((T)=>he("div",{style:{flex:1},children:[he("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--color-text-disabled)",textTransform:"uppercase",letterSpacing:"0.05em",padding:"2px 6px",marginBottom:"2px",fontFamily:"'Inter', sans-serif"},children:T.label},void 0,!1,void 0,this),T.items.map((H)=>{let F=G.indexOf(H);return he("div",{onMouseDown:(oe)=>{oe.preventDefault(),oe.stopPropagation(),A(H)},onMouseEnter:()=>b(F),style:{padding:"3px 6px",fontSize:"12px",borderRadius:"4px",fontFamily:"'Inter', sans-serif",color:F===h?"var(--color-text-primary)":"var(--color-text-secondary)",background:F===h?"var(--color-highlight-selected)":"transparent",cursor:"pointer"},children:[he("span",{style:{fontWeight:500},children:H.slice(0,m.trim().length)},void 0,!1,void 0,this),H.slice(m.trim().length)]},H,!0,void 0,this)})]},T.label,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Ie({anchorEl:e,scrollContainer:t,snippet:n,truncateAt:r,header:o,onAdd:i,onCancel:s}){return he(bo,{anchorEl:e,scrollContainer:t,snippet:n,truncateAt:r,header:o,onConfirm:(l,a)=>i(l,a),onCancel:s},void 0,!1,void 0,this)}function ut({anchorEl:e,scrollContainer:t,initialNote:n,initialImages:r,onUpdate:o,onDelete:i,onClose:s}){return he(bo,{anchorEl:e,scrollContainer:t,snippet:"",initialNote:n,initialImages:r,onConfirm:(l,a)=>{o(l,a),s()},onDelete:i,onCancel:s},void 0,!1,void 0,this)}import{useEffect as ea,useRef as vo,useState as Er}from"react";import{jsxDEV as ta}from"react/jsx-dev-runtime";function yo(e){let{containerRef:t,restoreKey:n,shape:r="rect",canvasFile:o,scrollContainer:i}=e,{addAnnotationWithId:s}=Xe(),[l,a]=Er(null),[c,u]=Er(!1),d=vo(s);d.current=s;let f=vo(o);f.current=o;let p=vo(r);return p.current=r,ea(()=>{let v=t.current;if(!v)return;let g=null;function w(R,C){let M=R.getBoundingClientRect();return ao(M,C.clientX-M.left,C.clientY-M.top)}function h(){if(!g)return;let{host:R,pointerId:C}=g;if(R.hasPointerCapture(C))R.releasePointerCapture(C);R.removeEventListener("pointermove",k),R.removeEventListener("pointerup",y),R.removeEventListener("pointercancel",E),g=null,u(!1)}function b(R){if(g||R.button!==0)return;let C=R.target;if(!(C instanceof Element))return;if(C.closest("[data-block-comment-btn]"))return;if(C.closest("[data-annotation-id]"))return;let M=C.closest(`[${io}]`);if(!(M instanceof HTMLElement)||!v?.contains(M))return;let L=M.closest("[data-md='image']")?.getAttribute("data-md-src");if(!L)return;let B=w(M,R);if(!B)return;R.preventDefault(),M.setPointerCapture(R.pointerId);let j=ve(),W=wn({...B,w:0,h:0},p.current,j);W.classList.add("ann-region-draft"),M.appendChild(W),g={pointerId:R.pointerId,host:M,src:L,start:B,shape:p.current,overlay:W,id:j},M.addEventListener("pointermove",k),M.addEventListener("pointerup",y),M.addEventListener("pointercancel",E),u(!0)}function k(R){if(!g||g.pointerId!==R.pointerId)return;let C=w(g.host,R);if(!C)return;kn(g.overlay,vn(g.start,C))}function y(R){if(!g||g.pointerId!==R.pointerId)return;let{overlay:C,id:M,src:L,shape:B}=g,j=w(g.host,R)??g.start,W=vn(g.start,j);if(h(),!lo(W)){C.remove();return}kn(C,W);let de={src:L,shape:B,...W};a({overlay:C,id:M,snippet:zt.format(de),label:yn(de)})}function E(R){if(!g||g.pointerId!==R.pointerId)return;g.overlay.remove(),h()}return v.addEventListener("pointerdown",b),()=>{if(v.removeEventListener("pointerdown",b),g)g.overlay.remove(),h()}},[n]),{popovers:l?ta(Ie,{anchorEl:l.overlay,scrollContainer:i,snippet:l.label,truncateAt:80,onAdd:(v,g)=>{l.overlay.classList.remove("ann-region-draft"),d.current(l.id,l.snippet,v,void 0,void 0,g,f.current),a(null)},onCancel:()=>{l.overlay.remove(),a(null)}},void 0,!1,void 0,this):null,isDrawing:c,isPopoverOpen:!!l}}import{useCallback as Ar,useEffect as Nn,useRef as pt,useState as Rr}from"react";import{jsxDEV as ko,Fragment as na}from"react/jsx-dev-runtime";function Je(e){let{containerRef:t,restoreKey:n,restoreAnnotations:r,extractContext:o,filePath:i,canvasFile:s,scrollContainer:l}=e,{annotations:a,addAnnotationWithId:c,removeAnnotation:u,updateAnnotation:d,addAnnotationImage:f,removeAnnotationImage:p,activeAnnotationId:m,setActiveAnnotationId:v}=Xe(),[g,w]=Rr(null),[h,b]=Rr(null),k=pt(o);k.current=o;let y=pt(i);y.current=i;let E=pt(s);E.current=s;let R=pt(c);R.current=c;let C=pt(m);C.current=m;let M=pt(v);M.current=v;let L=r.length;Nn(()=>{if(!t.current)return;let N=setTimeout(()=>{if(t.current)po(t.current,r)},50);return()=>clearTimeout(N)},[n,L]);let B=pt(null);Nn(()=>{Ft(m,B.current),B.current=m},[m]),Nn(()=>{let N=t.current;if(!N)return;let _=(G)=>{let J=G.target.closest("[data-annotation-id]");if(!J)return;G.stopPropagation();let V=J.getAttribute("data-annotation-id");if(V===C.current)w({anchorEl:J,annId:V});else M.current(V)},z=(G)=>{let J=G.target.closest("[data-annotation-id]");if(J)M.current(J.getAttribute("data-annotation-id"))},X=(G)=>{let J=G.target.closest("[data-annotation-id]"),V=G.relatedTarget?.closest?.("[data-annotation-id]");if(J&&!V&&!document.getElementById("ann-inline-popover"))M.current(null)};return N.addEventListener("click",_),N.addEventListener("mouseover",z),N.addEventListener("mouseout",X),()=>{N.removeEventListener("click",_),N.removeEventListener("mouseover",z),N.removeEventListener("mouseout",X)}},[n]),Nn(()=>{let N=()=>j();return document.addEventListener("mouseup",N),()=>document.removeEventListener("mouseup",N)},[]);let j=Ar(()=>{let N=window.getSelection();if(!N||N.isCollapsed||!N.toString().trim())return;if(!t.current)return;let _=N.getRangeAt(0);if(!t.current.contains(_.startContainer))return;if(_.startContainer.parentElement?.closest?.("[data-annotation-id]"))return;let z=dr(_).trim();if(z.length<2)return;let X=k.current(_),G=_.cloneRange(),J=`__pending_${Date.now()}`;try{Ue(G,J)}catch{}window.getSelection()?.removeAllRanges();let V=document.querySelectorAll(`[data-annotation-id="${J}"]`),O=V[V.length-1];if(!O)return;b({anchorEl:O,tempId:J,snippet:z,ctx:X})},[]),W=Ar((N,_,z,X)=>{b({anchorEl:N,tempId:_,snippet:z,ctx:X})},[]);return{popovers:ko(na,{children:[g&&(()=>{let N=a.find((_)=>_.id===g.annId);if(!N)return null;return ko(ut,{anchorEl:g.anchorEl,scrollContainer:l,initialNote:N.note,initialImages:N.images,onUpdate:(_,z)=>{d(g.annId,_);let X=N.images||[];for(let G of z)if(!X.includes(G))f(g.annId,G);for(let G of X)if(!z.includes(G))p(g.annId,G)},onDelete:()=>{u(g.annId),v(null)},onClose:()=>w(null)},void 0,!1,void 0,this)})(),h&&ko(Ie,{anchorEl:h.anchorEl,scrollContainer:l,snippet:h.snippet,truncateAt:80,onAdd:(N,_)=>{let z=ve();Bt(h.tempId,z),R.current(z,h.snippet,N,y.current,h.ctx,_,E.current),b(null)},onCancel:()=>{jt(h.tempId),b(null)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),openCreatePopover:W,isPopoverOpen:!!(g||h)}}import{AnnotationCtx as ca,AnnotationHostContext as da}from"@fabrika/annotations/runtime";import{useCallback as At,useEffect as Mr,useMemo as ua,useRef as Ir,useState as Rt}from"react";function Pe(e,t,n="current"){let r=`canvas:${e}:rev:${t}`;return n==="next"?`${r}:next-draft`:r}function Et(e,t){return`${Pe(e,t)}:draft-handled`}function ft(e,t,n){try{e.removeItem(Pe(t,n)),e.removeItem(Et(t,n))}catch{}}function wo(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t==="object"&&t!==null&&!Array.isArray(t)?t:null}catch{return null}}function oa(e){if(!Array.isArray(e)||e.length<2)return!1;let t=e[1];if(typeof t!=="object"||t===null||Array.isArray(t))return!1;let n=Reflect.get(t,"note");if(typeof n==="string"&&n.trim().length>0)return!0;let r=Reflect.get(t,"value");if(typeof r==="string")return r.trim().length>0;if(Array.isArray(r))return r.length>0;return r!==null&&r!==void 0}function Eo(e){if(!e)return!1;let t=Reflect.get(e,"annotations");if(Array.isArray(t)&&t.length>0)return!0;let n=Reflect.get(e,"generalNote");if(typeof n==="string"&&n.trim().length>0)return!0;let r=Reflect.get(e,"responses");return Array.isArray(r)&&r.some(oa)}function Tn(e,t,n,r){try{let o=Pe(t,n);if(Eo(wo(e.getItem(o))))return e.setItem(Et(t,n),"1"),null;if(e.getItem(Et(t,n))!==null)return null;let i=r.filter((s)=>s.revision<n).sort((s,l)=>l.revision-s.revision);for(let s of i){if(s.hasFeedback){let a=Pe(t,s.revision,"next"),c=wo(e.getItem(a));if(!Eo(c))return null;return e.setItem(o,JSON.stringify({...c,feedbackEntries:[]})),e.setItem(Et(t,n),"1"),e.removeItem(a),s.revision}let l=wo(e.getItem(Pe(t,s.revision)));if(!Eo(l)){if(e.getItem(Et(t,s.revision))!==null)return null;continue}return e.setItem(o,JSON.stringify({...l,feedbackEntries:[]})),e.setItem(Et(t,n),"1"),s.revision}}catch{}return null}function Ao(e,t){let n=new Map;for(let[r,o]of e)if(t.has(r))n.set(r,o);return n}function Ro(e,t){if(!e||e.length===0)return!1;return e.every((n)=>t.has(n))}function Zt(e,t,n,r,o){let i=[],s=e.filter((p)=>p.source!=="remote"||o&&o.has(p.id)),l=s.filter((p)=>p.filePath===Se),a=s.filter((p)=>!p.filePath),c=s.filter((p)=>p.filePath&&p.filePath!==Se),u=n?Array.from(n.values()).filter((p)=>Ln(p)):[],d=r?Array.from(r.values()).filter((p)=>p.markdown.trim()):[];if(u.length>0||d.length>0){i.push("## Responses"),i.push("");for(let p of u)i.push(ra(p));for(let p of d)i.push(p.markdown.trim()),i.push("")}if(l.length>0){i.push("## Annotations on agent response"),i.push("");for(let p of l)i.push(Kt(p))}if(a.length>0){i.push("## Canvas annotations"),i.push("");let p=new Map;for(let g of a){let w=g.canvasFile||"";if(!p.has(w))p.set(w,[]);p.get(w).push(g)}let m=[...p.keys()].sort(),v=m.length>1||m.length===1&&m[0]!=="";for(let g of m){let w=p.get(g);if(v&&g)i.push(`### ${g.replace(/\.jsx$/,"")}`),i.push("");let h=sa(w);i.push(Nr(h))}}if(c.length>0){let p={};for(let m of c){let v=m.filePath;if(!p[v])p[v]=[];p[v].push(m)}i.push("## File annotations"),i.push("");for(let[m,v]of Object.entries(p)){i.push(`### ${m}`),i.push("");for(let g of v)i.push(Kt(g))}}if(t.trim())i.push("## General notes"),i.push(""),i.push(t.trim()),i.push("");return i.join(`
66
66
  `).trim()+`
67
- `}function P2($){if($.note?.trim())return!0;if($.value===null||$.value===void 0)return!1;if($.type==="text"&&!$.value.trim())return!1;if($.type==="checkbox"&&$.value.length===0)return!1;return!0}function U3($){let Q=[];for(let J of $.values()){if(!J.required)continue;if(J.value===null||J.value===void 0){Q.push(J);continue}if(J.type==="text"&&!J.value.trim()){Q.push(J);continue}if(J.type==="checkbox"&&J.value.length===0){Q.push(J);continue}}return Q}function K3($){let Q=[];for(let J of $.values())if(J.required&&!J.markdown.trim())Q.push(J);return Q}function r0($,Q){let J=U3($),X=K3(Q);return[...J.map((Y)=>Y.label),...X.map((Y)=>Y.label||Y.id)]}function R6($){let Q=[];switch(Q.push(`**${$.label}**`),$.type){case"radio":case"select":Q.push(`Answer: ${$.value}`);break;case"checkbox":for(let J of $.value)Q.push(`- [x] ${J}`);break;case"text":Q.push(""),Q.push($.value.trim());break;case"range":Q.push(`Answer: ${$.value}`);break}if($.note?.trim())Q.push(""),Q.push(`Note: ${$.note.trim()}`);return Q.push(""),Q.join(`
68
- `)}function D6($){let Q={label:"",annotations:[],children:new Map};for(let J of $){let X=J.context?.hierarchy||[],Y=Q;for(let Z of X){if(!Y.children.has(Z))Y.children.set(Z,{label:Z,annotations:[],children:new Map});Y=Y.children.get(Z)}Y.annotations.push(J)}return Q}function z3($,Q=0){let J=[];for(let X of $.annotations)J.push(d0(X));for(let[,X]of $.children){let Y=Q===0?"###":"####";J.push(`${Y} ${X.label}`),J.push(""),J.push(z3(X,Q+1))}return J.join(`
69
- `)}import{useAnnotations as T1}from"#canvas/runtime";import{jsxDEV as f6}from"react/jsx-dev-runtime";function N3($,Q,J){try{let X=localStorage.getItem(D1($,Q,J));if(!X)return null;return JSON.parse(X)}catch{return null}}function E6($,Q,J,X){try{localStorage.setItem(D1($,Q,J),JSON.stringify(X))}catch{}}function z5($){return{draft:$,responseIds:new Set,canvases:new Set}}function _5({sessionId:$,revision:Q,isReadOnly:J,draftPhase:X,remoteAnnotations:Y,canvasFiles:Z,loadState:q,saveState:U,children:G}){let K=!!q,_=K?null:N3($,Q,X),[z,W]=z0(()=>(_?.annotations??[]).map((b)=>({...b,source:b.source??"local"}))),H=W3(()=>{if(!Y||Y.length===0)return z;let b=new Set(z.map((S)=>S.id)),P=Y.filter((S)=>!b.has(S.id));return[...z,...P.map((S)=>({...S,source:"remote"}))]},[z,Y]),[N,O]=z0(()=>_?.generalNote??""),[B,A]=z0(null),[T,M]=z0(()=>_?.responses?new Map(_.responses):new Map),y=`${$}:${Q}:${X}`,L=H3(y);L.current=y;let[w,j]=z0(()=>z5(y)),[k,m]=z0(()=>_?.feedbackEntries?new Map(_.feedbackEntries):new Map),[D,v]=z0(!K);_3(()=>{let b=(P)=>{W((P?.annotations??[]).map((S)=>({...S,source:S.source??"local"}))),O(P?.generalNote??""),M(P?.responses?new Map(P.responses):new Map),m(P?.feedbackEntries?new Map(P.feedbackEntries):new Map),A(null)};if(K){let P=!1;return v(!1),q($,Q,X).then((S)=>{if(P)return;b(S),v(!0)}),()=>{P=!0}}b(N3($,Q,X)),v(!0);return},[$,Q,X,K,q]);let u=H3(null);_3(()=>{if(J&&X!=="next")return;if(!D)return;if(u.current)clearTimeout(u.current);let b={annotations:z,generalNote:N,responses:Array.from(T.entries()),feedbackEntries:Array.from(k.entries())},P=()=>{if(U)U($,Q,b,X);else E6($,Q,X,b)};if(X==="next"){P();return}return u.current=setTimeout(P,300),()=>{if(u.current)clearTimeout(u.current)}},[z,N,T,k,$,Q,J,X,D,U]);let d=y1((b,P,S,V,i,Q1,U1)=>{W((P1)=>[...P1,{id:b,snippet:P,note:S,createdAt:new Date().toISOString(),filePath:V,context:i,...Q1?.length?{images:Q1}:{},...U1?{canvasFile:U1}:{}}])},[]),K1=y1((b,P,S)=>{d(O1(),b,P,S)},[d]),R=y1((b,P)=>{W((S)=>S.map((V)=>V.id===b?{...V,note:P}:V))},[]),g=y1((b)=>{x6(b),W((P)=>P.filter((S)=>S.id!==b)),A((P)=>P===b?null:P)},[]),p=y1((b,P)=>{W((S)=>S.map((V)=>V.id===b?{...V,images:[...V.images||[],P]}:V))},[]),t=y1((b,P)=>{W((S)=>S.map((V)=>V.id===b?{...V,images:(V.images||[]).filter((i)=>i!==P)}:V))},[]),l=y1((b,P)=>{M((S)=>{let V=new Map(S);return V.set(b,P),V})},[]),o=y1((b)=>{j((P)=>{let S=P.draft===L.current?P:z5(L.current);if(S.responseIds.has(b))return S;return{...S,responseIds:new Set(S.responseIds).add(b)}})},[]),q1=y1((b)=>{j((P)=>{let S=P.draft===L.current?P:z5(L.current);if(S.canvases.has(b))return S;return{...S,canvases:new Set(S.canvases).add(b)}})},[]),X1=w.draft===y?w:null,z1=W3(()=>{if(!X1||!K5(Z,X1.canvases))return T;return U5(T,X1.responseIds)},[X1,Z,T]),M1=y1((b,P)=>{m((S)=>{let V=S.get(b);if(V&&V.markdown===P.markdown&&V.label===P.label&&V.required===P.required)return S;let i=new Map(S);return i.set(b,P),i})},[]),C=y1((b)=>{m((P)=>{if(!P.has(b))return P;let S=new Map(P);return S.delete(b),S})},[]),E=y1(()=>{for(let b of document.querySelectorAll("[data-annotation-id]"))B3(b);if(W([]),O(""),A(null),M(new Map),m(new Map),U)U($,Q,{annotations:[],generalNote:"",responses:[],feedbackEntries:[]},X);else if(X==="next")localStorage.removeItem(D1($,Q,X));else U0(localStorage,$,Q)},[$,Q,X,U]);return f6(m6.Provider,{value:{annotations:H,addAnnotation:K1,addAnnotationWithId:d,updateAnnotation:R,removeAnnotation:g,addAnnotationImage:p,removeAnnotationImage:t,generalNote:N,setGeneralNote:O,clearAll:E,activeAnnotationId:B,setActiveAnnotationId:A,responses:T,setResponse:l,submittableResponses:z1,registerResponse:o,registerCanvasRendered:q1,feedbackEntries:k,setFeedbackEntry:M1,removeFeedbackEntry:C,isReadOnly:J},children:G},void 0,!1,void 0,this)}function x6($){let Q=document.querySelectorAll(`[data-annotation-id="${$}"]`);for(let J of Q)B3(J)}function B3($){let Q=$.parentNode;if(!Q)return;if($.tagName!=="MARK"){Q.removeChild($);return}let J=document.createTextNode($.textContent||"");Q.replaceChild(J,$),Q.normalize()}import{useAnnotations as v1,useFeedback as PX,useCanvasFile as yX,useResponseRegistration as SX,AnnotationCtx as AX,SessionContext as wX,ActiveViewCtx as CX,CanvasFileCtx as bX}from"#canvas/runtime";import{useEffect as S3,useState as y0,useContext as L5,useMemo as e6,useCallback as M5}from"react";import{createContext as T3}from"react";var E1=T3({activeView:{type:"overview"},setActiveView:()=>{},openFiles:[],closeFile:()=>{},canvasFiles:[]}),S1=T3({currentRevision:1,selectedRevision:1,revisions:[],setSelectedRevision:()=>{},isReadOnly:!1,compareRevision:null,setCompareRevision:()=>{},agentWatching:!1});import{SessionContext as $$}from"#canvas/runtime";import{useEffect as F3,useState as i0,useRef as v6,useMemo as H5}from"react";import{jsxDEV as Z1}from"react/jsx-dev-runtime";function W5({open:$,onClose:Q,onSubmit:J,includedRemoteIds:X,onToggleRemoteId:Y}){let{annotations:Z,generalNote:q,submittableResponses:U,feedbackEntries:G}=T1(),[K,_]=i0(""),[z,W]=i0(!1),[H,N]=i0(!1),[O,B]=i0(null),A=v6(null),[T,M]=i0(!1),y=H5(()=>Z.filter((k)=>k.source==="remote"),[Z]);if($&&!T)W(!1),N(!1),B(null);if(!$&&T)W(!1),N(!1),B(null);if($!==T)M($);let L=H5(()=>l0(Z,q,U,G,X),[Z,q,U,G,X]),w=z?K:L;if(F3(()=>{if($&&H&&A.current)A.current.focus()},[$,H]),F3(()=>{if(!$)return;let k=(m)=>{if(m.key==="Escape")Q()};return window.addEventListener("keydown",k),()=>window.removeEventListener("keydown",k)},[$,Q]),!$)return null;let j=w.trim().length>0;return Z1("div",{className:"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm flex items-center justify-center p-8",onClick:Q,children:Z1("div",{className:"bg-bg-surface border border-border-medium rounded-xl shadow-lg w-full max-w-2xl flex flex-col",style:{height:"80vh"},onClick:(k)=>k.stopPropagation(),children:[Z1("div",{className:"flex items-center justify-between px-5 py-3 border-b border-border-subtle flex-shrink-0",children:[Z1("div",{className:"flex items-center gap-3",children:[Z1("span",{className:"text-[13px] font-medium text-text-primary font-body",children:"Response preview"},void 0,!1,void 0,this),z&&Z1("button",{onClick:()=>{W(!1),N(!1)},className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body",children:"Reset"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z1("div",{className:"flex items-center gap-2",children:[Z1("div",{className:"flex items-center bg-bg-base rounded-md p-0.5",children:[Z1("button",{onClick:()=>N(!1),className:`px-2.5 py-1 rounded text-[11px] font-body font-medium transition-colors ${!H?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Preview"},void 0,!1,void 0,this),Z1("button",{onClick:()=>N(!0),className:`px-2.5 py-1 rounded text-[11px] font-body font-medium transition-colors ${H?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Edit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z1("button",{onClick:Q,className:"text-text-tertiary hover:text-text-secondary w-7 h-7 flex items-center justify-center rounded-md hover:bg-border-subtle transition-colors",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),H?Z1("textarea",{ref:A,value:w,onChange:(k)=>{_(k.currentTarget.value),W(!0)},className:"flex-1 w-full bg-bg-base p-5 text-[13px] font-mono text-text-code resize-none focus:outline-none leading-relaxed placeholder:text-text-disabled",placeholder:"Your feedback will appear here..."},void 0,!1,void 0,this):Z1("div",{className:"flex-1 overflow-y-auto p-5",children:Z1(y2,{text:w},void 0,!1,void 0,this)},void 0,!1,void 0,this),y.length>0&&Z1("div",{className:"px-5 py-2 border-t border-border-subtle flex-shrink-0",children:Z1("span",{className:"text-[12px] text-text-secondary font-body",children:["Reviewer feedback: ",X.size,"/",y.length," included"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),O&&Z1("div",{className:"px-5 py-2 text-[12px] text-accent-red font-body border-t border-border-subtle flex-shrink-0 flex items-center justify-between gap-2",children:[Z1("span",{children:O},void 0,!1,void 0,this),Z1("button",{onClick:()=>{B(null),J(w)},className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body whitespace-nowrap underline",children:"Submit anyway"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z1("div",{className:"flex justify-end gap-2 px-5 py-3 border-t border-border-subtle flex-shrink-0",children:[Z1("button",{onClick:Q,className:"px-4 py-2 rounded-lg text-[13px] font-body text-text-tertiary hover:text-text-secondary transition-colors",children:"Cancel"},void 0,!1,void 0,this),Z1("button",{onClick:()=>{let k=r0(U,G);if(k.length>0){B(`Please answer: ${k.join(", ")}`);return}B(null),J(w)},disabled:!j,className:`px-6 py-2 rounded-lg font-body text-[13px] font-medium transition-all ${j?"bg-btn-primary text-btn-primary-text hover:opacity-90":"bg-bg-input text-text-disabled cursor-default"}`,children:"Submit feedback"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var u6=/!\[([^\]]*)\]\((\/tmp\/agent-canvas\/uploads\/([^)]+))\)/g;function g6($){return $.replace(u6,(Q,J,X,Y)=>`![${J}](/api/uploads/${Y})`)}function y2({text:$}){let Q=H5(()=>a.parse(g6($),{async:!1}),[$]);return Z1("div",{className:"prose-canvas font-body text-body text-text-primary leading-relaxed",dangerouslySetInnerHTML:{__html:Q}},void 0,!1,void 0,this)}import{jsxDEV as _0}from"react/jsx-dev-runtime";var h6={ts:"#3178c6",tsx:"#3178c6",js:"#e8a32e",jsx:"#4ba0c8",html:"#e34c26",css:"#264de4",scss:"#c69",json:"#7a7568",yaml:"#cb171e",yml:"#cb171e",toml:"#9c4221",rs:"#dea584",go:"#00add8",c:"#6a6a6a",cpp:"#f34b7d",h:"#6a6a6a",py:"#3572a5",rb:"#cc342d",sh:"#5a8c3c",bash:"#5a8c3c",md:"#3573b5",txt:"#6b6560",lock:"#6b6560",gitignore:"#6b6560",svg:"#d9952e",png:"#6a9c2e",jpg:"#6a9c2e",gif:"#6a9c2e"},p6={ts:"TS",tsx:"TX",js:"JS",jsx:"JX",py:"PY",rs:"RS",go:"GO",rb:"RB",json:"{}",yaml:"YM",yml:"YM",toml:"TM",html:"<>",css:"#",scss:"#",md:"M↓",sh:"$",bash:"$",c:"C",cpp:"C+",h:"H",svg:"◇",png:"▣",jpg:"▣"};function t1({name:$,type:Q,expanded:J,className:X=""}){if(Q==="dir")return _0("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",className:`flex-shrink-0 ${X}`,children:J?_0("path",{d:"M1.5 3.5h5l1.5 1.5h6.5v8h-13z",style:{fill:"var(--color-folder-fill-active)",stroke:"var(--color-folder-stroke-active)"},strokeWidth:"1"},void 0,!1,void 0,this):_0("path",{d:"M1.5 3.5h5l1.5 1.5h6.5v8h-13z",style:{fill:"var(--color-folder-fill)",stroke:"var(--color-folder-stroke)"},strokeWidth:"1"},void 0,!1,void 0,this)},void 0,!1,void 0,this);let Y=$.includes(".")?$.split(".").pop().toLowerCase():"",Z=h6[Y]||"#6b6560",q=p6[Y];return _0("svg",{width:"14",height:"14",viewBox:"0 0 16 16",className:`flex-shrink-0 ${X}`,children:[_0("path",{d:"M2 1.5h8l3.5 3.5v9.5a1 1 0 01-1 1H3a1 1 0 01-1-1v-12a1 1 0 011-1z",fill:Z,opacity:"0.85"},void 0,!1,void 0,this),_0("path",{d:"M10 1.5v2.5a1 1 0 001 1h2.5",fill:"none",stroke:"white",strokeWidth:"0.5",opacity:"0.5"},void 0,!1,void 0,this),q&&_0("text",{x:"8",y:"11.5",textAnchor:"middle",fill:"white",fontSize:"5.5",fontFamily:"monospace",fontWeight:"600",children:q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useContext as i6,useEffect as o6,useRef as a6}from"react";import{SessionContext as s6}from"#canvas/runtime";import{useState as N5,useRef as B5,useCallback as h1,useEffect as l6}from"react";import{createContext as c6,useContext as d6}from"react";function O3(){if(typeof window>"u")return"";return window.location.pathname.replace("/s/","")}var L3={get sessionId(){return O3()},isShared:!1,fsAvailable:!0,uploadUrl:null,loadCanvasModule:($,Q)=>{let J=$.replace(/\.jsx$/,".js"),X=Q?`?rev=${Q}&t=${Date.now()}`:`?t=${Date.now()}`;return import(`/api/session/${O3()}/canvas/${encodeURIComponent(J)}${X}`)}},S2=c6(L3);function j1(){return d6(S2)}import{jsxDEV as H1}from"react/jsx-dev-runtime";function T5($){if($.startsWith("/s/")||$.startsWith("http://")||$.startsWith("https://"))return $;return`/api/uploads/${$.split("/").pop()}`}async function r6($,Q){let J=$.uploadUrl;if(!J)return null;let X=new FormData;X.append("image",Q);try{let Z=await(await fetch(J(),{method:"POST",body:X})).json();if($.isShared)return Z.url||null;return Z.path||null}catch{return null}}function o0({note:$,onNoteChange:Q,images:J,onAddImage:X,onRemoveImage:Y,sessionId:Z,placeholder:q="Add your note...",autoFocus:U=!1,autoResize:G=!1,readOnly:K=!1,onKeyDown:_,onTextareaClick:z,textareaRef:W,textareaClassName:H,textareaStyle:N,minHeight:O,attachButton:B="always",openFilePickerRef:A}){let T=j1(),M=!K&&h0(T),[y,L]=N5(!1),[w,j]=N5(!1),[k,m]=N5(!1),D=B5(0),v=B5(null),u=B5(null),d=h1(()=>u.current?.click(),[]);if(A)A.current=d;let K1=h1((C)=>{if(v.current=C,W)W.current=C;if(C&&G)s1(C,O)},[W,G,O]);l6(()=>{if(U&&v.current){let C=v.current;if(C.focus(),C.value)C.setSelectionRange(C.value.length,C.value.length)}},[U]);let R=h1(async(C)=>{if(!C.type.startsWith("image/"))return;j(!0);try{let E=await r6(T,C);if(E)X(E)}finally{j(!1)}},[T,X]),g=h1((C)=>{for(let E of C.clipboardData?.items??[])if(E.type.startsWith("image/")){C.preventDefault();let b=E.getAsFile();if(b)R(b);return}},[R]),p=h1((C)=>{if(C.preventDefault(),D.current++,D.current===1)L(!0)},[]),t=h1((C)=>{C.preventDefault()},[]),l=h1((C)=>{if(C.preventDefault(),D.current--,D.current===0)L(!1)},[]),o=h1((C)=>{C.preventDefault(),D.current=0,L(!1);for(let E of C.dataTransfer?.files??[])if(E.type.startsWith("image/"))R(E)},[R]),q1=h1((C)=>{if(Q(C.currentTarget.value),G)C.currentTarget.style.height="auto",C.currentTarget.style.height=(O?Math.max(O,C.currentTarget.scrollHeight):C.currentTarget.scrollHeight)+"px"},[Q,G,O]),X1="w-full bg-transparent text-[13px] font-body text-text-primary resize-none focus:outline-none leading-relaxed p-0 border-none",z1={width:"100%",background:"transparent",border:"none",color:"var(--color-text-primary)",fontFamily:"'Inter', sans-serif",fontSize:"13px",lineHeight:"1.5",outline:"none",...G?{resize:"none",overflow:"hidden"}:{resize:"vertical"}},M1=M&&(B==="always"||B==="on-focus"&&k);return H1("div",{style:{position:"relative"},onDragEnter:M?p:void 0,onDragOver:M?t:void 0,onDragLeave:M?l:void 0,onDrop:M?o:void 0,children:[H1("textarea",{ref:K1,value:$,onChange:K?void 0:q1,onPaste:M?g:void 0,onKeyDown:_,onClick:z,onFocus:()=>m(!0),onBlur:()=>{setTimeout(()=>m(!1),150)},readOnly:K,placeholder:q,className:H??X1,style:N??z1,rows:G?1:void 0},void 0,!1,void 0,this),M&&H1("input",{ref:u,type:"file",accept:"image/*",multiple:!0,style:{display:"none"},onChange:(C)=>{let E=C.currentTarget.files;if(E)for(let b of E)R(b);C.currentTarget.value=""}},void 0,!1,void 0,this),(J.length>0||M1)&&H1("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap",marginTop:"6px",alignItems:"center"},children:[J.map((C)=>H1("div",{style:{position:"relative",width:"56px",height:"56px",borderRadius:"6px",overflow:"hidden",border:"1px solid var(--color-border-subtle)",flexShrink:0},children:[H1("img",{src:T5(C),alt:"",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}},void 0,!1,void 0,this),!K&&H1("button",{onClick:(E)=>{E.stopPropagation(),Y(C)},style:{position:"absolute",top:"2px",right:"2px",width:"16px",height:"16px",borderRadius:"50%",background:"rgba(0,0,0,0.6)",color:"white",border:"none",cursor:"pointer",fontSize:"11px",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:1,padding:0},title:"Remove image",children:"×"},void 0,!1,void 0,this)]},C,!0,void 0,this)),M1&&H1(F5,{onClick:d},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w&&H1("div",{style:{fontSize:"11px",color:"var(--color-text-tertiary)",fontFamily:"'Inter', sans-serif",marginTop:"4px"},children:"Uploading..."},void 0,!1,void 0,this),y&&H1("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",background:"var(--color-highlight-bg)",opacity:0.9,border:"2px dashed var(--color-highlight-border)",borderRadius:"6px",zIndex:10,pointerEvents:"none",fontSize:"12px",fontFamily:"'Inter', sans-serif",color:"var(--color-text-secondary)"},children:"Drop image"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function F5({onClick:$,size:Q=16}){return H1("button",{onClick:(J)=>{J.stopPropagation(),$()},style:{width:`${Q*2}px`,height:`${Q*2}px`,borderRadius:"6px",border:"none",background:"transparent",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--color-text-tertiary)",flexShrink:0,transition:"color 0.15s"},title:"Attach image",onMouseEnter:(J)=>{J.currentTarget.style.color="var(--color-text-secondary)"},onMouseLeave:(J)=>{J.currentTarget.style.color="var(--color-text-tertiary)"},children:H1("svg",{width:Q,height:Q,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[H1("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"},void 0,!1,void 0,this),H1("circle",{cx:"8.5",cy:"8.5",r:"1.5"},void 0,!1,void 0,this),H1("polyline",{points:"21 15 16 10 5 21"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function M3({images:$}){if(!$.length)return null;return H1("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap",marginTop:"6px"},children:$.map((Q)=>H1("div",{style:{width:"56px",height:"56px",borderRadius:"6px",overflow:"hidden",border:"1px solid var(--color-border-subtle)",flexShrink:0},children:H1("img",{src:T5(Q),alt:"",style:{width:"100%",height:"100%",objectFit:"cover",display:"block"}},void 0,!1,void 0,this)},Q,!1,void 0,this))},void 0,!1,void 0,this)}import{jsxDEV as G1,Fragment as P3}from"react/jsx-dev-runtime";function t6($){let Q=c0($);return Q.length>80?Q.slice(0,80)+"...":Q}function a0({annotations:$,readOnly:Q=!1,onSelect:J,onReveal:X,includedRemoteIds:Y,onToggleRemoteId:Z}){let{updateAnnotation:q,removeAnnotation:U,addAnnotationImage:G,removeAnnotationImage:K,activeAnnotationId:_,setActiveAnnotationId:z}=T1(),W=i6(s6),H=a6(new Map);o6(()=>{if(Q||!_)return;let M=H.current.get(_);if(M)M.scrollIntoView({behavior:"smooth",block:"nearest"})},[_,Q]);let N=(M)=>{z(M),M0(M,!0)},O=(M)=>{z(null),M0(M,!1)},B=(M)=>{if(M.id===_){z(null);return}z(M.id),J?.(M)},A=!!Y&&!!Z,T=(M)=>{let y=A&&M.source==="remote";return G1("div",{ref:(L)=>{if(L)H.current.set(M.id,L);else H.current.delete(M.id)},className:`group/ann relative px-3 py-2.5 transition-colors duration-150 ${Q?"cursor-pointer ":""}${_===M.id?"bg-highlight-selected":y?"bg-accent-purple-muted/30 hover:bg-accent-purple-muted/50":"odd:bg-bg-elevated-half hover:bg-bg-input"}`,onMouseEnter:()=>N(M.id),onMouseLeave:()=>O(M.id),onClick:()=>B(M),children:[y&&M.author&&G1("div",{className:"flex items-center gap-1.5 mb-1.5",children:[G1("input",{type:"checkbox",checked:Y.has(M.id),onChange:(L)=>{L.stopPropagation(),Z(M.id)},onClick:(L)=>L.stopPropagation(),className:"accent-accent-purple flex-shrink-0",title:"Include in submission"},void 0,!1,void 0,this),G1("span",{className:"inline-flex items-center justify-center w-4 h-4 rounded-full bg-accent-purple text-white text-[9px] font-medium uppercase",children:M.author.name.charAt(0)},void 0,!1,void 0,this),G1("span",{className:"text-[11px] font-medium text-accent-purple font-body",children:M.author.name},void 0,!1,void 0,this),G1("span",{className:"text-[10px] text-text-tertiary font-body uppercase tracking-widest",children:"Remote"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G1("div",{className:"text-[11px] text-text-tertiary italic line-clamp-2 mb-1.5 leading-snug font-body border-l-2 border-border-medium pl-2",children:t6(M.snippet)},void 0,!1,void 0,this),Q?G1(P3,{children:[M.note.trim()&&G1("div",{className:"text-[13px] font-body text-text-primary leading-relaxed",children:M.note},void 0,!1,void 0,this),G1(M3,{images:M.images||[]},void 0,!1,void 0,this)]},void 0,!0,void 0,this):y?G1("div",{className:"text-[13px] font-body text-text-primary leading-relaxed whitespace-pre-wrap",children:M.note},void 0,!1,void 0,this):G1("div",{onClick:(L)=>L.stopPropagation(),children:G1(o0,{note:M.note,onNoteChange:(L)=>q(M.id,L),images:M.images||[],onAddImage:(L)=>G(M.id,L),onRemoveImage:(L)=>K(M.id,L),sessionId:W,autoResize:!0,minHeight:20,textareaClassName:"w-full bg-transparent text-[13px] font-body text-text-primary resize-none focus:outline-none leading-relaxed p-0 border-none min-h-[20px]",textareaStyle:{height:"auto",overflow:"hidden"},placeholder:"Add your note...",attachButton:"on-focus"},void 0,!1,void 0,this)},void 0,!1,void 0,this),G1("div",{className:"absolute top-1.5 right-1.5 opacity-0 group-hover/ann:opacity-100 transition-opacity duration-100 flex items-center gap-0.5",children:[X&&G1("button",{onClick:(L)=>{L.stopPropagation(),X(M)},className:"w-5 h-5 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-input transition-colors",title:"Scroll to annotation",children:G1("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[G1("circle",{cx:"12",cy:"12",r:"3"},void 0,!1,void 0,this),G1("path",{d:"M12 2v4M12 18v4M2 12h4M18 12h4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),!Q&&!y&&G1("button",{onClick:(L)=>{L.stopPropagation(),U(M.id)},className:"w-5 h-5 flex items-center justify-center rounded text-text-tertiary hover:text-accent-red hover:bg-accent-red-muted transition-colors",title:"Delete annotation",children:G1("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[G1("polyline",{points:"3 6 5 6 21 6"},void 0,!1,void 0,this),G1("path",{d:"M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},M.id,!0,void 0,this)};return G1(P3,{children:$.map(T)},void 0,!1,void 0,this)}import{jsxDEV as H0,Fragment as n6}from"react/jsx-dev-runtime";function O5({hasContent:$,onSubmit:Q,onSubmitEmpty:J,notice:X,secondaryAction:Y,placeholder:Z="General notes...",submitLabel:q="Submit",emptyLabel:U="Submit without feedback"}){let{generalNote:G,setGeneralNote:K}=T1();return H0(n6,{children:[H0("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:H0("textarea",{value:G,onChange:(_)=>K(_.currentTarget.value),className:"w-full bg-transparent text-[13px] font-body text-text-primary resize-none leading-relaxed p-0 border-none ring-0 shadow-none outline-none focus:outline-none focus:ring-0 focus:border-none placeholder:text-text-disabled min-h-[40px]",placeholder:Z,onInput:(_)=>s1(_.currentTarget,40),ref:(_)=>{if(_)s1(_,40)}},void 0,!1,void 0,this)},void 0,!1,void 0,this),X,H0("div",{className:"px-4 py-3 border-t border-border-subtle flex-shrink-0",children:$?H0("div",{className:"flex gap-2",children:[Y,H0("button",{onClick:Q,className:"flex-1 py-2 rounded-lg font-body text-[13px] font-medium transition-all bg-btn-primary text-btn-primary-text hover:opacity-90 hover:-translate-y-px shadow-sm",children:q},void 0,!1,void 0,this)]},void 0,!0,void 0,this):H0("button",{onClick:J,className:"w-full py-2 rounded-lg font-body text-[13px] font-medium border border-border-medium text-text-secondary hover:text-text-primary hover:border-border-hover hover:bg-bg-input transition-all",children:U},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as x,Fragment as A2}from"react/jsx-dev-runtime";function w2({onSubmit:$,collapseButton:Q}){let{isReadOnly:J,selectedRevision:X,currentRevision:Y,revisions:Z,agentWatching:q}=L5(S1),U=L5($$),G=Z.find((W)=>W.revision===X),K=J&&X===Y,_=!!G?.feedbackConsumed,z=G?.label||`Round ${X}`;if(J)return x(J$,{sessionId:U,revision:X,label:z,waitingForUpdate:K,feedbackConsumed:_,agentWatching:q,collapseButton:Q},void 0,!1,void 0,this);return x(X$,{onSubmit:$,agentWatching:q,collapseButton:Q},void 0,!1,void 0,this)}function Q$({sessionId:$,revision:Q,label:J,waitingForUpdate:X,feedbackConsumed:Y,agentWatching:Z,collapseButton:q}){let G=j1().isShared;return x("div",{className:"flex flex-col h-full",children:[x("div",{className:"px-4 py-3 flex items-center justify-between flex-shrink-0",children:[x("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:X?"Feedback sent":`Feedback — ${J}`},void 0,!1,void 0,this),q]},void 0,!0,void 0,this),X&&!G&&x(A3,{feedbackConsumed:Y,agentWatching:Z},void 0,!1,void 0,this),x(w3,{sessionId:$,revision:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function A3({feedbackConsumed:$,agentWatching:Q}){if($)return x("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-lg bg-accent-green-muted flex items-center gap-2 flex-shrink-0",children:[x("span",{className:"w-2 h-2 rounded-full bg-accent-green animate-pulse"},void 0,!1,void 0,this),x("span",{className:"text-[12px] font-body text-accent-green",children:"Feedback received — waiting for next revision..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(Q)return x("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-lg bg-accent-blue-muted flex items-center gap-2 flex-shrink-0",children:[x("span",{className:"w-2 h-2 rounded-full bg-accent-blue animate-pulse"},void 0,!1,void 0,this),x("span",{className:"text-[12px] font-body text-accent-blue",children:"Waiting for agent to pick up feedback..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return x("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-lg bg-accent-amber-muted flex items-center gap-2 flex-shrink-0",children:[x("span",{className:"w-2 h-2 rounded-full bg-accent-amber"},void 0,!1,void 0,this),x("span",{className:"text-[12px] font-body text-accent-amber",children:"Agent disconnected — tell Claude to check feedback"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function J$({sessionId:$,revision:Q,label:J,waitingForUpdate:X,feedbackConsumed:Y,agentWatching:Z,collapseButton:q}){let{annotations:U,generalNote:G}=T1(),K=U.length>0||G.trim().length>0,[_,z]=y0("feedback");if(!K)return x(Q$,{sessionId:$,revision:Q,label:J,waitingForUpdate:X,feedbackConsumed:Y,agentWatching:Z,collapseButton:q},void 0,!1,void 0,this);return x("div",{className:"flex flex-col h-full",children:[x("div",{className:"px-4 py-3 flex items-center justify-between flex-shrink-0",children:[x("div",{className:"flex items-center gap-1 bg-bg-input rounded-md p-0.5",children:[x("button",{onClick:()=>z("feedback"),className:`px-2.5 py-1 rounded text-[11px] font-medium font-body transition-colors ${_==="feedback"?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Feedback"},void 0,!1,void 0,this),x("button",{onClick:()=>z("annotations"),className:`px-2.5 py-1 rounded text-[11px] font-medium font-body transition-colors flex items-center gap-1.5 ${_==="annotations"?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:["Annotations",x("span",{className:"inline-flex items-center justify-center min-w-[16px] h-[16px] px-1 rounded-full bg-border-subtle text-[10px] font-medium",children:U.length},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q]},void 0,!0,void 0,this),X&&x(A3,{feedbackConsumed:Y,agentWatching:Z},void 0,!1,void 0,this),_==="feedback"?x(w3,{sessionId:$,revision:Q},void 0,!1,void 0,this):x(A2,{children:[x("div",{className:"flex-1 overflow-y-auto",children:x(C3,{annotations:U,readOnly:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this),G.trim()&&x("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:x("div",{className:"text-[13px] font-body text-text-primary leading-relaxed",children:G},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function w3({sessionId:$,revision:Q}){let J=j1(),[X,Y]=y0(null),[Z,q]=y0(!0);return S3(()=>{if(q(!0),!J.fsAvailable){Y(null),q(!1);return}fetch(`/api/session/${$}/revision/${Q}/feedback`).then((U)=>U.json()).then((U)=>{Y(U.feedback||null),q(!1)}).catch(()=>{Y(null),q(!1)})},[$,Q]),x("div",{className:"flex-1 overflow-y-auto px-4",children:Z?x("p",{className:"text-[12px] text-text-tertiary font-body py-4",children:"Loading..."},void 0,!1,void 0,this):X?x(y2,{text:X},void 0,!1,void 0,this):x("p",{className:"text-[12px] text-text-tertiary font-body py-4",children:"No feedback was submitted for this revision."},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Y$($){let Q=$.filter((q)=>q.filePath===I1),J=$.filter((q)=>!q.filePath),X=$.filter((q)=>K0(q)!==void 0),Y={};for(let q of X){let U=K0(q);if(!U)continue;let G=Y[U];if(G)G.push(q);else Y[U]=[q]}let Z=[Q,J,X].filter((q)=>q.length>0).length>1;return{response:Q,plan:J,fileGroups:Y,hasMultipleGroups:Z}}function y3({children:$}){return x("div",{className:"text-[10px] uppercase tracking-widest text-text-tertiary font-body px-3 mb-1 mt-1",children:$},void 0,!1,void 0,this)}function C3({annotations:$,readOnly:Q,includedRemoteIds:J,onToggleRemoteId:X}){let{setActiveView:Y}=L5(E1),{response:Z,plan:q,fileGroups:U,hasMultipleGroups:G}=Y$($),K=M5((W)=>{let H=K0(W);if(!H)return;Y({type:"file",path:H}),setTimeout(()=>{let N=p0(W);if(N)N.scrollIntoView({behavior:"smooth",block:"center"})},150)},[Y]),_=M5((W)=>G5(W,Y),[Y]),z={readOnly:Q,onSelect:K,onReveal:_,includedRemoteIds:J,onToggleRemoteId:X};return x(A2,{children:[Z.length>0&&x(A2,{children:[G&&x(y3,{children:"Agent Response"},void 0,!1,void 0,this),x(a0,{annotations:Z,...z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q.length>0&&x(A2,{children:[G&&x(y3,{children:"Canvas"},void 0,!1,void 0,this),x(a0,{annotations:q,...z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Object.entries(U).map(([W,H])=>x("div",{children:[x("button",{onClick:()=>Y({type:"file",path:W}),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-widest text-text-tertiary hover:text-text-secondary font-body px-3 pt-3 pb-1 truncate transition-colors w-full text-left",title:W,children:[x(t1,{name:W.split("/").pop()||W,type:"file"},void 0,!1,void 0,this),x("span",{className:"truncate",children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x(a0,{annotations:H,...z},void 0,!1,void 0,this)]},W,!0,void 0,this))]},void 0,!0,void 0,this)}function X$({onSubmit:$,agentWatching:Q,collapseButton:J}){let X=j1(),[Y,Z]=y0(!1),{annotations:q,generalNote:U,submittableResponses:G,feedbackEntries:K}=T1(),_=e6(()=>q.filter((y)=>y.source==="remote"),[q]),[z,W]=y0(()=>new Set);S3(()=>{if(_.length===0)return;W((y)=>{let L=new Set(y);for(let w of _)L.add(w.id);return L.size===y.size?y:L})},[_]);let H=M5((y)=>{W((L)=>{let w=new Set(L);if(w.has(y))w.delete(y);else w.add(y);return w})},[]),N=Array.from(G.values()).some(P2),O=K.size>0,B=q.length>0||U.trim().length>0||N||O,[A,T]=y0(null),M=()=>{let y=l0(q,U,G,K,z);$(y)};return x("div",{className:"flex flex-col h-full",children:[x("div",{className:"px-4 py-3 flex items-center justify-between flex-shrink-0",children:[x("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body flex items-center gap-2",children:["Annotations",q.length>0&&x("span",{className:"inline-flex items-center justify-center min-w-[18px] h-[18px] px-1 rounded-full bg-border-subtle text-[10px] font-medium text-text-secondary",children:q.length},void 0,!1,void 0,this),!X.isShared&&x("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${Q?"bg-accent-green":"bg-accent-amber"}`,title:Q?"Agent connected":"Agent disconnected"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J]},void 0,!0,void 0,this),x("div",{className:"flex-1 overflow-y-auto",children:[q.length===0&&x("p",{className:"text-[12px] text-text-tertiary px-3 py-4 leading-relaxed font-body",children:"Select text in the canvas or in files to add annotations."},void 0,!1,void 0,this),x(C3,{annotations:q,includedRemoteIds:z,onToggleRemoteId:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x(O5,{hasContent:B,onSubmit:()=>{let y=r0(G,K);if(y.length>0){T(`Please answer: ${y.join(", ")}`);return}T(null),M()},onSubmitEmpty:()=>$("No feedback — looks good."),notice:A&&x("div",{className:"px-4 py-2 text-[12px] text-accent-red font-body border-t border-border-subtle flex-shrink-0 flex items-center justify-between gap-2",children:[x("span",{children:A},void 0,!1,void 0,this),x("button",{onClick:()=>{T(null),M()},className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body whitespace-nowrap underline",children:"Submit anyway"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),secondaryAction:x("button",{onClick:()=>Z(!0),className:"flex-1 py-2 rounded-lg font-body text-[13px] font-medium transition-all bg-border-subtle text-text-secondary hover:bg-border-medium hover:text-text-primary",children:"Preview"},void 0,!1,void 0,this)},void 0,!1,void 0,this),x(W5,{open:Y,onClose:()=>Z(!1),onSubmit:$,includedRemoteIds:z,onToggleRemoteId:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import j2,{useEffect as e1,useState as f1,useRef as N$,useContext as x3,useMemo as t0}from"react";import{createPortal as B$}from"react-dom";import{SessionContext as T$,CanvasFileCtx as F$}from"#canvas/runtime";import{useEffect as q$,useRef as b2,useState as S0,useCallback as C2,useMemo as j3,useContext as Z$}from"react";import{createPortal as G$}from"react-dom";function b3($){let Q=/^(\d+(?:\.\d+)?)px$/.exec($.trim());return Q?Number(Q[1]):void 0}function I3($,Q,J=280){let Y=Q||document.body,Z=$.getBoundingClientRect(),q=Y.getBoundingClientRect(),U=Y===document.body?0:Y.scrollTop,G=Z.bottom-q.top+U+8,K=Math.max(0,Math.min(Z.left-q.left,q.width-J-12));return Y.style.position="relative",{style:{position:"absolute",top:`${G}px`,left:`${K}px`},parent:Y}}import{SessionContext as U$}from"#canvas/runtime";import{jsxDEV as W1,Fragment as K$}from"react/jsx-dev-runtime";function k3({anchorEl:$,scrollContainer:Q,onClose:J,ignoreSelector:X,zIndex:Y="50",padding:Z="12px",width:q="280px",children:U}){let G=b2(null),K=b2(J);K.current=J;let{style:_,parent:z}=I3($,Q,b3(q));return q$(()=>{let W=setTimeout(()=>{let H=(N)=>{if(G.current&&!G.current.contains(N.target)){if(X&&N.target.closest?.(X))return;K.current(),document.removeEventListener("mousedown",H)}};return document.addEventListener("mousedown",H),()=>document.removeEventListener("mousedown",H)},0);return()=>clearTimeout(W)},[X]),G$(W1("div",{ref:G,style:{..._,zIndex:Y,width:q,background:"var(--color-bg-elevated)",border:"1px solid var(--color-border-hover)",borderRadius:"8px",boxShadow:"0 4px 12px var(--color-shadow)",padding:Z,fontFamily:"'Inter', sans-serif"},children:U},void 0,!1,void 0,this),z)}var R3=[{label:"Clarity",items:["Unclear","Why?","Needs example","Missing context"]},{label:"Scope",items:["Overkill","Out of scope","Important","Risky"]},{label:"Action",items:["Simplify","Rethink","Expand on this","Skip this"]}],V3=R3.flatMap(($)=>$.items);function P5({anchorEl:$,scrollContainer:Q,snippet:J,truncateAt:X=100,header:Y,initialNote:Z="",initialImages:q,onConfirm:U,onCancel:G,onDelete:K}){let _=Z$(U$),z=j1(),W=h0(z),H=Z!==""||!!K,[N,O]=S0(Z),[B,A]=S0(q||[]),[T,M]=S0(null),[y,L]=S0(H),[w,j]=S0(!1),k=b2(null),m=b2(null),D=C2(()=>{if(N.trim()||B.length>0)U(N.trim(),B);else if(H&&K)K();else G()},[N,B,U,G,H,K]),v=C2(()=>{if(H){if(!N.trim()&&B.length===0&&K){K(),G();return}U(N,B);return}G()},[N,B,H,U,G,K]),u=!H,d=N.trim().length>0?V3.filter((P)=>P.toLowerCase().startsWith(N.trim().toLowerCase())):V3,K1=!u||y?[]:d.length===1&&d[0]?.toLowerCase()===N.trim().toLowerCase()?[]:d,R=new Set(K1),g=R3.map((P)=>({label:P.label,items:P.items.filter((S)=>R.has(S))})).filter((P)=>P.items.length>0),p=g.map((P)=>P.items),t=(P)=>p[P]?.length??0,l=p.flat(),o=j3(()=>{if(T===null)return 0;let P=0;for(let S=0;S<p.length;S++){if(T<P+t(S))return S;P+=t(S)}return 0},[T,p]),q1=j3(()=>{if(T===null)return 0;let P=0;for(let S=0;S<o;S++)P+=t(S);return T-P},[T,o,p]),X1=(P,S)=>{let V=0;for(let i=0;i<P;i++)V+=t(i);return V+S},[z1,M1]=S0(N);if(N!==z1)M1(N),M(null),L(H);let C=C2((P)=>{O(P)},[]),E=J.length>X?J.slice(0,X)+"...":J,b=C2((P)=>{if(l.length>0&&(P.key==="ArrowDown"||P.key==="ArrowUp"||P.key==="ArrowLeft"||P.key==="ArrowRight")){if(P.preventDefault(),T===null){M(0);return}if(P.key==="ArrowDown"){let V=Math.min(q1+1,t(o)-1);M(X1(o,V))}else if(P.key==="ArrowUp"){let V=Math.max(q1-1,0);M(X1(o,V))}else if(P.key==="ArrowRight"){let V=Math.min(o+1,p.length-1),i=Math.min(q1,t(V)-1);M(X1(V,i))}else if(P.key==="ArrowLeft"){let V=Math.max(o-1,0),i=Math.min(q1,t(V)-1);M(X1(V,i))}return}let S=T===null?void 0:l[T];if(S!==void 0){if(P.key==="Tab"){P.preventDefault(),C(S);return}if(P.key==="Enter"&&!P.shiftKey){P.preventDefault(),U(S,B);return}}if(P.key==="Enter"&&!P.shiftKey){P.preventDefault(),D();return}if(P.key==="Escape")if(l.length>0&&!y)L(!0);else if(H)v();else G()},[l,T,q1,o,p,X1,C,U,B,D,y,H,v,G]);return W1(k3,{anchorEl:$,scrollContainer:Q,onClose:H?v:G,ignoreSelector:H?"[data-annotation-id]":void 0,zIndex:H?"60":"50",padding:H?"10px 12px":"12px",width:"420px",children:[!H&&(Y??W1("div",{style:{fontSize:"11px",color:"var(--color-text-tertiary)",fontStyle:"italic",marginBottom:"8px",lineHeight:"1.4",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:["“",E,"”"]},void 0,!0,void 0,this)),W1(o0,{note:N,onNoteChange:O,images:B,onAddImage:(P)=>A((S)=>[...S,P]),onRemoveImage:(P)=>A((S)=>S.filter((V)=>V!==P)),sessionId:_,autoFocus:!0,autoResize:H,textareaRef:k,onKeyDown:b,attachButton:"none",openFilePickerRef:m,textareaStyle:H?{width:"100%",background:"transparent",border:"none",color:"var(--color-text-primary)",fontFamily:"'Inter', sans-serif",fontSize:"13px",lineHeight:"1.5",resize:"none",outline:"none",overflow:"hidden"}:{width:"100%",minHeight:"60px",background:"transparent",border:"none",color:"var(--color-text-primary)",fontFamily:"'Inter', sans-serif",fontSize:"13px",lineHeight:"1.5",resize:"vertical",outline:"none"},placeholder:"Add your note..."},void 0,!1,void 0,this),W1("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginTop:H?"6px":"8px"},children:[W&&W1(F5,{onClick:()=>m.current?.(),size:14},void 0,!1,void 0,this),W1("div",{style:{flex:1}},void 0,!1,void 0,this),H?W1("button",{onClick:()=>{if(K)K();G()},onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1),style:{fontSize:"11px",color:w?"var(--color-accent-red)":"var(--color-text-tertiary)",background:"none",border:"none",cursor:"pointer",padding:"2px 0",fontFamily:"'Inter', sans-serif"},children:"Delete"},void 0,!1,void 0,this):W1(K$,{children:[W1("button",{onClick:G,style:{fontSize:"11px",color:"var(--color-text-tertiary)",background:"none",border:"none",cursor:"pointer",padding:"4px 12px",fontFamily:"'Inter', sans-serif"},children:"Cancel"},void 0,!1,void 0,this),W1("button",{onClick:D,style:{fontSize:"11px",fontWeight:500,padding:"4px 12px",borderRadius:"6px",background:"var(--color-highlight-bg)",color:"var(--color-text-primary)",border:"1px solid var(--color-highlight-border)",cursor:"pointer",fontFamily:"'Inter', sans-serif"},children:"Add"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),l.length>0&&W1("div",{style:{marginTop:"6px",borderTop:"1px solid var(--color-border-subtle)",paddingTop:"8px",display:"flex",gap:"4px"},children:g.map((P)=>W1("div",{style:{flex:1},children:[W1("div",{style:{fontSize:"10px",fontWeight:600,color:"var(--color-text-disabled)",textTransform:"uppercase",letterSpacing:"0.05em",padding:"2px 6px",marginBottom:"2px",fontFamily:"'Inter', sans-serif"},children:P.label},void 0,!1,void 0,this),P.items.map((S)=>{let V=l.indexOf(S);return W1("div",{onMouseDown:(i)=>{i.preventDefault(),i.stopPropagation(),C(S)},onMouseEnter:()=>M(V),style:{padding:"3px 6px",fontSize:"12px",borderRadius:"4px",fontFamily:"'Inter', sans-serif",color:V===T?"var(--color-text-primary)":"var(--color-text-secondary)",background:V===T?"var(--color-highlight-selected)":"transparent",cursor:"pointer"},children:[W1("span",{style:{fontWeight:500},children:S.slice(0,N.trim().length)},void 0,!1,void 0,this),S.slice(N.trim().length)]},S,!0,void 0,this)})]},P.label,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function x1({anchorEl:$,scrollContainer:Q,snippet:J,truncateAt:X,header:Y,onAdd:Z,onCancel:q}){return W1(P5,{anchorEl:$,scrollContainer:Q,snippet:J,truncateAt:X,header:Y,onConfirm:(U,G)=>Z(U,G),onCancel:q},void 0,!1,void 0,this)}function W0({anchorEl:$,scrollContainer:Q,initialNote:J,initialImages:X,onUpdate:Y,onDelete:Z,onClose:q}){return W1(P5,{anchorEl:$,scrollContainer:Q,snippet:"",initialNote:J,initialImages:X,onConfirm:(U,G)=>{Y(U,G),q()},onDelete:Z,onCancel:q},void 0,!1,void 0,this)}import{useEffect as I2,useState as D3,useRef as N0,useCallback as m3}from"react";import{jsxDEV as y5,Fragment as z$}from"react/jsx-dev-runtime";function n1($){let{containerRef:Q,restoreKey:J,restoreAnnotations:X,extractContext:Y,filePath:Z,canvasFile:q,scrollContainer:U}=$,{annotations:G,addAnnotationWithId:K,removeAnnotation:_,updateAnnotation:z,addAnnotationImage:W,removeAnnotationImage:H,activeAnnotationId:N,setActiveAnnotationId:O}=T1(),[B,A]=D3(null),[T,M]=D3(null),y=N0(Y);y.current=Y;let L=N0(Z);L.current=Z;let w=N0(q);w.current=q;let j=N0(K);j.current=K;let k=N0(N);k.current=N;let m=N0(O);m.current=O;let D=X.length;I2(()=>{if(!Q.current)return;let R=setTimeout(()=>{if(Q.current)Z5(Q.current,X)},50);return()=>clearTimeout(R)},[J,D]);let v=N0(null);I2(()=>{E0(N,v.current),v.current=N},[N]),I2(()=>{let R=Q.current;if(!R)return;let g=(l)=>{let o=l.target.closest("[data-annotation-id]");if(!o)return;l.stopPropagation();let q1=o.getAttribute("data-annotation-id");if(q1===k.current)A({anchorEl:o,annId:q1});else m.current(q1)},p=(l)=>{let o=l.target.closest("[data-annotation-id]");if(o)m.current(o.getAttribute("data-annotation-id"))},t=(l)=>{let o=l.target.closest("[data-annotation-id]"),q1=l.relatedTarget?.closest?.("[data-annotation-id]");if(o&&!q1&&!document.getElementById("ann-inline-popover"))m.current(null)};return R.addEventListener("click",g),R.addEventListener("mouseover",p),R.addEventListener("mouseout",t),()=>{R.removeEventListener("click",g),R.removeEventListener("mouseover",p),R.removeEventListener("mouseout",t)}},[J]),I2(()=>{let R=()=>u();return document.addEventListener("mouseup",R),()=>document.removeEventListener("mouseup",R)},[]);let u=m3(()=>{let R=window.getSelection();if(!R||R.isCollapsed||!R.toString().trim())return;if(!Q.current)return;let g=R.getRangeAt(0);if(!Q.current.contains(g.startContainer))return;if(g.startContainer.parentElement?.closest?.("[data-annotation-id]"))return;let p=Q3(g).trim();if(p.length<2)return;let t=y.current(g),l=g.cloneRange(),o=`__pending_${Date.now()}`;try{i1(l,o)}catch{}window.getSelection()?.removeAllRanges();let q1=document.querySelectorAll(`[data-annotation-id="${o}"]`),X1=q1[q1.length-1];if(!X1)return;M({anchorEl:X1,tempId:o,snippet:p,ctx:t})},[]),d=m3((R,g,p,t)=>{M({anchorEl:R,tempId:g,snippet:p,ctx:t})},[]);return{popovers:y5(z$,{children:[B&&(()=>{let R=G.find((g)=>g.id===B.annId);if(!R)return null;return y5(W0,{anchorEl:B.anchorEl,scrollContainer:U,initialNote:R.note,initialImages:R.images,onUpdate:(g,p)=>{z(B.annId,g);let t=R.images||[];for(let l of p)if(!t.includes(l))W(B.annId,l);for(let l of t)if(!p.includes(l))H(B.annId,l)},onDelete:()=>{_(B.annId),O(null)},onClose:()=>A(null)},void 0,!1,void 0,this)})(),T&&y5(x1,{anchorEl:T.anchorEl,scrollContainer:U,snippet:T.snippet,truncateAt:80,onAdd:(R,g)=>{let p=O1();x0(T.tempId,p),j.current(p,T.snippet,R,L.current,T.ctx,g,w.current),M(null)},onCancel:()=>{v0(T.tempId),M(null)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),openCreatePopover:d,isPopoverOpen:!!(B||T)}}import{useEffect as _$,useRef as S5,useState as E3}from"react";import{jsxDEV as H$}from"react/jsx-dev-runtime";function A5($){let{containerRef:Q,restoreKey:J,shape:X="rect",canvasFile:Y,scrollContainer:Z}=$,{addAnnotationWithId:q}=T1(),[U,G]=E3(null),[K,_]=E3(!1),z=S5(q);z.current=q;let W=S5(Y);W.current=Y;let H=S5(X);return H.current=X,_$(()=>{let O=Q.current;if(!O)return;let B=null;function A(j,k){let m=j.getBoundingClientRect();return Y5(m,k.clientX-m.left,k.clientY-m.top)}function T(){if(!B)return;let{host:j,pointerId:k}=B;if(j.hasPointerCapture(k))j.releasePointerCapture(k);j.removeEventListener("pointermove",y),j.removeEventListener("pointerup",L),j.removeEventListener("pointercancel",w),B=null,_(!1)}function M(j){if(B||j.button!==0)return;let k=j.target;if(!(k instanceof Element))return;if(k.closest("[data-block-comment-btn]"))return;if(k.closest("[data-annotation-id]"))return;let m=k.closest(`[${J5}]`);if(!(m instanceof HTMLElement)||!O?.contains(m))return;let D=m.closest("[data-md='image']")?.getAttribute("data-md-src");if(!D)return;let v=A(m,j);if(!v)return;j.preventDefault(),m.setPointerCapture(j.pointerId);let u=O1(),d=L2({...v,w:0,h:0},H.current,u);d.classList.add("ann-region-draft"),m.appendChild(d),B={pointerId:j.pointerId,host:m,src:D,start:v,shape:H.current,overlay:d,id:u},m.addEventListener("pointermove",y),m.addEventListener("pointerup",L),m.addEventListener("pointercancel",w),_(!0)}function y(j){if(!B||B.pointerId!==j.pointerId)return;let k=A(B.host,j);if(!k)return;O2(B.overlay,T2(B.start,k))}function L(j){if(!B||B.pointerId!==j.pointerId)return;let{overlay:k,id:m,src:D,shape:v}=B,u=A(B.host,j)??B.start,d=T2(B.start,u);if(T(),!X5(d)){k.remove();return}O2(k,d);let K1={src:D,shape:v,...d};G({overlay:k,id:m,snippet:g0.format(K1),label:F2(K1)})}function w(j){if(!B||B.pointerId!==j.pointerId)return;B.overlay.remove(),T()}return O.addEventListener("pointerdown",M),()=>{if(O.removeEventListener("pointerdown",M),B)B.overlay.remove(),T()}},[J]),{popovers:U?H$(x1,{anchorEl:U.overlay,scrollContainer:Z,snippet:U.label,truncateAt:80,onAdd:(O,B)=>{U.overlay.classList.remove("ann-region-draft"),z.current(U.id,U.snippet,O,void 0,void 0,B,W.current),G(null)},onCancel:()=>{U.overlay.remove(),G(null)}},void 0,!1,void 0,this):null,isDrawing:K,isPopoverOpen:!!U}}import{createContext as W$}from"react";var s0=W$(()=>{});import{jsxDEV as J1,Fragment as P$}from"react/jsx-dev-runtime";class f3 extends j2.Component{state={error:null};static getDerivedStateFromError($){return{error:$}}componentDidCatch($,Q){this.props.reportError({revision:this.props.revision,filename:this.props.filename,message:$.message,...$.stack?{stack:$.stack}:{},...Q.componentStack?{componentStack:Q.componentStack}:{}})}render(){if(!this.state.error)return this.props.children;return J1(v3,{message:this.state.error.message},void 0,!1,void 0,this)}}function v3({message:$}){return J1("div",{className:"bg-accent-red-muted rounded-lg p-5",children:[J1("h3",{className:"font-body font-semibold text-accent-red mb-2",children:"Canvas render failed"},void 0,!1,void 0,this),J1("pre",{className:"text-code font-mono text-text-secondary whitespace-pre-wrap",children:$},void 0,!1,void 0,this),J1("p",{className:"text-meta font-body text-text-tertiary mt-3",children:"The error was sent back to the canvas author."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function A0({revision:$,filename:Q}){let J=x3(T$),X=j1(),Y=x3(s0),[Z,q]=f1(null),[U,G]=f1(null),[K,_]=f1(!0),z=N$(null),{annotations:W,addAnnotationWithId:H,removeAnnotation:N,updateAnnotation:O,addAnnotationImage:B,removeAnnotationImage:A,activeAnnotationId:T,setActiveAnnotationId:M,registerCanvasRendered:y}=T1(),L=t0(()=>W.filter((C)=>!C.filePath&&(!C.canvasFile||C.canvasFile===Q)),[W,Q]),[w,j]=f1(null),[k,m]=f1(null),[D,v]=f1(null),[u,d]=f1(null),[K1,R]=f1(!1);e1(()=>{_(!0),G(null),d(null),X.loadCanvasModule(Q,$).then((C)=>{q(()=>C.default),_(!1)}).catch((C)=>{let E=C instanceof Error?C:Error(String(C));G(E.message),_(!1),Y({revision:$,filename:Q,message:E.message,...E.stack?{stack:E.stack}:{}})})},[J,$,Q,Y]),e1(()=>{if(Z)y(Q)},[Z,Q,y]);let g=document.getElementById("plan-scroll-container"),{popovers:p,isPopoverOpen:t}=n1({containerRef:z,restoreKey:Z,restoreAnnotations:L,extractContext:(C)=>o1(C,z.current),canvasFile:Q,scrollContainer:g}),{popovers:l,isDrawing:o,isPopoverOpen:q1}=A5({containerRef:z,restoreKey:Z,canvasFile:Q,scrollContainer:g}),X1=t||q1,z1=t0(()=>{let C=new Map;for(let E of L)if(E.snippet.startsWith("["))C.set(E.snippet,E.id);return C},[L]);e1(()=>{let C=z.current;if(!C)return;let E=(P)=>{if(D||X1||o)return;let S=P.target;if(S.closest("[data-block-comment-btn]"))return;R(!1);let V=S.closest(P0);if(V&&C.contains(V)){let U1=B0(C).indexOf(V);d(U1>=0?U1:null)}else d(null);let i=S.closest(a1);if(i&&C.contains(i)){m(i);let Q1=m1(i),U1=Q1?z1.get(Q1):void 0;if(U1&&U1!==T)M(U1)}else m(null)},b=(P)=>{if(D||X1)return;if(P.relatedTarget?.closest("[data-block-comment-btn]"))return;m(null),M(null)};return C.addEventListener("mousemove",E),C.addEventListener("mouseleave",b),()=>{C.removeEventListener("mousemove",E),C.removeEventListener("mouseleave",b)}},[Z,D,X1,o,z1,T]),e1(()=>{let C=(E)=>{let b=E.target.tagName;if(b==="INPUT"||b==="TEXTAREA"||E.target.isContentEditable)return;if(D||X1)return;let P=z.current;if(!P)return;if(E.key==="ArrowDown"){E.preventDefault(),R(!0);let S=B0(P);if(S.length===0)return;d((V)=>{if(V===null)return 0;return Math.min(V+1,S.length-1)})}else if(E.key==="ArrowUp"){E.preventDefault(),R(!0);let S=B0(P);if(S.length===0)return;d((V)=>{if(V===null)return S.length-1;return Math.max(V-1,0)})}else if(E.key==="a"||E.key==="A"){if(u===null||!P)return;let V=B0(P)[u];if(!V)return;if(!V.matches(a1))return;E.preventDefault();let i=m1(V);if(!i)return;let Q1=z1.get(i);if(Q1)M(Q1),v({anchorEl:V,snippet:i,annId:Q1});else v({anchorEl:V,snippet:i})}else if(E.key===" "||E.key==="Enter"){if(u===null)return;let V=B0(P)[u];if(!V)return;let i=V.getAttribute("data-md");if(i==="choice-option"||i==="multichoice-option")E.preventDefault(),V.dispatchEvent(new CustomEvent("kb-select",{bubbles:!0}));else if(i==="userinput"){E.preventDefault();let Q1=V.querySelector("textarea");if(Q1){Q1.focus();let U1=(P1)=>{if(P1.key==="Escape")P1.preventDefault(),Q1.blur(),R(!0)};Q1.addEventListener("keydown",U1),Q1.addEventListener("blur",()=>Q1.removeEventListener("keydown",U1),{once:!0})}}else if(i==="rangeinput"){E.preventDefault();let Q1=V.querySelector("input[type='range']");if(Q1){Q1.focus();let U1=(P1)=>{if(P1.key==="Escape"||P1.key==="ArrowUp"||P1.key==="ArrowDown")P1.preventDefault(),Q1.blur(),R(!0)};Q1.addEventListener("keydown",U1),Q1.addEventListener("blur",()=>Q1.removeEventListener("keydown",U1),{once:!0})}}}else if(E.key==="Escape")d(null),R(!1),M(null)};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[u,D,X1,z1]),e1(()=>{let C=z.current;if(!C||u===null||!K1)return;let b=B0(C)[u];if(!b)return;b.style.outline="2px solid var(--color-accent-blue)",b.style.outlineOffset="-2px",b.style.borderRadius="8px",b.scrollIntoView({block:"nearest",behavior:"smooth"});let P=m1(b),S=P?z1.get(P):void 0;if(S)M(S);return()=>{b.style.outline="",b.style.outlineOffset="",b.style.borderRadius=""}},[u,K1,z1]);let M1=t0(()=>Z?J1(Z,{},void 0,!1,void 0,this):null,[Z]);if(K)return J1("div",{className:"flex items-center justify-center h-64 text-text-tertiary font-body text-body",children:"Loading canvas..."},void 0,!1,void 0,this);if(U)return J1(v3,{message:U},void 0,!1,void 0,this);if(!Z)return J1("div",{className:"text-text-tertiary text-center py-8 font-body text-body",children:"No canvas loaded"},void 0,!1,void 0,this);return J1(F$.Provider,{value:Q,children:[J1("div",{ref:z,className:"plan-content plan-updated","data-canvas-file":Q,children:J1(f3,{revision:$,filename:Q,reportError:Y,children:M1},`${$}:${Q}`,!1,void 0,this)},void 0,!1,void 0,this),w&&J1(M$,{note:w.note,onSave:(C)=>{O(w.id,C),j(null)},onCancel:()=>j(null)},void 0,!1,void 0,this),p,l,J1(O$,{containerRef:z,hoveredBlock:k,focusedBlockIndex:u,blockPopover:D,blockAnnotationMap:z1,activeAnnotationId:T,onOpen:(C,E,b)=>{if(b)M(b),v({anchorEl:C,snippet:E,annId:b});else v({anchorEl:C,snippet:E})}},void 0,!1,void 0,this),D&&!D.annId&&J1(x1,{anchorEl:D.anchorEl,scrollContainer:g,snippet:D.snippet,truncateAt:80,onAdd:(C,E)=>{let b=O1();H(b,D.snippet,C,void 0,void 0,E,Q),v(null)},onCancel:()=>v(null)},void 0,!1,void 0,this),D?.annId&&(()=>{let C=L.find((E)=>E.id===D.annId);if(!C)return null;return J1(W0,{anchorEl:D.anchorEl,scrollContainer:g,initialNote:C.note,initialImages:C.images,onUpdate:(E,b)=>{O(D.annId,E);let P=C.images||[];for(let S of b)if(!P.includes(S))B(D.annId,S);for(let S of P)if(!b.includes(S))A(D.annId,S)},onDelete:()=>{N(D.annId),M(null),v(null)},onClose:()=>v(null)},void 0,!1,void 0,this)})()]},void 0,!0,void 0,this)}function B0($){return Array.from($.querySelectorAll(P0))}function O$({containerRef:$,hoveredBlock:Q,focusedBlockIndex:J,blockPopover:X,blockAnnotationMap:Y,activeAnnotationId:Z,onOpen:q}){let[U,G]=f1([]);e1(()=>{let H=$.current;if(!H||Y.size===0){G([]);return}let N=[];for(let O of H.querySelectorAll(a1)){let B=m1(O);if(B&&Y.has(B))N.push(O)}G(N)},[Y,$.current]);let[K,_]=f1(null);e1(()=>{if(!Z||!$.current){_(null);return}for(let H of $.current.querySelectorAll(P0)){let N=m1(H);if(N&&Y.get(N)===Z){_(H);return}}_(null)},[Z,Y]),e1(()=>{if(!K)return;return K.style.boxShadow="inset 0 0 0 1.5px var(--color-highlight-bg)",K.style.borderRadius="8px",()=>{K.style.boxShadow="",K.style.borderRadius=""}},[K]);let z=t0(()=>{if(J===null||!$.current)return null;let H=B0($.current)[J];if(!H)return null;return H.matches(a1)?H:null},[J,$.current]),W=t0(()=>{let H=new Set(U);if(Q)H.add(Q);if(z)H.add(z);if(X?.anchorEl)H.add(X.anchorEl);return Array.from(H)},[U,Q,z,X]);return J1(P$,{children:W.map((H)=>J1(L$,{block:H,isHovered:H===Q||H===z||H===X?.anchorEl,blockAnnotationMap:Y,activeAnnotationId:Z,onOpen:q},H.getAttribute("data-task-id")||H.getAttribute("data-md-title")||H.textContent?.slice(0,30)||"block",!1,void 0,this))},void 0,!1,void 0,this)}function L$({block:$,isHovered:Q,blockAnnotationMap:J,activeAnnotationId:X,onOpen:Y}){let Z=m1($);if(!Z)return null;let q=J.get(Z),U=!!q;return B$(J1("button",{"data-block-comment-btn":!0,onClick:(K)=>{K.stopPropagation(),Y(K.currentTarget,Z,q)},className:`absolute top-1 right-1 z-10 w-6 h-6 flex items-center justify-center rounded transition-all duration-150 ${U?q===X?"text-accent-amber bg-accent-amber-muted":"text-accent-amber opacity-60 hover:opacity-100":Q?"text-text-disabled hover:text-text-tertiary opacity-50 hover:opacity-100":"text-text-disabled opacity-0 group-hover/section:opacity-20 hover:!opacity-80"}`,title:U?"Edit annotation":"Add annotation",children:J1("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:U?"currentColor":"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:J1("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),$)}function M$({note:$,onSave:Q,onCancel:J}){let[X,Y]=j2.useState($),Z=j2.useRef(null);return j2.useEffect(()=>{Z.current?.focus(),Z.current?.select()},[]),J1("div",{className:"fixed inset-0 z-50 bg-black/40 flex items-center justify-center",onClick:J,children:J1("div",{className:"bg-bg-elevated border border-border-hover rounded-lg shadow-md p-4 w-80",onClick:(q)=>q.stopPropagation(),children:[J1("div",{className:"text-tiny uppercase tracking-widest text-text-tertiary font-body mb-2",children:"Edit annotation"},void 0,!1,void 0,this),J1("textarea",{ref:Z,value:X,onChange:(q)=>Y(q.currentTarget.value),className:"w-full bg-transparent border-none text-body font-body text-text-primary resize-vertical focus:outline-none min-h-[60px]",onKeyDown:(q)=>{if(q.key==="Enter"&&(q.ctrlKey||q.metaKey))Q(X.trim());if(q.key==="Escape")J()}},void 0,!1,void 0,this),J1("div",{className:"flex justify-end gap-2 mt-2",children:[J1("button",{onClick:J,className:"text-meta text-text-tertiary font-body px-3 py-1",children:"Cancel"},void 0,!1,void 0,this),J1("button",{onClick:()=>Q(X.trim()),className:"text-meta font-medium font-body px-3 py-1 rounded-md bg-highlight-bg text-text-primary border border-highlight-border",children:"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}import{useState as RQ}from"react";import wQ from"react";import{jsxDEV as IQ}from"react/jsx-dev-runtime";a.setOptions({gfm:!0,breaks:!1});import{jsxDEV as EQ}from"react/jsx-dev-runtime";import{jsxDEV as uQ}from"react/jsx-dev-runtime";import{useEffect as cQ,useRef as dQ}from"react";import{jsxDEV as rQ}from"react/jsx-dev-runtime";import{jsxDEV as sQ}from"react/jsx-dev-runtime";import{jsxDEV as $J}from"react/jsx-dev-runtime";import{jsxDEV as YJ}from"react/jsx-dev-runtime";import{jsxDEV as ZJ}from"react/jsx-dev-runtime";import{jsxDEV as KJ}from"react/jsx-dev-runtime";import{useEffect as WJ,useState as NJ,useContext as BJ,useRef as TJ}from"react";import{SessionContext as OJ,ActiveViewCtx as LJ}from"#canvas/runtime";import{jsxDEV as PJ}from"react/jsx-dev-runtime";import{useEffect as wJ,useRef as CJ,useState as bJ,useCallback as IJ}from"react";import VJ from"react-dom";import{useAnnotations as RJ,useCanvasFile as DJ}from"#canvas/runtime";import{jsxDEV as xJ,Fragment as fJ}from"react/jsx-dev-runtime";import{jsxDEV as cJ}from"react/jsx-dev-runtime";import{useEffect as tJ,useMemo as nJ,useRef as eJ,useState as $Y}from"react";import{useAnnotations as JY,useResponseRegistration as YY}from"#canvas/runtime";import{jsxDEV as iJ}from"react/jsx-dev-runtime";import{jsxDEV as ZY}from"react/jsx-dev-runtime";import{useRef as zY,useState as _Y}from"react";import{useAnnotations as WY,useResponseRegistration as NY}from"#canvas/runtime";import{jsxDEV as OY}from"react/jsx-dev-runtime";import{useContext as yY,useState as SY}from"react";import{SessionContext as wY}from"#canvas/runtime";import{jsxDEV as bY}from"react/jsx-dev-runtime";import{useMemo as kY}from"react";import{jsxDEV as mY}from"react/jsx-dev-runtime";a.setOptions({gfm:!0,breaks:!1});import{useFeedback as TX}from"#canvas/runtime";import{useEffect as E$,useState as o3,useContext as a3,useMemo as x$}from"react";import{SessionContext as f$}from"#canvas/runtime";var u3={alg:"AES-GCM",v:1};async function g3($){let Q=w$($);return crypto.subtle.importKey("raw",Q,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function $0($,Q){let J=crypto.getRandomValues(new Uint8Array(12)),X=new TextEncoder().encode(Q),Y=await crypto.subtle.encrypt({name:"AES-GCM",iv:J},$,X),Z=new Uint8Array(J.byteLength+Y.byteLength);return Z.set(J,0),Z.set(new Uint8Array(Y),J.byteLength),A$(Z)}async function n0($,Q){let J=h3(Q);if(J.byteLength<28)throw Error("Ciphertext too short");let X=J.subarray(0,12),Y=J.subarray(12),Z=await crypto.subtle.decrypt({name:"AES-GCM",iv:X},$,Y);return new TextDecoder().decode(Z)}function A$($){let Q="",J=32768;for(let X=0;X<$.byteLength;X+=J)Q+=String.fromCharCode.apply(null,Array.from($.subarray(X,X+J)));return btoa(Q)}function h3($){let Q=atob($),J=new Uint8Array(Q.length);for(let X=0;X<Q.length;X++)J[X]=Q.charCodeAt(X);return J}function w$($){let Q=$.replace(/-/g,"+").replace(/_/g,"/")+"===".slice(($.length+3)%4);return h3(Q)}function C$(){if(typeof window>"u")return null;let $=window.location.hash.replace(/^#/,"");if(!$)return null;for(let Q of $.split("&")){let[J,X]=Q.split("=");if(J==="k"&&X)return decodeURIComponent(X)}return null}function b$(){if(typeof window<"u"&&window.__CANVAS_SHARE__?.shareId){let Q=C$();return{isShared:!0,shareId:window.__CANVAS_SHARE__.shareId,encryptionKey:Q?g3(Q):null}}return{isShared:!1,sessionId:typeof window<"u"?window.location.pathname.replace("/s/",""):""}}var $1=b$();function I$(){return $1.isShared&&$1.encryptionKey!==null}function j$(){return $1.isShared?$1.shareId:$1.sessionId}function V$(){if($1.isShared)return`/s/${$1.shareId}/meta`;return`/api/session/${$1.sessionId}/meta`}function k$($,Q){let J=$.replace(/\.jsx$/,".js");if($1.isShared)return`/s/${$1.shareId}/canvas/${encodeURIComponent(J)}`;let X=Q?`?rev=${Q}&t=${Date.now()}`:`?t=${Date.now()}`;return`/api/session/${$1.sessionId}/canvas/${encodeURIComponent(J)}${X}`}function R$(){if($1.isShared)return`/s/${$1.shareId}/upload`;return`/api/session/${$1.sessionId}/upload`}async function p3(){let $=await fetch(V$());if(!$.ok)throw Error(`meta ${$.status}`);let Q=await $.json();if(Q.encryption&&$1.isShared&&$1.encryptionKey){let J=await $1.encryptionKey;if(Q.origin){let Y={...Q.origin};if(Y.sessionId)Y.sessionId=await n0(J,Y.sessionId);if(Y.label)Y.label=await n0(J,Y.label);Q.origin=Y}let X=Q.revisions;if(Array.isArray(X)){for(let Y of X)if(Y.label)try{Y.label=await n0(J,Y.label)}catch{}}}return Q}async function D$($,Q){let J=k$($,Q);if(!I$())return import(J);let X=await fetch(J);if(!X.ok)throw Error(`canvas ${X.status}`);let Y=await X.text(),Z=await $1.encryptionKey,q=await n0(Z,Y),U=new Blob([q],{type:"application/javascript"}),G=URL.createObjectURL(U);try{return await import(G)}finally{setTimeout(()=>URL.revokeObjectURL(G),0)}}var c3="canvas-reviewer-identity";function C5(){try{let $=localStorage.getItem(c3);if(!$)return null;return JSON.parse($)}catch{return null}}function d3($){let Q=C5();if(!Q)Q={id:crypto.randomUUID?.()||String(Date.now()),name:$};else Q.name=$;return localStorage.setItem(c3,JSON.stringify(Q)),Q}async function m$($,Q){let J=await Promise.all($.annotations.map(async(X)=>{let Y={id:X.id,createdAt:X.createdAt,snippet:await $0(Q,String(X.snippet??"")),note:await $0(Q,String(X.note??""))};if(X.filePath)Y.filePath=await $0(Q,String(X.filePath));if(X.canvasFile)Y.canvasFile=await $0(Q,String(X.canvasFile));if(X.context!==void 0&&X.context!==null)Y.context=await $0(Q,JSON.stringify(X.context));if(X.attachments)Y.attachments=X.attachments;return Y}));return{author:{id:$.author.id,name:await $0(Q,$.author.name)},revision:$.revision,annotations:J,...$.generalNote?{generalNote:await $0(Q,$.generalNote)}:{},encryption:u3}}async function l3($){if(!$1.isShared)throw Error("submitSharedFeedback called outside shared mode");let Q=$;if($1.encryptionKey){let X=await $1.encryptionKey;Q=await m$($,X)}let J=await fetch(`/s/${$1.shareId}/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Q)});if(!J.ok){let X=await J.text().catch(()=>"");throw Error(`Feedback submission failed: ${J.status} ${X}`)}}var p1=!$1.isShared,r3=!$1.isShared,i3={get sessionId(){return j$()},isShared:$1.isShared,fsAvailable:p1,uploadUrl:R$,loadCanvasModule:D$};import{jsxDEV as c,Fragment as b5}from"react/jsx-dev-runtime";function s3({embedded:$}={}){let Q=a3(f$),{annotations:J,addAnnotation:X}=v1(),{setActiveView:Y}=a3(E1),[Z,q]=o3(!1),[U,G]=o3({});if(!p1)return c("div",{className:$?"px-4 py-3":"p-4",children:[c("div",{className:"text-[11px] uppercase tracking-widest text-text-tertiary font-body mb-2",children:"Files"},void 0,!1,void 0,this),c("p",{className:"text-[11px] text-text-tertiary font-body leading-relaxed",children:"File browsing is not available in shared view. File previews embedded in the canvas still work."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{annCountMap:K,annotatedFiles:_}=x$(()=>{let T=new Map;for(let M of J)if(M.filePath&&M.filePath!==I1)T.set(M.filePath,(T.get(M.filePath)||0)+1);return{annCountMap:T,annotatedFiles:[...T.keys()]}},[J]),z=async(T)=>{let y=await(await fetch(`/api/tree?session=${Q}&path=${encodeURIComponent(T)}`)).json();if(y.entries)G((L)=>({...L,[T]:{entries:y.entries,expanded:!0,loaded:!0}}))};E$(()=>{if(!Z&&!U[""])z("")},[Z]);let W=(T)=>{if(U[T]?.loaded)G((M)=>({...M,[T]:{...M[T],expanded:!M[T].expanded}}));else z(T)},H=(T)=>{Y({type:"file",path:T})},N=async(T)=>{let y=await(await fetch(`/api/file?session=${Q}&path=${encodeURIComponent(T)}`)).json();if(!y.error){let L=y.content.split(`
67
+ `}function Ln(e){if(e.note?.trim())return!0;if(e.value===null||e.value===void 0)return!1;if(e.type==="text"&&!e.value.trim())return!1;if(e.type==="checkbox"&&e.value.length===0)return!1;return!0}function Sr(e){let t=[];for(let n of e.values()){if(!n.required)continue;if(n.value===null||n.value===void 0){t.push(n);continue}if(n.type==="text"&&!n.value.trim()){t.push(n);continue}if(n.type==="checkbox"&&n.value.length===0){t.push(n);continue}}return t}function Cr(e){let t=[];for(let n of e.values())if(n.required&&!n.markdown.trim())t.push(n);return t}function Xt(e,t){let n=Sr(e),r=Cr(t);return[...n.map((o)=>o.label),...r.map((o)=>o.label||o.id)]}function ra(e){let t=[];switch(t.push(`**${e.label}**`),e.type){case"radio":case"select":t.push(`Answer: ${e.value}`);break;case"checkbox":for(let n of e.value)t.push(`- [x] ${n}`);break;case"text":t.push(""),t.push(e.value.trim());break;case"range":t.push(`Answer: ${e.value}`);break}if(e.note?.trim())t.push(""),t.push(`Note: ${e.note.trim()}`);return t.push(""),t.join(`
68
+ `)}function sa(e){let t={label:"",annotations:[],children:new Map};for(let n of e){let r=n.context?.hierarchy||[],o=t;for(let i of r){if(!o.children.has(i))o.children.set(i,{label:i,annotations:[],children:new Map});o=o.children.get(i)}o.annotations.push(n)}return t}function Nr(e,t=0){let n=[];for(let r of e.annotations)n.push(Kt(r));for(let[,r]of e.children){let o=t===0?"###":"####";n.push(`${o} ${r.label}`),n.push(""),n.push(Nr(r,t+1))}return n.join(`
69
+ `)}import{createContext as ia,useContext as aa}from"react";function Tr(){if(typeof window>"u")return"";return window.location.pathname.replace("/s/","")}var Lr={get sessionId(){return Tr()},isShared:!1,fsAvailable:!0,uploadUrl:null,loadCanvasModule:(e,t)=>{let n=e.replace(/\.jsx$/,".js"),r=t?`?rev=${t}&t=${Date.now()}`:`?t=${Date.now()}`;return import(`/api/session/${Tr()}/canvas/${encodeURIComponent(n)}${r}`)}},Mn=ia(Lr);function _e(){return aa(Mn)}import{useAnnotations as mt}from"#canvas/runtime";import{jsxDEV as Co}from"react/jsx-dev-runtime";function Pr(e,t,n){try{let r=localStorage.getItem(Pe(e,t,n));if(!r)return null;return JSON.parse(r)}catch{return null}}function pa(e,t,n,r){try{localStorage.setItem(Pe(e,t,n),JSON.stringify(r))}catch{}}function So(e){return{draft:e,responseIds:new Set,canvases:new Set}}function No({sessionId:e,revision:t,isReadOnly:n,draftPhase:r,remoteAnnotations:o,canvasFiles:i,loadState:s,saveState:l,children:a}){let c=!!s,u=c?null:Pr(e,t,r),[d,f]=Rt(()=>(u?.annotations??[]).map((V)=>({...V,source:V.source??"local"}))),[p,m]=Rt(()=>u?.generalNote??""),[v,g]=Rt(()=>u?.responses?new Map(u.responses):new Map),w=`${e}:${t}:${r}`,h=Ir(w);h.current=w;let[b,k]=Rt(()=>So(w)),[y,E]=Rt(()=>u?.feedbackEntries?new Map(u.feedbackEntries):new Map),[R,C]=Rt(!c);Mr(()=>{let V=(O)=>{f((O?.annotations??[]).map((Z)=>({...Z,source:Z.source??"local"}))),m(O?.generalNote??""),g(O?.responses?new Map(O.responses):new Map),E(O?.feedbackEntries?new Map(O.feedbackEntries):new Map),G(null)};if(c){let O=!1;return C(!1),s(e,t,r).then((Z)=>{if(O)return;V(Z),C(!0)}),()=>{O=!0}}V(Pr(e,t,r)),C(!0);return},[e,t,r,c,s]);let M=Ir(null);Mr(()=>{if(n&&r!=="next")return;if(!R)return;if(M.current)clearTimeout(M.current);let V={annotations:d,generalNote:p,responses:Array.from(v.entries()),feedbackEntries:Array.from(y.entries())},O=()=>{if(l)l(e,t,V,r);else pa(e,t,r,V)};if(r==="next"){O();return}return M.current=setTimeout(O,300),()=>{if(M.current)clearTimeout(M.current)}},[d,p,v,y,e,t,n,r,R,l]);let L=At((V,O)=>{g((Z)=>{let ue=new Map(Z);return ue.set(V,O),ue})},[]),B=At((V)=>{k((O)=>{let Z=O.draft===h.current?O:So(h.current);if(Z.responseIds.has(V))return Z;return{...Z,responseIds:new Set(Z.responseIds).add(V)}})},[]),j=At((V)=>{k((O)=>{let Z=O.draft===h.current?O:So(h.current);if(Z.canvases.has(V))return Z;return{...Z,canvases:new Set(Z.canvases).add(V)}})},[]),W=b.draft===w?b:null,de=ua(()=>{if(!W||!Ro(i,W.canvases))return v;return Ao(v,W.responseIds)},[W,i,v]),N=At((V,O)=>{E((Z)=>{let ue=Z.get(V);if(ue&&ue.markdown===O.markdown&&ue.label===O.label&&ue.required===O.required)return Z;let A=new Map(Z);return A.set(V,O),A})},[]),_=At((V)=>{E((O)=>{if(!O.has(V))return O;let Z=new Map(O);return Z.delete(V),Z})},[]),z=At(()=>{if(g(new Map),E(new Map),l)l(e,t,{annotations:[],generalNote:"",responses:[],feedbackEntries:[]},r);else if(r==="next")localStorage.removeItem(Pe(e,t,r));else ft(localStorage,e,t)},[e,t,r,l]),X=An({annotations:d,setAnnotations:f,generalNote:p,setGeneralNote:m,remoteAnnotations:o,isReadOnly:n,onClear:z}),{setActiveAnnotationId:G}=X,J=_e();return Co(da.Provider,{value:J,children:Co(ca.Provider,{value:X,children:Co(la.Provider,{value:{...X,responses:v,setResponse:L,submittableResponses:de,registerResponse:B,registerCanvasRendered:j,feedbackEntries:y,setFeedbackEntry:N,removeFeedbackEntry:_},children:a},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{ActiveViewCtx as Im,AnnotationCtx as Pm,CanvasFileCtx as $m,SessionContext as Hm,useAnnotations as De,useCanvasFile as Dm,useFeedback as Om,useResponseRegistration as Fm}from"#canvas/runtime";function Jt(e){let t=document.querySelector(`[data-annotation-id="${e.id}"]`);if(t instanceof HTMLElement)return t;let n=e.canvasFile?document.querySelector(`[data-canvas-file="${e.canvasFile}"]`):document;if(!n)return null;return uo(e.snippet,n)}function $r(e){e.classList.remove("ann-flash"),e.offsetWidth,e.classList.add("ann-flash"),e.addEventListener("animationend",()=>{e.classList.remove("ann-flash")},{once:!0})}function To(e,t){let n=lt(e);if(n)t({type:"file",path:n}),setTimeout(()=>{let r=Jt(e);if(r)r.scrollIntoView({behavior:"smooth",block:"center"}),$r(r)},150);else{let r=Jt(e);if(r)r.scrollIntoView({behavior:"smooth",block:"center"}),$r(r)}}import{SessionContext as ba}from"#canvas/runtime";import{useCallback as Io,useContext as Po,useEffect as Fr,useMemo as va,useState as St}from"react";import{createContext as Hr}from"react";var $e=Hr({activeView:{type:"overview"},setActiveView:()=>{},openFiles:[],closeFile:()=>{},canvasFiles:[]}),ke=Hr({currentRevision:1,selectedRevision:1,revisions:[],setSelectedRevision:()=>{},isReadOnly:!1,compareRevision:null,setCompareRevision:()=>{},agentWatching:!1});import{jsxDEV as ht}from"react/jsx-dev-runtime";var fa={ts:"#3178c6",tsx:"#3178c6",js:"#e8a32e",jsx:"#4ba0c8",html:"#e34c26",css:"#264de4",scss:"#c69",json:"#7a7568",yaml:"#cb171e",yml:"#cb171e",toml:"#9c4221",rs:"#dea584",go:"#00add8",c:"#6a6a6a",cpp:"#f34b7d",h:"#6a6a6a",py:"#3572a5",rb:"#cc342d",sh:"#5a8c3c",bash:"#5a8c3c",md:"#3573b5",txt:"#6b6560",lock:"#6b6560",gitignore:"#6b6560",svg:"#d9952e",png:"#6a9c2e",jpg:"#6a9c2e",gif:"#6a9c2e"},ma={ts:"TS",tsx:"TX",js:"JS",jsx:"JX",py:"PY",rs:"RS",go:"GO",rb:"RB",json:"{}",yaml:"YM",yml:"YM",toml:"TM",html:"<>",css:"#",scss:"#",md:"M↓",sh:"$",bash:"$",c:"C",cpp:"C+",h:"H",svg:"◇",png:"▣",jpg:"▣"};function Ye({name:e,type:t,expanded:n,className:r=""}){if(t==="dir")return ht("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",className:`flex-shrink-0 ${r}`,children:n?ht("path",{d:"M1.5 3.5h5l1.5 1.5h6.5v8h-13z",style:{fill:"var(--color-folder-fill-active)",stroke:"var(--color-folder-stroke-active)"},strokeWidth:"1"},void 0,!1,void 0,this):ht("path",{d:"M1.5 3.5h5l1.5 1.5h6.5v8h-13z",style:{fill:"var(--color-folder-fill)",stroke:"var(--color-folder-stroke)"},strokeWidth:"1"},void 0,!1,void 0,this)},void 0,!1,void 0,this);let o=e.includes(".")?e.split(".").pop().toLowerCase():"",i=fa[o]||"#6b6560",s=ma[o];return ht("svg",{width:"14",height:"14",viewBox:"0 0 16 16",className:`flex-shrink-0 ${r}`,children:[ht("path",{d:"M2 1.5h8l3.5 3.5v9.5a1 1 0 01-1 1H3a1 1 0 01-1-1v-12a1 1 0 011-1z",fill:i,opacity:"0.85"},void 0,!1,void 0,this),ht("path",{d:"M10 1.5v2.5a1 1 0 001 1h2.5",fill:"none",stroke:"white",strokeWidth:"0.5",opacity:"0.5"},void 0,!1,void 0,this),s&&ht("text",{x:"8",y:"11.5",textAnchor:"middle",fill:"white",fontSize:"5.5",fontFamily:"monospace",fontWeight:"600",children:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useEffect as Dr,useMemo as Lo,useRef as ha,useState as Yt}from"react";import{jsxDEV as ce}from"react/jsx-dev-runtime";function Mo({open:e,onClose:t,onSubmit:n,includedRemoteIds:r,onToggleRemoteId:o}){let{annotations:i,generalNote:s,submittableResponses:l,feedbackEntries:a}=mt(),[c,u]=Yt(""),[d,f]=Yt(!1),[p,m]=Yt(!1),[v,g]=Yt(null),w=ha(null),[h,b]=Yt(!1),k=Lo(()=>i.filter((C)=>C.source==="remote"),[i]);if(e&&!h)f(!1),m(!1),g(null);if(!e&&h)f(!1),m(!1),g(null);if(e!==h)b(e);let y=Lo(()=>Zt(i,s,l,a,r),[i,s,l,a,r]),E=d?c:y;if(Dr(()=>{if(e&&p&&w.current)w.current.focus()},[e,p]),Dr(()=>{if(!e)return;let C=(M)=>{if(M.key==="Escape")t()};return window.addEventListener("keydown",C),()=>window.removeEventListener("keydown",C)},[e,t]),!e)return null;let R=E.trim().length>0;return ce("div",{className:"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm flex items-center justify-center p-8",onClick:t,children:ce("div",{className:"bg-bg-surface border border-border-medium rounded-xl shadow-lg w-full max-w-2xl flex flex-col",style:{height:"80vh"},onClick:(C)=>C.stopPropagation(),children:[ce("div",{className:"flex items-center justify-between px-5 py-3 border-b border-border-subtle flex-shrink-0",children:[ce("div",{className:"flex items-center gap-3",children:[ce("span",{className:"text-[13px] font-medium text-text-primary font-body",children:"Response preview"},void 0,!1,void 0,this),d&&ce("button",{onClick:()=>{f(!1),m(!1)},className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body",children:"Reset"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ce("div",{className:"flex items-center gap-2",children:[ce("div",{className:"flex items-center bg-bg-base rounded-md p-0.5",children:[ce("button",{onClick:()=>m(!1),className:`px-2.5 py-1 rounded text-[11px] font-body font-medium transition-colors ${!p?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Preview"},void 0,!1,void 0,this),ce("button",{onClick:()=>m(!0),className:`px-2.5 py-1 rounded text-[11px] font-body font-medium transition-colors ${p?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Edit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ce("button",{onClick:t,className:"text-text-tertiary hover:text-text-secondary w-7 h-7 flex items-center justify-center rounded-md hover:bg-border-subtle transition-colors",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),p?ce("textarea",{ref:w,value:E,onChange:(C)=>{u(C.currentTarget.value),f(!0)},className:"flex-1 w-full bg-bg-base p-5 text-[13px] font-mono text-text-code resize-none focus:outline-none leading-relaxed placeholder:text-text-disabled",placeholder:"Your feedback will appear here..."},void 0,!1,void 0,this):ce("div",{className:"flex-1 overflow-y-auto p-5",children:ce(In,{text:E},void 0,!1,void 0,this)},void 0,!1,void 0,this),k.length>0&&ce("div",{className:"px-5 py-2 border-t border-border-subtle flex-shrink-0",children:ce("span",{className:"text-[12px] text-text-secondary font-body",children:["Reviewer feedback: ",r.size,"/",k.length," included"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),v&&ce("div",{className:"px-5 py-2 text-[12px] text-accent-red font-body border-t border-border-subtle flex-shrink-0 flex items-center justify-between gap-2",children:[ce("span",{children:v},void 0,!1,void 0,this),ce("button",{onClick:()=>{g(null),n(E)},className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body whitespace-nowrap underline",children:"Submit anyway"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ce("div",{className:"flex justify-end gap-2 px-5 py-3 border-t border-border-subtle flex-shrink-0",children:[ce("button",{onClick:t,className:"px-4 py-2 rounded-lg text-[13px] font-body text-text-tertiary hover:text-text-secondary transition-colors",children:"Cancel"},void 0,!1,void 0,this),ce("button",{onClick:()=>{let C=Xt(l,a);if(C.length>0){g(`Please answer: ${C.join(", ")}`);return}g(null),n(E)},disabled:!R,className:`px-6 py-2 rounded-lg font-body text-[13px] font-medium transition-all ${R?"bg-btn-primary text-btn-primary-text hover:opacity-90":"bg-bg-input text-text-disabled cursor-default"}`,children:"Submit feedback"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var ga=/!\[([^\]]*)\]\((\/tmp\/agent-canvas\/uploads\/([^)]+))\)/g;function xa(e){return e.replace(ga,(t,n,r,o)=>`![${n}](/api/uploads/${o})`)}function In({text:e}){let t=Lo(()=>Q.parse(xa(e),{async:!1}),[e]);return ce("div",{className:"prose-canvas font-body text-body text-text-primary leading-relaxed",dangerouslySetInnerHTML:{__html:t}},void 0,!1,void 0,this)}import{jsxDEV as I,Fragment as Pn}from"react/jsx-dev-runtime";function $n({onSubmit:e,collapseButton:t}){let{isReadOnly:n,selectedRevision:r,currentRevision:o,revisions:i,agentWatching:s}=Po(ke),l=Po(ba),a=i.find((f)=>f.revision===r),c=n&&r===o,u=!!a?.feedbackConsumed,d=a?.label||`Round ${r}`;if(n)return I(ka,{sessionId:l,revision:r,label:d,waitingForUpdate:c,feedbackConsumed:u,agentWatching:s,collapseButton:t},void 0,!1,void 0,this);return I(Ea,{onSubmit:e,agentWatching:s,collapseButton:t},void 0,!1,void 0,this)}function ya({sessionId:e,revision:t,label:n,waitingForUpdate:r,feedbackConsumed:o,agentWatching:i,collapseButton:s}){let a=_e().isShared;return I("div",{className:"flex flex-col h-full",children:[I("div",{className:"px-4 py-3 flex items-center justify-between flex-shrink-0",children:[I("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:r?"Feedback sent":`Feedback — ${n}`},void 0,!1,void 0,this),s]},void 0,!0,void 0,this),r&&!a&&I(Br,{feedbackConsumed:o,agentWatching:i},void 0,!1,void 0,this),I(_r,{sessionId:e,revision:t},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Br({feedbackConsumed:e,agentWatching:t}){if(e)return I("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-lg bg-accent-green-muted flex items-center gap-2 flex-shrink-0",children:[I("span",{className:"w-2 h-2 rounded-full bg-accent-green animate-pulse"},void 0,!1,void 0,this),I("span",{className:"text-[12px] font-body text-accent-green",children:"Feedback received — waiting for next revision..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(t)return I("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-lg bg-accent-blue-muted flex items-center gap-2 flex-shrink-0",children:[I("span",{className:"w-2 h-2 rounded-full bg-accent-blue animate-pulse"},void 0,!1,void 0,this),I("span",{className:"text-[12px] font-body text-accent-blue",children:"Waiting for agent to pick up feedback..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return I("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-lg bg-accent-amber-muted flex items-center gap-2 flex-shrink-0",children:[I("span",{className:"w-2 h-2 rounded-full bg-accent-amber"},void 0,!1,void 0,this),I("span",{className:"text-[12px] font-body text-accent-amber",children:"Agent disconnected — tell Claude to check feedback"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ka({sessionId:e,revision:t,label:n,waitingForUpdate:r,feedbackConsumed:o,agentWatching:i,collapseButton:s}){let{annotations:l,generalNote:a}=mt(),c=l.length>0||a.trim().length>0,[u,d]=St("feedback");if(!c)return I(ya,{sessionId:e,revision:t,label:n,waitingForUpdate:r,feedbackConsumed:o,agentWatching:i,collapseButton:s},void 0,!1,void 0,this);return I("div",{className:"flex flex-col h-full",children:[I("div",{className:"px-4 py-3 flex items-center justify-between flex-shrink-0",children:[I("div",{className:"flex items-center gap-1 bg-bg-input rounded-md p-0.5",children:[I("button",{onClick:()=>d("feedback"),className:`px-2.5 py-1 rounded text-[11px] font-medium font-body transition-colors ${u==="feedback"?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Feedback"},void 0,!1,void 0,this),I("button",{onClick:()=>d("annotations"),className:`px-2.5 py-1 rounded text-[11px] font-medium font-body transition-colors flex items-center gap-1.5 ${u==="annotations"?"bg-bg-elevated text-text-primary shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:["Annotations",I("span",{className:"inline-flex items-center justify-center min-w-[16px] h-[16px] px-1 rounded-full bg-border-subtle text-[10px] font-medium",children:l.length},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),s]},void 0,!0,void 0,this),r&&I(Br,{feedbackConsumed:o,agentWatching:i},void 0,!1,void 0,this),u==="feedback"?I(_r,{sessionId:e,revision:t},void 0,!1,void 0,this):I(Pn,{children:[I("div",{className:"flex-1 overflow-y-auto",children:I(jr,{annotations:l,readOnly:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this),a.trim()&&I("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:I("div",{className:"text-[13px] font-body text-text-primary leading-relaxed",children:a},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function _r({sessionId:e,revision:t}){let n=_e(),[r,o]=St(null),[i,s]=St(!0);return Fr(()=>{if(s(!0),!n.fsAvailable){o(null),s(!1);return}fetch(`/api/session/${e}/revision/${t}/feedback`).then((l)=>l.json()).then((l)=>{o(l.feedback||null),s(!1)}).catch(()=>{o(null),s(!1)})},[e,t]),I("div",{className:"flex-1 overflow-y-auto px-4",children:i?I("p",{className:"text-[12px] text-text-tertiary font-body py-4",children:"Loading..."},void 0,!1,void 0,this):r?I(In,{text:r},void 0,!1,void 0,this):I("p",{className:"text-[12px] text-text-tertiary font-body py-4",children:"No feedback was submitted for this revision."},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function wa(e){let t=e.filter((s)=>s.filePath===Se),n=e.filter((s)=>!s.filePath),r=e.filter((s)=>lt(s)!==void 0),o={};for(let s of r){let l=lt(s);if(!l)continue;let a=o[l];if(a)a.push(s);else o[l]=[s]}let i=[t,n,r].filter((s)=>s.length>0).length>1;return{response:t,plan:n,fileGroups:o,hasMultipleGroups:i}}function Or({children:e}){return I("div",{className:"text-[10px] uppercase tracking-widest text-text-tertiary font-body px-3 mb-1 mt-1",children:e},void 0,!1,void 0,this)}function jr({annotations:e,readOnly:t,includedRemoteIds:n,onToggleRemoteId:r}){let{setActiveView:o}=Po($e),{response:i,plan:s,fileGroups:l,hasMultipleGroups:a}=wa(e),c=Io((f)=>{let p=lt(f);if(!p)return;o({type:"file",path:p}),setTimeout(()=>{let m=Jt(f);if(m)m.scrollIntoView({behavior:"smooth",block:"center"})},150)},[o]),u=Io((f)=>To(f,o),[o]),d={readOnly:t,onSelect:c,onReveal:u,includedRemoteIds:n,onToggleRemoteId:r};return I(Pn,{children:[i.length>0&&I(Pn,{children:[a&&I(Or,{children:"Agent Response"},void 0,!1,void 0,this),I(Gt,{annotations:i,...d},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s.length>0&&I(Pn,{children:[a&&I(Or,{children:"Canvas"},void 0,!1,void 0,this),I(Gt,{annotations:s,...d},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Object.entries(l).map(([f,p])=>I("div",{children:[I("button",{onClick:()=>o({type:"file",path:f}),className:"flex items-center gap-1.5 text-[10px] uppercase tracking-widest text-text-tertiary hover:text-text-secondary font-body px-3 pt-3 pb-1 truncate transition-colors w-full text-left",title:f,children:[I(Ye,{name:f.split("/").pop()||f,type:"file"},void 0,!1,void 0,this),I("span",{className:"truncate",children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I(Gt,{annotations:p,...d},void 0,!1,void 0,this)]},f,!0,void 0,this))]},void 0,!0,void 0,this)}function Ea({onSubmit:e,agentWatching:t,collapseButton:n}){let r=_e(),[o,i]=St(!1),{annotations:s,generalNote:l,submittableResponses:a,feedbackEntries:c}=mt(),u=va(()=>s.filter((k)=>k.source==="remote"),[s]),[d,f]=St(()=>new Set);Fr(()=>{if(u.length===0)return;f((k)=>{let y=new Set(k);for(let E of u)y.add(E.id);return y.size===k.size?k:y})},[u]);let p=Io((k)=>{f((y)=>{let E=new Set(y);if(E.has(k))E.delete(k);else E.add(k);return E})},[]),m=Array.from(a.values()).some(Ln),v=c.size>0,g=s.length>0||l.trim().length>0||m||v,[w,h]=St(null),b=()=>{let k=Zt(s,l,a,c,d);e(k)};return I("div",{className:"flex flex-col h-full",children:[I("div",{className:"px-4 py-3 flex items-center justify-between flex-shrink-0",children:[I("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body flex items-center gap-2",children:["Annotations",s.length>0&&I("span",{className:"inline-flex items-center justify-center min-w-[18px] h-[18px] px-1 rounded-full bg-border-subtle text-[10px] font-medium text-text-secondary",children:s.length},void 0,!1,void 0,this),!r.isShared&&I("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${t?"bg-accent-green":"bg-accent-amber"}`,title:t?"Agent connected":"Agent disconnected"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),n]},void 0,!0,void 0,this),I("div",{className:"flex-1 overflow-y-auto",children:[s.length===0&&I("p",{className:"text-[12px] text-text-tertiary px-3 py-4 leading-relaxed font-body",children:"Select text in the canvas or in files to add annotations."},void 0,!1,void 0,this),I(jr,{annotations:s,includedRemoteIds:d,onToggleRemoteId:p},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I(fo,{hasContent:g,onSubmit:()=>{let k=Xt(a,c);if(k.length>0){h(`Please answer: ${k.join(", ")}`);return}h(null),b()},onSubmitEmpty:()=>e("No feedback — looks good."),notice:w&&I("div",{className:"px-4 py-2 text-[12px] text-accent-red font-body border-t border-border-subtle flex-shrink-0 flex items-center justify-between gap-2",children:[I("span",{children:w},void 0,!1,void 0,this),I("button",{onClick:()=>{h(null),b()},className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body whitespace-nowrap underline",children:"Submit anyway"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),secondaryAction:I("button",{onClick:()=>i(!0),className:"flex-1 py-2 rounded-lg font-body text-[13px] font-medium transition-all bg-border-subtle text-text-secondary hover:bg-border-medium hover:text-text-primary",children:"Preview"},void 0,!1,void 0,this)},void 0,!1,void 0,this),I(Mo,{open:o,onClose:()=>i(!1),onSubmit:e,includedRemoteIds:d,onToggleRemoteId:p},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useFeedback as nm}from"#canvas/runtime";import ap from"react";Q.setOptions({gfm:!0,breaks:!1});import{useAnnotations as hp,useResponseRegistration as gp}from"#canvas/runtime";import{useEffect as vp,useMemo as yp,useRef as kp,useState as wp}from"react";import{useEffect as Cp,useRef as Np}from"react";import{ActiveViewCtx as Hp,SessionContext as Dp}from"#canvas/runtime";import{useContext as Bp,useEffect as _p,useRef as jp,useState as qp}from"react";import{SessionContext as Wp}from"#canvas/runtime";import{useContext as Kp,useState as Zp}from"react";import{useMemo as ef}from"react";Q.setOptions({gfm:!0,breaks:!1});import{useAnnotations as of,useCanvasFile as rf}from"#canvas/runtime";import{useCallback as cf,useEffect as df,useRef as uf,useState as pf}from"react";import mf from"react-dom";import{useState as kf}from"react";import{useAnnotations as Nf,useResponseRegistration as Tf}from"#canvas/runtime";import{useRef as Pf,useState as $f}from"react";import{CanvasFileCtx as Ca,SessionContext as Na}from"#canvas/runtime";import Hn,{useContext as qr,useEffect as Qe,useMemo as en,useRef as Ta,useState as He}from"react";import{createPortal as La}from"react-dom";import{createContext as Sa}from"react";var Qt=Sa(()=>{});import{jsxDEV as se,Fragment as $a}from"react/jsx-dev-runtime";class zr extends Hn.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.reportError({revision:this.props.revision,filename:this.props.filename,message:e.message,...e.stack?{stack:e.stack}:{},...t.componentStack?{componentStack:t.componentStack}:{}})}render(){if(!this.state.error)return this.props.children;return se(Vr,{message:this.state.error.message},void 0,!1,void 0,this)}}function Vr({message:e}){return se("div",{className:"bg-accent-red-muted rounded-lg p-5",children:[se("h3",{className:"font-body font-semibold text-accent-red mb-2",children:"Canvas render failed"},void 0,!1,void 0,this),se("pre",{className:"text-code font-mono text-text-secondary whitespace-pre-wrap",children:e},void 0,!1,void 0,this),se("p",{className:"text-meta font-body text-text-tertiary mt-3",children:"The error was sent back to the canvas author."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Ct({revision:e,filename:t}){let n=qr(Na),r=_e(),o=qr(Qt),[i,s]=He(null),[l,a]=He(null),[c,u]=He(!0),d=Ta(null),{annotations:f,addAnnotationWithId:p,removeAnnotation:m,updateAnnotation:v,addAnnotationImage:g,removeAnnotationImage:w,activeAnnotationId:h,setActiveAnnotationId:b,registerCanvasRendered:k}=mt(),y=en(()=>f.filter((A)=>!A.filePath&&(!A.canvasFile||A.canvasFile===t)),[f,t]),[E,R]=He(null),[C,M]=He(null),[L,B]=He(null),[j,W]=He(null),[de,N]=He(!1);Qe(()=>{u(!0),a(null),W(null),r.loadCanvasModule(t,e).then((A)=>{s(()=>A.default),u(!1)}).catch((A)=>{let P=A instanceof Error?A:Error(String(A));a(P.message),u(!1),o({revision:e,filename:t,message:P.message,...P.stack?{stack:P.stack}:{}})})},[n,e,t,o]),Qe(()=>{if(i)k(t)},[i,t,k]);let _=document.getElementById("plan-scroll-container"),{popovers:z,isPopoverOpen:X}=Je({containerRef:d,restoreKey:i,restoreAnnotations:y,extractContext:(A)=>Ge(A,d.current),canvasFile:t,scrollContainer:_}),{popovers:G,isDrawing:J,isPopoverOpen:V}=yo({containerRef:d,restoreKey:i,canvasFile:t,scrollContainer:_}),O=X||V,Z=en(()=>{let A=new Map;for(let P of y)if(P.snippet.startsWith("["))A.set(P.snippet,P.id);return A},[y]);Qe(()=>{let A=d.current;if(!A)return;let P=(T)=>{if(L||O||J)return;let H=T.target;if(H.closest("[data-block-comment-btn]"))return;N(!1);let F=H.closest(kt);if(F&&A.contains(F)){let pe=gt(A).indexOf(F);W(pe>=0?pe:null)}else W(null);let oe=H.closest(Ke);if(oe&&A.contains(oe)){M(oe);let ae=Me(oe),pe=ae?Z.get(ae):void 0;if(pe&&pe!==h)b(pe)}else M(null)},Y=(T)=>{if(L||O)return;if(T.relatedTarget?.closest("[data-block-comment-btn]"))return;M(null),b(null)};return A.addEventListener("mousemove",P),A.addEventListener("mouseleave",Y),()=>{A.removeEventListener("mousemove",P),A.removeEventListener("mouseleave",Y)}},[i,L,O,J,Z,h]),Qe(()=>{let A=(P)=>{let Y=P.target.tagName;if(Y==="INPUT"||Y==="TEXTAREA"||P.target.isContentEditable)return;if(L||O)return;let T=d.current;if(!T)return;if(P.key==="ArrowDown"){P.preventDefault(),N(!0);let H=gt(T);if(H.length===0)return;W((F)=>{if(F===null)return 0;return Math.min(F+1,H.length-1)})}else if(P.key==="ArrowUp"){P.preventDefault(),N(!0);let H=gt(T);if(H.length===0)return;W((F)=>{if(F===null)return H.length-1;return Math.max(F-1,0)})}else if(P.key==="a"||P.key==="A"){if(j===null||!T)return;let F=gt(T)[j];if(!F)return;if(!F.matches(Ke))return;P.preventDefault();let oe=Me(F);if(!oe)return;let ae=Z.get(oe);if(ae)b(ae),B({anchorEl:F,snippet:oe,annId:ae});else B({anchorEl:F,snippet:oe})}else if(P.key===" "||P.key==="Enter"){if(j===null)return;let F=gt(T)[j];if(!F)return;let oe=F.getAttribute("data-md");if(oe==="choice-option"||oe==="multichoice-option")P.preventDefault(),F.dispatchEvent(new CustomEvent("kb-select",{bubbles:!0}));else if(oe==="userinput"){P.preventDefault();let ae=F.querySelector("textarea");if(ae){ae.focus();let pe=(Te)=>{if(Te.key==="Escape")Te.preventDefault(),ae.blur(),N(!0)};ae.addEventListener("keydown",pe),ae.addEventListener("blur",()=>ae.removeEventListener("keydown",pe),{once:!0})}}else if(oe==="rangeinput"){P.preventDefault();let ae=F.querySelector("input[type='range']");if(ae){ae.focus();let pe=(Te)=>{if(Te.key==="Escape"||Te.key==="ArrowUp"||Te.key==="ArrowDown")Te.preventDefault(),ae.blur(),N(!0)};ae.addEventListener("keydown",pe),ae.addEventListener("blur",()=>ae.removeEventListener("keydown",pe),{once:!0})}}}else if(P.key==="Escape")W(null),N(!1),b(null)};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[j,L,O,Z]),Qe(()=>{let A=d.current;if(!A||j===null||!de)return;let Y=gt(A)[j];if(!Y)return;Y.style.outline="2px solid var(--color-accent-blue)",Y.style.outlineOffset="-2px",Y.style.borderRadius="8px",Y.scrollIntoView({block:"nearest",behavior:"smooth"});let T=Me(Y),H=T?Z.get(T):void 0;if(H)b(H);return()=>{Y.style.outline="",Y.style.outlineOffset="",Y.style.borderRadius=""}},[j,de,Z]);let ue=en(()=>i?se(i,{},void 0,!1,void 0,this):null,[i]);if(c)return se("div",{className:"flex items-center justify-center h-64 text-text-tertiary font-body text-body",children:"Loading canvas..."},void 0,!1,void 0,this);if(l)return se(Vr,{message:l},void 0,!1,void 0,this);if(!i)return se("div",{className:"text-text-tertiary text-center py-8 font-body text-body",children:"No canvas loaded"},void 0,!1,void 0,this);return se(Ca.Provider,{value:t,children:[se("div",{ref:d,className:"plan-content plan-updated","data-canvas-file":t,children:se(zr,{revision:e,filename:t,reportError:o,children:ue},`${e}:${t}`,!1,void 0,this)},void 0,!1,void 0,this),E&&se(Pa,{note:E.note,onSave:(A)=>{v(E.id,A),R(null)},onCancel:()=>R(null)},void 0,!1,void 0,this),z,G,se(Ma,{containerRef:d,hoveredBlock:C,focusedBlockIndex:j,blockPopover:L,blockAnnotationMap:Z,activeAnnotationId:h,onOpen:(A,P,Y)=>{if(Y)b(Y),B({anchorEl:A,snippet:P,annId:Y});else B({anchorEl:A,snippet:P})}},void 0,!1,void 0,this),L&&!L.annId&&se(Ie,{anchorEl:L.anchorEl,scrollContainer:_,snippet:L.snippet,truncateAt:80,onAdd:(A,P)=>{let Y=ve();p(Y,L.snippet,A,void 0,void 0,P,t),B(null)},onCancel:()=>B(null)},void 0,!1,void 0,this),L?.annId&&(()=>{let A=y.find((P)=>P.id===L.annId);if(!A)return null;return se(ut,{anchorEl:L.anchorEl,scrollContainer:_,initialNote:A.note,initialImages:A.images,onUpdate:(P,Y)=>{v(L.annId,P);let T=A.images||[];for(let H of Y)if(!T.includes(H))g(L.annId,H);for(let H of T)if(!Y.includes(H))w(L.annId,H)},onDelete:()=>{m(L.annId),b(null),B(null)},onClose:()=>B(null)},void 0,!1,void 0,this)})()]},void 0,!0,void 0,this)}function gt(e){return Array.from(e.querySelectorAll(kt))}function Ma({containerRef:e,hoveredBlock:t,focusedBlockIndex:n,blockPopover:r,blockAnnotationMap:o,activeAnnotationId:i,onOpen:s}){let[l,a]=He([]);Qe(()=>{let p=e.current;if(!p||o.size===0){a([]);return}let m=[];for(let v of p.querySelectorAll(Ke)){let g=Me(v);if(g&&o.has(g))m.push(v)}a(m)},[o,e.current]);let[c,u]=He(null);Qe(()=>{if(!i||!e.current){u(null);return}for(let p of e.current.querySelectorAll(kt)){let m=Me(p);if(m&&o.get(m)===i){u(p);return}}u(null)},[i,o]),Qe(()=>{if(!c)return;return c.style.boxShadow="inset 0 0 0 1.5px var(--color-highlight-bg)",c.style.borderRadius="8px",()=>{c.style.boxShadow="",c.style.borderRadius=""}},[c]);let d=en(()=>{if(n===null||!e.current)return null;let p=gt(e.current)[n];if(!p)return null;return p.matches(Ke)?p:null},[n,e.current]),f=en(()=>{let p=new Set(l);if(t)p.add(t);if(d)p.add(d);if(r?.anchorEl)p.add(r.anchorEl);return Array.from(p)},[l,t,d,r]);return se($a,{children:f.map((p)=>se(Ia,{block:p,isHovered:p===t||p===d||p===r?.anchorEl,blockAnnotationMap:o,activeAnnotationId:i,onOpen:s},p.getAttribute("data-task-id")||p.getAttribute("data-md-title")||p.textContent?.slice(0,30)||"block",!1,void 0,this))},void 0,!1,void 0,this)}function Ia({block:e,isHovered:t,blockAnnotationMap:n,activeAnnotationId:r,onOpen:o}){let i=Me(e);if(!i)return null;let s=n.get(i),l=!!s;return La(se("button",{"data-block-comment-btn":!0,onClick:(c)=>{c.stopPropagation(),o(c.currentTarget,i,s)},className:`absolute top-1 right-1 z-10 w-6 h-6 flex items-center justify-center rounded transition-all duration-150 ${l?s===r?"text-accent-amber bg-accent-amber-muted":"text-accent-amber opacity-60 hover:opacity-100":t?"text-text-disabled hover:text-text-tertiary opacity-50 hover:opacity-100":"text-text-disabled opacity-0 group-hover/section:opacity-20 hover:!opacity-80"}`,title:l?"Edit annotation":"Add annotation",children:se("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:l?"currentColor":"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:se("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),e)}function Pa({note:e,onSave:t,onCancel:n}){let[r,o]=Hn.useState(e),i=Hn.useRef(null);return Hn.useEffect(()=>{i.current?.focus(),i.current?.select()},[]),se("div",{className:"fixed inset-0 z-50 bg-black/40 flex items-center justify-center",onClick:n,children:se("div",{className:"bg-bg-elevated border border-border-hover rounded-lg shadow-md p-4 w-80",onClick:(s)=>s.stopPropagation(),children:[se("div",{className:"text-tiny uppercase tracking-widest text-text-tertiary font-body mb-2",children:"Edit annotation"},void 0,!1,void 0,this),se("textarea",{ref:i,value:r,onChange:(s)=>o(s.currentTarget.value),className:"w-full bg-transparent border-none text-body font-body text-text-primary resize-vertical focus:outline-none min-h-[60px]",onKeyDown:(s)=>{if(s.key==="Enter"&&(s.ctrlKey||s.metaKey))t(r.trim());if(s.key==="Escape")n()}},void 0,!1,void 0,this),se("div",{className:"flex justify-end gap-2 mt-2",children:[se("button",{onClick:n,className:"text-meta text-text-tertiary font-body px-3 py-1",children:"Cancel"},void 0,!1,void 0,this),se("button",{onClick:()=>t(r.trim()),className:"text-meta font-medium font-body px-3 py-1 rounded-md bg-highlight-bg text-text-primary border border-highlight-border",children:"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}import{useEffect as Ua,useState as es,useContext as ts,useMemo as Ga}from"react";import{SessionContext as Ka}from"#canvas/runtime";var Wr={alg:"AES-GCM",v:1};async function Ur(e){let t=Da(e);return crypto.subtle.importKey("raw",t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function et(e,t){let n=crypto.getRandomValues(new Uint8Array(12)),r=new TextEncoder().encode(t),o=await crypto.subtle.encrypt({name:"AES-GCM",iv:n},e,r),i=new Uint8Array(n.byteLength+o.byteLength);return i.set(n,0),i.set(new Uint8Array(o),n.byteLength),Ha(i)}async function tn(e,t){let n=Gr(t);if(n.byteLength<28)throw Error("Ciphertext too short");let r=n.subarray(0,12),o=n.subarray(12),i=await crypto.subtle.decrypt({name:"AES-GCM",iv:r},e,o);return new TextDecoder().decode(i)}function Ha(e){let t="",n=32768;for(let r=0;r<e.byteLength;r+=n)t+=String.fromCharCode.apply(null,Array.from(e.subarray(r,r+n)));return btoa(t)}function Gr(e){let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function Da(e){let t=e.replace(/-/g,"+").replace(/_/g,"/")+"===".slice((e.length+3)%4);return Gr(t)}function Oa(){if(typeof window>"u")return null;let e=window.location.hash.replace(/^#/,"");if(!e)return null;for(let t of e.split("&")){let[n,r]=t.split("=");if(n==="k"&&r)return decodeURIComponent(r)}return null}function Fa(){if(typeof window<"u"&&window.__CANVAS_SHARE__?.shareId){let t=Oa();return{isShared:!0,shareId:window.__CANVAS_SHARE__.shareId,encryptionKey:t?Ur(t):null}}return{isShared:!1,sessionId:typeof window<"u"?window.location.pathname.replace("/s/",""):""}}var re=Fa();function Ba(){return re.isShared&&re.encryptionKey!==null}function _a(){return re.isShared?re.shareId:re.sessionId}function ja(){if(re.isShared)return`/s/${re.shareId}/meta`;return`/api/session/${re.sessionId}/meta`}function qa(e,t){let n=e.replace(/\.jsx$/,".js");if(re.isShared)return`/s/${re.shareId}/canvas/${encodeURIComponent(n)}`;let r=t?`?rev=${t}&t=${Date.now()}`:`?t=${Date.now()}`;return`/api/session/${re.sessionId}/canvas/${encodeURIComponent(n)}${r}`}function za(){if(re.isShared)return`/s/${re.shareId}/upload`;return`/api/session/${re.sessionId}/upload`}async function Kr(){let e=await fetch(ja());if(!e.ok)throw Error(`meta ${e.status}`);let t=await e.json();if(t.encryption&&re.isShared&&re.encryptionKey){let n=await re.encryptionKey;if(t.origin){let o={...t.origin};if(o.sessionId)o.sessionId=await tn(n,o.sessionId);if(o.label)o.label=await tn(n,o.label);t.origin=o}let r=t.revisions;if(Array.isArray(r)){for(let o of r)if(o.label)try{o.label=await tn(n,o.label)}catch{}}}return t}async function Va(e,t){let n=qa(e,t);if(!Ba())return import(n);let r=await fetch(n);if(!r.ok)throw Error(`canvas ${r.status}`);let o=await r.text(),i=await re.encryptionKey,s=await tn(i,o),l=new Blob([s],{type:"application/javascript"}),a=URL.createObjectURL(l);try{return await import(a)}finally{setTimeout(()=>URL.revokeObjectURL(a),0)}}var Zr="canvas-reviewer-identity";function Ho(){try{let e=localStorage.getItem(Zr);if(!e)return null;return JSON.parse(e)}catch{return null}}function Xr(e){let t=Ho();if(!t)t={id:crypto.randomUUID?.()||String(Date.now()),name:e};else t.name=e;return localStorage.setItem(Zr,JSON.stringify(t)),t}async function Wa(e,t){let n=await Promise.all(e.annotations.map(async(r)=>{let o={id:r.id,createdAt:r.createdAt,snippet:await et(t,String(r.snippet??"")),note:await et(t,String(r.note??""))};if(r.filePath)o.filePath=await et(t,String(r.filePath));if(r.canvasFile)o.canvasFile=await et(t,String(r.canvasFile));if(r.context!==void 0&&r.context!==null)o.context=await et(t,JSON.stringify(r.context));if(r.attachments)o.attachments=r.attachments;return o}));return{author:{id:e.author.id,name:await et(t,e.author.name)},revision:e.revision,annotations:n,...e.generalNote?{generalNote:await et(t,e.generalNote)}:{},encryption:Wr}}async function Jr(e){if(!re.isShared)throw Error("submitSharedFeedback called outside shared mode");let t=e;if(re.encryptionKey){let r=await re.encryptionKey;t=await Wa(e,r)}let n=await fetch(`/s/${re.shareId}/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){let r=await n.text().catch(()=>"");throw Error(`Feedback submission failed: ${n.status} ${r}`)}}var je=!re.isShared,Yr=!re.isShared,Qr={get sessionId(){return _a()},isShared:re.isShared,fsAvailable:je,uploadUrl:za,loadCanvasModule:Va};import{jsxDEV as U,Fragment as Do}from"react/jsx-dev-runtime";function ns({embedded:e}={}){let t=ts(Ka),{annotations:n,addAnnotation:r}=De(),{setActiveView:o}=ts($e),[i,s]=es(!1),[l,a]=es({});if(!je)return U("div",{className:e?"px-4 py-3":"p-4",children:[U("div",{className:"text-[11px] uppercase tracking-widest text-text-tertiary font-body mb-2",children:"Files"},void 0,!1,void 0,this),U("p",{className:"text-[11px] text-text-tertiary font-body leading-relaxed",children:"File browsing is not available in shared view. File previews embedded in the canvas still work."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{annCountMap:c,annotatedFiles:u}=Ga(()=>{let h=new Map;for(let b of n)if(b.filePath&&b.filePath!==Se)h.set(b.filePath,(h.get(b.filePath)||0)+1);return{annCountMap:h,annotatedFiles:[...h.keys()]}},[n]),d=async(h)=>{let k=await(await fetch(`/api/tree?session=${t}&path=${encodeURIComponent(h)}`)).json();if(k.entries)a((y)=>({...y,[h]:{entries:k.entries,expanded:!0,loaded:!0}}))};Ua(()=>{if(!i&&!l[""])d("")},[i]);let f=(h)=>{if(l[h]?.loaded)a((b)=>({...b,[h]:{...b[h],expanded:!b[h].expanded}}));else d(h)},p=(h)=>{o({type:"file",path:h})},m=async(h)=>{let k=await(await fetch(`/api/file?session=${t}&path=${encodeURIComponent(h)}`)).json();if(!k.error){let y=k.content.split(`
70
70
  `).slice(0,3).join(`
71
- `)+(y.content.split(`
71
+ `)+(k.content.split(`
72
72
  `).length>3?`
73
- ...`:"");X(L,"Include this file for context",T)}},O=async(T)=>{let M=[];if(U[T]?.loaded)M=U[T].entries;else{let L=await(await fetch(`/api/tree?session=${Q}&path=${encodeURIComponent(T)}`)).json();if(L.entries)M=L.entries}await Promise.all(M.filter((y)=>y.type==="file").map((y)=>N(T?`${T}/${y.name}`:y.name)))},B=(T)=>K.get(T)||0,A=(T,M=0)=>{let y=U[T];if(!y?.expanded)return null;return y.entries.map((L)=>{let w=T?`${T}/${L.name}`:L.name,j=B(w);return c("div",{children:[c("div",{className:"group/item flex items-center py-[3px] hover:bg-bg-elevated text-[13px] font-body cursor-default transition-colors duration-100",style:{paddingLeft:`${16+M*16}px`,paddingRight:"8px"},children:L.type==="dir"?c(b5,{children:[c("span",{onClick:()=>W(w),className:"flex items-center gap-1.5 flex-1 text-text-secondary hover:text-text-primary cursor-pointer truncate",children:[c(t1,{name:L.name,type:"dir",expanded:U[w]?.expanded},void 0,!1,void 0,this),c("span",{className:"truncate",children:L.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c("button",{onClick:(k)=>{k.stopPropagation(),O(w)},className:"text-[11px] text-text-tertiary hover:text-text-secondary opacity-0 group-hover/item:opacity-100 transition-opacity px-1 flex-shrink-0",title:"Add all files in folder",children:"+"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):c(b5,{children:[c("span",{onClick:()=>H(w),className:`flex-1 truncate cursor-pointer flex items-center gap-1.5 ${j>0?"text-text-primary":"text-text-secondary hover:text-text-primary"}`,children:[c(t1,{name:L.name,type:"file"},void 0,!1,void 0,this),c("span",{className:"truncate",children:L.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c("div",{className:"flex items-center gap-1 flex-shrink-0 ml-1",children:[j>0&&c("span",{className:"text-[10px] font-medium bg-badge-bg text-accent-amber px-1.5 py-px rounded-full min-w-[18px] text-center",children:j},void 0,!1,void 0,this),c("button",{onClick:(k)=>{k.stopPropagation(),N(w)},className:"text-[11px] text-text-tertiary hover:text-text-secondary opacity-0 group-hover/item:opacity-100 transition-opacity px-1",title:"Add file to context",children:"+"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),L.type==="dir"&&A(w,M+1)]},w,!0,void 0,this)})};if($)return c(b5,{children:[c("div",{className:"flex items-center justify-between px-4 pt-3 pb-2 flex-shrink-0",children:c("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:"Files"},void 0,!1,void 0,this)},void 0,!1,void 0,this),c("div",{className:"flex-1 overflow-y-auto",children:A("")},void 0,!1,void 0,this),_.length>0&&c("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:[c("div",{className:"text-[10px] uppercase tracking-widest text-text-tertiary font-body mb-1.5",children:"Referenced"},void 0,!1,void 0,this),_.map((T)=>c("div",{onClick:()=>H(T),className:"flex items-center justify-between text-[12px] font-body text-text-secondary hover:text-text-primary cursor-pointer py-0.5",children:[c("span",{className:"truncate",children:T.split("/").pop()},void 0,!1,void 0,this),c("span",{className:"text-[10px] font-medium bg-badge-bg text-accent-amber px-1.5 py-px rounded-full min-w-[18px] text-center flex-shrink-0 ml-1",children:B(T)},void 0,!1,void 0,this)]},T,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(Z)return c("div",{className:"hidden lg:flex w-8 border-r border-border-subtle bg-bg-surface flex-col items-center flex-shrink-0",children:c("button",{onClick:()=>q(!1),className:"mt-3 p-1 text-text-tertiary hover:text-text-secondary transition-colors",children:c("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:c("path",{d:"M5 3l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);return c("div",{className:"hidden lg:flex w-60 border-r border-border-subtle bg-bg-surface flex-col flex-shrink-0 overflow-hidden",children:[c("div",{className:"flex items-center justify-between px-4 pt-4 pb-3 flex-shrink-0",children:[c("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:"Files"},void 0,!1,void 0,this),c("button",{onClick:()=>q(!0),className:"text-text-tertiary hover:text-text-secondary transition-colors p-0.5",children:c("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:c("path",{d:"M9 3l-4 4 4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),c("div",{className:"flex-1 overflow-y-auto",children:A("")},void 0,!1,void 0,this),_.length>0&&c("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:[c("div",{className:"text-[10px] uppercase tracking-widest text-text-tertiary font-body mb-1.5",children:"Referenced"},void 0,!1,void 0,this),_.map((T)=>c("div",{onClick:()=>H(T),className:"flex items-center justify-between text-[12px] font-body text-text-secondary hover:text-text-primary cursor-pointer py-0.5",children:[c("span",{className:"truncate",children:T.split("/").pop()},void 0,!1,void 0,this),c("span",{className:"text-[10px] font-medium bg-badge-bg text-accent-amber px-1.5 py-px rounded-full min-w-[18px] text-center flex-shrink-0 ml-1",children:B(T)},void 0,!1,void 0,this)]},T,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useEffect as t3,useState as w0,useContext as v$,useCallback as u$,useRef as k2,useMemo as n3}from"react";import{SessionContext as g$}from"#canvas/runtime";var V2={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",py:"python",rs:"rust",go:"go",rb:"ruby",java:"java",json:"json",yaml:"yaml",yml:"yaml",md:"markdown",css:"css",html:"html",sh:"bash",bash:"bash",toml:"toml",sql:"sql",xml:"xml",c:"c",cpp:"cpp",h:"c"};import{jsxDEV as L1}from"react/jsx-dev-runtime";function e3($){let Q=$ instanceof HTMLElement?$:$.parentElement;while(Q){if(Q.hasAttribute("data-line-num"))return Q;Q=Q.parentElement}return null}function h$($){let Q=$.toString().trim(),J=e3($.startContainer),X=e3($.endContainer),Y=J?parseInt(J.getAttribute("data-line-num"),10):void 0,Z=X?parseInt(X.getAttribute("data-line-num"),10):void 0,q="",U="";if(Q.length<30&&J&&J===X){let G=J.querySelector("code");if(G){let K=G.textContent||"",_=K.indexOf(Q);if(_>=0)q=K.slice(0,_).trimStart(),U=K.slice(_+Q.length).trimEnd()}}return{before:q,after:U,hierarchy:[],lineStart:Y,lineEnd:Z}}function $4({path:$}){if(!p1)return L1("div",{className:"max-w-[720px] mx-auto px-6 pt-12 pb-32",children:L1("div",{className:"p-4 rounded-lg border border-border-subtle bg-bg-surface",children:[L1("div",{className:"text-[11px] uppercase tracking-widest text-text-tertiary font-body mb-2",children:"File not available"},void 0,!1,void 0,this),L1("p",{className:"text-[13px] text-text-secondary font-body leading-relaxed",children:["Opening ",L1("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:$},void 0,!1,void 0,this)," requires filesystem access, which isn't available in shared view. If the canvas author wanted this file visible, they should embed it as a ",L1("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:"<FilePreview>"},void 0,!1,void 0,this)," in the canvas."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);let Q=v$(g$),{annotations:J,addAnnotationWithId:X,activeAnnotationId:Y,setActiveAnnotationId:Z}=v1(),[q,U]=w0(null),[G,K]=w0("text"),[_,z]=w0(!0),[W,H]=w0(null),N=k2(null),[O,B]=w0(null),[A,T]=w0(null),M=k2(null),y=k2(null),L=k2([]),w=J.filter((R)=>R.filePath===$),j=N.current?.closest("#plan-scroll-container"),{popovers:k,openCreatePopover:m}=n1({containerRef:N,restoreKey:`${q}:${$}`,restoreAnnotations:w,extractContext:h$,filePath:$,scrollContainer:j});t3(()=>{z(!0),H(null),fetch(`/api/file?session=${Q}&path=${encodeURIComponent($)}`).then((R)=>R.json()).then((R)=>{if(R.error)H(R.error),z(!1);else U(R.content),K(R.language||"text"),z(!1)}).catch(()=>{H("Failed to fetch file"),z(!1)})},[Q,$]);let D=u$((R,g)=>{R.preventDefault(),M.current=g,y.current=g,B(g),T(g)},[]);t3(()=>{let R=(p)=>{if(M.current===null)return;let t=p.target.closest("[data-line-num]");if(t){let l=parseInt(t.getAttribute("data-line-num"),10);y.current=l,T(l)}},g=()=>{let p=M.current;if(p===null)return;M.current=null;let t=y.current??p,l=Math.min(p,t),o=Math.max(p,t),X1=L.current.slice(l-1,o).join(`
74
- `);if(!X1.trim()){B(null),T(null);return}let z1=`__pending_${Date.now()}`,M1={before:"",after:"",hierarchy:[],lineStart:l,lineEnd:o};if(N.current){let C=N.current.querySelectorAll("[data-line-num]"),E=C[l-1],b=C[o-1];if(E&&b){let S=E.querySelector("code"),V=b.querySelector("code");if(S&&V)try{let i=document.createRange();i.setStartBefore(S.firstChild||S),i.setEndAfter(V.lastChild||V),i1(i,z1)}catch{}}let P=C[o-1];if(P)m(P,z1,X1,M1)}B(null),T(null)};return document.addEventListener("mousemove",R),document.addEventListener("mouseup",g),()=>{document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",g)}},[]);let v=n3(()=>{if(!q)return null;let R=window.hljs;if(!R)return null;let g=$.split(".").pop()||"",p=V2[g];try{return(p?R.highlight(q,{language:p}):R.highlightAuto(q)).value.split(`
75
- `)}catch{return null}},[q,$]);if(_)return L1("div",{className:"flex items-center justify-center h-64 text-text-tertiary font-body text-[13px]",children:["Loading ",$,"..."]},void 0,!0,void 0,this);if(W)return L1("div",{className:"p-8 text-accent-red font-body text-[13px]",children:W},void 0,!1,void 0,this);if(!q)return null;let u=q.split(`
76
- `);L.current=u;let d=n3(()=>{if(O===null)return null;let R=A??O;return{start:Math.min(O,R),end:Math.max(O,R)}},[O,A]),K1=()=>{let R=q.split(`
73
+ ...`:"");r(y,"Include this file for context",h)}},v=async(h)=>{let b=[];if(l[h]?.loaded)b=l[h].entries;else{let y=await(await fetch(`/api/tree?session=${t}&path=${encodeURIComponent(h)}`)).json();if(y.entries)b=y.entries}await Promise.all(b.filter((k)=>k.type==="file").map((k)=>m(h?`${h}/${k.name}`:k.name)))},g=(h)=>c.get(h)||0,w=(h,b=0)=>{let k=l[h];if(!k?.expanded)return null;return k.entries.map((y)=>{let E=h?`${h}/${y.name}`:y.name,R=g(E);return U("div",{children:[U("div",{className:"group/item flex items-center py-[3px] hover:bg-bg-elevated text-[13px] font-body cursor-default transition-colors duration-100",style:{paddingLeft:`${16+b*16}px`,paddingRight:"8px"},children:y.type==="dir"?U(Do,{children:[U("span",{onClick:()=>f(E),className:"flex items-center gap-1.5 flex-1 text-text-secondary hover:text-text-primary cursor-pointer truncate",children:[U(Ye,{name:y.name,type:"dir",expanded:l[E]?.expanded},void 0,!1,void 0,this),U("span",{className:"truncate",children:y.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U("button",{onClick:(C)=>{C.stopPropagation(),v(E)},className:"text-[11px] text-text-tertiary hover:text-text-secondary opacity-0 group-hover/item:opacity-100 transition-opacity px-1 flex-shrink-0",title:"Add all files in folder",children:"+"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):U(Do,{children:[U("span",{onClick:()=>p(E),className:`flex-1 truncate cursor-pointer flex items-center gap-1.5 ${R>0?"text-text-primary":"text-text-secondary hover:text-text-primary"}`,children:[U(Ye,{name:y.name,type:"file"},void 0,!1,void 0,this),U("span",{className:"truncate",children:y.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U("div",{className:"flex items-center gap-1 flex-shrink-0 ml-1",children:[R>0&&U("span",{className:"text-[10px] font-medium bg-badge-bg text-accent-amber px-1.5 py-px rounded-full min-w-[18px] text-center",children:R},void 0,!1,void 0,this),U("button",{onClick:(C)=>{C.stopPropagation(),m(E)},className:"text-[11px] text-text-tertiary hover:text-text-secondary opacity-0 group-hover/item:opacity-100 transition-opacity px-1",title:"Add file to context",children:"+"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),y.type==="dir"&&w(E,b+1)]},E,!0,void 0,this)})};if(e)return U(Do,{children:[U("div",{className:"flex items-center justify-between px-4 pt-3 pb-2 flex-shrink-0",children:U("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:"Files"},void 0,!1,void 0,this)},void 0,!1,void 0,this),U("div",{className:"flex-1 overflow-y-auto",children:w("")},void 0,!1,void 0,this),u.length>0&&U("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:[U("div",{className:"text-[10px] uppercase tracking-widest text-text-tertiary font-body mb-1.5",children:"Referenced"},void 0,!1,void 0,this),u.map((h)=>U("div",{onClick:()=>p(h),className:"flex items-center justify-between text-[12px] font-body text-text-secondary hover:text-text-primary cursor-pointer py-0.5",children:[U("span",{className:"truncate",children:h.split("/").pop()},void 0,!1,void 0,this),U("span",{className:"text-[10px] font-medium bg-badge-bg text-accent-amber px-1.5 py-px rounded-full min-w-[18px] text-center flex-shrink-0 ml-1",children:g(h)},void 0,!1,void 0,this)]},h,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(i)return U("div",{className:"hidden lg:flex w-8 border-r border-border-subtle bg-bg-surface flex-col items-center flex-shrink-0",children:U("button",{onClick:()=>s(!1),className:"mt-3 p-1 text-text-tertiary hover:text-text-secondary transition-colors",children:U("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:U("path",{d:"M5 3l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);return U("div",{className:"hidden lg:flex w-60 border-r border-border-subtle bg-bg-surface flex-col flex-shrink-0 overflow-hidden",children:[U("div",{className:"flex items-center justify-between px-4 pt-4 pb-3 flex-shrink-0",children:[U("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:"Files"},void 0,!1,void 0,this),U("button",{onClick:()=>s(!0),className:"text-text-tertiary hover:text-text-secondary transition-colors p-0.5",children:U("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:U("path",{d:"M9 3l-4 4 4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U("div",{className:"flex-1 overflow-y-auto",children:w("")},void 0,!1,void 0,this),u.length>0&&U("div",{className:"border-t border-border-subtle px-4 py-3 flex-shrink-0",children:[U("div",{className:"text-[10px] uppercase tracking-widest text-text-tertiary font-body mb-1.5",children:"Referenced"},void 0,!1,void 0,this),u.map((h)=>U("div",{onClick:()=>p(h),className:"flex items-center justify-between text-[12px] font-body text-text-secondary hover:text-text-primary cursor-pointer py-0.5",children:[U("span",{className:"truncate",children:h.split("/").pop()},void 0,!1,void 0,this),U("span",{className:"text-[10px] font-medium bg-badge-bg text-accent-amber px-1.5 py-px rounded-full min-w-[18px] text-center flex-shrink-0 ml-1",children:g(h)},void 0,!1,void 0,this)]},h,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useEffect as os,useState as Nt,useContext as Za,useCallback as Xa,useRef as On,useMemo as rs}from"react";import{SessionContext as Ja}from"#canvas/runtime";var Dn={ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",py:"python",rs:"rust",go:"go",rb:"ruby",java:"java",json:"json",yaml:"yaml",yml:"yaml",md:"markdown",css:"css",html:"html",sh:"bash",bash:"bash",toml:"toml",sql:"sql",xml:"xml",c:"c",cpp:"cpp",h:"c"};import{jsxDEV as ye}from"react/jsx-dev-runtime";function ss(e){let t=e instanceof HTMLElement?e:e.parentElement;while(t){if(t.hasAttribute("data-line-num"))return t;t=t.parentElement}return null}function Ya(e){let t=e.toString().trim(),n=ss(e.startContainer),r=ss(e.endContainer),o=n?parseInt(n.getAttribute("data-line-num"),10):void 0,i=r?parseInt(r.getAttribute("data-line-num"),10):void 0,s="",l="";if(t.length<30&&n&&n===r){let a=n.querySelector("code");if(a){let c=a.textContent||"",u=c.indexOf(t);if(u>=0)s=c.slice(0,u).trimStart(),l=c.slice(u+t.length).trimEnd()}}return{before:s,after:l,hierarchy:[],lineStart:o,lineEnd:i}}function is({path:e}){if(!je)return ye("div",{className:"max-w-[720px] mx-auto px-6 pt-12 pb-32",children:ye("div",{className:"p-4 rounded-lg border border-border-subtle bg-bg-surface",children:[ye("div",{className:"text-[11px] uppercase tracking-widest text-text-tertiary font-body mb-2",children:"File not available"},void 0,!1,void 0,this),ye("p",{className:"text-[13px] text-text-secondary font-body leading-relaxed",children:["Opening ",ye("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:e},void 0,!1,void 0,this)," requires filesystem access, which isn't available in shared view. If the canvas author wanted this file visible, they should embed it as a ",ye("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:"<FilePreview>"},void 0,!1,void 0,this)," in the canvas."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);let t=Za(Ja),{annotations:n,addAnnotationWithId:r,activeAnnotationId:o,setActiveAnnotationId:i}=De(),[s,l]=Nt(null),[a,c]=Nt("text"),[u,d]=Nt(!0),[f,p]=Nt(null),m=On(null),[v,g]=Nt(null),[w,h]=Nt(null),b=On(null),k=On(null),y=On([]),E=n.filter((N)=>N.filePath===e),R=m.current?.closest("#plan-scroll-container"),{popovers:C,openCreatePopover:M}=Je({containerRef:m,restoreKey:`${s}:${e}`,restoreAnnotations:E,extractContext:Ya,filePath:e,scrollContainer:R});os(()=>{d(!0),p(null),fetch(`/api/file?session=${t}&path=${encodeURIComponent(e)}`).then((N)=>N.json()).then((N)=>{if(N.error)p(N.error),d(!1);else l(N.content),c(N.language||"text"),d(!1)}).catch(()=>{p("Failed to fetch file"),d(!1)})},[t,e]);let L=Xa((N,_)=>{N.preventDefault(),b.current=_,k.current=_,g(_),h(_)},[]);os(()=>{let N=(z)=>{if(b.current===null)return;let X=z.target.closest("[data-line-num]");if(X){let G=parseInt(X.getAttribute("data-line-num"),10);k.current=G,h(G)}},_=()=>{let z=b.current;if(z===null)return;b.current=null;let X=k.current??z,G=Math.min(z,X),J=Math.max(z,X),O=y.current.slice(G-1,J).join(`
74
+ `);if(!O.trim()){g(null),h(null);return}let Z=`__pending_${Date.now()}`,ue={before:"",after:"",hierarchy:[],lineStart:G,lineEnd:J};if(m.current){let A=m.current.querySelectorAll("[data-line-num]"),P=A[G-1],Y=A[J-1];if(P&&Y){let H=P.querySelector("code"),F=Y.querySelector("code");if(H&&F)try{let oe=document.createRange();oe.setStartBefore(H.firstChild||H),oe.setEndAfter(F.lastChild||F),Ue(oe,Z)}catch{}}let T=A[J-1];if(T)M(T,Z,O,ue)}g(null),h(null)};return document.addEventListener("mousemove",N),document.addEventListener("mouseup",_),()=>{document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",_)}},[]);let B=rs(()=>{if(!s)return null;let N=window.hljs;if(!N)return null;let _=e.split(".").pop()||"",z=Dn[_];try{return(z?N.highlight(s,{language:z}):N.highlightAuto(s)).value.split(`
75
+ `)}catch{return null}},[s,e]);if(u)return ye("div",{className:"flex items-center justify-center h-64 text-text-tertiary font-body text-[13px]",children:["Loading ",e,"..."]},void 0,!0,void 0,this);if(f)return ye("div",{className:"p-8 text-accent-red font-body text-[13px]",children:f},void 0,!1,void 0,this);if(!s)return null;let j=s.split(`
76
+ `);y.current=j;let W=rs(()=>{if(v===null)return null;let N=w??v;return{start:Math.min(v,N),end:Math.max(v,N)}},[v,w]),de=()=>{let N=s.split(`
77
77
  `).slice(0,3).join(`
78
- `)+(u.length>3?`
79
- ...`:""),g=O1();X(g,R,"",$),Z(g)};return L1("div",{children:[L1("pre",{ref:N,className:"text-code font-mono text-text-code bg-bg-base select-text cursor-text py-3 hljs",children:u.map((R,g)=>{let p=g+1,t=d&&p>=d.start&&p<=d.end;return L1("div",{"data-line-num":p,className:`flex px-5 ${t?"bg-accent-blue/10":"hover:bg-bg-elevated-half"}`,children:[L1("span",{className:"text-text-tertiary select-none w-10 text-right pr-4 shrink-0 py-px text-[12px] cursor-pointer opacity-40 hover:opacity-100 hover:text-accent-blue",onMouseDown:(l)=>D(l,p),children:p},void 0,!1,void 0,this),v?L1("code",{className:"py-px",dangerouslySetInnerHTML:{__html:v[g]||" "}},void 0,!1,void 0,this):L1("code",{className:"py-px",children:R||" "},void 0,!1,void 0,this)]},g,!0,void 0,this)})},void 0,!1,void 0,this),k]},void 0,!0,void 0,this)}import{useEffect as Q4,useState as J4,useRef as p$}from"react";import{jsxDEV as u1}from"react/jsx-dev-runtime";function Y4($,Q){if(Q){let J=Q.replace(/\/+$/,"").split("/");return J[J.length-1]||$}return $.length>30?$.slice(0,30)+"...":$}function I5({currentSessionId:$,projectRoot:Q}){let[J,X]=J4([]),[Y,Z]=J4(!1),q=p$(null);Q4(()=>{if(!p1)return;let K=async()=>{try{let W=await(await fetch("/api/sessions")).json();X((H)=>{let N=JSON.stringify(W);return JSON.stringify(H)===N?H:W})}catch{}};K();let _=setInterval(K,5000);return()=>clearInterval(_)},[]),Q4(()=>{if(!Y)return;let K=(_)=>{if(q.current&&!q.current.contains(_.target))Z(!1)};return document.addEventListener("mousedown",K),()=>document.removeEventListener("mousedown",K)},[Y]);let U=J.filter((K)=>K.id!==$),G=Y4($,Q);return u1("div",{className:"relative",ref:q,children:[u1("div",{className:"flex items-center gap-1.5 font-body text-body font-medium",children:[u1("a",{href:`/s/${$}`,className:"text-text-primary hover:text-text-secondary transition-colors",children:G},void 0,!1,void 0,this),U.length>0&&u1("button",{onClick:()=>Z(!Y),className:"flex items-center justify-center text-text-tertiary hover:text-text-secondary transition-colors",children:u1("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:`transition-transform duration-200 ${Y?"rotate-180":""}`,children:u1("path",{d:"M3 5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y&&U.length>0&&u1("div",{className:"absolute top-full left-0 mt-2 w-64 bg-bg-elevated border border-border-hover rounded-lg shadow-lg z-50 py-1 overflow-hidden",children:U.map((K)=>u1("a",{href:`/s/${K.id}`,className:"flex items-center gap-2.5 px-4 py-2.5 text-body font-body text-text-secondary hover:bg-bg-surface hover:text-text-primary transition-colors",children:[u1("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${K.currentRevision>0?"bg-accent-green":"bg-border-hover"}`},void 0,!1,void 0,this),u1("span",{className:"truncate",children:Y4(K.id,K.projectRoot)},void 0,!1,void 0,this)]},K.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function X4($){let Q=[];return R2($,Q,0),Q.join(`
78
+ `)+(j.length>3?`
79
+ ...`:""),_=ve();r(_,N,"",e),i(_)};return ye("div",{children:[ye("pre",{ref:m,className:"text-code font-mono text-text-code bg-bg-base select-text cursor-text py-3 hljs",children:j.map((N,_)=>{let z=_+1,X=W&&z>=W.start&&z<=W.end;return ye("div",{"data-line-num":z,className:`flex px-5 ${X?"bg-accent-blue/10":"hover:bg-bg-elevated-half"}`,children:[ye("span",{className:"text-text-tertiary select-none w-10 text-right pr-4 shrink-0 py-px text-[12px] cursor-pointer opacity-40 hover:opacity-100 hover:text-accent-blue",onMouseDown:(G)=>L(G,z),children:z},void 0,!1,void 0,this),B?ye("code",{className:"py-px",dangerouslySetInnerHTML:{__html:B[_]||" "}},void 0,!1,void 0,this):ye("code",{className:"py-px",children:N||" "},void 0,!1,void 0,this)]},_,!0,void 0,this)})},void 0,!1,void 0,this),C]},void 0,!0,void 0,this)}import{useEffect as as,useState as ls,useRef as Qa}from"react";import{jsxDEV as Oe}from"react/jsx-dev-runtime";function cs(e,t){if(t){let n=t.replace(/\/+$/,"").split("/");return n[n.length-1]||e}return e.length>30?e.slice(0,30)+"...":e}function Oo({currentSessionId:e,projectRoot:t}){let[n,r]=ls([]),[o,i]=ls(!1),s=Qa(null);as(()=>{if(!je)return;let c=async()=>{try{let f=await(await fetch("/api/sessions")).json();r((p)=>{let m=JSON.stringify(f);return JSON.stringify(p)===m?p:f})}catch{}};c();let u=setInterval(c,5000);return()=>clearInterval(u)},[]),as(()=>{if(!o)return;let c=(u)=>{if(s.current&&!s.current.contains(u.target))i(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[o]);let l=n.filter((c)=>c.id!==e),a=cs(e,t);return Oe("div",{className:"relative",ref:s,children:[Oe("div",{className:"flex items-center gap-1.5 font-body text-body font-medium",children:[Oe("a",{href:`/s/${e}`,className:"text-text-primary hover:text-text-secondary transition-colors",children:a},void 0,!1,void 0,this),l.length>0&&Oe("button",{onClick:()=>i(!o),className:"flex items-center justify-center text-text-tertiary hover:text-text-secondary transition-colors",children:Oe("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:`transition-transform duration-200 ${o?"rotate-180":""}`,children:Oe("path",{d:"M3 5l3 3 3-3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),o&&l.length>0&&Oe("div",{className:"absolute top-full left-0 mt-2 w-64 bg-bg-elevated border border-border-hover rounded-lg shadow-lg z-50 py-1 overflow-hidden",children:l.map((c)=>Oe("a",{href:`/s/${c.id}`,className:"flex items-center gap-2.5 px-4 py-2.5 text-body font-body text-text-secondary hover:bg-bg-surface hover:text-text-primary transition-colors",children:[Oe("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${c.currentRevision>0?"bg-accent-green":"bg-border-hover"}`},void 0,!1,void 0,this),Oe("span",{className:"truncate",children:cs(c.id,c.projectRoot)},void 0,!1,void 0,this)]},c.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ds(e){let t=[];return Fn(e,t,0),t.join(`
80
80
  `).replace(/\n{3,}/g,`
81
81
 
82
82
  `).trim()+`
83
- `}var c$=new Set(["CODE","SPAN","STRONG","EM","A","B","I","U","SMALL","SUB","SUP","MARK","ABBR"]);function R2($,Q,J){if(d$($)){let X=l$($);if(X)Q.push(X,"");return}for(let X of $.childNodes)if(X.nodeType===Node.ELEMENT_NODE)r$(X,Q,J);else if(X.nodeType===Node.TEXT_NODE){let Y=X.textContent?.trim();if(Y)Q.push(Y,"")}}function d$($){for(let Q of $.childNodes){if(Q.nodeType===Node.TEXT_NODE)continue;if(Q.nodeType===Node.ELEMENT_NODE){let J=Q;if(!c$.has(J.tagName)||J.hasAttribute("data-md"))return!1}}return $.childNodes.length>0}function l$($){let Q="";for(let J of $.childNodes)if(J.nodeType===Node.TEXT_NODE)Q+=J.textContent||"";else if(J.nodeType===Node.ELEMENT_NODE){let X=J;if(X.tagName==="CODE")Q+="`"+(X.textContent||"")+"`";else Q+=X.textContent||""}return Q.trim()}function r$($,Q,J){let X=$.getAttribute("data-md");if(X)switch(X){case"section":return i$($,Q,J);case"item":return o$($,Q);case"codeblock":return a$($,Q);case"callout":return s$($,Q);case"note":return t$($,Q);case"markdown":return J8($,Q);case"table":return n$($,Q);case"checklist":return e$($,Q);case"diff":return $8($,Q);case"mermaid":return Q8($,Q);case"choice":return Y8($,Q);case"multichoice":return X8($,Q);case"choice-option":case"multichoice-option":return;case"userinput":return q8($,Q);case"rangeinput":return Z8($,Q);case"checklist-item":return;case"filepreview":return G8($,Q);case"priority":return U8($,Q)}if($.querySelector("button, input, select, textarea"))return;if($.children.length>0)R2($,Q,J);else{let Y=$.textContent?.trim();if(Y)Q.push(Y,"")}}function i$($,Q,J){let X=$.getAttribute("data-md-title")||"Untitled",Y=J===0?"##":"###";Q.push(`${Y} ${X}`,"");let Z=$.querySelector(":scope > div:last-of-type");if(Z)R2(Z,Q,J+1)}function o$($,Q){let J=$.getAttribute("data-md-label")||"",X=$.getAttribute("data-md-status"),Y=$.getAttribute("data-md-badge"),Z="-";if(X==="done")Z="- [x]";else if(X)Z="- [ ]";let q=`${Z} **${J}**`;if(Y)q+=` \`${Y}\``;Q.push(q);let U=$.querySelector(".text-text-secondary");if(U){let G=[];R2(U,G,0);for(let K of G)Q.push(K?` ${K}`:"")}Q.push("")}function a$($,Q){let J=$.getAttribute("data-md-language")||"",Y=$.querySelector("code")?.textContent||"";Q.push(`\`\`\`${J}`,Y,"```","")}function s$($,Q){let J=$.getAttribute("data-md-type")||"info",X={info:"Info",warning:"Warning",danger:"Danger",tip:"Tip"},Y=K8($.querySelector(".text-text-secondary")||$);Q.push(`> **${X[J]||J}:** ${Y}`,"")}function t$($,Q){let J=$.textContent?.trim()||"";Q.push(`> *${J}*`,"")}function n$($,Q){let J=$.querySelector("table");if(!J)return;let X=[];for(let Y of J.querySelectorAll("thead th"))X.push(Y.textContent?.trim()||"");if(X.length===0)return;Q.push(`| ${X.join(" | ")} |`),Q.push(`| ${X.map(()=>"---").join(" | ")} |`);for(let Y of J.querySelectorAll("tbody tr")){let Z=[];for(let q of Y.querySelectorAll("td"))Z.push(q.textContent?.trim()||"");Q.push(`| ${Z.join(" | ")} |`)}Q.push("")}function e$($,Q){for(let J of $.querySelectorAll("li")){let X=J.querySelector(".bg-accent-green")!==null,Y=J.textContent?.trim()||"";Q.push(`- [${X?"x":" "}] ${Y}`)}Q.push("")}function $8($,Q){let J=$.getAttribute("data-md-language")||"";Q.push(`\`\`\`diff${J?` (${J})`:""}`);for(let X of $.querySelectorAll("[class*='flex']")){let Y=X.querySelector(".text-accent-red")?"-":X.querySelector(".text-accent-green")?"+":" ",Z=X.querySelector("code");if(Z)Q.push(`${Y} ${Z.textContent}`)}Q.push("```","")}function Q8($,Q){let J=$.getAttribute("data-md-source")||"";if(J)Q.push("```mermaid",J,"```","")}function J8($,Q){let J=$.getAttribute("data-md-source")||"";if(J)Q.push(J,"")}function Y8($,Q){let J=$.getAttribute("data-md-label")||"";Q.push(`**${J}:**`);for(let X of $.querySelectorAll("[data-md='choice-option']")){let Y=X.getAttribute("data-md-label")||X.textContent?.trim()||"",Z=X.querySelector(".bg-accent-amber")!==null;Q.push(`- ${Z?"(x)":"( )"} ${Y}`)}Q.push("")}function X8($,Q){let J=$.getAttribute("data-md-label")||"";Q.push(`**${J}:**`);for(let X of $.querySelectorAll("[data-md='multichoice-option']")){let Y=X.getAttribute("data-md-label")||X.textContent?.trim()||"",Z=X.querySelector(".bg-accent-amber")!==null;Q.push(`- [${Z?"x":" "}] ${Y}`)}Q.push("")}function q8($,Q){let J=$.getAttribute("data-md-label")||"",Y=$.querySelector("textarea")?.value?.trim()||"";Q.push(`**${J}:** ${Y||"_empty_"}`,"")}function Z8($,Q){let J=$.getAttribute("data-md-label")||"",X=$.querySelector("input[type='range']"),Z=$.querySelector(".font-mono")?.textContent?.trim()||X?.value||"—";Q.push(`**${J}:** ${Z}`,"")}function G8($,Q){let J=$.getAttribute("data-md-path")||"",X=$.getAttribute("data-md-lines")||"",Z=$.querySelector("code")?.textContent||"",q=J.split(".").pop()||"",U=V2[q]||"",G=X?`${J} (L${X})`:J;Q.push(G,"",`\`\`\`${U}`,Z,"```","")}function U8($,Q){}function K8($){return $?.textContent?.trim()||""}import T4,{useEffect as J0,useState as N1,useRef as c1,useCallback as F4,useMemo as x2,useContext as w8}from"react";import{useEffect as z8,useState as _8,useRef as H8,useContext as W8}from"react";import{jsxDEV as F1,Fragment as q4}from"react/jsx-dev-runtime";function N8($){return $.label||`Round ${$.revision}`}function B8($){let Q=Date.now()-new Date($).getTime(),J=Math.floor(Q/1000);if(J<60)return"just now";let X=Math.floor(J/60);if(X<60)return`${X}m ago`;let Y=Math.floor(X/60);if(Y<24)return`${Y}h ago`;return`${Math.floor(Y/24)}d ago`}function e0({value:$,onChange:Q,accent:J="default",className:X}){let{currentRevision:Y,revisions:Z}=W8(S1),[q,U]=_8(!1),G=H8(null);z8(()=>{if(!q)return;let z=(W)=>{if(G.current&&!G.current.contains(W.target))U(!1)};return document.addEventListener("mousedown",z),()=>document.removeEventListener("mousedown",z)},[q]);let K=Z.find((z)=>z.revision===$);return F1("div",{className:"relative",ref:G,children:[F1("button",{onClick:()=>U(!q),className:`flex items-center gap-1.5 text-[12px] font-body font-medium px-2 py-1 rounded-md transition-colors hover:bg-bg-elevated ${{default:"text-text-secondary hover:text-text-primary",red:"text-accent-red",green:"text-accent-green",amber:"text-accent-amber bg-highlight-selected"}[J]} ${X||""}`,children:[K?N8(K):`Round ${$}`,F1("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",className:`text-text-tertiary transition-transform duration-200 ${q?"rotate-180":""}`,children:F1("path",{d:"M2.5 4l2.5 2.5L7.5 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q&&F1("div",{className:"absolute top-full left-0 mt-1 w-64 bg-bg-elevated border border-border-hover rounded-lg shadow-lg z-50 py-1 max-h-80 overflow-y-auto",children:[...Z].reverse().map((z)=>F1("button",{onClick:()=>{Q(z.revision),U(!1)},className:`w-full flex items-center gap-2 px-3 py-2 text-[12px] font-body transition-colors ${z.revision===$?"bg-bg-surface text-text-primary":"text-text-secondary hover:bg-bg-surface hover:text-text-primary"}`,children:[F1("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${z.revision===Y?"bg-accent-green":z.hasFeedback?"bg-accent-amber":"bg-border-hover"}`},void 0,!1,void 0,this),F1("span",{className:"flex-1 text-left truncate",children:z.label?F1(q4,{children:[z.label," ",F1("span",{className:"text-text-tertiary",children:["#",z.revision]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):F1(q4,{children:["Round ",z.revision]},void 0,!0,void 0,this)},void 0,!1,void 0,this),F1("span",{className:"text-[10px] text-text-tertiary flex-shrink-0 flex items-center gap-1.5",children:[(()=>{let W=z.canvasFiles?.reduce((H,N)=>{if(N.diffStats)H.added+=N.diffStats.added,H.removed+=N.diffStats.removed;return H},{added:0,removed:0});if(W&&(W.added>0||W.removed>0))return F1("span",{className:"font-mono",children:[F1("span",{className:"text-accent-green",children:["+",W.added]},void 0,!0,void 0,this)," ",F1("span",{className:"text-accent-red",children:["-",W.removed]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return null})(),z.revision===Y?"current":z.hasFeedback?"sent":B8(z.createdAt)]},void 0,!0,void 0,this)]},z.revision,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Q0($,Q){let J=$.length,X=Q.length;if(J===0||X===0)return[];let Y=Array.from({length:J+1},()=>Array(X+1).fill(0));for(let G=1;G<=J;G++)for(let K=1;K<=X;K++)Y[G][K]=$[G-1]===Q[K-1]?Y[G-1][K-1]+1:Math.max(Y[G-1][K],Y[G][K-1]);let Z=[],q=J,U=X;while(q>0&&U>0)if($[q-1]===Q[U-1])Z.unshift($[q-1]),q--,U--;else if(Y[q-1][U]>Y[q][U-1])q--;else U--;return Z}function Z4($){let Q=[],J=[],X=document.createTreeWalker($,NodeFilter.SHOW_TEXT,{acceptNode(Z){let q=Z.parentElement;if(!q)return NodeFilter.FILTER_REJECT;if(q.closest("svg, .select-none, [data-no-diff]"))return NodeFilter.FILTER_REJECT;return NodeFilter.FILTER_ACCEPT}}),Y;while(Y=X.nextNode()){let q=(Y.nodeValue||"").match(/\S+|\s+/g);if(!q)continue;let U=0;for(let G of q)Q.push(G),J.push({text:G,node:Y,offset:U}),U+=G.length}return{words:Q,map:J}}function j5($,Q){if($.length>5000||Q.length>5000)return T8($,Q);return K4($,Q)}function K4($,Q){let J=D2($,Q),X=[],Y=[],Z=0,q=0,U=0;while(Z<$.length||q<Q.length)if(U<J.length&&Z<$.length&&q<Q.length&&$[Z]===J[U]&&Q[q]===J[U])X.push({type:"same",index:Z}),Y.push({type:"same",index:q}),Z++,q++,U++;else if(Z<$.length&&(U>=J.length||$[Z]!==J[U]))X.push({type:"removed",index:Z}),Z++;else if(q<Q.length)Y.push({type:"added",index:q}),q++;return{oldOps:X,newOps:Y}}function D2($,Q){let J=$.length,X=Q.length;if(J===0||X===0)return[];if(J===1)return Q.includes($[0])?[$[0]]:[];if(X===1)return $.includes(Q[0])?[Q[0]]:[];if(J*X<=1e6)return Q0($,Q);let Y=Math.floor(J/2),Z=$.slice(0,Y),q=$.slice(Y),U=G4(Z,Q),G=G4([...q].reverse(),[...Q].reverse()),K=0,_=0;for(let H=0;H<=X;H++){let N=U[H]+G[X-H];if(N>K)K=N,_=H}let z=Q.slice(0,_),W=Q.slice(_);return[...D2(Z,z),...D2(q,W)]}function G4($,Q){let J=Q.length,X=Array(J+1).fill(0),Y=Array(J+1).fill(0);for(let Z=0;Z<$.length;Z++){for(let q=1;q<=J;q++)Y[q]=$[Z]===Q[q-1]?X[q-1]+1:Math.max(X[q],Y[q-1]);[X,Y]=[Y,X],Y.fill(0)}return X}function T8($,Q){let X=(N)=>{let O=[];for(let B=0;B<N.length;B+=200){let A=Math.min(B+200,N.length);O.push({start:B,end:A,text:N.slice(B,A).join("")})}return O},Y=X($),Z=X(Q),q=Y.map((N)=>N.text),U=Z.map((N)=>N.text),G=D2(q,U),K=[],_=[],z=0,W=0,H=0;while(z<Y.length||W<Z.length)if(H<G.length&&z<Y.length&&W<Z.length&&q[z]===G[H]&&U[W]===G[H]){for(let N=Y[z].start;N<Y[z].end;N++)K.push({type:"same",index:N});for(let N=Z[W].start;N<Z[W].end;N++)_.push({type:"same",index:N});z++,W++,H++}else if(z<Y.length&&(H>=G.length||q[z]!==G[H]))if(W<Z.length&&(H>=G.length||U[W]!==G[H])){let N=K4($.slice(Y[z].start,Y[z].end),Q.slice(Z[W].start,Z[W].end));for(let O of N.oldOps)K.push({type:O.type,index:O.index+Y[z].start});for(let O of N.newOps)_.push({type:O.type,index:O.index+Z[W].start});z++,W++}else{for(let N=Y[z].start;N<Y[z].end;N++)K.push({type:"removed",index:N});z++}else if(W<Z.length){for(let N=Z[W].start;N<Z[W].end;N++)_.push({type:"added",index:N});W++}return{oldOps:K,newOps:_}}function U4($,Q,J){let X=new Map;for(let Y of $){if(Y.type==="same")continue;let Z=Q[Y.index];if(!Z||!Z.node.parentNode)continue;let q=X.get(Z.node);if(!q)q=[],X.set(Z.node,q);q.push({offset:Z.offset,length:Z.text.length})}for(let[Y,Z]of X){if(!Y.parentNode)continue;let q=Y.nodeValue||"";Z.sort((z,W)=>z.offset-W.offset);let U=[];for(let z of Z){let W=U[U.length-1];if(W&&z.offset<=W.offset+W.length)W.length=Math.max(W.length,z.offset+z.length-W.offset);else U.push({...z})}let G=Y.parentNode,K=document.createDocumentFragment(),_=0;for(let z of U){if(z.offset>_)K.appendChild(document.createTextNode(q.slice(_,z.offset)));let W=document.createElement("span");W.className=J,W.textContent=q.slice(z.offset,z.offset+z.length),K.appendChild(W),_=z.offset+z.length}if(_<q.length)K.appendChild(document.createTextNode(q.slice(_)));G.replaceChild(K,Y)}}function m2($,Q){let J=F8($,Q),X=Z4($),Y=Z4(Q),{oldOps:Z,newOps:q}=j5(X.words,Y.words),U=Z.some((G)=>G.type==="removed")||q.some((G)=>G.type==="added");return U4(Z,X.map,"diff-removed"),U4(q,Y.map,"diff-added"),U||J}function F8($,Q){let J=Array.from($.querySelectorAll('[data-md="mermaid"]')),X=Array.from(Q.querySelectorAll('[data-md="mermaid"]')),Y=!1,Z=Math.max(J.length,X.length);for(let q=0;q<Z;q++){let U=J[q],G=X[q];if(!U&&G){G.classList.add("diff-block-added"),G.style.position="relative",Y=!0;continue}if(U&&!G){U.classList.add("diff-block-removed"),U.style.position="relative",Y=!0;continue}if(!U||!G)continue;let K=(U.getAttribute("data-md-source")||"").trim(),_=(G.getAttribute("data-md-source")||"").trim();if(K===_)continue;Y=!0,U.style.borderLeft="3px solid var(--color-accent-red)",U.style.paddingLeft="8px",G.style.borderLeft="3px solid var(--color-accent-green)",G.style.paddingLeft="8px";let z=K.split(`
84
- `),W=_.split(`
85
- `),H=Q0(z,W),N=(O,B,A)=>{let T=document.createElement("div");T.className="mt-2 bg-bg-code rounded-md overflow-hidden text-tiny font-mono",T.setAttribute("data-no-diff","true");let M=0,y=0;while(y<O.length){let L=document.createElement("div");if(L.className="px-3 py-0.5 whitespace-pre-wrap",M<B.length&&O[y]===B[M])L.textContent=" "+O[y],y++,M++;else L.classList.add(A==="old"?"diff-removed":"diff-added"),L.textContent=(A==="old"?"- ":"+ ")+O[y],y++;T.appendChild(L)}return T};U.appendChild(N(z,H,"old")),G.appendChild(N(W,H,"new"))}return Y}function C0($){let Q=[],J=$.querySelectorAll(":scope > [data-md]");for(let X of J)Q.push($2(X));if(Q.length===0){let X=$.querySelectorAll("[data-md]"),Y=new Set;for(let Z of X){let q=Z.parentElement?.closest("[data-md]");if(q&&$.contains(q))continue;if(Y.has(Z))continue;Y.add(Z),Q.push($2(Z))}}return Q}function $2($){let Q=$.getAttribute("data-md")||"unknown",J=O8($,Q),X=[];if(Q==="section"){let Y=$.querySelector(":scope > div.mt-6, :scope > div:last-child");if(Y)for(let Z of Y.querySelectorAll(":scope > [data-md]"))X.push($2(Z))}else if(Q==="table")for(let Y of $.querySelectorAll(":scope table > tbody > tr"))X.push({key:"tr:"+(Y.textContent||"").slice(0,80),type:"tr",element:Y,children:[]});else if(Q==="checklist")for(let Y of $.querySelectorAll(":scope > [data-md='checklist-item']"))X.push($2(Y));else for(let Y of $.querySelectorAll("[data-md]"))if(Y.parentElement?.closest("[data-md]")===$)X.push($2(Y));return{key:J,type:Q,element:$,children:X}}function O8($,Q){switch(Q){case"section":return"section:"+($.getAttribute("data-md-title")||"");case"item":return"item:"+($.getAttribute("data-task-id")||$.getAttribute("data-md-label")||"");case"codeblock":case"diff":return Q+":"+($.textContent||"").slice(0,80);case"checklist-item":return"checklist-item:"+($.getAttribute("data-md-label")||$.textContent?.slice(0,60)||"");case"checklist":return"checklist:"+$.querySelectorAll("[data-md='checklist-item']").length;case"markdown":return"markdown:"+($.getAttribute("data-md-file")||"inline");case"mermaid":return"mermaid:"+($.getAttribute("data-md-source")||"").slice(0,80);case"callout":return"callout:"+($.getAttribute("data-md-type")||"")+":"+($.textContent||"").slice(0,60);default:return Q+":"+($.getAttribute("data-md-label")||$.textContent?.slice(0,60)||"")}}function Q2($,Q){let J=$.map((K)=>K.key),X=Q.map((K)=>K.key),Y=Q0(J,X),Z=[],q=0,U=0,G=0;while(q<$.length||U<Q.length)if(G<Y.length&&q<$.length&&U<Q.length&&J[q]===Y[G]&&X[U]===Y[G]){let K=$[q],_=Q[U],z=K.children.length>0||_.children.length>0?Q2(K.children,_.children):void 0;Z.push({kind:"matched",oldBlock:K,newBlock:_,childMatches:z}),q++,U++,G++}else if(q<$.length&&(G>=Y.length||J[q]!==Y[G]))Z.push({kind:"removed",oldBlock:$[q]}),q++;else if(U<Q.length)Z.push({kind:"added",newBlock:Q[U]}),U++;return Z}function E2($){let Q=document.createDocumentFragment(),J=!1;for(let X of $)if(X.kind==="removed")J=!0,Q.appendChild(_4(X.oldBlock.element));else if(X.kind==="added")J=!0,Q.appendChild(L8(X.newBlock.element));else{let Y=X.newBlock.element.cloneNode(!0),Z=X.newBlock.type;if(Z==="mermaid"){if(B4(X.oldBlock.element,Y))J=!0}else if(X.childMatches&&X.childMatches.length>0&&(Z==="table"||Z==="checklist")){if(W4(Y,X.childMatches,Z))J=!0}else if(X.childMatches&&X.childMatches.length>0){if(H4(X.oldBlock,Y,X.childMatches,Z))J=!0}else if(Z==="markdown"){if(N4(X.oldBlock.element,Y))J=!0}else if(T0(X.oldBlock.element,Y,!1))J=!0;Q.appendChild(Y)}return{fragment:Q,hasChanges:J}}function _4($){let Q=$.cloneNode(!0);return Q.classList.add("diff-block-removed"),Q.style.position="relative",V5(Q,"Removed","var(--color-accent-red)"),Q}function L8($){let Q=$.cloneNode(!0);return Q.classList.add("diff-block-added"),Q.style.position="relative",V5(Q,"Added","var(--color-accent-green)"),Q}function H4($,Q,J,X){let Y=!1,Z=M8($,Q),q,U;if(X==="section"){let G=$.element.querySelector(":scope > div:first-child"),K=Q.querySelector(":scope > div:first-child");if(G&&K){if(T0(G,K,!1))Y=!0}q=$.element.querySelector(":scope > div.mt-6, :scope > div:last-child"),U=Q.querySelector(":scope > div.mt-6, :scope > div:last-child")}else q=$.element,U=Q;if(!q||!U)return Y;for(let G of J)if(G.kind==="matched"){let K=Z.newMap.get(G.newBlock.element);if(K){if(G.newBlock.type==="mermaid"){if(B4(G.oldBlock.element,K))Y=!0}else if(G.childMatches&&G.childMatches.length>0&&(G.newBlock.type==="table"||G.newBlock.type==="checklist")){if(W4(K,G.childMatches,G.newBlock.type))Y=!0}else if(G.childMatches&&G.childMatches.length>0){if(H4(G.oldBlock,K,G.childMatches,G.newBlock.type))Y=!0}else if(G.newBlock.type==="markdown"){if(N4(G.oldBlock.element,K))Y=!0}else if(T0(G.oldBlock.element,K,!1))Y=!0}}else if(G.kind==="removed"){Y=!0;let K=_4(G.oldBlock.element),_=y8(J,G,Z.newMap),z=_?S8(U,_):null;U.insertBefore(K,z)}else if(G.kind==="added"){Y=!0;let K=Z.newMap.get(G.newBlock.element);if(K)K.classList.add("diff-block-added"),K.style.position="relative",V5(K,"Added","var(--color-accent-green)")}if(T0(q,U,!0))Y=!0;return Y}function W4($,Q,J){let X=J==="table"?$.querySelector(":scope table > tbody"):$;if(!X)return!1;let Y=!1;X.innerHTML="";for(let Z of Q)if(Z.kind==="removed"){Y=!0;let q=Z.oldBlock.element.cloneNode(!0);q.classList.add(J==="table"?"diff-row-removed":"diff-item-removed"),X.appendChild(q)}else if(Z.kind==="added"){Y=!0;let q=Z.newBlock.element.cloneNode(!0);q.classList.add(J==="table"?"diff-row-added":"diff-item-added"),X.appendChild(q)}else{let q=Z.newBlock.element.cloneNode(!0);if(T0(Z.oldBlock.element,q,!1))Y=!0;X.appendChild(q)}return Y}function M8($,Q){let J=new Map,X=$.element.querySelectorAll("[data-md]"),Y=Q.querySelectorAll("[data-md]");return{newMap:{get(Z){return P8(Q,Z)}}}}function P8($,Q){let J=Q.getAttribute("data-md");if(!J)return null;let X=Q.getAttribute("data-md-label"),Y=Q.getAttribute("data-md-title"),Z=`[data-md="${J}"]`;if(Y)Z+=`[data-md-title="${CSS.escape(Y)}"]`;else if(X)Z+=`[data-md-label="${CSS.escape(X)}"]`;let q=$.querySelectorAll(Z);if(q.length===1)return q[0];let U=(Q.textContent||"").slice(0,100),G=null,K=-1;for(let _ of q){let z=(_.textContent||"").slice(0,100),W=0;for(let H=0;H<Math.min(U.length,z.length);H++)if(U[H]===z[H])W++;if(W>K)K=W,G=_}return G}function y8($,Q,J){let X=$.indexOf(Q);for(let Y=X+1;Y<$.length;Y++){let Z=$[Y];if((Z.kind==="matched"||Z.kind==="added")&&Z.newBlock)return J.get(Z.newBlock.element)||null}return null}function S8($,Q){let J=Q;while(J&&J.parentElement!==$)J=J.parentElement;return J}function N4($,Q){let J=Array.from($.children),X=Array.from(Q.children);if(J.length===0&&X.length===0)return T0($,Q,!1);let Y=J.map((W)=>W.tagName.toLowerCase()),Z=X.map((W)=>W.tagName.toLowerCase()),q=Q0(Y,Z),U=[],G=0,K=0,_=0;while(G<J.length||K<X.length)if(_<q.length&&G<J.length&&K<X.length&&Y[G]===q[_]&&Z[K]===q[_])U.push({kind:"matched",oldChild:J[G],newChild:X[K]}),G++,K++,_++;else if(G<J.length&&(_>=q.length||Y[G]!==q[_]))U.push({kind:"removed",oldChild:J[G]}),G++;else if(K<X.length)U.push({kind:"added",newChild:X[K]}),K++;let z=!1;while(Q.firstChild)Q.removeChild(Q.firstChild);for(let W of U)if(W.kind==="matched"){let H=(W.oldChild.textContent||"").match(/\S+/g)||[],N=(W.newChild.textContent||"").match(/\S+/g)||[],O=Q0(H,N),B=Math.max(H.length,N.length);if((B>0?1-O.length/B:0)>0.5){z=!0;let T=W.oldChild.cloneNode(!0);T.classList.add("diff-block-removed"),Q.appendChild(T),W.newChild.classList.add("diff-block-added"),Q.appendChild(W.newChild)}else{if(T0(W.oldChild,W.newChild,!1))z=!0;Q.appendChild(W.newChild)}}else if(W.kind==="removed"){z=!0;let H=W.oldChild.cloneNode(!0);H.classList.add("diff-block-removed"),Q.appendChild(H)}else z=!0,W.newChild.classList.add("diff-block-added"),Q.appendChild(W.newChild);return z}function z4($,Q){let J=Q?new Set(Array.from($.querySelectorAll("[data-md]"))):new Set,X=[],Y=[],Z=document.createTreeWalker($,NodeFilter.SHOW_TEXT,{acceptNode(U){let G=U.parentElement;if(!G)return NodeFilter.FILTER_REJECT;if(G.closest("svg, .select-none, [data-no-diff]"))return NodeFilter.FILTER_REJECT;if(Q){for(let K of J)if(K.contains(U))return NodeFilter.FILTER_REJECT}return NodeFilter.FILTER_ACCEPT}}),q;while(q=Z.nextNode()){let G=(q.nodeValue||"").match(/\S+|\s+/g);if(!G)continue;let K=0;for(let _ of G)X.push(_),Y.push({text:_,node:q,offset:K}),K+=_.length}return{words:X,map:Y}}function T0($,Q,J){let X=z4($,J),Y=z4(Q,J);if(X.words.length===0&&Y.words.length===0)return!1;let{oldOps:Z,newOps:q}=j5(X.words,Y.words),U=Z.some((B)=>B.type==="removed"),G=q.some((B)=>B.type==="added");if(!U&&!G)return!1;let K=[],_=[];for(let B of Z)if(B.type==="same")K.push(B.index);for(let B of q)if(B.type==="same")_.push(B.index);let z=new Map;for(let B=0;B<K.length&&B<_.length;B++)z.set(K[B],_[B]);let W=[];{let B=[],A=-1;for(let T of Z)if(T.type==="same"){if(B.length>0)W.push({text:B.join(""),anchorNewIdx:A>=0?z.get(A)??null:null}),B=[];A=T.index}else if(T.type==="removed")B.push(X.words[T.index]);if(B.length>0)W.push({text:B.join(""),anchorNewIdx:A>=0?z.get(A)??null:null})}let H=new Map,N=new Map;for(let B of q){if(B.type!=="added")continue;let A=Y.map[B.index];if(!A?.node.parentNode)continue;let T=H.get(A.node);if(!T)T=[],H.set(A.node,T);T.push({start:A.offset,end:A.offset+A.text.length})}for(let B of W)if(B.anchorNewIdx===null){if(Y.map.length>0){let A=Y.map[0].node,T=N.get(A);if(!T)T=[],N.set(A,T);T.push({offset:0,text:B.text})}}else{let A=Y.map[B.anchorNewIdx];if(!A)continue;let T=N.get(A.node);if(!T)T=[],N.set(A.node,T);T.push({offset:A.offset+A.text.length,text:B.text})}let O=new Set([...H.keys(),...N.keys()]);for(let B of O)A8(B,H.get(B)||[],N.get(B)||[]);return!0}function A8($,Q,J){if(!$.parentNode)return;let X=$.nodeValue||"";Q.sort((_,z)=>_.start-z.start);let Y=[];for(let _ of Q){let z=Y[Y.length-1];if(z&&_.start<=z.end)z.end=Math.max(z.end,_.end);else Y.push({..._})}J.sort((_,z)=>_.offset-z.offset);let Z=$.parentNode,q=document.createDocumentFragment(),U=0,G=0,K=0;while(U<=X.length){let _=G<Y.length?Y[G].start:1/0,z=K<J.length?J[K].offset:1/0,W=Math.min(_,z);if(W===1/0){if(U<X.length)q.appendChild(document.createTextNode(X.slice(U)));break}let H=Math.max(W,U);if(H>U)q.appendChild(document.createTextNode(X.slice(U,H))),U=H;while(K<J.length&&J[K].offset<=U){let N=document.createElement("span");N.className="diff-removed",N.textContent=J[K].text,q.appendChild(N),K++}if(G<Y.length&&Y[G].start<=U){let N=Y[G],O=document.createElement("span");O.className="diff-added",O.textContent=X.slice(U,N.end),q.appendChild(O),U=N.end,G++;while(K<J.length&&J[K].offset<=U){let B=document.createElement("span");B.className="diff-removed",B.textContent=J[K].text,q.appendChild(B),K++}}}while(K<J.length){let _=document.createElement("span");_.className="diff-removed",_.textContent=J[K].text,q.appendChild(_),K++}Z.replaceChild(q,$)}function B4($,Q){let J=($.getAttribute("data-md-source")||"").trim(),X=(Q.getAttribute("data-md-source")||"").trim();if(J===X)return!1;let Y=J.split(`
86
- `),Z=X.split(`
87
- `),q=Q0(Y,Z),U=[],G=0,K=0,_=0;while(G<Y.length||K<Z.length)if(_<q.length&&G<Y.length&&K<Z.length&&Y[G]===q[_]&&Z[K]===q[_])U.push({type:"same",line:Y[G]}),G++,K++,_++;else if(G<Y.length&&(_>=q.length||Y[G]!==q[_]))U.push({type:"removed",line:Y[G]}),G++;else if(K<Z.length)U.push({type:"added",line:Z[K]}),K++;let z=document.createElement("div");z.className="mt-2 bg-bg-code rounded-md overflow-hidden text-tiny font-mono",z.setAttribute("data-no-diff","true");for(let W of U){let H=document.createElement("div");if(H.className="px-3 py-0.5 whitespace-pre-wrap",W.type==="removed")H.classList.add("diff-removed"),H.textContent="- "+W.line;else if(W.type==="added")H.classList.add("diff-added"),H.textContent="+ "+W.line;else H.textContent=" "+W.line;z.appendChild(H)}return Q.appendChild(z),!0}function V5($,Q,J){let X=document.createElement("span");X.className="diff-block-label",X.textContent=Q,X.style.color=J,X.style.backgroundColor=`color-mix(in srgb, ${J} 12%, transparent)`,$.appendChild(X)}import{jsxDEV as f}from"react/jsx-dev-runtime";function C8($,Q,J){let X=$.find((q)=>q.revision===Q),Y=$.find((q)=>q.revision===J),Z=new Set;for(let q of X?.canvasFiles||[])Z.add(q.filename);for(let q of Y?.canvasFiles||[])Z.add(q.filename);return[...Z].sort()}function O4({initialLeft:$,initialRight:Q,sessionId:J,onExit:X}){let[Y,Z]=N1($),[q,U]=N1(Q),[G,K]=N1("unified"),[_,z]=N1(!0),[W,H]=N1(!1),{revisions:N}=w8(S1),O=x2(()=>C8(N,Y,q),[N,Y,q]),[B,A]=N1(()=>O[0]||"plan.jsx");J0(()=>{if(!O.includes(B))A(O[0]||"plan.jsx")},[O,B]);let T=x2(()=>{return N.find((L)=>L.revision===Y)?.canvasFiles.some((L)=>L.filename===B)??!1},[N,Y,B]),M=x2(()=>{return N.find((L)=>L.revision===q)?.canvasFiles.some((L)=>L.filename===B)??!1},[N,q,B]);return f("div",{className:"flex flex-col h-screen",children:[f("div",{className:"flex items-center justify-between px-6 py-3 border-b border-border-subtle bg-bg-surface flex-shrink-0",children:[f("div",{className:"flex items-center gap-3",children:[f("span",{className:"text-[13px] font-body font-medium text-text-primary",children:"Compare"},void 0,!1,void 0,this),f(e0,{value:Y,onChange:Z,accent:"red"},void 0,!1,void 0,this),f("span",{className:"text-text-tertiary text-[13px]",children:"→"},void 0,!1,void 0,this),f(e0,{value:q,onChange:U,accent:"green"},void 0,!1,void 0,this),W&&!_&&f("span",{className:"text-[11px] font-body text-text-tertiary bg-bg-elevated px-2 py-0.5 rounded",children:"No changes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f("div",{className:"flex items-center gap-4",children:[f("div",{className:"flex items-center bg-bg-elevated rounded-md p-0.5",children:[f("button",{onClick:()=>K("unified"),className:`text-[11px] font-body px-2.5 py-1 rounded transition-colors ${G==="unified"?"bg-bg-surface text-text-primary font-medium shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Unified"},void 0,!1,void 0,this),f("button",{onClick:()=>K("side-by-side"),className:`text-[11px] font-body px-2.5 py-1 rounded transition-colors ${G==="side-by-side"?"bg-bg-surface text-text-primary font-medium shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Side-by-side"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G==="side-by-side"&&f(b8,{},void 0,!1,void 0,this),f("button",{onClick:X,className:"text-[12px] font-body font-medium text-text-secondary hover:text-text-primary px-3 py-1.5 rounded-md hover:bg-bg-elevated transition-colors",children:"Exit Compare"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O.length>1&&f("div",{className:"flex items-center gap-1 px-6 py-2 border-b border-border-subtle bg-bg-surface flex-shrink-0 overflow-x-auto",children:O.map((y)=>{let L=y.replace(/\.jsx$/,""),w=y===B,j=N.find((D)=>D.revision===Y)?.canvasFiles.some((D)=>D.filename===y),k=N.find((D)=>D.revision===q)?.canvasFiles.some((D)=>D.filename===y),m=!j?" (added)":!k?" (removed)":"";return f("button",{onClick:()=>A(y),className:`text-[12px] font-body px-3 py-1 rounded-md transition-colors whitespace-nowrap ${w?"bg-bg-elevated text-text-primary font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated"}`,children:[L,m&&f("span",{className:`ml-1 text-[10px] ${!j?"text-accent-green":"text-accent-red"}`,children:m},void 0,!1,void 0,this)]},y,!0,void 0,this)})},void 0,!1,void 0,this),!T||!M?f("div",{className:"flex-1 flex items-center justify-center",children:f("div",{className:"text-center text-text-tertiary font-body",children:[f("div",{className:"text-lg mb-2",children:!T?"New file":"Removed file"},void 0,!1,void 0,this),f("div",{className:"text-[13px]",children:[B.replace(/\.jsx$/,"")," ",!T?"was added":"was removed"," in this revision"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this):G==="unified"?f(I8,{sessionId:J,leftRev:Y,rightRev:q,filename:B,onDiffResult:(y,L)=>{H(y),z(L)}},`unified-${Y}-${q}-${B}`,!1,void 0,this):f(j8,{sessionId:J,leftRev:Y,rightRev:q,filename:B,onDiffResult:(y,L)=>{H(y),z(L)}},`sbs-${Y}-${q}-${B}`,!1,void 0,this)]},void 0,!0,void 0,this)}function b8(){let[$,Q]=N1(!0);return J0(()=>{return document.documentElement.dataset.syncScroll=$?"1":"0",()=>{delete document.documentElement.dataset.syncScroll}},[$]),f("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[f("input",{type:"checkbox",checked:$,onChange:(J)=>Q(J.target.checked),className:"accent-accent-amber w-3.5 h-3.5"},void 0,!1,void 0,this),f("span",{className:"text-[11px] font-body text-text-secondary",children:"Sync scroll"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function I8({sessionId:$,leftRev:Q,rightRev:J,filename:X,onDiffResult:Y}){let Z=c1(null),q=c1(null),U=c1(null),[G,K]=N1(!1),[_,z]=N1(!1),[W,H]=N1(!1),[N,O]=N1(null),[B,A]=N1(!1),{annotations:T}=v1(),M=T.filter((L)=>!L.filePath&&(!L.canvasFile||L.canvasFile===X)),{popovers:y}=n1({containerRef:U,restoreKey:W,restoreAnnotations:M,extractContext:(L)=>o1(L,U.current)});return J0(()=>{if(W||N)return;let L=setTimeout(()=>{console.warn("[unified-diff] still loading after 10s",{leftReady:G,rightReady:_,oldRef:!!Z.current,newRef:!!q.current}),A(!0)},1e4);return()=>clearTimeout(L)},[W,N,G,_]),J0(()=>{if(!G||!_||W)return;if(!Z.current||!q.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!Z.current||!q.current||!U.current){console.warn("[unified-diff] refs lost between rAF frames",{old:!!Z.current,new:!!q.current,unified:!!U.current});return}try{let L=C0(Z.current),w=C0(q.current),j=Q2(L,w),{fragment:k,hasChanges:m}=E2(j);U.current.innerHTML="",U.current.appendChild(k),H(!0),Y(!0,m)}catch(L){console.error("[unified-diff] diff computation failed",L),O(L instanceof Error?L.message:String(L))}})})},[G,_,W]),f("div",{className:"flex-1 min-h-0 overflow-y-auto",children:[!W&&!N&&f("div",{style:{position:"absolute",left:-9999,visibility:"hidden",pointerEvents:"none",width:720},children:[f(d1,{ref:Z,sessionId:$,revision:Q,filename:X,onReady:()=>K(!0),onError:(L)=>O(`Rev ${Q}: ${L}`)},void 0,!1,void 0,this),f(d1,{ref:q,sessionId:$,revision:J,filename:X,onReady:()=>z(!0),onError:(L)=>O(`Rev ${J}: ${L}`)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f("div",{className:"max-w-[720px] mx-auto px-6 pt-8 pb-32",children:[!W&&!N&&f("div",{className:"flex flex-col items-center justify-center h-64 text-text-tertiary font-body text-body gap-2",children:[f("span",{children:"Loading..."},void 0,!1,void 0,this),B&&f("span",{className:"text-[11px]",children:"Taking longer than expected — check Network tab for pending requests"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),N&&f("div",{className:"bg-accent-red-muted rounded-lg p-5 mt-8",children:[f("h3",{className:"font-body font-semibold text-accent-red mb-2",children:"Failed to load revision"},void 0,!1,void 0,this),f("pre",{className:"text-code font-mono text-text-secondary whitespace-pre-wrap",children:N},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f("div",{ref:U},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y]},void 0,!0,void 0,this)}function j8({sessionId:$,leftRev:Q,rightRev:J,filename:X,onDiffResult:Y}){let Z=c1(null),q=c1(null),[U,G]=N1(!1),[K,_]=N1(!1),[z,W]=N1(!1),H=c1(null),N=c1(null),O=c1(null),B=c1(!1),A=F4(()=>G(!0),[]),T=F4(()=>_(!0),[]),{annotations:M}=v1(),y=M.filter((w)=>!w.filePath&&(!w.canvasFile||w.canvasFile===X)),{popovers:L}=n1({containerRef:H,restoreKey:z,restoreAnnotations:y,extractContext:(w)=>o1(w,H.current)});return J0(()=>{if(!U||!K||z)return;if(!Z.current||!q.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!Z.current||!q.current)return;let w=m2(Z.current,q.current);W(!0),Y(!0,w)})})},[U,K,z]),J0(()=>{let w=N.current,j=O.current;if(!w||!j)return;let k=(v,u)=>{if(document.documentElement.dataset.syncScroll==="0")return;if(B.current)return;B.current=!0;let d=v.scrollHeight-v.clientHeight,K1=u.scrollHeight-u.clientHeight;if(d>0&&K1>0)u.scrollTop=v.scrollTop/d*K1;requestAnimationFrame(()=>{B.current=!1})},m=()=>k(w,j),D=()=>k(j,w);return w.addEventListener("scroll",m),j.addEventListener("scroll",D),()=>{w.removeEventListener("scroll",m),j.removeEventListener("scroll",D)}},[]),f("div",{ref:H,className:"flex flex-1 min-h-0",children:[f("div",{ref:N,className:"w-1/2 overflow-y-auto border-r border-border-subtle",children:f("div",{className:"max-w-[720px] mx-auto px-6 pt-8 pb-32",children:f(d1,{ref:Z,sessionId:$,revision:Q,filename:X,onReady:A},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),f("div",{ref:O,className:"w-1/2 overflow-y-auto",children:f("div",{className:"max-w-[720px] mx-auto px-6 pt-8 pb-32",children:f(d1,{ref:q,sessionId:$,revision:J,filename:X,onReady:T},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),L]},void 0,!0,void 0,this)}var d1=T4.memo(T4.forwardRef(({sessionId:$,revision:Q,filename:J,onReady:X,onError:Y},Z)=>{let[q,U]=N1(null),[G,K]=N1(null),[_,z]=N1(!0);J0(()=>{z(!0),K(null);let H=J.replace(/\.jsx$/,".js");import(`/api/session/${$}/canvas/${encodeURIComponent(H)}?rev=${Q}&t=${Date.now()}`).then((N)=>{if(!N.default){K("Module has no default export"),z(!1),Y?.("Module has no default export");return}U(()=>N.default),z(!1)}).catch((N)=>{K(N.message),z(!1),Y?.(N.message)})},[$,Q,J]),J0(()=>{if(!q)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{X()})})},[q]);let W=x2(()=>q?f(q,{},void 0,!1,void 0,this):null,[q]);if(_)return f("div",{className:"flex items-center justify-center h-64 text-text-tertiary font-body text-body",children:"Loading..."},void 0,!1,void 0,this);if(G)return f("div",{className:"bg-accent-red-muted rounded-lg p-5",children:[f("h3",{className:"font-body font-semibold text-accent-red mb-2",children:"Error"},void 0,!1,void 0,this),f("pre",{className:"text-code font-mono text-text-secondary whitespace-pre-wrap",children:G},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(!q)return f("div",{className:"text-text-tertiary text-center py-8 font-body text-body",children:"No canvas loaded"},void 0,!1,void 0,this);return f("div",{ref:Z,children:W},void 0,!1,void 0,this)}));import{useState as l1,useContext as k5,useMemo as V8,useRef as J2,useEffect as M4,useCallback as L4}from"react";import{SessionContext as k8}from"#canvas/runtime";import{jsxDEV as h}from"react/jsx-dev-runtime";function R5($,Q){if(!$)return[];return $.canvasFiles.map((J)=>{if(!J.diffStats)return{filename:J.filename,status:"new"};if(J.diffStats.added===0&&J.diffStats.removed===0)return{filename:J.filename,status:"unchanged",diffStats:J.diffStats};return{filename:J.filename,status:"changed",diffStats:J.diffStats}})}function P4($){return $.filter((Q)=>Q.status!=="unchanged").map((Q)=>Q.filename)}function y4({revision:$,responseBanner:Q}){let{setActiveView:J}=k5(E1),{revisions:X}=k5(S1),Y=X.find((K)=>K.revision===$),Z=X.find((K)=>K.revision===$-1),q=V8(()=>R5(Y,Z),[Y,Z]),U=q.filter((K)=>K.status!=="unchanged"),G=q.filter((K)=>K.status==="unchanged");return h("div",{className:"max-w-[720px] mx-auto px-6 pt-12 pb-32",children:[Q,U.map((K)=>h(D8,{change:K,revision:$,previousRevision:Z?.revision,onOpenTab:()=>J({type:"canvas",filename:K.filename})},K.filename,!1,void 0,this)),G.length>0&&h("div",{className:"mt-8 border-t border-border-subtle pt-4",children:[h("div",{className:"text-[11px] font-body font-medium uppercase tracking-widest text-text-tertiary mb-3",children:"Unchanged"},void 0,!1,void 0,this),G.map((K)=>h(f8,{change:K,revision:$,onOpenTab:()=>J({type:"canvas",filename:K.filename})},K.filename,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function R8({mode:$,onChange:Q,showDiff:J}){if(!J)return null;return h("div",{className:"flex items-center bg-bg-elevated rounded-md p-0.5",children:["rendered","unified","side-by-side"].map((X)=>h("button",{onClick:()=>Q(X),className:`text-[10px] font-body px-2 py-0.5 rounded transition-colors ${$===X?"bg-bg-surface text-text-primary font-medium shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:X==="rendered"?"Full":X==="unified"?"Unified":"Split"},X,!1,void 0,this))},void 0,!1,void 0,this)}function D8({change:$,revision:Q,previousRevision:J,onOpenTab:X}){let Y=$.filename.replace(/\.jsx$/,""),Z=$.status==="new",q=$.diffStats,U=$.status==="changed"&&J!=null,[G,K]=l1("rendered");return h("div",{className:"mb-8",children:[h("div",{className:"flex items-center gap-2 mb-3 pb-2 border-b border-border-subtle",children:[h("span",{className:`text-[11px] font-mono px-1.5 py-0.5 rounded ${Z?"bg-accent-green/10 text-accent-green border border-accent-green/20":"bg-accent-amber/10 text-accent-amber border border-accent-amber/20"}`,children:Z?"new":"modified"},void 0,!1,void 0,this),h("span",{className:"text-[14px] font-body font-medium text-text-primary",children:Y},void 0,!1,void 0,this),q&&(q.added>0||q.removed>0)&&h("span",{className:"text-[11px] font-mono text-text-tertiary",children:[h("span",{className:"text-accent-green",children:["+",q.added]},void 0,!0,void 0,this)," ",h("span",{className:"text-accent-red",children:["-",q.removed]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),h(R8,{mode:G,onChange:K,showDiff:U},void 0,!1,void 0,this),h("button",{onClick:X,className:`${U?"":"ml-auto"} text-[11px] font-body font-medium text-accent-blue hover:text-accent-blue/80 transition-colors`,children:"Open in tab"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G==="rendered"?h("div",{"data-canvas-file":$.filename,children:h(A0,{revision:Q,filename:$.filename},void 0,!1,void 0,this)},void 0,!1,void 0,this):U&&J!=null?h(m8,{filename:$.filename,leftRev:J,rightRev:Q,mode:G},`${G}-${Q}-${J}`,!1,void 0,this):null]},void 0,!0,void 0,this)}function m8({filename:$,leftRev:Q,rightRev:J,mode:X}){let Y=k5(k8);if(X==="unified")return h(E8,{sessionId:Y,filename:$,leftRev:Q,rightRev:J},void 0,!1,void 0,this);return h(x8,{sessionId:Y,filename:$,leftRev:Q,rightRev:J},void 0,!1,void 0,this)}function E8({sessionId:$,filename:Q,leftRev:J,rightRev:X}){let Y=J2(null),Z=J2(null),q=J2(null),[U,G]=l1(!1),[K,_]=l1(!1),[z,W]=l1(!1),[H,N]=l1(null);return M4(()=>{if(!U||!K||z)return;if(!Y.current||!Z.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!Y.current||!Z.current||!q.current)return;try{let O=C0(Y.current),B=C0(Z.current),A=Q2(O,B),{fragment:T}=E2(A);q.current.innerHTML="",q.current.appendChild(T),W(!0)}catch(O){N(O instanceof Error?O.message:String(O))}})})},[U,K,z]),h("div",{children:[!z&&!H&&h("div",{style:{position:"absolute",left:-9999,visibility:"hidden",pointerEvents:"none",width:720},children:[h(d1,{ref:Y,sessionId:$,revision:J,filename:Q,onReady:()=>G(!0),onError:(O)=>N(O)},void 0,!1,void 0,this),h(d1,{ref:Z,sessionId:$,revision:X,filename:Q,onReady:()=>_(!0),onError:(O)=>N(O)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!z&&!H&&h("div",{className:"flex items-center justify-center h-24 text-text-tertiary font-body text-[13px]",children:"Computing diff..."},void 0,!1,void 0,this),H&&h("div",{className:"text-accent-red text-[13px] font-body p-3 bg-accent-red-muted rounded-lg",children:H},void 0,!1,void 0,this),h("div",{ref:q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function x8({sessionId:$,filename:Q,leftRev:J,rightRev:X}){let Y=J2(null),Z=J2(null),[q,U]=l1(!1),[G,K]=l1(!1),[_,z]=l1(!1),W=L4(()=>U(!0),[]),H=L4(()=>K(!0),[]);return M4(()=>{if(!q||!G||_)return;if(!Y.current||!Z.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!Y.current||!Z.current)return;m2(Y.current,Z.current),z(!0)})})},[q,G,_]),h("div",{className:"flex gap-0 border-y border-border-subtle overflow-hidden w-screen relative left-1/2 -translate-x-1/2",children:[h("div",{className:"w-1/2 border-r border-border-subtle",children:[h("div",{className:"px-2 py-1 text-[10px] font-body font-medium text-text-tertiary bg-bg-elevated border-b border-border-subtle",children:["Rev ",J]},void 0,!0,void 0,this),h("div",{className:"px-6 py-4 max-w-[600px] mx-auto",children:h(d1,{ref:Y,sessionId:$,revision:J,filename:Q,onReady:W},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),h("div",{className:"w-1/2",children:[h("div",{className:"px-2 py-1 text-[10px] font-body font-medium text-text-tertiary bg-bg-elevated border-b border-border-subtle",children:["Rev ",X]},void 0,!0,void 0,this),h("div",{className:"px-6 py-4 max-w-[600px] mx-auto",children:h(d1,{ref:Z,sessionId:$,revision:X,filename:Q,onReady:H},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function f8({change:$,revision:Q,onOpenTab:J}){let[X,Y]=l1(!1),Z=$.filename.replace(/\.jsx$/,"");return h("div",{className:"mb-2",children:[h("div",{className:"flex items-center gap-2 py-1.5",children:[h("button",{onClick:()=>Y(!X),className:"text-text-tertiary hover:text-text-secondary transition-colors",children:h("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",className:`transition-transform duration-150 ${X?"rotate-90":""}`,children:h("path",{d:"M3.5 2L6.5 5L3.5 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),h("span",{className:"text-[13px] font-body text-text-secondary",children:Z},void 0,!1,void 0,this),h("button",{onClick:J,className:"ml-auto text-[11px] font-body text-text-tertiary hover:text-accent-blue transition-colors",children:"Open in tab"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X&&h("div",{className:"ml-5 mt-1 mb-3","data-canvas-file":$.filename,children:h(A0,{revision:Q,filename:$.filename},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useState as f2,useEffect as v8,useCallback as D5}from"react";import{jsxDEV as s}from"react/jsx-dev-runtime";function S4({sessionId:$,revision:Q,open:J,shareEnabled:X,existingShares:Y,onClose:Z,onShareCreated:q,onShareRevoked:U}){let[G,K]=f2(!1),[_,z]=f2(!1),[W,H]=f2(null),[N,O]=f2(!1),B=Y.find((y)=>y.revision===Q);v8(()=>{if(!J)K(!1),z(!1),H(null),O(!1)},[J]);let A=D5(async()=>{K(!0),H(null);try{let y=await fetch(`/api/session/${$}/revision/${Q}/share`,{method:"POST"}),L=await y.json();if(!y.ok||!L.ok)throw Error(L.error||`HTTP ${y.status}`);q(L.share)}catch(y){H(y.message||String(y))}finally{K(!1)}},[$,Q,q]),T=D5(async(y)=>{if(!window.confirm("Revoke this share link? Reviewers will no longer be able to view or comment."))return;z(!0),H(null);try{let L=await fetch(`/api/session/${$}/shares/${y}/revoke`,{method:"POST"}),w=await L.json();if(!L.ok||!w.ok)throw Error(w.error||`HTTP ${L.status}`);U(y)}catch(L){H(L.message||String(L))}finally{z(!1)}},[$,U]),M=D5((y)=>{navigator.clipboard.writeText(y).then(()=>{O(!0),setTimeout(()=>O(!1),1500)})},[]);if(!J)return null;return s("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:Z,children:s("div",{className:"bg-bg-surface border border-border-medium rounded-lg shadow-xl w-full max-w-md mx-4 p-5",onClick:(y)=>y.stopPropagation(),children:[s("div",{className:"flex items-center justify-between mb-3",children:[s("h2",{className:"text-sm font-medium text-text-primary font-body",children:"Share this revision"},void 0,!1,void 0,this),s("button",{onClick:Z,className:"w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",children:s("span",{className:"text-xs",children:"✕"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!X?s("div",{className:"text-[13px] text-text-secondary font-body space-y-2",children:[s("p",{children:"Canvas sharing is not configured."},void 0,!1,void 0,this),s("p",{className:"text-text-tertiary",children:["Set ",s("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:"CANVAS_SHARE_ENDPOINT"},void 0,!1,void 0,this)," to the URL of a deployed"," ",s("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:"canvas-share"},void 0,!1,void 0,this)," worker and restart the daemon."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):B?s("div",{className:"space-y-3",children:[s("p",{className:"text-[13px] text-text-secondary font-body",children:"This revision is shared:"},void 0,!1,void 0,this),s("div",{className:"flex gap-2",children:[s("input",{type:"text",readOnly:!0,value:B.url,className:"flex-1 px-2 py-1.5 text-[12px] font-mono bg-bg-input border border-border-medium rounded text-text-primary",onFocus:(y)=>y.currentTarget.select()},void 0,!1,void 0,this),s("button",{onClick:()=>M(B.url),className:"px-3 py-1.5 text-[12px] font-body font-medium rounded bg-accent-blue text-white hover:opacity-90 transition-opacity whitespace-nowrap",children:N?"Copied!":"Copy"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.expiresAt&&s("p",{className:"text-[11px] text-text-tertiary font-body",children:["Expires ",new Date(B.expiresAt).toLocaleDateString(),"."]},void 0,!0,void 0,this),B.encryptionKey&&s("p",{className:"text-[11px] text-accent-green font-body flex items-center gap-1.5",children:[s("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"},void 0,!1,void 0,this),s("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),"End-to-end encrypted — the key is part of the link and never leaves your browser."]},void 0,!0,void 0,this),s("p",{className:"text-[11px] text-text-tertiary font-body",children:"Anyone with this link can view and leave feedback. Reviewer feedback will appear in your annotation sidebar within seconds."},void 0,!1,void 0,this),s("div",{className:"flex items-center justify-between pt-1",children:[s("button",{onClick:A,disabled:G||_,className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body underline disabled:opacity-50",children:G?"Creating...":"Create a new link"},void 0,!1,void 0,this),B.ownerToken&&s("button",{onClick:()=>T(B.shareId),disabled:G||_,className:"text-[11px] text-accent-red hover:opacity-80 font-body underline disabled:opacity-50",children:_?"Revoking...":"Revoke link"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):s("div",{className:"space-y-3",children:[s("p",{className:"text-[13px] text-text-secondary font-body",children:"Create a public link to this revision. Anyone with the link can view the canvas and leave feedback. Reviewer feedback will sync back here automatically."},void 0,!1,void 0,this),s("button",{onClick:A,disabled:G,className:"w-full px-3 py-2 text-[13px] font-body font-medium rounded bg-accent-blue text-white hover:opacity-90 transition-opacity disabled:opacity-50",children:G?"Creating share link...":"Create share link"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W&&s("div",{className:"mt-3 px-3 py-2 rounded bg-accent-red/10 border border-accent-red/20 text-[12px] text-accent-red font-body",children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function A4({onClick:$,title:Q="Share this revision",hasShare:J}){return s("button",{onClick:$,className:`group p-1.5 transition-colors ${J?"text-accent-blue hover:opacity-80":"text-text-tertiary hover:text-text-secondary"}`,title:Q,children:s("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s("circle",{cx:"18",cy:"5",r:"3"},void 0,!1,void 0,this),s("circle",{cx:"6",cy:"12",r:"3"},void 0,!1,void 0,this),s("circle",{cx:"18",cy:"19",r:"3"},void 0,!1,void 0,this),s("line",{x1:"8.59",y1:"13.51",x2:"15.42",y2:"17.49"},void 0,!1,void 0,this),s("line",{x1:"15.41",y1:"6.51",x2:"8.59",y2:"10.49"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}import{useState as u8,useEffect as g8,useRef as h8}from"react";import{jsxDEV as V1}from"react/jsx-dev-runtime";function w4({open:$,onClose:Q,onSubmit:J}){let[X,Y]=u8(""),Z=h8(null);if(g8(()=>{if($)Y(""),setTimeout(()=>Z.current?.focus(),50)},[$]),!$)return null;let q=X.trim(),U=q.length>=1&&q.length<=80,G=()=>{if(!U)return;J(q)};return V1("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:Q,children:V1("div",{className:"bg-bg-surface border border-border-medium rounded-lg shadow-xl w-full max-w-md mx-4 p-5",onClick:(K)=>K.stopPropagation(),children:[V1("div",{className:"flex items-center justify-between mb-3",children:[V1("h2",{className:"text-sm font-medium text-text-primary font-body",children:"Your name"},void 0,!1,void 0,this),V1("button",{onClick:Q,className:"w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",children:V1("span",{className:"text-xs",children:"✕"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V1("p",{className:"text-[13px] text-text-secondary font-body mb-3 leading-relaxed",children:"Before you leave feedback, please enter a name so the canvas author knows who reviewed it. This is stored locally in your browser."},void 0,!1,void 0,this),V1("input",{ref:Z,type:"text",value:X,onChange:(K)=>Y(K.target.value),onKeyDown:(K)=>{if(K.key==="Enter")G()},maxLength:80,placeholder:"e.g. Alice",className:"w-full px-3 py-2 text-[13px] font-body bg-bg-input border border-border-medium rounded text-text-primary placeholder:text-text-disabled focus:outline-none focus:border-accent-blue"},void 0,!1,void 0,this),V1("div",{className:"flex justify-end gap-2 mt-4",children:[V1("button",{onClick:Q,className:"px-3 py-1.5 text-[12px] font-body font-medium rounded text-text-secondary hover:text-text-primary hover:bg-bg-elevated transition-colors",children:"Cancel"},void 0,!1,void 0,this),V1("button",{onClick:G,disabled:!U,className:"px-3 py-1.5 text-[12px] font-body font-medium rounded bg-accent-blue text-white hover:opacity-90 transition-opacity disabled:opacity-50",children:"Submit feedback"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}import{jsxDEV as F,Fragment as Y2}from"react/jsx-dev-runtime";function b4($){let Q=[];for(let J of $)for(let X of J.annotations)Q.push({...X,source:"remote",author:J.author});return Q}function l8($){if($==="auto")return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";return $}function I4($){document.documentElement.dataset.theme=l8($)}function R4(){let[$,Q]=Y1(()=>{let Y=localStorage.getItem("canvas-theme");if(Y==="light"||Y==="dark"||Y==="auto")return Y;return"auto"});return k1(()=>{if(I4($),$!=="auto")return;let Y=window.matchMedia("(prefers-color-scheme: dark)"),Z=()=>I4("auto");return Y.addEventListener("change",Z),()=>Y.removeEventListener("change",Z)},[$]),F("button",{onClick:()=>{let Y=$==="auto"?"light":$==="light"?"dark":"auto";localStorage.setItem("canvas-theme",Y),Q(Y)},className:"w-7 h-7 flex items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:{auto:"Theme: system (click for light)",light:"Theme: light (click for dark)",dark:"Theme: dark (click for system)"}[$],children:$==="auto"?F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[F("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"},void 0,!1,void 0,this),F("line",{x1:"8",y1:"21",x2:"16",y2:"21"},void 0,!1,void 0,this),F("line",{x1:"12",y1:"17",x2:"12",y2:"21"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):$==="dark"?F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:F("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},void 0,!1,void 0,this)},void 0,!1,void 0,this):F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[F("circle",{cx:"12",cy:"12",r:"5"},void 0,!1,void 0,this),F("line",{x1:"12",y1:"1",x2:"12",y2:"3"},void 0,!1,void 0,this),F("line",{x1:"12",y1:"21",x2:"12",y2:"23"},void 0,!1,void 0,this),F("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},void 0,!1,void 0,this),F("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},void 0,!1,void 0,this),F("line",{x1:"1",y1:"12",x2:"3",y2:"12"},void 0,!1,void 0,this),F("line",{x1:"21",y1:"12",x2:"23",y2:"12"},void 0,!1,void 0,this),F("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},void 0,!1,void 0,this),F("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function D4(){let{currentRevision:$,selectedRevision:Q,revisions:J,setSelectedRevision:X,setCompareRevision:Y}=Y0.useContext(S1);if(J.length<=1){let U=J[0]?.label||`Round ${$}`;return F("span",{className:"text-[11px] text-text-tertiary font-body",children:U},void 0,!1,void 0,this)}return F("div",{className:"flex flex-col gap-1",children:[F(e0,{value:Q,onChange:X,accent:Q===$?"default":"amber"},void 0,!1,void 0,this),F("button",{onClick:()=>{let q;if(Q===$)q=[...J].reverse().find((G)=>G.revision<$)?.revision??Math.max(1,$-1);else q=Q;Y({left:q,right:$})},className:"text-[11px] font-body font-medium px-2 py-0.5 rounded-md text-accent-blue hover:bg-accent-blue-muted transition-colors self-start",children:"Compare"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function r8(){let $=$1.isShared?$1.shareId:$1.sessionId,Q=$1.isShared,[J,X]=Y1(1),[Y,Z]=Y1(1),[q,U]=Y1([]),[G,K]=Y1(null),[_,z]=Y1(!1),[W,H]=Y1(!1),[N,O]=Y1(!1),[B,A]=Y1([]),[T,M]=Y1({type:"overview"}),[y,L]=Y1([]),w=g1(null),j=g1([]),k=g1(new Set),[m,D]=Y1(),[v,u]=Y1(!1),[d,K1]=Y1(!1),[R,g]=Y1(!1),[p,t]=Y1(!1),[l,o]=Y1([]),[q1,X1]=Y1(!1),[z1,M1]=Y1(new Map),[C,E]=Y1(!1),[b,P]=Y1(null),[S,V]=Y1(null),i=b0((I)=>{if(Q)return;let r=`${I.revision}\x00${I.filename}\x00${I.message}`;if(k.current.has(r))return;k.current.add(r);let n=JSON.stringify({type:"render-error",error:I});if(w.current?.readyState===WebSocket.OPEN)w.current.send(n);else j.current.push(I)},[Q]);k1(()=>{if(!S)return;let I=setTimeout(()=>V(null),4000);return()=>clearTimeout(I)},[S]),k1(()=>{let I=["Agent Canvas"];if(m){let r=m.replace(/\/+$/,"").split("/");I.push(r[r.length-1]||$)}else if($)I.push($);if(T.type==="file")I.push(T.path.split("/").pop()||T.path);else if(T.type==="overview")I.push("Overview");else if(T.type==="canvas"&&B.length>1&&T.filename)I.push(T.filename.replace(/\.jsx$/,""));else if(G)I.push("Compare");document.title=I.join(" — ")},[$,m,T,G]);let Q1=g1(new Map),U1=q.find((I)=>I.revision===Y),P1=Y!==J||!!U1?.hasFeedback||W,m5=Y===J&&(!!U1?.hasFeedback||W)?"next":"current",E5=b0((I)=>{let r=T.type==="overview"?"overview":T.type==="canvas"?`canvas:${T.filename}`:`file:${T.path}`;if(Q1.current.set(r,window.scrollY),M(I),I.type==="file")L((n)=>n.includes(I.path)?n:[...n,I.path])},[T]),m4=b0((I)=>{Q1.current.delete(`file:${I}`),L((r)=>r.filter((n)=>n!==I)),M((r)=>{if(r.type==="file"&&r.path===I)return B.length>1?{type:"overview"}:{type:"canvas",filename:B[0]||""};return r})},[B]);p8(()=>{let I=T.type==="overview"?"overview":T.type==="canvas"?`canvas:${T.filename}`:`file:${T.path}`;window.scrollTo(0,Q1.current.get(I)||0)},[T]),k1(()=>{if(!$)return;p3().then((I)=>{if(I.currentRevision){let r=I.revisions||[];for(let n of r)if(n.hasFeedback)U0(localStorage,$,n.revision);_2(localStorage,$,I.currentRevision,r),X(I.currentRevision),Z(I.currentRevision),U(r)}if(I.canvasFiles){let r=I.canvasFiles.sort();A(r),M((n)=>{if(n.type==="overview")return r.length>1?n:{type:"canvas",filename:r[0]||""};if(n.type==="canvas"&&(!n.filename||!r.includes(n.filename)))return{type:"canvas",filename:r[0]||""};return n})}if(I.projectRoot)D(I.projectRoot);if(Array.isArray(I.shares))o(I.shares);X1(!!I.shareEnabled)}).catch(()=>{})},[$]),k1(()=>{if(!$||!Y||Q)return;fetch(`/api/session/${$}/revision/${Y}/remote-feedback`).then((I)=>I.json()).then((I)=>{if(!Array.isArray(I.entries))return;let r=b4(I.entries);M1((n)=>{let A1=new Map(n);return A1.set(Y,r),A1})}).catch(()=>{})},[$,Y,Q]),k1(()=>{if(!$)return;if(!r3){z(!0);return}let I=null,r=()=>{let n=window.location.protocol==="https:"?"wss:":"ws:",A1=new WebSocket(`${n}//${window.location.host}/ws/session/${$}`);w.current=A1,A1.onopen=()=>{z(!0);for(let X2 of j.current)A1.send(JSON.stringify({type:"render-error",error:X2}));j.current=[]},A1.onclose=()=>{z(!1),I=setTimeout(r,2000)},A1.onmessage=(X2)=>{try{let _1=JSON.parse(X2.data);if(_1.type==="plan-updated"){let w1=Array.isArray(_1.revisions)?_1.revisions:[];if(_2(localStorage,$,_1.currentRevision,w1),X(_1.currentRevision),Z(_1.currentRevision),K(null),w1.length>0){U(w1);let r1=w1.find((X0)=>X0.revision===_1.currentRevision);if(r1?.canvasFiles){let X0=r1.canvasFiles.map((j0)=>j0.filename).sort();A(X0);let u2=w1.find((j0)=>j0.revision===_1.currentRevision-1),I0=R5(r1,u2),F0=P4(I0);if(F0.length===1)M({type:"canvas",filename:F0[0]});else if(F0.length>1||X0.length>1)M({type:"overview"});else M({type:"canvas",filename:X0[0]||""})}}}if(_1.type==="revision-updated"){if(Array.isArray(_1.revisions)){let w1=_1.revisions;for(let r1 of w1)if(r1.hasFeedback)U0(localStorage,$,r1.revision);U(w1)}}if(_1.type==="watcher-status")O(!!_1.watching);if(_1.type==="remote-feedback"){let w1=_1.revision,r1=_1.entries||[],X0=b4(r1);M1((u2)=>{let I0=new Map(u2),F0=I0.get(w1)||[],j0=new Set(F0.map((g2)=>g2.id)),E4=[...F0,...X0.filter((g2)=>!j0.has(g2.id))];return I0.set(w1,E4),I0})}}catch{}}};return r(),()=>{if(I)clearTimeout(I);w.current?.close()}},[$]);let v2=b0(async(I,r)=>{try{let n=localStorage.getItem(`canvas:${$}:rev:${Y}`),A1=[];if(n)try{A1=(JSON.parse(n).annotations||[]).filter((_1)=>_1.source!=="remote")}catch{}await l3({author:r,revision:Y,annotations:A1,generalNote:I}),U0(localStorage,$,Y),H(!0),V({kind:"success",message:"Feedback submitted. The canvas author will see it shortly."})}catch(n){V({kind:"error",message:`Failed to submit feedback: ${n.message||n}`})}},[$,Y]),x5=b0(async(I)=>{if(Q){let r=C5();if(!r){P(I),E(!0);return}await v2(I,r);return}if(w.current?.readyState===WebSocket.OPEN)w.current.send(JSON.stringify({type:"submit",feedback:I}))},[Q,v2]);if(!$)return F("div",{className:"flex items-center justify-center h-screen text-text-tertiary font-body",children:"No session selected."},void 0,!1,void 0,this);return F(S2.Provider,{value:i3,children:F(k4.Provider,{value:$,children:F(s0.Provider,{value:i,children:F(S1.Provider,{value:{currentRevision:J,selectedRevision:Y,revisions:q,setSelectedRevision:Z,isReadOnly:P1,compareRevision:G,setCompareRevision:K,agentWatching:N},children:F(_5,{sessionId:$,revision:Y,isReadOnly:P1,draftPhase:m5,remoteAnnotations:z1.get(Y),canvasFiles:B,children:F(E1.Provider,{value:{activeView:T,setActiveView:E5,openFiles:y,closeFile:m4,canvasFiles:B},children:F(d8.Provider,{value:{setActiveView:E5},children:F("div",{className:"min-h-screen bg-bg-base",children:[F(i8,{sessionId:$,projectRoot:m,connected:_,onMobileSidebar:()=>u(!v),collapsed:d,onToggle:()=>K1((I)=>!I)},void 0,!1,void 0,this),F(o8,{collapsed:R,onToggle:()=>g((I)=>!I),children:F(w2,{onSubmit:x5},void 0,!1,void 0,this)},void 0,!1,void 0,this),G!==null?F("div",{className:`${d?"lg:ml-0":"lg:ml-60"} ${R?"lg:mr-0":"lg:mr-[var(--sidebar-width,320px)]"} transition-[margin] duration-200`,children:F(O4,{initialLeft:G.left,initialRight:G.right,sessionId:$,onExit:()=>K(null)},void 0,!1,void 0,this)},void 0,!1,void 0,this):F("div",{className:`relative ${d?"lg:ml-0":"lg:ml-60"} ${R?"lg:mr-0":"lg:mr-[var(--sidebar-width,320px)]"} transition-[margin] duration-200`,id:"plan-scroll-container",children:[F("div",{className:"lg:hidden sticky top-0 z-20 flex items-center justify-between px-4 py-2 border-b border-border-subtle bg-bg-surface",children:[F("div",{className:"flex items-center gap-2",children:[!Q&&F(I5,{currentSessionId:$,projectRoot:m},void 0,!1,void 0,this),Q&&F("span",{className:"text-[11px] text-text-tertiary font-body",children:"Shared canvas"},void 0,!1,void 0,this),!Q&&F("span",{className:`w-1.5 h-1.5 rounded-full ${_?"bg-accent-green":"bg-accent-red"}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("div",{className:"flex items-center gap-1",children:[F(D4,{},void 0,!1,void 0,this),F("button",{onClick:()=>u(!v),className:"w-7 h-7 flex items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:"Annotations",children:F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:F("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),F(R4,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),F(a8,{},void 0,!1,void 0,this),T.type==="overview"&&F(y4,{revision:Y,responseBanner:U1?.response?F(j4,{markdown:U1.response},void 0,!1,void 0,this):void 0},void 0,!1,void 0,this),T.type==="canvas"&&B.includes(T.filename)&&F("div",{className:"relative max-w-[720px] mx-auto px-6 pt-12 pb-32",children:[q1&&F("div",{className:"absolute top-3 right-12 z-10",children:F(A4,{onClick:()=>t(!0),hasShare:l.some((I)=>I.revision===Y),title:l.some((I)=>I.revision===Y)?"Manage share link":"Share this revision"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F("button",{onClick:()=>{let I=document.querySelector(`[data-canvas-file="${T.filename}"] .plan-content`);if(!I)return;let r=X4(I);navigator.clipboard.writeText(r).then(()=>{let n=document.getElementById("export-md-btn");if(n)n.setAttribute("data-copied","true"),setTimeout(()=>{n.removeAttribute("data-copied")},1500)})},id:"export-md-btn",className:"group absolute top-3 right-6 p-1.5 text-text-tertiary hover:text-text-secondary transition-colors z-10",title:"Copy as Markdown",children:[F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"group-[[data-copied=true]]:hidden",children:[F("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},void 0,!1,void 0,this),F("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"hidden group-[[data-copied=true]]:block text-green-500",children:F("polyline",{points:"20 6 9 17 4 12"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.length<=1&&U1?.response&&F(j4,{markdown:U1.response},void 0,!1,void 0,this),F("div",{"data-canvas-file":T.filename,children:F(A0,{revision:Y,filename:T.filename},T.filename,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),y.map((I)=>F("div",{style:{display:T.type==="file"&&T.path===I?void 0:"none"},children:F($4,{path:I},void 0,!1,void 0,this)},I,!1,void 0,this))]},void 0,!0,void 0,this),v&&F("div",{className:"lg:hidden fixed inset-0 z-40 flex",children:[F("div",{className:"flex-1",onClick:()=>u(!1)},void 0,!1,void 0,this),F("div",{className:"w-80 max-w-[85vw] bg-bg-surface border-l border-border-subtle flex flex-col shadow-lg",children:[F("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border-subtle flex-shrink-0",children:[F("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:"Sidebar"},void 0,!1,void 0,this),F("button",{onClick:()=>u(!1),className:"text-text-tertiary hover:text-text-secondary w-7 h-7 flex items-center justify-center",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("div",{className:"flex-1 overflow-hidden",children:F(w2,{onSubmit:x5},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),F(S4,{sessionId:$,revision:Y,open:p,shareEnabled:q1,existingShares:l,onClose:()=>t(!1),onShareCreated:(I)=>{o((r)=>[...r.filter((n)=>n.shareId!==I.shareId),I]),V({kind:"success",message:"Share link created. Copy and send it to reviewers."})},onShareRevoked:(I)=>{o((r)=>r.filter((n)=>n.shareId!==I)),V({kind:"success",message:"Share link revoked."})}},void 0,!1,void 0,this),F(w4,{open:C,onClose:()=>{E(!1),P(null)},onSubmit:async(I)=>{let r=d3(I);if(E(!1),b!==null)await v2(b,r),P(null)}},void 0,!1,void 0,this),S&&F("div",{className:`fixed bottom-4 left-1/2 -translate-x-1/2 z-50 px-4 py-2.5 rounded-lg shadow-lg text-[13px] font-body font-medium flex items-center gap-2 ${S.kind==="error"?"bg-accent-red text-white":"bg-accent-green text-white"}`,children:[S.message,F("button",{onClick:()=>V(null),className:"ml-2 opacity-70 hover:opacity-100",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},`${$}:${Y}:${m5}`,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function i8({sessionId:$,projectRoot:Q,connected:J,onMobileSidebar:X,collapsed:Y,onToggle:Z}){let q=$1.isShared;return F(Y2,{children:[Y&&F("button",{onClick:Z,className:"hidden lg:flex fixed top-3 left-3 z-20 w-7 h-7 items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors bg-bg-surface border border-border-subtle",title:"Show sidebar",children:F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[F("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"},void 0,!1,void 0,this),F("line",{x1:"9",y1:"3",x2:"9",y2:"21"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),F("div",{className:`hidden lg:flex w-60 flex-col fixed top-0 left-0 bottom-0 bg-bg-surface border-r border-border-subtle z-10 transition-transform duration-200 ${Y?"-translate-x-full":""}`,children:[F("div",{className:"px-4 pt-4 pb-3 flex-shrink-0 border-b border-border-subtle",children:[F("div",{className:"flex items-center gap-2 mb-2",children:[F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",className:"text-text-tertiary flex-shrink-0",children:F("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this),q?F("span",{className:"text-[12px] font-body text-text-secondary truncate flex-1",children:"Shared canvas"},void 0,!1,void 0,this):F(Y2,{children:[F(I5,{currentSessionId:$,projectRoot:Q},void 0,!1,void 0,this),F("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${J?"bg-accent-green":"bg-accent-red"}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("button",{onClick:Z,className:"ml-auto w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:"Hide sidebar",children:F("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[F("polyline",{points:"11 17 6 12 11 7"},void 0,!1,void 0,this),F("polyline",{points:"18 17 13 12 18 7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F(D4,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("div",{className:"flex-1 flex flex-col overflow-hidden",children:F(s3,{embedded:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this),F("div",{className:"px-4 py-3 border-t border-border-subtle flex items-center justify-between flex-shrink-0",children:[F("span",{className:"text-[10px] text-text-tertiary font-body uppercase tracking-widest",children:"Theme"},void 0,!1,void 0,this),F(R4,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function o8({children:$,collapsed:Q,onToggle:J}){let[X,Y]=Y1(()=>{let _=localStorage.getItem("canvas-sidebar-width");return _?parseInt(_,10):320}),Z=g1(!1),q=g1(0),U=g1(0),G=g1(X);G.current=X;let K=b0((_)=>{_.preventDefault(),Z.current=!0,q.current=_.clientX,U.current=G.current;let z=(H)=>{if(!Z.current)return;let N=q.current-H.clientX,O=Math.max(240,Math.min(600,U.current+N));Y(O),G.current=O},W=()=>{Z.current=!1,localStorage.setItem("canvas-sidebar-width",String(G.current)),document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",W),document.body.style.cursor="",document.body.style.userSelect=""};document.addEventListener("mousemove",z),document.addEventListener("mouseup",W),document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[]);return k1(()=>{return document.documentElement.style.setProperty("--sidebar-width",`${X}px`),()=>{document.documentElement.style.removeProperty("--sidebar-width")}},[X]),F(Y2,{children:[Q&&F("button",{onClick:J,className:"hidden lg:flex fixed top-3 right-3 z-20 w-7 h-7 items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors bg-bg-surface border border-border-subtle",title:"Show annotations",children:F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:F("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),F("div",{className:`hidden lg:flex flex-col fixed top-0 right-0 bottom-0 bg-bg-surface border-l border-border-subtle z-10 transition-transform duration-200 ${Q?"translate-x-full":""}`,style:{width:X},children:[F("div",{onMouseDown:K,className:"absolute left-0 top-0 bottom-0 w-1 cursor-col-resize hover:bg-accent-blue/30 transition-colors z-20",style:{marginLeft:"-2px"}},void 0,!1,void 0,this),Y0.Children.map($,(_)=>Y0.isValidElement(_)?Y0.cloneElement(_,{collapseButton:F("button",{onClick:J,className:"w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:"Hide annotations",children:F("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[F("polyline",{points:"13 17 18 12 13 7"},void 0,!1,void 0,this),F("polyline",{points:"6 17 11 12 6 7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}):_)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function j4({markdown:$}){let[Q,J]=Y1(!1),X=C4(()=>a.parse($,{async:!1}),[$]),Y=g1(null),{annotations:Z,addAnnotationWithId:q,removeAnnotation:U,updateAnnotation:G,addAnnotationImage:K,removeAnnotationImage:_,activeAnnotationId:z,setActiveAnnotationId:W}=v1(),[H,N]=Y1(null),[O,B]=Y1(null),A=C4(()=>Z.filter((w)=>w.filePath===I1),[Z]),[T,M]=Y1($);if($!==T)M($),J(!1);k1(()=>{if(!Y.current||A.length===0)return;let w=setTimeout(()=>{if(Y.current)f0(Y.current,A)},50);return()=>clearTimeout(w)},[X,A.length]);let y=g1(null);if(k1(()=>{E0(z,y.current),y.current=z},[z]),k1(()=>{let w=Y.current;if(!w)return;let j=(D)=>{let v=D.target.closest("[data-annotation-id]");if(!v)return;D.stopPropagation();let u=v.getAttribute("data-annotation-id");if(u===z)B({anchorEl:v,annId:u});else W(u)},k=(D)=>{let v=D.target.closest("[data-annotation-id]");if(v)W(v.getAttribute("data-annotation-id"))},m=(D)=>{let v=D.target.closest("[data-annotation-id]"),u=D.relatedTarget?.closest?.("[data-annotation-id]");if(v&&!u)W(null)};return w.addEventListener("click",j),w.addEventListener("mouseover",k),w.addEventListener("mouseout",m),()=>{w.removeEventListener("click",j),w.removeEventListener("mouseover",k),w.removeEventListener("mouseout",m)}},[X,z]),k1(()=>{let w=()=>{let j=window.getSelection();if(!j||j.isCollapsed||!j.toString().trim())return;if(!Y.current)return;let k=j.getRangeAt(0);if(!Y.current.contains(k.startContainer))return;if(k.startContainer.parentElement?.closest?.("[data-annotation-id]"))return;let m=j.toString().trim();if(m.length<2)return;let D=k.cloneRange(),v=o1(k,Y.current),u=`__pending_${Date.now()}`;try{i1(D,u)}catch{}window.getSelection()?.removeAllRanges();let d=document.querySelectorAll(`[data-annotation-id="${u}"]`),K1=d[d.length-1];if(!K1)return;N({anchorEl:K1,tempId:u,snippet:m,ctx:v})};return document.addEventListener("mouseup",w),()=>document.removeEventListener("mouseup",w)},[]),Q)return null;let L=document.getElementById("plan-scroll-container");return F("div",{className:"mb-6 rounded-lg border border-accent-blue/20 bg-accent-blue/5 relative",children:[F("button",{onClick:()=>J(!0),className:"absolute top-2 right-2 w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",children:F("span",{className:"text-xs",children:"✕"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F("div",{className:"px-4 py-3 pr-10",children:[F("div",{className:"flex items-center gap-2 mb-1.5",children:[F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-accent-blue flex-shrink-0",children:F("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F("span",{className:"text-[11px] font-medium uppercase tracking-widest text-accent-blue font-body",children:"Agent Response"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("div",{ref:Y,className:"prose-canvas text-sm",dangerouslySetInnerHTML:{__html:X}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H&&F(x1,{anchorEl:H.anchorEl,scrollContainer:L,snippet:H.snippet,truncateAt:80,onAdd:(w,j)=>{let k=O1();x0(H.tempId,k),q(k,H.snippet,w,I1,H.ctx,j),N(null)},onCancel:()=>{v0(H.tempId),N(null)}},void 0,!1,void 0,this),O&&(()=>{let w=Z.find((j)=>j.id===O.annId);if(!w)return null;return F(W0,{anchorEl:O.anchorEl,scrollContainer:L,initialNote:w.note,initialImages:w.images,onUpdate:(j,k)=>{G(O.annId,j);let m=w.images||[];for(let D of k)if(!m.includes(D))K(O.annId,D);for(let D of m)if(!k.includes(D))_(O.annId,D)},onDelete:()=>{U(O.annId),W(null)},onClose:()=>B(null)},void 0,!1,void 0,this)})()]},void 0,!0,void 0,this)}function a8(){let{activeView:$,setActiveView:Q,openFiles:J,closeFile:X,canvasFiles:Y}=Y0.useContext(E1),Z=Y0.useContext(k4),{addAnnotationWithId:q,setActiveAnnotationId:U}=v1();if(!(Y.length>1||J.length>0))return null;return F("div",{className:"flex items-center border-b border-border-medium bg-bg-surface overflow-x-auto sticky top-0 z-10",children:[Y.length>1&&F(Y2,{children:[F("button",{onClick:()=>Q({type:"overview"}),className:`flex items-center gap-1.5 px-4 py-2.5 text-[13px] font-body whitespace-nowrap transition-colors relative ${$.type==="overview"?"text-text-primary":"text-text-tertiary hover:text-text-secondary"}`,children:[F("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",className:"opacity-60",children:F("path",{d:"M12 7L2 12l10 5 10-5-10-5z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Overview",$.type==="overview"&&F("span",{className:"absolute bottom-0 left-3 right-3 h-[2px] bg-text-primary rounded-full"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y.map((K,_)=>{let z=K.replace(/\.jsx$/,""),W=$.type==="canvas"&&$.filename===K;return F(Y0.Fragment,{children:[F("button",{onClick:()=>Q({type:"canvas",filename:K}),className:`flex items-center gap-1.5 px-4 py-2.5 text-[13px] font-body whitespace-nowrap transition-colors relative ${W?"text-text-primary":"text-text-tertiary hover:text-text-secondary"}`,children:[z,W&&F("span",{className:"absolute bottom-0 left-3 right-3 h-[2px] bg-text-primary rounded-full"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_<Y.length-1&&F("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this)]},K,!0,void 0,this)}),J.length>0&&F(Y2,{children:[F("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this),J.map((K,_)=>{let z=K.split("/").pop()||K,W=$.type==="file"&&$.path===K;return F(Y0.Fragment,{children:[F("div",{className:"flex items-center",children:[F("button",{onClick:()=>Q({type:"file",path:K}),className:`flex items-center gap-1.5 pl-3 pr-1 py-2.5 text-[13px] font-body whitespace-nowrap transition-colors relative ${W?"text-text-primary":"text-text-tertiary hover:text-text-secondary"}`,children:[F(t1,{name:z,type:"file"},void 0,!1,void 0,this),z,W&&F("span",{className:"absolute bottom-0 left-3 right-1 h-[2px] bg-text-primary rounded-full"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),F("button",{onClick:(H)=>{H.stopPropagation(),X(K)},className:"text-text-tertiary hover:text-text-secondary px-1.5 py-1 text-[10px] transition-colors rounded hover:bg-bg-input",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_<J.length-1&&F("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this)]},K,!0,void 0,this)})]},void 0,!0,void 0,this),F("div",{className:"ml-auto flex items-center gap-1 flex-shrink-0",children:$.type==="file"&&p1&&F("button",{onClick:async()=>{let K=$.path;try{let z=await(await fetch(`/api/file?session=${Z}&path=${encodeURIComponent(K)}`)).json();if(!z.error){let W=z.content.split(`
83
+ `}var el=new Set(["CODE","SPAN","STRONG","EM","A","B","I","U","SMALL","SUB","SUP","MARK","ABBR"]);function Fn(e,t,n){if(tl(e)){let r=nl(e);if(r)t.push(r,"");return}for(let r of e.childNodes)if(r.nodeType===Node.ELEMENT_NODE)ol(r,t,n);else if(r.nodeType===Node.TEXT_NODE){let o=r.textContent?.trim();if(o)t.push(o,"")}}function tl(e){for(let t of e.childNodes){if(t.nodeType===Node.TEXT_NODE)continue;if(t.nodeType===Node.ELEMENT_NODE){let n=t;if(!el.has(n.tagName)||n.hasAttribute("data-md"))return!1}}return e.childNodes.length>0}function nl(e){let t="";for(let n of e.childNodes)if(n.nodeType===Node.TEXT_NODE)t+=n.textContent||"";else if(n.nodeType===Node.ELEMENT_NODE){let r=n;if(r.tagName==="CODE")t+="`"+(r.textContent||"")+"`";else t+=r.textContent||""}return t.trim()}function ol(e,t,n){let r=e.getAttribute("data-md");if(r)switch(r){case"section":return rl(e,t,n);case"item":return sl(e,t);case"codeblock":return il(e,t);case"callout":return al(e,t);case"note":return ll(e,t);case"markdown":return fl(e,t);case"table":return cl(e,t);case"checklist":return dl(e,t);case"diff":return ul(e,t);case"mermaid":return pl(e,t);case"choice":return ml(e,t);case"multichoice":return hl(e,t);case"choice-option":case"multichoice-option":return;case"userinput":return gl(e,t);case"rangeinput":return xl(e,t);case"checklist-item":return;case"filepreview":return bl(e,t);case"priority":return vl(e,t)}if(e.querySelector("button, input, select, textarea"))return;if(e.children.length>0)Fn(e,t,n);else{let o=e.textContent?.trim();if(o)t.push(o,"")}}function rl(e,t,n){let r=e.getAttribute("data-md-title")||"Untitled",o=n===0?"##":"###";t.push(`${o} ${r}`,"");let i=e.querySelector(":scope > div:last-of-type");if(i)Fn(i,t,n+1)}function sl(e,t){let n=e.getAttribute("data-md-label")||"",r=e.getAttribute("data-md-status"),o=e.getAttribute("data-md-badge"),i="-";if(r==="done")i="- [x]";else if(r)i="- [ ]";let s=`${i} **${n}**`;if(o)s+=` \`${o}\``;t.push(s);let l=e.querySelector(".text-text-secondary");if(l){let a=[];Fn(l,a,0);for(let c of a)t.push(c?` ${c}`:"")}t.push("")}function il(e,t){let n=e.getAttribute("data-md-language")||"",o=e.querySelector("code")?.textContent||"";t.push(`\`\`\`${n}`,o,"```","")}function al(e,t){let n=e.getAttribute("data-md-type")||"info",r={info:"Info",warning:"Warning",danger:"Danger",tip:"Tip"},o=yl(e.querySelector(".text-text-secondary")||e);t.push(`> **${r[n]||n}:** ${o}`,"")}function ll(e,t){let n=e.textContent?.trim()||"";t.push(`> *${n}*`,"")}function cl(e,t){let n=e.querySelector("table");if(!n)return;let r=[];for(let o of n.querySelectorAll("thead th"))r.push(o.textContent?.trim()||"");if(r.length===0)return;t.push(`| ${r.join(" | ")} |`),t.push(`| ${r.map(()=>"---").join(" | ")} |`);for(let o of n.querySelectorAll("tbody tr")){let i=[];for(let s of o.querySelectorAll("td"))i.push(s.textContent?.trim()||"");t.push(`| ${i.join(" | ")} |`)}t.push("")}function dl(e,t){for(let n of e.querySelectorAll("li")){let r=n.querySelector(".bg-accent-green")!==null,o=n.textContent?.trim()||"";t.push(`- [${r?"x":" "}] ${o}`)}t.push("")}function ul(e,t){let n=e.getAttribute("data-md-language")||"";t.push(`\`\`\`diff${n?` (${n})`:""}`);for(let r of e.querySelectorAll("[class*='flex']")){let o=r.querySelector(".text-accent-red")?"-":r.querySelector(".text-accent-green")?"+":" ",i=r.querySelector("code");if(i)t.push(`${o} ${i.textContent}`)}t.push("```","")}function pl(e,t){let n=e.getAttribute("data-md-source")||"";if(n)t.push("```mermaid",n,"```","")}function fl(e,t){let n=e.getAttribute("data-md-source")||"";if(n)t.push(n,"")}function ml(e,t){let n=e.getAttribute("data-md-label")||"";t.push(`**${n}:**`);for(let r of e.querySelectorAll("[data-md='choice-option']")){let o=r.getAttribute("data-md-label")||r.textContent?.trim()||"",i=r.querySelector(".bg-accent-amber")!==null;t.push(`- ${i?"(x)":"( )"} ${o}`)}t.push("")}function hl(e,t){let n=e.getAttribute("data-md-label")||"";t.push(`**${n}:**`);for(let r of e.querySelectorAll("[data-md='multichoice-option']")){let o=r.getAttribute("data-md-label")||r.textContent?.trim()||"",i=r.querySelector(".bg-accent-amber")!==null;t.push(`- [${i?"x":" "}] ${o}`)}t.push("")}function gl(e,t){let n=e.getAttribute("data-md-label")||"",o=e.querySelector("textarea")?.value?.trim()||"";t.push(`**${n}:** ${o||"_empty_"}`,"")}function xl(e,t){let n=e.getAttribute("data-md-label")||"",r=e.querySelector("input[type='range']"),i=e.querySelector(".font-mono")?.textContent?.trim()||r?.value||"—";t.push(`**${n}:** ${i}`,"")}function bl(e,t){let n=e.getAttribute("data-md-path")||"",r=e.getAttribute("data-md-lines")||"",i=e.querySelector("code")?.textContent||"",s=n.split(".").pop()||"",l=Dn[s]||"",a=r?`${n} (L${r})`:n;t.push(a,"",`\`\`\`${l}`,i,"```","")}function vl(e,t){}function yl(e){return e?.textContent?.trim()||""}import ws,{useEffect as nt,useState as ge,useRef as qe,useCallback as Es,useMemo as qn,useContext as Dl}from"react";import{useEffect as kl,useState as wl,useRef as El,useContext as Al}from"react";import{jsxDEV as be,Fragment as us}from"react/jsx-dev-runtime";function Rl(e){return e.label||`Round ${e.revision}`}function Sl(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/1000);if(n<60)return"just now";let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let o=Math.floor(r/60);if(o<24)return`${o}h ago`;return`${Math.floor(o/24)}d ago`}function nn({value:e,onChange:t,accent:n="default",className:r}){let{currentRevision:o,revisions:i}=Al(ke),[s,l]=wl(!1),a=El(null);kl(()=>{if(!s)return;let d=(f)=>{if(a.current&&!a.current.contains(f.target))l(!1)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[s]);let c=i.find((d)=>d.revision===e);return be("div",{className:"relative",ref:a,children:[be("button",{onClick:()=>l(!s),className:`flex items-center gap-1.5 text-[12px] font-body font-medium px-2 py-1 rounded-md transition-colors hover:bg-bg-elevated ${{default:"text-text-secondary hover:text-text-primary",red:"text-accent-red",green:"text-accent-green",amber:"text-accent-amber bg-highlight-selected"}[n]} ${r||""}`,children:[c?Rl(c):`Round ${e}`,be("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",className:`text-text-tertiary transition-transform duration-200 ${s?"rotate-180":""}`,children:be("path",{d:"M2.5 4l2.5 2.5L7.5 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s&&be("div",{className:"absolute top-full left-0 mt-1 w-64 bg-bg-elevated border border-border-hover rounded-lg shadow-lg z-50 py-1 max-h-80 overflow-y-auto",children:[...i].reverse().map((d)=>be("button",{onClick:()=>{t(d.revision),l(!1)},className:`w-full flex items-center gap-2 px-3 py-2 text-[12px] font-body transition-colors ${d.revision===e?"bg-bg-surface text-text-primary":"text-text-secondary hover:bg-bg-surface hover:text-text-primary"}`,children:[be("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${d.revision===o?"bg-accent-green":d.hasFeedback?"bg-accent-amber":"bg-border-hover"}`},void 0,!1,void 0,this),be("span",{className:"flex-1 text-left truncate",children:d.label?be(us,{children:[d.label," ",be("span",{className:"text-text-tertiary",children:["#",d.revision]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):be(us,{children:["Round ",d.revision]},void 0,!0,void 0,this)},void 0,!1,void 0,this),be("span",{className:"text-[10px] text-text-tertiary flex-shrink-0 flex items-center gap-1.5",children:[(()=>{let f=d.canvasFiles?.reduce((p,m)=>{if(m.diffStats)p.added+=m.diffStats.added,p.removed+=m.diffStats.removed;return p},{added:0,removed:0});if(f&&(f.added>0||f.removed>0))return be("span",{className:"font-mono",children:[be("span",{className:"text-accent-green",children:["+",f.added]},void 0,!0,void 0,this)," ",be("span",{className:"text-accent-red",children:["-",f.removed]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return null})(),d.revision===o?"current":d.hasFeedback?"sent":Sl(d.createdAt)]},void 0,!0,void 0,this)]},d.revision,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function tt(e,t){let n=e.length,r=t.length;if(n===0||r===0)return[];let o=Array.from({length:n+1},()=>Array(r+1).fill(0));for(let a=1;a<=n;a++)for(let c=1;c<=r;c++)o[a][c]=e[a-1]===t[c-1]?o[a-1][c-1]+1:Math.max(o[a-1][c],o[a][c-1]);let i=[],s=n,l=r;while(s>0&&l>0)if(e[s-1]===t[l-1])i.unshift(e[s-1]),s--,l--;else if(o[s-1][l]>o[s][l-1])s--;else l--;return i}function ps(e){let t=[],n=[],r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(i){let s=i.parentElement;if(!s)return NodeFilter.FILTER_REJECT;if(s.closest("svg, .select-none, [data-no-diff]"))return NodeFilter.FILTER_REJECT;return NodeFilter.FILTER_ACCEPT}}),o;while(o=r.nextNode()){let s=(o.nodeValue||"").match(/\S+|\s+/g);if(!s)continue;let l=0;for(let a of s)t.push(a),n.push({text:a,node:o,offset:l}),l+=a.length}return{words:t,map:n}}function Fo(e,t){if(e.length>5000||t.length>5000)return Cl(e,t);return hs(e,t)}function hs(e,t){let n=Bn(e,t),r=[],o=[],i=0,s=0,l=0;while(i<e.length||s<t.length)if(l<n.length&&i<e.length&&s<t.length&&e[i]===n[l]&&t[s]===n[l])r.push({type:"same",index:i}),o.push({type:"same",index:s}),i++,s++,l++;else if(i<e.length&&(l>=n.length||e[i]!==n[l]))r.push({type:"removed",index:i}),i++;else if(s<t.length)o.push({type:"added",index:s}),s++;return{oldOps:r,newOps:o}}function Bn(e,t){let n=e.length,r=t.length;if(n===0||r===0)return[];if(n===1)return t.includes(e[0])?[e[0]]:[];if(r===1)return e.includes(t[0])?[t[0]]:[];if(n*r<=1e6)return tt(e,t);let o=Math.floor(n/2),i=e.slice(0,o),s=e.slice(o),l=fs(i,t),a=fs([...s].reverse(),[...t].reverse()),c=0,u=0;for(let p=0;p<=r;p++){let m=l[p]+a[r-p];if(m>c)c=m,u=p}let d=t.slice(0,u),f=t.slice(u);return[...Bn(i,d),...Bn(s,f)]}function fs(e,t){let n=t.length,r=Array(n+1).fill(0),o=Array(n+1).fill(0);for(let i=0;i<e.length;i++){for(let s=1;s<=n;s++)o[s]=e[i]===t[s-1]?r[s-1]+1:Math.max(r[s],o[s-1]);[r,o]=[o,r],o.fill(0)}return r}function Cl(e,t){let r=(m)=>{let v=[];for(let g=0;g<m.length;g+=200){let w=Math.min(g+200,m.length);v.push({start:g,end:w,text:m.slice(g,w).join("")})}return v},o=r(e),i=r(t),s=o.map((m)=>m.text),l=i.map((m)=>m.text),a=Bn(s,l),c=[],u=[],d=0,f=0,p=0;while(d<o.length||f<i.length)if(p<a.length&&d<o.length&&f<i.length&&s[d]===a[p]&&l[f]===a[p]){for(let m=o[d].start;m<o[d].end;m++)c.push({type:"same",index:m});for(let m=i[f].start;m<i[f].end;m++)u.push({type:"same",index:m});d++,f++,p++}else if(d<o.length&&(p>=a.length||s[d]!==a[p]))if(f<i.length&&(p>=a.length||l[f]!==a[p])){let m=hs(e.slice(o[d].start,o[d].end),t.slice(i[f].start,i[f].end));for(let v of m.oldOps)c.push({type:v.type,index:v.index+o[d].start});for(let v of m.newOps)u.push({type:v.type,index:v.index+i[f].start});d++,f++}else{for(let m=o[d].start;m<o[d].end;m++)c.push({type:"removed",index:m});d++}else if(f<i.length){for(let m=i[f].start;m<i[f].end;m++)u.push({type:"added",index:m});f++}return{oldOps:c,newOps:u}}function ms(e,t,n){let r=new Map;for(let o of e){if(o.type==="same")continue;let i=t[o.index];if(!i||!i.node.parentNode)continue;let s=r.get(i.node);if(!s)s=[],r.set(i.node,s);s.push({offset:i.offset,length:i.text.length})}for(let[o,i]of r){if(!o.parentNode)continue;let s=o.nodeValue||"";i.sort((d,f)=>d.offset-f.offset);let l=[];for(let d of i){let f=l[l.length-1];if(f&&d.offset<=f.offset+f.length)f.length=Math.max(f.length,d.offset+d.length-f.offset);else l.push({...d})}let a=o.parentNode,c=document.createDocumentFragment(),u=0;for(let d of l){if(d.offset>u)c.appendChild(document.createTextNode(s.slice(u,d.offset)));let f=document.createElement("span");f.className=n,f.textContent=s.slice(d.offset,d.offset+d.length),c.appendChild(f),u=d.offset+d.length}if(u<s.length)c.appendChild(document.createTextNode(s.slice(u)));a.replaceChild(c,o)}}function _n(e,t){let n=Nl(e,t),r=ps(e),o=ps(t),{oldOps:i,newOps:s}=Fo(r.words,o.words),l=i.some((a)=>a.type==="removed")||s.some((a)=>a.type==="added");return ms(i,r.map,"diff-removed"),ms(s,o.map,"diff-added"),l||n}function Nl(e,t){let n=Array.from(e.querySelectorAll('[data-md="mermaid"]')),r=Array.from(t.querySelectorAll('[data-md="mermaid"]')),o=!1,i=Math.max(n.length,r.length);for(let s=0;s<i;s++){let l=n[s],a=r[s];if(!l&&a){a.classList.add("diff-block-added"),a.style.position="relative",o=!0;continue}if(l&&!a){l.classList.add("diff-block-removed"),l.style.position="relative",o=!0;continue}if(!l||!a)continue;let c=(l.getAttribute("data-md-source")||"").trim(),u=(a.getAttribute("data-md-source")||"").trim();if(c===u)continue;o=!0,l.style.borderLeft="3px solid var(--color-accent-red)",l.style.paddingLeft="8px",a.style.borderLeft="3px solid var(--color-accent-green)",a.style.paddingLeft="8px";let d=c.split(`
84
+ `),f=u.split(`
85
+ `),p=tt(d,f),m=(v,g,w)=>{let h=document.createElement("div");h.className="mt-2 bg-bg-code rounded-md overflow-hidden text-tiny font-mono",h.setAttribute("data-no-diff","true");let b=0,k=0;while(k<v.length){let y=document.createElement("div");if(y.className="px-3 py-0.5 whitespace-pre-wrap",b<g.length&&v[k]===g[b])y.textContent=" "+v[k],k++,b++;else y.classList.add(w==="old"?"diff-removed":"diff-added"),y.textContent=(w==="old"?"- ":"+ ")+v[k],k++;h.appendChild(y)}return h};l.appendChild(m(d,p,"old")),a.appendChild(m(f,p,"new"))}return o}function Tt(e){let t=[],n=e.querySelectorAll(":scope > [data-md]");for(let r of n)t.push(on(r));if(t.length===0){let r=e.querySelectorAll("[data-md]"),o=new Set;for(let i of r){let s=i.parentElement?.closest("[data-md]");if(s&&e.contains(s))continue;if(o.has(i))continue;o.add(i),t.push(on(i))}}return t}function on(e){let t=e.getAttribute("data-md")||"unknown",n=Tl(e,t),r=[];if(t==="section"){let o=e.querySelector(":scope > div.mt-6, :scope > div:last-child");if(o)for(let i of o.querySelectorAll(":scope > [data-md]"))r.push(on(i))}else if(t==="table")for(let o of e.querySelectorAll(":scope table > tbody > tr"))r.push({key:"tr:"+(o.textContent||"").slice(0,80),type:"tr",element:o,children:[]});else if(t==="checklist")for(let o of e.querySelectorAll(":scope > [data-md='checklist-item']"))r.push(on(o));else for(let o of e.querySelectorAll("[data-md]"))if(o.parentElement?.closest("[data-md]")===e)r.push(on(o));return{key:n,type:t,element:e,children:r}}function Tl(e,t){switch(t){case"section":return"section:"+(e.getAttribute("data-md-title")||"");case"item":return"item:"+(e.getAttribute("data-task-id")||e.getAttribute("data-md-label")||"");case"codeblock":case"diff":return t+":"+(e.textContent||"").slice(0,80);case"checklist-item":return"checklist-item:"+(e.getAttribute("data-md-label")||e.textContent?.slice(0,60)||"");case"checklist":return"checklist:"+e.querySelectorAll("[data-md='checklist-item']").length;case"markdown":return"markdown:"+(e.getAttribute("data-md-file")||"inline");case"mermaid":return"mermaid:"+(e.getAttribute("data-md-source")||"").slice(0,80);case"callout":return"callout:"+(e.getAttribute("data-md-type")||"")+":"+(e.textContent||"").slice(0,60);default:return t+":"+(e.getAttribute("data-md-label")||e.textContent?.slice(0,60)||"")}}function rn(e,t){let n=e.map((c)=>c.key),r=t.map((c)=>c.key),o=tt(n,r),i=[],s=0,l=0,a=0;while(s<e.length||l<t.length)if(a<o.length&&s<e.length&&l<t.length&&n[s]===o[a]&&r[l]===o[a]){let c=e[s],u=t[l],d=c.children.length>0||u.children.length>0?rn(c.children,u.children):void 0;i.push({kind:"matched",oldBlock:c,newBlock:u,childMatches:d}),s++,l++,a++}else if(s<e.length&&(a>=o.length||n[s]!==o[a]))i.push({kind:"removed",oldBlock:e[s]}),s++;else if(l<t.length)i.push({kind:"added",newBlock:t[l]}),l++;return i}function jn(e){let t=document.createDocumentFragment(),n=!1;for(let r of e)if(r.kind==="removed")n=!0,t.appendChild(xs(r.oldBlock.element));else if(r.kind==="added")n=!0,t.appendChild(Ll(r.newBlock.element));else{let o=r.newBlock.element.cloneNode(!0),i=r.newBlock.type;if(i==="mermaid"){if(ks(r.oldBlock.element,o))n=!0}else if(r.childMatches&&r.childMatches.length>0&&(i==="table"||i==="checklist")){if(vs(o,r.childMatches,i))n=!0}else if(r.childMatches&&r.childMatches.length>0){if(bs(r.oldBlock,o,r.childMatches,i))n=!0}else if(i==="markdown"){if(ys(r.oldBlock.element,o))n=!0}else if(xt(r.oldBlock.element,o,!1))n=!0;t.appendChild(o)}return{fragment:t,hasChanges:n}}function xs(e){let t=e.cloneNode(!0);return t.classList.add("diff-block-removed"),t.style.position="relative",Bo(t,"Removed","var(--color-accent-red)"),t}function Ll(e){let t=e.cloneNode(!0);return t.classList.add("diff-block-added"),t.style.position="relative",Bo(t,"Added","var(--color-accent-green)"),t}function bs(e,t,n,r){let o=!1,i=Ml(e,t),s,l;if(r==="section"){let a=e.element.querySelector(":scope > div:first-child"),c=t.querySelector(":scope > div:first-child");if(a&&c){if(xt(a,c,!1))o=!0}s=e.element.querySelector(":scope > div.mt-6, :scope > div:last-child"),l=t.querySelector(":scope > div.mt-6, :scope > div:last-child")}else s=e.element,l=t;if(!s||!l)return o;for(let a of n)if(a.kind==="matched"){let c=i.newMap.get(a.newBlock.element);if(c){if(a.newBlock.type==="mermaid"){if(ks(a.oldBlock.element,c))o=!0}else if(a.childMatches&&a.childMatches.length>0&&(a.newBlock.type==="table"||a.newBlock.type==="checklist")){if(vs(c,a.childMatches,a.newBlock.type))o=!0}else if(a.childMatches&&a.childMatches.length>0){if(bs(a.oldBlock,c,a.childMatches,a.newBlock.type))o=!0}else if(a.newBlock.type==="markdown"){if(ys(a.oldBlock.element,c))o=!0}else if(xt(a.oldBlock.element,c,!1))o=!0}}else if(a.kind==="removed"){o=!0;let c=xs(a.oldBlock.element),u=Pl(n,a,i.newMap),d=u?$l(l,u):null;l.insertBefore(c,d)}else if(a.kind==="added"){o=!0;let c=i.newMap.get(a.newBlock.element);if(c)c.classList.add("diff-block-added"),c.style.position="relative",Bo(c,"Added","var(--color-accent-green)")}if(xt(s,l,!0))o=!0;return o}function vs(e,t,n){let r=n==="table"?e.querySelector(":scope table > tbody"):e;if(!r)return!1;let o=!1;r.innerHTML="";for(let i of t)if(i.kind==="removed"){o=!0;let s=i.oldBlock.element.cloneNode(!0);s.classList.add(n==="table"?"diff-row-removed":"diff-item-removed"),r.appendChild(s)}else if(i.kind==="added"){o=!0;let s=i.newBlock.element.cloneNode(!0);s.classList.add(n==="table"?"diff-row-added":"diff-item-added"),r.appendChild(s)}else{let s=i.newBlock.element.cloneNode(!0);if(xt(i.oldBlock.element,s,!1))o=!0;r.appendChild(s)}return o}function Ml(e,t){let n=new Map,r=e.element.querySelectorAll("[data-md]"),o=t.querySelectorAll("[data-md]");return{newMap:{get(i){return Il(t,i)}}}}function Il(e,t){let n=t.getAttribute("data-md");if(!n)return null;let r=t.getAttribute("data-md-label"),o=t.getAttribute("data-md-title"),i=`[data-md="${n}"]`;if(o)i+=`[data-md-title="${CSS.escape(o)}"]`;else if(r)i+=`[data-md-label="${CSS.escape(r)}"]`;let s=e.querySelectorAll(i);if(s.length===1)return s[0];let l=(t.textContent||"").slice(0,100),a=null,c=-1;for(let u of s){let d=(u.textContent||"").slice(0,100),f=0;for(let p=0;p<Math.min(l.length,d.length);p++)if(l[p]===d[p])f++;if(f>c)c=f,a=u}return a}function Pl(e,t,n){let r=e.indexOf(t);for(let o=r+1;o<e.length;o++){let i=e[o];if((i.kind==="matched"||i.kind==="added")&&i.newBlock)return n.get(i.newBlock.element)||null}return null}function $l(e,t){let n=t;while(n&&n.parentElement!==e)n=n.parentElement;return n}function ys(e,t){let n=Array.from(e.children),r=Array.from(t.children);if(n.length===0&&r.length===0)return xt(e,t,!1);let o=n.map((f)=>f.tagName.toLowerCase()),i=r.map((f)=>f.tagName.toLowerCase()),s=tt(o,i),l=[],a=0,c=0,u=0;while(a<n.length||c<r.length)if(u<s.length&&a<n.length&&c<r.length&&o[a]===s[u]&&i[c]===s[u])l.push({kind:"matched",oldChild:n[a],newChild:r[c]}),a++,c++,u++;else if(a<n.length&&(u>=s.length||o[a]!==s[u]))l.push({kind:"removed",oldChild:n[a]}),a++;else if(c<r.length)l.push({kind:"added",newChild:r[c]}),c++;let d=!1;while(t.firstChild)t.removeChild(t.firstChild);for(let f of l)if(f.kind==="matched"){let p=(f.oldChild.textContent||"").match(/\S+/g)||[],m=(f.newChild.textContent||"").match(/\S+/g)||[],v=tt(p,m),g=Math.max(p.length,m.length);if((g>0?1-v.length/g:0)>0.5){d=!0;let h=f.oldChild.cloneNode(!0);h.classList.add("diff-block-removed"),t.appendChild(h),f.newChild.classList.add("diff-block-added"),t.appendChild(f.newChild)}else{if(xt(f.oldChild,f.newChild,!1))d=!0;t.appendChild(f.newChild)}}else if(f.kind==="removed"){d=!0;let p=f.oldChild.cloneNode(!0);p.classList.add("diff-block-removed"),t.appendChild(p)}else d=!0,f.newChild.classList.add("diff-block-added"),t.appendChild(f.newChild);return d}function gs(e,t){let n=t?new Set(Array.from(e.querySelectorAll("[data-md]"))):new Set,r=[],o=[],i=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(l){let a=l.parentElement;if(!a)return NodeFilter.FILTER_REJECT;if(a.closest("svg, .select-none, [data-no-diff]"))return NodeFilter.FILTER_REJECT;if(t){for(let c of n)if(c.contains(l))return NodeFilter.FILTER_REJECT}return NodeFilter.FILTER_ACCEPT}}),s;while(s=i.nextNode()){let a=(s.nodeValue||"").match(/\S+|\s+/g);if(!a)continue;let c=0;for(let u of a)r.push(u),o.push({text:u,node:s,offset:c}),c+=u.length}return{words:r,map:o}}function xt(e,t,n){let r=gs(e,n),o=gs(t,n);if(r.words.length===0&&o.words.length===0)return!1;let{oldOps:i,newOps:s}=Fo(r.words,o.words),l=i.some((g)=>g.type==="removed"),a=s.some((g)=>g.type==="added");if(!l&&!a)return!1;let c=[],u=[];for(let g of i)if(g.type==="same")c.push(g.index);for(let g of s)if(g.type==="same")u.push(g.index);let d=new Map;for(let g=0;g<c.length&&g<u.length;g++)d.set(c[g],u[g]);let f=[];{let g=[],w=-1;for(let h of i)if(h.type==="same"){if(g.length>0)f.push({text:g.join(""),anchorNewIdx:w>=0?d.get(w)??null:null}),g=[];w=h.index}else if(h.type==="removed")g.push(r.words[h.index]);if(g.length>0)f.push({text:g.join(""),anchorNewIdx:w>=0?d.get(w)??null:null})}let p=new Map,m=new Map;for(let g of s){if(g.type!=="added")continue;let w=o.map[g.index];if(!w?.node.parentNode)continue;let h=p.get(w.node);if(!h)h=[],p.set(w.node,h);h.push({start:w.offset,end:w.offset+w.text.length})}for(let g of f)if(g.anchorNewIdx===null){if(o.map.length>0){let w=o.map[0].node,h=m.get(w);if(!h)h=[],m.set(w,h);h.push({offset:0,text:g.text})}}else{let w=o.map[g.anchorNewIdx];if(!w)continue;let h=m.get(w.node);if(!h)h=[],m.set(w.node,h);h.push({offset:w.offset+w.text.length,text:g.text})}let v=new Set([...p.keys(),...m.keys()]);for(let g of v)Hl(g,p.get(g)||[],m.get(g)||[]);return!0}function Hl(e,t,n){if(!e.parentNode)return;let r=e.nodeValue||"";t.sort((u,d)=>u.start-d.start);let o=[];for(let u of t){let d=o[o.length-1];if(d&&u.start<=d.end)d.end=Math.max(d.end,u.end);else o.push({...u})}n.sort((u,d)=>u.offset-d.offset);let i=e.parentNode,s=document.createDocumentFragment(),l=0,a=0,c=0;while(l<=r.length){let u=a<o.length?o[a].start:1/0,d=c<n.length?n[c].offset:1/0,f=Math.min(u,d);if(f===1/0){if(l<r.length)s.appendChild(document.createTextNode(r.slice(l)));break}let p=Math.max(f,l);if(p>l)s.appendChild(document.createTextNode(r.slice(l,p))),l=p;while(c<n.length&&n[c].offset<=l){let m=document.createElement("span");m.className="diff-removed",m.textContent=n[c].text,s.appendChild(m),c++}if(a<o.length&&o[a].start<=l){let m=o[a],v=document.createElement("span");v.className="diff-added",v.textContent=r.slice(l,m.end),s.appendChild(v),l=m.end,a++;while(c<n.length&&n[c].offset<=l){let g=document.createElement("span");g.className="diff-removed",g.textContent=n[c].text,s.appendChild(g),c++}}}while(c<n.length){let u=document.createElement("span");u.className="diff-removed",u.textContent=n[c].text,s.appendChild(u),c++}i.replaceChild(s,e)}function ks(e,t){let n=(e.getAttribute("data-md-source")||"").trim(),r=(t.getAttribute("data-md-source")||"").trim();if(n===r)return!1;let o=n.split(`
86
+ `),i=r.split(`
87
+ `),s=tt(o,i),l=[],a=0,c=0,u=0;while(a<o.length||c<i.length)if(u<s.length&&a<o.length&&c<i.length&&o[a]===s[u]&&i[c]===s[u])l.push({type:"same",line:o[a]}),a++,c++,u++;else if(a<o.length&&(u>=s.length||o[a]!==s[u]))l.push({type:"removed",line:o[a]}),a++;else if(c<i.length)l.push({type:"added",line:i[c]}),c++;let d=document.createElement("div");d.className="mt-2 bg-bg-code rounded-md overflow-hidden text-tiny font-mono",d.setAttribute("data-no-diff","true");for(let f of l){let p=document.createElement("div");if(p.className="px-3 py-0.5 whitespace-pre-wrap",f.type==="removed")p.classList.add("diff-removed"),p.textContent="- "+f.line;else if(f.type==="added")p.classList.add("diff-added"),p.textContent="+ "+f.line;else p.textContent=" "+f.line;d.appendChild(p)}return t.appendChild(d),!0}function Bo(e,t,n){let r=document.createElement("span");r.className="diff-block-label",r.textContent=t,r.style.color=n,r.style.backgroundColor=`color-mix(in srgb, ${n} 12%, transparent)`,e.appendChild(r)}import{jsxDEV as D}from"react/jsx-dev-runtime";function Ol(e,t,n){let r=e.find((s)=>s.revision===t),o=e.find((s)=>s.revision===n),i=new Set;for(let s of r?.canvasFiles||[])i.add(s.filename);for(let s of o?.canvasFiles||[])i.add(s.filename);return[...i].sort()}function As({initialLeft:e,initialRight:t,sessionId:n,onExit:r}){let[o,i]=ge(e),[s,l]=ge(t),[a,c]=ge("unified"),[u,d]=ge(!0),[f,p]=ge(!1),{revisions:m}=Dl(ke),v=qn(()=>Ol(m,o,s),[m,o,s]),[g,w]=ge(()=>v[0]||"plan.jsx");nt(()=>{if(!v.includes(g))w(v[0]||"plan.jsx")},[v,g]);let h=qn(()=>m.find((y)=>y.revision===o)?.canvasFiles.some((y)=>y.filename===g)??!1,[m,o,g]),b=qn(()=>m.find((y)=>y.revision===s)?.canvasFiles.some((y)=>y.filename===g)??!1,[m,s,g]);return D("div",{className:"flex flex-col h-screen",children:[D("div",{className:"flex items-center justify-between px-6 py-3 border-b border-border-subtle bg-bg-surface flex-shrink-0",children:[D("div",{className:"flex items-center gap-3",children:[D("span",{className:"text-[13px] font-body font-medium text-text-primary",children:"Compare"},void 0,!1,void 0,this),D(nn,{value:o,onChange:i,accent:"red"},void 0,!1,void 0,this),D("span",{className:"text-text-tertiary text-[13px]",children:"→"},void 0,!1,void 0,this),D(nn,{value:s,onChange:l,accent:"green"},void 0,!1,void 0,this),f&&!u&&D("span",{className:"text-[11px] font-body text-text-tertiary bg-bg-elevated px-2 py-0.5 rounded",children:"No changes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),D("div",{className:"flex items-center gap-4",children:[D("div",{className:"flex items-center bg-bg-elevated rounded-md p-0.5",children:[D("button",{onClick:()=>c("unified"),className:`text-[11px] font-body px-2.5 py-1 rounded transition-colors ${a==="unified"?"bg-bg-surface text-text-primary font-medium shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Unified"},void 0,!1,void 0,this),D("button",{onClick:()=>c("side-by-side"),className:`text-[11px] font-body px-2.5 py-1 rounded transition-colors ${a==="side-by-side"?"bg-bg-surface text-text-primary font-medium shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:"Side-by-side"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a==="side-by-side"&&D(Fl,{},void 0,!1,void 0,this),D("button",{onClick:r,className:"text-[12px] font-body font-medium text-text-secondary hover:text-text-primary px-3 py-1.5 rounded-md hover:bg-bg-elevated transition-colors",children:"Exit Compare"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),v.length>1&&D("div",{className:"flex items-center gap-1 px-6 py-2 border-b border-border-subtle bg-bg-surface flex-shrink-0 overflow-x-auto",children:v.map((k)=>{let y=k.replace(/\.jsx$/,""),E=k===g,R=m.find((L)=>L.revision===o)?.canvasFiles.some((L)=>L.filename===k),C=m.find((L)=>L.revision===s)?.canvasFiles.some((L)=>L.filename===k),M=!R?" (added)":!C?" (removed)":"";return D("button",{onClick:()=>w(k),className:`text-[12px] font-body px-3 py-1 rounded-md transition-colors whitespace-nowrap ${E?"bg-bg-elevated text-text-primary font-medium":"text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated"}`,children:[y,M&&D("span",{className:`ml-1 text-[10px] ${!R?"text-accent-green":"text-accent-red"}`,children:M},void 0,!1,void 0,this)]},k,!0,void 0,this)})},void 0,!1,void 0,this),!h||!b?D("div",{className:"flex-1 flex items-center justify-center",children:D("div",{className:"text-center text-text-tertiary font-body",children:[D("div",{className:"text-lg mb-2",children:!h?"New file":"Removed file"},void 0,!1,void 0,this),D("div",{className:"text-[13px]",children:[g.replace(/\.jsx$/,"")," ",!h?"was added":"was removed"," in this revision"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this):a==="unified"?D(Bl,{sessionId:n,leftRev:o,rightRev:s,filename:g,onDiffResult:(k,y)=>{p(k),d(y)}},`unified-${o}-${s}-${g}`,!1,void 0,this):D(_l,{sessionId:n,leftRev:o,rightRev:s,filename:g,onDiffResult:(k,y)=>{p(k),d(y)}},`sbs-${o}-${s}-${g}`,!1,void 0,this)]},void 0,!0,void 0,this)}function Fl(){let[e,t]=ge(!0);return nt(()=>(document.documentElement.dataset.syncScroll=e?"1":"0",()=>{delete document.documentElement.dataset.syncScroll}),[e]),D("label",{className:"flex items-center gap-1.5 cursor-pointer select-none",children:[D("input",{type:"checkbox",checked:e,onChange:(n)=>t(n.target.checked),className:"accent-accent-amber w-3.5 h-3.5"},void 0,!1,void 0,this),D("span",{className:"text-[11px] font-body text-text-secondary",children:"Sync scroll"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Bl({sessionId:e,leftRev:t,rightRev:n,filename:r,onDiffResult:o}){let i=qe(null),s=qe(null),l=qe(null),[a,c]=ge(!1),[u,d]=ge(!1),[f,p]=ge(!1),[m,v]=ge(null),[g,w]=ge(!1),{annotations:h}=De(),b=h.filter((y)=>!y.filePath&&(!y.canvasFile||y.canvasFile===r)),{popovers:k}=Je({containerRef:l,restoreKey:f,restoreAnnotations:b,extractContext:(y)=>Ge(y,l.current)});return nt(()=>{if(f||m)return;let y=setTimeout(()=>{console.warn("[unified-diff] still loading after 10s",{leftReady:a,rightReady:u,oldRef:!!i.current,newRef:!!s.current}),w(!0)},1e4);return()=>clearTimeout(y)},[f,m,a,u]),nt(()=>{if(!a||!u||f)return;if(!i.current||!s.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!i.current||!s.current||!l.current){console.warn("[unified-diff] refs lost between rAF frames",{old:!!i.current,new:!!s.current,unified:!!l.current});return}try{let y=Tt(i.current),E=Tt(s.current),R=rn(y,E),{fragment:C,hasChanges:M}=jn(R);l.current.innerHTML="",l.current.appendChild(C),p(!0),o(!0,M)}catch(y){console.error("[unified-diff] diff computation failed",y),v(y instanceof Error?y.message:String(y))}})})},[a,u,f]),D("div",{className:"flex-1 min-h-0 overflow-y-auto",children:[!f&&!m&&D("div",{style:{position:"absolute",left:-9999,visibility:"hidden",pointerEvents:"none",width:720},children:[D(ze,{ref:i,sessionId:e,revision:t,filename:r,onReady:()=>c(!0),onError:(y)=>v(`Rev ${t}: ${y}`)},void 0,!1,void 0,this),D(ze,{ref:s,sessionId:e,revision:n,filename:r,onReady:()=>d(!0),onError:(y)=>v(`Rev ${n}: ${y}`)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),D("div",{className:"max-w-[720px] mx-auto px-6 pt-8 pb-32",children:[!f&&!m&&D("div",{className:"flex flex-col items-center justify-center h-64 text-text-tertiary font-body text-body gap-2",children:[D("span",{children:"Loading..."},void 0,!1,void 0,this),g&&D("span",{className:"text-[11px]",children:"Taking longer than expected — check Network tab for pending requests"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m&&D("div",{className:"bg-accent-red-muted rounded-lg p-5 mt-8",children:[D("h3",{className:"font-body font-semibold text-accent-red mb-2",children:"Failed to load revision"},void 0,!1,void 0,this),D("pre",{className:"text-code font-mono text-text-secondary whitespace-pre-wrap",children:m},void 0,!1,void 0,this)]},void 0,!0,void 0,this),D("div",{ref:l},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k]},void 0,!0,void 0,this)}function _l({sessionId:e,leftRev:t,rightRev:n,filename:r,onDiffResult:o}){let i=qe(null),s=qe(null),[l,a]=ge(!1),[c,u]=ge(!1),[d,f]=ge(!1),p=qe(null),m=qe(null),v=qe(null),g=qe(!1),w=Es(()=>a(!0),[]),h=Es(()=>u(!0),[]),{annotations:b}=De(),k=b.filter((E)=>!E.filePath&&(!E.canvasFile||E.canvasFile===r)),{popovers:y}=Je({containerRef:p,restoreKey:d,restoreAnnotations:k,extractContext:(E)=>Ge(E,p.current)});return nt(()=>{if(!l||!c||d)return;if(!i.current||!s.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!i.current||!s.current)return;let E=_n(i.current,s.current);f(!0),o(!0,E)})})},[l,c,d]),nt(()=>{let E=m.current,R=v.current;if(!E||!R)return;let C=(B,j)=>{if(document.documentElement.dataset.syncScroll==="0")return;if(g.current)return;g.current=!0;let W=B.scrollHeight-B.clientHeight,de=j.scrollHeight-j.clientHeight;if(W>0&&de>0)j.scrollTop=B.scrollTop/W*de;requestAnimationFrame(()=>{g.current=!1})},M=()=>C(E,R),L=()=>C(R,E);return E.addEventListener("scroll",M),R.addEventListener("scroll",L),()=>{E.removeEventListener("scroll",M),R.removeEventListener("scroll",L)}},[]),D("div",{ref:p,className:"flex flex-1 min-h-0",children:[D("div",{ref:m,className:"w-1/2 overflow-y-auto border-r border-border-subtle",children:D("div",{className:"max-w-[720px] mx-auto px-6 pt-8 pb-32",children:D(ze,{ref:i,sessionId:e,revision:t,filename:r,onReady:w},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),D("div",{ref:v,className:"w-1/2 overflow-y-auto",children:D("div",{className:"max-w-[720px] mx-auto px-6 pt-8 pb-32",children:D(ze,{ref:s,sessionId:e,revision:n,filename:r,onReady:h},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),y]},void 0,!0,void 0,this)}var ze=ws.memo(ws.forwardRef(({sessionId:e,revision:t,filename:n,onReady:r,onError:o},i)=>{let[s,l]=ge(null),[a,c]=ge(null),[u,d]=ge(!0);nt(()=>{d(!0),c(null);let p=n.replace(/\.jsx$/,".js");import(`/api/session/${e}/canvas/${encodeURIComponent(p)}?rev=${t}&t=${Date.now()}`).then((m)=>{if(!m.default){c("Module has no default export"),d(!1),o?.("Module has no default export");return}l(()=>m.default),d(!1)}).catch((m)=>{c(m.message),d(!1),o?.(m.message)})},[e,t,n]),nt(()=>{if(!s)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{r()})})},[s]);let f=qn(()=>s?D(s,{},void 0,!1,void 0,this):null,[s]);if(u)return D("div",{className:"flex items-center justify-center h-64 text-text-tertiary font-body text-body",children:"Loading..."},void 0,!1,void 0,this);if(a)return D("div",{className:"bg-accent-red-muted rounded-lg p-5",children:[D("h3",{className:"font-body font-semibold text-accent-red mb-2",children:"Error"},void 0,!1,void 0,this),D("pre",{className:"text-code font-mono text-text-secondary whitespace-pre-wrap",children:a},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(!s)return D("div",{className:"text-text-tertiary text-center py-8 font-body text-body",children:"No canvas loaded"},void 0,!1,void 0,this);return D("div",{ref:i,children:f},void 0,!1,void 0,this)}));import{useState as Ve,useContext as _o,useMemo as jl,useRef as sn,useEffect as Ss,useCallback as Rs}from"react";import{SessionContext as ql}from"#canvas/runtime";import{jsxDEV as q}from"react/jsx-dev-runtime";function jo(e,t){if(!e)return[];return e.canvasFiles.map((n)=>{if(!n.diffStats)return{filename:n.filename,status:"new"};if(n.diffStats.added===0&&n.diffStats.removed===0)return{filename:n.filename,status:"unchanged",diffStats:n.diffStats};return{filename:n.filename,status:"changed",diffStats:n.diffStats}})}function Cs(e){return e.filter((t)=>t.status!=="unchanged").map((t)=>t.filename)}function Ns({revision:e,responseBanner:t}){let{setActiveView:n}=_o($e),{revisions:r}=_o(ke),o=r.find((c)=>c.revision===e),i=r.find((c)=>c.revision===e-1),s=jl(()=>jo(o,i),[o,i]),l=s.filter((c)=>c.status!=="unchanged"),a=s.filter((c)=>c.status==="unchanged");return q("div",{className:"max-w-[720px] mx-auto px-6 pt-12 pb-32",children:[t,l.map((c)=>q(Vl,{change:c,revision:e,previousRevision:i?.revision,onOpenTab:()=>n({type:"canvas",filename:c.filename})},c.filename,!1,void 0,this)),a.length>0&&q("div",{className:"mt-8 border-t border-border-subtle pt-4",children:[q("div",{className:"text-[11px] font-body font-medium uppercase tracking-widest text-text-tertiary mb-3",children:"Unchanged"},void 0,!1,void 0,this),a.map((c)=>q(Kl,{change:c,revision:e,onOpenTab:()=>n({type:"canvas",filename:c.filename})},c.filename,!1,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function zl({mode:e,onChange:t,showDiff:n}){if(!n)return null;return q("div",{className:"flex items-center bg-bg-elevated rounded-md p-0.5",children:["rendered","unified","side-by-side"].map((r)=>q("button",{onClick:()=>t(r),className:`text-[10px] font-body px-2 py-0.5 rounded transition-colors ${e===r?"bg-bg-surface text-text-primary font-medium shadow-sm":"text-text-tertiary hover:text-text-secondary"}`,children:r==="rendered"?"Full":r==="unified"?"Unified":"Split"},r,!1,void 0,this))},void 0,!1,void 0,this)}function Vl({change:e,revision:t,previousRevision:n,onOpenTab:r}){let o=e.filename.replace(/\.jsx$/,""),i=e.status==="new",s=e.diffStats,l=e.status==="changed"&&n!=null,[a,c]=Ve("rendered");return q("div",{className:"mb-8",children:[q("div",{className:"flex items-center gap-2 mb-3 pb-2 border-b border-border-subtle",children:[q("span",{className:`text-[11px] font-mono px-1.5 py-0.5 rounded ${i?"bg-accent-green/10 text-accent-green border border-accent-green/20":"bg-accent-amber/10 text-accent-amber border border-accent-amber/20"}`,children:i?"new":"modified"},void 0,!1,void 0,this),q("span",{className:"text-[14px] font-body font-medium text-text-primary",children:o},void 0,!1,void 0,this),s&&(s.added>0||s.removed>0)&&q("span",{className:"text-[11px] font-mono text-text-tertiary",children:[q("span",{className:"text-accent-green",children:["+",s.added]},void 0,!0,void 0,this)," ",q("span",{className:"text-accent-red",children:["-",s.removed]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q(zl,{mode:a,onChange:c,showDiff:l},void 0,!1,void 0,this),q("button",{onClick:r,className:`${l?"":"ml-auto"} text-[11px] font-body font-medium text-accent-blue hover:text-accent-blue/80 transition-colors`,children:"Open in tab"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a==="rendered"?q("div",{"data-canvas-file":e.filename,children:q(Ct,{revision:t,filename:e.filename},void 0,!1,void 0,this)},void 0,!1,void 0,this):l&&n!=null?q(Wl,{filename:e.filename,leftRev:n,rightRev:t,mode:a},`${a}-${t}-${n}`,!1,void 0,this):null]},void 0,!0,void 0,this)}function Wl({filename:e,leftRev:t,rightRev:n,mode:r}){let o=_o(ql);if(r==="unified")return q(Ul,{sessionId:o,filename:e,leftRev:t,rightRev:n},void 0,!1,void 0,this);return q(Gl,{sessionId:o,filename:e,leftRev:t,rightRev:n},void 0,!1,void 0,this)}function Ul({sessionId:e,filename:t,leftRev:n,rightRev:r}){let o=sn(null),i=sn(null),s=sn(null),[l,a]=Ve(!1),[c,u]=Ve(!1),[d,f]=Ve(!1),[p,m]=Ve(null);return Ss(()=>{if(!l||!c||d)return;if(!o.current||!i.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!o.current||!i.current||!s.current)return;try{let v=Tt(o.current),g=Tt(i.current),w=rn(v,g),{fragment:h}=jn(w);s.current.innerHTML="",s.current.appendChild(h),f(!0)}catch(v){m(v instanceof Error?v.message:String(v))}})})},[l,c,d]),q("div",{children:[!d&&!p&&q("div",{style:{position:"absolute",left:-9999,visibility:"hidden",pointerEvents:"none",width:720},children:[q(ze,{ref:o,sessionId:e,revision:n,filename:t,onReady:()=>a(!0),onError:(v)=>m(v)},void 0,!1,void 0,this),q(ze,{ref:i,sessionId:e,revision:r,filename:t,onReady:()=>u(!0),onError:(v)=>m(v)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!d&&!p&&q("div",{className:"flex items-center justify-center h-24 text-text-tertiary font-body text-[13px]",children:"Computing diff..."},void 0,!1,void 0,this),p&&q("div",{className:"text-accent-red text-[13px] font-body p-3 bg-accent-red-muted rounded-lg",children:p},void 0,!1,void 0,this),q("div",{ref:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Gl({sessionId:e,filename:t,leftRev:n,rightRev:r}){let o=sn(null),i=sn(null),[s,l]=Ve(!1),[a,c]=Ve(!1),[u,d]=Ve(!1),f=Rs(()=>l(!0),[]),p=Rs(()=>c(!0),[]);return Ss(()=>{if(!s||!a||u)return;if(!o.current||!i.current)return;requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(!o.current||!i.current)return;_n(o.current,i.current),d(!0)})})},[s,a,u]),q("div",{className:"flex gap-0 border-y border-border-subtle overflow-hidden w-screen relative left-1/2 -translate-x-1/2",children:[q("div",{className:"w-1/2 border-r border-border-subtle",children:[q("div",{className:"px-2 py-1 text-[10px] font-body font-medium text-text-tertiary bg-bg-elevated border-b border-border-subtle",children:["Rev ",n]},void 0,!0,void 0,this),q("div",{className:"px-6 py-4 max-w-[600px] mx-auto",children:q(ze,{ref:o,sessionId:e,revision:n,filename:t,onReady:f},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q("div",{className:"w-1/2",children:[q("div",{className:"px-2 py-1 text-[10px] font-body font-medium text-text-tertiary bg-bg-elevated border-b border-border-subtle",children:["Rev ",r]},void 0,!0,void 0,this),q("div",{className:"px-6 py-4 max-w-[600px] mx-auto",children:q(ze,{ref:i,sessionId:e,revision:r,filename:t,onReady:p},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Kl({change:e,revision:t,onOpenTab:n}){let[r,o]=Ve(!1),i=e.filename.replace(/\.jsx$/,"");return q("div",{className:"mb-2",children:[q("div",{className:"flex items-center gap-2 py-1.5",children:[q("button",{onClick:()=>o(!r),className:"text-text-tertiary hover:text-text-secondary transition-colors",children:q("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",className:`transition-transform duration-150 ${r?"rotate-90":""}`,children:q("path",{d:"M3.5 2L6.5 5L3.5 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),q("span",{className:"text-[13px] font-body text-text-secondary",children:i},void 0,!1,void 0,this),q("button",{onClick:n,className:"ml-auto text-[11px] font-body text-text-tertiary hover:text-accent-blue transition-colors",children:"Open in tab"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r&&q("div",{className:"ml-5 mt-1 mb-3","data-canvas-file":e.filename,children:q(Ct,{revision:t,filename:e.filename},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useState as zn,useEffect as Zl,useCallback as qo}from"react";import{jsxDEV as ee}from"react/jsx-dev-runtime";function Ts({sessionId:e,revision:t,open:n,shareEnabled:r,existingShares:o,onClose:i,onShareCreated:s,onShareRevoked:l}){let[a,c]=zn(!1),[u,d]=zn(!1),[f,p]=zn(null),[m,v]=zn(!1),g=o.find((k)=>k.revision===t);Zl(()=>{if(!n)c(!1),d(!1),p(null),v(!1)},[n]);let w=qo(async()=>{c(!0),p(null);try{let k=await fetch(`/api/session/${e}/revision/${t}/share`,{method:"POST"}),y=await k.json();if(!k.ok||!y.ok)throw Error(y.error||`HTTP ${k.status}`);s(y.share)}catch(k){p(k.message||String(k))}finally{c(!1)}},[e,t,s]),h=qo(async(k)=>{if(!window.confirm("Revoke this share link? Reviewers will no longer be able to view or comment."))return;d(!0),p(null);try{let y=await fetch(`/api/session/${e}/shares/${k}/revoke`,{method:"POST"}),E=await y.json();if(!y.ok||!E.ok)throw Error(E.error||`HTTP ${y.status}`);l(k)}catch(y){p(y.message||String(y))}finally{d(!1)}},[e,l]),b=qo((k)=>{navigator.clipboard.writeText(k).then(()=>{v(!0),setTimeout(()=>v(!1),1500)})},[]);if(!n)return null;return ee("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:i,children:ee("div",{className:"bg-bg-surface border border-border-medium rounded-lg shadow-xl w-full max-w-md mx-4 p-5",onClick:(k)=>k.stopPropagation(),children:[ee("div",{className:"flex items-center justify-between mb-3",children:[ee("h2",{className:"text-sm font-medium text-text-primary font-body",children:"Share this revision"},void 0,!1,void 0,this),ee("button",{onClick:i,className:"w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",children:ee("span",{className:"text-xs",children:"✕"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!r?ee("div",{className:"text-[13px] text-text-secondary font-body space-y-2",children:[ee("p",{children:"Canvas sharing is not configured."},void 0,!1,void 0,this),ee("p",{className:"text-text-tertiary",children:["Set ",ee("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:"CANVAS_SHARE_ENDPOINT"},void 0,!1,void 0,this)," to the URL of a deployed"," ",ee("code",{className:"px-1 py-0.5 rounded bg-bg-elevated text-text-primary text-[11px]",children:"canvas-share"},void 0,!1,void 0,this)," worker and restart the daemon."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):g?ee("div",{className:"space-y-3",children:[ee("p",{className:"text-[13px] text-text-secondary font-body",children:"This revision is shared:"},void 0,!1,void 0,this),ee("div",{className:"flex gap-2",children:[ee("input",{type:"text",readOnly:!0,value:g.url,className:"flex-1 px-2 py-1.5 text-[12px] font-mono bg-bg-input border border-border-medium rounded text-text-primary",onFocus:(k)=>k.currentTarget.select()},void 0,!1,void 0,this),ee("button",{onClick:()=>b(g.url),className:"px-3 py-1.5 text-[12px] font-body font-medium rounded bg-accent-blue text-white hover:opacity-90 transition-opacity whitespace-nowrap",children:m?"Copied!":"Copy"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),g.expiresAt&&ee("p",{className:"text-[11px] text-text-tertiary font-body",children:["Expires ",new Date(g.expiresAt).toLocaleDateString(),"."]},void 0,!0,void 0,this),g.encryptionKey&&ee("p",{className:"text-[11px] text-accent-green font-body flex items-center gap-1.5",children:[ee("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[ee("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"},void 0,!1,void 0,this),ee("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),"End-to-end encrypted — the key is part of the link and never leaves your browser."]},void 0,!0,void 0,this),ee("p",{className:"text-[11px] text-text-tertiary font-body",children:"Anyone with this link can view and leave feedback. Reviewer feedback will appear in your annotation sidebar within seconds."},void 0,!1,void 0,this),ee("div",{className:"flex items-center justify-between pt-1",children:[ee("button",{onClick:w,disabled:a||u,className:"text-[11px] text-text-tertiary hover:text-text-secondary font-body underline disabled:opacity-50",children:a?"Creating...":"Create a new link"},void 0,!1,void 0,this),g.ownerToken&&ee("button",{onClick:()=>h(g.shareId),disabled:a||u,className:"text-[11px] text-accent-red hover:opacity-80 font-body underline disabled:opacity-50",children:u?"Revoking...":"Revoke link"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):ee("div",{className:"space-y-3",children:[ee("p",{className:"text-[13px] text-text-secondary font-body",children:"Create a public link to this revision. Anyone with the link can view the canvas and leave feedback. Reviewer feedback will sync back here automatically."},void 0,!1,void 0,this),ee("button",{onClick:w,disabled:a,className:"w-full px-3 py-2 text-[13px] font-body font-medium rounded bg-accent-blue text-white hover:opacity-90 transition-opacity disabled:opacity-50",children:a?"Creating share link...":"Create share link"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f&&ee("div",{className:"mt-3 px-3 py-2 rounded bg-accent-red/10 border border-accent-red/20 text-[12px] text-accent-red font-body",children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Ls({onClick:e,title:t="Share this revision",hasShare:n}){return ee("button",{onClick:e,className:`group p-1.5 transition-colors ${n?"text-accent-blue hover:opacity-80":"text-text-tertiary hover:text-text-secondary"}`,title:t,children:ee("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[ee("circle",{cx:"18",cy:"5",r:"3"},void 0,!1,void 0,this),ee("circle",{cx:"6",cy:"12",r:"3"},void 0,!1,void 0,this),ee("circle",{cx:"18",cy:"19",r:"3"},void 0,!1,void 0,this),ee("line",{x1:"8.59",y1:"13.51",x2:"15.42",y2:"17.49"},void 0,!1,void 0,this),ee("line",{x1:"15.41",y1:"6.51",x2:"8.59",y2:"10.49"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}import{useState as Xl,useEffect as Jl,useRef as Yl}from"react";import{jsxDEV as Ce}from"react/jsx-dev-runtime";function Ms({open:e,onClose:t,onSubmit:n}){let[r,o]=Xl(""),i=Yl(null);if(Jl(()=>{if(e)o(""),setTimeout(()=>i.current?.focus(),50)},[e]),!e)return null;let s=r.trim(),l=s.length>=1&&s.length<=80,a=()=>{if(!l)return;n(s)};return Ce("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t,children:Ce("div",{className:"bg-bg-surface border border-border-medium rounded-lg shadow-xl w-full max-w-md mx-4 p-5",onClick:(c)=>c.stopPropagation(),children:[Ce("div",{className:"flex items-center justify-between mb-3",children:[Ce("h2",{className:"text-sm font-medium text-text-primary font-body",children:"Your name"},void 0,!1,void 0,this),Ce("button",{onClick:t,className:"w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",children:Ce("span",{className:"text-xs",children:"✕"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ce("p",{className:"text-[13px] text-text-secondary font-body mb-3 leading-relaxed",children:"Before you leave feedback, please enter a name so the canvas author knows who reviewed it. This is stored locally in your browser."},void 0,!1,void 0,this),Ce("input",{ref:i,type:"text",value:r,onChange:(c)=>o(c.target.value),onKeyDown:(c)=>{if(c.key==="Enter")a()},maxLength:80,placeholder:"e.g. Alice",className:"w-full px-3 py-2 text-[13px] font-body bg-bg-input border border-border-medium rounded text-text-primary placeholder:text-text-disabled focus:outline-none focus:border-accent-blue"},void 0,!1,void 0,this),Ce("div",{className:"flex justify-end gap-2 mt-4",children:[Ce("button",{onClick:t,className:"px-3 py-1.5 text-[12px] font-body font-medium rounded text-text-secondary hover:text-text-primary hover:bg-bg-elevated transition-colors",children:"Cancel"},void 0,!1,void 0,this),Ce("button",{onClick:a,disabled:!l,className:"px-3 py-1.5 text-[12px] font-body font-medium rounded bg-accent-blue text-white hover:opacity-90 transition-opacity disabled:opacity-50",children:"Submit feedback"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}import{jsxDEV as x,Fragment as an}from"react/jsx-dev-runtime";function Ps(e){let t=[];for(let n of e)for(let r of n.annotations)t.push({...r,source:"remote",author:n.author});return t}function nc(e){if(e==="auto")return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";return e}function $s(e){document.documentElement.dataset.theme=nc(e)}function Fs(){let[e,t]=ie(()=>{let o=localStorage.getItem("canvas-theme");if(o==="light"||o==="dark"||o==="auto")return o;return"auto"});return Ne(()=>{if($s(e),e!=="auto")return;let o=window.matchMedia("(prefers-color-scheme: dark)"),i=()=>$s("auto");return o.addEventListener("change",i),()=>o.removeEventListener("change",i)},[e]),x("button",{onClick:()=>{let o=e==="auto"?"light":e==="light"?"dark":"auto";localStorage.setItem("canvas-theme",o),t(o)},className:"w-7 h-7 flex items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:{auto:"Theme: system (click for light)",light:"Theme: light (click for dark)",dark:"Theme: dark (click for system)"}[e],children:e==="auto"?x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[x("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"},void 0,!1,void 0,this),x("line",{x1:"8",y1:"21",x2:"16",y2:"21"},void 0,!1,void 0,this),x("line",{x1:"12",y1:"17",x2:"12",y2:"21"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):e==="dark"?x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:x("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},void 0,!1,void 0,this)},void 0,!1,void 0,this):x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[x("circle",{cx:"12",cy:"12",r:"5"},void 0,!1,void 0,this),x("line",{x1:"12",y1:"1",x2:"12",y2:"3"},void 0,!1,void 0,this),x("line",{x1:"12",y1:"21",x2:"12",y2:"23"},void 0,!1,void 0,this),x("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},void 0,!1,void 0,this),x("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},void 0,!1,void 0,this),x("line",{x1:"1",y1:"12",x2:"3",y2:"12"},void 0,!1,void 0,this),x("line",{x1:"21",y1:"12",x2:"23",y2:"12"},void 0,!1,void 0,this),x("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},void 0,!1,void 0,this),x("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Bs(){let{currentRevision:e,selectedRevision:t,revisions:n,setSelectedRevision:r,setCompareRevision:o}=ot.useContext(ke);if(n.length<=1){let l=n[0]?.label||`Round ${e}`;return x("span",{className:"text-[11px] text-text-tertiary font-body",children:l},void 0,!1,void 0,this)}return x("div",{className:"flex flex-col gap-1",children:[x(nn,{value:t,onChange:r,accent:t===e?"default":"amber"},void 0,!1,void 0,this),x("button",{onClick:()=>{let s;if(t===e)s=[...n].reverse().find((a)=>a.revision<e)?.revision??Math.max(1,e-1);else s=t;o({left:s,right:e})},className:"text-[11px] font-body font-medium px-2 py-0.5 rounded-md text-accent-blue hover:bg-accent-blue-muted transition-colors self-start",children:"Compare"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oc(){let e=re.isShared?re.shareId:re.sessionId,t=re.isShared,[n,r]=ie(1),[o,i]=ie(1),[s,l]=ie([]),[a,c]=ie(null),[u,d]=ie(!1),[f,p]=ie(!1),[m,v]=ie(!1),[g,w]=ie([]),[h,b]=ie({type:"overview"}),[k,y]=ie([]),E=Fe(null),R=Fe([]),C=Fe(new Set),[M,L]=ie(),[B,j]=ie(!1),[W,de]=ie(!1),[N,_]=ie(!1),[z,X]=ie(!1),[G,J]=ie([]),[V,O]=ie(!1),[Z,ue]=ie(new Map),[A,P]=ie(!1),[Y,T]=ie(null),[H,F]=ie(null),oe=Lt((S)=>{if(t)return;let K=`${S.revision}\x00${S.filename}\x00${S.message}`;if(C.current.has(K))return;C.current.add(K);let te=JSON.stringify({type:"render-error",error:S});if(E.current?.readyState===WebSocket.OPEN)E.current.send(te);else R.current.push(S)},[t]);Ne(()=>{if(!H)return;let S=setTimeout(()=>F(null),4000);return()=>clearTimeout(S)},[H]),Ne(()=>{let S=["Agent Canvas"];if(M){let K=M.replace(/\/+$/,"").split("/");S.push(K[K.length-1]||e)}else if(e)S.push(e);if(h.type==="file")S.push(h.path.split("/").pop()||h.path);else if(h.type==="overview")S.push("Overview");else if(h.type==="canvas"&&g.length>1&&h.filename)S.push(h.filename.replace(/\.jsx$/,""));else if(a)S.push("Compare");document.title=S.join(" — ")},[e,M,h,a]);let ae=Fe(new Map),pe=s.find((S)=>S.revision===o),Te=o!==n||!!pe?.hasFeedback||f,zo=o===n&&(!!pe?.hasFeedback||f)?"next":"current",Vo=Lt((S)=>{let K=h.type==="overview"?"overview":h.type==="canvas"?`canvas:${h.filename}`:`file:${h.path}`;if(ae.current.set(K,window.scrollY),b(S),S.type==="file")y((te)=>te.includes(S.path)?te:[...te,S.path])},[h]),_s=Lt((S)=>{ae.current.delete(`file:${S}`),y((K)=>K.filter((te)=>te!==S)),b((K)=>{if(K.type==="file"&&K.path===S)return g.length>1?{type:"overview"}:{type:"canvas",filename:g[0]||""};return K})},[g]);Ql(()=>{let S=h.type==="overview"?"overview":h.type==="canvas"?`canvas:${h.filename}`:`file:${h.path}`;window.scrollTo(0,ae.current.get(S)||0)},[h]),Ne(()=>{if(!e)return;Kr().then((S)=>{if(S.currentRevision){let K=S.revisions||[];for(let te of K)if(te.hasFeedback)ft(localStorage,e,te.revision);Tn(localStorage,e,S.currentRevision,K),r(S.currentRevision),i(S.currentRevision),l(K)}if(S.canvasFiles){let K=S.canvasFiles.sort();w(K),b((te)=>{if(te.type==="overview")return K.length>1?te:{type:"canvas",filename:K[0]||""};if(te.type==="canvas"&&(!te.filename||!K.includes(te.filename)))return{type:"canvas",filename:K[0]||""};return te})}if(S.projectRoot)L(S.projectRoot);if(Array.isArray(S.shares))J(S.shares);O(!!S.shareEnabled)}).catch(()=>{})},[e]),Ne(()=>{if(!e||!o||t)return;fetch(`/api/session/${e}/revision/${o}/remote-feedback`).then((S)=>S.json()).then((S)=>{if(!Array.isArray(S.entries))return;let K=Ps(S.entries);ue((te)=>{let we=new Map(te);return we.set(o,K),we})}).catch(()=>{})},[e,o,t]),Ne(()=>{if(!e)return;if(!Yr){d(!0);return}let S=null,K=()=>{let te=window.location.protocol==="https:"?"wss:":"ws:",we=new WebSocket(`${te}//${window.location.host}/ws/session/${e}`);E.current=we,we.onopen=()=>{d(!0);for(let ln of R.current)we.send(JSON.stringify({type:"render-error",error:ln}));R.current=[]},we.onclose=()=>{d(!1),S=setTimeout(K,2000)},we.onmessage=(ln)=>{try{let fe=JSON.parse(ln.data);if(fe.type==="plan-updated"){let Ee=Array.isArray(fe.revisions)?fe.revisions:[];if(Tn(localStorage,e,fe.currentRevision,Ee),r(fe.currentRevision),i(fe.currentRevision),c(null),Ee.length>0){l(Ee);let We=Ee.find((rt)=>rt.revision===fe.currentRevision);if(We?.canvasFiles){let rt=We.canvasFiles.map((It)=>It.filename).sort();w(rt);let Wn=Ee.find((It)=>It.revision===fe.currentRevision-1),Mt=jo(We,Wn),bt=Cs(Mt);if(bt.length===1)b({type:"canvas",filename:bt[0]});else if(bt.length>1||rt.length>1)b({type:"overview"});else b({type:"canvas",filename:rt[0]||""})}}}if(fe.type==="revision-updated"){if(Array.isArray(fe.revisions)){let Ee=fe.revisions;for(let We of Ee)if(We.hasFeedback)ft(localStorage,e,We.revision);l(Ee)}}if(fe.type==="watcher-status")v(!!fe.watching);if(fe.type==="remote-feedback"){let Ee=fe.revision,We=fe.entries||[],rt=Ps(We);ue((Wn)=>{let Mt=new Map(Wn),bt=Mt.get(Ee)||[],It=new Set(bt.map((Un)=>Un.id)),js=[...bt,...rt.filter((Un)=>!It.has(Un.id))];return Mt.set(Ee,js),Mt})}}catch{}}};return K(),()=>{if(S)clearTimeout(S);E.current?.close()}},[e]);let Vn=Lt(async(S,K)=>{try{let te=localStorage.getItem(`canvas:${e}:rev:${o}`),we=[];if(te)try{we=(JSON.parse(te).annotations||[]).filter((fe)=>fe.source!=="remote")}catch{}await Jr({author:K,revision:o,annotations:we,generalNote:S}),ft(localStorage,e,o),p(!0),F({kind:"success",message:"Feedback submitted. The canvas author will see it shortly."})}catch(te){F({kind:"error",message:`Failed to submit feedback: ${te.message||te}`})}},[e,o]),Wo=Lt(async(S)=>{if(t){let K=Ho();if(!K){T(S),P(!0);return}await Vn(S,K);return}if(E.current?.readyState===WebSocket.OPEN)E.current.send(JSON.stringify({type:"submit",feedback:S}))},[t,Vn]);if(!e)return x("div",{className:"flex items-center justify-center h-screen text-text-tertiary font-body",children:"No session selected."},void 0,!1,void 0,this);return x(Mn.Provider,{value:Qr,children:x(Os.Provider,{value:e,children:x(Qt.Provider,{value:oe,children:x(ke.Provider,{value:{currentRevision:n,selectedRevision:o,revisions:s,setSelectedRevision:i,isReadOnly:Te,compareRevision:a,setCompareRevision:c,agentWatching:m},children:x(No,{sessionId:e,revision:o,isReadOnly:Te,draftPhase:zo,remoteAnnotations:Z.get(o),canvasFiles:g,children:x($e.Provider,{value:{activeView:h,setActiveView:Vo,openFiles:k,closeFile:_s,canvasFiles:g},children:x(tc.Provider,{value:{setActiveView:Vo},children:x("div",{className:"min-h-screen bg-bg-base",children:[x(rc,{sessionId:e,projectRoot:M,connected:u,onMobileSidebar:()=>j(!B),collapsed:W,onToggle:()=>de((S)=>!S)},void 0,!1,void 0,this),x(sc,{collapsed:N,onToggle:()=>_((S)=>!S),children:x($n,{onSubmit:Wo},void 0,!1,void 0,this)},void 0,!1,void 0,this),a!==null?x("div",{className:`${W?"lg:ml-0":"lg:ml-60"} ${N?"lg:mr-0":"lg:mr-[var(--sidebar-width,320px)]"} transition-[margin] duration-200`,children:x(As,{initialLeft:a.left,initialRight:a.right,sessionId:e,onExit:()=>c(null)},void 0,!1,void 0,this)},void 0,!1,void 0,this):x("div",{className:`relative ${W?"lg:ml-0":"lg:ml-60"} ${N?"lg:mr-0":"lg:mr-[var(--sidebar-width,320px)]"} transition-[margin] duration-200`,id:"plan-scroll-container",children:[x("div",{className:"lg:hidden sticky top-0 z-20 flex items-center justify-between px-4 py-2 border-b border-border-subtle bg-bg-surface",children:[x("div",{className:"flex items-center gap-2",children:[!t&&x(Oo,{currentSessionId:e,projectRoot:M},void 0,!1,void 0,this),t&&x("span",{className:"text-[11px] text-text-tertiary font-body",children:"Shared canvas"},void 0,!1,void 0,this),!t&&x("span",{className:`w-1.5 h-1.5 rounded-full ${u?"bg-accent-green":"bg-accent-red"}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("div",{className:"flex items-center gap-1",children:[x(Bs,{},void 0,!1,void 0,this),x("button",{onClick:()=>j(!B),className:"w-7 h-7 flex items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:"Annotations",children:x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:x("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),x(Fs,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),x(ic,{},void 0,!1,void 0,this),h.type==="overview"&&x(Ns,{revision:o,responseBanner:pe?.response?x(Hs,{markdown:pe.response},void 0,!1,void 0,this):void 0},void 0,!1,void 0,this),h.type==="canvas"&&g.includes(h.filename)&&x("div",{className:"relative max-w-[720px] mx-auto px-6 pt-12 pb-32",children:[V&&x("div",{className:"absolute top-3 right-12 z-10",children:x(Ls,{onClick:()=>X(!0),hasShare:G.some((S)=>S.revision===o),title:G.some((S)=>S.revision===o)?"Manage share link":"Share this revision"},void 0,!1,void 0,this)},void 0,!1,void 0,this),x("button",{onClick:()=>{let S=document.querySelector(`[data-canvas-file="${h.filename}"] .plan-content`);if(!S)return;let K=ds(S);navigator.clipboard.writeText(K).then(()=>{let te=document.getElementById("export-md-btn");if(te)te.setAttribute("data-copied","true"),setTimeout(()=>{te.removeAttribute("data-copied")},1500)})},id:"export-md-btn",className:"group absolute top-3 right-6 p-1.5 text-text-tertiary hover:text-text-secondary transition-colors z-10",title:"Copy as Markdown",children:[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"group-[[data-copied=true]]:hidden",children:[x("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"},void 0,!1,void 0,this),x("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"hidden group-[[data-copied=true]]:block text-green-500",children:x("polyline",{points:"20 6 9 17 4 12"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),g.length<=1&&pe?.response&&x(Hs,{markdown:pe.response},void 0,!1,void 0,this),x("div",{"data-canvas-file":h.filename,children:x(Ct,{revision:o,filename:h.filename},h.filename,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),k.map((S)=>x("div",{style:{display:h.type==="file"&&h.path===S?void 0:"none"},children:x(is,{path:S},void 0,!1,void 0,this)},S,!1,void 0,this))]},void 0,!0,void 0,this),B&&x("div",{className:"lg:hidden fixed inset-0 z-40 flex",children:[x("div",{className:"flex-1",onClick:()=>j(!1)},void 0,!1,void 0,this),x("div",{className:"w-80 max-w-[85vw] bg-bg-surface border-l border-border-subtle flex flex-col shadow-lg",children:[x("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border-subtle flex-shrink-0",children:[x("span",{className:"text-[11px] font-medium uppercase tracking-widest text-text-tertiary font-body",children:"Sidebar"},void 0,!1,void 0,this),x("button",{onClick:()=>j(!1),className:"text-text-tertiary hover:text-text-secondary w-7 h-7 flex items-center justify-center",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("div",{className:"flex-1 overflow-hidden",children:x($n,{onSubmit:Wo},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),x(Ts,{sessionId:e,revision:o,open:z,shareEnabled:V,existingShares:G,onClose:()=>X(!1),onShareCreated:(S)=>{J((K)=>[...K.filter((te)=>te.shareId!==S.shareId),S]),F({kind:"success",message:"Share link created. Copy and send it to reviewers."})},onShareRevoked:(S)=>{J((K)=>K.filter((te)=>te.shareId!==S)),F({kind:"success",message:"Share link revoked."})}},void 0,!1,void 0,this),x(Ms,{open:A,onClose:()=>{P(!1),T(null)},onSubmit:async(S)=>{let K=Xr(S);if(P(!1),Y!==null)await Vn(Y,K),T(null)}},void 0,!1,void 0,this),H&&x("div",{className:`fixed bottom-4 left-1/2 -translate-x-1/2 z-50 px-4 py-2.5 rounded-lg shadow-lg text-[13px] font-body font-medium flex items-center gap-2 ${H.kind==="error"?"bg-accent-red text-white":"bg-accent-green text-white"}`,children:[H.message,x("button",{onClick:()=>F(null),className:"ml-2 opacity-70 hover:opacity-100",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},`${e}:${o}:${zo}`,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function rc({sessionId:e,projectRoot:t,connected:n,onMobileSidebar:r,collapsed:o,onToggle:i}){let s=re.isShared;return x(an,{children:[o&&x("button",{onClick:i,className:"hidden lg:flex fixed top-3 left-3 z-20 w-7 h-7 items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors bg-bg-surface border border-border-subtle",title:"Show sidebar",children:x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[x("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"},void 0,!1,void 0,this),x("line",{x1:"9",y1:"3",x2:"9",y2:"21"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),x("div",{className:`hidden lg:flex w-60 flex-col fixed top-0 left-0 bottom-0 bg-bg-surface border-r border-border-subtle z-10 transition-transform duration-200 ${o?"-translate-x-full":""}`,children:[x("div",{className:"px-4 pt-4 pb-3 flex-shrink-0 border-b border-border-subtle",children:[x("div",{className:"flex items-center gap-2 mb-2",children:[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",className:"text-text-tertiary flex-shrink-0",children:x("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this),s?x("span",{className:"text-[12px] font-body text-text-secondary truncate flex-1",children:"Shared canvas"},void 0,!1,void 0,this):x(an,{children:[x(Oo,{currentSessionId:e,projectRoot:t},void 0,!1,void 0,this),x("span",{className:`w-1.5 h-1.5 rounded-full flex-shrink-0 ${n?"bg-accent-green":"bg-accent-red"}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("button",{onClick:i,className:"ml-auto w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:"Hide sidebar",children:x("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[x("polyline",{points:"11 17 6 12 11 7"},void 0,!1,void 0,this),x("polyline",{points:"18 17 13 12 18 7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x(Bs,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("div",{className:"flex-1 flex flex-col overflow-hidden",children:x(ns,{embedded:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this),x("div",{className:"px-4 py-3 border-t border-border-subtle flex items-center justify-between flex-shrink-0",children:[x("span",{className:"text-[10px] text-text-tertiary font-body uppercase tracking-widest",children:"Theme"},void 0,!1,void 0,this),x(Fs,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function sc({children:e,collapsed:t,onToggle:n}){let[r,o]=ie(()=>{let u=localStorage.getItem("canvas-sidebar-width");return u?parseInt(u,10):320}),i=Fe(!1),s=Fe(0),l=Fe(0),a=Fe(r);a.current=r;let c=Lt((u)=>{u.preventDefault(),i.current=!0,s.current=u.clientX,l.current=a.current;let d=(p)=>{if(!i.current)return;let m=s.current-p.clientX,v=Math.max(240,Math.min(600,l.current+m));o(v),a.current=v},f=()=>{i.current=!1,localStorage.setItem("canvas-sidebar-width",String(a.current)),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",f),document.body.style.cursor="",document.body.style.userSelect=""};document.addEventListener("mousemove",d),document.addEventListener("mouseup",f),document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[]);return Ne(()=>(document.documentElement.style.setProperty("--sidebar-width",`${r}px`),()=>{document.documentElement.style.removeProperty("--sidebar-width")}),[r]),x(an,{children:[t&&x("button",{onClick:n,className:"hidden lg:flex fixed top-3 right-3 z-20 w-7 h-7 items-center justify-center rounded-md text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors bg-bg-surface border border-border-subtle",title:"Show annotations",children:x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:x("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),x("div",{className:`hidden lg:flex flex-col fixed top-0 right-0 bottom-0 bg-bg-surface border-l border-border-subtle z-10 transition-transform duration-200 ${t?"translate-x-full":""}`,style:{width:r},children:[x("div",{onMouseDown:c,className:"absolute left-0 top-0 bottom-0 w-1 cursor-col-resize hover:bg-accent-blue/30 transition-colors z-20",style:{marginLeft:"-2px"}},void 0,!1,void 0,this),ot.Children.map(e,(u)=>ot.isValidElement(u)?ot.cloneElement(u,{collapseButton:x("button",{onClick:n,className:"w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",title:"Hide annotations",children:x("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[x("polyline",{points:"13 17 18 12 13 7"},void 0,!1,void 0,this),x("polyline",{points:"6 17 11 12 6 7"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}):u)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Hs({markdown:e}){let[t,n]=ie(!1),r=Is(()=>Q.parse(e,{async:!1}),[e]),o=Fe(null),{annotations:i,addAnnotationWithId:s,removeAnnotation:l,updateAnnotation:a,addAnnotationImage:c,removeAnnotationImage:u,activeAnnotationId:d,setActiveAnnotationId:f}=De(),[p,m]=ie(null),[v,g]=ie(null),w=Is(()=>i.filter((E)=>E.filePath===Se),[i]),[h,b]=ie(e);if(e!==h)b(e),n(!1);Ne(()=>{if(!o.current||w.length===0)return;let E=setTimeout(()=>{if(o.current)_t(o.current,w)},50);return()=>clearTimeout(E)},[r,w.length]);let k=Fe(null);if(Ne(()=>{Ft(d,k.current),k.current=d},[d]),Ne(()=>{let E=o.current;if(!E)return;let R=(L)=>{let B=L.target.closest("[data-annotation-id]");if(!B)return;L.stopPropagation();let j=B.getAttribute("data-annotation-id");if(j===d)g({anchorEl:B,annId:j});else f(j)},C=(L)=>{let B=L.target.closest("[data-annotation-id]");if(B)f(B.getAttribute("data-annotation-id"))},M=(L)=>{let B=L.target.closest("[data-annotation-id]"),j=L.relatedTarget?.closest?.("[data-annotation-id]");if(B&&!j)f(null)};return E.addEventListener("click",R),E.addEventListener("mouseover",C),E.addEventListener("mouseout",M),()=>{E.removeEventListener("click",R),E.removeEventListener("mouseover",C),E.removeEventListener("mouseout",M)}},[r,d]),Ne(()=>{let E=()=>{let R=window.getSelection();if(!R||R.isCollapsed||!R.toString().trim())return;if(!o.current)return;let C=R.getRangeAt(0);if(!o.current.contains(C.startContainer))return;if(C.startContainer.parentElement?.closest?.("[data-annotation-id]"))return;let M=R.toString().trim();if(M.length<2)return;let L=C.cloneRange(),B=Ge(C,o.current),j=`__pending_${Date.now()}`;try{Ue(L,j)}catch{}window.getSelection()?.removeAllRanges();let W=document.querySelectorAll(`[data-annotation-id="${j}"]`),de=W[W.length-1];if(!de)return;m({anchorEl:de,tempId:j,snippet:M,ctx:B})};return document.addEventListener("mouseup",E),()=>document.removeEventListener("mouseup",E)},[]),t)return null;let y=document.getElementById("plan-scroll-container");return x("div",{className:"mb-6 rounded-lg border border-accent-blue/20 bg-accent-blue/5 relative",children:[x("button",{onClick:()=>n(!0),className:"absolute top-2 right-2 w-6 h-6 flex items-center justify-center rounded text-text-tertiary hover:text-text-secondary hover:bg-bg-elevated transition-colors",children:x("span",{className:"text-xs",children:"✕"},void 0,!1,void 0,this)},void 0,!1,void 0,this),x("div",{className:"px-4 py-3 pr-10",children:[x("div",{className:"flex items-center gap-2 mb-1.5",children:[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-accent-blue flex-shrink-0",children:x("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},void 0,!1,void 0,this)},void 0,!1,void 0,this),x("span",{className:"text-[11px] font-medium uppercase tracking-widest text-accent-blue font-body",children:"Agent Response"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("div",{ref:o,className:"prose-canvas text-sm",dangerouslySetInnerHTML:{__html:r}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p&&x(Ie,{anchorEl:p.anchorEl,scrollContainer:y,snippet:p.snippet,truncateAt:80,onAdd:(E,R)=>{let C=ve();Bt(p.tempId,C),s(C,p.snippet,E,Se,p.ctx,R),m(null)},onCancel:()=>{jt(p.tempId),m(null)}},void 0,!1,void 0,this),v&&(()=>{let E=i.find((R)=>R.id===v.annId);if(!E)return null;return x(ut,{anchorEl:v.anchorEl,scrollContainer:y,initialNote:E.note,initialImages:E.images,onUpdate:(R,C)=>{a(v.annId,R);let M=E.images||[];for(let L of C)if(!M.includes(L))c(v.annId,L);for(let L of M)if(!C.includes(L))u(v.annId,L)},onDelete:()=>{l(v.annId),f(null)},onClose:()=>g(null)},void 0,!1,void 0,this)})()]},void 0,!0,void 0,this)}function ic(){let{activeView:e,setActiveView:t,openFiles:n,closeFile:r,canvasFiles:o}=ot.useContext($e),i=ot.useContext(Os),{addAnnotationWithId:s,setActiveAnnotationId:l}=De();if(!(o.length>1||n.length>0))return null;return x("div",{className:"flex items-center border-b border-border-medium bg-bg-surface overflow-x-auto sticky top-0 z-10",children:[o.length>1&&x(an,{children:[x("button",{onClick:()=>t({type:"overview"}),className:`flex items-center gap-1.5 px-4 py-2.5 text-[13px] font-body whitespace-nowrap transition-colors relative ${e.type==="overview"?"text-text-primary":"text-text-tertiary hover:text-text-secondary"}`,children:[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",className:"opacity-60",children:x("path",{d:"M12 7L2 12l10 5 10-5-10-5z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1,void 0,this)},void 0,!1,void 0,this),"Overview",e.type==="overview"&&x("span",{className:"absolute bottom-0 left-3 right-3 h-[2px] bg-text-primary rounded-full"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),o.map((c,u)=>{let d=c.replace(/\.jsx$/,""),f=e.type==="canvas"&&e.filename===c;return x(ot.Fragment,{children:[x("button",{onClick:()=>t({type:"canvas",filename:c}),className:`flex items-center gap-1.5 px-4 py-2.5 text-[13px] font-body whitespace-nowrap transition-colors relative ${f?"text-text-primary":"text-text-tertiary hover:text-text-secondary"}`,children:[d,f&&x("span",{className:"absolute bottom-0 left-3 right-3 h-[2px] bg-text-primary rounded-full"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u<o.length-1&&x("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this)]},c,!0,void 0,this)}),n.length>0&&x(an,{children:[x("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this),n.map((c,u)=>{let d=c.split("/").pop()||c,f=e.type==="file"&&e.path===c;return x(ot.Fragment,{children:[x("div",{className:"flex items-center",children:[x("button",{onClick:()=>t({type:"file",path:c}),className:`flex items-center gap-1.5 pl-3 pr-1 py-2.5 text-[13px] font-body whitespace-nowrap transition-colors relative ${f?"text-text-primary":"text-text-tertiary hover:text-text-secondary"}`,children:[x(Ye,{name:d,type:"file"},void 0,!1,void 0,this),d,f&&x("span",{className:"absolute bottom-0 left-3 right-1 h-[2px] bg-text-primary rounded-full"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),x("button",{onClick:(p)=>{p.stopPropagation(),r(c)},className:"text-text-tertiary hover:text-text-secondary px-1.5 py-1 text-[10px] transition-colors rounded hover:bg-bg-input",children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),u<n.length-1&&x("span",{className:"w-px h-4 bg-border-medium flex-shrink-0"},void 0,!1,void 0,this)]},c,!0,void 0,this)})]},void 0,!0,void 0,this),x("div",{className:"ml-auto flex items-center gap-1 flex-shrink-0",children:e.type==="file"&&je&&x("button",{onClick:async()=>{let c=e.path;try{let d=await(await fetch(`/api/file?session=${i}&path=${encodeURIComponent(c)}`)).json();if(!d.error){let f=d.content.split(`
88
88
  `).slice(0,3).join(`
89
- `)+(z.content.split(`
89
+ `)+(d.content.split(`
90
90
  `).length>3?`
91
- ...`:""),H=O1();q(H,W,"",K),U(H)}}catch{}},className:"flex items-center gap-1 px-3 py-1.5 text-[11px] font-medium font-body text-text-tertiary hover:text-text-secondary whitespace-nowrap transition-colors",children:[F("span",{className:"text-[13px] leading-none",children:"+"},void 0,!1,void 0,this),"Add to context"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var V4=document.getElementById("root");if(V4)c8(V4).render(F(r8,{},void 0,!1,void 0,this));
91
+ ...`:""),p=ve();s(p,f,"",c),l(p)}}catch{}},className:"flex items-center gap-1 px-3 py-1.5 text-[11px] font-medium font-body text-text-tertiary hover:text-text-secondary whitespace-nowrap transition-colors",children:[x("span",{className:"text-[13px] leading-none",children:"+"},void 0,!1,void 0,this),"Add to context"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Ds=document.getElementById("root");if(Ds)ec(Ds).render(x(oc,{},void 0,!1,void 0,this));