@perpetio/redline 2.1.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.
- package/LICENSE +56 -0
- package/README.md +763 -0
- package/bin/redline-mcp.cjs +30 -0
- package/docs/images/npm-banner.jpg +0 -0
- package/docs/images/npm-review.png +0 -0
- package/examples/plain-html.html +30 -0
- package/examples/playground.html +101 -0
- package/examples/react.jsx +23 -0
- package/examples/vue.vue +25 -0
- package/package.json +71 -0
- package/redline.d.cts +2 -0
- package/redline.d.mts +280 -0
- package/redline.d.ts +279 -0
- package/redline.js +2 -0
- package/redline.mjs +753 -0
package/redline.mjs
ADDED
|
@@ -0,0 +1,753 @@
|
|
|
1
|
+
/*! Redline 2.1.1 (c) 2026 Perpetio OÜ. See LICENSE. Includes annotate.js, MIT License, Copyright (c) 2026 annotate.js contributors. */
|
|
2
|
+
const hc=function(Ee){"use strict";var Be=null,qr,Xr,fi=Object.create(null),pi=Object.create(null),Kn="",Vr=Object.create(null),Et=typeof Symbol=="function"?Symbol.for("reviewjs.annotate.controller"):"__ANNOTATE_CONTROLLER__",Oe={version:"2.1.1",init:function(m,Wn){if(!Ee||!Ee.document)throw new Error("Redline.init requires a browser document");return Be&&m===void 0||(Ee[Et]&&Ee[Et]!==Oe&&Ee[Et].destroy(),Oe.destroy(),(m!==void 0||Wn!==void 0)&&(qr=m,Xr=Wn),Be=nl(Ee,qr,Xr),Ee[Et]=Oe),Oe},destroy:function(){Be&&Be.destroy(),Be=null,Ee&&Ee[Et]===Oe&&delete Ee[Et]}};return Object.defineProperty(Oe,"config",{enumerable:!0,get:function(){return Be?Be.config:null}}),["open","close","toggle","enable","disable","setTool","refresh","comments","focus","toast","export","import","clear","submit","setStatus","assign","syncState","markdown","copy","setFrozen","isFrozen"].forEach(function(m){Oe[m]=function(){if(!Be)throw new Error("Call Redline.init() first");return Be[m].apply(Be,arguments)}}),Oe;function nl(m,Wn,Me){var h=m.document,z=m.location,O=!1,We=!1,de=null,Se=null,$e=null,rt=[],cn=new Set,fn=new Set,$n=new Set;function v(e,t,n,r){e.addEventListener(t,n,r),(e===h||e===m)&&rt.push(function(){e.removeEventListener(t,n,r)})}function P(e,t){if(O)return 0;var n=m.setTimeout(function(){cn.delete(n),O||e()},t);return cn.add(n),n}function R(e){m.clearTimeout(e),cn.delete(e)}function St(e){if(O)return 0;var t=m.requestAnimationFrame(function(){fn.delete(t),O||e()});return fn.add(t),t}function vc(e){m.cancelAnimationFrame(e),fn.delete(e)}function X(){return de||(de=h.createElement("div"),de.id="__an_host",de.style.display="contents"),!de.isConnected&&h.body&&h.body.appendChild(de),he&&h.body&&$e!==h.body&&($e&&he.unobserve($e),$e=h.body,he.observe($e)),de}var hi="2.1.1",gi="https://api.redlinejs.com",mi="http://127.0.0.1:7335",Gr="https://app.redlinejs.com";function Jn(e){if(!pi[e]){pi[e]=!0;try{m.console.warn("Redline: "+e)}catch(t){}}}function rl(e){return e=String(e||"").trim().toLowerCase(),e==="same-origin"||e==="include"?e:"omit"}function al(e){return e=String(e==null?"":e).trim(),!e||/^ws_[A-Za-z0-9_-]{1,64}$/.test(e)?e:(Jn('data-workspace "'+e+'" is not a workspace id (ws_\u2026); it is ignored.'),"")}function il(e){if(e==null||String(e).trim()==="")return 3;var t=Number(e);return isFinite(t)?Math.max(0,Math.min(5,Math.floor(t))):3}var Y=Me&&Me.dataset||{},K=Wn||m.RedlineConfig||m.AnnotateConfig||{},vi=Y.page||K.page||"",k={project:Y.project||K.project||"",page:vi||z.pathname,accent:Y.accent||K.accent||"",theme:Y.theme||K.theme||"auto",position:Y.position||K.position||"bottom-right",blocks:Y.blocks||K.blocks||"",startOpen:wi(Y.startOpen||K.startOpen),note:Y.note||K.note||"",share:String(Y.shareEmail||K.shareEmail||"").trim(),spa:wi(Y.spa!==void 0?Y.spa:K.spa),postUrl:String(Y.postUrl||K.postUrl||"").trim(),postRetries:il(Y.postRetries!==void 0?Y.postRetries:K.postRetries),reviewId:String(Y.reviewId||K.reviewId||"").trim(),workspace:al(Y.workspace!==void 0?Y.workspace:K.workspace),inviteParam:String(Y.inviteParam||K.inviteParam||"an_invite").trim(),pollInterval:Math.max(500,Number(Y.pollInterval||K.pollInterval)||2e4),credentials:rl(Y.credentials||K.credentials),capture:_u(Io(Y.capture!==void 0?Y.capture:K.capture)),editorUrl:String(Y.editorUrl||K.editorUrl||"").trim()},xi=Io(k.capture);(Y.api!==void 0||K.api!==void 0)&&Jn("data-api was removed in 2.0. Comments sync to Redline Cloud by data-review-id."),K.auth!==void 0&&Jn("the auth option was removed in 2.0.");var ol=!!vi;function bi(){return ol||(k.page=z.pathname),(k.project?k.project+":":"")+k.page}var N=bi(),D={get:function(e){try{return localStorage.getItem(e)}catch(t){return null}},set:function(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return n&&(n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&P(function(){L("Storage full \u2014 export your comments before adding more.",{kind:"error",duration:8e3})},0),!1}}},sl="Changes may not be saved \u2014 this browser is refusing storage. Your comments are kept on screen and can still be downloaded as JSON.",yi=!1;function ll(e){e?h.getElementById("__an_unsaved")&&h.getElementById("__an_unsaved").remove():(yi||(yi=!0,L("Storage is unavailable \u2014 your comments are kept on screen only.",{kind:"error",duration:8e3})),h.getElementById("__an_unsaved")||X().appendChild(s("div",{id:"__an_unsaved",role:"alert",text:sl})))}var Kr=[{name:"Amber",hex:"#f59e0b"},{name:"Rose",hex:"#f43f5e"},{name:"Violet",hex:"#8b5cf6"},{name:"Sky",hex:"#0ea5e9"},{name:"Emerald",hex:"#10b981"}],c={tool:"cursor",color:D.get("an-color")||Kr[0].hex,author:D.get("an-author")||"",authorId:null,note:k.note||"",share:k.share||"",comments:[],panelOpen:!1,activeId:null,filter:"open",query:"",enabled:D.get("an-off")!=="1"};function s(e,t,n){var r=h.createElement(e);return t&&Object.keys(t).forEach(function(a){a==="class"?r.className=t[a]:a==="html"?r.innerHTML=t[a]:a==="text"?r.textContent=t[a]:a.slice(0,2)==="on"?v(r,a.slice(2).toLowerCase(),t[a]):r.setAttribute(a,t[a])}),(n||[]).forEach(function(a){a&&r.appendChild(typeof a=="string"?h.createTextNode(a):a)}),r}function ie(e,t){var n=h.createElementNS("http://www.w3.org/2000/svg",e);return t&&Object.keys(t).forEach(function(r){n.setAttribute(r,t[r])}),n}function _i(e){return String(e).replace(/[&<>"]/g,function(t){return{"&":"&","<":"<",">":">",'"':"""}[t]})}function At(e){var t=new Date(e),n=Date.now(),r=(n-t)/1e3;return r<60?"just now":r<3600?Math.floor(r/60)+"m ago":r<86400?Math.floor(r/3600)+"h ago":t.toLocaleDateString()}function ul(e){var t=String(e||"?").trim().split(/\s+/);return((t[0]||"?")[0]+(t.length>1?t[t.length-1][0]:"")).toUpperCase()}function wi(e){return e===!0||/^(1|true|yes|open)$/i.test(String(e||""))}function dl(e){for(var t=0,n=String(e||""),r=0;r<n.length;r++)t=(t*31+n.charCodeAt(r))%360;return t}function ki(e){return d.agentId&&e&&e===d.agentId?s("span",{class:"an-agent",text:"Agent",title:"Written by the review's AI agent"}):null}function pn(e,t){var n=s("span",{class:"an-avatar",text:ul(e),title:e||""});return n.style.background="hsl("+dl(e)+" 55% 45%)",t&&(n.style.width=n.style.height=t+"px",n.style.fontSize=t*.4+"px"),n}var Ci="annotate:"+(k.project||z.host||"default"),hn=z.hostname==="localhost"||z.hostname==="127.0.0.1";k.reviewId==="local"&&!hn&&(Jn('data-review-id="local" works only on localhost and 127.0.0.1 pages.'),k.reviewId="");var Ei=k.reviewId==="local",gn=!!k.workspace&&!k.reviewId,Si="annotate:site-review:"+k.workspace,cl=600*1e3,Ai=/^rvw_[A-Za-z0-9_-]{1,64}$/,Wr=gn&&!Vr[k.workspace]&&pl(),Tt=gn?fl():null,$r=gn&&!Wr&&!!(Tt&&Tt.reviewId);$r&&(k.reviewId=Tt.reviewId);var Ti="annotate:agent";!k.reviewId&&hn&&D.get(Ti)==="on"&&(k.reviewId="local");var mn=k.reviewId==="local",at=!!k.reviewId&&!mn,vn=k.reviewId?(mn?mi:gi)+"/v1/annotate/reviews/"+encodeURIComponent(k.reviewId):"",E=!!vn,Qn=E?"annotate:remote:"+k.reviewId:Ci;function fl(){var e;try{e=JSON.parse(D.get(Si)||"null")}catch(t){e=null}return!e||typeof e.at!="number"?null:e.reviewId===null||typeof e.reviewId=="string"&&Ai.test(e.reviewId)?e:null}function pl(){try{var e=new URL(z.href).searchParams;return!!(e.get("an_signin")||k.inviteParam&&e.get(k.inviteParam))}catch(t){return!1}}function ee(){var e;try{e=JSON.parse(D.get(Qn)||"null")}catch(t){e=null}return(!e||typeof e!="object")&&(e={}),Array.isArray(e.comments)||(e.comments=[]),e}function Fe(e){var t=D.set(Qn,JSON.stringify(e));return ll(t),t}function it(){if(m.crypto&&crypto.getRandomValues){var e=new Uint32Array(3);return crypto.getRandomValues(e),"c"+e[0].toString(36)+e[1].toString(36)+e[2].toString(36)}return"c"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)}var Zn=5e3,Jr=5e3,Ii=500,q={},Qr=2,Ve={open:"Open",in_progress:"In progress",resolved:"Resolved",wont_fix:"Won\u2019t fix"};function Zr(e){return e==="resolved"||e==="wont_fix"}function er(e){return typeof e=="string"&&/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)?e:Kr[0].hex}function ce(e){return typeof e=="string"&&e?e:null}var hl=["kind","selector","x","y","w","h","vw","vh","points","selectors"];function gl(e){if(!e||typeof e!="object")return null;var t={};return hl.forEach(function(n){e[n]!==void 0&&(n==="points"?Array.isArray(e.points)&&e.points.every(Array.isArray)&&(t.points=e.points.map(function(r){return[r[0],r[1]]})):n==="selectors"?Array.isArray(e.selectors)&&(t.selectors=e.selectors.slice()):t[n]=e[n])}),t}function Li(e){return!e||typeof e!="object"||typeof e.name!="string"||!e.name.trim()?null:{id:ce(e.id),name:e.name.trim().slice(0,80)}}function Oi(e){var t={id:e.id,author:e.author,authorId:ce(e.authorId),text:e.text,createdAt:e.createdAt,editedAt:ce(e.editedAt)},n=Mi(e.mentions);return n.length&&(t.mentions=n),t}function Mi(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(n){typeof n=="string"&&n&&n.length<=128&&t.indexOf(n)<0&&t.length<20&&t.push(n)}),t}function Pi(e,t){return!Array.isArray(e)||!t||!t.selectors||e.length!==t.selectors.length?null:e.map(function(n){return n&&So(n)?_r(n):null})}function Je(e){var t=Ve[e.status]?e.status:e.resolved===!0?"resolved":"open",n=Zr(t),r={schema:Qr,id:e.id,page:e.page,url:typeof e.url=="string"?e.url:"",type:e.type,author:e.author,authorId:ce(e.authorId),text:e.text,color:er(e.color),anchor:e.anchor?{exact:e.anchor.exact,prefix:e.anchor.prefix,suffix:e.anchor.suffix}:null,geom:gl(e.geom),visibility:e.visibility==="private"?"private":"shared",status:t,resolved:n,resolvedBy:n?ce(e.resolvedBy):null,resolvedAt:n?ce(e.resolvedAt):null,assignee:Li(e.assignee),assignedAt:e.assignee?ce(e.assignedAt):null,replies:e.replies.map(Oi),createdAt:typeof e.createdAt=="string"?e.createdAt:"",updatedAt:typeof e.updatedAt=="string"?e.updatedAt:typeof e.createdAt=="string"?e.createdAt:"",editedAt:ce(e.editedAt)},a=Mi(e.mentions);a.length&&(r.mentions=a);var i=_r(e.target);i&&e.type!=="group"&&(r.target=i);var o=e.type==="group"?Pi(e.targets,r.geom):null;return o&&(r.targets=o),r}function It(e){return JSON.parse(JSON.stringify(e,function(t,n){return t.slice(0,2)==="__"?void 0:n}))}function Lt(e){return c.authorId&&e.authorId?e.authorId===c.authorId:e.author===(c.author||"Anonymous")}function Ri(e){return!E||Lt(e)||Ot()}function Ot(){return E&&!!d.reviewer&&d.reviewer.role==="author"}function ea(){return E&&d.visibility==="team"}function ta(e){return!E||!d.token?Promise.resolve(d.members||[]):d.membersUnsupported?Promise.resolve([]):!e&&d.members&&Date.now()-d.membersAt<3e5?Promise.resolve(d.members):(d.membersLoading||(d.membersLoading=fe("GET","/members").then(function(t){return t.res.status===404?(d.membersUnsupported=!0,[]):(t.res.status===200&&t.data&&Array.isArray(t.data.members)&&(d.members=t.data.members.filter(function(n){return n&&typeof n.id=="string"&&typeof n.name=="string"&&n.name}),d.membersAt=Date.now(),We&&ei()),d.members||[])},function(){return d.members||[]}).finally(function(){d.membersLoading=null})),d.membersLoading)}function ml(){var e={};return(d.members||[]).forEach(function(t){e[t.id]=t.name}),e}function Ni(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function na(e,t){var n=String(e||""),r=[];return(t||[]).slice().sort(function(a,i){return i.name.length-a.name.length}).forEach(function(a){var i=new RegExp("(^|[^\\w@])@"+Ni(a.name)+"(?![\\w])","i"),o=i.exec(n);!o||r.length>=20||(r.indexOf(a.id)<0&&r.push(a.id),n=n.slice(0,o.index)+new Array(o[0].length+1).join(" ")+n.slice(o.index+o[0].length))}),r}function ra(e,t,n,r){var a=h.createDocumentFragment(),i=String(e||""),o=(n||[]).filter(function(g){return(t||[]).indexOf(g.id)>=0}).sort(function(g,y){return y.name.length-g.name.length});if(!o.length)return a.appendChild(h.createTextNode(i)),a;for(var l=new RegExp("(^|[^\\w@])@("+o.map(function(g){return Ni(g.name)}).join("|")+")(?![\\w])","gi"),u=0,p;p=l.exec(i);){var f=o.filter(function(g){return g.name.toLowerCase()===p[2].toLowerCase()})[0];a.appendChild(h.createTextNode(i.slice(u,p.index)+p[1])),a.appendChild(s("span",{class:"an-mention"+(f&&f.id===r?" an-me":""),text:"@"+p[2]})),u=p.index+p[0].length}return a.appendChild(h.createTextNode(i.slice(u))),a}function Di(e){if(!E||!e.parentNode)return;ta();var t=s("div",{class:"an-mlist",role:"listbox",id:"__an_ml_"+it()});t.hidden=!0,e.setAttribute("role","combobox"),e.setAttribute("aria-autocomplete","list"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-controls",t.id),e.parentNode.insertBefore(t,e.nextSibling);var n=[],r=0,a=-1;function i(){var f=e.value,g=e.selectionStart,y=f.lastIndexOf("@",g-1);if(y<0||y>0&&/[\w@]/.test(f.charAt(y-1)))return null;var w=f.slice(y+1,g);return/\n/.test(w)||w.length>40?null:{at:y,q:w.toLowerCase()}}function o(){t.hidden=!0,n=[],e.setAttribute("aria-expanded","false"),e.removeAttribute("aria-activedescendant")}function l(){if(t.innerHTML="",!n.length){o();return}n.forEach(function(f,g){var y=s("div",{class:"an-mopt"+(g===r?" an-on":""),role:"option",id:t.id+"_"+g,"aria-selected":g===r?"true":"false"},[s("span",{text:f.name}),f.agent?s("span",{class:"an-mtag",text:"Agent"}):null]);v(y,"mousedown",function(w){w.preventDefault(),p(f)}),t.appendChild(y)}),t.hidden=!1,e.setAttribute("aria-expanded","true"),e.setAttribute("aria-activedescendant",t.id+"_"+r)}function u(){var f=i();if(!f){o();return}ta().then(function(g){var y=i();if(!(!y||y.at!==f.at)){a=f.at,r=0;var w=g.filter(function(b){if(b.id===c.authorId||!b.agent&&c.author&&b.name===c.author)return!1;var T=b.name.toLowerCase();return!f.q||T.indexOf(f.q)===0||T.split(/\s+/).some(function(C){return C.indexOf(f.q)===0})});n=w.slice(0,8),w.forEach(function(b){b.agent&&n.indexOf(b)<0&&(n[Math.min(n.length,7)]=b)}),l()}})}function p(f){var g=e.value,y=e.selectionStart,w="@"+f.name+" ";e.value=g.slice(0,a)+w+g.slice(y);var b=a+w.length;e.setSelectionRange(b,b),o(),e.focus()}v(e,"input",u),v(e,"keydown",function(f){f.isComposing||f.keyCode===229||t.hidden||!n.length||(f.key==="ArrowDown"||f.key==="ArrowUp"?(f.preventDefault(),r=(r+(f.key==="ArrowDown"?1:n.length-1))%n.length,l()):(f.key==="Enter"||f.key==="Tab")&&!f.metaKey&&!f.ctrlKey?(f.preventDefault(),f.stopImmediatePropagation(),p(n[r])):f.key==="Escape"&&(f.preventDefault(),f.stopImmediatePropagation(),o()))}),v(e,"blur",function(){P(o,150)})}var ye={items:[],supported:!0},ji="annotate:mentions-read:"+k.reviewId,ot=null,aa=null,ia=null;function vl(){if(!(!E||!d.token||!ye.supported)&&!ye.loading){ye.loading=!0;var e=new Date(Date.now()-30*864e5).toISOString();fe("GET","/mentions?since="+encodeURIComponent(e)).then(function(t){if(!O){if(t.res.status===404){ye.supported=!1;return}if(!(t.res.status!==200||!t.data||!Array.isArray(t.data.mentions))){var n=JSON.stringify(ye.items);ye.items=t.data.mentions.filter(function(r){return r&&typeof r.commentId=="string"&&typeof r.createdAt=="string"}).sort(function(r,a){return Date.parse(a.createdAt)-Date.parse(r.createdAt)}),JSON.stringify(ye.items)!==n&&(oa(),c.filter==="mentions"&&U())}}},function(){}).finally(function(){ye.loading=!1})}}function zi(){var e=Date.parse(D.get(ji)||"");return isFinite(e)?Math.min(e,Date.now()):0}function xl(){var e=zi();return ye.items.filter(function(t){return Date.parse(t.createdAt)>e}).length}function Bi(){if(ye.items.length){var e=ye.items.reduce(function(t,n){var r=Date.parse(n.createdAt);return isFinite(r)&&r>t?r:t},zi());D.set(ji,new Date(Math.min(e,Date.now())).toISOString()),oa()}}function oa(){var e=xl();Ne&&Ne.setAttribute("aria-label",e?"Review, "+e+" unread mention"+(e===1?"":"s"):"Review"),ot&&(ot.textContent=String(e),ot.setAttribute("aria-label",e+" unread mention"+(e===1?"":"s")),ot.style.display=e?"flex":"none"),aa&&(aa.textContent=e?"Mentions "+e:"Mentions")}function bl(e){try{var t=new URL(String(e.url||""),z.href);return t.protocol!=="http:"&&t.protocol!=="https:"?null:(t.hash="an="+encodeURIComponent(e.commentId),t.href)}catch(n){return null}}function yl(){var e=d.mentionEmails,t=s("button",{class:"an-switch",role:"switch","data-action":"mention-emails","aria-label":"Email me when I'm mentioned","aria-checked":e===!1?"false":"true"});return(e===void 0||d.mentionPrefsSaving)&&(t.disabled=!0),d.mentionPrefsTried||_l(),v(t,"click",function(n){if(n.stopPropagation(),!(t.disabled||d.mentionPrefsSaving)){var r=t.getAttribute("aria-checked")!=="true";t.setAttribute("aria-checked",r?"true":"false"),d.mentionEmails=r,d.mentionPrefsSaving=!0,t.disabled=!0,fe("PUT","/me/notifications",{mentionEmails:r},{"Idempotency-Key":it()}).then(function(a){if(a.res.status!==200)throw new Error("HTTP "+a.res.status)}).then(null,function(){d.mentionEmails=!r,t.setAttribute("aria-checked",r?"false":"true"),L("Couldn't change your email setting. Try again.",{kind:"error"})}).then(function(){d.mentionPrefsSaving=!1,t.disabled=!1,c.filter==="mentions"&&!x.open&&U()})}}),s("div",{class:"an-mswitch"},[s("span",{text:"Email me when I'm mentioned"}),t])}function _l(){d.mentionPrefsTried||(d.mentionPrefsTried=!0,d.mentionPrefsLoading=!0,fe("GET","/me/notifications").then(function(e){d.mentionPrefsLoading=!1,e.res.status===200&&e.data&&typeof e.data.mentionEmails=="boolean"&&(d.mentionEmails=e.data.mentionEmails,c.filter==="mentions"&&!x.open&&U())},function(){d.mentionPrefsLoading=!1}))}function wl(){ta();var e=ga(N);if(E&&d.emailOn&&d.hasEmail&&j.appendChild(yl()),!ye.items.length){j.appendChild(s("div",{class:"an-empty"},[s("div",{text:"No mentions yet."})]));return}ye.items.forEach(function(t){var n=t.page===e,r=bl(t),a=String(t.page).replace(/^[^:]*:/,"")||"page",i=s("div",{class:"an-mention-item"},[s("div",{class:"an-cmeta"},[pn(t.author),s("span",{class:"an-author",text:t.author}),s("span",{class:"an-when",text:At(t.createdAt)})]),s("div",{class:"an-body"},[ra(t.text,[c.authorId],d.members,c.authorId)]),s("div",{class:"an-mwhere",text:"on "+a}),n?s("button",{class:"an-mini",text:"Open",onclick:function(o){o.stopPropagation(),c.filter="all",ia&&ia.querySelectorAll(".an-chip").forEach(function(l){l.classList.toggle("an-on",l.getAttribute("data-f")==="all")}),ne(),U(),be(t.commentId,!0)}}):r?s("a",{class:"an-mini",href:r,text:"Go to "+a}):null]);j.appendChild(i)}),c.panelOpen&&!h.hidden&&Bi()}var x={open:!1,items:null,loading:!1,loadSeq:0,error:"",form:null,ready:null,emailSend:null,menu:null,confirm:null,busy:!1,focus:null},xn,bn,tr,nr,sa,la,ua,da,kl=[["7","In 7 days"],["30","In 30 days"],["90","In 90 days"],["never","Never"]],yn={name:"Enter a name.",email:"Enter a valid email address.",role:"Choose a role.",expiresAt:"Choose when the link expires."};function ca(){return E&&d.canInvite===!0}function Cl(){return(x.items||[]).filter(function(e){return e.status==="active"})}function El(e){return e==="never"?null:new Date(Date.now()+Number(e)*864e5).toISOString()}function Fi(e){try{return new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch(t){return String(e).slice(0,10)}}function _n(e){var t=new URL(z.href);return t.hash="",t.searchParams.delete(k.inviteParam),t.searchParams.set(k.inviteParam,e),t.href}function Hi(e,t){!navigator.clipboard||!navigator.clipboard.writeText||navigator.clipboard.writeText(e).then(function(){L(t,{kind:"success"})},function(){})}function wn(e,t,n){function r(){return fe(e,t,n,e==="GET"?void 0:{"Idempotency-Key":it()})}return Qe().then(r).then(function(a){return a.res.status!==401?a:Qe(!0).then(function(i){return i?r():a})})}function Mt(){if(!(!ge||!nr)){var e=x.open;nr.textContent=e?"People":"Comments",bn.style.display=e?"":"none",xn.style.display=!e&&ca()?"":"none",la.style.display=e?"none":"",ua.style.display=e?"none":"",sa.style.display=e?"none":"",tr.style.display=e?"":"none",tr.textContent=String(Cl().length),da&&(da.style.display=e?"none":""),Ue&&(Ue.style.display=e?"none":""),me&&(me.style.display=e?"none":"")}}function Sl(){ca()&&(x.open=!0,x.form=null,x.ready=null,x.menu=null,x.confirm=null,x.error="",Mt(),c.panelOpen||rn(),$(),rr(),bn&&bn.focus())}function Al(){x.open=!1,x.menu=null,x.confirm=null,U(),xn&&ca()&&xn.focus()}function rr(){var e=++x.loadSeq;return x.loading=!0,wn("GET","/invites").then(function(t){if(e===x.loadSeq){if(x.loading=!1,t.res.status===200&&t.data&&Array.isArray(t.data.invites))x.items=t.data.invites,x.error="";else if(t.res.status===403){d.canInvite=!1,x.open=!1,U();return}else x.error="Couldn't load people. Try again.";$()}},function(){e===x.loadSeq&&(x.loading=!1,x.error="Couldn't reach the review server. Try again.",$())})}function $(){if(!(!x.open||!j)){for(var e=j.getRootNode?j.getRootNode():h,t=e.activeElement||h.activeElement,n=null;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;if(t&&j.contains(t)){if(t.id)n={id:t.id},t.tagName==="INPUT"&&(n.start=t.selectionStart,n.end=t.selectionEnd);else if(t.getAttribute("data-action")){var r=t.closest(".an-person"),a=t.closest(".an-prow");!r&&a&&(r=a.querySelector(".an-person")),n={action:t.getAttribute("data-action"),userId:r?r.getAttribute("data-user"):null}}}Mt(),j.innerHTML="";var i=Tl(),o=null;if(j.appendChild(i),x.focus){o=i.querySelector('[data-action="'+x.focus+'"]'),x.focus=null,o&&o.focus();return}if(n){if(n.id){for(var l=i.querySelectorAll("[id]"),u=0;u<l.length;u++)if(l[u].getAttribute("id")===n.id){o=l[u];break}}else{var p=n.userId!==null?ar(n.userId):null,f=n.userId!==null?p&&p.closest(".an-prow"):i;f&&(o=f.querySelector('[data-action="'+n.action+'"]'))}if(o&&(o.focus({preventScroll:!0}),typeof n.start=="number"))try{o.setSelectionRange(n.start,n.end)}catch(g){}}}}function ar(e,t){for(var n=j?j.querySelectorAll(".an-person"):[],r=0;r<n.length;r++)if(n[r].getAttribute("data-user")===e)return t?n[r].querySelector('[data-action="'+t+'"]'):n[r];return null}function Tl(){var e=s("div",{class:"an-people",id:"__an_people"});if(x.ready&&e.appendChild(Dl()),x.form?e.appendChild(Rl()):e.appendChild(s("button",{class:"an-primary an-pinvite","data-action":"invite",html:'<span aria-hidden="true">+</span><span>Invite someone</span>',onclick:function(i){i.stopPropagation(),Pl()}})),x.error&&e.appendChild(s("div",{class:"an-perror",role:"alert",text:x.error})),!x.items)return e.appendChild(s("div",{class:"an-empty",text:x.loading?"Loading people\u2026":""})),e;var t=[],n=[];x.items.forEach(function(i){(i.status==="active"?t:n).push(i)}),e.appendChild(s("div",{class:"an-psect",text:"Active"}));var r=s("div",{class:"an-plist"});if(t.forEach(function(i){r.appendChild(Ui(i))}),e.appendChild(r),n.length){e.appendChild(s("div",{class:"an-psect",text:"Inactive \xB7 "+n.length}));var a=s("div",{class:"an-plist"});n.forEach(function(i){a.appendChild(Ui(i))}),e.appendChild(a)}return e}function Il(e){var t=s("div",{class:"an-pmeta"});if(e.status==="revoked")return t.textContent=e.revokedBy?"Revoked by "+e.revokedBy.name+" \xB7 "+Fi(e.revokedAt):"Revoked in server config",t;if(e.status==="expired"){var n=Math.max(0,Math.floor((Date.now()-Date.parse(e.expiresAt))/864e5));return t.textContent=n===0?"Expired today":"Expired "+n+(n===1?" day ago":" days ago"),t}if(t.appendChild(h.createTextNode((e.source==="config"?"Server config":e.user.email||"No email")+" \xB7 ")),!e.expiresAt)return t.appendChild(h.createTextNode("never expires")),t;var r=Math.ceil((Date.parse(e.expiresAt)-Date.now())/864e5),a=r<=0?"expires today":"expires in "+r+(r===1?" day":" days");return t.appendChild(r<=3?s("span",{class:"an-psoon",text:a}):h.createTextNode(a)),t}function Ui(e){var t=!!d.reviewer&&e.user.id===d.reviewer.id,n=e.status==="active",r=s("div",{class:"an-person"+(n?"":" an-inactive"),"data-user":e.user.id},[pn(e.user.name,30),s("div",{class:"an-pwho"},[s("div",{class:"an-pname"},[s("span",{text:e.user.name}),t?s("span",{class:"an-pyou",text:"You"}):null,s("span",{class:"an-prole"+(e.role==="author"?" an-prole-author":""),text:e.role==="author"?"Author":"Reviewer"})]),Il(e)])]);if(n)if(r.appendChild(s("button",{class:"an-ibtn","data-action":"copy-link",title:"Copy link","aria-label":"Copy "+e.user.name+"'s link",html:S.copy,onclick:function(o){o.stopPropagation(),je(_n(e.token),"Link copied")}})),t)r.appendChild(s("span",{class:"an-ibtn-gap"}));else{var a=s("button",{class:"an-ibtn","data-action":"person-menu",title:"More","aria-label":"More for "+e.user.name,"aria-haspopup":"menu","aria-expanded":x.menu===e.user.id?"true":"false",html:S.more,onclick:function(o){o.stopPropagation(),Yi(e.user.id)}});v(a,"keydown",function(o){o.key==="ArrowDown"&&x.menu!==e.user.id&&(o.preventDefault(),Yi(e.user.id))}),r.appendChild(a)}else t||r.appendChild(s("button",{class:"an-ghost an-psmall","data-action":"renew",text:"New link",onclick:function(o){o.stopPropagation(),qi(e)}}));var i=s("div",{class:"an-prow"},[r]);return x.menu===e.user.id&&i.appendChild(Ll(e)),x.confirm&&x.confirm.userId===e.user.id&&i.appendChild(Ol(e)),i}function Yi(e){if(x.menu=x.menu===e?null:e,x.confirm=null,$(),x.menu){var t=j.querySelector('.an-pmenu [role="menuitem"]');t&&t.focus()}else{var n=ar(e,"person-menu");n&&n.focus()}}function ir(e){var t=x.menu;if(!t)return!1;if(x.menu=null,$(),e){var n=ar(t,"person-menu");n&&n.focus()}return!0}function Ll(e){function t(a,i,o,l){return s("button",{class:"an-mitem"+(o?" an-pdanger":""),role:"menuitem",tabindex:"-1","data-action":a,text:i,onclick:function(u){u.stopPropagation(),l()}})}function n(a){x.menu=null,x.confirm={kind:a,userId:e.user.id},$();var i=j.querySelector('[data-action="confirm-'+a+'"]');i&&i.focus()}var r=s("div",{class:"an-pmenu",role:"menu","aria-label":e.user.name},[t("menu-copy","Copy link",!1,function(){ir(!0),je(_n(e.token),"Link copied")}),t("menu-renew","New link\u2026",!1,function(){n("renew")}),t("menu-revoke","Revoke\u2026",!0,function(){n("revoke")})]);return v(r,"keydown",function(a){var i=Array.prototype.slice.call(r.querySelectorAll('[role="menuitem"]')),o=i.indexOf(a.target);a.key==="ArrowDown"||a.key==="ArrowUp"?(a.preventDefault(),i[(o+(a.key==="ArrowDown"?1:-1)+i.length)%i.length].focus()):a.key==="Home"||a.key==="End"?(a.preventDefault(),i[a.key==="Home"?0:i.length-1].focus()):a.key==="Escape"?(a.preventDefault(),a.stopPropagation(),ir(!0)):a.key==="Tab"&&ir(!1)}),v(r,"click",function(a){a.stopPropagation()}),r}v(h,"click",function(){x.menu&&ir(!1)});function Ol(e){var t=x.confirm.kind==="renew";return s("div",{class:"an-pconfirm"+(t?"":" an-pconfirm-danger"),role:"group","aria-label":t?"Confirm new link":"Confirm revoke"},[s("div",{},[s("b",{text:(t?"Replace ":"Revoke ")+e.user.name+"'s link?"}),h.createTextNode(t?" The current link stops working and they're signed out.":" They're signed out now and can't sign in again with it. Their comments stay.")]),s("div",{class:"an-pbtns"},[s("button",{class:"an-ghost","data-action":"confirm-cancel",text:"Cancel",onclick:function(n){n.stopPropagation(),x.confirm=null,$();var r=ar(e.user.id,"person-menu");r&&r.focus()}}),s("button",{class:"an-primary"+(t?"":" an-pdanger-btn"),"data-action":t?"confirm-renew":"confirm-revoke",text:t?"New link":"Revoke",onclick:function(n){n.stopPropagation(),t?qi(e):Ml(e)}})])])}function or(e,t){var n=e.data&&e.data.error;return n==="name_taken"?"Someone in this review is already called "+t+".":n==="too_many_invites"?"This review has the maximum of 200 people.":n==="cannot_change_self"?"You can't change your own link.":n==="invite_not_found"?"That person is no longer in this review.":"Something went wrong ("+(n||"HTTP "+e.res.status)+"). Try again."}function fa(){d.membersAt=0}function qi(e){if(!x.busy){x.busy=!0,x.error="";var t=e.status==="active"&&!e.expiresAt?{expiresAt:null}:{};wn("POST","/invites/"+encodeURIComponent(e.user.id)+"/renew",t).then(function(n){x.busy=!1,x.confirm=null,n.res.status===200&&n.data&&n.data.invite?(x.ready=n.data.invite,x.emailSend=null,x.readyEmailed=!1,x.form=null,x.focus="copy-ready",fa(),Hi(_n(n.data.invite.token),"Link copied")):x.error=or(n,e.user.name),rr()},function(){x.busy=!1,x.error="Couldn't reach the review server. Try again.",$()})}}function Ml(e){x.busy||(x.busy=!0,x.error="",wn("DELETE","/invites/"+encodeURIComponent(e.user.id)).then(function(t){x.busy=!1,x.confirm=null,t.res.status===200?(x.ready&&x.ready.user.id===e.user.id&&(x.ready=null),x.focus="invite",fa(),L("Revoked "+e.user.name+"'s link",{kind:"success"})):x.error=or(t,e.user.name),rr()},function(){x.busy=!1,x.error="Couldn't reach the review server. Try again.",$()}))}function Pl(){x.form={name:"",email:"",role:"reviewer",expiry:"30",errors:{},formError:""},x.ready=null,$();var e=j.querySelector("#__an_pname");e&&e.focus()}function Rl(){var e=x.form,t=s("form",{class:"an-pform",novalidate:"novalidate","aria-label":"Invite someone"});function n(p,f,g,y,w){t.appendChild(s("label",{for:f},[g,y?s("span",{class:"an-popt",text:" (optional)"}):null]));var b=s("input",{class:"an-input",id:f,type:w,autocomplete:"off",maxlength:p==="name"?"80":"254"});b.value=e[p],e.errors[p]&&(b.setAttribute("aria-invalid","true"),b.setAttribute("aria-describedby",f+"-err")),v(b,"input",function(){e[p]=b.value}),t.appendChild(b),e.errors[p]&&t.appendChild(s("div",{class:"an-pferr",id:f+"-err",role:"alert",text:e.errors[p]}))}if(n("name","__an_pname","Name",!1,"text"),n("email","__an_pemail","Email",!0,"email"),d.emailOn){var r=s("input",{type:"checkbox",id:"__an_psend"});r.checked=e.send!==!1,v(r,"change",function(){e.send=r.checked});var a=s("label",{class:"an-pcheck",for:"__an_psend"},[r,"Email them the link"]);a.style.display=e.email.trim()?"":"none",t.appendChild(a);var i=t.querySelector("#__an_pemail");i&&v(i,"input",function(){a.style.display=i.value.trim()?"":"none"})}t.appendChild(s("div",{class:"an-plabel",id:"__an_prole-l",text:"Role"}));var o=s("div",{class:"an-pseg",role:"radiogroup","aria-labelledby":"__an_prole-l"});[["reviewer","Reviewer"],["author","Author"]].forEach(function(p){o.appendChild(s("button",{type:"button",class:"an-segbtn"+(e.role===p[0]?" an-on":""),role:"radio","aria-checked":e.role===p[0]?"true":"false","data-role":p[0],text:p[1],onclick:function(f){f.stopPropagation(),e.role=p[0],Array.prototype.forEach.call(o.children,function(g){var y=g.getAttribute("data-role")===e.role;g.classList.toggle("an-on",y),g.setAttribute("aria-checked",y?"true":"false")})}}))}),t.appendChild(o),t.appendChild(s("p",{class:"an-phelp",text:"Reviewers comment and reply. Authors can also triage and close any comment, and invite people."})),t.appendChild(s("label",{for:"__an_pexpiry",text:"Link expires"}));var l=s("select",{class:"an-input",id:"__an_pexpiry"});kl.forEach(function(p){l.appendChild(s("option",{value:p[0],text:p[1]}))}),l.value=e.expiry,v(l,"change",function(){e.expiry=l.value}),t.appendChild(l),e.formError&&t.appendChild(s("div",{class:"an-pferr",role:"alert",text:e.formError}));var u=s("button",{type:"submit",class:"an-primary","data-action":"create-link",text:x.busy?"Creating\u2026":"Create link"});return x.busy&&(u.disabled=!0),t.appendChild(s("div",{class:"an-pfbtns"},[s("button",{type:"button",class:"an-ghost","data-action":"invite-cancel",text:"Cancel",onclick:function(p){p.stopPropagation(),x.form=null,$()}}),u])),v(t,"submit",function(p){p.preventDefault(),Nl()}),v(t,"click",function(p){p.stopPropagation()}),t}function Xi(){var e=j.querySelector('.an-pform [aria-invalid="true"]');e&&e.focus()}function Nl(){var e=x.form;if(!(!e||x.busy)){e.errors={},e.formError="";var t=e.name.trim(),n=e.email.trim();if(t||(e.errors.name=yn.name),n&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)&&(e.errors.email=yn.email),e.errors.name||e.errors.email){$(),Xi();return}x.busy=!0,$();var r={name:t,email:n||null,role:e.role,expiresAt:El(e.expiry)};d.emailOn&&n&&e.send!==!1&&(r.send=!0,r.url=pr(),r.inviteParam=k.inviteParam),wn("POST","/invites",r).then(function(a){if(x.busy=!1,a.res.status===201&&a.data&&a.data.invite){x.form=null,x.ready=a.data.invite,x.emailSend=null,x.readyEmailed=a.data.emailed===!0,x.focus="copy-ready",fa(),Hi(_n(a.data.invite.token),"Link copied"),rr();return}var i=a.data&&a.data.error,o=a.data&&a.data.message;i==="name_taken"?e.errors.name="Someone in this review is already called "+t+".":i==="already_member"?e.errors.email=n+" is already in this review. Use New link in the list.":i==="invalid_invite"&&(o==="name"||o==="email")?e.errors[o]=yn[o]:i==="invalid_invite"&&yn[o]?e.formError=yn[o]:e.formError=or(a,t),$(),Xi()},function(){x.busy=!1,e.formError="Couldn't reach the review server. Try again.",$()})}}function Dl(){var e=x.ready,t=_n(e.token),n=String(e.user.name).split(/\s+/)[0],r=e.expiresAt?"until "+Fi(e.expiresAt):"until you revoke it",a=s("input",{class:"an-input",readonly:"readonly","aria-label":"Invite link for "+e.user.name});a.value=t,v(a,"focus",function(){a.select()});var i=s("div",{class:"an-pready-t",html:S.check});i.appendChild(s("span",{text:"Link for "+e.user.name+" is ready"}));var o=s("div",{class:"an-pready",role:"status"},[i,s("div",{class:"an-plinkrow"},[a,s("button",{class:"an-primary","data-action":"copy-ready",text:"Copy",onclick:function(f){f.stopPropagation(),je(t,"Link copied")}})]),s("p",{class:"an-phelp",text:"Send it to "+n+" yourself. Anyone with this link can sign in as "+n+" "+r+". You can copy it again from the list."})]);if(x.readyEmailed&&o.appendChild(s("p",{class:"an-pemailed",text:"We emailed it to "+e.user.email+"."})),d.emailOn&&e.user.email){var l=x.emailSend&&x.emailSend.userId===e.user.id?x.emailSend:null,u=s("div",{class:"an-pferr",role:"alert",text:l&&l.state==="error"?l.message:""}),p=s("button",{class:"an-ghost an-psend","data-action":"email-ready",text:l&&l.state==="sending"?"Sending\u2026":l&&l.state==="sent"?"Sent \u2713":"Email to "+e.user.email,onclick:function(f){if(f.stopPropagation(),!p.disabled){var g={userId:e.user.id,state:"sending",message:""};x.emailSend=g,$(),wn("POST","/invites/"+encodeURIComponent(e.user.id)+"/send",{url:pr(),inviteParam:k.inviteParam}).then(function(y){x.emailSend===g&&(y.res.status===202?(g.state="sent",P(function(){x.emailSend!==g||!x.ready||x.ready.user.id!==g.userId||(x.emailSend=null,$())},3e3)):(g.state="error",g.message=y.res.status===429?"Too many emails to this person. Try again later.":or(y,e.user.name)),$())},function(){x.emailSend===g&&(g.state="error",g.message="Couldn't reach the review server. Try again.",$())})}}});p.disabled=!!(l&&(l.state==="sending"||l.state==="sent")),o.appendChild(p),o.appendChild(u)}return o}function sr(){var e=ee().comments.filter(function(n){return qe(n)&&!nt[n.id]}).map(Je),t={};return e.forEach(function(n,r){t[n.id]=r}),Object.keys(q).forEach(function(n){var r=q[n];!r||nt[n]||(t[n]!==void 0?e[t[n]]=r:e.push(r))}),e}function lr(e){var t={};return e.forEach(function(n){t[n.page]=!0}),Object.keys(t).length}function pa(){var e=ee().comments.filter(function(t){return qe(t)&&t.page===N}).map(Je);return Object.keys(q).forEach(function(t){var n=q[t];if(!(!n||n.page!==N)){for(var r=-1,a=0;a<e.length;a++)if(e[a].id===t){r=a;break}r>=0?e[r]=n:e.push(n)}}),e}function jl(e){var t=ee(),n=new Date().toISOString(),r={schema:Qr,id:it(),page:N,url:z.href,type:e.type||"note",author:c.author||"Anonymous",authorId:c.authorId,text:String(e.text||"").slice(0,Zn),color:er(e.color||c.color),anchor:e.anchor||null,geom:e.geom||null,visibility:"shared",status:"open",resolved:!1,resolvedBy:null,resolvedAt:null,assignee:null,assignedAt:null,replies:[],createdAt:n,updatedAt:n,editedAt:null},a=_r(e.target);a&&r.type!=="group"&&(r.target=a);var i=r.type==="group"?Pi(e.targets,r.geom):null;if(i&&(r.targets=i),E){var o=na(r.text,d.members);o.length&&(r.mentions=o)}if(!qe(r))return L("Cannot save this comment: invalid anchor or content",{kind:"error"}),null;t.comments.push(r);var l=Fe(t);return l||(q[r.id]=r),Ea(r.id),ur(r,["*"]),r}function Pt(e,t){var n=ee(),r=n.comments.filter(function(C){return C&&C.id===e&&C.page===N})[0],a=!r;if(q[e]&&q[e].page===N&&(r=q[e]),!r||!qe(r))return null;r=Je(It(r));var i=new Date().toISOString(),o=[];if(typeof t.text=="string"&&t.text.slice(0,Zn)!==r.text&&(r.text=t.text.slice(0,Zn),r.editedAt=i,o.push("text"),E&&d.members)){var l=na(r.text,d.members);JSON.stringify(l)!==JSON.stringify(r.mentions||[])&&(l.length?r.mentions=l:delete r.mentions,o.push("mentions"))}var u=Ve[t.status]?t.status:typeof t.resolved=="boolean"?t.resolved?"resolved":"open":null;if(u&&u!==r.status&&(r.status=u,r.resolved=Zr(u),r.resolvedBy=r.resolved?c.authorId:null,r.resolvedAt=r.resolved?i:null,o.push("status")),t.assignee!==void 0){var p=Li(t.assignee);JSON.stringify(p)!==JSON.stringify(r.assignee)&&(r.assignee=p,r.assignedAt=p?i:null,o.push("assignee"))}typeof t.color=="string"&&er(t.color)!==r.color&&(r.color=er(t.color),o.push("color"));var f=!1;if(t.reply){var g=Oi(Object.assign({authorId:c.authorId,editedAt:null},t.reply,{text:String(t.reply.text||"").slice(0,Jr),mentions:E&&d.members?na(t.reply.text,d.members):[]}));r.replies.length<Ii&&(r.replies.push(g),f=!0)}if(t.editReply){var y=r.replies.findIndex(function(C){return C.id===t.editReply.id});y>=0&&(r.replies[y]=Object.assign({},r.replies[y],{text:String(t.editReply.text||"").slice(0,Jr),editedAt:i}))}var w=!1;if(t.deleteReply){var b=r.replies.length;r.replies=r.replies.filter(function(C){return C.id!==t.deleteReply}),w=r.replies.length<b}if(r.updatedAt=i,!qe(r))return L("Cannot save this edit: invalid content",{kind:"error"}),null;if(a?n.comments.push(r):n.comments=n.comments.map(function(C){return C&&C.id===e?r:C}),Fe(n))delete q[e];else{q[e]=r;var T=c.comments.filter(function(C){return C.id===e})[0];T&&Ct(r),ne(),U()}return o.length&&ur(r,o),f&&va({t:"reply",id:e,r:{id:t.reply.id,text:r.replies[r.replies.length-1].text,mentions:r.replies[r.replies.length-1].mentions||[]}}),w&&va({t:"unreply",id:e,rid:t.deleteReply}),r}function zl(e,t){delete q[e],Ea(e);var n=ee();n.comments=n.comments.filter(function(r){return r.id!==e}),Fe(n),Ki(e,t)}var ha="annotate:queue:"+k.reviewId,st="annotate:invite:"+k.reviewId,Bl=["text","color","anchor","geom","status","assignee","mentions"],Fl=5500,d={token:null,expiresAt:0,reviewer:null,sessionPromise:null,refused:!1,inflight:null,timer:0,pollTimer:0,polling:!1,etag:"",etagPage:"",failures:0,offline:!1,held:!1,state:"",acks:0,waiters:[],controllers:new Set,baselined:{},agentId:null};d.members=null,d.membersAt=0,d.membersLoading=null;var Vi=!0,Gi=[];function ga(e){var t=k.project?k.project+":":"";return t&&e.indexOf(t)===0?e.slice(t.length):e}function Hl(e){return(k.project?k.project+":":"")+e}function ma(){return m.crypto&&crypto.randomUUID?crypto.randomUUID():it()+"-"+it().slice(1)}var Ul={put:1,del:1,reply:1,unreply:1};function Pe(){if(!Vi)return Gi.slice();var e;try{e=JSON.parse(D.get(ha)||"[]")}catch(t){e=[]}return(Array.isArray(e)?e:[]).filter(function(t){return t&&Ul[t.t]===1&&typeof t.id=="string"&&typeof t.key=="string"})}function lt(e){Gi=e.slice(),Vi=D.set(ha,JSON.stringify(e))}function va(e){if(E){e.key=ma();var t=Pe();if(e.t==="put"){for(var n=t.length-1;n>=0;n--)if(t[n].id===e.id){if(t[n].t==="put"&&!(d.inflight&&d.inflight.key===t[n].key)){t[n].f=t[n].f.indexOf("*")>=0||e.f.indexOf("*")>=0?["*"]:t[n].f.concat(e.f.filter(function(r){return t[n].f.indexOf(r)<0})),lt(t),le(),te(0);return}break}}t.push(e),lt(t),le(),te(0)}}function ur(e,t){E&&e.visibility!=="private"&&va({t:"put",id:e.id,f:t})}function ut(e){return(!e.stamps||typeof e.stamps!="object")&&(e.stamps={}),e.stamps}function Ki(e,t){if(E){var n=Pe();n.push({t:"del",id:e,key:ma(),nb:Date.now()+(t||0)}),lt(n),le(),te(0)}}function Yl(e){if(E){var t=Pe(),n=!1;t=t.filter(function(r){var a=r.t==="del"&&r.id===e.id&&!(d.inflight&&d.inflight.key===r.key);return a&&(n=!0),!a}),lt(t),n||ur(e,["*"]),le(),te(0)}}function dr(e,t){try{m.dispatchEvent(new m.CustomEvent(e,{detail:t}))}catch(n){}}function xa(){if(!E)return{state:"local",pending:0};var e=Pe().length,t=d.held?"error":d.offline?"offline":e?"pending":"idle";return{state:t,pending:e}}var ql={idle:"Sent to the review. The author sees your comments as you post them; there is nothing to submit.",pending:"Sending to the review\u2026",offline:"Offline \u2014 changes are kept here and sent when the connection returns.",error:"Not signed in to the review \u2014 changes are kept on this device."},Xl="Sent to the review. Everyone in the review sees your comments as you post them; there is nothing to submit.";function Wi(e){return e==="idle"&&ea()?Xl:ql[e]}function le(){if(E){var e=xa(),t=e.state+":"+e.pending;if(t!==d.state){d.state=t;var n=h.getElementById("__an_syncnote");if(n){n.textContent=Wi(e.state),n.setAttribute("data-state",e.state);var r=n.parentNode;if(r&&r.classList){r.classList.toggle("an-synced",e.state==="idle");var a=r.firstChild;a&&a.innerHTML!==void 0&&(a.innerHTML=e.state==="idle"?S.check:S.info)}}dr("annotate:sync",e)}}}function Rt(e){var t=d.waiters;d.waiters=[],t.forEach(function(n){e?n.reject(e):n.resolve()})}function fe(e,t,n,r){var a=m.AbortController?new m.AbortController:null;a&&d.controllers.add(a);var i=P(function(){a&&a.abort()},3e4),o=Object.assign({},r||{});return d.token&&(o.Authorization="Bearer "+d.token),n!==void 0&&(o["Content-Type"]="application/json"),m.fetch(vn+t,{method:e,headers:o,credentials:"omit",cache:"no-store",body:n===void 0?void 0:JSON.stringify(n),signal:a?a.signal:void 0}).then(function(l){return l.status===204||l.status===304?{res:l,data:null}:l.json().then(function(u){return{res:l,data:u}},function(){return{res:l,data:null}})}).finally(function(){R(i),a&&d.controllers.delete(a)})}function $i(e){var t;try{t=new URL(e)}catch(r){return null}var n=t.searchParams.get(k.inviteParam);if(!n&&t.hash&&t.hash.indexOf(k.inviteParam+"=")!==-1)try{n=new URLSearchParams(t.hash.slice(1)).get(k.inviteParam)}catch(r){}return n||null}function Vl(){if(!(!E||!k.inviteParam)){var e;try{e=new URL(z.href)}catch(a){return}var t=$i(z.href);if(t){D.set(st,t),e.searchParams.delete(k.inviteParam);var n=e.hash&&e.hash.indexOf(k.inviteParam+"=")!==-1?"":e.hash;try{m.history.replaceState(m.history.state,"",e.pathname+e.search+n)}catch(a){}return}if(!D.get(st)){var r=h.referrer;!r||r.indexOf(z.origin+"/")!==0||(t=$i(r),t&&D.set(st,t))}}}function cr(){return E&&!!D.get(st)}var Nt=null,fr=!1;function Gl(){if(E){var e;try{e=new URL(z.href)}catch(n){return}var t=e.searchParams.get("an_signin");if(t){Nt=t,e.searchParams.delete("an_signin");try{m.history.replaceState(m.history.state,"",e.pathname+e.search+e.hash)}catch(n){}}}}function ba(){return d.emailOn===!0||d.emailOn===!1?Promise.resolve(d.emailOn):d.emailCheck?d.emailCheck:vn?(d.emailCheck=m.fetch(vn+"/signin",{credentials:"omit",cache:"no-store"}).then(function(e){return e.ok?e.json():null}).then(function(e){return d.emailOn=!!(e&&e.email===!0),We&&kt(),d.emailOn},function(){return d.emailOn=!1,!1}),d.emailCheck):Promise.resolve(!1)}function pr(){var e=new URL(z.href);return e.hash="",e.searchParams.delete(k.inviteParam),e.searchParams.delete("an_signin"),e.href}function Kl(e){return m.fetch(vn+"/signin",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"omit",cache:"no-store",body:JSON.stringify({email:e,url:pr()})}).then(function(t){return t.status},function(){return 0})}function Ji(){if(!at)return null;function e(t,n){return s("a",{href:t,target:"_blank",rel:"noopener noreferrer",text:n})}return s("p",{class:"an-nlegal"},["By continuing, you agree to Redline's ",e("https://redlinejs.com/terms","Terms of Service")," and ",e("https://redlinejs.com/privacy","Privacy Policy"),"."])}function hr(e,t){if(h.getElementById("__an_namewrap"))return;var n=s("div",{id:"__an_namewrap","data-box":"signin"}),r=s("div",{id:"__an_namebox",role:"dialog","aria-modal":"true","aria-labelledby":"__an_signin_t"});n.appendChild(r),X().appendChild(n);var a=Ta(n);function i(){a(),n.remove()}function o(){if(r.innerHTML="",r.appendChild(s("h3",{class:"an-nt",id:"__an_signin_t",text:"Sign in to review"})),e&&r.appendChild(s("div",{class:"an-nnote an-nwarn",role:"status",text:e})),at){var u=s("button",{"data-action":"signin-redline",text:"Continue with Redline"});v(u,"click",function(){Us()}),r.appendChild(u)}r.appendChild(s("p",{class:"an-nd",text:"Enter the email address your invite went to. We'll send you a sign-in link."}));var p=s("input",{type:"email",id:"__an_signin_email",autocomplete:"email",placeholder:"you@example.com","aria-label":"Email address"}),f=s("div",{class:"an-nerr",role:"alert"}),g=s("button",{"data-action":"signin-send",text:"Send link"}),y=s("button",{class:"an-nskip","data-action":"signin-skip",text:t?"Continue without signing in":"Keep working locally"});function w(){var T=p.value.trim();if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(T)){f.textContent="Enter a valid email address.",p.focus();return}g.disabled=!0,g.textContent="Sending\u2026",f.textContent="",Kl(T).then(function(C){if(C===202){l(T);return}g.disabled=!1,g.textContent="Send link",f.textContent=C===429?"Too many sign-in emails. Try again in a few minutes.":C===422?"Enter a valid email address.":"Couldn't send the link. Try again."})}v(g,"click",w),v(p,"keydown",function(T){T.key==="Enter"&&w()}),v(y,"click",function(){i(),t&&t()}),r.appendChild(p),r.appendChild(f),r.appendChild(g),r.appendChild(y);var b=Ji();b&&r.appendChild(b),P(function(){p.focus()},40)}function l(u){r.innerHTML="",r.appendChild(s("h3",{class:"an-nt",id:"__an_signin_t",text:"Check your inbox"})),r.appendChild(s("p",{class:"an-nd",role:"status",text:"If "+u+" is in this review, a sign-in link is on its way. It works once, for 15 minutes."}));var p=s("button",{"data-action":"signin-again",text:"Use another email"}),f=s("button",{class:"an-nskip","data-action":"signin-close",text:"Close"});v(p,"click",function(){e=null,o()}),v(f,"click",i),r.appendChild(p),r.appendChild(f),P(function(){p.focus()},40)}o()}function Qi(e){if(!E){Mr(e);return}fr=!0,ba().then(function(t){t?hr(null,function(){Mr(e)}):Mr(e)})}function Wl(e){d.refusalCode=e,d.refusal="This sign-in link has expired or was already used.",to(),d.emailOn=!0,kt(),hr("This sign-in link has expired or was already used. Send yourself a new one.")}function Qe(e){if(!E||O)return Promise.resolve(null);if(!e&&d.token&&d.expiresAt>Date.now()+6e4)return Promise.resolve(d.token);if(d.sessionPromise)return d.sessionPromise;var t=D.get(st),n=Nt;Nt=null;var r=t?{invite:t}:c.author?{name:c.author}:null;if(!n&&!r)return Promise.resolve(null);d.token=null;var a=n?fe("POST","/session",{signin:n}):Promise.resolve(null),i=a.then(null,function(o){throw Nt=n,o}).then(function(o){if(o&&o.res.status===200&&o.data&&typeof o.data.token=="string")return typeof o.data.inviteToken=="string"&&o.data.inviteToken&&D.set(st,o.data.inviteToken),Zi(o.data),d.token;if(o){var l=o.data&&o.data.error;if(o.res.status===403&&typeof l=="string"&&l.indexOf("signin_")===0){if(!r)return Wl(l),null}else{if(l==="invite_revoked"||l==="invite_expired")return eo(l,!1),null;throw Nt=n,new Error("HTTP "+o.res.status)}}return fe("POST","/session",r).then(function(u){if(u.res.status===200&&u.data&&typeof u.data.token=="string")return Zi(u.data),d.token;if(u.res.status===403||u.res.status===404)return eo(u.data&&u.data.error,!!t,u.data&&u.data.message),null;throw new Error("HTTP "+u.res.status)})});return d.sessionPromise=i.finally(function(){d.sessionPromise=null}),d.sessionPromise}function $l(e){d.reviewer={id:e.id,name:String(e.name||""),role:e.role==="author"?"author":"reviewer"},c.authorId=d.reviewer.id,d.reviewer.name&&(c.author=d.reviewer.name)}function Jl(){if(!(O||!Ot())){var e="annotate:site:"+k.reviewId,t=Date.now(),n=null,r=fi[k.reviewId],a=!1;if(!(r&&(r.storageFailed||t-r.at<864e5))){try{n=localStorage.getItem(e)}catch(f){a=!0}if(a&&r){r.storageFailed=!0;return}if(!(n!==null&&t-Number(n)<864e5)){var i={at:t,storageFailed:a};fi[k.reviewId]=i;try{localStorage.setItem(e,String(t))}catch(f){i.storageFailed=!0}var o=null,l=h.querySelector('link[rel~="icon"]'),u=l&&l.getAttribute("href");try{typeof u=="string"&&(o=new URL(u,z.href).href)}catch(f){}var p=h.querySelector('meta[name="theme-color"]');fe("POST","/site",{icon:o,color:p?p.getAttribute("content"):null,title:h.title}).then(function(){},function(){})}}}}function Zi(e){d.token=e.token,d.expiresAt=Date.parse(e.expiresAt)||Date.now()+36e5,d.held=!1,d.agentId=e.review&&typeof e.review.agentId=="string"&&e.review.agentId?e.review.agentId:null,d.agentSeenAt=e.review&&typeof e.review.agentSeenAt=="string"?e.review.agentSeenAt:null,d.reviewName=e.review&&typeof e.review.name=="string"?e.review.name:"",d.visibility=e.review&&(e.review.visibility==="team"||e.review.visibility==="private")?e.review.visibility:null,e.reviewer&&typeof e.reviewer.id=="string"&&$l(e.reviewer),e.review&&typeof e.review.note=="string"&&e.review.note&&(c.note=e.review.note,ii()),dr("annotate:auth",{reviewer:d.reviewer}),le(),d.canInvite=!!(e.review&&e.review.canInvite===!0),d.emailOn=!!(e.review&&e.review.email===!0),d.hasEmail=!!(e.reviewer&&e.reviewer.hasEmail===!0),d.mentionEmails=void 0,d.mentionPrefsTried=!1,d.canInvite||(x.open=!1,x.items=null),We&&U(),Ur()&&Js(),Jl()}var Ql={invite_invalid:"This review needs a personal invite link, and this page was opened without one (or with an incomplete one). Ask the review's author for your link and open the site through it.",invite_revoked:"The review's author revoked your link. Ask them for a new one.",invite_expired:"Your review link has expired. Ask the review's author for a new one.",review_closed:"The author has closed this review; it no longer accepts feedback.",review_not_found:"This review no longer exists on the server.",origin_not_allowed:"This page's address isn't registered for the review. Open the exact link you were sent, or ask the author to add this address."},ya="Your comments stay in this browser. Use Download or Copy below and email them to the author.";function eo(e,t,n){t&&e!=="review_closed"&&D.set(st,"");var r=Ql[e]||typeof n=="string"&&n.trim()||"The review did not accept this browser ("+(e||"refused")+").";if(d.refusal=r,d.refusalCode=e,to(),e==="invite_invalid"){ba().then(function(a){a&&fr?(fr=!1,hr("This review needs an invite. Sign in with the email address your invite went to.")):L(r+" "+ya,{kind:"error",duration:12e3})});return}L(r+" "+ya,{kind:"error",duration:12e3})}function to(){E=!1,d.agentId=null,d.canInvite=!1,x.open=!1,Mt(),no(),Qn=Ci,c.authorId=null,dr("annotate:sync",{state:"local",pending:0}),We&&(on(),kt())}function no(){R(d.timer),R(d.pollTimer),d.controllers.forEach(function(e){e.abort()}),d.controllers.clear(),Rt(new Error("Sync stopped"))}function ro(){!E||O||Qe().then(function(e){e&&(te(0),dt())},function(){mr()})}function te(e){!E||O||(R(d.timer),d.timer=P(eu,e||0))}function Zl(e){var t=Date.now(),n={},r=1/0;e.forEach(function(o){o.t==="del"&&o.nb&&o.nb>t&&(n[o.id]=!0,r=Math.min(r,o.nb-t))});for(var a=0;a<e.length;a++){var i=e[a];if(!n[i.id]){if(i.nb&&i.nb>t){n[i.id]=!0,r=Math.min(r,i.nb-t);continue}return{op:i}}}return{wait:r}}function eu(){if(!(!E||O||d.inflight||d.held)){var e=Pe();if(le(),!e.length){Rt();return}var t=Zl(e);if(!t.op){t.wait<1/0&&te(t.wait);return}if(!d.token){Qe().then(function(r){r?te(0):Rt(new Error("Not signed in to the review"))},function(){mr()});return}var n=d.inflight=t.op;tu(n).then(function(r){d.inflight=null,nu(n,r)},function(){d.inflight=null,!O&&mr()})}}function tu(e){var t="/comments/"+encodeURIComponent(e.id),n={"Idempotency-Key":e.key},r=ee(),a=r.comments.filter(function(o){return o&&o.id===e.id})[0]||q[e.id];if(e.t!=="del"&&(!a||!qe(a)||a.visibility==="private"))return Promise.resolve({skip:!0});if(e.t==="put"){var i=It(Je(a));return i.page=ga(i.page),i.replies=[],e.f.indexOf("*")>=0||e.f.indexOf("mentions")>=0?i.mentions||(i.mentions=[]):delete i.mentions,i.updatedAt=ut(r)[e.id]||i.updatedAt,fe("PUT",t,i,n)}return e.t==="del"?fe("DELETE",t,void 0,n):e.t==="reply"?fe("POST",t+"/replies",{id:e.r.id,text:e.r.text,mentions:e.r.mentions||[]},n):fe("DELETE",t+"/replies/"+encodeURIComponent(e.rid),void 0,n)}function gr(e){lt(Pe().filter(function(t){return!e(t)}))}function _a(){var e=Math.min(6e4,1e3*Math.pow(2,Math.min(d.failures,6)));return Math.round(e/2+Math.random()*e/2)}function mr(){d.failures++,d.offline=!0,le(),Rt(new Error("Offline \u2014 changes are queued and will sync later")),te(_a())}function nu(e,t){if(!O){if(t.skip){gr(function(l){return l.key===e.key}),te(0);return}var n=t.res,r=t.data||{},a=n.status;if(a===429||a===503||a>=500){d.failures++,a>=500&&a!==503&&(d.offline=!0),le(),te(a===429||a===503?ni(n):_a());return}if(d.failures=0,d.offline=!1,a===401){if(e.reauth){d.held=!0,le(),Rt(new Error("Not signed in to the review"));return}ao(e,{reauth:!0}),d.token=null,Qe(!0).then(function(l){l?te(0):(d.held=!0,le(),Rt(new Error("Not signed in to the review")))},function(){mr()});return}if(a===409&&r.comment){var i=(e.n||0)+1;lo(r.comment,e),i>5?gr(function(l){return l.key===e.key}):ao(e,{key:ma(),n:i}),te(0);return}if(a===410){gr(function(l){return l.id===e.id}),io(e.id),e.t!=="del"&&L("A comment you changed was already deleted.",{kind:"info",duration:6e3}),vr(),te(0);return}if(gr(function(l){return l.key===e.key}),n.ok)d.acks++,r.comment?lo(r.comment,null):e.t==="del"&&io(e.id);else{var o=e.t==="put"?ee().comments.filter(function(l){return l&&l.id===e.id})[0]||q[e.id]:null;a===422&&o&&o.type==="group"&&(r.message==="type"||r.message==="geom")?L("This review server doesn't support comments on several elements yet; it stays in this browser. Ask the review's owner to update the server.",{kind:"error",duration:8e3}):L("The review server rejected a change ("+(r.error||"HTTP "+a)+").",{kind:"error",duration:6e3}),d.etag="",P(dt,0)}le(),te(0)}}function ao(e,t){var n=Pe();n.forEach(function(r){r.key===e.key&&Object.assign(r,t)}),lt(n)}function io(e){var t=ee();t.comments=t.comments.filter(function(n){return!n||n.id!==e}),delete ut(t)[e],delete q[e],Fe(t),vr()}function oo(e){if(!qe(e)||typeof e.page!="string"||e.visibility==="private")return null;var t=Je(e);return t.page=Hl(e.page),t}function so(e,t,n){var r=e;return n.forEach(function(a){if(a.t==="put"&&t)(a.f.indexOf("*")>=0?Bl:a.f).forEach(function(o){r[o]=t[o]===void 0?r[o]:JSON.parse(JSON.stringify(t[o])),o==="mentions"&&t.mentions===void 0&&delete r.mentions,o==="status"&&(r.resolved=Zr(r.status),r.resolvedBy=t.resolvedBy||null,r.resolvedAt=t.resolvedAt||null),o==="assignee"&&(r.assignedAt=t.assignedAt||null),o==="text"&&(r.editedAt=t.editedAt||r.editedAt)});else if(a.t==="reply"&&t&&!r.replies.some(function(o){return o.id===a.r.id})){var i=(t.replies||[]).filter(function(o){return o.id===a.r.id})[0];i&&r.replies.push(i)}else a.t==="unreply"&&(r.replies=r.replies.filter(function(o){return o.id!==a.rid}))}),r}function lo(e,t){var n=oo(e);if(n){var r=ee(),a=Pe().filter(function(p){return p.id===n.id&&(!t||p.key!==t.key)});t&&a.unshift(t),ut(r)[n.id]=e.updatedAt,t||fo(n.id,e.updatedAt);for(var i=-1,o=0;o<r.comments.length;o++)if(r.comments[o]&&r.comments[o].id===n.id){i=o;break}var l=i>=0?r.comments[i]:q[n.id];if(a.some(function(p){return p.t==="del"})){Fe(r);return}var u=so(n,l&&qe(l)?Je(l):null,a);i>=0?r.comments[i]=u:r.comments.push(u),Fe(r)?delete q[n.id]:q[n.id]=u,vr()}}function ru(e){var t=ee(),n=ut(t),r=Pe(),a={},i={};t.comments.forEach(function(w){w&&typeof w.id=="string"&&(i[w.id]=w)});var o={};r.forEach(function(w){(o[w.id]=o[w.id]||[]).push(w)});var l=t.comments.filter(function(w){return w&&w.page!==N}),u=wa(),p=!d.baselined[N],f=0,g=0;d.baselined[N]=!0,e.forEach(function(w){var b=oo(w);if(!(!b||b.page!==N||a[b.id])){a[b.id]=!0;var T=n[b.id];n[b.id]=w.updatedAt,o[b.id]||(u[b.id]===void 0&&(p||b.authorId&&b.authorId===c.authorId)?u[b.id]=w.updatedAt:T!==w.updatedAt&&(u[b.id]===void 0||w.updatedAt>u[b.id])&&f++);var C=o[b.id];if(!(C&&C.some(function(M){return M.t==="del"}))){var A=i[b.id]&&qe(i[b.id])?Je(i[b.id]):null;l.push(C?so(b,A,C):b)}}}),t.comments.forEach(function(w){if(!(!w||w.page!==N||a[w.id])){if(o[w.id]){l.push(w);return}if(n[w.id]){delete n[w.id],delete u[w.id],g++;return}l.push(w)}});var y=l.filter(function(w){return w&&w.page===N}).sort(function(w,b){return w.createdAt<b.createdAt?-1:w.createdAt>b.createdAt?1:0});t.comments=l.filter(function(w){return w.page!==N}).concat(y),Fe(t),co(u),f&&L(Ot()||ea()?f+" comment"+(f===1?"":"s")+" changed on this page":"The review owner updated "+f+" of your comments",{kind:"info",duration:6e3}),g&&!Ot()&&L(ea()?g+" comment"+(g===1?" was":"s were")+" removed from this page":"The review owner removed "+g+" of your comments",{kind:"info",duration:6e3}),vr()}var uo="annotate:read:"+k.reviewId;function wa(){var e;try{e=JSON.parse(D.get(uo)||"{}")}catch(t){e=null}return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function co(e){D.set(uo,JSON.stringify(e))}function fo(e,t){if(!(!E||!t)){var n=wa();n[e]=t,co(n)}}function au(){var e={};if(!E)return e;var t=ut(ee()),n=wa(),r={};return Pe().forEach(function(a){r[a.id]=!0}),c.comments.forEach(function(a){var i=t[a.id];i&&!r[a.id]&&(n[a.id]===void 0||i>n[a.id])&&(e[a.id]=!0)}),e}function iu(e){E&&fo(e,ut(ee())[e])}function dt(){if(!(!E||O)&&(R(d.pollTimer),!h.hidden&&(d.pollTimer=P(dt,k.pollInterval),!(!d.token||d.polling)))){var e=ga(N),t=N,n=d.acks;d.etagPage!==e&&(d.etag="",d.etagPage=e),d.polling=!0,vl(),fe("GET","/comments?page="+encodeURIComponent(e),void 0,d.etag?{"If-None-Match":d.etag}:{}).then(function(r){if(!(O||!E)){var a=r.res.status;if(a===401){d.token=null,Qe(!0);return}if(a===304){d.offline=!1,le();return}if(!(a!==200||!r.data||!Array.isArray(r.data.comments))){if(d.offline=!1,le(),d.acks!==n||N!==t){d.etag="",P(dt,0);return}d.etag=r.res.headers.get("ETag")||"",ru(r.data.comments)}}},function(){!O&&E&&(d.offline=!0,le())}).finally(function(){d.polling=!1})}}var po="";function vr(){if(!(!We||O)){var e=JSON.stringify(pa().map(function(t){return[t.id,t.updatedAt,t.status,t.text,t.replies.length,t.assignee&&t.assignee.name]}));e!==po&&(po=e,ei())}}function ou(){if(!E)return Promise.resolve();var e=Pe();return e.forEach(function(t){t.nb=0}),lt(e),d.held=!1,new Promise(function(t,n){d.waiters.push({resolve:t,reject:n}),te(0)})}function su(e,t){var n=e.ownerDocument&&e.ownerDocument.body;if(e===n)return"body";if(e.id&&!Sn(e.id))return"#"+CSS.escape(e.id);for(var r=[];e&&e.nodeType===1&&e!==n;){var a=e.nodeName.toLowerCase();if(e.id&&!Sn(e.id)){r.unshift("#"+CSS.escape(e.id));break}for(var i=1,o=e;o=o.previousElementSibling;)o.nodeName===e.nodeName&&i++;a+=":nth-of-type("+i+")",r.unshift(a),e=e.parentElement}var l=r[0]&&r[0][0]==="#"||t&&t.nodeType===11?"":"body > ";return l+r.join(" > ")}var kn=" >>> ";function Cn(e){for(var t=String(e),n=[],r=0,a="",i=0;i<t.length;i++){var o=t.charAt(i);if(o==="\\"){i++;continue}if(a){o===a&&(a="");continue}if(o==='"'||o==="'"){a=o;continue}o===" "&&t.substr(i,kn.length)===kn&&(n.push(t.slice(r,i)),i+=kn.length-1,r=i+1)}return n.push(t.slice(r)),n}function En(e){var t=Cn(e);return t[t.length-1]}function ho(e){var t=Cn(e);if(t.length<2)return h;var n=Dt(t.slice(0,-1).join(kn));return n&&n.shadowRoot?n.shadowRoot:n&&n.nodeName==="IFRAME"?Rn(n):null}function Dt(e,t){for(var n=Cn(e),r=h,a=null,i=0;i<n.length;i++){try{a=r.querySelector(n[i])}catch(o){return null}if(!a)return null;if(i<n.length-1){if(a.shadowRoot)r=a.shadowRoot;else if(a.nodeName==="IFRAME"){if(r=Rn(a),!r)return null}else return null;t&&r.nodeType===11&&t.indexOf(r)<0&&t.push(r)}}return a}var go=[/^:r[0-9a-z]+:$/i,/^«r[0-9a-z]+»$/i,/^_r_[0-9a-z]+_$/i,/^(radix-|headlessui-|react-aria|mui-)/i,/^ember\d+$/,/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,/\d{6,}/];function Sn(e){if(!e)return!0;for(var t=0;t<go.length;t++)if(go[t].test(e))return!0;return e.length>=10&&/^[a-z0-9]+$/i.test(e)&&/[a-z]/i.test(e)&&/\d/.test(e)}var mo=[/^css-[a-z0-9]+$/i,/^sc-/,/^jsx-\d+$/,/^e(?=[a-z0-9]*\d[a-z0-9]*\d)[a-z0-9]{6,9}$/,/^_(?=[a-zA-Z0-9]*\d)[a-zA-Z0-9]{5,}$/];function vo(e){for(var t=0;t<mo.length;t++)if(mo[t].test(e))return!0;return!1}function xo(e){return!vo(e)&&!/^[A-Za-z][\w-]*_[\w-]+__(?=[\w-]*\d)[\w-]{4,}$/.test(e)&&!/[:\[\/!]/.test(e)}function ka(e){var t=e.classList?Array.prototype.slice.call(e.classList):[];return t.filter(function(n){return n&&n.length<=300&&!vo(n)&&n.indexOf("an-")!==0}).slice(0,8)}var bo=["data-testid","data-test","data-cy","data-qa"],ct=500;function lu(e){return String(e).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\a ")}function xr(e,t){return"["+e+'="'+lu(t)+'"]'}function br(e,t,n){try{for(var r=(n||h).querySelectorAll(e),a=null,i=0;i<r.length;i++)if(!J(r[i])){if(a)return!1;a=r[i]}return a===t}catch(o){return!1}}function yo(e){var t=[];return e.id&&!Sn(e.id)&&t.push("#"+CSS.escape(e.id)),bo.forEach(function(n){var r=e.getAttribute(n);r&&t.push(xr(n,r))}),t}function uu(e){var t=[],n=e.nodeName.toLowerCase(),r=e.getAttribute("aria-label");r&&t.push(n+xr("aria-label",r));var a=e.getAttribute("name");a&&/^(INPUT|SELECT|TEXTAREA|BUTTON)$/.test(e.nodeName)&&t.push(n+xr("name",a));var i=e.nodeName==="A"?e.getAttribute("href"):null;return i&&i.length<=120&&t.push("a"+xr("href",i)),t}function _o(e){var t=e.nodeName.toLowerCase()+ka(e).filter(xo).slice(0,2).map(function(o){return"."+CSS.escape(o)}).join(""),n=e.parentElement||(e.parentNode&&e.parentNode.nodeType===11?e.parentNode:null);if(!n)return t;var r=Array.prototype.some.call(n.children,function(o){if(o===e)return!1;try{return o.matches(t)}catch(l){return!1}});if(!r)return t;for(var a=1,i=e;i=i.previousElementSibling;)i.nodeName===e.nodeName&&a++;return t+":nth-of-type("+a+")"}function du(e,t){var n=e.ownerDocument||h;if(e===n.body||e===n.documentElement)return"body";for(var r=t.nodeType===11,a=yo(e).concat(uu(e)),i=0;i<a.length;i++)if(a[i].length<=ct&&br(a[i],e,t))return a[i];for(var o=[_o(e)],l=e.parentElement,u=!1;l&&l!==n.body&&l!==n.documentElement;){for(var p=yo(l),f=null,g=0;g<p.length&&!f;g++)br(p[g],l,t)&&(f=p[g]);if(f){o.unshift(f),u=!0;break}o.unshift(_o(l)),l=l.parentElement}!u&&!r&&o.unshift("body");var y=o.join(" > ");if(y.length<=ct&&br(y,e,t))return y;for(var w=1;w<o.length;w++){var b=o.slice(-w).join(" > ");if(b.length>ct)break;if(br(b,e,t))return b}return su(e,t)}function jt(e){if(!e||e.nodeType!==1)return"body";for(var t=[],n=e;n;){var r=n.getRootNode?n.getRootNode():h;if((!r||r.nodeType!==9&&!(r.nodeType===11&&r.host))&&(r=n.ownerDocument||h),t.unshift(du(n,r)),r.nodeType===11&&r.host)n=r.host;else if(r.nodeType===9&&r!==h)try{n=r.defaultView&&r.defaultView.frameElement}catch(a){n=null}else n=null}return t.join(kn)}var wo=[/^#(?:[\w\u0080-\uffff-]|\\[0-9a-f]{1,6} |\\[^0-9a-f])+$/i,/^\[(?:data-testid|data-test|data-cy|data-qa)="(?:[^"\\]|\\[\s\S])*"\]$/,/^[a-z][\w-]*\[aria-label="(?:[^"\\]|\\[\s\S])*"\]$/i,/^(?:input|select|textarea|button)\[name="(?:[^"\\]|\\[\s\S])*"\]$/,/^a\[href="(?:[^"\\]|\\[\s\S])*"\]$/];function ko(e){if(typeof e!="string")return!1;for(var t=0;t<wo.length;t++)if(wo[t].test(e))return!0;return!1}function yr(e){var t=e.getAttribute("aria-label");if(t&&t.trim())return Z(t);var n=e.getAttribute("aria-labelledby");if(n){var r=e.getRootNode?e.getRootNode():h;r.getElementById||(r=e.ownerDocument||h);var a=n.split(/\s+/).map(function(p){var f=p&&r.getElementById(p);return f?f.textContent:""}).join(" ");if(a.trim())return Z(a)}for(var i=["alt","title","placeholder"],o=0;o<i.length;o++)if(t=e.getAttribute(i[o]),t&&t.trim())return Z(t);if(e.nodeName==="INPUT"&&/^(button|submit|reset)$/i.test(e.type)&&e.value)return Z(e.value);var l=typeof e.innerText=="string"?e.innerText:e.textContent;if(l&&l.trim())return Z(l);var u=e.querySelector&&e.querySelector("svg title");return u&&u.textContent.trim()?Z(u.textContent):null}var cu={BUTTON:"button",SELECT:"combobox",TEXTAREA:"textbox",IMG:"img",NAV:"navigation",UL:"list",OL:"list",LI:"listitem",TABLE:"table",H1:"heading",H2:"heading",H3:"heading",H4:"heading",H5:"heading",H6:"heading"};function Co(e){var t=e.getAttribute("role");if(t&&t.trim())return t.trim().split(/\s+/)[0].slice(0,40);if(e.nodeName==="A")return e.hasAttribute("href")?"link":null;if(e.nodeName==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return n==="hidden"?null:n==="checkbox"||n==="radio"?n:/^(button|submit|reset|image)$/.test(n)?"button":"textbox"}return cu[e.nodeName]||null}var fu={button:"Button",link:"Link",tab:"Tab",menuitem:"Menu item",checkbox:"Checkbox",radio:"Radio",switch:"Switch",heading:"Heading",img:"Image",textbox:"Input",combobox:"Select",listitem:"List item",navigation:"Navigation",dialog:"Dialog"},pu={P:"Paragraph",LABEL:"Label",SECTION:"Section",HEADER:"Header",FOOTER:"Footer",FORM:"Form",TABLE:"Table",VIDEO:"Video",BLOCKQUOTE:"Quote",svg:"Icon"};function Eo(e,t,n){var r=fu[t]||pu[e.nodeName];if(!r){var a=e.nodeName.toLowerCase(),i=ka(e).filter(xo)[0];r=e.id&&!Sn(e.id)?a+"#"+e.id.slice(0,60):i?a+"."+i.slice(0,60):a}return n?r+' "'+n.replace(/"/g,"'")+'"':r}function hu(e){return/^H[1-6]$/.test(e.nodeName)||e.getAttribute("role")==="heading"}function gu(e){for(var t=0;e&&t<32;t++){var n=e.getRootNode?e.getRootNode():h,r=n.nodeType===11&&!!n.host,a=e.ownerDocument||h,i=r?n:a.body;if(!i)return null;var o=a.createTreeWalker(i,NodeFilter.SHOW_ELEMENT);o.currentNode=e;for(var l=0;l<2e3;l++){var u=o.previousNode();if(!u)break;if(hu(u))return Z(u.textContent)||null}if(l>=2e3||!r)return null;e=n.host}return null}var An=300,mu=8192,Ca=["display","position","width","height","margin","padding","gap","font-family","font-size","font-weight","line-height","color","background-color","border","border-radius","box-shadow","opacity","object-fit"],vu={react:1,vue:1,svelte:1};function ft(e,t){return typeof e=="string"&&e.length<=t}function zt(e,t){return e==null||ft(e,t)}function So(e){if(!e||typeof e!="object"||Array.isArray(e)||!ft(e.label,An)||!e.label||!ft(e.tag,40)||!e.tag||!ft(e.selector,ct)||!e.selector.trim()||!zt(e.role,40)||!zt(e.name,80)||!zt(e.heading,80)||!zt(e.id,An)||!zt(e.testId,An)||e.classes!==void 0&&!(Array.isArray(e.classes)&&e.classes.length<=8&&e.classes.every(function(r){return ft(r,An)&&r.length>0})))return!1;var t=e.box;if(!t||typeof t!="object"||!se(t.x)||!se(t.y)||!se(t.w)||!se(t.h)||e.styles!==null&&e.styles!==void 0&&(typeof e.styles!="object"||Array.isArray(e.styles)||!Object.keys(e.styles).every(function(r){return Ca.indexOf(r)>=0&&ft(e.styles[r],200)})))return!1;if(e.component!==null&&e.component!==void 0){var n=e.component;if(typeof n!="object"||Array.isArray(n)||vu[n.framework]!==1||!Array.isArray(n.chain)||n.chain.length>6||!n.chain.every(function(r){return ft(r,80)&&r.length>0})||!zt(n.source,An))return!1}return!0}function _r(e){if(!So(e))return null;var t={label:e.label,tag:e.tag,role:ce(e.role),name:ce(e.name),id:ce(e.id),testId:ce(e.testId),classes:(e.classes||[]).slice(),selector:e.selector,heading:ce(e.heading),box:{x:e.box.x,y:e.box.y,w:e.box.w,h:e.box.h},styles:null,component:null};return e.styles&&(t.styles={},Ca.forEach(function(n){typeof e.styles[n]=="string"&&(t.styles[n]=e.styles[n])})),e.component&&(t.component={framework:e.component.framework,chain:e.component.chain.slice(),source:ce(e.component.source)}),JSON.stringify(t).length<=mu?t:null}function Bt(e){if(!e||e.nodeType!==1||J(e))return null;var t=e.ownerDocument||h;if(e===t.body||e===t.documentElement)return null;try{var n=Co(e),r=yr(e),a=pe(e),i=bo.filter(function(u){return e.getAttribute(u)})[0],o=jt(e);if(o.length>ct){var l=En(o);l.length<=ct&&(o=l)}return _r({label:Eo(e,n,r),tag:e.nodeName.toLowerCase(),role:n,name:r,id:e.id&&!Sn(e.id)?e.id:null,testId:i?e.getAttribute(i):null,classes:ka(e),selector:o,heading:gu(e),box:{x:Math.round(a.x),y:Math.round(a.y),w:Math.round(a.w),h:Math.round(a.h)},styles:xi.styles?wu(e):null,component:xi.components?Mu(e):null})}catch(u){return null}}var xu="a, button, input, select, textarea, label, summary, [role], [tabindex], [contenteditable]";function wr(e){var t=e&&e.nodeType===1?e:e&&e.parentElement;if(!t||J(t))return null;for(;t.ownerSVGElement;)t=t.ownerSVGElement;for(var n=t.ownerDocument||h,r=t,a=0;r&&r!==n.body&&a<=4;r=Ln(r),a++)try{if(r.matches(xu))return r}catch(i){break}return t===n.body||t===n.documentElement?null:t}function bu(e,t,n,r,a){if(a=a||h,a!==h){var i=Xa(a);e-=i.x,t-=i.y}if(!a.elementsFromPoint)return null;for(var o=null,l=1/0,u=[],p=e+n/2,f=t+r/2,g=Array.prototype.slice.call(a.elementsFromPoint(p,f)),y=[],w=0;w<g.length;w++)if(!J(g[w])){for(var b=g[w];b.shadowRoot&&b.shadowRoot.elementFromPoint&&y.length<32;){var T=b.shadowRoot.elementFromPoint(p,f);if(!T||T===b)break;y.unshift(T),b=T}break}return y.concat(g).forEach(function(C){for(var A=C;A&&A!==a.body&&A!==a.documentElement&&!(u.indexOf(A)>=0||J(A));A=Ln(A)){u.push(A);var M=A.getBoundingClientRect();if(M.left<=e+1&&M.top<=t+1&&M.right>=e+n-1&&M.bottom>=t+r-1){M.width*M.height<l&&(o=A,l=M.width*M.height);break}}}),o}function Ao(e,t){return!e||e.nodeName.toLowerCase()!==t.tag?!1:!t.name||yr(e)===t.name}function To(e,t){if(!e.name||!t)return null;var n;try{n=t.querySelectorAll(e.tag)}catch(i){return null}if(n.length>500)return null;for(var r=null,a=0;a<n.length;a++)if(!(J(n[a])||yr(n[a])!==e.name)){if(r)return null;r=n[a]}return r}var Tn=0,pt=Object.create(null);function Ft(){Tn++}function Ea(e){delete pt[e];for(var t=0;t<Fr;t++)delete pt[e+":"+t]}function ht(e,t){var n=e.geom&&e.geom.selectors?e.geom.selectors[t]:null,r=e.targets?e.targets[t]:null;if(!n)return null;if(!r||r.selector!==n&&En(n)!==r.selector)return Dt(n);var a=e.id+":"+t,i=c.enabled?pt[a]:null;if(i&&i.gen===Tn&&i.selector===n&&(i.node===null||i.node.isConnected))return i.node;var o=Dt(n);return ko(En(n))?o=o&&o.nodeName.toLowerCase()===r.tag?o:null:Ao(o,r)||(o=To(r,ho(n))),c.enabled&&(pt[a]={gen:Tn,selector:n,node:o}),o}function yu(e,t){return typeof t=="string"&&e.length>ct&&Cn(e).length>1&&En(e)===t}function Ht(e){var t=e.geom,n=e.target;if(!t||!t.selector)return null;if(!n||t.selector!==n.selector&&!yu(t.selector,n.selector))return Dt(t.selector);var r=c.enabled?pt[e.id]:null;if(r&&r.gen===Tn&&r.selector===t.selector&&(r.node===null||r.node.isConnected))return r.node;var a=Dt(t.selector);return ko(En(t.selector))?a=a&&a.nodeName.toLowerCase()===n.tag?a:null:Ao(a,n)||(a=To(n,ho(t.selector))),c.enabled&&(pt[e.id]={gen:Tn,selector:t.selector,node:a}),a}function Io(e){if(Array.isArray(e)&&(e=e.join(",")),e==null||String(e).trim()==="")return{styles:!0,components:!0};var t=String(e).trim().toLowerCase();if(t==="off"||t==="none")return{styles:!1,components:!1};var n=t.split(/[\s,]+/);return{styles:n.indexOf("styles")>=0,components:n.indexOf("components")>=0}}function _u(e){return e.styles&&e.components?"styles,components":e.styles?"styles":e.components?"components":"off"}function wu(e){var t=e.ownerDocument&&e.ownerDocument.defaultView||m,n=t.getComputedStyle(e),r={};return Ca.forEach(function(a){if(!(a==="object-fit"&&!/^(IMG|VIDEO)$/.test(e.nodeName))){var i=n.getPropertyValue(a);i&&(r[a]=String(i).slice(0,200))}}),r}var Lo=["/src/","/app/","/pages/","/components/","/lib/"];function Oo(e){return e.replace(/\\/g,"/").replace(/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i,"").replace(/[?#].*$/,"")}function ku(e){if(typeof e!="string"||!e)return null;var t=Oo(e);if(t.indexOf("/node_modules/")>=0)return null;t.charAt(0)!=="/"&&(t="/"+t);for(var n=0;n<Lo.length;n++){var r=t.indexOf(Lo[n]);if(r>=0)return t.slice(r+1)}var a=t.split("/").filter(Boolean);return a.length?a.slice(-3).join("/"):null}function In(e,t,n){var r=ku(e);if(!r)return null;var a=r+(t?":"+t+(n?":"+n:""):"");return a.length>300?null:a}function Sa(e){return String(e).replace(/\\/g,"/").split("/").pop().replace(/\.[^.]+$/,"")}function kr(e,t){t&&typeof t=="string"&&/^[A-Z]/.test(t)&&e[e.length-1]!==t&&e.push(t.slice(0,80))}function Cr(e,t,n){return!t.length&&!n?null:{framework:e,chain:t.slice(0,6).reverse(),source:n||null}}var Cu=/^(Fragment|StrictMode|Suspense|Profiler|.*Provider|.*Consumer|.*Context|.*Boundary|.*Router|Routes?|Outlet|RenderedRoute|Navigate|Link|HotReload|AppRouter|ServerRoot|Root|InnerLayoutRouter|OuterLayoutRouter|RenderFromTemplateContext|ScrollAndFocusHandler|LoadingBoundary|RedirectBoundary|NotFoundBoundary|DevRootHTTPAccessFallbackBoundary)$/;function Eu(e){for(var t=e,n=0;t&&n<=10;t=t.parentElement,n++)for(var r=Object.keys(t),a=0;a<r.length;a++)if(r[a].indexOf("__reactFiber$")===0||r[a].indexOf("__reactInternalInstance$")===0)return t[r[a]];return null}function Su(e){for(var t=null,n=0;n<4&&e&&typeof e=="object";n++){if(typeof e.displayName=="string"){t=e.displayName;break}e=e.render||e.type}return!t&&typeof e=="function"&&(t=e.displayName||e.name),t&&/^[A-Z]/.test(t)&&!Cu.test(t)?t:null}var Au=/\/node_modules\/|\/@vite\/|\/@react-refresh|\/\.vite\/deps\/|\/react(?:-dom)?(?:[.@][^\/]*)?\.js$/;function Tu(e){var t=e._debugSource;if(t&&t.fileName)return In(t.fileName,t.lineNumber,t.columnNumber);var n=e._debugStack&&e._debugStack.stack;if(typeof n!="string")return null;for(var r=n.split(`
|
|
3
|
+
`),a=0;a<r.length;a++){var i=/((?:https?|file):\/\/[^\s()]+?):(\d+):(\d+)\)?\s*$/.exec(r[a]);if(!(!i||Au.test(Oo(i[1]))))return In(i[1],i[2],i[3])}return null}function Iu(e){var t=Eu(e);if(!t||typeof t!="object"||!("_debugOwner"in t))return null;for(var n=[],r=t,a=0;r&&a<200;r=r.return,a++)kr(n,Su(r.type));return Cr("react",n,Tu(t))}var Mo=/^(RouterView|RouterLink|Transition|TransitionGroup|KeepAlive|Teleport|Suspense|BaseTransition)$/;function Lu(e){var t=[],n=null,r,a;for(r=e,a=0;r&&a<=10;r=r.parentElement,a++){var i=r.__vueParentComponent;if(i){for(var o=0;i&&o<200;i=i.parent,o++){var l=i.type||{};!n&&l.__file&&(n=In(l.__file));var u=l.name||l.__name||(l.__file?Sa(l.__file):null);Mo.test(u||"")||kr(t,u)}return Cr("vue",t,n)}var p=r.__vue__;if(p){for(var f=0;p&&f<200;p=p.$parent,f++){var g=p.$options||{};!n&&g.__file&&(n=In(g.__file));var y=g.name||(g.__file?Sa(g.__file):null);Mo.test(y||"")||kr(t,y)}return Cr("vue",t,n)}}return null}function Ou(e){for(var t=e,n=0;t&&n<=10;t=t.parentElement,n++){var r=t.__svelte_meta;if(!(!r||!r.loc||!r.loc.file)){for(var a=[],i=r,o=0;i&&o<200;i=i.parent,o++){var l=i.loc&&i.loc.file||i.file;kr(a,i.componentTag||(l?Sa(l):null))}return Cr("svelte",a,In(r.loc.file,r.loc.line,r.loc.column))}}return null}function Mu(e){for(var t=[Iu,Lu,Ou],n=0;n<t.length;n++)try{var r=t[n](e);if(r)return r}catch(a){}return null}var Pu=/^(https?|vscode|vscode-insiders|cursor|idea|webstorm|zed|subl|txmt):/i;function Ru(e){if(!k.editorUrl||!e)return null;var t=/^(.*?)(?::(\d+))?(?::(\d+))?$/.exec(e),n=t[1].split("/").map(encodeURIComponent).join("/"),r=k.editorUrl.replace(/\{(path|line|column)\}/g,function(a,i){return i==="path"?n:i==="line"?t[2]||"1":t[3]||"1"});return Pu.test(r)?r:null}function Po(e){var t=Ru(e),n=t?s("a",{class:"an-editor",href:t,text:"Open in editor"}):null;return n&&/^https?:/i.test(t)&&(n.target="_blank",n.rel="noopener noreferrer"),n}var Aa={};function Ro(e,t){var n=s("details",{class:"an-elem"});return Aa[e.id]&&(n.open=!0),v(n,"click",function(r){r.stopPropagation()}),v(n,"toggle",function(){n.open?Aa[e.id]=!0:delete Aa[e.id]}),n.appendChild(s("summary",{text:t})),n}function Nu(e){var t=e.target,n=Ro(e,"Element");function r(i,o){n.appendChild(s("div",{class:"an-erow"},[s("b",{text:i})].concat(o)))}if(r("Selector",[s("code",{text:t.selector}),s("button",{class:"an-mini","data-action":"copy-selector",title:"Copy selector","aria-label":"Copy selector",html:S.copy,onclick:function(){je(t.selector,"Selector copied")}})]),t.classes.length&&r("Classes",[s("code",{text:t.classes.join(" ")})]),t.component&&t.component.chain.length&&r("Component",[s("code",{text:t.component.chain.map(function(i){return"<"+i+">"}).join(" ")})]),t.component&&t.component.source&&r("Source",[s("code",{text:t.component.source}),Po(t.component.source)]),t.styles&&Object.keys(t.styles).length){var a=s("div",{class:"an-styles"});Object.keys(t.styles).forEach(function(i){a.appendChild(s("span",{text:i})),a.appendChild(s("code",{text:t.styles[i]}))}),r("Styles",[a])}return n}function Du(e){var t=Ro(e,"Elements");return e.geom.selectors.forEach(function(n,r){var a=e.targets?e.targets[r]:null,i=!!ht(e,r),o=a?a.label:n,l=s("span",{class:"an-mnum",text:String(r+1)});l.style.background=e.color;var u=s("button",{type:"button",class:"an-mrow","data-member":String(r+1),title:n,"aria-label":"Show element "+(r+1)+": "+o+(i?"":" (missing)")},[l,s("span",{class:"an-mlabel",text:o}),i?null:s("span",{class:"an-mmiss",text:"(missing)"})]);i?v(u,"click",function(){Ju(e,r)}):u.setAttribute("aria-disabled","true"),t.appendChild(s("div",{class:"an-erow an-mitem"},[u,a&&a.component&&a.component.source?Po(a.component.source):null]))}),t}function Ta(e){function t(){return Array.prototype.slice.call(e.querySelectorAll("button:not([disabled]),input:not([disabled]),textarea:not([disabled]),[tabindex]")).filter(function(r){return r.offsetParent!==null})}function n(r){if(r.key==="Tab"){var a=t();if(a.length){var i=a[0],o=a[a.length-1];r.shiftKey?h.activeElement===i&&(r.preventDefault(),o.focus()):h.activeElement===o&&(r.preventDefault(),i.focus())}}}return v(e,"keydown",n),function(){e.removeEventListener("keydown",n)}}function J(e){for(;e;){if(e.id&&String(e.id).indexOf("__an")===0)return!0;e=e.nodeType===11&&e.host?e.host:e.parentNode}return!1}function Ut(e){var t=e.composedPath?e.composedPath():null,n=t&&t.length?t[0]:e.target;return n&&n.nodeType===3&&(n=n.parentNode),n&&n.nodeType===1?n:e.target}function Ln(e){if(!e)return null;if(e.parentElement)return e.parentElement;var t=e.parentNode;return t&&t.nodeType===11&&t.host?t.host:null}var ju=`
|
|
4
|
+
#__an_host {
|
|
5
|
+
--an-font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
|
|
6
|
+
--an-surface: #ffffff;
|
|
7
|
+
--an-surface-2: #f6f6f8;
|
|
8
|
+
--an-glass: rgba(255,255,255,.85);
|
|
9
|
+
--an-fg: #17171f;
|
|
10
|
+
--an-muted: #84848f;
|
|
11
|
+
--an-border: rgba(22,22,34,.09);
|
|
12
|
+
--an-border-strong: rgba(22,22,34,.16);
|
|
13
|
+
--an-btn-bg: #17171f;
|
|
14
|
+
--an-btn-fg: #ffffff;
|
|
15
|
+
--an-danger: #e11d48;
|
|
16
|
+
--an-ok: #10b981;
|
|
17
|
+
--an-shadow-sm: 0 2px 10px rgba(18,18,32,.10);
|
|
18
|
+
--an-shadow-md: 0 8px 30px rgba(18,18,32,.14);
|
|
19
|
+
--an-shadow-lg: 0 18px 60px rgba(18,18,32,.20);
|
|
20
|
+
--an-ring: 0 0 0 3px rgba(99,102,241,.25);
|
|
21
|
+
}
|
|
22
|
+
#__an_host.an-dark {
|
|
23
|
+
--an-surface: #1e1e26;
|
|
24
|
+
--an-surface-2: #28282f;
|
|
25
|
+
--an-glass: rgba(30,30,38,.86);
|
|
26
|
+
--an-fg: #ededf2;
|
|
27
|
+
--an-muted: #9d9da8;
|
|
28
|
+
--an-border: rgba(255,255,255,.10);
|
|
29
|
+
--an-border-strong: rgba(255,255,255,.20);
|
|
30
|
+
--an-btn-bg: #ededf2;
|
|
31
|
+
--an-btn-fg: #17171f;
|
|
32
|
+
--an-shadow-sm: 0 2px 10px rgba(0,0,0,.35);
|
|
33
|
+
--an-shadow-md: 0 8px 30px rgba(0,0,0,.45);
|
|
34
|
+
--an-shadow-lg: 0 18px 60px rgba(0,0,0,.55);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#__an_root, #__an_root *, #__an_compose, #__an_compose *,
|
|
38
|
+
#__an_toasts, #__an_toasts *, #__an_namewrap, #__an_namewrap *,
|
|
39
|
+
#__an_sharewrap, #__an_sharewrap *, #__an_launch, #__an_launch *,
|
|
40
|
+
#__an_plus, #__an_plus *, #__an_groupbar, #__an_groupbar * { box-sizing: border-box; }
|
|
41
|
+
|
|
42
|
+
.an-highlight.an-active { stroke: var(--an-fg); stroke-width: 1; }
|
|
43
|
+
|
|
44
|
+
#__an_overlay { position: absolute; top:0; left:0; pointer-events:none;
|
|
45
|
+
z-index: 2147483000; overflow: visible; }
|
|
46
|
+
#__an_overlay .an-hit { pointer-events: stroke; cursor: pointer; }
|
|
47
|
+
|
|
48
|
+
.an-pin { position:absolute; width:26px; height:26px; margin:-13px 0 0 -13px;
|
|
49
|
+
border-radius: 50% 50% 50% 2px; transform: rotate(45deg);
|
|
50
|
+
display:flex; align-items:center; justify-content:center; cursor:pointer;
|
|
51
|
+
color:#fff; font:600 12px/1 var(--an-font);
|
|
52
|
+
box-shadow: 0 4px 14px rgba(0,0,0,.28); z-index: 2147483100;
|
|
53
|
+
border: 2px solid rgba(255,255,255,.85);
|
|
54
|
+
transition: transform .15s cubic-bezier(.34,1.56,.64,1);
|
|
55
|
+
animation: an-drop .25s cubic-bezier(.34,1.56,.64,1); }
|
|
56
|
+
@keyframes an-drop { from { transform: rotate(45deg) scale(.4); opacity:0 }
|
|
57
|
+
to { transform: rotate(45deg) scale(1); opacity:1 } }
|
|
58
|
+
.an-pin span { transform: rotate(-45deg); }
|
|
59
|
+
.an-pin:hover { transform: rotate(45deg) scale(1.14); }
|
|
60
|
+
.an-pin.an-active { outline: 3px solid rgba(0,0,0,.18); }
|
|
61
|
+
/* Centred on its member's corner: 26px plus a 2px border each side. */
|
|
62
|
+
.an-pin.an-group { margin:-15px 0 0 -15px; }
|
|
63
|
+
.an-pin:focus-visible { outline: 3px solid #4f46e5; outline-offset: 2px; }
|
|
64
|
+
#__an_overlay [tabindex]:focus-visible, .an-block-tab:focus-visible {
|
|
65
|
+
outline: 3px solid #4f46e5; outline-offset: 2px; }
|
|
66
|
+
|
|
67
|
+
.an-avatar { width:22px; height:22px; border-radius:50%; flex:none;
|
|
68
|
+
display:inline-flex; align-items:center; justify-content:center;
|
|
69
|
+
color:#fff; font:600 9px/1 var(--an-font); letter-spacing:.02em; }
|
|
70
|
+
|
|
71
|
+
/* ---- toolbar ----------------------------------------------------------- */
|
|
72
|
+
#__an_bar { position: fixed; bottom: 18px; z-index: 2147483200;
|
|
73
|
+
display:flex; flex-direction:column; gap:6px; align-items:center;
|
|
74
|
+
background: var(--an-glass); backdrop-filter: blur(16px) saturate(1.5);
|
|
75
|
+
-webkit-backdrop-filter: blur(16px) saturate(1.5);
|
|
76
|
+
padding: 8px; border-radius: 18px;
|
|
77
|
+
box-shadow: var(--an-shadow-md), 0 1px 0 rgba(255,255,255,.55) inset;
|
|
78
|
+
border: 1px solid var(--an-border);
|
|
79
|
+
font-family: var(--an-font);
|
|
80
|
+
animation: an-rise .3s cubic-bezier(.34,1.4,.64,1); }
|
|
81
|
+
@keyframes an-rise { from { transform: translateY(14px); opacity:0 }
|
|
82
|
+
to { transform: translateY(0); opacity:1 } }
|
|
83
|
+
#__an_bar.an-right { right: 18px; transition: right .3s cubic-bezier(.32,.72,.28,1); }
|
|
84
|
+
#__an_bar.an-left { left: 18px; }
|
|
85
|
+
.an-grip { width:40px; height:14px; padding:0; margin-bottom:-2px; border:none; border-radius:7px;
|
|
86
|
+
background:transparent; color: var(--an-muted); cursor:grab; touch-action:none;
|
|
87
|
+
display:flex; align-items:center; justify-content:center; }
|
|
88
|
+
.an-grip:hover, .an-grip:focus-visible { background: var(--an-surface-2); color: var(--an-fg); }
|
|
89
|
+
.an-grip svg { width:18px; height:8px; }
|
|
90
|
+
#__an_bar.an-dragging, #__an_bar.an-dragging * { cursor:grabbing !important; transition:none !important; }
|
|
91
|
+
/* A moved bar never slides: the corner bar's right-edge transition is for the panel. */
|
|
92
|
+
#__an_bar.an-moved, #__an_bar.an-snap { transition:none !important; }
|
|
93
|
+
.an-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);
|
|
94
|
+
clip-path:inset(50%); white-space:nowrap; margin:-1px; padding:0; border:0; }
|
|
95
|
+
@media (min-width: 641px) {
|
|
96
|
+
#__an_root.an-popen #__an_bar.an-right { right: 398px; }
|
|
97
|
+
}
|
|
98
|
+
.an-btn { width:40px; height:40px; border:none; border-radius:12px;
|
|
99
|
+
background: transparent; cursor:pointer; display:flex; align-items:center;
|
|
100
|
+
justify-content:center; color: var(--an-fg); position:relative;
|
|
101
|
+
transition: background .15s, transform .1s, color .15s; }
|
|
102
|
+
.an-btn:hover { background: rgba(127,127,140,.14); }
|
|
103
|
+
.an-btn:active { transform: scale(.92); }
|
|
104
|
+
.an-btn.an-on { background: var(--an-btn-bg); color: var(--an-btn-fg);
|
|
105
|
+
box-shadow: 0 4px 12px rgba(0,0,0,.22); }
|
|
106
|
+
.an-btn svg { width:20px; height:20px; }
|
|
107
|
+
.an-btn[data-tip]:hover::after { content: attr(data-tip);
|
|
108
|
+
position:absolute; top:50%; transform:translateY(-50%);
|
|
109
|
+
background:#17171f; color:#fff; font:500 12px var(--an-font); padding:6px 10px;
|
|
110
|
+
border-radius:8px; white-space:pre; pointer-events:none;
|
|
111
|
+
box-shadow: var(--an-shadow-sm); z-index: 5; }
|
|
112
|
+
#__an_bar.an-right .an-btn[data-tip]:hover::after { right:50px; }
|
|
113
|
+
#__an_bar.an-left .an-btn[data-tip]:hover::after { left:50px; }
|
|
114
|
+
.an-sep { width:24px; height:1px; background: var(--an-border-strong); margin:1px 0; }
|
|
115
|
+
.an-count { position:absolute; top:-3px; right:-3px; min-width:17px; height:17px;
|
|
116
|
+
padding:0 4px; background:#f43f5e; color:#fff; border-radius:9px;
|
|
117
|
+
font-size:10px; font-weight:700; display:flex; align-items:center;
|
|
118
|
+
justify-content:center; border:2px solid var(--an-surface); }
|
|
119
|
+
|
|
120
|
+
/* ---- color picker ------------------------------------------------------ */
|
|
121
|
+
#__an_colorbtn { width:40px; height:40px; border:none; border-radius:12px;
|
|
122
|
+
background:transparent; cursor:pointer; display:flex; align-items:center;
|
|
123
|
+
justify-content:center; position:relative; transition:background .15s; }
|
|
124
|
+
#__an_colorbtn:hover { background:rgba(127,127,140,.14); }
|
|
125
|
+
#__an_colorbtn .an-swdot { width:21px; height:21px; border-radius:50%;
|
|
126
|
+
border:2px solid var(--an-surface);
|
|
127
|
+
box-shadow:0 1px 4px rgba(0,0,0,.28), 0 0 0 1px var(--an-border); }
|
|
128
|
+
#__an_colorpop { position:absolute; z-index:2147483210;
|
|
129
|
+
background: var(--an-glass); backdrop-filter:blur(16px) saturate(1.5);
|
|
130
|
+
-webkit-backdrop-filter:blur(16px) saturate(1.5);
|
|
131
|
+
border:1px solid var(--an-border); border-radius:16px; padding:9px;
|
|
132
|
+
box-shadow: var(--an-shadow-md); display:none; gap:8px; }
|
|
133
|
+
#__an_bar.an-right #__an_colorpop { right:52px; }
|
|
134
|
+
#__an_bar.an-left #__an_colorpop { left:52px; }
|
|
135
|
+
#__an_colorpop.an-show { display:flex; }
|
|
136
|
+
|
|
137
|
+
/* ---- settings ---------------------------------------------------------- */
|
|
138
|
+
.an-setwrap { position:relative; display:flex; }
|
|
139
|
+
#__an_settings { position:absolute; bottom:0; z-index:2147483210; width:300px; box-sizing:border-box;
|
|
140
|
+
background: var(--an-glass); backdrop-filter:blur(16px) saturate(1.5);
|
|
141
|
+
-webkit-backdrop-filter:blur(16px) saturate(1.5); color: var(--an-fg);
|
|
142
|
+
border:1px solid var(--an-border); border-radius:16px; padding:14px 16px;
|
|
143
|
+
box-shadow: var(--an-shadow-md); display:none; font:400 13px/1.45 var(--an-font); text-align:left; }
|
|
144
|
+
#__an_bar.an-right #__an_settings { right:52px; }
|
|
145
|
+
#__an_bar.an-left #__an_settings { left:52px; }
|
|
146
|
+
#__an_settings.an-show { display:block; }
|
|
147
|
+
.an-set-h { margin:0 0 10px; font:600 14px/1.3 var(--an-font); }
|
|
148
|
+
.an-set-sec { border-top:1px solid var(--an-border); padding-top:10px; }
|
|
149
|
+
.an-set-title { display:flex; align-items:center; justify-content:space-between; gap:8px; font-weight:600; }
|
|
150
|
+
.an-set-status { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:500; color: var(--an-muted); }
|
|
151
|
+
.an-set-dot { width:8px; height:8px; border-radius:50%; background: var(--an-muted); }
|
|
152
|
+
.an-set-status[data-state="connected"] .an-set-dot { background: var(--an-ok); }
|
|
153
|
+
.an-set-status[data-state="connecting"] .an-set-dot { background:#f59e0b; }
|
|
154
|
+
.an-set-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:10px; }
|
|
155
|
+
.an-set-note { margin:8px 0 0; color: var(--an-muted); font-size:12px; }
|
|
156
|
+
.an-set-note code, .an-set-cmd code { font:12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
|
157
|
+
.an-set-cmd { display:flex; gap:8px; align-items:flex-start; margin-top:6px; padding:8px;
|
|
158
|
+
border-radius:10px; background: var(--an-surface-2); }
|
|
159
|
+
.an-set-cmd code { flex:1; min-width:0; overflow-wrap:anywhere; }
|
|
160
|
+
.an-set-copy { border:none; border-radius:8px; padding:4px 8px; background: var(--an-btn-bg);
|
|
161
|
+
color: var(--an-btn-fg); font:600 12px var(--an-font); cursor:pointer; }
|
|
162
|
+
.an-set-link { display:inline-block; margin-top:8px; color:inherit; font-weight:600; font-size:12px; }
|
|
163
|
+
.an-set-help[hidden] { display:none; }
|
|
164
|
+
.an-set-connect { margin-top:8px; padding:6px 10px; }
|
|
165
|
+
#__an_root.an-checking #__an_bar .an-btn[data-tool] { opacity:.45; pointer-events:none; }
|
|
166
|
+
.an-sw { width:24px; height:24px; border-radius:50%; cursor:pointer;
|
|
167
|
+
border:2px solid var(--an-surface);
|
|
168
|
+
box-shadow:0 1px 4px rgba(0,0,0,.25), 0 0 0 1px var(--an-border);
|
|
169
|
+
transition: transform .12s; }
|
|
170
|
+
.an-sw:hover { transform: scale(1.18); }
|
|
171
|
+
.an-sw.an-on { transform: scale(1.18); box-shadow:0 0 0 2px var(--an-btn-bg), 0 1px 4px rgba(0,0,0,.3); }
|
|
172
|
+
|
|
173
|
+
/* ---- side panel (floating, Figma-style) -------------------------------- */
|
|
174
|
+
#__an_panel { position: fixed; top:12px; right:12px; bottom:12px; width:374px;
|
|
175
|
+
max-width: calc(100vw - 24px); background: var(--an-surface); z-index:2147483150;
|
|
176
|
+
border:1px solid var(--an-border); border-radius:18px;
|
|
177
|
+
box-shadow: var(--an-shadow-lg); transform: translateX(calc(100% + 26px));
|
|
178
|
+
transition: transform .3s cubic-bezier(.32,.72,.28,1); display:flex;
|
|
179
|
+
flex-direction:column; font-family: var(--an-font); color: var(--an-fg);
|
|
180
|
+
overflow:hidden; }
|
|
181
|
+
#__an_panel.an-open { transform: translateX(0); }
|
|
182
|
+
.an-ph { padding:16px 18px 12px; display:flex; align-items:center; gap:10px; }
|
|
183
|
+
.an-ph h2 { margin:0; font:700 15px/1.2 var(--an-font); letter-spacing:-.01em; }
|
|
184
|
+
.an-ph .an-pcount { font-size:11px; font-weight:600; color: var(--an-muted);
|
|
185
|
+
background: var(--an-surface-2); border-radius:10px; padding:2px 8px; }
|
|
186
|
+
.an-x { border:none; background: var(--an-surface-2); width:28px; height:28px;
|
|
187
|
+
border-radius:8px; cursor:pointer; font-size:16px; color: var(--an-muted);
|
|
188
|
+
display:flex; align-items:center; justify-content:center; margin-left:auto;
|
|
189
|
+
transition: background .15s, color .15s; }
|
|
190
|
+
.an-x:hover { background: var(--an-border); color: var(--an-fg); }
|
|
191
|
+
.an-ph .an-x { margin-left:0; }
|
|
192
|
+
.an-hbtn { border:none; background:transparent; width:28px; height:28px; padding:5px;
|
|
193
|
+
border-radius:8px; cursor:pointer; color: var(--an-muted); display:flex;
|
|
194
|
+
align-items:center; justify-content:center; transition: background .15s, color .15s; }
|
|
195
|
+
.an-hgap { flex:1; }
|
|
196
|
+
.an-hbtn:hover { background: var(--an-surface-2); color: var(--an-fg); }
|
|
197
|
+
.an-hbtn svg { width:16px; height:16px; }
|
|
198
|
+
.an-toolsrow { padding:0 18px 12px; display:flex; flex-direction:column; gap:9px;
|
|
199
|
+
border-bottom:1px solid var(--an-border); }
|
|
200
|
+
.an-search { position:relative; }
|
|
201
|
+
.an-search svg { position:absolute; left:10px; top:50%; transform:translateY(-50%);
|
|
202
|
+
width:14px; height:14px; color: var(--an-muted); pointer-events:none; }
|
|
203
|
+
.an-search input { width:100%; border:1px solid var(--an-border);
|
|
204
|
+
background: var(--an-surface-2); border-radius:10px; padding:8px 10px 8px 31px;
|
|
205
|
+
font:13px var(--an-font); outline:none; color: var(--an-fg); transition:border-color .15s; }
|
|
206
|
+
.an-search input:focus { border-color: var(--an-border-strong); }
|
|
207
|
+
.an-filters { display:flex; gap:6px; }
|
|
208
|
+
.an-chip { padding:4px 11px; border-radius:20px; border:1px solid var(--an-border);
|
|
209
|
+
background: var(--an-surface); cursor:pointer; color: var(--an-muted);
|
|
210
|
+
font:500 12px var(--an-font); transition: all .15s; }
|
|
211
|
+
.an-chip:hover { border-color: var(--an-border-strong); color: var(--an-fg); }
|
|
212
|
+
.an-chip.an-on { background: var(--an-btn-bg); color: var(--an-btn-fg);
|
|
213
|
+
border-color: var(--an-btn-bg); }
|
|
214
|
+
.an-mlist { margin-top:4px; max-height:180px; overflow:auto; border:1px solid var(--an-border-strong); border-radius:8px; background:var(--an-surface); box-shadow:var(--an-shadow-sm); }
|
|
215
|
+
.an-mopt { display:flex; align-items:center; gap:8px; padding:6px 10px; font-size:13px; cursor:pointer; color:var(--an-fg); }
|
|
216
|
+
.an-mopt.an-on, .an-mopt:hover { background:var(--an-border); }
|
|
217
|
+
.an-mtag { margin-left:auto; font-size:11px; color:var(--an-muted); }
|
|
218
|
+
.an-mention { font-weight:600; border-radius:4px; padding:0 3px; background:rgba(229,72,77,.10); }
|
|
219
|
+
.an-mention.an-me { background:rgba(229,72,77,.22); color:#c9363b; }
|
|
220
|
+
.an-mcount { background:#e5484d; color:#fff; }
|
|
221
|
+
.an-mention-item { padding:10px 12px; border:1px solid var(--an-border); border-radius:10px; margin-bottom:8px; display:flex; flex-direction:column; gap:6px; }
|
|
222
|
+
.an-mention-item .an-mini { align-self:flex-start; text-decoration:none; }
|
|
223
|
+
.an-mwhere { font-size:12px; color:var(--an-muted); }
|
|
224
|
+
.an-pback { border:none; background: var(--an-surface-2); height:28px; border-radius:8px; color: var(--an-fg);
|
|
225
|
+
font:600 12px var(--an-font); display:flex; align-items:center; gap:4px; padding:0 10px 0 6px; cursor:pointer; }
|
|
226
|
+
.an-pback svg { width:16px; height:16px; }
|
|
227
|
+
.an-people { display:flex; flex-direction:column; gap:10px; padding:2px 2px 8px; }
|
|
228
|
+
.an-pinvite { width:100%; display:flex; align-items:center; justify-content:center; gap:6px; padding:9px 14px; font-size:13px; }
|
|
229
|
+
.an-psect { display:flex; align-items:center; gap:8px; font:600 11px var(--an-font); color: var(--an-muted);
|
|
230
|
+
text-transform:uppercase; letter-spacing:.06em; padding:6px 2px 0; }
|
|
231
|
+
.an-psect::after { content:""; flex:1; height:1px; background: var(--an-border); }
|
|
232
|
+
.an-prow { position:relative; border-bottom:1px solid var(--an-border); }
|
|
233
|
+
.an-person { display:flex; align-items:center; gap:10px; padding:9px 4px; }
|
|
234
|
+
.an-person.an-inactive { opacity:.62; }
|
|
235
|
+
.an-pwho { flex:1; min-width:0; }
|
|
236
|
+
.an-pname { font:600 13px/1.3 var(--an-font); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
|
|
237
|
+
.an-pmeta { font-size:12px; color: var(--an-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
|
238
|
+
.an-pmeta .an-psoon { color:#d97706; }
|
|
239
|
+
.an-prole { font:600 10.5px var(--an-font); border-radius:6px; padding:1px 6px; background: var(--an-surface-2); color: var(--an-muted); }
|
|
240
|
+
.an-prole.an-prole-author { background:rgba(99,102,241,.14); color:#6366f1; }
|
|
241
|
+
.an-pyou { font:600 10.5px var(--an-font); color: var(--an-muted); }
|
|
242
|
+
.an-ibtn { border:none; background:transparent; width:28px; height:28px; padding:6px; border-radius:8px; color: var(--an-muted);
|
|
243
|
+
display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; }
|
|
244
|
+
.an-ibtn:hover, .an-ibtn[aria-expanded="true"] { background: var(--an-surface-2); color: var(--an-fg); }
|
|
245
|
+
.an-ibtn svg { width:16px; height:16px; }
|
|
246
|
+
.an-ibtn-gap { width:28px; flex:none; }
|
|
247
|
+
.an-pmenu { position:absolute; right:4px; top:42px; z-index:5; width:170px; background: var(--an-surface);
|
|
248
|
+
border:1px solid var(--an-border-strong); border-radius:12px; box-shadow: var(--an-shadow-lg); padding:5px;
|
|
249
|
+
display:flex; flex-direction:column; }
|
|
250
|
+
.an-pmenu .an-mitem { display:block; width:100%; text-align:left; border:0; background:transparent; color: var(--an-fg);
|
|
251
|
+
font:500 12.5px var(--an-font); padding:8px 10px; border-radius:8px; cursor:pointer; }
|
|
252
|
+
.an-pmenu .an-mitem:hover, .an-pmenu .an-mitem:focus-visible { background: var(--an-surface-2); outline:none; }
|
|
253
|
+
.an-pmenu .an-mitem.an-pdanger { color: var(--an-danger); }
|
|
254
|
+
.an-pconfirm { background:rgba(99,102,241,.06); border:1px solid var(--an-border-strong); border-radius:12px;
|
|
255
|
+
padding:10px 11px; margin:2px 0 8px; font-size:12.5px; line-height:1.45; }
|
|
256
|
+
.an-pconfirm.an-pconfirm-danger { background:rgba(225,29,72,.06); border-color:rgba(225,29,72,.25); }
|
|
257
|
+
.an-pbtns { display:flex; gap:8px; justify-content:flex-end; margin-top:8px; }
|
|
258
|
+
.an-primary.an-pdanger-btn { background: var(--an-danger); color:#fff; }
|
|
259
|
+
.an-psmall { padding:5px 10px; font-size:12px; flex:none; }
|
|
260
|
+
.an-pform { border:1px solid var(--an-border); border-radius:14px; padding:12px 13px; display:flex; flex-direction:column; margin:0; }
|
|
261
|
+
.an-pform label, .an-pform .an-plabel { display:block; font:600 12px var(--an-font); margin:0 0 5px; color: var(--an-fg); }
|
|
262
|
+
.an-pform .an-popt { font-weight:500; color: var(--an-muted); }
|
|
263
|
+
.an-pform .an-input { margin-bottom:11px; }
|
|
264
|
+
.an-pform .an-input[aria-invalid="true"] { border-color: var(--an-danger); margin-bottom:4px; }
|
|
265
|
+
.an-pferr { color: var(--an-danger); font-size:12px; margin:0 0 10px; }
|
|
266
|
+
.an-pseg { display:flex; gap:2px; padding:3px; border-radius:10px; background: var(--an-surface-2); margin-bottom:5px; }
|
|
267
|
+
.an-pseg .an-segbtn { flex:1; border:0; background:transparent; color: var(--an-muted); font:600 12.5px var(--an-font);
|
|
268
|
+
padding:6px 0; border-radius:8px; cursor:pointer; }
|
|
269
|
+
.an-pseg .an-segbtn.an-on { background: var(--an-surface); color: var(--an-fg); box-shadow: var(--an-shadow-sm); }
|
|
270
|
+
.an-phelp { font-size:11.5px; color: var(--an-muted); margin:0 0 11px; line-height:1.4; }
|
|
271
|
+
.an-pfbtns { display:flex; gap:8px; justify-content:flex-end; }
|
|
272
|
+
.an-pready { border:1px solid rgba(16,185,129,.35); background:rgba(16,185,129,.07); border-radius:14px; padding:12px 13px; }
|
|
273
|
+
.an-pready-t { font:600 13px var(--an-font); display:flex; align-items:center; gap:6px; margin-bottom:8px; }
|
|
274
|
+
.an-pready-t svg { width:15px; height:15px; color: var(--an-ok); flex:none; }
|
|
275
|
+
.an-plinkrow { display:flex; gap:6px; }
|
|
276
|
+
.an-plinkrow .an-input { flex:1; width:auto; min-width:0; font:12px ui-monospace, SFMono-Regular, Menlo, monospace; }
|
|
277
|
+
.an-pready .an-phelp { margin:8px 0 0; }
|
|
278
|
+
.an-perror { color: var(--an-danger); font-size:12.5px; }
|
|
279
|
+
.an-pcheck { display:flex; align-items:center; gap:7px; font-size:12.5px; margin:-4px 0 11px; color: var(--an-fg); }
|
|
280
|
+
.an-pemailed { font-size:12px; color: var(--an-ok); margin:8px 0 0; }
|
|
281
|
+
.an-pready .an-psend { margin-top:8px; }
|
|
282
|
+
.an-mswitch { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; margin-bottom:8px;
|
|
283
|
+
border:1px solid var(--an-border); border-radius:10px; font-size:12.5px; }
|
|
284
|
+
.an-switch { width:34px; height:20px; border-radius:10px; border:none; background: var(--an-border-strong); position:relative;
|
|
285
|
+
cursor:pointer; flex:none; padding:0; }
|
|
286
|
+
.an-switch::after { content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff;
|
|
287
|
+
transition:left .15s; }
|
|
288
|
+
.an-switch[aria-checked="true"] { background: var(--an-ok); }
|
|
289
|
+
.an-switch[aria-checked="true"]::after { left:16px; }
|
|
290
|
+
.an-switch:disabled { opacity:.5; cursor:default; }
|
|
291
|
+
.an-list { flex:1; overflow-y:auto; padding:8px 12px 16px; }
|
|
292
|
+
.an-list::-webkit-scrollbar { width:8px; }
|
|
293
|
+
.an-list::-webkit-scrollbar-thumb { background: var(--an-border-strong); border-radius:4px; }
|
|
294
|
+
|
|
295
|
+
.an-empty { text-align:center; color: var(--an-muted); padding:42px 24px;
|
|
296
|
+
font-size:13px; line-height:1.65; }
|
|
297
|
+
.an-empty .an-eicon { width:42px; height:42px; margin:0 auto 12px; border-radius:14px;
|
|
298
|
+
background: var(--an-surface-2); display:flex; align-items:center; justify-content:center; }
|
|
299
|
+
.an-empty .an-eicon svg { width:20px; height:20px; color: var(--an-muted); }
|
|
300
|
+
.an-empty kbd { font:600 11px var(--an-font); background: var(--an-surface-2);
|
|
301
|
+
border:1px solid var(--an-border-strong); border-bottom-width:2px;
|
|
302
|
+
border-radius:5px; padding:1px 5px; }
|
|
303
|
+
|
|
304
|
+
/* ---- comment card ------------------------------------------------------ */
|
|
305
|
+
.an-card { border:1px solid var(--an-border); border-radius:14px; padding:12px 13px;
|
|
306
|
+
margin:8px 2px; background: var(--an-surface);
|
|
307
|
+
transition: box-shadow .15s, border-color .15s; cursor:pointer; position:relative; }
|
|
308
|
+
.an-card:hover { box-shadow: var(--an-shadow-sm); border-color: var(--an-border-strong); }
|
|
309
|
+
.an-card.an-active { border-color: var(--an-btn-bg); box-shadow: var(--an-shadow-sm); }
|
|
310
|
+
.an-card.an-resolved { opacity:.6; }
|
|
311
|
+
.an-cmeta { display:flex; align-items:center; gap:8px; margin-bottom:7px; }
|
|
312
|
+
.an-author { font-weight:600; font-size:13px; }
|
|
313
|
+
.an-tag { font-size:10px; font-weight:600; color: var(--an-muted);
|
|
314
|
+
display:inline-flex; align-items:center; gap:4px; }
|
|
315
|
+
.an-tag .an-dot { width:8px; height:8px; border-radius:50%; }
|
|
316
|
+
.an-when { font-size:11px; color: var(--an-muted); margin-left:auto; flex:none; }
|
|
317
|
+
.an-rbadge { display:inline-flex; align-items:center; gap:3px; font:600 10px var(--an-font);
|
|
318
|
+
color: var(--an-ok); }
|
|
319
|
+
.an-rbadge svg { width:11px; height:11px; }
|
|
320
|
+
.an-sbadge { font:600 10px var(--an-font); color: var(--an-muted); }
|
|
321
|
+
.an-sbadge.an-s-in_progress { color: #0ea5e9; }
|
|
322
|
+
.an-assignee, .an-disposal { font-size:11px; color: var(--an-muted); margin:-3px 0 6px; }
|
|
323
|
+
.an-disposal { color: var(--an-ok); }
|
|
324
|
+
.an-card.an-unread { border-color: var(--an-btn-bg); }
|
|
325
|
+
.an-newpill { display:inline-block; border:0; border-radius:999px; margin:-2px 0 7px;
|
|
326
|
+
padding:2px 9px; font:600 10.5px var(--an-font); cursor:pointer;
|
|
327
|
+
background: var(--an-btn-bg); color: var(--an-btn-fg); }
|
|
328
|
+
.an-history { display:none; margin-top:8px; border-top:1px dashed var(--an-border); padding-top:7px; }
|
|
329
|
+
.an-history.an-show { display:block; }
|
|
330
|
+
.an-hlist { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
|
|
331
|
+
.an-hlist li { display:flex; gap:8px; font-size:11.5px; line-height:1.4; color: var(--an-fg); }
|
|
332
|
+
.an-hwhen { color: var(--an-muted); margin-left:auto; flex:none; font-size:10.5px; }
|
|
333
|
+
.an-hnote { font-size:10.5px; color: var(--an-muted); margin-top:5px; }
|
|
334
|
+
select.an-status { border:1px solid var(--an-border); background: var(--an-surface);
|
|
335
|
+
border-radius:8px; padding:3px 6px; font:500 11.5px var(--an-font); cursor:pointer;
|
|
336
|
+
color: var(--an-muted); max-width:120px; }
|
|
337
|
+
.an-quote { font-size:12px; color: var(--an-muted); background: var(--an-surface-2);
|
|
338
|
+
border-left:3px solid var(--an-border-strong);
|
|
339
|
+
padding:5px 9px; border-radius:0 6px 6px 0; margin:6px 0; line-height:1.45;
|
|
340
|
+
max-height:54px; overflow:hidden; }
|
|
341
|
+
.an-body { font-size:13.5px; line-height:1.5; color: var(--an-fg);
|
|
342
|
+
white-space:pre-wrap; word-break:break-word; }
|
|
343
|
+
.an-replies { margin-top:9px; border-top:1px dashed var(--an-border); padding-top:8px;
|
|
344
|
+
display:flex; flex-direction:column; gap:7px; }
|
|
345
|
+
.an-reply { display:flex; gap:8px; font-size:12.5px; line-height:1.45; }
|
|
346
|
+
.an-reply .an-rwho { font-weight:600; margin-right:5px; }
|
|
347
|
+
.an-agent { display:inline-block; font-size:10px; font-weight:600; line-height:15px; padding:0 6px; margin-right:5px;
|
|
348
|
+
border-radius:8px; background: var(--an-btn-bg); color: var(--an-btn-fg); vertical-align:1px; }
|
|
349
|
+
.an-reply .an-rwhen { color: var(--an-muted); font-size:10.5px; margin-left:5px; }
|
|
350
|
+
.an-cact { display:flex; gap:5px; margin-top:10px; flex-wrap:wrap;
|
|
351
|
+
opacity:.45; transition: opacity .15s; }
|
|
352
|
+
.an-card:hover .an-cact, .an-card.an-active .an-cact { opacity:1; }
|
|
353
|
+
.an-mini { border:1px solid var(--an-border); background: var(--an-surface);
|
|
354
|
+
border-radius:8px; padding:4px 9px; font:500 11.5px var(--an-font); cursor:pointer;
|
|
355
|
+
color: var(--an-muted); display:inline-flex; align-items:center; gap:4px;
|
|
356
|
+
transition: all .15s; }
|
|
357
|
+
.an-mini svg { width:12px; height:12px; }
|
|
358
|
+
.an-mini:hover { background: var(--an-surface-2); color: var(--an-fg); }
|
|
359
|
+
.an-mini.an-danger:hover { background:rgba(225,29,72,.08); color: var(--an-danger);
|
|
360
|
+
border-color: rgba(225,29,72,.3); }
|
|
361
|
+
.an-replybox, .an-editbox { display:none; margin-top:8px; gap:6px; flex-direction:column; }
|
|
362
|
+
.an-replybox.an-show, .an-editbox.an-show { display:flex; }
|
|
363
|
+
.an-input, .an-ta { width:100%; border:1px solid var(--an-border-strong);
|
|
364
|
+
background: var(--an-surface); border-radius:9px;
|
|
365
|
+
padding:8px 10px; font:13px var(--an-font); resize:vertical; outline:none;
|
|
366
|
+
color: var(--an-fg); transition: border-color .15s, box-shadow .15s; }
|
|
367
|
+
.an-input:focus, .an-ta:focus { border-color: var(--an-btn-bg); }
|
|
368
|
+
|
|
369
|
+
/* ---- panel footer ------------------------------------------------------ */
|
|
370
|
+
#__an_foot { border-top:1px solid var(--an-border); padding:12px 16px;
|
|
371
|
+
background: var(--an-surface-2); display:flex; flex-direction:column; gap:9px; }
|
|
372
|
+
#__an_foot .an-localnote { display:flex; align-items:center; gap:7px;
|
|
373
|
+
font-size:11.5px; color: var(--an-muted); }
|
|
374
|
+
#__an_foot .an-localnote svg { width:14px; height:14px; flex:none; }
|
|
375
|
+
#__an_foot .an-localnote.an-synced { color: var(--an-ok); }
|
|
376
|
+
#__an_foot .an-localnote.an-refused { align-items:flex-start; color: var(--an-danger); }
|
|
377
|
+
#__an_foot .an-localnote.an-refused svg { margin-top:2px; }
|
|
378
|
+
#__an_foot .an-exportlbl { font:600 10.5px var(--an-font); letter-spacing:.06em; text-transform:uppercase; color: var(--an-muted); margin:8px 0 -2px; }
|
|
379
|
+
#__an_foot .an-footrow { display:flex; gap:8px; }
|
|
380
|
+
#__an_foot .an-footrow.an-four { flex-wrap:wrap; }
|
|
381
|
+
#__an_foot .an-fbtn { flex:1; border:1px solid var(--an-border-strong);
|
|
382
|
+
background: var(--an-surface); color: var(--an-fg); border-radius:10px; padding:9px;
|
|
383
|
+
font:600 12.5px var(--an-font); cursor:pointer; display:flex; align-items:center;
|
|
384
|
+
justify-content:center; gap:7px; transition: background .15s, border-color .15s; }
|
|
385
|
+
#__an_foot .an-footrow.an-four .an-fbtn { flex-basis:calc(50% - 4px); }
|
|
386
|
+
#__an_foot .an-fbtn:hover { background: var(--an-surface-2); border-color: var(--an-btn-bg); }
|
|
387
|
+
#__an_foot .an-fbtn svg { width:15px; height:15px; }
|
|
388
|
+
#__an_foot .an-sitebtn { width:100%; border:0; background:none; color: var(--an-muted);
|
|
389
|
+
font:600 11.5px var(--an-font); cursor:pointer; display:flex; align-items:center;
|
|
390
|
+
justify-content:center; gap:6px; padding:2px; border-radius:6px; }
|
|
391
|
+
#__an_foot .an-sitebtn:hover { color: var(--an-fg); text-decoration:underline; }
|
|
392
|
+
#__an_foot .an-sitebtn svg { width:13px; height:13px; }
|
|
393
|
+
|
|
394
|
+
/* ---- composer popover -------------------------------------------------- */
|
|
395
|
+
#__an_compose { position:absolute; z-index:2147483300; width:304px;
|
|
396
|
+
background: var(--an-surface); border-radius:14px; box-shadow: var(--an-shadow-lg);
|
|
397
|
+
border:1px solid var(--an-border); padding:13px; font-family: var(--an-font);
|
|
398
|
+
color: var(--an-fg); display:none;
|
|
399
|
+
animation: an-pop .18s cubic-bezier(.34,1.4,.64,1); }
|
|
400
|
+
#__an_compose.an-show { display:block; }
|
|
401
|
+
#__an_compose .an-ctitle { font-size:11px; font-weight:700; text-transform:uppercase;
|
|
402
|
+
letter-spacing:.05em; color: var(--an-muted); margin-bottom:9px;
|
|
403
|
+
display:flex; align-items:center; gap:6px; }
|
|
404
|
+
#__an_compose .an-cquote { font-size:12.5px; line-height:1.45; color: var(--an-muted);
|
|
405
|
+
background: var(--an-surface-2); border-left:3px solid var(--an-border-strong);
|
|
406
|
+
padding:6px 10px; border-radius:0 6px 6px 0; margin-bottom:9px; max-height:84px;
|
|
407
|
+
overflow-y:auto; font-style:italic; white-space:pre-wrap; word-break:break-word; }
|
|
408
|
+
#__an_compose .an-cfoot { display:flex; align-items:center; margin-top:10px; gap:7px; }
|
|
409
|
+
#__an_compose .an-ckbd { font-size:10.5px; color: var(--an-muted); margin-right:auto; }
|
|
410
|
+
.an-primary { background: var(--an-btn-bg); color: var(--an-btn-fg); border:none;
|
|
411
|
+
border-radius:9px; padding:7px 15px; font:600 12.5px var(--an-font); cursor:pointer;
|
|
412
|
+
transition: filter .15s, opacity .15s; }
|
|
413
|
+
.an-primary:hover { filter: brightness(1.15); }
|
|
414
|
+
.an-primary:disabled { opacity:.55; cursor:default; }
|
|
415
|
+
.an-ghost { background:transparent; border:1px solid var(--an-border-strong);
|
|
416
|
+
border-radius:9px; padding:7px 13px; font:500 12.5px var(--an-font); cursor:pointer;
|
|
417
|
+
color: var(--an-muted); }
|
|
418
|
+
.an-ghost:hover { color: var(--an-fg); }
|
|
419
|
+
|
|
420
|
+
/* ---- name modal -------------------------------------------------------- */
|
|
421
|
+
#__an_namewrap { position:fixed; inset:0; z-index:2147483400;
|
|
422
|
+
background:rgba(14,14,22,.45); backdrop-filter:blur(4px);
|
|
423
|
+
display:flex; align-items:center; justify-content:center;
|
|
424
|
+
font-family: var(--an-font); }
|
|
425
|
+
#__an_namebox { background: var(--an-surface); color: var(--an-fg);
|
|
426
|
+
width:380px; max-width:92vw; border-radius:18px;
|
|
427
|
+
padding:26px 26px 22px; box-shadow: var(--an-shadow-lg);
|
|
428
|
+
animation: an-pop .22s cubic-bezier(.34,1.56,.64,1);
|
|
429
|
+
max-height:calc(100vh - 32px); overflow-y:auto; }
|
|
430
|
+
@keyframes an-pop { from{transform:scale(.92);opacity:0} to{transform:scale(1);opacity:1} }
|
|
431
|
+
#__an_namebox .an-nt { font:700 19px/1.2 var(--an-font); letter-spacing:-.01em; margin:0 0 6px; }
|
|
432
|
+
#__an_namebox .an-nd { font-size:13.5px; color: var(--an-muted); line-height:1.5; margin:0 0 18px; }
|
|
433
|
+
#__an_namebox input { width:100%; border:1.5px solid var(--an-border-strong);
|
|
434
|
+
background: var(--an-surface); color: var(--an-fg); border-radius:11px;
|
|
435
|
+
padding:12px 14px; font:15px var(--an-font); outline:none; margin-bottom:14px; }
|
|
436
|
+
#__an_namebox input:focus { border-color: var(--an-btn-bg); }
|
|
437
|
+
#__an_namebox button { width:100%; background: var(--an-btn-bg); color: var(--an-btn-fg);
|
|
438
|
+
border:none; border-radius:11px; padding:12px; font:600 14px var(--an-font);
|
|
439
|
+
cursor:pointer; transition: filter .15s; }
|
|
440
|
+
#__an_namebox button:hover { filter: brightness(1.15); }
|
|
441
|
+
#__an_namebox button.an-nskip { background: transparent; color: var(--an-muted); margin-top:6px; }
|
|
442
|
+
#__an_namebox button.an-nskip:hover { color: var(--an-fg); filter:none; }
|
|
443
|
+
#__an_namebox .an-nerr { color: var(--an-danger); font-size:12.5px; min-height:16px; margin:6px 0 4px; }
|
|
444
|
+
#__an_namebox .an-nlegal { font-size:11.5px; line-height:1.5; color: var(--an-muted); text-align:center; margin:12px 0 0; }
|
|
445
|
+
#__an_namebox .an-nlegal a { color: inherit; text-decoration: underline; text-underline-offset:2px; }
|
|
446
|
+
#__an_namebox .an-nlegal a:hover { color: var(--an-fg); }
|
|
447
|
+
#__an_namebox .an-nnote.an-nwarn { border-left:3px solid var(--an-danger); }
|
|
448
|
+
#__an_namebox .an-nnote { background: var(--an-surface-2);
|
|
449
|
+
border:1px solid var(--an-border); border-radius:11px;
|
|
450
|
+
padding:11px 13px; margin:0 0 16px; font:13.5px/1.5 var(--an-font);
|
|
451
|
+
color: var(--an-fg); overflow-wrap:anywhere; }
|
|
452
|
+
#__an_namebox .an-nnote .an-nlbl { display:block; font-weight:700;
|
|
453
|
+
font-size:11px; letter-spacing:.04em; text-transform:uppercase;
|
|
454
|
+
color: var(--an-muted); margin-bottom:3px; }
|
|
455
|
+
|
|
456
|
+
/* ---- share dialog ------------------------------------------------------ */
|
|
457
|
+
#__an_sharewrap { position:fixed; inset:0; z-index:2147483400;
|
|
458
|
+
background:rgba(14,14,22,.45); backdrop-filter:blur(4px);
|
|
459
|
+
display:flex; align-items:center; justify-content:center;
|
|
460
|
+
font-family: var(--an-font); }
|
|
461
|
+
#__an_sharebox { background: var(--an-surface); color: var(--an-fg);
|
|
462
|
+
width:440px; max-width:92vw; border-radius:18px; padding:24px 24px 18px;
|
|
463
|
+
box-shadow: var(--an-shadow-lg); animation: an-pop .22s cubic-bezier(.34,1.56,.64,1);
|
|
464
|
+
max-height:calc(100vh - 32px); overflow-y:auto; }
|
|
465
|
+
#__an_sharebox .an-st { font:700 19px/1.2 var(--an-font); letter-spacing:-.01em; margin:0 0 5px; }
|
|
466
|
+
#__an_sharebox .an-sd { font-size:13.5px; color: var(--an-muted); line-height:1.5; margin:0 0 16px; }
|
|
467
|
+
#__an_sharebox .an-sdest { display:flex; align-items:center; gap:8px;
|
|
468
|
+
background: var(--an-surface-2); border:1px solid var(--an-border);
|
|
469
|
+
border-radius:10px; padding:9px 12px; margin-bottom:18px; font-size:13px;
|
|
470
|
+
word-break:break-all; }
|
|
471
|
+
#__an_sharebox .an-sdest svg { width:15px; height:15px; flex:none; color: var(--an-muted); }
|
|
472
|
+
#__an_sharebox .an-sstep { display:flex; gap:11px; margin-bottom:16px; }
|
|
473
|
+
#__an_sharebox .an-snum { flex:none; width:22px; height:22px; border-radius:50%;
|
|
474
|
+
background: var(--an-btn-bg); color: var(--an-btn-fg); font:700 12px var(--an-font);
|
|
475
|
+
display:flex; align-items:center; justify-content:center; margin-top:1px; }
|
|
476
|
+
#__an_sharebox .an-stext { font-size:13.5px; line-height:1.5; overflow-wrap:anywhere; }
|
|
477
|
+
#__an_sharebox .an-stext b { font-weight:700; }
|
|
478
|
+
#__an_sharebox .an-srow { display:flex; gap:8px; flex-wrap:wrap; margin-top:9px; }
|
|
479
|
+
#__an_sharebox .an-sbtn { display:inline-flex; align-items:center; gap:6px;
|
|
480
|
+
background: var(--an-btn-bg); color: var(--an-btn-fg); border:none;
|
|
481
|
+
border-radius:9px; padding:8px 13px; font:600 13px var(--an-font);
|
|
482
|
+
cursor:pointer; transition: filter .15s; }
|
|
483
|
+
#__an_sharebox .an-sbtn.an-ghost2 { background: var(--an-surface-2);
|
|
484
|
+
color: var(--an-fg); border:1px solid var(--an-border-strong); }
|
|
485
|
+
#__an_sharebox .an-sbtn:hover { filter: brightness(1.12); }
|
|
486
|
+
#__an_sharebox .an-sbtn svg { width:14px; height:14px; }
|
|
487
|
+
#__an_sharebox .an-sclose { width:100%; margin-top:8px; background:none;
|
|
488
|
+
border:none; color: var(--an-muted); font:600 13px var(--an-font);
|
|
489
|
+
cursor:pointer; padding:9px; border-radius:9px; }
|
|
490
|
+
#__an_sharebox .an-sclose:hover { background: var(--an-surface-2); color: var(--an-fg); }
|
|
491
|
+
|
|
492
|
+
/* ---- author note banner inside panel ----------------------------------- */
|
|
493
|
+
#__an_note { display:none; gap:9px; align-items:flex-start;
|
|
494
|
+
margin:0 16px 10px; padding:10px 12px; border-radius:11px;
|
|
495
|
+
background: var(--an-surface-2); border:1px solid var(--an-border);
|
|
496
|
+
font:13px/1.45 var(--an-font); color: var(--an-fg);
|
|
497
|
+
overflow-wrap:anywhere; }
|
|
498
|
+
#__an_note.an-show { display:flex; }
|
|
499
|
+
#__an_note svg { width:15px; height:15px; flex:none; color: var(--an-muted); margin-top:1px; }
|
|
500
|
+
#__an_note .an-nlbl { font-weight:700; }
|
|
501
|
+
|
|
502
|
+
/* ---- pulsating download cue -------------------------------------------- */
|
|
503
|
+
@keyframes an-pulse {
|
|
504
|
+
0% { box-shadow:0 0 0 0 rgba(245,158,11,.55); }
|
|
505
|
+
70% { box-shadow:0 0 0 8px rgba(245,158,11,0); }
|
|
506
|
+
100% { box-shadow:0 0 0 0 rgba(245,158,11,0); }
|
|
507
|
+
}
|
|
508
|
+
.an-pulse { animation: an-pulse 1.8s ease-out infinite;
|
|
509
|
+
border-color:#f59e0b !important; color:#f59e0b !important; }
|
|
510
|
+
|
|
511
|
+
/* ---- toasts ------------------------------------------------------------ */
|
|
512
|
+
#__an_toasts { position:fixed; bottom:20px; left:50%; transform:translateX(-50%);
|
|
513
|
+
z-index:2147483500; display:flex; flex-direction:column; align-items:center;
|
|
514
|
+
gap:8px; pointer-events:none; font-family: var(--an-font); }
|
|
515
|
+
.an-toast { pointer-events:auto; display:flex; align-items:center; gap:9px;
|
|
516
|
+
background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font);
|
|
517
|
+
padding:10px 14px; border-radius:12px; box-shadow: var(--an-shadow-md);
|
|
518
|
+
border:1px solid rgba(255,255,255,.08); max-width:min(440px, 90vw);
|
|
519
|
+
animation: an-toast-in .25s cubic-bezier(.34,1.3,.64,1); }
|
|
520
|
+
.an-toast.an-out { animation: an-toast-out .2s ease forwards; }
|
|
521
|
+
@keyframes an-toast-in { from { transform: translateY(12px) scale(.96); opacity:0 }
|
|
522
|
+
to { transform: translateY(0) scale(1); opacity:1 } }
|
|
523
|
+
@keyframes an-toast-out { to { transform: translateY(8px); opacity:0 } }
|
|
524
|
+
.an-toast .an-ticon { width:17px; height:17px; flex:none; display:flex; }
|
|
525
|
+
.an-toast .an-ticon svg { width:17px; height:17px; }
|
|
526
|
+
.an-toast.an-success .an-ticon { color:#34d399; }
|
|
527
|
+
.an-toast.an-error .an-ticon { color:#fb7185; }
|
|
528
|
+
.an-toast.an-info .an-ticon { color:#a5b4fc; }
|
|
529
|
+
.an-toast .an-taction { background:none; border:none; color:#a5b4fc;
|
|
530
|
+
font:600 12.5px var(--an-font); cursor:pointer; padding:2px 4px; margin-left:2px;
|
|
531
|
+
border-radius:6px; flex:none; }
|
|
532
|
+
.an-toast .an-taction:hover { background:rgba(165,180,252,.14); }
|
|
533
|
+
|
|
534
|
+
/* ---- unanchored highlight pill ------------------------------------------ */
|
|
535
|
+
.an-unanchored-pill { position:absolute; left:16px; z-index:2147483110;
|
|
536
|
+
display:flex; align-items:center; gap:7px; max-width:280px;
|
|
537
|
+
background:#78350f; color:#fde68a; font:500 11.5px/1.35 var(--an-font);
|
|
538
|
+
padding:7px 11px; border-radius:10px; box-shadow: var(--an-shadow-md);
|
|
539
|
+
border:1px solid rgba(255,255,255,.14); cursor:pointer; }
|
|
540
|
+
.an-unanchored-pill svg { width:14px; height:14px; flex:none; }
|
|
541
|
+
|
|
542
|
+
/* ---- persistent "storage unavailable" banner --------------------------- */
|
|
543
|
+
#__an_unsaved { position:fixed; top:14px; left:50%; transform:translateX(-50%);
|
|
544
|
+
z-index:2147483510; display:flex; align-items:center; gap:9px;
|
|
545
|
+
background:#7f1d1d; color:#ffe4e6; font:500 12.5px var(--an-font);
|
|
546
|
+
padding:10px 14px; border-radius:12px; box-shadow: var(--an-shadow-md);
|
|
547
|
+
border:1px solid rgba(255,255,255,.14); max-width:min(460px, 92vw);
|
|
548
|
+
animation: an-toast-in .25s cubic-bezier(.34,1.3,.64,1); }
|
|
549
|
+
|
|
550
|
+
/* ---- section (+) and margin bubbles ------------------------------------ */
|
|
551
|
+
#__an_plus { position:fixed; z-index:2147483120; width:30px; height:30px;
|
|
552
|
+
border-radius:50%; background: var(--an-surface);
|
|
553
|
+
border:1.5px solid var(--an-border-strong); color: var(--an-muted);
|
|
554
|
+
display:none; align-items:center; justify-content:center; cursor:pointer;
|
|
555
|
+
box-shadow: var(--an-shadow-sm); transition:transform .12s, border-color .12s, color .12s; }
|
|
556
|
+
#__an_plus svg { width:16px; height:16px; display:block; }
|
|
557
|
+
#__an_plus.an-show { display:flex; }
|
|
558
|
+
#__an_plus:hover { transform:scale(1.12); border-color: var(--an-btn-bg); color: var(--an-fg); }
|
|
559
|
+
.an-block-tab { position:absolute; z-index:2147483100; min-width:24px; height:24px;
|
|
560
|
+
padding:0 7px; border-radius:13px; display:flex; align-items:center; gap:5px;
|
|
561
|
+
color:#fff; font:600 12px/1 var(--an-font); cursor:pointer;
|
|
562
|
+
box-shadow: var(--an-shadow-sm); pointer-events:auto;
|
|
563
|
+
transition:transform .12s; }
|
|
564
|
+
.an-block-tab:hover { transform:scale(1.06); }
|
|
565
|
+
.an-block-tab.an-active { outline:3px solid rgba(0,0,0,.14); }
|
|
566
|
+
.an-block-tab svg { width:13px; height:13px; }
|
|
567
|
+
|
|
568
|
+
/* ---- off-mode launcher -------------------------------------------------- */
|
|
569
|
+
#__an_launch { position:fixed; bottom:24px; z-index:2147483200;
|
|
570
|
+
display:none; align-items:center; gap:8px; background: var(--an-btn-bg);
|
|
571
|
+
color: var(--an-btn-fg); border:none; border-radius:24px;
|
|
572
|
+
padding:10px 16px 10px 13px; cursor:pointer;
|
|
573
|
+
font:600 13px var(--an-font); box-shadow: var(--an-shadow-md);
|
|
574
|
+
transition:transform .12s, filter .15s; }
|
|
575
|
+
#__an_launch.an-right { right:18px; }
|
|
576
|
+
#__an_launch.an-left { left:18px; }
|
|
577
|
+
#__an_launch.an-show { display:flex; }
|
|
578
|
+
#__an_launch:hover { transform:translateY(-1px); filter: brightness(1.12); }
|
|
579
|
+
#__an_launch svg { width:16px; height:16px; }
|
|
580
|
+
#__an_launch .an-lc { background:#f43f5e; color:#fff; border-radius:9px; min-width:17px;
|
|
581
|
+
height:17px; padding:0 4px; font-size:10px; font-weight:700;
|
|
582
|
+
display:flex; align-items:center; justify-content:center; }
|
|
583
|
+
|
|
584
|
+
/* ---- element identification (1.6) --------------------------------------- */
|
|
585
|
+
#__an_compose .an-con { font-size:11.5px; color: var(--an-muted); margin:-3px 0 8px;
|
|
586
|
+
overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
587
|
+
.an-frameshield { position:fixed; z-index:2147481000; background:transparent; pointer-events:auto; cursor:crosshair; touch-action:none; }
|
|
588
|
+
#__an_hover { position:fixed; z-index:2147482000; pointer-events:none; display:none; box-sizing:border-box;
|
|
589
|
+
border:2px solid var(--an-btn-bg); border-radius:4px; }
|
|
590
|
+
#__an_hover.an-show { display:block; }
|
|
591
|
+
#__an_hover .an-hlabel { position:absolute; left:-2px; bottom:100%; margin-bottom:4px; max-width:320px;
|
|
592
|
+
overflow:hidden; text-overflow:ellipsis; white-space:nowrap; background: var(--an-btn-bg);
|
|
593
|
+
color: var(--an-btn-fg); font:600 11px var(--an-font); padding:3px 7px; border-radius:5px; }
|
|
594
|
+
#__an_hover.an-below .an-hlabel { bottom:auto; top:100%; margin:4px 0 0; }
|
|
595
|
+
.an-target { font-size:11.5px; color: var(--an-muted); margin:2px 0 6px;
|
|
596
|
+
overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
597
|
+
details.an-elem { margin:7px 0 2px; font-size:11.5px; color: var(--an-muted); }
|
|
598
|
+
details.an-elem > summary { cursor:pointer; font-weight:600; list-style:none; display:inline-flex; align-items:center; gap:4px; }
|
|
599
|
+
details.an-elem > summary::-webkit-details-marker { display:none; }
|
|
600
|
+
details.an-elem > summary::before { content:"\\25B8"; font-size:10px; }
|
|
601
|
+
details.an-elem[open] > summary::before { content:"\\25BE"; }
|
|
602
|
+
.an-erow { display:flex; gap:6px; margin-top:5px; align-items:flex-start; flex-wrap:wrap; }
|
|
603
|
+
.an-erow > b { flex:none; width:70px; font-weight:500; }
|
|
604
|
+
.an-erow code { font:11px ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--an-fg);
|
|
605
|
+
background: var(--an-surface-2); padding:1px 5px; border-radius:4px; word-break:break-all; }
|
|
606
|
+
.an-erow .an-mini { padding:2px 5px; }
|
|
607
|
+
.an-erow .an-mini svg { width:12px; height:12px; }
|
|
608
|
+
.an-editor { color: var(--an-fg); text-decoration:underline; }
|
|
609
|
+
.an-styles { display:grid; grid-template-columns:auto 1fr; gap:2px 8px; flex:1; min-width:0; }
|
|
610
|
+
#__an_foot { position:relative; }
|
|
611
|
+
#__an_copymenu { position:absolute; left:12px; right:12px; bottom:calc(100% - 4px); z-index:5;
|
|
612
|
+
background: var(--an-surface); border:1px solid var(--an-border-strong); border-radius:12px;
|
|
613
|
+
box-shadow: var(--an-shadow-lg); padding:6px; display:flex; flex-direction:column; gap:4px; }
|
|
614
|
+
#__an_copymenu .an-mitem { display:flex; align-items:center; gap:8px; width:100%; text-align:left;
|
|
615
|
+
border:0; background:transparent; color: var(--an-fg); font:500 12.5px var(--an-font);
|
|
616
|
+
padding:8px 10px; border-radius:8px; cursor:pointer; }
|
|
617
|
+
#__an_copymenu .an-mitem:hover, #__an_copymenu .an-mitem:focus-visible { background: var(--an-surface-2); }
|
|
618
|
+
#__an_copymenu .an-mitem svg { width:14px; height:14px; flex:none; }
|
|
619
|
+
#__an_copymenu .an-seg { display:flex; gap:2px; margin:0 10px 4px; padding:2px; border-radius:8px;
|
|
620
|
+
background: var(--an-surface-2); }
|
|
621
|
+
#__an_copymenu .an-segbtn { flex:1; border:0; background:transparent; color: var(--an-muted);
|
|
622
|
+
font:500 11px var(--an-font); padding:4px 6px; border-radius:6px; cursor:pointer; }
|
|
623
|
+
#__an_copymenu .an-segbtn.an-on { background: var(--an-surface); color: var(--an-fg); box-shadow: var(--an-shadow-sm); }
|
|
624
|
+
|
|
625
|
+
/* ---- hint pill + shortcuts card ----------------------------------------- */
|
|
626
|
+
body.an-drawing { cursor: crosshair !important; touch-action: none; user-select: none; -webkit-user-select: none; }
|
|
627
|
+
body.an-drawing ::selection { background: transparent; }
|
|
628
|
+
#__an_hint { position:fixed; top:14px; left:50%; transform:translateX(-50%);
|
|
629
|
+
background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:8px 16px;
|
|
630
|
+
border-radius:24px; z-index:2147483300; box-shadow: var(--an-shadow-md);
|
|
631
|
+
display:none; align-items:center; gap:8px; pointer-events:none;
|
|
632
|
+
width:max-content; max-width:calc(100vw - 24px); flex-wrap:wrap; justify-content:center; row-gap:4px; }
|
|
633
|
+
#__an_hint.an-show { display:flex; }
|
|
634
|
+
#__an_hint kbd { font:600 11px var(--an-font); background:rgba(255,255,255,.14);
|
|
635
|
+
border-radius:5px; padding:1px 6px; }
|
|
636
|
+
#__an_frozen { position:fixed; top:14px; left:50%; transform:translateX(-50%);
|
|
637
|
+
background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:8px 16px;
|
|
638
|
+
border-radius:24px; z-index:2147483300; box-shadow: var(--an-shadow-md);
|
|
639
|
+
display:none; align-items:center; gap:6px; pointer-events:none; }
|
|
640
|
+
#__an_frozen.an-show { display:flex; }
|
|
641
|
+
#__an_hint.an-show ~ #__an_frozen { top:56px; }
|
|
642
|
+
#__an_frozen kbd { font:600 11px var(--an-font); background:rgba(255,255,255,.14);
|
|
643
|
+
border-radius:5px; padding:1px 6px; }
|
|
644
|
+
/* ---- comments on several elements (C2) ---------------------------------- */
|
|
645
|
+
#__an_bar .an-btn[data-action="group-toggle"] { display:none; }
|
|
646
|
+
#__an_bar.an-pinning .an-btn[data-action="group-toggle"] { display:flex; }
|
|
647
|
+
#__an_groupbar button:focus-visible { outline:2px solid #a5b4fc; outline-offset:2px; }
|
|
648
|
+
#__an_gsel { position:fixed; top:0; left:0; width:0; height:0; z-index:2147482000; pointer-events:none; }
|
|
649
|
+
.an-gsel { position:fixed; pointer-events:none; box-sizing:border-box;
|
|
650
|
+
border:2px solid var(--an-btn-bg); border-radius:4px; }
|
|
651
|
+
.an-gchip { position:absolute; top:-10px; left:-10px; min-width:18px; height:18px; padding:0 5px;
|
|
652
|
+
box-sizing:border-box; border-radius:9px; background: var(--an-btn-bg); color: var(--an-btn-fg);
|
|
653
|
+
font:700 10.5px/18px var(--an-font); text-align:center; box-shadow:0 1px 4px rgba(0,0,0,.25); }
|
|
654
|
+
.an-gout { position:absolute; box-sizing:border-box; border:2px dashed; border-radius:4px; pointer-events:none; }
|
|
655
|
+
/* Top-right: the group's marker sits on the first member's top-left corner. */
|
|
656
|
+
.an-gout .an-gchip { left:auto; right:-10px; color:#fff; border:1.5px solid rgba(255,255,255,.9); line-height:15px; }
|
|
657
|
+
.an-gout.an-flash { animation: an-gflash 1.2s ease-out; }
|
|
658
|
+
@keyframes an-gflash { 0%, 35% { background: var(--an-gfill); box-shadow:0 0 0 5px var(--an-gfill); }
|
|
659
|
+
100% { background:transparent; box-shadow:0 0 0 0 transparent; } }
|
|
660
|
+
#__an_groupbar { position:fixed; bottom:72px; left:50%; transform:translateX(-50%); z-index:2147483300;
|
|
661
|
+
display:none; align-items:center; gap:8px; max-width:calc(100vw - 24px); white-space:nowrap;
|
|
662
|
+
background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:6px 6px 6px 16px;
|
|
663
|
+
border-radius:24px; box-shadow: var(--an-shadow-md); pointer-events:auto; }
|
|
664
|
+
#__an_groupbar.an-show { display:flex; }
|
|
665
|
+
#__an_groupbar .an-gcount { margin-right:4px; }
|
|
666
|
+
#__an_groupbar .an-primary { background:#f2f2f6; color:#17171f; border-radius:18px; padding:6px 13px; }
|
|
667
|
+
#__an_groupbar .an-ghost { border-color:rgba(255,255,255,.24); color:#c9c9d3; border-radius:18px; padding:6px 12px; }
|
|
668
|
+
#__an_groupbar .an-ghost:hover { color:#fff; background:rgba(255,255,255,.08); }
|
|
669
|
+
.an-erow.an-mitem { align-items:center; flex-wrap:nowrap; }
|
|
670
|
+
.an-mrow { flex:1; min-width:0; display:flex; align-items:center; gap:6px; margin:-2px -4px; padding:2px 4px;
|
|
671
|
+
border:0; border-radius:6px; background:transparent; color: var(--an-fg); font:inherit; text-align:left; cursor:pointer; }
|
|
672
|
+
.an-mrow:hover { background: var(--an-surface-2); }
|
|
673
|
+
.an-mrow[aria-disabled="true"] { cursor:default; color: var(--an-muted); background:transparent; }
|
|
674
|
+
.an-mnum { flex:none; width:16px; height:16px; border-radius:50%; color:#fff; font:700 9.5px/16px var(--an-font); text-align:center; }
|
|
675
|
+
.an-mlabel { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
676
|
+
.an-mmiss { flex:none; font-style:italic; }
|
|
677
|
+
.an-mitem .an-editor { flex:none; margin-left:4px; }
|
|
678
|
+
|
|
679
|
+
#__an_help { position:fixed; bottom:80px; z-index:2147483300;
|
|
680
|
+
background: var(--an-surface); color: var(--an-fg); border:1px solid var(--an-border);
|
|
681
|
+
border-radius:16px; padding:16px 18px; box-shadow: var(--an-shadow-lg);
|
|
682
|
+
font-family: var(--an-font); display:none; min-width:230px;
|
|
683
|
+
animation: an-pop .18s cubic-bezier(.34,1.4,.64,1); }
|
|
684
|
+
#__an_help.an-right { right:80px; }
|
|
685
|
+
#__an_help.an-left { left:80px; }
|
|
686
|
+
#__an_help.an-show { display:block; }
|
|
687
|
+
#__an_help h3 { margin:0 0 10px; font:700 13px var(--an-font); }
|
|
688
|
+
#__an_help .an-krow { display:flex; align-items:center; justify-content:space-between;
|
|
689
|
+
gap:18px; font-size:12.5px; color: var(--an-muted); padding:3.5px 0; }
|
|
690
|
+
#__an_help kbd { font:600 11px var(--an-font); background: var(--an-surface-2);
|
|
691
|
+
border:1px solid var(--an-border-strong); border-bottom-width:2px;
|
|
692
|
+
border-radius:5px; padding:1px 6px; color: var(--an-fg); min-width:20px;
|
|
693
|
+
text-align:center; display:inline-block; }
|
|
694
|
+
|
|
695
|
+
@media (max-width: 640px) {
|
|
696
|
+
.an-grip { width:36px; }
|
|
697
|
+
#__an_settings { position:fixed; left:8px; right:8px; bottom:72px; width:auto; }
|
|
698
|
+
#__an_panel { top:auto; height:72vh; border-radius:18px 18px 0 0;
|
|
699
|
+
right:0; left:0; bottom:0; width:auto; max-width:none;
|
|
700
|
+
transform: translateY(110%); }
|
|
701
|
+
#__an_panel.an-open { transform: translateY(0); }
|
|
702
|
+
#__an_root.an-popen #__an_bar { display:none; }
|
|
703
|
+
#__an_compose { width: min(304px, calc(100vw - 16px)); }
|
|
704
|
+
.an-btn[data-tip]:hover::after { display:none; }
|
|
705
|
+
#__an_hint { font-size:11px; padding:7px 12px; }
|
|
706
|
+
#__an_frozen { font-size:11px; padding:7px 12px; }
|
|
707
|
+
#__an_groupbar { left:12px; right:12px; transform:none; flex-wrap:wrap; justify-content:center;
|
|
708
|
+
white-space:normal; font-size:12px; padding:6px 10px; border-radius:18px; }
|
|
709
|
+
#__an_groupbar.an-right { right:76px; }
|
|
710
|
+
#__an_groupbar.an-left { left:76px; }
|
|
711
|
+
#__an_bar { padding:6px; gap:4px; }
|
|
712
|
+
.an-btn { width:36px; height:36px; }
|
|
713
|
+
#__an_colorbtn { width:36px; height:36px; }
|
|
714
|
+
#__an_panel .an-list { -webkit-overflow-scrolling: touch; }
|
|
715
|
+
.an-ph { padding:14px 14px 10px; }
|
|
716
|
+
#__an_foot .an-footrow { flex-wrap:wrap; }
|
|
717
|
+
#__an_foot .an-fbtn { flex-basis:calc(50% - 4px); }
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
@media (hover: none) and (pointer: coarse) {
|
|
721
|
+
.an-btn[data-tip]:hover::after { display:none; }
|
|
722
|
+
.an-cact { opacity:1; }
|
|
723
|
+
}
|
|
724
|
+
@media (prefers-reduced-motion: reduce) {
|
|
725
|
+
#__an_bar, #__an_panel, #__an_compose, #__an_namebox, #__an_sharebox,
|
|
726
|
+
.an-toast, .an-pin { animation:none !important; transition:none !important; }
|
|
727
|
+
.an-pulse { animation:none !important; }
|
|
728
|
+
.an-gout.an-flash { animation:none; background: var(--an-gfill); }
|
|
729
|
+
}
|
|
730
|
+
/* Short windows: tighten the bar so it still fits on screen (it holds 13 controls with Pin active). */
|
|
731
|
+
@media (max-height: 560px) {
|
|
732
|
+
#__an_bar { padding:4px; gap:2px; }
|
|
733
|
+
.an-btn, #__an_colorbtn { height:28px; }
|
|
734
|
+
}
|
|
735
|
+
/* A corner bar too tall for the window is anchored at its top by placeBar(). */
|
|
736
|
+
`,S={grip:'<svg viewBox="0 0 18 8" fill="currentColor"><circle cx="3" cy="2" r="1.4"/><circle cx="9" cy="2" r="1.4"/><circle cx="15" cy="2" r="1.4"/><circle cx="3" cy="6" r="1.4"/><circle cx="9" cy="6" r="1.4"/><circle cx="15" cy="6" r="1.4"/></svg>',group:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="11" height="11" rx="2"/><rect x="10" y="10" width="11" height="11" rx="2"/></svg>',freeze:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="9"/><path d="M10 9v6M14 9v6"/></svg>',cursor:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.5 18 2.2-7.3L20 11.5z"/></svg>',highlight:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l-6 6v3h3l6-6"/><path d="M22 3l-7 7-4-4 7-7z" transform="translate(-2 2)"/><path d="M12.5 6.5l5 5"/></svg>',rect:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3.5" y="5.5" width="17" height="13" rx="2"/></svg>',circle:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><ellipse cx="12" cy="12" rx="9" ry="7.5"/></svg>',pin:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21s7-6.3 7-11a7 7 0 1 0-14 0c0 4.7 7 11 7 11z"/><circle cx="12" cy="10" r="2.4"/></svg>',pen:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c2-1 3.5-2.5 5-5 1.5 2 3 2 4 1s1.5-3 3-3 2 1 3 1"/><path d="M15.5 4.5l4 4L9 19l-5 1 1-5z"/></svg>',list:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M8 6h12M8 12h12M8 18h12M3.5 6h.01M3.5 12h.01M3.5 18h.01"/></svg>',bubble:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 4h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H9l-5 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"/></svg>',hide:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20C5 20 1 12 1 12a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><path d="M1 1l22 22"/></svg>',settings:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"><path d="M9.09 4.98L9.20 4.94L9.71 2.27L14.29 2.27L14.80 4.94L14.91 4.98L15.01 5.02L17.26 3.50L20.50 6.74L18.98 8.99L19.02 9.09L19.06 9.20L21.73 9.71L21.73 14.29L19.06 14.80L19.02 14.91L18.98 15.01L20.50 17.26L17.26 20.50L15.01 18.98L14.91 19.02L14.80 19.06L14.29 21.73L9.71 21.73L9.20 19.06L9.09 19.02L8.99 18.98L6.74 20.50L3.50 17.26L5.02 15.01L4.98 14.91L4.94 14.80L2.27 14.29L2.27 9.71L4.94 9.20L4.98 9.09L5.02 8.99L3.50 6.74L6.74 3.50L8.99 5.02Z"/><circle cx="12" cy="12" r="3"/></svg>',check:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 13l4 4L19 7"/></svg>',link:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>',trash:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/></svg>',reply:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 17l-5-5 5-5"/><path d="M20 18v-2a4 4 0 0 0-4-4H4"/></svg>',edit:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5z"/></svg>',search:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>',alert:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 8v4M12 16h.01"/></svg>',info:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 16v-4M12 8h.01"/></svg>',download:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12M7 11l5 5 5-5"/><path d="M5 21h14"/></svg>',upload:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21V9M7 13l5-5 5 5"/><path d="M5 3h14"/></svg>',share:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="M8.6 13.5l6.8 4M15.4 6.5l-6.8 4"/></svg>',copy:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',mail:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="4.5" width="19" height="15" rx="2"/><path d="M3 6l9 6 9-6"/></svg>',people:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>',more:'<svg viewBox="0 0 24 24" fill="currentColor"><circle cx="5" cy="12" r="1.8"/><circle cx="12" cy="12" r="1.8"/><circle cx="19" cy="12" r="1.8"/></svg>',back:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"/></svg>'},Yt;function L(e,t){t=t||{},Yt||(Yt=s("div",{id:"__an_toasts"}),X().appendChild(Yt));var n=t.kind||"info",r={success:S.check,error:S.alert,info:S.info}[n],a=s("div",{class:"an-toast an-"+n},[s("span",{class:"an-ticon",html:r}),s("span",{text:e})]),i=!1,o=!1,l;function u(g){o||i||(g&&(i=!0,t.onExpire&&t.onExpire()),R(l),a.classList.add("an-out"),P(function(){a.remove()},220))}if(t.action){var p=s("button",{class:"an-taction",text:t.action});v(p,"click",function(){o||i||(o=!0,R(l),a.classList.add("an-out"),P(function(){a.remove()},220),t.onAction&&t.onAction())}),a.appendChild(p)}var f=t.duration||3800;for(l=P(function(){u(!0)},f),v(a,"mouseenter",function(){R(l)}),v(a,"mouseleave",function(){R(l),l=P(function(){u(!0)},1500)}),Yt.appendChild(a);Yt.children.length>3;)Yt.firstChild.remove();return{dismiss:function(){u(!1)}}}function Er(){for(var e=h.createTreeWalker(h.body,NodeFilter.SHOW_TEXT,{acceptNode:function(r){if(!r.nodeValue||J(r.parentNode))return NodeFilter.FILTER_REJECT;var a=r.parentNode.nodeName;return a==="SCRIPT"||a==="STYLE"||a==="NOSCRIPT"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),t=[],n;n=e.nextNode();)t.push(n);return t}function zu(e){var t=e.toString();if(!t.trim())return null;for(var n=48,r=Er(),a="",i=-1,o=0,l=0;l<r.length;l++){var u=r[l];u===e.startContainer&&(i=o+e.startOffset),a+=u.nodeValue,o+=u.nodeValue.length}if(i<0&&(i=a.indexOf(t),i<0))return{exact:t,prefix:"",suffix:""};var p=i+t.length;return{exact:t,prefix:a.slice(Math.max(0,i-n),i),suffix:a.slice(p,p+n)}}function Bu(e,t){for(var n=Er().filter(function(w){return!t||!!w.nodeValue.trim()}),r="",a=[],i=0;i<n.length;i++)a.push({node:n[i],start:r.length}),r+=n[i].nodeValue;var o=(e.prefix||"")+e.exact+(e.suffix||""),l=r.indexOf(o),u;if(l>=0)u=l+(e.prefix||"").length;else if(l=r.indexOf((e.prefix||"")+e.exact),l>=0)u=l+(e.prefix||"").length;else{if(l=r.indexOf(e.exact),l<0)return null;u=l}var p=u+e.exact.length,f=No(a,u),g=No(a,p);if(!f||!g)return null;var y=h.createRange();return y.setStart(f.node,f.offset),y.setEnd(g.node,g.offset),y}function No(e,t){for(var n=e.length-1;n>=0;n--)if(t>=e[n].start)return{node:e[n].node,offset:t-e[n].start};return null}var qt={};function Fu(e){var t=e.parentElement;if(!t||!t.isConnected||getComputedStyle(t).visibility!=="visible")return!1;for(var n=t;n;n=n.parentElement){var r=getComputedStyle(n);if(r.display==="none"||r.opacity==="0"||r.contentVisibility==="hidden")return!1}return!0}function Do(e,t,n){Sr();var r=[];return Er().forEach(function(a){if(!(!e.intersectsNode(a)||!Fu(a))){var i=a===e.startContainer?e.startOffset:0,o=a===e.endContainer?e.endOffset:a.nodeValue.length;if(!(o<=i)){var l=h.createRange();l.setStart(a,i),l.setEnd(a,o),Array.prototype.forEach.call(l.getClientRects(),function(u){if(!(!u.width||!u.height)){var p=ie("rect",{class:"an-highlight","data-an":n,x:u.left+m.scrollX,y:u.top+m.scrollY,width:u.width,height:u.height,rx:2,fill:Xt(/^#[0-9a-f]{6}$/i.test(t)?t:"#f59e0b",.32)});p.style.pointerEvents="none",B.appendChild(p),r.push(p)}})}}}),r.length&&(qt[n]=r),r}v(h,"click",function(e){if(!(!c.enabled||c.tool!=="cursor"||J(e.target))&&!(e.target.closest&&e.target.closest("a,button,input,textarea,select,[role=button],[contenteditable=true]"))){var t=m.getSelection();t&&!t.isCollapsed||Object.keys(qt).some(function(n){if(n==="__temp")return!1;var r=qt[n].some(function(a){var i=a.getBoundingClientRect();return e.clientX>=i.left&&e.clientX<=i.right&&e.clientY>=i.top&&e.clientY<=i.bottom});return r&&be(n,!0),r})}});function Xt(e,t){var n=e.replace("#",""),r=parseInt(n.slice(0,2),16),a=parseInt(n.slice(2,4),16),i=parseInt(n.slice(4,6),16);return"rgba("+r+","+a+","+i+","+t+")"}var B,W;function Sr(){if(X(),B){B.isConnected||de.appendChild(B),W.isConnected||de.appendChild(W);return}B=ie("svg",{id:"__an_overlay"}),X().appendChild(B),W=s("div",{id:"__an_pins"}),W.style.cssText="position:absolute;top:0;left:0;z-index:2147483100;pointer-events:none;",X().appendChild(W),Ia()}function Ia(){var e=Math.max(h.documentElement.scrollWidth,m.innerWidth),t=Math.max(h.documentElement.scrollHeight,m.innerHeight);B.setAttribute("width",e),B.setAttribute("height",t),B.style.width=e+"px",B.style.height=t+"px"}function pe(e){var t=gt(e);return{x:t.left+m.scrollX,y:t.top+m.scrollY,w:t.width,h:t.height}}function gt(e){var t=e.getBoundingClientRect(),n=e.ownerDocument,r=n&&n!==h?Xa(n):{x:0,y:0};return{left:t.left+r.x,top:t.top+r.y,width:t.width,height:t.height,right:t.right+r.x,bottom:t.bottom+r.y}}function La(){if(qt={},B)for(;B.firstChild;)B.removeChild(B.firstChild);W&&(W.innerHTML="")}var Vt={};function Gt(e,t,n){Vt[e.id]={x:t.x,y:t.y,w:t.w,h:t.h,hidden:!!n}}function jo(e,t){return!e||Math.abs(e.x-t.x)>.5||Math.abs(e.y-t.y)>.5||Math.abs(e.w-t.w)>.5||Math.abs(e.h-t.h)>.5}function Hu(){for(var e=0;e<c.comments.length;e++){var t=c.comments[e];if(!(t.resolved&&!Tr())){if(t.type==="group"&&t.geom&&t.geom.selectors){for(var n=0;n<t.geom.selectors.length;n++){var r=ht(t,n),a=Vt[t.id+":"+n];if(!r){if(a)return!0;continue}if(a&&a.hidden){if(xt(r))return!0;continue}if(jo(a,pe(r)))return!0}continue}if(!(t.type==="highlight"||!t.geom||!t.geom.selector)){var i=Ht(t),o=!!Vt[t.id];if(!i){if(o)return!0;continue}var l=Vt[t.id];if(l&&l.hidden){if(xt(i))return!0;continue}if(jo(l,pe(i)))return!0}}}return!1}var On=[],Ar=[],mt=null,Oa={capture:!0,passive:!0};rt.push(function(){zo(function(){return!1})});function zo(e){Ar=Ar.filter(function(t){return e(t)?!0:(t.removeEventListener("scroll",mt,Oa),!1)})}function Uu(){if(!(!Se||!c.enabled)){On=On.filter(function(t){return et(t.host)}),zo(function(t){return et(t.host)});var e=[];c.comments.forEach(function(t){if(!(t.resolved&&!Tr())){var n=t.type==="group"&&t.geom&&t.geom.selectors?t.geom.selectors:t.type!=="highlight"&&t.geom&&t.geom.selector?[t.geom.selector]:[];n.forEach(function(r){Cn(r).length>1&&Dt(r,e)})}}),e.forEach(function(t){mt&&Ar.indexOf(t)<0&&(t.addEventListener("scroll",mt,Oa),Ar.push(t)),!(On.indexOf(t)>=0)&&(Se.observe(t,si()),On.push(t))})}}var he=null,Ma={};function Yu(){if(he){for(var e={},t=0;t<c.comments.length;t++){var n=c.comments[t];if(n.type==="group"&&n.geom&&n.geom.selectors){for(var r=0;r<n.geom.selectors.length;r++){var a=ht(n,r);a&&(e[n.id+":"+r]=a)}continue}if(!(!n.geom||!n.geom.selector||n.type==="highlight")){var i=Ht(n);i&&(e[n.id]=i)}}var o=new Set(Object.keys(Ma).map(function(u){return Ma[u]})),l=new Set(Object.keys(e).map(function(u){return e[u]}));o.forEach(function(u){!l.has(u)&&u!==$e&&!gd(u)&&he.unobserve(u)}),l.forEach(function(u){o.has(u)||he.observe(u)}),Ma=e}}function Tr(){return c.filter!=="open"}function vt(e,t,n,r){e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",(r||"Annotation")+" comment #"+n+": "+(t.text||"no text").slice(0,120)),v(e,"keydown",function(a){(a.key==="Enter"||a.key===" "||a.key==="Spacebar")&&(a.preventDefault(),a.stopPropagation(),be(t.id,!0))})}function qu(e,t){if(!t)return 0;for(var n=0,r=0;(r=e.indexOf(t,r))>=0;){if(n++,n>1)return n;r+=1}return n}function Ir(e,t){var n=Er(),r="";t&&(n=n.filter(function(i){return!!i.nodeValue.trim()}));for(var a=0;a<n.length;a++)r+=n[a].nodeValue;return qu(r,e)}function Xu(e){var t=(e.prefix||"")+e.exact+(e.suffix||""),n=Ir(t);if(n===1)return{status:"ok"};if(n===0&&Ir(t,!0)===1)return{status:"ok",legacy:!0};var r=Ir(e.exact);return r===1?{status:"ok"}:r===0&&Ir(e.exact,!0)===1?{status:"ok",legacy:!0}:{status:r===0?"lost":"ambiguous"}}function Vu(e,t){var n=c.comments.indexOf(e)+1,r=s("div",{class:"an-unanchored-pill",title:"The quoted text for comment #"+n+" can\u2019t be found (or appears multiple times), so it isn\u2019t highlighted. Open the comment for details."},[s("span",{html:S.alert}),s("span",{text:"Moved or duplicated \u2014 #"+n})]);r.style.top=16+t*34+m.scrollY+"px",r.style.left="16px",r.style.pointerEvents="auto",v(r,"click",function(a){a.stopPropagation(),be(e.id,!0)}),vt(r,e,n,"Unanchored note"),W.appendChild(r)}function ne(){if(!(O||!We||re||Q)){if(Sr(),!c.enabled){La(),Fn();return}Nn(),La(),Vt={},Ia();var e=0,t=0;c.comments.forEach(function(n){if(!(n.resolved&&!Tr()))if(n.type==="highlight"&&n.anchor){var r=Xu(n.anchor),a=r.status;if(a!=="ok"){n.__unanchored=a,Vu(n,e++);return}n.__unanchored=!1;var i=Bu(n.anchor,r.legacy);if(i){var o=Do(i,n.color,n.id);o.forEach(function(l){v(l,"click",function(u){u.stopPropagation(),be(n.id,!0)}),vt(l,n,c.comments.indexOf(n)+1,"Highlight"),n.id===c.activeId&&l.classList.add("an-active")})}}else n.geom&&(n.type==="shape"||n.type==="pen")?(Ku(n,t),n.__anchorMissing&&t++):n.type==="pin"&&n.geom?(Wu(n,t),n.__anchorMissing&&t++):n.type==="block"&&n.geom?Gu(n):n.type==="group"&&n.geom&&($u(n,t),n.__anchorMissing&&t++)}),Yu(),Uu(),Fn(),V.length&&Qt()}}function xt(e){if(!e||!et(e)||e.checkVisibility&&!e.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}))return!1;var t=e.getBoundingClientRect(),n=e.ownerDocument.defaultView||m;return t.width>0&&t.height>0&&n.getComputedStyle(e).visibility!=="hidden"&&es(e)}function Gu(e){var t=e.geom.selector?Ht(e):null;if(t){var n=pe(t);if(!xt(t)){Gt(e,n,!0);return}Gt(e,n);var r=c.comments.indexOf(e)+1,a=s("div",{class:"an-block-tab"+(e.id===c.activeId?" an-active":"")},[s("span",{html:S.bubble}),s("span",{text:String(r)})]);a.style.background=e.color;var i=Math.max(h.documentElement.scrollWidth,m.innerWidth),o=n.x+n.w+14;o>i-40&&(o=n.x+n.w-30),a.style.left=o+"px",a.style.top=n.y+2+"px",a.title=e.text||"",v(a,"click",function(l){l.stopPropagation(),be(e.id,!0)}),vt(a,e,r,"Section"),W.appendChild(a)}}function Lr(e){return e&&e.vw&&Math.abs(e.vw-m.innerWidth)>200}function Ku(e,t){var n=e.geom.selector?Ht(e):null;if(!n){e.__anchorMissing=!0,Pa(e,t);return}e.__anchorMissing=!1;var r=pe(n);if(!xt(n)){Gt(e,r,!0);return}Gt(e,r);var a=e.geom,i;if(a.kind==="rect")i=ie("rect",{x:r.x+a.x*r.w,y:r.y+a.y*r.h,width:a.w*r.w,height:a.h*r.h,rx:6,fill:Xt(e.color,.08),stroke:e.color,"stroke-width":2.5,class:"an-hit"});else if(a.kind==="circle")i=ie("ellipse",{cx:r.x+(a.x+a.w/2)*r.w,cy:r.y+(a.y+a.h/2)*r.h,rx:Math.abs(a.w/2)*r.w,ry:Math.abs(a.h/2)*r.h,fill:Xt(e.color,.07),stroke:e.color,"stroke-width":2.5,class:"an-hit"});else if(a.kind==="pen"){var o=a.points.map(function(M,Ie){return(Ie?"L":"M")+(r.x+M[0]*r.w).toFixed(1)+" "+(r.y+M[1]*r.h).toFixed(1)}).join(" ");i=ie("path",{d:o,fill:"none",stroke:e.color,"stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round",class:"an-hit"})}if(i){e.id===c.activeId&&i.setAttribute("stroke-width",4),i.style.cursor="pointer",v(i,"click",function(M){M.stopPropagation(),be(e.id,!0)}),B.appendChild(i);var l=a.kind==="pen"?a.points[0][0]:a.x,u=a.kind==="pen"?a.points[0][1]:a.y,p=r.x+l*r.w,f=r.y+u*r.h,g=c.comments.indexOf(e)+1,y=ie("g",{}),w=Lr(a)?13:11,b=Lr(a)?"#f59e0b":e.color,T=ie("circle",{cx:p,cy:f,r:w,fill:b,stroke:"#fff","stroke-width":2}),C=ie("text",{x:p,y:f+4,"text-anchor":"middle",fill:"#fff","font-size":"11","font-weight":"700","font-family":"Inter, sans-serif"});if(C.textContent=Lr(a)?"\u26A0":g,Lr(a)){var A=ie("title");A.textContent="Drawn at "+a.vw+"px wide \u2014 positions may differ on this viewport",y.appendChild(A)}y.appendChild(T),y.appendChild(C),y.style.cursor="pointer",y.style.pointerEvents="all",v(y,"click",function(M){M.stopPropagation(),be(e.id,!0)}),vt(y,e,g,"Shape"),B.appendChild(y)}}function Pa(e,t){var n=c.comments.indexOf(e)+1,r=13,a=40+t*36,i=40+m.scrollY,o=ie("g",{}),l=ie("circle",{cx:a,cy:i,r,fill:"#f59e0b",stroke:"#fff","stroke-width":2,class:"an-badge-circle"}),u=ie("title");u.textContent="The element this comment points to no longer exists \u2014 it is not drawn in place.",l.setAttribute("title","Anchor element missing");var p=ie("text",{x:a,y:i+4,"text-anchor":"middle",fill:"#fff","font-size":"11","font-weight":"700","font-family":"Inter, sans-serif"});p.textContent=n,o.appendChild(u),o.appendChild(l),o.appendChild(p),o.style.cursor="pointer",o.style.pointerEvents="all",v(o,"click",function(f){f.stopPropagation(),be(e.id,!0)}),vt(o,e,n,"Annotation (anchor missing)"),B.appendChild(o)}function Wu(e,t){var n=e.geom.selector?Ht(e):null;if(!n&&e.geom.selector!=="body"){e.__anchorMissing=!0,Pa(e,t);return}n||(n=h.body),e.__anchorMissing=!1;var r=pe(n);if(!xt(n)){Gt(e,r,!0);return}Gt(e,r);var a=c.comments.indexOf(e)+1,i=s("div",{class:"an-pin"+(e.id===c.activeId?" an-active":""),title:e.text||""},[s("span",{text:String(a)})]);i.style.background=e.color,i.style.left=r.x+e.geom.x*r.w+"px",i.style.top=r.y+e.geom.y*r.h+"px",i.style.pointerEvents="auto",v(i,"click",function(o){o.stopPropagation(),be(e.id,!0)}),vt(i,e,a,"Pin"),W.appendChild(i)}var Kt=null;function $u(e,t){var n=e.geom.selectors.map(function(o,l){return ht(e,l)}),r=null;if(n.forEach(function(o,l){if(o){var u=pe(o),p=xt(o);Vt[e.id+":"+l]={x:u.x,y:u.y,w:u.w,h:u.h,hidden:!p},!r&&p&&(r=u)}}),!n.some(Boolean)){e.__anchorMissing=!0,Pa(e,t);return}if(e.__anchorMissing=!1,!!r){e.id===c.activeId&&Bo(e,!1);var a=c.comments.indexOf(e)+1,i=s("div",{class:"an-pin an-group"+(e.id===c.activeId?" an-active":""),title:e.text||""},[s("span",{text:String(a)})]);i.style.background=e.color,i.style.left=r.x+"px",i.style.top=r.y+"px",i.style.pointerEvents="auto",v(i,"click",function(o){o.stopPropagation(),be(e.id,!0)}),v(i,"mouseenter",function(){Or(e,!0)}),v(i,"mouseleave",function(){Or(e,!1)}),vt(i,e,a,"Group"),W.appendChild(i)}}function Bo(e,t){!e.geom||!e.geom.selectors||e.geom.selectors.forEach(function(n,r){var a=ht(e,r);if(xt(a)){var i=pe(a),o=s("span",{class:"an-gchip",text:String(r+1)});o.style.background=e.color;var l=s("div",{class:"an-gout"+(t?" an-gprev":""),"data-gid":e.id,"data-member":String(r+1),"aria-hidden":"true"},[o]);l.style.cssText="left:"+i.x+"px;top:"+i.y+"px;width:"+i.w+"px;height:"+i.h+"px;border-color:"+e.color+";--an-gfill:"+Xt(e.color,.22),Kt&&Kt.id===e.id&&Kt.member===r&&l.classList.add("an-flash"),W.insertBefore(l,W.firstChild)}})}function Or(e,t){!W||!c.enabled||(Array.prototype.forEach.call(W.querySelectorAll(".an-gprev"),function(n){n.remove()}),t&&e.id!==c.activeId&&e.type==="group"&&!(e.resolved&&!Tr())&&Bo(e,!0))}function Ju(e,t){var n=ht(e,t);if(n){n.scrollIntoView({block:"center"});var r=Kt={id:e.id,member:t};P(function(){Kt===r&&(Kt=null,W&&Array.prototype.forEach.call(W.querySelectorAll(".an-gout.an-flash"),function(a){a.classList.remove("an-flash")}))},1200),c.activeId=e.id,ne(),U()}}var H,Q=null,Fo=0;function Ho(){H||(H=s("div",{id:"__an_compose"}),X().appendChild(H),v(h,"pointerdown",Uo))}function Uo(e){if(!(!H||performance.now()-Fo<120)){var t=h.getElementById("__an_namewrap");if(!(t&&t.contains(e.target))){for(var n=e.target;n&&n.nodeType===1;n=n.parentNode){var r=n.getAttribute("data-action");if(n.classList.contains("an-grip")||r==="freeze"||r==="group-toggle"||n.id==="__an_groupbar")return}H.classList.contains("an-show")&&!H.contains(e.target)&&Wt()}}}function Mn(e,t,n){yt(),Ho(),Fo=performance.now(),Q=n;var r={highlight:"Highlight",shape:n.geom&&n.geom.kind==="circle"?"Circle":"Rectangle",pin:"Pin",pen:"Sketch",block:"Section",group:"Group"}[n.type]||"Note";if(H.innerHTML="",H.appendChild(s("div",{class:"an-ctitle"},[Qu(n.color),h.createTextNode(r+" comment"),c.author?(function(){var A=s("span",{style:"margin-left:auto"});return A.appendChild(pn(c.author,20)),A})():null])),n.anchor&&n.anchor.exact&&H.appendChild(s("div",{class:"an-cquote",text:n.anchor.exact})),n.target&&n.target.label&&H.appendChild(s("div",{class:"an-con",title:n.target.label,text:"On: "+n.target.label})),n.targets){var a=n.targets.map(function(A,M){return A?A.label:n.geom.selectors[M]}).join(", ");H.appendChild(s("div",{class:"an-con",title:a,text:"On "+n.targets.length+" elements: "+a}))}var i=s("textarea",{class:"an-ta",rows:"3",placeholder:"Write your review\u2026"});H.appendChild(i),Di(i);var o=s("button",{class:"an-primary",text:"Comment"}),l=s("button",{class:"an-ghost",text:"Cancel"}),u=navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||"",p=/Mac|iPhone|iPad/i.test(u);H.appendChild(s("div",{class:"an-cfoot"},[s("span",{class:"an-ckbd",text:(p?"\u2318":"Ctrl")+"\u21B5 to post"}),l,o])),v(o,"click",function(){if(!c.author&&cr()){o.disabled=!0,Qe().then(null,function(){}).then(function(){o.disabled=!1,c.author||!cr()?o.click():Mr(function(){o.click()})});return}if(!c.author){Qi(function(){o.click()});return}n.author=c.author,n.text=i.value.trim(),ed(n)}),v(l,"click",Wt),v(i,"keydown",function(A){(A.metaKey||A.ctrlKey)&&A.key==="Enter"&&o.click(),A.key==="Escape"&&Wt(),A.stopPropagation()});var f=m.innerWidth,g=m.innerHeight,y=Math.min(304,f-16),w=210,b=f<=640,T,C;b?(T=8,C=Math.max(8,Math.min(t,g*.45))):(T=Math.min(Math.max(8,e),f-y-8),C=Math.min(Math.max(8,t),g-w-8)),H.style.left=T+m.scrollX+"px",H.style.top=C+m.scrollY+"px",H.classList.add("an-show"),P(function(){i.focus()},30)}function Mr(e){if(h.getElementById("__an_namewrap"))return;var t=s("div",{id:"__an_namewrap"}),n=s("input",{placeholder:"e.g. Jane Doe",value:c.author||""}),r=s("button",{text:"Start reviewing"}),a=[s("h3",{class:"an-nt",text:"Please provide your name"}),s("p",{class:"an-nd",text:"Your name appears on every comment so collaborators know who said what. Saved on this device \u2014 you won't be asked again."})];c.note&&a.push(s("div",{class:"an-nnote"},[s("span",{class:"an-nlbl",text:"What to review"}),s("span",{text:c.note})])),a.push(n,r),E&&a.push(Ji());var i=s("div",{id:"__an_namebox"},a);t.appendChild(i),X().appendChild(t);var o=Ta(t);function l(){fr=!0,c.author=n.value.trim()||"Anonymous",D.set("an-author",c.author),o(),t.remove(),ii(),E&&!d.token&&ro(),e&&e()}v(r,"click",l),v(n,"keydown",function(u){u.key==="Enter"&&l()}),P(function(){n.focus()},40)}function Qu(e){var t=s("span");return t.style.cssText="width:11px;height:11px;border-radius:50%;display:inline-block;background:"+e,t}var Ra=[];function Zu(e,t){Ra=Do(e,t,"__temp")}function Na(){Ra.forEach(function(e){e.remove()}),delete qt.__temp,Ra=[]}function Wt(){Q=null,Na(),H&&H.classList.remove("an-show"),Ge(),Ye("cursor")}function Yo(){Q=null,Na(),H&&H.classList.remove("an-show")}function ed(e){if(!(O||Q!==e)){var t=jl(e);t&&(H.classList.remove("an-show"),Na(),c.comments.push(t),Q=null,c.activeId=t.id,Ge(),ne(),U(),rn(),Ye("cursor"),Q=null)}}var Pn=!1;v(h,"pointerup",function(e){if(c.enabled&&!re){if(Pn){Pn=!1;return}c.tool!=="pin"&&(H&&H.classList.contains("an-show")||H&&H.contains(e.target)||e.target.closest&&(e.target.closest("#__an_bar")||e.target.closest("#__an_panel")||e.target.closest("#__an_toasts"))||P(function(){var t=m.getSelection();if(!(!t||t.isCollapsed)){var n=t.getRangeAt(0);if(!J(n.commonAncestorContainer)){var r=zu(n);if(r){var a=n.getBoundingClientRect();Zu(n.cloneRange(),c.color),t.removeAllRanges();var i=n.commonAncestorContainer;i&&i.nodeType!==1&&(i=i.parentElement),Mn(a.left,a.bottom+6,{type:"highlight",color:c.color,anchor:r,target:Bt(i)})}}}},0))}});var re=null;function Da(e){if(c.enabled&&!(e.button!==0&&e.pointerType==="mouse")&&!(e.target.closest&&(e.target.closest("#__an_bar")||e.target.closest("#__an_panel")||e.target.closest("#__an_compose")||e.target.closest("#__an_toasts")||e.target.closest("#__an_namewrap")||e.target.closest("#__an_hint")||e.target.closest("#__an_groupbar")))){var t=Nr(e.target);if(t)return Da(ld(e,ns(e.target,e.clientX,e.clientY)||t));var n=c.tool,r=Ut(e);if(n==="pin"&&(e.shiftKey||Pr)){var a=wr(r),i=a&&pe(a);i&&(i.w<1||i.h<1)&&(a=null),a=a||ja(r),e.preventDefault();var o=h.activeElement;o&&o!==h.body&&J(o)&&o.blur&&o.blur(),Q&&Yo(),a&&a!==(a.ownerDocument||h).body?rd(a):Qt();return}if(n==="pin"){if(Q&&Q.type==="group"){Yo(),Ge();return}var l=wr(r),u=l&&pe(l);u&&(u.w<1||u.h<1)&&(l=null);var p=l||ja(r),f=pe(p),g=(e.pageX-f.x)/f.w,y=(e.pageY-f.y)/f.h;Mn(e.clientX+6,e.clientY+6,{type:"pin",color:c.color,geom:{kind:"pin",selector:jt(p),x:Go(g),y:Go(y),vw:m.innerWidth,vh:m.innerHeight},target:l?Bt(l):null});return}if(n==="rect"||n==="circle"||n==="pen"){e.preventDefault(),Sr();var w=ja(r);re={tool:n,anchorEl:w,box:pe(w),startTarget:r,startX:e.pageX,startY:e.pageY,points:[[e.pageX,e.pageY]],node:null};var b=r.ownerDocument&&r.ownerDocument!==h?r:B;if(e.pointerId!=null&&b&&b.setPointerCapture)try{b.setPointerCapture(e.pointerId)}catch(T){}}}}function qo(e){if(re){e.preventDefault();var t=re;if(t.node&&B.removeChild(t.node),t.tool==="rect"){var n=Math.min(t.startX,e.pageX),r=Math.min(t.startY,e.pageY);t.node=ie("rect",{x:n,y:r,width:Math.abs(e.pageX-t.startX),height:Math.abs(e.pageY-t.startY),rx:6,fill:Xt(c.color,.08),stroke:c.color,"stroke-width":2.5})}else if(t.tool==="circle"){var a=(t.startX+e.pageX)/2,i=(t.startY+e.pageY)/2;t.node=ie("ellipse",{cx:a,cy:i,rx:Math.abs(e.pageX-t.startX)/2,ry:Math.abs(e.pageY-t.startY)/2,fill:Xt(c.color,.07),stroke:c.color,"stroke-width":2.5})}else if(t.tool==="pen"){Xo(t,e.pageX,e.pageY);var o=t.points.map(function(l,u){return(u?"L":"M")+l[0]+" "+l[1]}).join(" ");t.node=ie("path",{d:o,fill:"none",stroke:c.color,"stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round"})}B.appendChild(t.node)}}function Xo(e,t,n){var r=e.points[e.points.length-1];(!r||Math.abs(r[0]-t)>.5||Math.abs(r[1]-n)>.5)&&e.points.push([t,n])}function Vo(e){if(!re)return;var t=re;re=null,t.node&&B.removeChild(t.node);var n=t.box,r,a=null;function i(){try{m.getSelection&&m.getSelection().removeAllRanges()}catch(y){}}if(t.tool==="pen"){Xo(t,e.pageX,e.pageY);var o=e.pageX-t.startX,l=e.pageY-t.startY;if(t.points.length<2||Math.sqrt(o*o+l*l)<6)return i(),Pn=!0,Ye("cursor");r={kind:"pen",selector:jt(t.anchorEl),points:t.points.map(function(y){return[(y[0]-n.x)/n.w,(y[1]-n.y)/n.h]}),vw:m.innerWidth,vh:m.innerHeight},a=Bt(wr(t.startTarget))}else{var u=Math.min(t.startX,e.pageX),p=Math.min(t.startY,e.pageY),f=Math.abs(e.pageX-t.startX),g=Math.abs(e.pageY-t.startY);if(f<6&&g<6)return i(),Pn=!0,Ye("cursor");r={kind:t.tool==="circle"?"circle":"rect",selector:jt(t.anchorEl),x:(u-n.x)/n.w,y:(p-n.y)/n.h,w:f/n.w,h:g/n.h,vw:m.innerWidth,vh:m.innerHeight},a=Bt(bu(u-m.scrollX,p-m.scrollY,f,g,t.anchorEl.ownerDocument)||t.anchorEl)}Mn(e.clientX+6,e.clientY+6,{type:t.tool==="pen"?"pen":"shape",color:c.color,geom:r,target:a})}var td=/^(MAIN|ARTICLE|SECTION|ASIDE|HEADER|FOOTER|NAV)$/,nd=/\b(container|wrap(?:per)?|content|layout|inner|page)\b/;function ja(e){for(var t=e&&e.ownerDocument&&e.ownerDocument.body||h.body,n=e;n&&n!==t;){if(J(n)){n=Ln(n);continue}var r=!!n.id,a=td.test(n.nodeName),i=n.classList&&nd.test(n.className);if(r||a||i){var o=n.getBoundingClientRect();if(o.width>80&&o.height>40)return n}n=Ln(n)}return t}function Go(e){return Math.max(0,Math.min(1,e))}v(h,"pointerdown",Da,!0),v(h,"pointermove",qo,!0),v(h,"pointerup",Vo,!0);var _e=null,He=null,za=0,bt=null;function yt(){He=null,bt=null,_e&&_e.classList.remove("an-show")}function Ko(e){(!_e||!_e.isConnected)&&(_e=s("div",{id:"__an_hover","aria-hidden":"true"},[s("span",{class:"an-hlabel"})]),X().appendChild(_e)),e!==He&&(He=e,_e.firstChild.textContent=Eo(e,Co(e),yr(e)));var t=gt(e);_e.style.left=t.left+"px",_e.style.top=t.top+"px",_e.style.width=t.width+"px",_e.style.height=t.height+"px",_e.classList.toggle("an-below",t.top<28),_e.classList.add("an-show")}function Wo(e){if(!c.enabled||c.tool!=="pin"||e.pointerType==="touch"||Q||re){He&&yt();return}var t=Nr(e.target);bt=t?ns(e.target,e.clientX,e.clientY)||t:Ut(e),!za&&(za=St(function(){za=0;var n=bt&&(bt.nodeName==="IFRAME"&&ts(bt)?bt:wr(bt));n?Ko(n):yt()}))}function $o(e){e.relatedTarget||yt()}function Jo(e){!c.enabled||c.tool!=="pin"||J(Ut(e))||(e.preventDefault(),e.stopPropagation())}v(h,"pointermove",Wo,!0),v(h,"mouseout",$o),v(h,"click",Jo,!0);var V=[],Pr=!1,we=null,$t=null,Ba=null,Jt=null,Fa=0,Ha=-1;function Qo(e){Pr=e;var t=I&&I.querySelector('[data-action="group-toggle"]');t&&(t.setAttribute("aria-pressed",e?"true":"false"),t.classList.toggle("an-on",e))}function rd(e){var t=V.indexOf(e);t>=0?V.splice(t,1):V.length>=Fr?L("A comment can cover up to "+Fr+" elements.",{kind:"info"}):V.push(e),Qt()}function ad(){if(!we){we=s("div",{id:"__an_gsel","aria-hidden":"true"}),Ba=s("span",{class:"an-gcount","aria-live":"polite"}),Jt=s("button",{type:"button",class:"an-primary","data-action":"group-comment"});var e=s("button",{type:"button",class:"an-ghost","data-action":"group-clear",text:"Clear"});v(Jt,"click",function(t){t.stopPropagation(),Zo()}),v(e,"click",function(t){t.stopPropagation(),Ge()}),$t=s("div",{id:"__an_groupbar",class:Dn,role:"group","aria-label":"Selected elements"},[Ba,Jt,e])}we.isConnected||X().appendChild(we),$t.isConnected||X().appendChild($t)}function Qt(){if(V=V.filter(et),!(!we&&!V.length)){for(ad();we.children.length>V.length;)we.removeChild(we.lastChild);for(;we.children.length<V.length;)we.appendChild(s("div",{class:"an-gsel"},[s("span",{class:"an-gchip"})]));var e=V.map(gt);e.forEach(function(n,r){var a=we.children[r];a.style.left=n.left+"px",a.style.top=n.top+"px",a.style.width=n.width+"px",a.style.height=n.height+"px",a.firstChild.textContent=String(r+1)});var t=V.length;t!==Ha&&(Ha=t,Ba.textContent=t+(t===1?" element selected":" elements selected"),Jt.textContent="Comment on "+t+(t===1?" element":" elements"),Jt.disabled=t<2,Jt.title=t<2?"Pick at least 2 elements":""),$t.classList.toggle("an-show",t>0&&!(Q&&Q.type==="group"))}}function Ge(){V=[],Ha=-1,Qo(!1),we&&(we.innerHTML=""),$t&&$t.classList.remove("an-show")}function Zo(){if(V=V.filter(et),!c.enabled||V.length<2){Qt();return}var e=gt(V[V.length-1]);Mn(e.right+6,e.top+6,{type:"group",color:c.color,geom:{kind:"group",selectors:V.map(jt),vw:m.innerWidth,vh:m.innerHeight},targets:V.map(function(t){return Bt(t)||null})}),Qt()}function Rr(){!V.length||Fa||(Fa=St(function(){Fa=0,Qt()}))}v(h,"scroll",Rr,{passive:!0,capture:!0}),v(m,"resize",Rr);var id=3,Ae=[],Zt=[],Ze=[],Ua=0,Ya="__an_framestyle",od="body.an-drawing{cursor:crosshair!important;touch-action:none;user-select:none;-webkit-user-select:none}body.an-drawing ::selection{background:transparent}";rt.push(function(){md()});function Rn(e){if(Ze.indexOf(e)>=0)return null;var t=null;try{t=e.contentDocument}catch(n){t=null}return t&&t.documentElement?t:(!O&&e.ownerDocument&&(Re(e.ownerDocument,e,"load",as),Ze.push(e)),null)}function qa(e){try{return e.defaultView&&e.defaultView.frameElement||null}catch(t){return null}}function Xa(e){for(var t=0,n=0,r=0;e&&e!==h&&r<8;r++){var a=qa(e);if(!a)break;var i=a.getBoundingClientRect();t+=i.left+a.clientLeft,n+=i.top+a.clientTop,e=a.ownerDocument}return{x:t,y:n}}function sd(e){for(var t=0;e&&e!==h&&t<8;t++){var n=qa(e);if(!n||!n.isConnected||Rn(n)!==e)return!1;e=n.ownerDocument}return e===h}function et(e){return!!e&&e.isConnected&&sd(e.ownerDocument)}function es(e){var t=e.ownerDocument;if(!t||t===h)return!0;for(var n=gt(e),r=0;t&&t!==h&&r<8;r++){var a=qa(t);if(!a)return!1;var i=gt(a),o=i.left+a.clientLeft,l=i.top+a.clientTop;if(n.right<=o||n.left>=o+a.clientWidth||n.bottom<=l||n.top>=l+a.clientHeight)return!1;t=a.ownerDocument}return!0}function Va(e){var t=e.currentTarget&&e.currentTarget.nodeType===9?e.currentTarget:e.target.ownerDocument,n=Xa(t),r=e.clientX+n.x,a=e.clientY+n.y;return{clientX:r,clientY:a,pageX:r+m.scrollX,pageY:a+m.scrollY,button:e.button,pointerType:e.pointerType,pointerId:e.pointerId,shiftKey:e.shiftKey,target:e.target,composedPath:function(){return e.composedPath?e.composedPath():[]},preventDefault:function(){e.preventDefault()},stopPropagation:function(){e.stopPropagation()}}}var Te=[];function ts(e){for(var t=0;t<Te.length;t++)if(Te[t].iframe===e)return Te[t];return null}function Nr(e){for(var t=0;e&&t<Te.length;t++)if(Te[t].el===e)return Te[t].iframe;return null}function ld(e,t){return{clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY,button:e.button,pointerType:e.pointerType,pointerId:e.pointerId,shiftKey:e.shiftKey,target:t,composedPath:function(){return[t]},preventDefault:function(){e.preventDefault()},stopPropagation:function(){e.stopPropagation()}}}function ns(e,t,n){for(var r=[],a=e,i=0;i<=Te.length&&Nr(a);i++)a.style.pointerEvents="none",r.push(a),a=h.elementFromPoint(t,n);r.forEach(function(u){u.style.pointerEvents=""});for(var o=0;a&&a.shadowRoot&&a.shadowRoot.elementFromPoint&&o<32;o++){var l=a.shadowRoot.elementFromPoint(t,n);if(!l||l===a)break;a=l}return a&&!Nr(a)?a:null}function Nn(){var e=[];!O&&c.enabled&&Ga(c.tool)&&Ze.forEach(function(t){if(!(!t.isConnected||!et(t)||J(t))){var n=gt(t);n.width>=1&&n.height>=1&&e.push({iframe:t,r:n})}}),Te=Te.filter(function(t){var n=e.some(function(r){return r.iframe===t.iframe});return!n&&t.el.parentNode&&t.el.parentNode.removeChild(t.el),n}),e.forEach(function(t){var n=ts(t.iframe);n||(rs++,n={iframe:t.iframe,el:s("div",{id:"__an_frameshield-"+rs,class:"an-frameshield","aria-hidden":"true"})},Te.push(n)),n.el.isConnected||X().appendChild(n.el);var r=n.el.style;r.left=t.r.left+"px",r.top=t.r.top+"px",r.width=t.r.width+"px",r.height=t.r.height+"px"})}var rs=0;rt.push(function(){Te.forEach(function(e){e.el.remove()}),Te=[]});function ud(e){Da(Va(e))}function dd(e){re&&qo(Va(e))}function cd(e){re&&(Vo(Va(e)),Pn=!1)}function fd(){mt&&mt(),Rr(),He&&!Ua&&(Ua=St(function(){Ua=0,He&&(et(He)?Ko(He):yt())}))}function as(e){if(!O){var t=Ze.indexOf(e.currentTarget);t>=0&&Ze.splice(t,1),He&&!et(He)&&yt(),Dr(),Ft(),oi(),Rr()}}function Re(e,t,n,r,a){for(var i=0;i<Zt.length;i++){var o=Zt[i];if(o.target===t&&o.name===n&&o.fn===r)return}t.addEventListener(n,r,a),Zt.push({owner:e,target:t,name:n,fn:r,options:a})}function is(e){Zt=Zt.filter(function(t){if(e(t))return!0;try{t.target.removeEventListener(t.name,t.fn,t.options)}catch(n){}return!1})}function Dr(){O||(hd(),os(h,1),Nn())}function os(e,t){var n;try{n=e.getElementsByTagName("iframe")}catch(o){return}for(var r=0;r<n.length;r++){var a=n[r];if(!J(a)){Re(e,a,"load",as);var i=Rn(a);i&&(pd(a,i,t),t<id&&os(i,t+1))}}}function pd(e,t,n){var r=t.defaultView;if(r){for(var a=null,i=0;i<Ae.length&&!a;i++)Ae[i].doc===t&&(a=Ae[i]);a||(a={iframe:e,doc:t,win:r,depth:n,body:null},Ae.push(a)),Re(t,t,"pointerdown",ud,!0),Re(t,t,"pointermove",dd,!0),Re(t,t,"pointerup",cd,!0),Re(t,t,"pointermove",Wo,!0),Re(t,t,"mouseout",$o),Re(t,t,"click",Jo,!0),Re(t,t,"pointerdown",Uo),Re(t,t,"keydown",ds),Re(t,r,"scroll",fd,Oa),ss(a),ls(a)}}function hd(){var e=[h];Ae=Ae.slice().sort(function(t,n){return t.depth-n.depth}).filter(function(t){var n=t.iframe.isConnected&&e.indexOf(t.iframe.ownerDocument)>=0&&Rn(t.iframe)===t.doc;return n?e.push(t.doc):t.body&&he&&he.unobserve(t.body),n}),is(function(t){return e.indexOf(t.owner)>=0&&(t.target.nodeType!==1||t.target.isConnected)}),Ze=Ze.filter(function(t){return t.isConnected&&Zt.some(function(n){return n.target===t})})}function Ga(e){return e==="rect"||e==="circle"||e==="pen"||e==="pin"}function ss(e){var t=e.doc,n=t.head||t.documentElement;if(n&&!t.getElementById(Ya)){var r=t.createElement("style");r.id=Ya,r.textContent=od;var a=Me&&(Me.nonce||Me.getAttribute("nonce"));a&&r.setAttribute("nonce",a),n.appendChild(r)}t.body&&t.body.classList.toggle("an-drawing",Ga(c.tool))}function ls(e){Se&&c.enabled&&Se.observe(e.doc.documentElement,si()),he&&e.doc.body&&e.body!==e.doc.body&&(e.body&&he.unobserve(e.body),e.body=e.doc.body,he.observe(e.body))}function us(e){e.ownerDocument!==h&&!es(e)&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}function gd(e){for(var t=0;t<Ae.length;t++)if(Ae[t].body===e)return!0;return!1}function md(){Ae.forEach(function(e){try{e.doc.body&&e.doc.body.classList.remove("an-drawing");var t=e.doc.getElementById(Ya);t&&t.remove()}catch(n){}}),Ae=[],Ze=[],is(function(){return!1})}var I,ge,j,me,en,ve,jr,tn,Ne,ke,Ue,Dn=k.position==="bottom-left"?"an-left":"an-right";function vd(){var e=s("style",{id:"__an_style",html:ju}),t=Me&&(Me.nonce||Me.getAttribute("nonce"));t&&e.setAttribute("nonce",t),h.head.appendChild(e),xd(),k.accent&&(X().style.setProperty("--an-btn-bg",k.accent),X().style.setProperty("--an-btn-fg","#fff"));var n=s("div",{id:"__an_root"});X().appendChild(n),I=s("div",{id:"__an_bar",class:Dn});var r=s("button",{class:"an-grip",type:"button","aria-label":"Move toolbar",title:"Drag to move \xB7 double-click to reset","aria-describedby":"__an_griphelp",html:S.grip});Td(r),I.appendChild(r);var a=[["cursor","Browse","V"],["highlight","Highlight text","H"],["rect","Rectangle","R"],["circle","Circle","C"],["pen","Freehand","D"],["pin","Pin","P"]];a.forEach(function(_){var F=_[1]+" \xB7 "+_[2],Le=s("button",{class:"an-btn","data-tool":_[0],"data-tip":F,title:F,"aria-label":_[1],html:S[_[0]]});if(v(Le,"click",function(){Ye(_[0])}),I.appendChild(Le),_[0]==="pin"){var Xe=s("button",{type:"button",class:"an-btn","data-action":"group-toggle","data-tip":"Select several \xB7 Shift+click",title:"Select several \xB7 Shift+click","aria-label":"Select several","aria-pressed":"false",html:S.group});v(Xe,"click",function(di){di.stopPropagation(),c.enabled&&c.tool==="pin"&&Qo(!Pr)}),I.appendChild(Xe)}}),I.appendChild(s("div",{class:"an-sep"}));var i=s("button",{id:"__an_colorbtn","data-tip":"Color",title:"Color","aria-label":"Color"}),o=s("span",{class:"an-swdot"});o.style.background=c.color,i.appendChild(o);var l=s("div",{id:"__an_colorpop"});Kr.forEach(function(_){var F=s("div",{class:"an-sw"+(_.hex===c.color?" an-on":""),"data-c":_.hex,title:_.name});F.style.background=_.hex,v(F,"click",function(Le){Le.stopPropagation(),c.color=_.hex,D.set("an-color",_.hex),o.style.background=_.hex,l.querySelectorAll(".an-sw").forEach(function(Xe){Xe.classList.toggle("an-on",Xe.getAttribute("data-c")===_.hex)}),l.classList.remove("an-show")}),l.appendChild(F)}),i.appendChild(l),v(i,"click",function(_){_.stopPropagation(),l.classList.toggle("an-show")}),v(h,"click",function(){l.classList.remove("an-show")}),I.appendChild(i);var u=s("button",{class:"an-btn","data-action":"freeze","data-tip":"Freeze motion \xB7 F",title:"Freeze motion \xB7 F","aria-label":"Freeze motion","aria-pressed":"false",html:S.freeze});v(u,"click",function(){zn(!G)}),I.appendChild(u),I.appendChild(s("div",{class:"an-sep"}));var p=s("button",{class:"an-btn","data-tip":"Comments \xB7 A",title:"Comments \xB7 A","aria-label":"Comments",html:S.list});en=s("span",{class:"an-count"}),en.style.display="none",p.appendChild(en),v(p,"click",Qa),I.appendChild(p);{var f=s("div",{class:"an-setwrap"});un=s("button",{class:"an-btn",type:"button","data-action":"settings","data-tip":"Settings",title:"Settings","aria-label":"Settings","aria-haspopup":"dialog","aria-expanded":"false",html:S.settings}),ae=s("div",{id:"__an_settings",role:"dialog","aria-labelledby":"__an_set_t"}),v(un,"click",function(_){_.stopPropagation(),Ur()?ui(!1):Vs()}),v(ae,"click",function(_){_.stopPropagation()}),v(ae,"keydown",function(_){_.key==="Escape"&&(_.stopPropagation(),ui(!0))}),v(h,"click",function(){ui(!1)}),f.appendChild(un),f.appendChild(ae),I.appendChild(f)}var g=s("button",{class:"an-btn","data-tip":"Hide review tools \xB7 O",title:"Hide review tools \xB7 O","aria-label":"Hide review tools",html:S.hide});v(g,"click",function(){De(!1)}),I.appendChild(g),n.appendChild(I),n.appendChild(s("span",{id:"__an_griphelp",class:"an-sr",text:"Arrow keys move the toolbar; Shift moves it further; Home puts it back."})),tn=s("div",{id:"__an_live",class:"an-sr",role:"status","aria-live":"polite"}),n.appendChild(tn),ue=Ad(),tt(!0),Ne=s("button",{id:"__an_launch",class:Dn,html:S.bubble+"<span>Review</span>"}),ot=s("span",{class:"an-count an-mcount"}),ot.style.display="none",Ne.appendChild(ot),v(Ne,"click",function(){!c.author&&!cr()?Qi(function(){De(!0)}):De(!0)}),X().appendChild(Ne),ve=s("div",{id:"__an_hint"}),n.appendChild(ve),jr=s("div",{id:"__an_frozen"},[h.createTextNode("Motion paused \xB7 press "),s("kbd",{text:"F"}),h.createTextNode(" to resume")]),n.appendChild(jr),ke=s("div",{id:"__an_help",class:Dn},[s("h3",{text:"Keyboard shortcuts"})]),[["V","Browse"],["H","Highlight"],["R","Rectangle"],["C","Circle"],["D","Freehand"],["P","Pin"],["A","Comments panel"],["M","Copy for AI agent"],["F","Freeze motion"],["O","Show / hide tools"],["Esc","Cancel"],["?","This card"]].forEach(function(_){ke.appendChild(s("div",{class:"an-krow"},[s("span",{text:_[1]}),s("kbd",{text:_[0]})]))}),n.appendChild(ke),ge=s("div",{id:"__an_panel"}),nr=s("h2",{text:"Comments"}),sa=s("span",{class:"an-pcount",id:"__an_sub",text:"0"}),tr=s("span",{class:"an-pcount",id:"__an_peoplecount",text:"0"}),bn=s("button",{class:"an-pback","data-action":"people-back","aria-label":"Back to comments",html:S.back+"<span>Comments</span>",onclick:function(_){_.stopPropagation(),Al()}}),xn=s("button",{class:"an-hbtn","data-action":"people",html:S.people,title:"People","aria-label":"People",onclick:function(_){_.stopPropagation(),Sl()}}),la=s("button",{class:"an-hbtn",html:S.upload,title:"Import comments from a JSON file","aria-label":"Import comments from a JSON file",onclick:function(_){_.stopPropagation(),ai()}}),ua=s("button",{class:"an-hbtn",html:S.download,title:"Download comments as JSON","aria-label":"Download comments as JSON",onclick:function(_){_.stopPropagation(),Un()}});var y=s("div",{class:"an-ph"},[bn,nr,sa,tr,s("span",{class:"an-hgap"}),xn,la,ua,s("button",{class:"an-x",html:"×","aria-label":"Close comments panel",onclick:Bn})]),w=s("div",{class:"an-search"},[(function(){var _=s("span",{html:S.search});return _.firstChild})()]),b=s("input",{placeholder:"Search comments\u2026"});v(b,"input",function(){c.query=b.value.toLowerCase(),U()}),w.appendChild(b);var T=s("div",{class:"an-filters"});[["open","Open"],["resolved","Resolved"],["all","All"]].concat(E?[["mentions","Mentions"]]:[]).forEach(function(_){var F=s("span",{class:"an-chip"+(c.filter===_[0]?" an-on":""),"data-f":_[0],text:_[1]});_[0]==="mentions"&&(aa=F),v(F,"click",function(){c.filter=_[0],T.querySelectorAll(".an-chip").forEach(function(Le){Le.classList.toggle("an-on",Le.getAttribute("data-f")===_[0])}),ne(),U()}),T.appendChild(F)}),ia=T,oa();var C=s("div",{class:"an-toolsrow"},[w,T]);da=C,Ue=s("div",{id:"__an_note"}),j=s("div",{class:"an-list",id:"__an_list"}),me=s("div",{id:"__an_foot"}),ge.appendChild(y),ge.appendChild(C),ge.appendChild(Ue),ge.appendChild(j),ge.appendChild(me),n.appendChild(ge),Mt(),v(h,"keydown",ds);var A;if(v(m,"resize",function(){tt(),Ft(),R(A),A=P(ne,150)}),v(m,"storage",function(_){_.key===Qn?ei():E&&_.key===ha&&le()}),E&&(v(h,"visibilitychange",function(){h.hidden||dt()}),v(m,"online",function(){d.failures=0,te(0),dt()})),h.fonts&&h.fonts.ready&&h.fonts.ready.then(function(){P(ne,60)}),v(m,"load",function(){P(ne,120)}),typeof ResizeObserver!="undefined"){let _=function(){Nn(),!(!B||re||Q)&&(Ia(),(Hu()||Object.keys(qt).length)&&ne())};var M=0,Ie=0,Yr=new ResizeObserver(function(){M||(M=St(function(){M=0,_()}))});he=Yr,$e=h.body,Yr.observe($e),mt=function(){Ie||(Ie=St(function(){Ie=0,_()}))},v(h,"scroll",mt,{passive:!0,capture:!0})}ps()}function ds(e){var t=Ut(e);if(!(t&&/INPUT|TEXTAREA|SELECT/.test(t.nodeName))&&!(t&&t.isContentEditable)&&!(e.metaKey||e.ctrlKey||e.altKey)){if(e.key==="o"){De(!c.enabled);return}if(c.enabled){var n={v:"cursor",h:"highlight",r:"rect",c:"circle",d:"pen",p:"pin"};if(n[e.key])Ye(n[e.key]);else if(e.key==="a")Qa();else if(e.key==="m")Xn({detail:qn()});else if(e.key==="f")zn(!G);else if(e.key==="?")ke.classList.toggle("an-show"),vs();else if(e.key==="Enter")V.length>=2&&!Q&&!J(t)&&(e.preventDefault(),Zo());else if(e.key==="Escape"){if(an())return;if(ke.classList.contains("an-show")){ke.classList.remove("an-show");return}if((V.length||Pr)&&!Q){Ge();return}Ye("cursor"),Wt()}}}}function xd(){var e;if(k.theme==="dark")e=!0;else if(k.theme==="light")e=!1;else{var t=bd();t!=null?e=t<.45:e=m.matchMedia&&m.matchMedia("(prefers-color-scheme: dark)").matches}X().classList.toggle("an-dark",!!e)}function bd(){for(var e=h.body;e;){var t=getComputedStyle(e).backgroundColor,n=t&&t.match(/rgba?\(([\d.]+),\s*([\d.]+),\s*([\d.]+)(?:,\s*([\d.]+))?\)/);if(n&&(n[4]===void 0||parseFloat(n[4])>.5))return(.2126*n[1]+.7152*n[2]+.0722*n[3])/255;e=e===h.body?h.documentElement:null}return null}var Ce,xe=null,jn=null,yd=k.blocks||"h1,h2,h3,h4,p,li,blockquote,pre,figure,.section-title,.section-deck,.hero-title,.pullquote,.fact-text";function cs(e){for(;e&&e.nodeType===1;){if(e.id&&String(e.id).indexOf("__an")===0||e.closest&&(e.closest("#__an_bar")||e.closest("#__an_panel")||e.closest("#__an_compose")))return null;if(e.matches&&e.matches(yd)){var t=e.getBoundingClientRect();if(t.width>60&&t.height>14)return e}e=Ln(e)}return null}function _d(){Ce=s("div",{id:"__an_plus",title:"Comment on this section",html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M12 6v12M6 12h12"/></svg>'}),X().appendChild(Ce),v(Ce,"click",function(r){if(r.stopPropagation(),!!xe){var a=xe.getBoundingClientRect();Mn(a.left,a.bottom+6,{type:"block",color:c.color,geom:{kind:"block",selector:jt(xe)},target:Bt(xe)}),nn(!0)}}),v(Ce,"mouseenter",function(){R(jn)}),v(Ce,"mouseleave",function(){nn()});var e=null;v(h,"mousemove",function(r){if(!e){var a=Ut(r);e=St(function(){if(e=null,!!c.enabled){if(c.tool!=="cursor"&&c.tool!=="highlight"){nn(!0);return}if(!re){var i=cs(a||h.elementFromPoint(r.clientX,r.clientY));i&&i!==xe&&(xe=i,Ka(i)),xe&&(wd(r.clientX,r.clientY)?(R(jn),Ce.classList.add("an-show")):nn())}}})}});var t=null,n=null;v(h,"touchstart",function(r){c.enabled&&(c.tool!=="cursor"&&c.tool!=="highlight"||(n=cs(Ut(r)),n&&(t=P(function(){n&&(xe=n,Ka(n),Ce.classList.add("an-show"))},500))))},{passive:!0}),v(h,"touchend",function(){R(t),n=null},{passive:!0}),v(h,"touchmove",function(){R(t),n=null},{passive:!0}),v(m,"scroll",function(){xe&&Ka(xe)},{passive:!0})}function wd(e,t){if(!xe)return!1;var n=Ce.getBoundingClientRect(),r=xe.getBoundingClientRect(),a=18;return e>=r.left-a&&e<=r.right+a&&t>=r.top-a&&t<=r.bottom+a||e>=n.left-a&&e<=n.right+a&&t>=n.top-a&&t<=n.bottom+a||e>=n.left-a&&e<=r.left+a&&t>=n.top-a&&t<=n.bottom+a}function Ka(e){var t=e.getBoundingClientRect();if(t.bottom<0||t.top>m.innerHeight){nn(!0);return}var n=getComputedStyle(e),r=parseFloat(n.lineHeight);(!r||isNaN(r))&&(r=parseFloat(n.fontSize)*1.3);var a=parseFloat(n.paddingTop)||0,i=t.top+a+r/2,o=i-15,l=t.left-40;l<6&&(l=t.left+6),Ce.style.left=l+"px",Ce.style.top=o+"px",R(jn),Ce.classList.add("an-show")}function nn(e){if(R(jn),e){Ce.classList.remove("an-show"),xe=null;return}jn=P(function(){Ce.classList.remove("an-show"),xe=null},600)}function De(e){e&&Ft(),e&&Hs(),c.enabled=e,rc(),D.set("an-off",e?"0":"1");var t=h.getElementById("__an_root");if(e)t&&(t.style.display=""),B&&(B.style.display=""),W&&(W.style.display=""),tt(),Ne&&Ne.classList.remove("an-show"),Dr(),ne(),U();else if(zn(!1),Ye("cursor"),Nn(),Wt(),Ge(),Bn(),nn(!0),ke&&ke.classList.remove("an-show"),La(),B&&(B.style.display="none"),W&&(W.style.display="none"),t&&(t.style.display="none"),Ne){var n=c.comments.filter(function(r){return!r.resolved}).length;Ne.querySelector("span").textContent=n?"Review ("+n+")":"Review",Ne.classList.add("an-show")}}function Ye(e){if(!(Bs&&e!=="cursor")){yt(),e!==c.tool&&Ge(),c.tool=e,I.classList.toggle("an-pinning",e==="pin"),tt(),I.querySelectorAll(".an-btn[data-tool]").forEach(function(r){r.classList.toggle("an-on",r.getAttribute("data-tool")===e)});var t=Ga(e);h.body.classList.toggle("an-drawing",t),Ae.forEach(ss),Nn();var n={highlight:"Select any text to highlight & comment",rect:"Drag to draw a rectangle",circle:"Drag to draw a circle",pen:"Draw freehand \u2014 release to comment",pin:'Click to drop a pin \xB7 Shift+click or "Select several" to pick several'};n[e]?kd(n[e]):Cd()}}function kd(e){ve.innerHTML="",ve.appendChild(h.createTextNode(e+" ")),ve.appendChild(s("kbd",{text:"Esc"})),ve.appendChild(h.createTextNode(" to cancel")),ve.classList.add("an-show")}function Cd(){ve.classList.remove("an-show")}var Ed=(function(){var e=':not([id^="__an"]):not([id^="__an"] *)';return e+", "+e+"::before, "+e+"::after { animation-play-state: paused !important; transition-duration: 0s !important; transition-delay: 0s !important; caret-color: transparent !important; }"})(),G=null;function fs(){if(G){typeof h.getAnimations=="function"&&h.getAnimations().forEach(function(r){var a=r.effect&&r.effect.target;if(!(typeof CSSAnimation!="undefined"?r instanceof CSSAnimation:r.animationName!==void 0)&&!(r.playState!=="running"||a&&J(a))){try{r.pause()}catch(i){return}G.anims.indexOf(r)<0&&G.anims.push(r)}});for(var e=h.querySelectorAll("video, audio"),t=0;t<e.length;t++){var n=e[t];if(!(n.paused||n.ended||J(n))){try{n.pause()}catch(r){continue}G.media.indexOf(n)<0&&G.media.push(n)}}}}function zn(e){if(e=!!e&&c.enabled&&!O,e===!!G)return e;if(e){G={anims:[],media:[],style:s("style",{id:"__an_freeze",text:Ed}),timer:null};var t=Me&&(Me.nonce||Me.getAttribute("nonce"));t&&G.style.setAttribute("nonce",t),fs(),h.head.appendChild(G.style),G.timer=setInterval(fs,250)}else clearInterval(G.timer),G.style.parentNode&&G.style.parentNode.removeChild(G.style),G.anims.forEach(function(n){try{n.playState==="paused"&&n.play()}catch(r){}}),G.media.forEach(function(n){try{if(n.paused&&!n.ended){var r=n.play();r&&r.catch&&r.catch(function(){})}}catch(a){}}),G=null;return ps(),tn&&(tn.textContent=e?"Motion paused.":"Motion resumed."),dr("annotate:freeze",{frozen:e}),e}function ps(){var e=I&&I.querySelector('[data-action="freeze"]');e&&(e.classList.toggle("an-on",!!G),e.setAttribute("aria-pressed",G?"true":"false")),jr&&jr.classList.toggle("an-show",!!G)}var Wa="an-bar-pos:"+(k.project||""),oe=8,Sd=398,ue=null;function Ad(){try{var e=JSON.parse(D.get(Wa)||"null");if(e&&(e.h==="left"||e.h==="right")&&(e.v==="top"||e.v==="bottom")&&se(e.x)&&se(e.y))return{h:e.h,x:e.x,v:e.v,y:e.y}}catch(t){}return null}function $a(e){var t=Math.max(oe,m.innerWidth-I.offsetWidth-oe),n=Math.max(oe,m.innerHeight-I.offsetHeight-oe),r=Math.round(Math.min(n,Math.max(oe,e.y)));return I.offsetHeight+2*oe>m.innerHeight&&(r=e.v==="top"?oe:m.innerHeight-I.offsetHeight-oe),{h:e.h,v:e.v,x:Math.round(Math.min(t,Math.max(oe,e.x))),y:r}}function hs(e){var t=e.left+e.width/2<m.innerWidth/2?"left":"right",n=e.top+e.height/2<m.innerHeight/2?"top":"bottom";return{h:t,x:t==="left"?e.left:m.innerWidth-e.right,v:n,y:n==="top"?e.top:m.innerHeight-e.bottom}}function tt(e){if(I){e&&I.classList.add("an-snap");var t=I.style;if(t.left=t.right=t.top=t.bottom="",I.classList.toggle("an-moved",!!ue),I.classList.remove("an-left"),I.classList.remove("an-right"),ue){var n=$a(ue),r=n.h==="left"?n.x+I.offsetWidth/2:m.innerWidth-n.x-I.offsetWidth/2;if(I.classList.add(r<m.innerWidth/2?"an-left":"an-right"),t[n.h]=n.x+"px",t[n.h==="left"?"right":"left"]="auto",t[n.v]=n.y+"px",t[n.v==="top"?"bottom":"top"]="auto",c.panelOpen&&m.innerWidth>640){var a=I.getBoundingClientRect(),i=m.innerWidth-Sd;a.right>i&&(t.left=Math.max(oe,Math.round(i-a.width))+"px",t.right="auto")}}else{I.classList.add(Dn);var o=parseFloat(getComputedStyle(I).bottom)||0;I.offsetHeight+o+oe>m.innerHeight&&(t.top=oe+"px",t.bottom="auto")}e&&(I.offsetWidth,I.classList.remove("an-snap")),vs()}}function gs(e){ue=$a(e);try{localStorage.setItem(Wa,JSON.stringify(ue))}catch(t){}tt(!0)}function ms(){ue=null;try{localStorage.setItem(Wa,"")}catch(e){}tt(!0)}function Ja(){tn&&(tn.textContent=ue?"Toolbar moved: "+ue.x+" px from the "+ue.h+", "+ue.y+" px from the "+ue.v+".":"Toolbar moved back to its corner.")}function vs(){if(ke){var e=ke.style;if(e.left=e.right=e.top=e.bottom="",!(!ue||!ke.classList.contains("an-show"))){var t=I.getBoundingClientRect(),n=ke.offsetWidth,r=ke.offsetHeight,a=t.left+t.width/2<m.innerWidth/2?t.right+8:t.left-8-n;e.left=Math.round(Math.min(m.innerWidth-n-oe,Math.max(oe,a)))+"px",e.top=Math.round(Math.min(m.innerHeight-r-oe,Math.max(oe,t.bottom-r)))+"px",e.right=e.bottom="auto"}}}function Td(e){var t=null;v(e,"pointerdown",function(r){if(r.button===0){var a=I.getBoundingClientRect();t={id:r.pointerId,sx:r.clientX,sy:r.clientY,dx:r.clientX-a.left,dy:r.clientY-a.top,moving:!1};try{e.setPointerCapture(r.pointerId)}catch(i){}r.preventDefault()}}),v(e,"pointermove",function(r){if(!(!t||r.pointerId!==t.id)&&!(!t.moving&&Math.abs(r.clientX-t.sx)+Math.abs(r.clientY-t.sy)<3)){t.moving=!0,I.classList.add("an-dragging");var a=I.style;a.right=a.bottom="auto",a.left=r.clientX-t.dx+"px",a.top=r.clientY-t.dy+"px"}});function n(r){if(!(!t||r.pointerId!==t.id)){var a=t.moving;t=null,I.classList.remove("an-dragging"),a&&gs(hs(I.getBoundingClientRect()))}}v(e,"pointerup",n),v(e,"pointercancel",n),v(e,"dblclick",function(){ms(),Ja()}),v(e,"keydown",function(r){if(!(r.altKey||r.ctrlKey||r.metaKey)){var a=r.shiftKey?64:16,i=0,o=0;if(r.key==="ArrowLeft")i=-a;else if(r.key==="ArrowRight")i=a;else if(r.key==="ArrowUp")o=-a;else if(r.key==="ArrowDown")o=a;else if(r.key!=="Home")return;if(r.preventDefault(),r.stopPropagation(),r.key==="Home"){ms(),Ja();return}var l=I.getBoundingClientRect();if(ue){var u=$a(ue),p=I.offsetWidth,f=I.offsetHeight,g=u.h==="left"?u.x:m.innerWidth-u.x-p,y=u.v==="top"?u.y:m.innerHeight-u.y-f;l={left:g,right:g+p,top:y,bottom:y+f,width:p,height:f}}gs(hs({left:l.left+i,right:l.right+i,top:l.top+o,bottom:l.bottom+o,width:l.width,height:l.height})),Ja()}})}function Qa(){c.panelOpen?Bn():rn()}function rn(){c.panelOpen=!0,c.filter==="mentions"&&Bi(),ge.classList.add("an-open");var e=h.getElementById("__an_root");e&&e.classList.add("an-popen"),tt(),ii(),U(),Id()}function Bn(){c.panelOpen=!1,x.open&&(x.open=!1,x.menu=null,x.confirm=null,Mt()),ge.classList.remove("an-open");var e=h.getElementById("__an_root");e&&e.classList.remove("an-popen"),tt()}var xs=!1;function Id(){if(!(xs||!ge)){xs=!0;var e=0,t=0,n=!1;v(ge,"touchstart",function(r){m.innerWidth>640||(e=r.touches[0].clientY,t=j?j.scrollTop:0,n=!1)},{passive:!0}),v(ge,"touchmove",function(r){if(!(m.innerWidth>640)){var a=r.touches[0].clientY-e;a>0&&t<=0&&(n=!0)}},{passive:!0}),v(ge,"touchend",function(r){if(!(!n||m.innerWidth>640)){var a=r.changedTouches[0].clientY-e;a>80&&Bn(),n=!1}},{passive:!0})}}function Fn(){var e=c.comments.filter(function(n){return!n.resolved}).length;en&&(en.textContent=e,en.style.display=e?"flex":"none");var t=h.getElementById("__an_sub");t&&(t.textContent=String(c.comments.length))}var bs={highlight:"Highlight",shape:"Shape",pin:"Pin",pen:"Sketch",note:"Note",block:"Section",group:"Group"};function Ld(e){return e=e||{},c.comments.filter(function(t){if(c.filter==="open"&&t.resolved&&!e[t.id]||c.filter==="resolved"&&!t.resolved)return!1;if(c.query){var n=((t.text||"")+" "+(t.author||"")+" "+(t.anchor&&t.anchor.exact?t.anchor.exact:"")+" "+(t.target?t.target.label+" "+t.target.selector:"")+" "+(t.type==="group"&&t.geom&&t.geom.selectors?t.geom.selectors.join(" ")+" "+(t.targets||[]).map(function(r){return r?r.label:""}).join(" "):"")+" "+(t.replies||[]).map(function(r){return r.text+" "+r.author}).join(" ")).toLowerCase();if(n.indexOf(c.query)<0)return!1}return!0})}var Za=!1;function Od(){var e={};return!Za||!j||Array.prototype.forEach.call(j.querySelectorAll(".an-card"),function(t){var n={},r=!1;[["reply",".an-replybox"],["edit",".an-editbox"]].forEach(function(a){var i=t.querySelector(a[1]),o=i&&i.querySelector("textarea");!i||!o||!i.classList.contains("an-show")||(n[a[0]]={value:o.value,focus:h.activeElement===o,start:o.selectionStart,end:o.selectionEnd},r=!0)}),r&&(e[t.getAttribute("data-id")]=n)}),e}function ys(e,t,n){if(e&&(t.classList.add("an-show"),n.value=e.value,e.focus)){n.focus({preventScroll:!0});try{n.setSelectionRange(e.start,e.end)}catch(r){}}}function ei(){Za=!0;try{on()}finally{Za=!1}}function U(){if(j){if(Mt(),x.open){j.querySelector("#__an_people")||$();return}var e=Od();if(j.innerHTML="",c.filter==="mentions"){wl(),Fn(),kt();return}var t=au(),n=Ld(t);if(!n.length){var r=c.query?"No comments match \u201C"+_i(c.query)+"\u201D.":c.filter==="resolved"?"Nothing resolved yet.":"No comments yet.<br>Select any text, or pick a tool from the toolbar \u2014 try <kbd>H</kbd> highlight or <kbd>P</kbd> pin.";j.appendChild(s("div",{class:"an-empty"},[s("div",{class:"an-eicon",html:S.bubble}),s("div",{html:r})])),Fn(),kt();return}n.forEach(function(a){var i=c.comments.indexOf(a)+1,o=a.type==="group"&&a.geom&&a.geom.selectors?a.geom.selectors:null,l=s("div",{class:"an-card"+(a.id===c.activeId?" an-active":"")+(a.resolved?" an-resolved":""),"data-id":a.id}),u=s("div",{class:"an-cmeta"},[pn(a.author),s("span",{class:"an-author",text:a.author||"Anonymous"}),ki(a.authorId),s("span",{class:"an-tag"},[(function(){var _=s("span",{class:"an-dot"});return _.style.background=a.color,_})(),h.createTextNode("#"+i+" "+(bs[a.type]||a.type)+(o?" \xB7 "+o.length+" elements":""))]),a.status==="resolved"?s("span",{class:"an-rbadge",html:S.check+"<span>Resolved</span>"}):a.status!=="open"&&Ve[a.status]?s("span",{class:"an-sbadge an-s-"+a.status,text:Ve[a.status]}):null,s("span",{class:"an-when",text:At(a.createdAt)})]);if(l.appendChild(u),a.target&&l.appendChild(s("div",{class:"an-target",title:a.target.label,text:"on "+a.target.label})),o){var p=o.map(function(_,F){return a.targets&&a.targets[F]?a.targets[F].label:_}).join(", ");l.appendChild(s("div",{class:"an-target",title:p,text:"on "+p}))}t[a.id]&&(l.classList.add("an-unread"),l.appendChild(s("button",{class:"an-newpill",title:"Mark as seen",text:"Updated \xB7 mark as seen",onclick:function(_){_.stopPropagation(),iu(a.id),U()}}))),a.assignee&&l.appendChild(s("div",{class:"an-assignee",text:"Assigned to "+a.assignee.name})),a.resolved&&l.appendChild(s("div",{class:"an-disposal",text:Ve[a.status]+(a.resolvedBy?" by "+_s(a,a.resolvedBy):"")+(a.resolvedAt?" \xB7 "+At(a.resolvedAt):"")})),a.type==="highlight"&&a.anchor&&a.anchor.exact&&l.appendChild(s("div",{class:"an-quote",text:"\u201C"+a.anchor.exact+"\u201D"}));var f=s("div",{class:"an-body"});if(f.appendChild(ra(a.text||"",a.mentions,d.members,c.authorId)),a.text&&l.appendChild(f),a.target&&l.appendChild(Nu(a)),o&&l.appendChild(Du(a)),a.replies&&a.replies.length){var g=s("div",{class:"an-replies"});a.replies.forEach(function(_){var F=s("div",{class:"an-reply"},[pn(_.author,18),s("span",{style:"flex:1;min-width:0"},[s("span",{class:"an-rwho",text:_.author}),ki(_.authorId),ra(_.text,_.mentions,d.members,c.authorId),s("span",{class:"an-rwhen",text:At(_.createdAt)})])]);if(Lt(_)){var Le=s("span",{style:"display:flex;gap:4px;flex:none;margin-left:6px"}),Xe=s("button",{class:"an-mini an-danger",html:S.trash,title:"Delete reply"});v(Xe,"click",function(di){di.stopPropagation();var tl=Pt(a.id,{deleteReply:_.id});tl&&(Ct(tl),U())}),Le.appendChild(Xe),F.appendChild(Le)}g.appendChild(F)}),l.appendChild(g)}var y=s("div",{class:"an-replybox"}),w=s("textarea",{class:"an-ta",rows:"2",placeholder:"Reply\u2026 (Ctrl+\u21B5 to post)"});y.appendChild(w),Di(w);var b=s("button",{class:"an-primary",style:"margin-top:6px;align-self:flex-end",text:"Reply"});y.appendChild(b);function T(){if(w.value.trim()){var _={id:it(),author:c.author||"Anonymous",text:w.value.trim(),createdAt:new Date().toISOString()},F=Pt(a.id,{reply:_});if(F){var Le=F.replies.some(function(Xe){return Xe.id===_.id});if(!Le){L("This thread has reached its reply limit.",{kind:"error"});return}w.value="",Ct(F),U()}}}v(b,"click",function(_){_.stopPropagation(),T()}),v(w,"keydown",function(_){_.stopPropagation(),(_.metaKey||_.ctrlKey)&&_.key==="Enter"&&T()}),l.appendChild(y);var C=s("div",{class:"an-editbox"}),A=s("textarea",{class:"an-ta",rows:"2"}),M=s("button",{class:"an-primary",text:"Save"});C.appendChild(A),C.appendChild(s("div",{style:"display:flex;justify-content:flex-end"},[M])),v(A,"keydown",function(_){_.stopPropagation(),(_.metaKey||_.ctrlKey)&&_.key==="Enter"&&M.click()}),v(M,"click",function(_){_.stopPropagation();var F=Pt(a.id,{text:A.value.trim()});F&&(Ct(F),U())}),l.appendChild(C);var Ie=s("div",{class:"an-history"});_t[a.id]&&(Ie.classList.add("an-show"),ks(a,Ie));var Yr=s("div",{class:"an-cact"},[s("button",{class:"an-mini",html:S.reply+"<span>Reply</span>",onclick:function(_){_.stopPropagation(),y.classList.toggle("an-show"),w.focus()}}),Ri(a)?s("button",{class:"an-mini",html:(a.resolved?"":S.check)+"<span>"+(a.resolved?"Reopen":"Resolve")+"</span>",onclick:function(_){_.stopPropagation();var F=Pt(a.id,{resolved:!a.resolved});F&&(Ct(F),ne(),U())}}):null,!E||Ot()?Pd(a):null,Rd(a),Lt(a)?s("button",{class:"an-mini",html:S.edit+"<span>Edit</span>",onclick:function(_){_.stopPropagation(),A.value=a.text||"",C.classList.toggle("an-show"),A.focus()}}):null,s("button",{class:"an-mini an-histbtn",text:"History","aria-expanded":_t[a.id]?"true":"false",onclick:function(_){_.stopPropagation(),_t[a.id]=!_t[a.id],_t[a.id]?(Ie.classList.add("an-show"),ks(a,Ie)):(delete _t[a.id],Ie.classList.remove("an-show")),this.setAttribute("aria-expanded",_t[a.id]?"true":"false")}}),s("button",{class:"an-mini","data-action":"copy-ai",title:"Copy this comment for an AI agent","aria-label":"Copy this comment for an AI agent",html:S.copy,onclick:function(_){_.stopPropagation(),Xn({detail:qn(),ids:[a.id],includeClosed:!0})}}),s("button",{class:"an-mini",html:S.link,title:"Copy link to this comment",onclick:function(_){_.stopPropagation(),Gd(a.id)}}),Ri(a)?s("button",{class:"an-mini an-danger",html:S.trash,title:"Delete",onclick:function(_){_.stopPropagation(),Kd(a)}}):null]);l.appendChild(Yr),l.appendChild(Ie),v(l,"click",function(){be(a.id,!1)}),o&&(v(l,"mouseenter",function(){Or(a,!0)}),v(l,"mouseleave",function(){Or(a,!1)})),j.appendChild(l),e[a.id]&&(ys(e[a.id].reply,y,w),Lt(a)&&ys(e[a.id].edit,C,A))}),Fn(),kt()}}function _s(e,t){if(t&&t===c.authorId)return"you";if(e.authorId===t)return e.author;if(e.assignee&&e.assignee.id===t)return e.assignee.name;for(var n=e.replies.length-1;n>=0;n--)if(e.replies[n].authorId===t)return e.replies[n].author;return"the review owner"}var _t={},ws={};function ti(e){var t=[{at:e.createdAt,by:{id:e.authorId,name:e.author},kind:"created"}];return e.editedAt&&t.push({at:e.editedAt,by:{id:e.authorId,name:e.author},kind:"edited"}),e.assignedAt&&e.assignee&&t.push({at:e.assignedAt,by:null,kind:"assigned",to:e.assignee}),e.replies.forEach(function(n){t.push({at:n.createdAt,by:{id:n.authorId,name:n.author},kind:"replied"})}),e.resolved&&e.resolvedAt&&t.push({at:e.resolvedAt,by:e.resolvedBy?{id:e.resolvedBy,name:_s(e,e.resolvedBy)}:null,kind:"status",to:e.status}),t.sort(function(n,r){return n.at<r.at?-1:n.at>r.at?1:0})}function Md(e){var t=e.by&&(e.by.id?e.by.id===c.authorId:!c.authorId&&e.by.name===c.author),n=e.by?t?"You":e.by.name||"Someone":"",r=function(i){return Ve[i]||i},a={created:"raised this comment",edited:"edited the comment",status:e.from?"changed status: "+r(e.from)+" \u2192 "+r(e.to):"marked it "+r(e.to),assigned:e.to?"assigned it to "+e.to.name:"removed the assignee",replied:"replied",reply_deleted:"deleted a reply",deleted:"deleted the comment"}[e.kind]||e.kind;return(n?n+" ":"")+(n?a:a.charAt(0).toUpperCase()+a.slice(1))}function Hn(e,t,n){e.innerHTML="";var r=s("ol",{class:"an-hlist"});t.forEach(function(a){r.appendChild(s("li",{},[s("span",{text:Md(a)}),s("span",{class:"an-hwhen",text:a.at?At(a.at):""})]))}),e.appendChild(r),n&&e.appendChild(s("div",{class:"an-hnote",text:n}))}function ks(e,t){var n=E?ut(ee())[e.id]:null;if(!E||!n||!d.token){Hn(t,ti(e),E?"Full history appears once this comment is saved to the review.":"");return}var r=ws[e.id];if(r&&r.stamp===n){Hn(t,r.events);return}Hn(t,ti(e),"Loading full history\u2026"),fe("GET","/comments/"+encodeURIComponent(e.id)+"/activity").then(function(a){if(O||!a.data||!Array.isArray(a.data.events))throw new Error("unavailable");var i=a.data.events.filter(function(o){return o&&typeof o.kind=="string"&&typeof o.at=="string"});ws[e.id]={stamp:n,events:i},t.isConnected&&Hn(t,i)}).catch(function(){!O&&t.isConnected&&Hn(t,ti(e),"Showing a summary \u2014 the full history could not be loaded.")})}function Cs(e,t){if(!Ve[t])throw new Error("Unknown status: "+t);var n=Pt(e,{status:t});return n&&(Ct(n),ne(),U()),n}function Es(e,t){var n=Pt(e,{assignee:t||null});return n&&(Ct(n),U()),n}function Pd(e){var t=s("select",{class:"an-status","aria-label":"Status",title:"Status"});return Object.keys(Ve).forEach(function(n){var r=s("option",{value:n,text:Ve[n]});n===e.status&&(r.selected=!0),t.appendChild(r)}),v(t,"click",function(n){n.stopPropagation()}),v(t,"change",function(n){n.stopPropagation(),Cs(e.id,t.value)}),t}function Rd(e){if(!Ot())return null;var t={id:c.authorId,name:c.author||"Anonymous"},n=e.assignee&&(e.assignee.id&&t.id?e.assignee.id===t.id:e.assignee.name===t.name);return s("button",{class:"an-mini",text:n?"Unassign":"Assign to me",title:n?"Stop working on this":"Take this on",onclick:function(r){r.stopPropagation(),Es(e.id,n?null:t)}})}function Nd(e,t){var n=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),r=URL.createObjectURL(n);$n.add(r);var a=s("a",{href:r,download:t});X().appendChild(a),a.click(),a.remove(),P(function(){URL.revokeObjectURL(r),$n.delete(r)},1e3)}function zr(e,t){var n=t==="site",r=(n?sr():c.comments).map(It);if(!r.length&&!e)return null;var a={annotate:hi,schema:Qr,kind:"annotate-export",exportedAt:new Date().toISOString(),page:N,url:z.href,project:k.project||"",exportedViewport:{vw:m.innerWidth,vh:m.innerHeight,dpr:m.devicePixelRatio||1},comments:r};return n&&(a.scope="site"),a}function Un(e){var t=!!(e&&e.scope==="site");if(t&&E){L("This review keeps every page on the server \u2014 download one page at a time",{kind:"info"});return}var n=zr(!1,t?"site":"page");if(!n){L(t?"No comments in this project to export":"No comments on this page to export",{kind:"info"});return}var r=n.comments,a=t?(k.project||z.host||"site")+"-all-pages":N||"page",i=a.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page",o=new Date().toISOString().slice(0,10);Nd(n,"redline-"+i+"-"+o+".json");var l=t?lr(r):1;L("Exported "+r.length+" comment"+(r.length===1?"":"s")+(l>1?" across "+l+" pages":""),{kind:"success"})}function Ss(){return E?ou().then(function(){return k.postUrl?As():(O||L("All changes saved to the review",{kind:"success"}),zr(!0))},function(e){throw O||L("Could not save to the review: "+e.message,{kind:"error",duration:8e3}),e}):As()}function Dd(){var e=m.crypto,t=[],n;if(e&&typeof e.randomUUID=="function")try{return e.randomUUID()}catch(i){}if(e&&typeof e.getRandomValues=="function"){var r=new Uint8Array(16);for(e.getRandomValues(r),n=0;n<16;n++)t.push(r[n])}else for(n=0;n<16;n++)t.push(Math.floor(Math.random()*256));t[6]=t[6]&15|64,t[8]=t[8]&63|128;var a=t.map(function(i){return(i+256).toString(16).slice(1)}).join("");return a.slice(0,8)+"-"+a.slice(8,12)+"-"+a.slice(12,16)+"-"+a.slice(16,20)+"-"+a.slice(20)}function ni(e){var t=e&&e.headers&&e.headers.get("Retry-After");if(!t)return null;var n=Number(t),r=isFinite(n)?n*1e3:Date.parse(t)-Date.now();return isFinite(r)?Math.max(0,Math.min(3e4,r)):null}var Yn=null,Br=null,wt=null;function As(){if(Yn)return Yn;var e=zr(),t;try{t=new URL(k.postUrl,z.href)}catch(u){}if(!k.postUrl||!t||!/^https?:$/.test(t.protocol))return Promise.reject(new Error("Configure an HTTP(S) postUrl first"));if(!e)return L("No comments to send yet",{kind:"info"}),Promise.reject(new Error("No comments to send"));var n=Object.assign({},e,{deliveryId:Dd()}),r=JSON.stringify(n),a=k.postRetries,i=0;L("Sending feedback\u2026",{kind:"info"});function o(){var u=m.AbortController?new m.AbortController:null,p=!1;Br=u;var f=P(function(){p=!0,u&&u.abort()},3e4);return m.fetch(t.href,{method:"POST",headers:{"Content-Type":"application/json"},body:r,credentials:k.credentials,signal:u?u.signal:void 0}).then(function(g){if(R(f),g.ok)return n;var y=new Error("HTTP "+g.status);throw y.retry=g.status===408||g.status===429||g.status>=500,y.wait=ni(g),y},function(g){R(f);var y=new Error(p?"Timed out":g&&g.message||"Network error");throw y.retry=!O,y})}function l(){return o().catch(function(u){if(O||!u.retry||i>=a)throw u;i++;var p=typeof u.wait=="number"?u.wait:1e3*Math.pow(2,i-1);return L("Sending feedback\u2026 (retry "+i+" of "+a+")",{kind:"info"}),new Promise(function(f,g){wt={timer:P(function(){wt=null,f()},p),reject:g}}).then(l)})}return Yn=l().then(function(u){return O||L("Feedback sent",{kind:"success"}),u},function(u){throw O||L("Could not send feedback: "+u.message+". Your comments are still saved locally.",{kind:"error",duration:8e3}),u}).finally(function(){Yn=null,Br=null,wt=null}),Yn}function xc(){return ri()}function ri(e){var t=zr(!1,e==="site"?"site":void 0);return t?je(JSON.stringify(t,null,2),"Comments copied as JSON"):(L("No comments on this page to copy",{kind:"info"}),Promise.resolve())}function qn(){var e=D.get("an-md-detail");return Hr[e]?e:"standard"}function Xn(e){var t=Ps(e);return t?je(t,"Copied as Markdown for your AI agent"):(L("No open comments to copy",{kind:"info"}),Promise.resolve())}function an(e){var t=h.getElementById("__an_copymenu");if(!t)return!1;e=e===!0||t.contains(h.activeElement),t.remove();var n=me&&me.querySelector('[data-action="copy-menu"]');return n&&(n.setAttribute("aria-expanded","false"),e&&n.focus()),!0}function jd(e){if(!an()){var t=qn(),n=s("div",{class:"an-seg",role:"radiogroup","aria-label":"Markdown detail"});Object.keys(Hr).forEach(function(l){n.appendChild(s("button",{class:"an-segbtn"+(l===t?" an-on":""),role:"radio","aria-checked":l===t?"true":"false","data-detail":l,text:Hr[l],onclick:function(u){u.stopPropagation(),D.set("an-md-detail",l),Array.prototype.forEach.call(n.children,function(p){var f=p.getAttribute("data-detail")===l;p.classList.toggle("an-on",f),p.setAttribute("aria-checked",f?"true":"false")})}}))});var r=E?[]:sr(),a=lr(r),i=s("div",{id:"__an_copymenu",role:"group","aria-label":"Copy options"},[s("button",{class:"an-mitem","data-action":"copy-markdown",html:S.copy+"<span>Copy for AI agent (Markdown)</span>",onclick:function(l){l.stopPropagation(),an(!0),Xn({detail:qn()})}}),n,s("button",{class:"an-mitem","data-action":"copy-json",html:S.copy+"<span>Copy JSON (re-importable)</span>",onclick:function(l){l.stopPropagation(),an(!0),ri()}}),r.length>c.comments.length&&a>1?s("button",{class:"an-mitem","data-action":"copy-markdown-site",html:S.copy+"<span>All pages as Markdown ("+a+" pages)</span>",onclick:function(l){l.stopPropagation(),an(!0),Xn({detail:qn(),scope:"site"})}}):null]);v(i,"click",function(l){l.stopPropagation()}),me.appendChild(i),e.setAttribute("aria-expanded","true");var o=i.querySelector(".an-mitem");o&&o.focus()}}v(h,"click",function(e){(!e.target.closest||!e.target.closest("#__an_copymenu"))&&an()});function ai(){var e=s("input",{type:"file",accept:"application/json,.json"});e.style.display="none",X().appendChild(e),v(e,"change",function(){var t=e.files&&e.files[0];if(e.remove(),!!t){var n=new FileReader;n.onload=function(){if(!O){var r;try{r=JSON.parse(n.result)}catch(a){L("That file isn\u2019t valid JSON",{kind:"error"});return}Xd(r)}},n.onerror=function(){O||L("Couldn\u2019t read that file",{kind:"error"})},n.readAsText(t)}}),e.click()}var zd=5e3;function se(e){return typeof e=="number"&&isFinite(e)}var Fr=20;function Bd(e){return!e||typeof e!="object"||typeof e.kind!="string"?!1:e.kind==="pin"?se(e.x)&&se(e.y):e.kind==="rect"||e.kind==="circle"?se(e.x)&&se(e.y)&&se(e.w)&&se(e.h):e.kind==="pen"?Array.isArray(e.points)&&e.points.length>=2&&e.points.length<=1e4&&e.points.every(function(t){return Array.isArray(t)&&t.length===2&&se(t[0])&&se(t[1])}):e.kind==="group"?Array.isArray(e.selectors)&&e.selectors.length>=2&&e.selectors.length<=Fr&&e.selectors.every(function(t){return typeof t=="string"&&t.trim().length>0&&t.length<4096})&&(e.vw===void 0||se(e.vw))&&(e.vh===void 0||se(e.vh)):e.kind==="block"?typeof e.selector=="string"&&e.selector.trim().length>0&&e.selector.length<4096:!1}var Fd={highlight:1,shape:1,pin:1,pen:1,note:1,block:1,group:1},Hd={shape:{rect:1,circle:1},pin:{pin:1},pen:{pen:1},block:{block:1},group:{group:1}};function Ud(e,t){if(e==="highlight"||e==="note")return t==null;var n=Hd[e];return!!(t&&n&&t.kind&&n[t.kind]===1)}function Ts(e){return!e||typeof e!="object"||typeof e.exact!="string"||!e.exact.trim()||e.exact.length>1e6?!1:typeof e.prefix=="string"&&typeof e.suffix=="string"}function Yd(e){return e&&typeof e.id=="string"&&e.id.length<128&&typeof e.author=="string"&&typeof e.text=="string"&&e.text.length<=Jr&&typeof e.createdAt=="string"}function qd(e){return typeof e=="string"&&Fd[e]===1}function qe(e){return!(!e||typeof e!="object"||typeof e.id!="string"||!e.id||e.id.length>128||!qd(e.type)||typeof e.author!="string"||typeof e.text!="string"||e.text.length>Zn||typeof e.color!="string"||e.anchor!==null&&e.anchor!==void 0&&!Ts(e.anchor)||e.type==="highlight"&&!Ts(e.anchor)||!Ud(e.type,e.geom)||e.geom!==null&&e.geom!==void 0&&!Bd(e.geom)||!Array.isArray(e.replies)||e.replies.length>Ii||!e.replies.every(Yd))}function Xd(e){var t=e&&Array.isArray(e.comments)?e.comments:null;if(!t){L("No comments found in that file",{kind:"error"});return}if(t.length>zd){L("That file has too many comments to import",{kind:"error"});return}var n=e.scope==="site";!n&&e.page&&e.page!==N&&L("These comments were from a different page \u2014 positions may not match.",{kind:"info",duration:6e3});var r=Object.create(null);ee().comments.forEach(function(f){f&&typeof f.id=="string"&&(r[f.id]=!0)}),Object.keys(q).forEach(function(f){r[f]=!0});var a=[],i=0,o={};if(t.forEach(function(f){if(!qe(f)){i++;return}if(o[f.id]){i++;return}if(r[f.id]){i++;return}o[f.id]=!0;var g=Je(It(f));g.page=n?Vd(f.page,e.project):N,a.push(g)}),!a.length){L(i?"Nothing new to import ("+i+" invalid or already present)":"Nothing new to import",{kind:i?"error":"info"});return}var l=ee();l.comments=l.comments.concat(a),Fe(l)||a.forEach(function(f){q[f.id]=f}),a.forEach(function(f){Ea(f.id),ur(f,["*"])}),on();var u=a.length+(i?" ("+i+" skipped)":""),p=n?lr(a):1;L("Imported "+u+" comment"+(a.length===1?"":"s")+(p>1?" across "+p+" pages":""),{kind:"success"})}function Vd(e,t){var n=typeof e=="string"?e:"";return t&&typeof t=="string"&&n.indexOf(t+":")===0&&(n=n.slice(t.length+1)),n?(k.project?k.project+":":"")+n:N}function Gd(e){var t=z.origin+z.pathname+z.search+"#an="+e;function n(){L("Link copied to clipboard",{kind:"success"})}navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t).then(n,function(){prompt("Copy link:",t)}):prompt("Copy link:",t)}var nt={};function Kd(e){c.comments=c.comments.filter(function(t){return t.id!==e.id}),c.activeId===e.id&&(c.activeId=null),nt[e.id]=e,zl(e.id,Fl),ne(),U(),L("Comment deleted",{kind:"info",action:"Undo",duration:5e3,onAction:function(){if(nt[e.id]){delete nt[e.id];var t=It(e);if(t.page===N){for(var n=!1,r=0;r<c.comments.length;r++)if(c.comments[r].createdAt>e.createdAt){c.comments.splice(r,0,t),n=!0;break}n||c.comments.push(t)}var a=ee();a.comments.some(function(i){return i.id===t.id})||(a.comments.push(t),Fe(a),Yl(t)),ne(),U()}},onExpire:function(){delete nt[e.id]}})}function ii(){Ue&&(c.note?(Ue.innerHTML="",Ue.appendChild(s("span",{html:S.info}).firstChild),Ue.appendChild(s("span",{},[s("span",{class:"an-nlbl",text:"What to review: "}),h.createTextNode(c.note)])),Ue.classList.add("an-show")):Ue.classList.remove("an-show"))}function kt(){if(me){var e=c.comments.length,t=!!(c.share&&c.share.trim());me.innerHTML="";var n=xa();if(me.appendChild(s("div",{class:"an-localnote"+(d.refusal?" an-refused":E&&n.state==="idle"?" an-synced":"")},[s("span",{html:d.refusal?S.alert:E&&n.state==="idle"?S.check:S.info}),E?s("span",{id:"__an_syncnote","data-state":n.state,role:"status",text:Wi(n.state)}):s("span",{id:"__an_localnote",role:"status",text:d.refusal?d.refusal+" "+ya:t?"Saved in this browser. Download or share to send your comments.":"Saved in this browser. Download to send your comments."})])),d.refusal&&d.emailOn===!0&&d.refusalCode!=="review_closed"&&me.appendChild(s("button",{class:"an-fbtn","data-action":"signin-open",html:S.mail+"<span>Sign in with email</span>",onclick:function(i){i.stopPropagation(),hr()}})),E&&me.appendChild(s("div",{class:"an-exportlbl",text:"Keep a copy"})),me.appendChild(s("div",{class:"an-footrow"+(t?" an-four":"")},[s("button",{class:"an-fbtn"+(e&&!E?" an-pulse":""),title:"Download comments as JSON",html:S.download+"<span>Download</span>",onclick:Un}),s("button",{class:"an-fbtn","data-action":"copy-menu",title:"Copy comments","aria-label":"Copy comments","aria-expanded":"false",html:S.copy+"<span>Copy</span>",onclick:function(i){i.stopPropagation(),jd(this)}}),k.postUrl?s("button",{class:"an-fbtn",text:"Send feedback",onclick:function(){Ss().catch(function(){})}}):null,t?s("button",{class:"an-fbtn",title:"Send comments to "+c.share,html:S.share+"<span>Share</span>",onclick:tc}):null,s("button",{class:"an-fbtn",html:S.upload+"<span>Import</span>",onclick:ai})])),!E){var r=sr(),a=lr(r);r.length>e&&a>1&&me.appendChild(s("button",{class:"an-sitebtn","data-action":"download-site",title:"Download the comments from every page of this site as one JSON file",html:S.download+"<span>All pages ("+r.length+" comment"+(r.length===1?"":"s")+", "+a+" pages)</span>",onclick:function(){Un({scope:"site"})}}))}}}function je(e,t){function n(){L(t||"Copied to clipboard",{kind:"success"})}function r(){m.prompt("Copy this:",e)}return navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e).then(n,r):(r(),Promise.resolve())}function Wd(e){try{var t=new URL(e);return/^https?:$/.test(t.protocol)?t.href:""}catch(n){return""}}function $d(e){var t=e.slice(0,50),n=t.map(function(r,a){var i=r.author||"Anonymous",o=Is(r.text,280)||"(no text)";return a+1+". ["+(bs[r.type]||r.type)+"] "+i+": "+o}).join(`
|
|
737
|
+
`);return e.length>t.length&&(n+=`
|
|
738
|
+
\u2026 and `+(e.length-t.length)+" more comment"+(e.length-t.length===1?"":"s")+" in the JSON file."),{subject:"Review comments \u2014 "+(k.project||N),body:"Review of "+z.href+`
|
|
739
|
+
|
|
740
|
+
`+n+`
|
|
741
|
+
|
|
742
|
+
(`+e.length+" comment"+(e.length===1?"":"s")+". The full JSON file keeps positions & replies \u2014 attach it.)"}}function Is(e,t){var n=String(e||"").replace(/\s+/g," ").trim();return n.length>t?n.slice(0,t-1)+"\u2026":n}function Z(e,t){return Is(String(e==null?"":e).replace(/[\u0000-\u001f\u007f]/g," "),t||80)}var Hr={compact:"Compact",standard:"Standard",detailed:"Detailed"},Ls={highlight:"Highlight",shape:"Shape",pin:"Pin",pen:"Sketch",note:"Note",block:"Section note",group:"Group"},Jd={open:"Open",in_progress:"In progress",resolved:"Resolved",wont_fix:"Won\u2019t fix"};function Os(e){return typeof e=="number"&&isFinite(e)}function ze(e){var t=String(e).replace(/[\u0000-\u001f\u007f]/g," "),n=0;(t.match(/`+/g)||[]).forEach(function(a){n=Math.max(n,a.length)});var r=new Array(n+2).join("`");return n?r+" "+t+" "+r:r+t+r}function Vn(e,t){return Z(e,t||200).replace(/"/g,'\\"')}function Qd(e){return String(e).replace(/[\u0000-\u0009\u000b-\u001f\u007f]/g," ").split(/\r?\n/).map(function(t){return("> "+t).replace(/\s+$/,"")}).join(`
|
|
743
|
+
`)}function Ms(e,t){return t&&e===t?" (AI agent)":""}function Zd(e,t,n,r,a){var i=e.type==="group"&&e.geom&&Array.isArray(e.geom.selectors),o=i?null:e.target||null,l=[],u=[],p=[];i&&(p=e.geom.selectors.map(function(b,T){var C=Array.isArray(e.targets)?e.targets[T]:null;return{sel:b,t:C||null,label:C?C.label:b}}));var f=i?p.map(function(b){return Z(b.label,160)}).join(", "):o?o.label:e.type==="note"?"Page note":Ls[e.type]||e.type;if(l.push("## "+t+". "+Z(f,160)),n!=="compact"){var g=[Ls[e.type]||e.type,(Jd[e.status]||"Open").toLowerCase(),(Z(e.author,80)||"Anonymous")+Ms(e.authorId,r)];e.assignee&&e.assignee.name&&g.push("assigned to "+Z(e.assignee.name,80)),l.push(g.join(" \xB7 "))}e.type==="highlight"&&e.anchor&&e.anchor.exact&&l.push('Quoted: "'+Vn(e.anchor.exact,300)+'"'),e.text&&l.push(Qd(e.text));var y=Array.isArray(e.mentions)?e.mentions:[];if(n!=="compact"&&y.length&&u.push("- Mentions: "+y.map(function(b){return"@"+Z(a&&a[b]||b,80)}).join(", ")),n!=="compact"&&o){if(u.push("- Selector: "+ze(o.selector)),o.component&&(o.component.chain.length||o.component.source)){var w=[];o.component.chain.length&&w.push(ze(o.component.chain.map(function(b){return"<"+b+">"}).join(" "))),o.component.source&&w.push(ze(o.component.source)),u.push("- Component: "+w.join(" \xB7 "))}o.heading&&u.push('- Under heading: "'+Vn(o.heading,80)+'"')}return n!=="compact"&&i&&(u.push("- Elements:"),p.forEach(function(b,T){var C=b.t,A=" "+(T+1)+". ";if(!C){u.push(A+ze(b.sel));return}A+=Z(C.label,160)+" \u2014 "+ze(b.sel),C.component&&C.component.chain.length&&(A+=" \xB7 "+ze(C.component.chain.map(function(M){return"<"+M+">"}).join(" "))),C.component&&C.component.source&&(A+=" \xB7 "+ze(C.component.source)),u.push(A),n==="detailed"&&(C.classes&&C.classes.length&&u.push(" - Classes: "+C.classes.map(ze).join(" ")),u.push(" - Position: "+C.box.x+", "+C.box.y+" \xB7 "+C.box.w+"\xD7"+C.box.h+" px"),C.styles&&Object.keys(C.styles).length&&u.push(" - Styles: "+Object.keys(C.styles).map(function(M){return M+" "+ze(C.styles[M])}).join(", ")))})),n==="detailed"&&(o&&o.classes.length&&u.push("- Classes: "+o.classes.map(ze).join(" ")),o&&u.push("- Position: "+o.box.x+", "+o.box.y+" \xB7 "+o.box.w+"\xD7"+o.box.h+" px"),e.geom&&Os(e.geom.vw)&&Os(e.geom.vh)&&u.push("- Viewport when made: "+e.geom.vw+"\xD7"+e.geom.vh),e.type==="highlight"&&e.anchor&&(e.anchor.prefix||e.anchor.suffix)&&u.push('- Text around: "\u2026'+Vn(e.anchor.prefix.slice(-60),80)+" ["+Vn(e.anchor.exact,300)+"] "+Vn(e.anchor.suffix.slice(0,60),80)+'\u2026"'),e.url&&u.push("- URL: "+Z(e.url,2048)),o&&o.styles&&Object.keys(o.styles).length&&(u.push("- Styles:"),Object.keys(o.styles).forEach(function(b){u.push(" - "+b+": "+ze(o.styles[b]))}))),n!=="compact"&&(e.replies||[]).forEach(function(b){u.push("- Reply, "+Z(b.author||"Anonymous",80)+Ms(b.authorId,r)+": "+Z(b.text,2e3))}),u.length&&l.push("",u.join(`
|
|
744
|
+
`)),l.join(`
|
|
745
|
+
`)}function ec(e,t){t=t||{};var n=Hr[t.detail]?t.detail:"standard",r=Array.isArray(t.ids)?t.ids:null,a=t.current||null,i=t.project||"",o=t.today||new Date().toISOString().slice(0,10),l=[],u=Object.create(null);(e||[]).forEach(function(y){u[y.page]||(u[y.page]=[],l.push(y.page)),u[y.page].push(y)});var p=[],f=0,g=0;return l.forEach(function(y){var w=u[y],b=w.filter(function(M){return r&&r.indexOf(M.id)<0?!1:!t.includeClosed&&M.resolved?(f++,!1):!0});if(b.length){g+=b.length;var T=!!a&&y===a.page,C=i&&y.indexOf(i+":")===0?y.slice(i.length+1):y,A=[Z(T?a.url:b[0].url,2048)];T&&a.viewport&&A.push("viewport "+a.viewport.w+"\xD7"+a.viewport.h),A.push(b.length+" "+(t.includeClosed?"comment":"open comment")+(b.length===1?"":"s")),A.push(o),p.push("# Review feedback: "+Z(T&&a.title||C,160),A.filter(Boolean).join(" \xB7 ")),b.forEach(function(M){p.push("",Zd(M,w.indexOf(M)+1,n,t.agentId||null,t.names||null))}),p.push("")}}),g?(f&&p.push("_"+f+" closed comment"+(f===1?"":"s")+" left out._"),p.join(`
|
|
746
|
+
`).replace(/\n{3,}/g,`
|
|
747
|
+
|
|
748
|
+
`).replace(/\s+$/,"")+`
|
|
749
|
+
`):""}function Ps(e){e=e||{};var t=e.scope==="site"&&!E?sr():c.comments.slice();return E||(t=t.map(function(n){var r=Object.assign({},n);return delete r.mentions,r})),ec(t,{detail:e.detail,includeClosed:e.includeClosed,ids:e.ids,project:k.project,agentId:d.agentId,names:ml(),current:{page:N,url:z.href,title:h.title,viewport:{w:m.innerWidth,h:m.innerHeight}},today:new Date().toISOString().slice(0,10)})}function Gn(){var e=h.getElementById("__an_sharewrap");e&&e.remove()}function tc(){var e=c.comments.slice();if(!e.length){L("No comments to share yet",{kind:"info"});return}var t=(c.share||"").trim();if(!t){L("No share destination set by the author \u2014 use Download instead",{kind:"info"});return}if(h.getElementById("__an_sharewrap"))return;var n=/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(t),r=$d(e),a=(N||"page").replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page";function i(b,T,C){return s("div",{class:"an-sstep"},[s("div",{class:"an-snum",text:String(b)}),s("div",{class:"an-stext"},[T,s("div",{class:"an-srow"},C)])])}function o(b,T,C,A){return s("button",{class:"an-sbtn"+(C?" an-ghost2":""),html:T+"<span>"+_i(b)+"</span>",onclick:A})}var l=o("Download JSON",S.download,!1,function(){Un()}),u;if(n)u=i(2,s("span",{},[h.createTextNode("Email the comments to "),s("b",{text:t}),h.createTextNode(". Open your mail app below (or copy the details), then "),s("b",{text:"attach the file from step 1"}),h.createTextNode(".")]),[o("Open email",S.mail,!1,function(){m.location.href="mailto:"+encodeURIComponent(t)+"?subject="+encodeURIComponent(r.subject)+"&body="+encodeURIComponent(r.body)}),o("Copy address",S.copy,!0,function(){je(t,"Email address copied")}),o("Copy summary",S.copy,!0,function(){je(r.subject+`
|
|
750
|
+
|
|
751
|
+
`+r.body,"Summary copied")})]);else{var p=Wd(t.replace(/\{(page|count|summary)\}/g,function(b,T){return encodeURIComponent(T==="page"?z.href:T==="count"?String(e.length):r.body)}));u=i(2,s("span",{},[h.createTextNode("Post the comments to your channel. Open it below, paste the copied summary, and "),s("b",{text:"attach the file from step 1"}),h.createTextNode(".")]),[p?o("Open channel",S.share,!1,function(){m.open(p,"_blank","noopener")}):null,p?null:o("Copy destination",S.copy,!0,function(){je(t,"Destination copied")}),o("Copy summary",S.copy,!0,function(){je(r.subject+`
|
|
752
|
+
|
|
753
|
+
`+r.body,"Summary copied")})])}var f=s("div",{id:"__an_sharebox"},[s("h3",{class:"an-st",text:"Share your review"}),s("p",{class:"an-sd",text:"Comments live only in this browser. Send them in two steps \u2014 they\u2019re not uploaded anywhere automatically."}),s("div",{class:"an-sdest"},[s("span",{html:n?S.mail:S.share}).firstChild,s("span",{},[s("b",{text:n?"Email to: ":"Channel: "}),h.createTextNode(t)])]),i(1,s("span",{},[h.createTextNode("Download the comments file "),s("b",{text:"(redline-"+a+"-\u2026.json)"}),h.createTextNode(".")]),[l]),u,s("button",{class:"an-sclose",text:"Done",onclick:Gn})]),g=s("div",{id:"__an_sharewrap"},[f]);v(g,"click",function(b){b.target===g&&Gn()}),X().appendChild(g);var y=Ta(g),w=Gn;Gn=function(){y(),Gn=w,w()},P(function(){var b=g.querySelector("button");b&&b.focus()},40)}function Ct(e){var t=c.comments.findIndex(function(n){return n.id===e.id});t>=0?c.comments[t]=e:c.comments.push(e)}function be(e,t){c.activeId=e,ne(),U(),c.panelOpen||rn();var n=c.comments.find(function(y){return y.id===e});if(n){if(t){var r=j.querySelector('[data-id="'+e+'"]');r&&r.scrollIntoView({behavior:"smooth",block:"center"})}else{var a=null;if(n.type==="highlight"&&n.anchor){var i=h.querySelector('[data-an="'+e+'"]');i&&(a=i.getBoundingClientRect().top+m.scrollY-120)}else if(n.type==="group"&&n.geom&&n.geom.selectors)for(var o=0;o<n.geom.selectors.length&&a==null;o++){var l=ht(n,o);l&&(us(l),a=pe(l).y-160)}else if(n.geom){var u=n.geom.selector?Ht(n):h.body;if(u){us(u);var p=pe(u),f=n.geom.y!=null?n.geom.y:n.geom.points?n.geom.points[0][1]:.2;a=p.y+f*p.h-160}}a!=null&&m.scrollTo({top:Math.max(0,a),behavior:"smooth"})}if(t){var g=j.querySelector('[data-id="'+e+'"]');g&&(g.setAttribute("tabindex","-1"),g.focus({preventScroll:!0}))}}}var Rs=!0;function Ns(){var e=bi();e!==N&&((Q||re)&&(re=null,Wt()),Ft(),N=e,c.activeId=null,c.comments=pa().filter(function(t){return!nt[t.id]}))}function on(){if(Ft(),pt=Object.create(null),!(Q||re)&&(c.comments=pa().filter(function(n){return!nt[n.id]}),ne(),U(),Rs)){Rs=!1;var e=z.hash.match(/^#an=(.+)$/);if(e){var t=decodeURIComponent(e[1]);c.comments.some(function(n){return n.id===t})&&P(function(){be(t,!1)},150)}}}function Ds(){Ns(),on()}var sn=0,ln=0;function js(){if(R(sn),R(ln),sn=ln=0,!(!c.enabled||O)){if(re||Q){oi();return}X(),Dr(),ne()}}function oi(){R(sn),sn=P(js,150),ln||(ln=P(js,1e3))}var nc=["class","style","hidden","open"],zs=["aria-label","aria-labelledby","data-testid","data-test","data-cy","data-qa","id","href","name","title","alt","placeholder","value","type"];function si(){return{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:nc.concat(zs)}}function rc(){!Se&&m.MutationObserver&&(Se=new m.MutationObserver(function(e){if(!c.enabled){de&&!de.isConnected&&X();return}for(var t=!1,n=!1,r=0;r<e.length&&!t;r++){var a=e[r];J(a.target)||(a.type==="attributes"&&zs.indexOf(a.attributeName)>=0?n=!0:(a.type!=="childList"||Array.prototype.some.call(a.addedNodes,function(i){return!J(i)})||Array.prototype.some.call(a.removedNodes,function(i){return i===de||!J(i)}))&&(t=!0))}(t||n)&&Ft(),t&&oi()})),Se&&(Se.disconnect(),On=[],c.enabled?(Se.observe(h.documentElement,si()),Ae.forEach(ls)):(R(sn),R(ln),sn=ln=0,Se.observe(h.documentElement,{subtree:!0,childList:!0})))}function ac(){if(!k.spa)return;var e=0;function t(){Ge(),Ns(),R(e),e=P(function(){on()},0)}v(m,"popstate",t),["pushState","replaceState"].forEach(function(n){var r=m.history[n],a=function(){var i=r.apply(this,arguments);return O||t(),i};m.history[n]=a,rt.push(function(){m.history[n]===a&&(m.history[n]=r)})})}var Bs=!1;function ic(){var e=m.AbortController?new m.AbortController:null,t=P(function(){e&&e.abort()},5e3);return Vr[k.workspace]=!0,m.fetch(gi+"/v1/annotate/workspaces/"+encodeURIComponent(k.workspace)+"/site",{credentials:"omit",cache:"no-store",signal:e?e.signal:void 0}).then(function(n){if(n.status===404)return null;if(!n.ok)throw new Error("HTTP "+n.status);return n.json().then(function(r){if(!r||typeof r.reviewId!="string"||!Ai.test(r.reviewId))throw new Error("bad answer");return r.reviewId})}).then(function(n){return R(t),D.set(Si,JSON.stringify({reviewId:n,at:Date.now()})),{ok:!0,reviewId:n}},function(){return R(t),{ok:!1}})}function Fs(e){Bs=e;var t=h.getElementById("__an_root");t&&t.classList.toggle("an-checking",e),ve&&(e?(ve.textContent="Checking Redline Cloud\u2026",ve.classList.add("an-show")):ve.textContent==="Checking Redline Cloud\u2026"&&(ve.classList.remove("an-show"),ve.textContent=""))}function Hs(){!gn||Vr[k.workspace]||((!Tt||Wr)&&Fs(!0),ic().then(function(e){O||(Fs(!1),e.ok&&e.reviewId!==($r?k.reviewId:null)&&Qs(c.enabled?"tools":""))}))}function Us(){var e=new URLSearchParams;if(e.set("url",pr()),at)e.set("review",k.reviewId);else if(k.workspace)e.set("workspace",k.workspace);else return;z.assign(Gr+"/connect?"+e.toString())}var Ys="claude mcp add redline -- npx -y -p @perpetio/redline@latest redline-mcp",oc="https://www.npmjs.com/package/@perpetio/redline#ai-agents-mcp",sc={connecting:"Connecting\u2026",connected:"Connected",stopped:"Not running"},un=null,ae=null,qs=0,li=0,dn="connecting";function lc(){return hn&&!at}function uc(){var e=m.AbortController?new m.AbortController:null,t=P(function(){e&&e.abort()},2e3);return m.fetch(mi+"/v1/annotate/health",{credentials:"omit",cache:"no-store",signal:e?e.signal:void 0}).then(function(n){return n.ok?n.json():null}).then(function(n){return!!(n&&n.service==="annotate")},function(){return!1}).then(function(n){return R(t),n})}function Xs(e){uc().then(function(t){O||e!==li||(dn=t?"connected":"stopped",Gs(),qs=P(function(){Xs(e)},3e3))})}function Ur(){return!!ae&&ae.classList.contains("an-show")}function Vs(){if(!(!ae||Ur())){dn="connecting",Js(),ae.classList.add("an-show"),un.setAttribute("aria-expanded","true"),lc()&&Xs(++li);var e=ae.querySelector("button:not([disabled]), a");e&&e.focus()}}function ui(e){Ur()&&(li++,R(qs),ae.classList.remove("an-show"),un.setAttribute("aria-expanded","false"),e&&un.focus())}function Gs(){if(ae){var e=ae.querySelector(".an-set-status");e&&e.getAttribute("data-state")!==dn&&(e.setAttribute("data-state",dn),e.lastChild.textContent=sc[dn]);var t=ae.querySelector(".an-set-help");t&&(t.hidden=dn!=="stopped")}}function Ks(e,t){var n=s("section",{class:"an-set-sec","data-section":e,"aria-labelledby":"__an_set_"+e});return n.appendChild(s("div",{class:"an-set-title"},[s("span",{id:"__an_set_"+e,text:t})])),n}function Ws(){var e=s("button",{class:"an-set-copy an-set-connect",type:"button","data-action":"connect",text:"Connect to Redline"});return v(e,"click",function(t){t.stopPropagation(),Us()}),e}function Ke(e){return s("p",{class:"an-set-note",text:e})}function dc(){var e=Ks("cloud","Redline Cloud");return at&&d.reviewer?e.appendChild(s("p",{class:"an-set-note"},["Signed in as "+(d.reviewer.name||"you")+(d.reviewName?" \xB7 "+d.reviewName:"")])):at?(e.appendChild(Ke("Sign in with your Redline account to review as yourself.")),e.appendChild(Ws())):k.workspace?(e.appendChild(Ke("This site isn't linked to a review yet. Members of the workspace can link it.")),e.appendChild(Ws())):(e.appendChild(Ke("Add your workspace snippet to share comments with your team.")),e.appendChild(s("a",{class:"an-set-link",href:Gr,target:"_blank",rel:"noopener noreferrer",text:"Get the snippet \u2192"}))),e}function $s(e){var t=s("button",{class:"an-switch",type:"button",role:"switch","data-action":"agent-switch","aria-checked":mn?"true":"false","aria-labelledby":"__an_set_sw"});return e?t.disabled=!0:v(t,"click",function(n){n.stopPropagation(),D.set(Ti,mn?"off":"on"),Qs("settings")}),s("div",{class:"an-set-row"},[s("span",{id:"__an_set_sw",text:"Send comments to my coding agent"}),t])}function cc(){return d.reviewer?d.agentSeenAt?"Agent last connected "+At(d.agentSeenAt):d.agentId?"Agent connected":"No agent yet":"Connect to Redline to see this review's agent."}function fc(){var e=Ks("mcp","MCP");if(at)return e.appendChild(Ke(cc())),d.reviewer&&d.reviewer.role==="author"&&e.appendChild(s("a",{class:"an-set-link",href:Gr+"/r/"+encodeURIComponent(k.reviewId)+"/agent",target:"_blank",rel:"noopener noreferrer",text:"Set up your coding agent \u2192"})),hn&&$r&&(e.appendChild($s(!0)),e.appendChild(Ke("This site is linked to a Redline Cloud review, so your coding agent reads it there."))),e;if(!hn)return e.appendChild(Ke("Your coding agent reads Redline Cloud reviews. Link this site to a review first.")),e;e.firstChild.appendChild(s("span",{class:"an-set-status",role:"status","data-state":""},[s("span",{class:"an-set-dot"}),h.createTextNode("")])),e.appendChild($s(Ei)),Ei?e.appendChild(Ke("Set by data-review-id on this page.")):mn&&e.appendChild(Ke("Comments on this site go to the redline-mcp running on this computer. Comments you left before stay in this browser; turn this off to see them."));var t=s("button",{class:"an-set-copy",type:"button","data-action":"copy-agent-command",text:"Copy"});return v(t,"click",function(n){n.stopPropagation(),je(Ys,"Command copied")}),e.appendChild(s("div",{class:"an-set-help"},[Ke("Your coding agent starts it. Add Redline to Claude Code from your project folder:"),s("div",{class:"an-set-cmd"},[s("code",{text:Ys}),t]),s("a",{class:"an-set-link",href:oc,target:"_blank",rel:"noopener noreferrer",text:"Other MCP clients \u2192"})])),e}function Js(){ae.innerHTML="",ae.appendChild(s("h3",{class:"an-set-h",id:"__an_set_t",text:"Settings"})),ae.appendChild(dc()),ae.appendChild(fc()),Gs()}function Qs(e){Kn=e===void 0?"settings":e,Oe.destroy(),Oe.init(qr,Xr)}function Zs(){if(!(O||We)){if(We=!0,Vl(),Gl(),E&&!cr()&&!Nt&&ba(),vd(),gn&&(Wr||Tt&&Date.now()-Tt.at>cl)&&Hs(),Dr(),Sr(),Ho(),_d(),ac(),Ye("cursor"),kt(),Ds(),/^#an=./.test(z.hash)||k.startOpen?De(!0):De(!1),Kn){var e=Kn;Kn="",De(!0),e==="settings"&&Vs()}ro()}}function el(){c.enabled||De(!0)}var pc={version:hi,config:k,open:function(){el(),rn()},close:function(){Bn()},toggle:function(){c.enabled?Qa():(De(!0),rn())},enable:function(){De(!0)},disable:function(){De(!1)},setTool:function(e){el(),Ye(e)},refresh:function(){Ds(),E&&(d.held=!1,d.etag="",Qe(!d.token).then(function(e){e&&(te(0),dt())},function(){}))},comments:function(){return c.comments.map(It)},focus:function(e){be(e,!1)},toast:L,export:function(e){Un(e)},import:function(){ai()},submit:Ss,setStatus:function(e,t){return Cs(e,t)},assign:function(e,t){return Es(e,t)},syncState:function(){return xa()},markdown:function(e){return Ps(e)},setFrozen:function(e){return zn(e)},isFrozen:function(){return!!G},copy:function(e){return e=e||{},e.format==="json"?ri(e.scope):Xn(e)},destroy:function(){if(!O){zn(!1),Ge(),O=!0,Se&&Se.disconnect(),he&&he.disconnect(),rt.forEach(function(t){t()}),rt=[],cn.forEach(function(t){m.clearTimeout(t)}),cn.clear(),fn.forEach(function(t){m.cancelAnimationFrame(t)}),fn.clear(),Br&&Br.abort(),wt&&(R(wt.timer),wt.reject(new Error("Redline was destroyed")),wt=null),no(),$n.forEach(function(t){URL.revokeObjectURL(t)}),$n.clear(),h.body&&h.body.classList.remove("an-drawing","an-highlighting"),de&&de.remove();var e=h.getElementById("__an_style");e&&e.remove()}},clear:function(){var e=ee(),t=[];e.comments=e.comments.filter(function(n){var r=n&&n.page===N&&(!E||Lt(n));return r&&t.push(n.id),!r}),Object.keys(q).forEach(function(n){q[n]&&q[n].page===N&&(!E||Lt(q[n]))&&(t.indexOf(n)<0&&t.push(n),delete q[n])}),Fe(e),t.forEach(function(n){Ki(n,0)}),on()}};return h.readyState==="loading"?v(h,"DOMContentLoaded",Zs):Zs(),pc}},ci=hc(typeof window!="undefined"?window:null),gc=Ee=>ci.init(Ee),mc=()=>ci.destroy();var bc=ci;export{bc as default,mc as destroy,gc as init};
|