@hazem3500/komo 0.9.21 → 0.9.22

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/dist/react.js CHANGED
@@ -1 +1 @@
1
- "use client";import{b as e,c as n,f as t,z as r}from"./chunk-JXIYWNFL.js";import{b as o}from"./chunk-KMLTN3JW.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";import{useEffect as s,useRef as c}from"react";function u(e){let n=c(null);s(()=>{if(n.current&&function(e,n){return[...new Set([...Object.keys(e),...Object.keys(n)])].every(t=>{if("shortcuts"===t||"features"===t||"frame"===t){let r=e[t]??{},o=n[t]??{};return Object.keys({...r,...o}).every(e=>Object.is(r[e],o[e]))}if("design"===t){let t=e.design,r=n.design;if(!t||!r)return t===r;let o=t.themes??[],s=r.themes??[];return t.tokens===r.tokens&&t.components===r.components&&o.length===s.length&&o.every((e,n)=>e===s[n])}if("onboarding"!==t)return Object.is(e[t],n[t]);let r=e.onboarding,o=n.onboarding;return r&&o?Object.keys({...r,...o}).every(e=>"sites"===e?r.sites?.length===o.sites?.length&&(r.sites??[]).every((e,n)=>e===o.sites?.[n]):Object.is(r[e],o[e])):r===o})}(n.current.config,e)||(n.current?.controller.destroy(),n.current=null,!1===e.enabled))return;let t={...e,...e.onboarding?{onboarding:{...e.onboarding,...e.onboarding.sites?{sites:[...e.onboarding.sites]}:{}}}:{}};n.current={config:t,controller:o(t)}}),s(()=>()=>{n.current?.controller.destroy(),n.current=null},[])}function i(t){let r=c(null),o=c(null);return o.current||(o.current=e=>{r.current=e}),s(()=>{if(!0===t.enabled&&r.current)return e(r.current,t.component,t.props,t.onChange)},[t.enabled,t.component]),s(()=>{!0===t.enabled&&n(r.current,t.component,t.props,t.onChange)},[t.enabled,t.component,t.props,t.onChange]),{ref:o.current,"data-komo-inspectable":t.component.id}}function l(e){s(()=>{if(!0!==e.enabled)return;let n=e.root??document.documentElement;return t(n,e.tokens)},[e.root,e.tokens,e.enabled])}export{r as cssVariableTokens,u as useKomo,l as useKomoDesignTokens,i as useKomoInspectable};
1
+ "use client";import{b as e,c as n,f as t,z as r}from"./chunk-JXIYWNFL.js";import{b as o}from"./chunk-K5RKBM4Z.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";import{useEffect as s,useRef as c}from"react";function u(e){let n=c(null);s(()=>{if(n.current&&function(e,n){return[...new Set([...Object.keys(e),...Object.keys(n)])].every(t=>{if("shortcuts"===t||"features"===t||"frame"===t){let r=e[t]??{},o=n[t]??{};return Object.keys({...r,...o}).every(e=>Object.is(r[e],o[e]))}if("design"===t){let t=e.design,r=n.design;if(!t||!r)return t===r;let o=t.themes??[],s=r.themes??[];return t.tokens===r.tokens&&t.components===r.components&&o.length===s.length&&o.every((e,n)=>e===s[n])}if("onboarding"!==t)return Object.is(e[t],n[t]);let r=e.onboarding,o=n.onboarding;return r&&o?Object.keys({...r,...o}).every(e=>"sites"===e?r.sites?.length===o.sites?.length&&(r.sites??[]).every((e,n)=>e===o.sites?.[n]):Object.is(r[e],o[e])):r===o})}(n.current.config,e)||(n.current?.controller.destroy(),n.current=null,!1===e.enabled))return;let t={...e,...e.onboarding?{onboarding:{...e.onboarding,...e.onboarding.sites?{sites:[...e.onboarding.sites]}:{}}}:{}};n.current={config:t,controller:o(t)}}),s(()=>()=>{n.current?.controller.destroy(),n.current=null},[])}function i(t){let r=c(null),o=c(null);return o.current||(o.current=e=>{r.current=e}),s(()=>{if(!0===t.enabled&&r.current)return e(r.current,t.component,t.props,t.onChange)},[t.enabled,t.component]),s(()=>{!0===t.enabled&&n(r.current,t.component,t.props,t.onChange)},[t.enabled,t.component,t.props,t.onChange]),{ref:o.current,"data-komo-inspectable":t.component.id}}function l(e){s(()=>{if(!0!==e.enabled)return;let n=e.root??document.documentElement;return t(n,e.tokens)},[e.root,e.tokens,e.enabled])}export{r as cssVariableTokens,u as useKomo,l as useKomoDesignTokens,i as useKomoInspectable};
package/dist/setup.js CHANGED
@@ -1 +1 @@
1
- import{a as o,c as n}from"./chunk-KMLTN3JW.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";function r(r){return(s={})=>n(o({...r,...s}))}export{r as defineKomo};
1
+ import{a as o,c as n}from"./chunk-K5RKBM4Z.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";function r(r){return(s={})=>n(o({...r,...s}))}export{r as defineKomo};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hazem3500/komo",
3
- "version": "0.9.21",
3
+ "version": "0.9.22",
4
4
  "description": "Point, area, and threaded comments for website branches.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -2964,12 +2964,12 @@ textarea {
2964
2964
  .thread-back svg { rotate: 90deg; }
2965
2965
  .thread-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 500; }
2966
2966
  `;var J1=new WeakMap;function _8(e){let t={destroy(){},open(){},close(){},comment(){},async refresh(){}};if(typeof document>"u"||e.enabled===!1)return t;if(!e.endpoint||!e.repo||!e.branch||!e.project)throw new Error("Comments require endpoint, repo, branch, and project.");if(e.pageRoot&&(e.pageRoot===document.body||!document.body.contains(e.pageRoot)))throw new Error("pageRoot must be mounted inside body.");let n=new URL(e.endpoint);if(n.username||n.password||n.protocol!=="https:"&&!(n.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(n.hostname)))throw new Error("Use an HTTPS API endpoint without credentials; HTTP is allowed on localhost.");Z2(e.avatar);let o=B3(e.shortcuts),i=e.features?.designMode!==!1,r=e.features?.tags!==!1,a=JSON.stringify([n.href,e.project,e.repo,e.branch]),s=J1.get(document);if(s){if(s.scope!==a)throw new Error("Destroy the current komo instance before changing projects or branches.");return s.controller}e={...Qw(e)};let l=[...document.body.childNodes].filter(d=>d instanceof Element?!d.matches("script,style,link,meta,template,noscript"):d.nodeType===3&&d.textContent?.trim()),c=e.pageRoot??(l.length===1&&l[0]instanceof HTMLElement?l[0]:document.body),u=getComputedStyle(c).display==="contents"?document.body:c,f=u!==document.body,p=`branch-comments:sidebar-mode:${e.project}:${e.repo}`,g=(()=>{if(!f)return"edge";try{let d=localStorage.getItem(p);if(d==="edge"||d==="background")return d}catch{}return e.sidebar==="background"?"background":"edge"})(),b=ii(window.innerWidth,window.innerHeight),v=!b&&g==="edge",T=!1,m=!1,h=!1,x=["localhost","127.0.0.1","[::1]"].includes(location.hostname),y=e.branch,S=`branch-comments:channel:${e.project}:${e.repo}`,z="local";try{localStorage.getItem(S)==="shared"&&(z="shared")}catch{}x&&z==="local"&&(e={...e,branch:"local"});let E=new is(e),C=new AbortController,D=!1,A=!!e.onboarding,H=!1,R=!1,I=e.showToolbar===!1,J=e.showToolbar===!1,te=!1,Re=!1,$e=0,Z=!!e.onboarding,ye=!1,ve=!1,xe=!!e.onboarding,Ee=0,fe=[],N=null,G=null,le=null,Oe=null,ge=new Fd([],d=>{if(!D){if(N){let w=ge.id(N);w!==N&&(Po.has(N)&&(Po.set(w,Po.get(N)),Po.delete(N)),me===N&&(me=w),N=w)}eo&&(eo=ge.id(eo)),fe=d,Di="",Io(),oo(),Ln(),Z||br()}},(d,w)=>d.map(k=>({...k,id:w(k.id),comments:k.comments.map(_=>({..._,id:w(_.id)}))})));function Ue(d,w){return(k,_)=>k.flatMap(j=>{if(j.id!==_(d))return[j];let V=w(j);return V?[V]:[]})}async function B(d,w,k){let _=E,j=E.token,V=Ee,$=()=>D||E!==_||V!==Ee||E.token!==j;try{await ge.submit(d,async q=>{if($())throw new DOMException("Session changed","AbortError");return w(q)})}catch(q){throw $()?new DOMException("Session changed","AbortError"):(k?.(),et(),new Error(`Couldn't save. Your change was reverted. ${q instanceof Error?q.message:"Try again."}`,{cause:q}))}if($())throw new DOMException("Session changed","AbortError");ge.busy||it(Xo)}let Q="open",ie="",we=!0,Xe="",He="Connecting",ft="",U=null,Ae,Te=0,Ne=0,Ie=null,Je=Promise.resolve(),Ct=null;function pn(){clearTimeout(Te);let d=Ct;return Ct=null,d&&(Je=Je.catch(()=>{}).then(async()=>{if(E.token===d.token)try{let w=await E.request("me","PATCH",{name:d.name,avatarUrl:d.avatarUrl,accentColor:d.accentColor});if(E.token!==d.token)return;Ie=w.user,Ne===d.revision&&E.save({token:d.token,user:w.user}),D||(Ln(),it(Xo))}catch(w){throw E.token===d.token&&Ne===d.revision&&(E.user=Ie,U=null,et()),new Error(`Couldn't save your profile. ${w instanceof Error?w.message:"Try again."}`,{cause:w})}})),Je}function pt(d,w=!1){!E.token||!d.name.trim()||((!Ie||Ie.id!==E.user?.id)&&(Ie=E.user?{...E.user}:null),Ct={...d,name:d.name.trim(),token:E.token,revision:++Ne},E.user&&(E.user={...E.user,...d,name:d.name.trim()}),Ln(),clearTimeout(Te),w?it(pn):Te=window.setTimeout(()=>it(pn),500))}function vt(){let d=ae("Continue with Google",()=>it(()=>eg("google")),"google-signin secondary");return d.prepend(pb()),d}let Ot="",rn=null,Kt=!1,mn=!1,Jn=!1,ps=e.onboarding?.sites?.filter(d=>d.startsWith("https://")&&d!==location.origin).join(`
2967
- `)??"",vo=!1,jn=null,Nn=!1,wt=!1,O=!1,W=null,oe=[],me=null,Me=null,St=new Map,Wt=qM(()=>gr()),$t=null,ot,Li=`branch-comments:drawer:${e.project}:${e.repo}`,wo;try{let d=JSON.parse(localStorage.getItem(Li)??"null");d&&Number.isFinite(d.x)&&Number.isFinite(d.y)&&(wo={x:d.x,y:d.y,edgeX:["left","right"].includes(d.edgeX)?d.edgeX:void 0,edgeY:["top","bottom"].includes(d.edgeY)?d.edgeY:void 0},ot=wo)}catch{}let vd=`branch-comments:sidebar:${e.project}:${e.repo}`,Fl,la,ew=!1,ca=IM,dr=null;try{let d=JSON.parse(localStorage.getItem(vd)??"null");Number.isFinite(d?.width)&&(ca=d.width),Number.isFinite(d?.height)&&(dr=d.height),d&&Number.isFinite(d.x)&&Number.isFinite(d.y)&&(Fl={x:d.x,y:d.y,edgeX:["left","right"].includes(d.edgeX)?d.edgeX:void 0,edgeY:["top","bottom"].includes(d.edgeY)?d.edgeY:void 0},la=Fl)}catch{}let Zl=new Map,Wl=/^Proposed .+ \(preview only\)$/m,tw,nw,ms,Ql=()=>tw??=Promise.resolve().then(()=>(I3(),X3)).then(d=>(ms=d,nw=d.summarizeDesignComment,D||(Di="",Io(!0)),d)),hh=d=>w=>{let k=Gl(d),_=[];try{w&&(_=[...document.querySelectorAll(w)])}catch{}return _.length!==1||k&&_.includes(k)?k??_[0]??null:_[0]},ow=d=>Wl.test(d)?nw?.(d)??(Ql(),"Design change"):d,Cn="",fr="",si=[],ua="",eo=null,Jl="",ec,tc=null,gh=!1,iw=Vn(),wd=0,Ed=0,Td=0,bh=0,Po=new Map,Le=M("div");Le.dataset.branchComments="",Le.dataset.sidebar=b?"mobile":v?"edge":"background",Object.assign(Le.style,{position:"fixed",inset:"0",pointerEvents:"none",zIndex:"2147483647",isolation:"isolate"});let lt=Le.attachShadow({mode:"open"}),rw=M("style");rw.textContent=$3;let Eo=M("div","catch");Eo.hidden=!0;let jt=M("div","pins"),ct=M("div"),pe=M("div","toolbar"),P=M("div"),aw=M("div");P.tabIndex=-1,v&&P.classList.add("edge-sidebar");let li=M("div","edge-sidebar-sensor");li.hidden=!0,Object.assign(jt.style,{position:"fixed",inset:"0"});let an=M("div","pin-preview");an.hidden=!0;let Sd=0,hs=!1,kd=!1,nc=null,gs=null,bs=null,yh="",to=(d=!1)=>{if(window.clearTimeout(Sd),an.hidden||kd&&!d)return;if(ms?.resetDesignPreviews(new Set([...fe.find(k=>k.id===N)?.comments.map(k=>k.id)??[],"draft"])),kd=!0,gs?.cancel(),d||It()){an.hidden=!0,nc=null;return}let w=an.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"translateY(3px) scale(.99)"}],{duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"});gs=w,w.finished.then(()=>{gs===w&&(an.hidden=!0,nc=null)}).catch(()=>{})};an.addEventListener("pointerenter",()=>{hs||jn||$t||(kd=!1,window.clearTimeout(Sd),gs?.cancel())}),an.addEventListener("pointerleave",()=>to());let Go=M("div","component-hover");Go.setAttribute("aria-hidden","true");let Bn=null,pr=null,Md=0,oc=M("div","sr-only");oc.setAttribute("aria-live","polite");let sw=S3(pe,d=>{if(d==="account"){if(!E.user)return nt("person");let w=vr(E.user);return w.classList.add("review-avatar"),w}return nt(d)});lt.append(rw,Eo,Go,jt,P,li,ct,an,aw,pe,oc),document.body.append(Le);let lw=0,cw=0,uw=new MutationObserver(d=>{if(Date.now()-cw>1e3&&([lw,cw]=[0,Date.now()]),++lw<20)for(let w of d)Le.removeAttribute(w.attributeName)});uw.observe(Le,{attributeFilter:["aria-hidden","inert"]});let qt=document.documentElement;function Ad(d,w){return Object.fromEntries(w.map(k=>[k,d.style[k]]))}let da=Ad(u,["width","boxSizing","zoom","transformOrigin","transform","position","left","top","height","minHeight","paddingBottom","overflow","borderRadius","background"]),xh=Ad(document.body,["overflow","background"]),R8=qt.style.overflow,Cd=new Map,vh=qt.style.background,wh=i2(u,Le,e.frame?.include,Fo);function mr(){let d=parseFloat(u.style.left)||0,w=parseFloat(u.style.top)||0,k=(parseFloat(u.style.width)||u.offsetWidth)*$n,_=(parseFloat(u.style.height)||u.offsetHeight)*$n;wh.update(Yt&&!D?{scale:$n,left:d,top:w,zoom:rc(),bounds:{left:d,top:w,right:d+k,bottom:w+_,width:k,height:_}}:null)}function dw(){let d=Yt||Ko,w=[document.body.style.background,qt.style.background];d&&(document.body.style.background=xh.background,qt.style.background=vh);let k=[document.body,qt].map(_=>getComputedStyle(_).backgroundColor).find(_=>_!=="rgba(0, 0, 0, 0)")??"#fff";return d&&([document.body.style.background,qt.style.background]=w,Th.takeRecords()),k}let Eh=0,Th=new MutationObserver(()=>{Eh||=requestAnimationFrame(()=>{Eh=0,Ld=dw(),(Yt||Ko)&&(u.style.background=Ld)})}),Yt=!1,Ko=!1,Ld=dw();for(let d of[qt,document.body])Th.observe(d,{attributes:!0});let To=0,ci,Sh=!1,no=!1,fw=M3(`branch-comments:open:${e.project}:${e.repo}`,e.restoreOpen),kh=`branch-comments:toolbar-dismissed:${e.project}:${e.repo}`;try{sessionStorage.getItem(kh)==="1"&&(J=!0,I=!0)}catch{}let ys=!1,hr,Mh=[],xs=0,So=!1,pw=null,vs,_d;function zd(d){!pe.offsetWidth||!pe.offsetHeight||(ot=or(d,pe.offsetWidth,pe.offsetHeight,qt.clientWidth,window.innerHeight),pe.style.left=`${ot.x+pe.offsetWidth/2}px`,ot.edgeY==="bottom"&&!b?(pe.style.top="auto",pe.style.bottom="calc(16px + env(safe-area-inset-bottom,0px))"):(pe.style.top=`${ot.y}px`,pe.style.bottom="auto"))}function mw(d){if(P.dataset.dragging==="true"){la=d,P.style.left=`${d.x}px`,P.style.top=`${d.y}px`;return}P.offsetWidth&&(la=or(d,P.offsetWidth,P.offsetHeight,qt.clientWidth,window.innerHeight),_i())}function hw(){P.style.width=`${ca}px`,P.style.height=dr==null?"":`${dr}px`,Wh()}function gw(){Fl=la;try{localStorage.setItem(vd,JSON.stringify({...Fl,width:ca,height:dr}))}catch{}}function bw(){let d=qt.clientWidth,w=window.innerHeight;ca=Math.min(Math.max(ca,Mu),Math.max(Mu,d-2*Vo)),dr!=null&&(dr=Math.min(Math.max(dr,Au),Math.max(Au,Math.min(w-2*Vo,Np)))),hw()}function _i(){if(b||!v)return;bw();let d=P.offsetHeight||Math.min(window.innerHeight-2*Vo,Np),w=ZM(la,ca,d,qt.clientWidth,window.innerHeight),k=WM(w,qt.clientWidth);P.style.left=`${w.x}px`,P.style.top=`${w.y}px`,P.style.setProperty("--edge-account-max-height",`${Math.max(0,window.innerHeight-w.y-28)}px`),P.style.right="auto",P.style.bottom="auto",P.style.transformOrigin=w.side==="left"?"left center":"right center",P.style.setProperty("--edge-park-x",`${k.parked}px`),P.style.setProperty("--edge-peek-x",`${k.peek}px`),li.style.left=w.side==="left"?"0px":"",li.style.right=w.side==="right"?"0px":"",A?(delete P.dataset.collapsed,delete P.dataset.peek,li.hidden=!0):(P.dataset.collapsed="true",ew?P.dataset.peek="true":delete P.dataset.peek,li.hidden=!1)}function Ah(){Le.dataset.sidebar=b?"mobile":v?"edge":"background",P.classList.toggle("edge-sidebar",v),P.style.transition="none",P.style.translate="",P.style.opacity="",sc(!0),v?ui.isConnected||P.prepend(ui):(ui.remove(),delete P.dataset.collapsed,delete P.dataset.peek,li.hidden=!0),P.offsetWidth,P.style.transition=""}let ws=[],Ch=!1;function ic(){for(let d of ws)d.cancel();ws=[],Ko=!1,jt.style.opacity=""}function Lh(d,w){if(b||d===g||D||!f&&d==="background")return;let k=()=>[u,P.querySelector(".panel"),pe,ct.querySelector(".account-dialog")],_=k().map(V=>V?.getBoundingClientRect());if(ic(),ci?.stop(),ci=void 0,hr?.stop(),hr=void 0,sc(!0),jd(),Ss(),pe.style.translate="",vs=void 0,Ch=!0,g=d,v=d==="edge",!w){T=!1,e={...e,sidebar:d};try{localStorage.setItem(p,d)}catch{}}if(Ah(),zi(),et(),Ch=!1,It())return;k().forEach((V,$)=>{let q=_[$];if(!V?.isConnected||!q?.width)return;V!==u&&V.getAnimations().forEach(se=>se.cancel());let ee=V.getBoundingClientRect();if(!ee.width)return;let re=ee.width/V.offsetWidth,X=getComputedStyle(V).transform;ws.push(V.animate([{transform:`${X==="none"?"":X} translate(${(q.left-ee.left)/re}px, ${(q.top-ee.top)/re}px) scale(${q.width/ee.width})`,transformOrigin:"top left"},{transform:X,transformOrigin:"top left"}],{duration:250,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}))});let j=ws;Ko=!0,jt.style.opacity="0",Promise.all(j.map(V=>V.finished)).then(()=>{D||j!==ws||(ws=[],Ko=!1,jt.style.opacity="",mr(),wh.reposition(),Fo())}).catch(()=>{})}function _h(d,w,k,_,j){let V=M("div","account-setting"),$=M("span","account-setting-label",w),q=os(w,k,_,ee=>j(ee));return q.querySelector("summary").dataset.focusKey=`setting-${d}`,V.append($,q),V}function H8(){return b?_h("sidebar","Sidebar",[["mobile","Floating sidebar"]],"mobile",()=>{}):f?_h("sidebar","Sidebar",[["edge","Floating"],["background","Frame"]],g,Lh):M("p","muted","Floating sidebar \xB7 Set pageRoot for Frame.")}function O8(){let d=_h("channel","Comments",[["local","Local development"],["shared","Site comments"]],z,j8);return d.append(M("p","muted","Separate channels, both saved to this project.")),d}function j8(d){if(!(d===z||D)){if(ye||ge.busy){ko("Wait for your changes to save.");return}z=d;try{localStorage.setItem(S,d)}catch{}e={...e,branch:d==="local"?"local":y},E.cancelReads(),E=new is(e),ve=Kt=!1,ac=void 0,Ot="",rn=null,He="Connecting",vo=Nn=wt=O=mn=!1,N=null,G=null,W=null,fa(),et(),Hd()}}function fa(){Ee++,ve=!1,Ot="",N=null,ac=void 0;let d=E.cached();xe=d!==null,ge.reset(Oh(d??[]))}let ui=M("div","edge-sidebar-grip");ui.setAttribute("aria-hidden","true");let yw=d=>Op(P,d,mw,C.signal,()=>{m=!1,h=!0,Yo.show()},()=>{gw(),Yo.update()},()=>A&&v&&!So);yw(ui),P.prepend(ui);let N8=["n","s","e","w","ne","nw","se","sw"];for(let d of N8){let w=M("div",`edge-sidebar-resize edge-sidebar-resize-${d}`);w.addEventListener("pointerdown",k=>{if(k.button!==0||!A||!v||So)return;k.preventDefault(),k.stopPropagation();for(let ee of P.getAnimations())ee.cancel();P.style.transition="none";let _=P.getBoundingClientRect(),j=k.clientX,V=k.clientY,$=ee=>{if(ee.pointerId!==k.pointerId)return;let re=FM(d,_,ee.clientX-j,ee.clientY-V,qt.clientWidth,window.innerHeight);ca=re.width,(d.includes("n")||d.includes("s"))&&(dr=re.height),la={x:re.left,y:re.top},P.style.left=`${re.left}px`,P.style.top=`${re.top}px`,hw()},q=ee=>{ee.pointerId===k.pointerId&&(window.removeEventListener("pointermove",$,!0),window.removeEventListener("pointerup",q,!0),window.removeEventListener("pointercancel",q,!0),P.style.transition="",gw(),_i())};window.addEventListener("pointermove",$,{capture:!0,passive:!1}),window.addEventListener("pointerup",q,!0),window.addEventListener("pointercancel",q,!0)},{signal:C.signal}),P.append(w)}for(let d of["left","right","top","bottom"])P.append(M("div",`edge-sidebar-snap edge-sidebar-snap-${d}`));let Dd=d=>{ew=d,!A&&v&&!So&&_i()};li.addEventListener("pointerenter",()=>Dd(!0)),li.addEventListener("pointerleave",()=>Dd(!1)),li.addEventListener("pointerup",d=>{d.button===0&&!A&&Xt(!0)}),P.addEventListener("pointerenter",()=>Dd(!0)),P.addEventListener("pointerleave",()=>Dd(!1)),window.addEventListener("resize",()=>{D||!v||So||(bw(),_i())},{signal:C.signal,passive:!0}),Ah();let Yo=PM(pe,()=>A||H||Z||!!G||!!N,C.signal,e.autoHideDrawer);Op(pe,pe,zd,C.signal,()=>{Yo.show(),hr?.stop(),pe.style.translate="0px 0px"},()=>{wo=ot;try{localStorage.setItem(Li,JSON.stringify(wo))}catch{}Ln(),Yo.update()},()=>!A,d=>!!d.closest(".morphing-menu__shortcut"));let zh=new ResizeObserver(()=>{pe.dataset.edgeTabs!=="true"&&(ot?zd(ot):e.drawerContainer&&Ln())});zh.observe(pe),e.drawerContainer&&zh.observe(e.drawerContainer);let rc=()=>qt.currentCSSZoom??1;function Vn(){return k3(e.page?.()??location.pathname)}let xw=new WeakMap,pa=null,Dh=0,Rh=new WeakMap;function vw(){cancelAnimationFrame(Dh),!(D||!lt.querySelector(".floating-notice"))&&(gr(),Dh=requestAnimationFrame(vw))}function Hh(d=G??fe.find(w=>w.id===N)?.anchor){let w=ct.firstElementChild?.getBoundingClientRect();if(!w||Z)return;let k=d?As(d):null;return{cardKey:me,left:w.left,top:w.top,anchor:d,offsetX:w.left-(k?.x??0),offsetY:w.top-(k?.y??0),scrollX:window.scrollX,scrollY:window.scrollY}}function Rd(d){if(d.dataset.closing)return;if(d.dataset.closing="true",d.inert=!0,d.setAttribute("aria-hidden","true"),pa===d&&(pa=null,clearTimeout(wd)),It()){d.remove();return}d.animate([{opacity:getComputedStyle(d).opacity,translate:"0px 0px",scale:1},{opacity:0,translate:d.dataset.attached==="true"?`0px ${(d.dataset.placement==="above"?1:-1)*(d.offsetHeight/2+10)}px`:"0px 3px",scale:d.dataset.attached==="true"?.94:.99}],{duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"}).finished.catch(()=>{}).finally(()=>d.remove())}function ko(d,w,k=Hh()){oc.textContent=d,pa&&Rd(pa);let _=M("div","toast floating-notice");pa=_,k&&xw.set(_,k),_.setAttribute("role",w?"alertdialog":"status"),_.setAttribute("aria-label",d),_.append(nt("info"),M("span","",d)),w&&_.append(ae(w.label,()=>{Rd(_),w.run()},"notice-action")),_.append(ae("Dismiss notice",()=>Rd(_),"icon","close")),lt.append(_),gr(),vw(),It()||_.animate([{opacity:0,translate:_.dataset.attached==="true"?`0px ${(_.dataset.placement==="above"?1:-1)*(_.offsetHeight/2+10)}px`:"0px 6px",scale:_.dataset.attached==="true"?.94:.97},{opacity:1,translate:"0px 0px",scale:1}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}),clearTimeout(wd),wd=window.setTimeout(()=>Rd(_),5e3)}function gr(){for(let d of lt.querySelectorAll(".floating-notice")){let w=xw.get(d);if(!w)continue;let k=w.anchor?As(w.anchor):null,j=(!Z&&me===w.cardKey?ct.firstElementChild:null)?.getBoundingClientRect();j&&(d.style.maxWidth=`${Math.min(360,j.width,innerWidth-24)}px`,w.left=j.left,w.top=j.top,w.offsetX=j.left-(k?.x??0),w.offsetY=j.top-(k?.y??0),w.scrollX=window.scrollX,w.scrollY=window.scrollY);let V=j?j.left+(j.width-d.offsetWidth)/2:k?k.x+w.offsetX:w.left+w.scrollX-window.scrollX,$=!!j&&j.bottom+10+d.offsetHeight>innerHeight-12;d.dataset.placement=$?"above":"below";let q=j?$?j.top-d.offsetHeight-10:j.bottom+10:k?k.y+w.offsetY:w.top+w.scrollY-window.scrollY,ee=String(!!j),re=d.dataset.attached!==void 0&&d.dataset.attached!==ee,X=re?d.getBoundingClientRect():null,se=Rh.get(d);if(se&&(re||Math.abs(se.left-V)>.5||Math.abs(se.top-q)>.5)&&(se.animation.cancel(),Rh.delete(d)),d.dataset.attached=ee,Object.assign(d.style,{left:`${V}px`,top:`${q}px`,bottom:"auto",transform:"none",transformOrigin:j?$?"50% 100%":"50% 0%":"0% 0%"}),X&&!d.dataset.closing&&!It()){let bt=d.animate([{left:`${X.left}px`,top:`${X.top}px`},{left:`${V}px`,top:`${q}px`}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"});Rh.set(d,{animation:bt,left:V,top:q})}}}function ww(d){D||d instanceof DOMException&&d.name==="AbortError"||(ft=d instanceof Error?d.message:"Something went wrong. Try again.",ko(ft))}function it(d){d().catch(ww)}function Ew(d,w){return w.then(k=>{d.isConnected&&d.replaceWith(k)}).catch(ww),d}function Tw(d){return Ew(M("section","account-usage"),Promise.resolve().then(()=>(lh(),sh)).then(({accountUsage:w})=>w(E,d,!0,x&&z==="local")))}function Hd(){it(Kt?Xo:bc)}async function B8(d){if(!ye){ye=!0,ft="",br();try{for(await d();ve&&!D;)await new Promise(w=>setTimeout(w,20));await Xo()}finally{ye=!1,et()}}}let Oh=d=>d.map(w=>({...w,comments:w.comments.filter(k=>k.body!=="[Comment deleted]")})).filter(w=>w.comments.length>0),di,ac,Sw=-1;async function Xo(){if(D||ve||ge.busy||e.onboarding)return;let d=ge.revision,w=E,k=w.token,_=Ee;ve=!0;try{let j=await w.list();if(D||w!==E||_!==Ee||k!==w.token||ge.busy||d!==ge.revision)return;if(j===ac&&d===Sw&&He==="Live")return!1;ac=j,Sw=d,xe=!0;let V=Oh(j),$=JSON.stringify(V)!==JSON.stringify(fe),q=He!=="Live";return Ot="",Kt&&(rn=null),He=rn?"Offline":"Live",N&&!V.some(ee=>ee.id===N)&&(N=null),$?ge.replace(V,d):q&&(oo(),Ln()),$}catch(j){if(D||w!==E||_!==Ee||j instanceof DOMException&&j.name==="AbortError")return;throw k!==w.token&&fa(),j instanceof Qn&&(j.status===401||j.status===403)&&j.code!=="site_not_approved"&&(Ot=j.message,N=null,ac=void 0,ge.replace([],d)),rn=Ot?null:g1(j),He="Offline",oo(),Ln(),j}finally{w===E&&_===Ee&&(ve=!1)}}function Es(){!te&&m&&(m=!1,la=Fl,_i()),!(T===te||te&&(!f||b||g!=="edge"))&&(T=te,b?g="edge":Lh(te?"background":"edge",!0))}let Od=()=>A&&!v&&!b&&!T;function Ts(d){if(e.onboarding)return;te&&(te=!1,le?.setActive(!1),Es()),R=d,A&&!Od()&&Xt(!1);let w=d?W??oe.shift():null;if(w){G=w.anchor,Cn=w.text,W=null,N=null,Z=!1,H=!1,et(),ct.querySelector("textarea")?.focus();return}H=d,di?.wake(!1),I=!1,Z=!1,d&&(N=null,G=null),et()}function kw(){Re&&(Re=!1,Xt(!0),requestAnimationFrame(()=>{let d=P.querySelector(".list");d&&(d.scrollTop=$e),P.querySelector('[data-menu-item="design"]')?.focus({preventScroll:!0})}))}function jh(d){e.onboarding||G||d&&!i||(d&&(Re=!0,A&&($e=P.querySelector(".list")?.scrollTop??0),Ts(!1),te=!0,h=!1,Es(),A||Xt(!0),Z=!1,P.querySelector(".panel")?.contains(lt.activeElement)&&P.focus({preventScroll:!0})),te=d,d?W8().then(w=>w?.setActive(te)):(le?.setActive(!1),Es(),kw()),et())}let Nh=0;function V8(){let d=ii(window.innerWidth,window.innerHeight);d!==b&&(lt.append(P),ic(),sc(!0),jd(),Ss(),b=d,d||(pe.style.translate="",ot||(pe.style.bottom="")),v=!d&&g==="edge",P.removeAttribute("style"),Ah(),Bh="",et())}let $n=1,Bh="",Mw=()=>(window.visualViewport?.offsetTop??0)+Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight)-window.innerHeight;function $8(){let d=Math.max(1,Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight)*.9),w=Mw(),k=Ph().getBoundingClientRect();Le.style.setProperty("--mobile-pill-x",`${k.left+k.width/2-window.innerWidth/2}px`),Le.style.setProperty("--mobile-pill-y",`${k.bottom-(window.innerHeight+w-6)}px`),Le.style.setProperty("--mobile-pill-scale-x",String(Math.max(.01,k.width/Math.max(1,window.innerWidth-24)))),Le.style.setProperty("--mobile-pill-scale-y",String(Math.max(.01,k.height/d)))}function Vh(){for(let[d,w]of Cd)Object.assign(d.style,w);Cd.clear(),qt.style.overflow=R8,Object.assign(u.style,da),Object.assign(document.body.style,xh),qt.style.background=vh}function zi(){let d=rc(),w=ii(window.innerWidth,window.innerHeight)?Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight):window.innerHeight,k=`${window.innerWidth}:${window.innerHeight}:${w}:${d}:${A}:${Z}:${g}:${te}:${window.visualViewport?.offsetTop??0}`;if(Bh===k)return;if(b||ic(),Bh=k,Le.style.zoom=String(1/d),Le.style.width=`${window.innerWidth}px`,jt.style.opacity="",v||b){ci?.stop(),Ko=!1;let ee=Yt?u.scrollTop*d:null;if(Yt&&(Vh(),$n=1),ee!==null&&window.scrollTo({top:ee,behavior:"instant"}),Le.style.height=b?`${window.innerHeight}px`:"",Le.style.top=b?"":"0px",b){let re=Mw();pe.style.translate=`0 ${re}px`,Le.style.setProperty("--mobile-panel-height",`${Math.max(1,w*.9)}px`),Le.style.setProperty("--mobile-panel-bottom",`${-re}px`)}Le.classList.toggle("review-open",A),Yt=!1,mr(),jt.style.clipPath="",Object.assign(Eo.style,{left:"",top:"",width:"",height:""});return}let _=Yt?u.scrollTop:window.scrollY/(d*$n),j=Yt,V=Yt?u.getBoundingClientRect():{left:0,top:0,width:window.innerWidth};ci?.stop(),Ko=!1;let $=u1(window.innerWidth,w,A,window.innerHeight,Z,!0),q=$.framed;if(Le.style.setProperty("--review-viewport-height",`${w}px`),Le.style.height=`${w}px`,Le.style.top="",Le.classList.toggle("review-open",A),Le.classList.toggle("design-active",te),q){$n=$.scale;let ee=$n*d;Object.assign(u.style,{position:"fixed",transform:`scale(${$n})`,transformOrigin:"top left",left:`${$.left/d}px`,top:`${$.top/d}px`,width:`${window.innerWidth/d}px`,boxSizing:"border-box",height:`${$.height/ee}px`,paddingBottom:da.paddingBottom,zoom:da.zoom,overflow:"hidden auto",borderRadius:`${12/ee}px`,background:Ld});for(let re of u.querySelectorAll("header"))!Cd.has(re)&&getComputedStyle(re).position==="fixed"&&(Cd.set(re,Ad(re,["position","marginBottom"])),re.style.position="sticky",re.style.marginBottom=`-${re.offsetHeight}px`);qt.style.overflow="hidden",document.body.style.overflow="hidden",qt.style.background=document.body.style.background="#080808",u.scrollTop=_}else Vh(),Yt&&window.scrollTo({top:_*d,behavior:"instant"}),$n=1;if(Yt=q,mr(),!q&&e.drawerContainer?.isConnected){let ee=e.drawerContainer.getBoundingClientRect();_d=ee.width?ee.left+ee.width/2:void 0}if(q!==j&&!Sh&&!Ch&&!no&&!It()){let ee=q?u.getBoundingClientRect():{left:0,top:0,width:window.innerWidth},re=`translate(${(V.left-ee.left)/d}px, ${(V.top-ee.top)/d}px) scale(${$n*V.width/ee.width})`;if(u.style.transformOrigin=q?"top left":`0 ${_}px`,!q){qt.style.background=document.body.style.background="#080808",u.style.background=Ld;let se=getComputedStyle(u).minHeight;u.style.minHeight=`max(${se==="auto"?"0px":se}, ${window.innerHeight/d}px)`}jt.style.opacity="0",Ko=!0,ci=on(u,{transform:[re,`translate(0px, 0px) scale(${$n})`]},{duration:.25,ease:[.32,.72,0,1]});let X=ci;X.finished.then(()=>{D||ci!==X||(Ko=!1,Yt||(u.style.transformOrigin=da.transformOrigin,u.style.transform=da.transform,u.style.background=da.background,u.style.minHeight=da.minHeight,document.body.style.background=xh.background,qt.style.background=vh),jt.style.opacity="",mr(),wh.reposition(),Fo())})}jt.style.clipPath=q?`inset(${$.visibleTop}px ${$.right}px ${$.bottom}px ${$.visibleLeft}px)`:"",Object.assign(Eo.style,q?{left:`${$.visibleLeft}px`,top:`${$.visibleTop}px`,width:`${$.visibleWidth}px`,height:`${$.visibleHeight}px`}:{left:"",top:"",width:"",height:""})}let $h;function Uh(){pe.dataset.edgeTabs!=="true"&&($h=Ad(pe,["left","top","bottom","transform"])),Object.assign(pe.style,{left:"",top:"",bottom:"",transform:""}),pe.parentElement!==P&&P.append(pe),pe.dataset.edgeTabs="true",A?pe.dataset.edgeOrient="horizontal":delete pe.dataset.edgeOrient}function Ss(){pe.dataset.edgeTabs==="true"&&(Object.assign(pe.style,$h),$h=void 0),delete pe.dataset.edgeTabs,delete pe.dataset.edgeOrient,pe.parentElement===P&&oc.before(pe)}function qh(){return N&&!Z&&!G&&A&&!b&&!te&&!e.onboarding?P.querySelector(".panel"):null}function U8(d){let w=d??(v&&Z?P:lt);ct.parentNode!==w&&(w===lt?an.before(ct):w.append(ct)),ct.classList.toggle("thread-pane",!!d),P.querySelector(".panel")?.toggleAttribute("data-thread",!!d)}function Ph(){return pe.querySelector(".morphing-menu__shell")??pe}function Gh(){return pe.querySelector(".morphing-menu")}function q8(){return pe.querySelector(".morphing-menu__bar")}function Kh(){return[...P.querySelectorAll(".panel-head, .panel .empty, .thread-card")]}function ma(d){return Mh.push(d),d}function jd(){for(let d of Kh())Object.assign(d.style,{opacity:"",transform:"",filter:""});ui.style.opacity=""}function Nd(d,w){for(let k of P.getAnimations())k.cancel();Object.assign(P.style,{transition:"none",transform:"none",translate:"none",opacity:"1",left:`${d.left}px`,top:`${d.top}px`,width:`${d.width}px`,height:`${d.height}px`,borderRadius:w})}function Aw(){Object.assign(P.style,{width:"",height:"",borderRadius:"",transform:"",opacity:""}),v&&_i(),P.offsetWidth,P.style.transition=""}function Cw(d=Gh()){delete P.dataset.morphing,delete pe.dataset.edgeSurface,delete pe.dataset.edgeMorph,delete pe.dataset.hidden,d&&(d.style.transition="")}function sc(d=!1){xs+=1;for(let k of Mh)k.stop();Mh=[];let w=So;So=!1,d&&P.toggleAttribute("data-tips-ready",A),!(!d||!w)&&(Cw(),Ss(),jd(),Aw())}function P8(d,w,k){let _=P.getBoundingClientRect(),j=d?null:{left:_.left,top:_.top,width:_.width,height:_.height,radius:P.style.borderRadius||"16px"};sc(!1),j&&Nd(j,j.radius);let V=xs;So=!0;let $=Gh();$&&($.style.transition="none");let q=q8(),ee=Ph(),re=!1,X=()=>{re||V!==xs||D||(re=!0,So=!1,Cw($),d||(jd(),P.style.opacity="0",Ss()),Aw(),d&&(P.dataset.tipsReady=""))},se=no||It();if(d){let Ce=w?P.getBoundingClientRect():null,qe=P.style.borderRadius||"16px";P.style.transition="none",P.style.width="",P.style.height="",P.style.borderRadius="",P.style.transform="none";let F=ee.getBoundingClientRect(),he=!w&&k&&k.width>0?k:F;!w&&he.width>0&&(pw={left:he.left,top:he.top,width:he.width,height:he.height}),Uh(),delete P.dataset.morphing,_i();let Y=P.getBoundingClientRect();if(P.dataset.morphing="true",se||he.width<=0||Y.width<=0||w&&!Ce){X();return}let ne=`${he.height/2}px`;w&&Ce?Nd(Ce,qe):Nd(he,ne),Kh().forEach((Ze,_e)=>{Ze.style.opacity="0",Ze.style.transform="translateY(48px)",Ze.style.filter="blur(4px)",ma(on(Ze,{opacity:1,y:0,filter:"blur(0px)"},{...Jy,delay:tx+_e*QM}))}),ui.style.opacity="0",ma(on(ui,{opacity:1},{...Jy,delay:tx}));let de=()=>{if(V!==xs||D)return;delete P.dataset.morphing;let Ze=P.getBoundingClientRect();ma(on(P,{left:[`${Ze.left}px`,`${Y.left}px`],top:[`${Ze.top}px`,`${Y.top}px`],width:[`${Ze.width}px`,`${Y.width}px`],height:[`${Ze.height}px`,`${Y.height}px`],borderRadius:[P.style.borderRadius||"16px","16px"]},Ba)).finished.then(X).catch(()=>{V===xs&&X()})};if(w||he.height>he.width+8){de();return}let be=JM(q?.offsetWidth||he.width,q?.offsetHeight||he.height),Be=eA(he.left+he.width/2,he.top+he.height,be.width,be.height),Fe=P.getBoundingClientRect();ma(on(P,{left:[`${Fe.left}px`,`${Be.left}px`],top:[`${Fe.top}px`,`${Be.top}px`],width:[`${Fe.width}px`,`${Be.width}px`],height:[`${Fe.height}px`,`${Be.height}px`]},Bp)).finished.then(de).catch(()=>{});return}let bt=j??P.getBoundingClientRect(),mt=j?.radius||P.style.borderRadius||"16px";delete pe.dataset.hidden,P.dataset.morphing="true",Uh();let Lt=pe.getBoundingClientRect(),ce=pw??{left:(window.innerWidth-(Lt.width||228))/2,top:window.innerHeight-24-(Lt.height||52),width:Lt.width||228,height:Lt.height||52};if(se||ce.width<=0||bt.width<=0){X();return}Nd(bt,mt);for(let Ce of Kh())ma(on(Ce,{opacity:0,y:16,filter:"blur(2px)"},ex));ma(on(ui,{opacity:0},ex)),ma(on(P,{left:[`${bt.left}px`,`${ce.left}px`],top:[`${bt.top}px`,`${ce.top}px`],width:[`${bt.width}px`,`${ce.width}px`],height:[`${bt.height}px`,`${ce.height}px`],borderRadius:[mt,`${ce.height/2}px`]},Vp)).finished.then(X).catch(()=>{V===xs&&X()})}function Xt(d){ic();let w=d&&!A;if(A=d,no||di?.wake(w),delete P.dataset.tipsReady,P.toggleAttribute("data-tips-restored",no),e.onboarding||fw.set(d),d&&(H=!1),d||(clearTimeout(To),To=0,Z=!1,mc=hc="",gc()),b){cancelAnimationFrame(Nh),$8(),w&&!no&&!It()?Le.dataset.mobileEntering="":delete Le.dataset.mobileEntering,I=!1,zi(),et(),Yo.show(),Yo.update(),Le.dataset.mobileEntering!==void 0&&(Nh=requestAnimationFrame(()=>{delete Le.dataset.mobileEntering}));return}if(v){let j=So,V=d?Ph().getBoundingClientRect():null;d||delete pe.dataset.edgeOrient,ot=d?ot:wo,vs=void 0,I=!1,So=!0;let $=Gh();$&&($.style.transition="none"),Yo.show(),zi(),et(),P8(d,j,V),Yo.update();return}let k=pe.getBoundingClientRect();ot=d?void 0:wo,vs=void 0,I=!1,zi(),et(),hr?.stop(),pe.style.translate="0px 0px";let _=pe.getBoundingClientRect();!no&&!It()&&(hr=on(pe,{translate:[`${k.left-_.left}px ${k.top-_.top}px`,"0px 0px"]},{type:"spring",stiffness:680,damping:32,mass:.55})),Yo.show(),Yo.update()}function fi(){if(R=!1,clearTimeout(To),To=0,Z){it(pn),tc=null,Z=!1,et();return}N=null,G=null,Z=!1,eo=null,ft="",H=!1,et()}function G8(){Re=!1,te=!1,le?.setActive(!1),Es(),fi(),A&&Xt(!1),H=!1,R=!1,I=!0,J=!0;try{sessionStorage.setItem(kh,"1")}catch{}et()}function Lw(){J=!1,I=!1;try{sessionStorage.removeItem(kh)}catch{}et()}function lc(d){if(gh=!!lt.activeElement?.matches(":focus-visible")&&P.contains(lt.activeElement),R=!1,clearTimeout(To),To=0,d.page!==Vn()){let _=new URL(d.page,location.origin);_.searchParams.set("comment",d.id),eL(_);return}bs=nc===d.id&&!an.hidden?an.getBoundingClientRect():null,bs&&to(!0),N=d.id,G=null,Z=!1,eo=null,ft="",H=!1;let w=b&&A;w&&Xt(!1);let k=As(d.anchor);k.attached&&!bs&&(w||!b)&&(Yt?u:window).scrollBy({top:(k.y-(w?Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight):window.innerHeight)*.35)/(Yt?$n*rc():1),behavior:w&&!It()?"smooth":"instant"}),et()}function Yh(){return fe.filter(d=>(we||d.page===Vn())&&(Q==="all"||d.resolved===(Q==="resolved"))&&(!ie||!!d.tags?.includes(ie))&&(!Xe||d.comments.some(w=>`${w.body} ${w.author.name}`.toLowerCase().includes(Xe.toLowerCase()))||d.page.toLowerCase().includes(Xe.toLowerCase()))).sort((d,w)=>w.updatedAt-d.updatedAt)}function Ln(){pe.style.display=J?"none":"",Yo.update();let{dockCenter:d}=u1(window.innerWidth,window.innerHeight,A);if(b)Ss(),Object.assign(pe.style,{left:"50%",top:"auto",bottom:"calc(16px + env(safe-area-inset-bottom,0px))",transform:"translateX(-50%)"});else if(v)So||(delete pe.dataset.hidden,A?Uh():(Ss(),ot&&zd(ot)),_i());else{delete pe.dataset.hidden;let _=!A&&e.drawerContainer?.isConnected?e.drawerContainer.getBoundingClientRect():void 0;_?.width&&!Ko&&(_d=_.left+_.width/2);let j=pe.offsetWidth/2,V=_?.width&&_d!==void 0?Math.max(16+j,Math.min(window.innerWidth-16-j,_d)):d;if(ot)zd(ot);else if(V!==vs){let $=pe.getBoundingClientRect(),q=$.left+$.width/2;hr?.stop(),pe.style.top="",pe.style.bottom="",pe.style.left=`${V}px`,pe.style.translate="0px 0px",vs!==void 0&&!It()&&(hr=on(pe,{translate:[`${q-V}px ${$.top-pe.getBoundingClientRect().top}px`,"0px 0px"]},{type:"spring",stiffness:680,damping:32,mass:.55})),vs=V}}let w=_=>({glyph:_}),k=[{id:"browse",label:pd("Browse website",o.browse),icon:w("pointer"),onSelect:()=>Ts(!1)},{id:"comment",label:pd("Add comment",o.comment),icon:w("comment"),onSelect:()=>Ts(!R)},...i?[{id:"design",label:pd("Design mode",o.design),icon:w("design"),onSelect:()=>jh(!te)}]:[],{id:"comments",label:e.onboarding?A?"Close project sidebar":"Project settings":`${pd(A?"Close comment sidebar":"View all comments",o.comments)}${A?"":` \xB7 ${fe.filter(_=>!_.resolved).length} open`}`,icon:w("expand"),onSelect:()=>Xt(!A)},{id:"account",expandedOrder:-1,label:E.user?`${E.user.name} \xB7 Account`:e.onboarding?.inProject?"Set up inline feedback":"Enter your name",icon:{user:E.user},onSelect:()=>{Z||To?(clearTimeout(To),To=0,Z=!1,et()):yr()}},{id:"copy-prompts",keepOpenOnSelect:!0,label:ks==="all"?"Copied prompt":"Copy all comments for agent",icon:w(ks==="all"?"check":"copy"),showInBar:!1,onSelect:()=>it(()=>_w("all"))},...f&&!b&&!te?[{id:"layout",label:g==="edge"?"Frame view":"Floating view",icon:w("expand"),showInBar:!1,onSelect:()=>Lh(g==="edge"?"background":"edge")}]:[],{id:"dismiss",label:o.restore?`Dismiss inline feedback \xB7 ${o.restore.label} to restore`:"Dismiss inline feedback",icon:w("close"),onSelect:G8},{id:"visibility",label:I?"Show comment pins":"Hide comment pins",icon:w("comment"),showInBar:!1,onSelect:()=>{I=!I,Io(),Ln()}}];He==="Offline"&&k.push({id:"retry",label:`${rn?.title??"Offline"} \xB7 Retry`,icon:w("info"),showInBar:!1,onSelect:Hd}),sw.render({items:e.onboarding?k.filter(_=>_.id==="account"||_.id==="comments"):k,alignEnd:A&&v?!1:!!ot&&ot.y>window.innerHeight/2,edge:A&&v?"bottom":ot?.edgeX??ot?.edgeY??(ot&&ot.y<window.innerHeight/2?"top":"bottom"),activeId:Z?"account":te?"design":R?"comment":A?"comments":"browse",label:"Website review",moreLabel:"More review tools"})}let Di="",cc=new Set,gN=d=>d.page!==Vn()?d.page:cc.has(d.id)?"Not found on page":"";function Xh(d,w){let k=d.querySelector(".page");if(!k)return;let _=new URL(w.page,location.origin).href;k.textContent=w.page!==Vn()?w.page:"",k.title=_,k.parentElement.hidden=!k.textContent;let j=d.querySelector(".card-status");j.textContent=w.resolved?"Resolved":cc.has(w.id)?"Not found on page":"",j.hidden=!j.textContent,d.querySelector(".thread-card").setAttribute("aria-description",[_,j.textContent].filter(Boolean).join(" \xB7 "))}let Ih=!1,Fh=0;function Io(d=!1){if(jn||Ih&&!d)return;if(I){Di="",to(),jt.replaceChildren();return}let w=Vn(),k=fe.filter(X=>X.page===w&&!X.resolved&&(!ie||!!X.tags?.includes(ie))),_=O3(),j=n2(k,X=>_.resolve(X.anchor)),V=k.map(X=>{let se=_.locate(X.anchor);if(se.y<-se.height-40||se.y>window.innerHeight+40)return{thread:X,rect:se,blocked:!1};let bt=_.resolve(X.anchor),mt=ig(se.x+8,se.y-10),Lt=!!(bt&&mt&&!bt.contains(mt)&&!mt.contains(bt));return{thread:X,rect:se,blocked:Lt}});for(let{thread:X,rect:se}of V){if(cc.has(X.id)===!se.attached)continue;se.attached?cc.delete(X.id):cc.add(X.id);let bt=lt.querySelector(`.thread-item[data-thread="${CSS.escape(X.id)}"]`);bt&&Xh(bt,X)}let $=JSON.stringify([N,G&&_.locate(G),V.map(({thread:X,rect:se,blocked:bt})=>[X.id,se,bt,Yd(se,window.innerWidth)])]);if($===Di)return;Di=$,ms?.isPreviewing(yh)||to();let q=new Map(Array.from(jt.querySelectorAll(".pin-stack"),X=>[X.dataset.stack,X.scrollLeft]));jt.replaceChildren();let ee=new Map,re=new Map(V.map(X=>[X.thread.id,X]));for(let{thread:X,rect:se,blocked:bt}of V){if(!se.attached)continue;let mt=j.get(X.id),Lt=mt&&re.get(mt[0].id),ce=Lt?.rect.attached?Lt:{rect:se,blocked:bt};if(ce.rect.y<-ce.rect.height-40||ce.rect.y>window.innerHeight+40||ce.blocked)continue;let je=fe.indexOf(X)+1;if(se.width&&se.height){let F=M("div","area");Object.assign(F.style,{left:`${se.x}px`,top:`${se.y}px`,width:`${se.width}px`,height:`${se.height}px`,opacity:X.id===N?"1":".45"}),jt.append(F)}let Ce=ae(`Comment ${je}: ${ow(X.comments[0]?.body??"").slice(0,100)}`,()=>lc(X),`pin${X.id===N?" active":""}${X.id===pc?" hot":""}${X.resolved?" resolved":""}${se.attached?"":" detached"}`);if(Ce.textContent="",Ce.title="",X.comments[0]){let F=X.comments[0].author;xc(Ce,F.accentColor),Ce.append(vr(F));let he=Ce.querySelector("img");he&&(he.draggable=!1)}if(Q8(Ce,X,se),X.resolved){let F=M("span","pin-check");F.append(nt("check")),Ce.append(F)}let qe=()=>{if(N||G||H||jn||$t||hs)return;kd=!1,window.clearTimeout(Sd);let F=an.hidden||nc!==X.id;gs?.cancel(),nc=X.id,an.replaceChildren();let he=X.comments[0];if(!he)return;let Y=ae("Open comment",()=>lc(X),"pin-preview-open");Y.textContent="";let ne=Wl.test(he.body),de=M(ne?"div":"p","hover-message",ow(he.body));ne&&Ql().then(({renderDesignComment:Ze})=>Ze(de,he.body,{key:yh=`hover:${he.id}`,resolve:hh(X.anchor),note:(_e,sn)=>_e.textContent=sn,compact:!0})),Y.append(Ow(he)),ne?(de.classList.add("pin-preview-card"),de.addEventListener("click",Ze=>{Ze.target.closest(".design-toggle")||lc(X)})):Y.append(de);let be=ae(X.resolved?"Reopen comment":"Resolve comment",()=>{to(),Jh(X)},"icon pin-preview-resolve","check");be.disabled=!Vd(),an.append(Y,...ne?[de]:[],be),an.hidden=!1;let Be=ag(Ce,se),Fe=A&&!b?396:12,kt=Be.x+20+320>window.innerWidth-Fe?Be.x-340:Be.x+20;Object.assign(an.style,{left:`${Math.max(12,kt)}px`,transformOrigin:Be.x<Math.max(12,kt)+160?"top left":"top right",top:`${Math.max(12,Math.min(Be.y-28,window.innerHeight-an.offsetHeight-92))}px`}),F&&!It()&&(gs=an.animate([{opacity:0,transform:"translateY(6px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}))};if(Ce.addEventListener("pointerenter",qe),Ce.addEventListener("pointermove",F=>{hs&&!jn&&!$t&&F.buttons===0&&(F.movementX||F.movementY)&&(hs=!1,qe())}),Ce.addEventListener("focus",qe),Ce.addEventListener("blur",()=>to()),Ce.addEventListener("pointerleave",()=>{Sd=window.setTimeout(to,120)}),Ce.dataset.thread=X.id,Ce.dataset.pointer=Yd(ce.rect,window.innerWidth),Object.assign(Ce.style,{left:`${se.x}px`,top:`${se.y}px`}),mt&&Lt?.rect.attached&&!Lt.blocked){let F=ee.get(mt[0].id);if(!F){F=M("div","pin-stack"),F.dataset.stack=mt[0].id,F.setAttribute("role","group"),F.setAttribute("aria-label",`${mt.length} comments on this component`);let he=Math.min(178,40+(mt.length-1)*22);Object.assign(F.style,{left:`${Math.max(4,Math.min(Lt.rect.x-25,window.innerWidth-he-8))}px`,top:`${Lt.rect.y-34}px`,maxWidth:`${he}px`}),F.addEventListener("scroll",()=>{to(),Tn()}),ee.set(mt[0].id,F),jt.append(F)}Ce.style.left="",Ce.style.top="",Ce.style.order=String(mt.indexOf(X)),Ce.style.marginLeft=mt[0].id===X.id?"0":"-12px",F.append(Ce)}else jt.append(Ce)}for(let[X,se]of ee)se.scrollLeft=q.get(X)??0;if(G&&G.width>0&&G.height>0){let X=As(G),se=M("div","area");Object.assign(se.style,{left:`${X.x}px`,top:`${X.y}px`,width:`${Math.max(8,X.width)}px`,height:`${Math.max(8,X.height)}px`}),jt.append(se)}}let ks=null,Zh=0;async function _w(d){let w=a2(fe,{...e,origin:location.origin,page:d==="page"?Vn():void 0});if(!w){ko(d==="page"?"No open comments on this page":"No open comments to copy");return}await navigator.clipboard.writeText(w),!D&&(ks=d,oc.textContent="Agent prompt copied",clearTimeout(Zh),Ln(),oo(),Zh=window.setTimeout(()=>{ks=null,Ln(),oo()},2e3))}let uc,Bd=new Set,zw="branch-comments:dismissed-tips",Dw=[["copy","Copy comments for your agent."]];o.comment&&Dw.push(["shortcut",`Press ${o.comment.label} to comment.`]);function K8(d){try{let w=JSON.parse(localStorage.getItem(zw)??"[]");if(Array.isArray(w))for(let k of w)typeof k=="string"&&Bd.add(k)}catch{}for(let[w,k]of Dw){let _=P.querySelector(`[data-tip="${w}"]`);if(!d||Bd.has(w)){_?.remove();continue}if(_)continue;_=M("div","morphing-menu__tooltip sidebar-tip"),_.dataset.tip=w;let j=_;_.append(M("p","",k),ae("Dismiss tip",()=>{Bd.add(w);try{localStorage.setItem(zw,JSON.stringify([...Bd]))}catch{}j.dataset.leaving="",setTimeout(()=>j.remove(),150)},"icon","close")),P.append(_)}Wh()}function Wh(){let d=P.getBoundingClientRect();for(let w of P.querySelectorAll(".sidebar-tip")){let k=w.dataset.tip==="copy",_=P.querySelector(k?".copy-page-prompt":'.toolbar [aria-label^="Add comment"]')?.getBoundingClientRect();if(w.hidden=!_?.width,!_?.width)continue;let j=_.left+_.width/2-d.left,V=Math.max(12,Math.min(d.width-12-w.offsetWidth,j-w.offsetWidth/2));w.style.left=`${V}px`,w.style.top=k?`${_.bottom-d.top+10}px`:`${_.top-d.top-10-w.offsetHeight}px`,w.style.setProperty("--caret-x",`${j-V}px`)}}let Qh,dc=!1;function Y8(d){if(!dc||ge.busy)return;let w=Yh().filter($=>$.resolved).map($=>$.id);if(!w.length)return;let k=M("div","cleanup-confirm");k.popover="auto",k.setAttribute("role","alertdialog"),k.setAttribute("aria-label","Delete resolved comments permanently"),k.append(M("strong","",`Delete ${w.length} resolved ${w.length===1?"thread":"threads"}?`),M("p","","Their replies will be deleted too. This can\u2019t be undone."));let _=M("div","cleanup-actions"),j=()=>{k.hidePopover(),d.focus({preventScroll:!0})};_.append(ae("Cancel",j,"secondary"),ae("Delete permanently",()=>{j(),it(async()=>{try{for(let $=0;$<w.length;$+=250){let q=w.slice($,$+250),ee=new Set(q);await ge.submit(re=>re.filter(X=>!ee.has(X.id)),async()=>{await E.request("project/clear-resolved","POST",{confirm:e.project,threadIds:q})})}}finally{await Xo()}})},"secondary destructive")),k.append(_),P.append(k),k.addEventListener("toggle",()=>{k.matches(":popover-open")||k.remove()}),k.showPopover();let V=d.getBoundingClientRect();k.style.left=`${Math.max(12,Math.min(V.right-k.offsetWidth,innerWidth-k.offsetWidth-12))}px`,k.style.top=`${Math.max(12,Math.min(V.bottom+8,innerHeight-k.offsetHeight-12))}px`,_.querySelector("button")?.focus()}let Vd=()=>!ye&&(O||!!E.user?.verified);function Jh(d,w){if(!E.user&&(!wt||!ua.trim())){yr();return}let k=N===d.id,_=j=>{let V=N;return k&&(N=j?null:d.id),B(Ue(d.id,$=>({...$,resolved:j,resolvedBy:j?E.user:null})),async $=>{E.user||await E.guest(ua),await E.request(`threads/${$(d.id)}`,"PATCH",{resolved:j})},()=>{N||(N=V)})};it(()=>_(!d.resolved)),ko(d.resolved?"Comment reopened":"Comment resolved",{label:"Undo",run:()=>it(()=>_(d.resolved))},w)}let Rw=new WeakMap,Ms=new Set;function Hw(d,w){return d.textContent=w,Wl.test(w)&&(d.textContent="Design change",Ql().then(({summarizeDesignComment:k})=>{d.textContent=k(w)})),d}function oo(){if(e.onboarding){if(uc?.(),P.replaceChildren(),e.onboarding.inProject)return;if(A){let F=M("aside","panel");F.setAttribute("aria-label","Project settings");let he=M("div","panel-head","Project settings"),Y=M("div","empty");Y.append(M("p","","Leave comments on your connected website."),ae("Manage project",()=>{yr()},"secondary")),F.append(he,Y),P.append(F)}return}if(!A&&(v||b))return;let d=P.querySelector(".list"),w=d?.scrollTop??0,k=lt.activeElement?.getAttribute("aria-label")==="Search comments",_=k?lt.activeElement.selectionStart:null;if(!A&&!v&&!b){uc?.(),P.replaceChildren();return}let j=P.querySelector(".panel");if(!j){j=M("aside","panel"),j.setAttribute("aria-label","All comments");let F=M("div","panel-head"),he=M("div","row between sidebar-title"),Y=M("div","filter-slot"),ne=M("div","row"),de=Mt=>{let qn=j.querySelector(".sidebar-search-field"),ha=ne.querySelector('[aria-label="Search comments"]'),Hi=(Mt?ha:qn).getBoundingClientRect();ys=Mt,Mt||(Xe="",qn.querySelector("input").value=""),oo();let _s=(Mt?qn:ha).getBoundingClientRect();It()||qn.animate(Mt?[{transform:`translate(${Hi.left-_s.left}px, ${Hi.top-_s.top}px)`,width:`${Hi.width}px`,height:`${Hi.height}px`,borderRadius:"50%",opacity:.4},{transform:"none",width:`${_s.width}px`,height:`${_s.height}px`,borderRadius:"10px",opacity:1}]:[{transform:"none",opacity:1},{transform:`translate(${_s.left-Hi.left}px, ${_s.top-Hi.top}px) scale(.2)`,opacity:0}],{duration:280,easing:"cubic-bezier(.22,1,.36,1)"}),Mt?qn.querySelector("input")?.focus():ha.focus()};ne.append(ae("Copy page comments",()=>Q==="resolved"?Y8(j.querySelector(".copy-page-prompt")):it(()=>_w("page")),"icon copy-page-prompt","copy"),M("div","tag-filter-slot"),ae("Search comments",()=>de(!0),"icon sidebar-search-trigger","search"),ae("Close sidebar",()=>Xt(!1),"icon","close"));let be=M("div","sidebar-selector");be.append(Y,M("div","scope-slot")),he.append(be,ne);let Be=M("div","sidebar-search"),Fe=M("div","sidebar-search-inner"),kt=M("div","sidebar-search-row"),Ze=M("div","sidebar-search-field"),_e=M("input");_e.type="search",_e.placeholder="Search",_e.setAttribute("aria-label","Search comments"),_e.addEventListener("input",()=>{Xe=_e.value,oo()}),_e.addEventListener("keydown",Mt=>{Mt.key==="Escape"&&(Mt.stopPropagation(),sn())}),Ze.append(nt("search"),_e);let sn=()=>de(!1);Ze.append(ae("Close search",sn,"icon search-cancel","close")),kt.append(Ze),Fe.append(kt),Be.append(Fe),F.append(he,Be);let rt=M("div","morphing-menu__tooltip sidebar-tooltip");rt.setAttribute("aria-hidden","true"),lt.append(rt);let ut=0,tt=0,Un=()=>{clearTimeout(ut),rt.dataset.open&&(delete rt.dataset.open,tt=Date.now()+300)};uc=()=>{clearTimeout(ut),rt.remove(),uc=void 0};let Ri=Mt=>{clearTimeout(ut);let qn=()=>{if(!Mt.isConnected)return;let ha=Mt.getBoundingClientRect();rt.textContent=Mt.ariaLabel;let Hi=rt.offsetWidth/2;rt.style.left=`${Math.max(8+Hi,Math.min(innerWidth-8-Hi,ha.left+ha.width/2))}px`,rt.style.top=`${ha.bottom+8}px`,rt.dataset.open="true"};rt.dataset.open||Date.now()<tt?qn():ut=window.setTimeout(qn,400)};for(let Mt of ne.querySelectorAll("button"))Mt.removeAttribute("title"),Mt.addEventListener("pointerenter",qn=>{qn.pointerType==="mouse"&&Ri(Mt)}),Mt.addEventListener("pointerleave",Un),Mt.addEventListener("focus",()=>Ri(Mt)),Mt.addEventListener("blur",Un);ne.addEventListener("pointerdown",Un),j.append(F),P.append(j)}let V=j.querySelector(".copy-page-prompt");if(Q==="resolved"&&Qh!==E.token){Qh=E.token,dc=!1;let F=Qh;F&&E.request("project").then(()=>{E.token===F&&(dc=!0,oo())}).catch(()=>{})}let $=Q==="resolved";V.disabled=$&&(!dc||ge.busy||!Yh().length),V.classList.toggle("destructive",$);let q=$?"trash":ks==="page"?"check":"copy";if(V.dataset.glyph!==q){let F=V.querySelector("svg:not([data-leaving])"),he=nt(q),Y=V.dataset.glyph!==void 0&&!It();if(V.dataset.glyph=q,Y&&F){F.setAttribute("data-leaving","true"),V.append(he);let ne={duration:200,easing:"cubic-bezier(.22,1,.36,1)"},de={opacity:0,transform:"scale(.7)",filter:"blur(2px)"},be={opacity:1,transform:"scale(1)",filter:"blur(0px)"};F.animate([be,de],{...ne,fill:"forwards"}).finished.then(()=>F.remove()).catch(()=>F.remove()),he.animate([de,be],ne)}else V.replaceChildren(he)}V.setAttribute("aria-label",$?dc?"Delete resolved comments permanently":"Project owner only":ks==="page"?"Copied prompt":"Copy page comments"),j.dataset.search=String(ys),j.querySelector(".filter-slot").inert=ys,j.querySelector(".scope-slot").inert=!ys,j.querySelector(".sidebar-search-trigger").inert=ys;let ee=j.querySelector(".sidebar-search");ee.inert=!ys;let re=j.querySelector(".filter-slot"),X=r?[...new Set(fe.flatMap(F=>F.tags??[]))].sort():[];ie&&!X.includes(ie)&&(ie=""),re.dataset.value!==Q&&(re.dataset.value=Q,re.replaceChildren(os("Filter comments",[["open","Comments"],["all","All comments"],["resolved","Resolved"]],Q,F=>{Q=F,oo(),Io()})));let se=j.querySelector(".tag-filter-slot"),bt=`${ie} ${X}`;if(se&&se.dataset.value!==bt&&(se.dataset.value=bt,se.replaceChildren(),X.length)){let F=ie?`Filtered by #${ie}`:"Filter by tag",he=os(F,[["","All tags"],...X.map(ne=>[ne,`#${ne}`])],ie,ne=>{ie=ne,oo(),Io()}),Y=he.querySelector("summary");Y.className=`icon tag-filter-trigger${ie?" active":""}`,Y.setAttribute("aria-label",F),Y.title=F,Y.replaceChildren(nt("tag")),se.append(he)}let mt=j.querySelector(".scope-slot");mt.dataset.value!==String(we)&&(mt.dataset.value=String(we),mt.replaceChildren(os("Comment pages",[["page","This page"],["all","All pages"]],we?"all":"page",F=>{we=F==="all",oo()})));let Lt=!b&&!no&&!It(),ce=new Map;if(Lt&&d){let F=d.getBoundingClientRect();for(let he of d.querySelectorAll("[data-thread]")){let Y=he.getBoundingClientRect();Y.bottom>=F.top&&Y.top<=F.bottom&&ce.set(he.dataset.thread,Y.top)}}let je=M("div","list"),Ce=Yh();Ce.length>40&&(je.dataset.long="");let qe=!xe&&He==="Connecting";je.setAttribute("aria-busy",String(qe)),clearTimeout(Ed),je.addEventListener("scroll",()=>{je.dataset.scrolling="true",clearTimeout(Ed),Ed=window.setTimeout(()=>{delete je.dataset.scrolling},800)},{passive:!0});for(let F of Ce){let he=F.comments[0];if(!he)continue;let Y=Rw.get(F);if(Y){Y.querySelector(".thread-card").classList.toggle("active",N===F.id),Y.querySelector(".card-resolve").disabled=!Vd(),Y.querySelector("small").textContent=Rs(he.createdAt),Y.querySelectorAll(".reply-meta").forEach((_e,sn)=>{let rt=F.comments[sn+1];_e.textContent=`${rt.author.name} \xB7 ${Rs(rt.createdAt)}`}),Xh(Y,F),je.append(Y);continue}let ne=ae(`Open comment by ${he.author.name}`,()=>lc(F),`thread-card${N===F.id?" active":""}`);ne.replaceChildren();let de=M("div","row");de.append(vr(he.author),M("span","author",he.author.name),M("small","",Rs(he.createdAt)));let be=M("div","card-page-row");be.append(nt("link"),M("span","page"));let Be=M("span","card-status"),Fe=Hw(M("p","preview"),he.body);if(ne.append(de,be,Be,Fe),r&&F.tags?.length){let _e=M("div","card-tags");_e.setAttribute("role","group"),_e.setAttribute("aria-label","Tags");for(let sn of F.tags){let rt=M("span","card-tag",`#${sn}`);rt.title=sn,_e.append(rt)}ne.append(_e)}let kt=M("div","thread-item");kt.dataset.thread=F.id;let Ze=ae(F.resolved?"Reopen comment":"Resolve comment",()=>Jh(F),"icon card-resolve","check");if(Ze.disabled=!Vd(),kt.append(ne,Ze),Xh(kt,F),F.comments.length>1){let _e=M("div","sidebar-replies");_e.id=`replies-${F.id}`,_e.setAttribute("role","group"),_e.setAttribute("aria-label",`Replies to ${he.author.name}`);let sn=`${F.comments.length-1} ${F.comments.length===2?"reply":"replies"}`,rt=ae(sn,()=>{Ms.has(F.id)?Ms.delete(F.id):Ms.add(F.id),ut()},"card-reply-toggle");rt.replaceChildren(nt("comment"),M("span","",sn),nt("chevron")),rt.setAttribute("aria-controls",_e.id);let ut=()=>{let tt=Ms.has(F.id);_e.hidden=!tt,rt.setAttribute("aria-expanded",String(tt)),rt.setAttribute("aria-label",`${tt?"Hide":"Show"} ${sn}`),rt.title=`${tt?"Hide":"Show"} ${sn}`};ut();for(let tt of F.comments.slice(1)){let Un=M("div","sidebar-reply");Un.append(vr(tt.author));let Ri=M("div");Ri.append(M("div","reply-meta",`${tt.author.name} \xB7 ${Rs(tt.createdAt)}`),M("p","",tt.body)),Un.append(Ri),_e.append(Un)}kt.append(rt,_e),kt.addEventListener("keydown",tt=>{tt.key!=="Escape"||!Ms.has(F.id)||(tt.preventDefault(),tt.stopPropagation(),Ms.delete(F.id),ut(),rt.focus({preventScroll:!0}))})}Rw.set(F,kt),je.append(kt)}if(!je.childElementCount){let F=M("div","empty");if(qe&&F.setAttribute("role","status"),F.append(nt("comment"),M("strong","",Ot?mn?"Private project":"Sign in required":He==="Offline"&&rn?rn.title:qe?"Loading comments\u2026":Xe?"No matching comments":Q==="resolved"?"Nothing resolved yet":"No comments yet")),Ot)F.append(M("p","",Ot)),E.user?.verified||F.append(ae("Sign in",yr,"secondary"));else if(He==="Offline"&&rn){F.append(M("p","",rn.detail));let he=M("div","empty-actions");rn.kind==="site"&&he.append(ae("Turn on comments",()=>{let Y=new URL("/setup",e.endpoint);Y.searchParams.set("workspace",e.project),Y.searchParams.set("site",location.origin),window.open(Y,"_blank","noopener")},"primary"),ae("Copy link",()=>{navigator.clipboard.writeText(location.origin).then(()=>ko("Link copied")).catch(()=>ko(location.origin))},"secondary")),rn.kind!=="site"&&he.append(ae("Try again",Hd,"secondary")),F.append(he)}else xe&&!Xe&&Q!=="resolved"&&F.append(ae("Add a comment",()=>{ii(window.innerWidth,window.innerHeight)&&Xt(!1),Ts(!0)},"secondary"));je.append(F),je.dataset.empty=""}if(fe.length&&He==="Offline"&&je.prepend(ae("Saved comments \xB7 Try again",Hd,"secondary")),d?d.replaceWith(je):j.append(je),K8(!!je.querySelector(".empty [aria-label='Add a comment']")),requestAnimationFrame(Wh),je.scrollTop=w,Lt){let F=0,he=je.getBoundingClientRect();for(let Y of je.querySelectorAll("[data-thread]")){let ne=Y.getBoundingClientRect();if(ne.bottom<he.top||ne.top>he.bottom)continue;let de=ce.get(Y.dataset.thread),be=de===void 0?8:de-ne.top;Math.abs(be)>.5&&Y.animate([{opacity:de===void 0?0:1,transform:`translateY(${Math.max(-40,Math.min(40,be))}px)`},{opacity:1,transform:"translateY(0)"}],{duration:250,delay:de===void 0?Math.min(F++,5)*40:0,easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"backwards"})}je.querySelector("[data-thread]")||je.animate([{opacity:0},{opacity:1}],{duration:150})}if(k){let F=j.querySelector('input[type="search"]');F.focus(),_!==null&&F.setSelectionRange(_,_)}}function Ow(d){let w=M("div","row");return w.append(vr(d.author),M("span","author",d.author.name),M("small","",Rs(d.createdAt))),w.title=d.author.verified?"Verified":"Guest",w}function jw(d,w){return E.user?.id!==d.author.id||d.body==="[Comment deleted]"?[]:[{label:"Edit",icon:"edit",onSelect:()=>{eo=d.id,Jl=d.body,br()}},{label:"Delete",icon:"trash",destructive:!0,onSelect:()=>{let k=Hh(w.anchor);ko("Delete this comment?",{label:"Delete",run:()=>{let _=N;w.comments.length===1&&(N=null),it(()=>B(Ue(w.id,j=>{let V=j.comments.filter($=>$.id!==ge.id(d.id));return V.length?{...j,comments:V}:null}),async j=>{await E.request(`threads/${j(w.id)}/comments/${j(d.id)}`,"DELETE")},()=>{N||(N=_)})),ko("Comment deleted",void 0,k)}})}}]}function X8(d,w){let k=M("article","message");if(k.dataset.comment=d.id,k.append(Ow(d)),eo===d.id){let q=M("textarea");q.value=Jl,q.maxLength=4e3,q.setAttribute("aria-label","Edit comment"),q.dataset.focusKey="edit",q.addEventListener("input",()=>Jl=q.value);let ee=ae("Save changes",()=>{let re=Jl;eo=null,it(()=>B(Ue(w.id,X=>({...X,comments:X.comments.map(se=>se.id===ge.id(d.id)?{...se,body:re,editedAt:Date.now()}:se)})),async X=>{await E.request(`threads/${X(w.id)}/comments/${X(d.id)}`,"PATCH",{body:re})},()=>{eo||(eo=ge.id(d.id),Jl=re)}))},"primary");return ee.disabled=ye,k.append(q,ee,ae("Cancel",()=>{eo=null,br()},"secondary")),k}let _=M("div","message-content"),j=Wl.test(d.body),V=M(j?"div":"p","message-text");if(kx(V,d.body),j){let q=({renderDesignComment:ee})=>ee(V,d.body,{key:d.id,resolve:hh(w.anchor),note:kx,onSwitch:()=>Tn()});ms?q(ms):Ql().then(q)}if(_.append(V),d.body!=="[Comment deleted]"){let q=ae("Add reaction",()=>{ec?.(!0),ec=jA(lt,q,re=>I8(d,w,re,!(E.user&&d.reactions[re]?.includes(E.user.id))),Object.entries(d.reactions).find(([,re])=>E.user&&re.includes(E.user.id))?.[0],`branch-comments:emoji:${e.project}:${E.user?.id??"guest"}`,e.emojiDataSource)},"icon message-reaction","smile"),ee=Object.entries(d.reactions).filter(([,re])=>re.length>0);if(q.dataset.reactions=JSON.stringify(ee),ee.length){q.replaceChildren(),q.classList.add("has-reactions");for(let[re,X]of ee)q.append(M("span","reaction-value",`${re}${X.length>1?` ${X.length}`:""}`));q.setAttribute("aria-label","Change reactions")}q.setAttribute("aria-haspopup","menu"),q.setAttribute("aria-expanded","false"),_.append(q)}k.append(_);let $=M("div","actions");if(E.user?.id===d.author.id&&d.body!=="[Comment deleted]"){let q=Wm("Message actions",jw(d,w));w.comments[0]?.id!==d.id&&k.firstElementChild?.append(q)}return d.editedAt&&$.append(M("small","","Edited")),$.childElementCount&&k.append($),k}function I8(d,w,k,_){if(!E.user&&(!wt||!ua.trim())){yr();return}it(async()=>{E.user||await E.guest(ua);let j=E.user;await B(Ue(w.id,V=>({...V,comments:V.comments.map($=>{if($.id!==ge.id(d.id))return $;let q=Object.fromEntries(Object.entries($.reactions).map(([ee,re])=>[ee,re.filter(X=>X!==j.id)]));return _&&(q[k]=[...q[k]??[],j.id]),{...$,reactions:q}})})),async V=>{await E.request(`threads/${V(w.id)}/comments/${V(d.id)}/reactions`,"POST",{emoji:k,active:_})}),_&&nA(`branch-comments:emoji:${e.project}:${j.id}`,k)})}async function eg(d="github"){let w=window.open("about:blank","branch-comments-signin","popup,width=600,height=720");if(!w)throw new Error("Allow popups to sign in.");try{let k=await E.request(`auth/${d}/start`,"POST",{}),_=new URL(k.url).origin,j=V=>{if(V.origin!==_||V.source!==w||V.data?.type!=="branch-comments:auth")return;let{token:$,user:q}=V.data;typeof $!="string"||!q?.id||!q?.name||q.verified!==!0||(E.save({token:$,user:q}),fa(),U=null,window.removeEventListener("message",j),clearTimeout(bh),w.close(),Z=!!e.onboarding,et(),!e.onboarding&&(tc?it(Uw):(it(Xo),ko(`Signed in as ${q.name}`))))};window.addEventListener("message",j,{signal:C.signal}),bh=window.setTimeout(()=>{window.removeEventListener("message",j)},6e5),w.location.href=k.url}catch(k){throw w.close(),k}}let tg;function Nw(d,w,k,_){let j=M("div","tag-slot");j.hidden=!!_&&!d.length;let V=({tagEditor:$})=>$(j,{tags:d,suggestions:[...new Set(fe.flatMap(q=>q.tags??[]))].sort(),onAdd:w,onRemove:k,trigger:_});if(tg)V(tg);else{let $=!1;_&&(_.onclick=()=>{$=!0}),Promise.resolve().then(()=>(o6(),n6)).then(q=>{tg=q,V(q),$&&_?.isConnected&&_.click(),Tn()})}return j}function Bw(d,w){if(!E.user){yr();return}it(async()=>{let{tags:k}=await E.request(`threads/${ge.id(d.id)}`,"PATCH",w);fe=fe.map(_=>_.id===d.id?{..._,tags:k}:_),oo()})}function Vw(d){let w=M("form",`composer ${d?"reply-composer":"new-comment-composer"}`),k=M("textarea"),_=d?"":fr;k.placeholder=d?"Reply\u2026":_?"Add a note\u2026":"Add a comment\u2026",k.rows=1,k.maxLength=4e3,k.required=!!d||!fr,k.value=d?Po.get(d.id)??"":Cn,k.setAttribute("aria-label",d?"Reply":"Comment"),k.dataset.focusKey="body";let j=()=>{k.style.height="auto",k.style.height=`${Math.min(128,Math.max(d?34:28,k.scrollHeight))}px`,k.style.overflowY=k.scrollHeight>128?"auto":"hidden",Tn()};k.addEventListener("input",j),k.addEventListener("input",()=>{d?Po.set(d.id,k.value):Cn=k.value}),k.addEventListener("keydown",$=>{$.key==="Enter"&&!$.shiftKey&&!$.isComposing&&($.preventDefault(),w.requestSubmit())});let V=ae(d?"Send reply":"Post comment",()=>{},"send","arrow");if(V.type="submit",V.disabled=ye,d)w.append(k,V);else{let $=M("div","draft-body");E.user&&$.append(vr(E.user)),$.append(k,V),r&&$.append(Nw(si,q=>si=[...si,q],q=>si=si.filter(ee=>ee!==q))),w.append($)}if(k.addEventListener("input",()=>{V.disabled=ye||!k.value.trim()&&!_}),V.disabled||=!k.value.trim()&&!_,_){let $=M("div","draft-proposal");$.textContent=_;let q=G?hh(G):()=>null;Ql().then(({renderDraftProposal:ee})=>{ee($,_,q),Tn()}),w.prepend($)}return w.addEventListener("submit",$=>{if($.preventDefault(),!(!k.value.trim()&&!_||ye)){if(!E.user){tc=()=>$w(d),yr();return}it(()=>$w(d))}}),requestAnimationFrame(()=>{k.isConnected&&j()}),w}async function $w(d){if(e.onboarding)throw new Error("Open your connected website to leave a comment.");if(!E.user)throw new Error("Enter your name to leave a comment.");let w=Date.now(),k={id:`pending-${crypto.randomUUID()}`,body:d?Po.get(d.id)??"":[Cn.trim(),fr].filter(Boolean).join(`
2967
+ `)??"",vo=!1,jn=null,Nn=!1,wt=!1,O=!1,W=null,oe=[],me=null,Me=null,St=new Map,Wt=qM(()=>gr()),$t=null,ot,Li=`branch-comments:drawer:${e.project}:${e.repo}`,wo;try{let d=JSON.parse(localStorage.getItem(Li)??"null");d&&Number.isFinite(d.x)&&Number.isFinite(d.y)&&(wo={x:d.x,y:d.y,edgeX:["left","right"].includes(d.edgeX)?d.edgeX:void 0,edgeY:["top","bottom"].includes(d.edgeY)?d.edgeY:void 0},ot=wo)}catch{}let vd=`branch-comments:sidebar:${e.project}:${e.repo}`,Fl,la,ew=!1,ca=IM,dr=null;try{let d=JSON.parse(localStorage.getItem(vd)??"null");Number.isFinite(d?.width)&&(ca=d.width),Number.isFinite(d?.height)&&(dr=d.height),d&&Number.isFinite(d.x)&&Number.isFinite(d.y)&&(Fl={x:d.x,y:d.y,edgeX:["left","right"].includes(d.edgeX)?d.edgeX:void 0,edgeY:["top","bottom"].includes(d.edgeY)?d.edgeY:void 0},la=Fl)}catch{}let Zl=new Map,Wl=/^Proposed .+ \(preview only\)$/m,tw,nw,ms,Ql=()=>tw??=Promise.resolve().then(()=>(I3(),X3)).then(d=>(ms=d,nw=d.summarizeDesignComment,D||(Di="",Io(!0)),d)),hh=d=>w=>{let k=Gl(d),_=[];try{w&&(_=[...document.querySelectorAll(w)])}catch{}return _.length!==1||k&&_.includes(k)?k??_[0]??null:_[0]},ow=d=>Wl.test(d)?nw?.(d)??(Ql(),"Design change"):d,Cn="",fr="",si=[],ua="",eo=null,Jl="",ec,tc=null,gh=!1,iw=Vn(),wd=0,Ed=0,Td=0,bh=0,Po=new Map,Ce=M("div");Ce.dataset.branchComments="",Ce.dataset.sidebar=b?"mobile":v?"edge":"background",Object.assign(Ce.style,{position:"fixed",inset:"0",pointerEvents:"none",zIndex:"2147483647",isolation:"isolate"});let lt=Ce.attachShadow({mode:"open"}),rw=M("style");rw.textContent=$3;let Eo=M("div","catch");Eo.hidden=!0;let jt=M("div","pins"),ct=M("div"),pe=M("div","toolbar"),P=M("div"),aw=M("div");P.tabIndex=-1,v&&P.classList.add("edge-sidebar");let li=M("div","edge-sidebar-sensor");li.hidden=!0,Object.assign(jt.style,{position:"fixed",inset:"0"});let an=M("div","pin-preview");an.hidden=!0;let Sd=0,hs=!1,kd=!1,nc=null,gs=null,bs=null,yh="",to=(d=!1)=>{if(window.clearTimeout(Sd),an.hidden||kd&&!d)return;if(ms?.resetDesignPreviews(new Set([...fe.find(k=>k.id===N)?.comments.map(k=>k.id)??[],"draft"])),kd=!0,gs?.cancel(),d||It()){an.hidden=!0,nc=null;return}let w=an.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"translateY(3px) scale(.99)"}],{duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"});gs=w,w.finished.then(()=>{gs===w&&(an.hidden=!0,nc=null)}).catch(()=>{})};an.addEventListener("pointerenter",()=>{hs||jn||$t||(kd=!1,window.clearTimeout(Sd),gs?.cancel())}),an.addEventListener("pointerleave",()=>to());let Go=M("div","component-hover");Go.setAttribute("aria-hidden","true");let Bn=null,pr=null,Md=0,oc=M("div","sr-only");oc.setAttribute("aria-live","polite");let sw=S3(pe,d=>{if(d==="account"){if(!E.user)return nt("person");let w=vr(E.user);return w.classList.add("review-avatar"),w}return nt(d)});lt.append(rw,Eo,Go,jt,P,li,ct,an,aw,pe,oc),document.body.append(Ce);let lw=0,cw=0,uw=new MutationObserver(d=>{if(Date.now()-cw>1e3&&([lw,cw]=[0,Date.now()]),++lw<20)for(let w of d)Ce.removeAttribute(w.attributeName)});uw.observe(Ce,{attributeFilter:["aria-hidden","inert"]});let qt=document.documentElement;function Ad(d,w){return Object.fromEntries(w.map(k=>[k,d.style[k]]))}let da=Ad(u,["width","boxSizing","zoom","transformOrigin","transform","position","left","top","height","minHeight","paddingBottom","overflow","borderRadius","background"]),xh=Ad(document.body,["overflow","background"]),R8=qt.style.overflow,Cd=new Map,vh=qt.style.background,wh=i2(u,Ce,e.frame?.include,Fo);function mr(){let d=parseFloat(u.style.left)||0,w=parseFloat(u.style.top)||0,k=(parseFloat(u.style.width)||u.offsetWidth)*$n,_=(parseFloat(u.style.height)||u.offsetHeight)*$n;wh.update(Yt&&!D?{scale:$n,left:d,top:w,zoom:rc(),bounds:{left:d,top:w,right:d+k,bottom:w+_,width:k,height:_}}:null)}function dw(){let d=Yt||Ko,w=[document.body.style.background,qt.style.background];d&&(document.body.style.background=xh.background,qt.style.background=vh);let k=[document.body,qt].map(_=>getComputedStyle(_).backgroundColor).find(_=>_!=="rgba(0, 0, 0, 0)")??"#fff";return d&&([document.body.style.background,qt.style.background]=w,Th.takeRecords()),k}let Eh=0,Th=new MutationObserver(()=>{Eh||=requestAnimationFrame(()=>{Eh=0,Ld=dw(),(Yt||Ko)&&(u.style.background=Ld)})}),Yt=!1,Ko=!1,Ld=dw();for(let d of[qt,document.body])Th.observe(d,{attributes:!0});let To=0,ci,Sh=!1,no=!1,fw=M3(`branch-comments:open:${e.project}:${e.repo}`,e.restoreOpen),kh=`branch-comments:toolbar-dismissed:${e.project}:${e.repo}`;try{sessionStorage.getItem(kh)==="1"&&(J=!0,I=!0)}catch{}let ys=!1,hr,Mh=[],xs=0,So=!1,pw=null,vs,_d;function zd(d){!pe.offsetWidth||!pe.offsetHeight||(ot=or(d,pe.offsetWidth,pe.offsetHeight,qt.clientWidth,window.innerHeight),pe.style.left=`${ot.x+pe.offsetWidth/2}px`,ot.edgeY==="bottom"&&!b?(pe.style.top="auto",pe.style.bottom="calc(16px + env(safe-area-inset-bottom,0px))"):(pe.style.top=`${ot.y}px`,pe.style.bottom="auto"))}function mw(d){if(P.dataset.dragging==="true"){la=d,P.style.left=`${d.x}px`,P.style.top=`${d.y}px`;return}P.offsetWidth&&(la=or(d,P.offsetWidth,P.offsetHeight,qt.clientWidth,window.innerHeight),_i())}function hw(){P.style.width=`${ca}px`,P.style.height=dr==null?"":`${dr}px`,Wh()}function gw(){Fl=la;try{localStorage.setItem(vd,JSON.stringify({...Fl,width:ca,height:dr}))}catch{}}function bw(){let d=qt.clientWidth,w=window.innerHeight;ca=Math.min(Math.max(ca,Mu),Math.max(Mu,d-2*Vo)),dr!=null&&(dr=Math.min(Math.max(dr,Au),Math.max(Au,Math.min(w-2*Vo,Np)))),hw()}function _i(){if(b||!v)return;bw();let d=P.offsetHeight||Math.min(window.innerHeight-2*Vo,Np),w=ZM(la,ca,d,qt.clientWidth,window.innerHeight),k=WM(w,qt.clientWidth);P.style.left=`${w.x}px`,P.style.top=`${w.y}px`,P.style.setProperty("--edge-account-max-height",`${Math.max(0,window.innerHeight-w.y-28)}px`),P.style.right="auto",P.style.bottom="auto",P.style.transformOrigin=w.side==="left"?"left center":"right center",P.style.setProperty("--edge-park-x",`${k.parked}px`),P.style.setProperty("--edge-peek-x",`${k.peek}px`),li.style.left=w.side==="left"?"0px":"",li.style.right=w.side==="right"?"0px":"",A?(delete P.dataset.collapsed,delete P.dataset.peek,li.hidden=!0):(P.dataset.collapsed="true",ew?P.dataset.peek="true":delete P.dataset.peek,li.hidden=!1)}function Ah(){Ce.dataset.sidebar=b?"mobile":v?"edge":"background",P.classList.toggle("edge-sidebar",v),P.style.transition="none",P.style.translate="",P.style.opacity="",sc(!0),v?ui.isConnected||P.prepend(ui):(ui.remove(),delete P.dataset.collapsed,delete P.dataset.peek,li.hidden=!0),P.offsetWidth,P.style.transition=""}let ws=[],Ch=!1;function ic(){for(let d of ws)d.cancel();ws=[],Ko=!1,jt.style.opacity=""}function Lh(d,w){if(b||d===g||D||!f&&d==="background")return;let k=()=>[u,P.querySelector(".panel"),pe,ct.querySelector(".account-dialog")],_=k().map(V=>V?.getBoundingClientRect());if(ic(),ci?.stop(),ci=void 0,hr?.stop(),hr=void 0,sc(!0),jd(),Ss(),pe.style.translate="",vs=void 0,Ch=!0,g=d,v=d==="edge",!w){T=!1,e={...e,sidebar:d};try{localStorage.setItem(p,d)}catch{}}if(Ah(),zi(),et(),Ch=!1,It())return;k().forEach((V,$)=>{let q=_[$];if(!V?.isConnected||!q?.width)return;V!==u&&V.getAnimations().forEach(se=>se.cancel());let ee=V.getBoundingClientRect();if(!ee.width)return;let re=ee.width/V.offsetWidth,X=getComputedStyle(V).transform;ws.push(V.animate([{transform:`${X==="none"?"":X} translate(${(q.left-ee.left)/re}px, ${(q.top-ee.top)/re}px) scale(${q.width/ee.width})`,transformOrigin:"top left"},{transform:X,transformOrigin:"top left"}],{duration:250,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}))});let j=ws;Ko=!0,jt.style.opacity="0",Promise.all(j.map(V=>V.finished)).then(()=>{D||j!==ws||(ws=[],Ko=!1,jt.style.opacity="",mr(),wh.reposition(),Fo())}).catch(()=>{})}function _h(d,w,k,_,j){let V=M("div","account-setting"),$=M("span","account-setting-label",w),q=os(w,k,_,ee=>j(ee));return q.querySelector("summary").dataset.focusKey=`setting-${d}`,V.append($,q),V}function H8(){return b?_h("sidebar","Sidebar",[["mobile","Floating sidebar"]],"mobile",()=>{}):f?_h("sidebar","Sidebar",[["edge","Floating"],["background","Frame"]],g,Lh):M("p","muted","Floating sidebar \xB7 Set pageRoot for Frame.")}function O8(){let d=_h("channel","Comments",[["local","Local development"],["shared","Site comments"]],z,j8);return d.append(M("p","muted","Separate channels, both saved to this project.")),d}function j8(d){if(!(d===z||D)){if(ye||ge.busy){ko("Wait for your changes to save.");return}z=d;try{localStorage.setItem(S,d)}catch{}e={...e,branch:d==="local"?"local":y},E.cancelReads(),E=new is(e),ve=Kt=!1,ac=void 0,Ot="",rn=null,He="Connecting",vo=Nn=wt=O=mn=!1,N=null,G=null,W=null,fa(),et(),Hd()}}function fa(){Ee++,ve=!1,Ot="",N=null,ac=void 0;let d=E.cached();xe=d!==null,ge.reset(Oh(d??[]))}let ui=M("div","edge-sidebar-grip");ui.setAttribute("aria-hidden","true");let yw=d=>Op(P,d,mw,C.signal,()=>{m=!1,h=!0,Yo.show()},()=>{gw(),Yo.update()},()=>A&&v&&!So);yw(ui),P.prepend(ui);let N8=["n","s","e","w","ne","nw","se","sw"];for(let d of N8){let w=M("div",`edge-sidebar-resize edge-sidebar-resize-${d}`);w.addEventListener("pointerdown",k=>{if(k.button!==0||!A||!v||So)return;k.preventDefault(),k.stopPropagation();for(let ee of P.getAnimations())ee.cancel();P.style.transition="none";let _=P.getBoundingClientRect(),j=k.clientX,V=k.clientY,$=ee=>{if(ee.pointerId!==k.pointerId)return;let re=FM(d,_,ee.clientX-j,ee.clientY-V,qt.clientWidth,window.innerHeight);ca=re.width,(d.includes("n")||d.includes("s"))&&(dr=re.height),la={x:re.left,y:re.top},P.style.left=`${re.left}px`,P.style.top=`${re.top}px`,hw()},q=ee=>{ee.pointerId===k.pointerId&&(window.removeEventListener("pointermove",$,!0),window.removeEventListener("pointerup",q,!0),window.removeEventListener("pointercancel",q,!0),P.style.transition="",gw(),_i())};window.addEventListener("pointermove",$,{capture:!0,passive:!1}),window.addEventListener("pointerup",q,!0),window.addEventListener("pointercancel",q,!0)},{signal:C.signal}),P.append(w)}for(let d of["left","right","top","bottom"])P.append(M("div",`edge-sidebar-snap edge-sidebar-snap-${d}`));let Dd=d=>{ew=d,!A&&v&&!So&&_i()};li.addEventListener("pointerenter",()=>Dd(!0)),li.addEventListener("pointerleave",()=>Dd(!1)),li.addEventListener("pointerup",d=>{d.button===0&&!A&&Xt(!0)}),P.addEventListener("pointerenter",()=>Dd(!0)),P.addEventListener("pointerleave",()=>Dd(!1)),window.addEventListener("resize",()=>{D||!v||So||(bw(),_i())},{signal:C.signal,passive:!0}),Ah();let Yo=PM(pe,()=>A||H||Z||!!G||!!N,C.signal,e.autoHideDrawer);Op(pe,pe,zd,C.signal,()=>{Yo.show(),hr?.stop(),pe.style.translate="0px 0px"},()=>{wo=ot;try{localStorage.setItem(Li,JSON.stringify(wo))}catch{}Ln(),Yo.update()},()=>!A,d=>!!d.closest(".morphing-menu__shortcut"));let zh=new ResizeObserver(()=>{pe.dataset.edgeTabs!=="true"&&(ot?zd(ot):e.drawerContainer&&Ln())});zh.observe(pe),e.drawerContainer&&zh.observe(e.drawerContainer);let rc=()=>qt.currentCSSZoom??1;function Vn(){return k3(e.page?.()??location.pathname)}let xw=new WeakMap,pa=null,Dh=0,Rh=new WeakMap;function vw(){cancelAnimationFrame(Dh),!(D||!lt.querySelector(".floating-notice"))&&(gr(),Dh=requestAnimationFrame(vw))}function Hh(d=G??fe.find(w=>w.id===N)?.anchor){let w=ct.firstElementChild?.getBoundingClientRect();if(!w||Z)return;let k=d?As(d):null;return{cardKey:me,left:w.left,top:w.top,anchor:d,offsetX:w.left-(k?.x??0),offsetY:w.top-(k?.y??0),scrollX:window.scrollX,scrollY:window.scrollY}}function Rd(d){if(d.dataset.closing)return;if(d.dataset.closing="true",d.inert=!0,d.setAttribute("aria-hidden","true"),pa===d&&(pa=null,clearTimeout(wd)),It()){d.remove();return}d.animate([{opacity:getComputedStyle(d).opacity,translate:"0px 0px",scale:1},{opacity:0,translate:d.dataset.attached==="true"?`0px ${(d.dataset.placement==="above"?1:-1)*(d.offsetHeight/2+10)}px`:"0px 3px",scale:d.dataset.attached==="true"?.94:.99}],{duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"}).finished.catch(()=>{}).finally(()=>d.remove())}function ko(d,w,k=Hh()){oc.textContent=d,pa&&Rd(pa);let _=M("div","toast floating-notice");pa=_,k&&xw.set(_,k),_.setAttribute("role",w?"alertdialog":"status"),_.setAttribute("aria-label",d),_.append(nt("info"),M("span","",d)),w&&_.append(ae(w.label,()=>{Rd(_),w.run()},"notice-action")),_.append(ae("Dismiss notice",()=>Rd(_),"icon","close")),lt.append(_),gr(),vw(),It()||_.animate([{opacity:0,translate:_.dataset.attached==="true"?`0px ${(_.dataset.placement==="above"?1:-1)*(_.offsetHeight/2+10)}px`:"0px 6px",scale:_.dataset.attached==="true"?.94:.97},{opacity:1,translate:"0px 0px",scale:1}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}),clearTimeout(wd),wd=window.setTimeout(()=>Rd(_),5e3)}function gr(){for(let d of lt.querySelectorAll(".floating-notice")){let w=xw.get(d);if(!w)continue;let k=w.anchor?As(w.anchor):null,j=(!Z&&me===w.cardKey?ct.firstElementChild:null)?.getBoundingClientRect();j&&(d.style.maxWidth=`${Math.min(360,j.width,innerWidth-24)}px`,w.left=j.left,w.top=j.top,w.offsetX=j.left-(k?.x??0),w.offsetY=j.top-(k?.y??0),w.scrollX=window.scrollX,w.scrollY=window.scrollY);let V=j?j.left+(j.width-d.offsetWidth)/2:k?k.x+w.offsetX:w.left+w.scrollX-window.scrollX,$=!!j&&j.bottom+10+d.offsetHeight>innerHeight-12;d.dataset.placement=$?"above":"below";let q=j?$?j.top-d.offsetHeight-10:j.bottom+10:k?k.y+w.offsetY:w.top+w.scrollY-window.scrollY,ee=String(!!j),re=d.dataset.attached!==void 0&&d.dataset.attached!==ee,X=re?d.getBoundingClientRect():null,se=Rh.get(d);if(se&&(re||Math.abs(se.left-V)>.5||Math.abs(se.top-q)>.5)&&(se.animation.cancel(),Rh.delete(d)),d.dataset.attached=ee,Object.assign(d.style,{left:`${V}px`,top:`${q}px`,bottom:"auto",transform:"none",transformOrigin:j?$?"50% 100%":"50% 0%":"0% 0%"}),X&&!d.dataset.closing&&!It()){let bt=d.animate([{left:`${X.left}px`,top:`${X.top}px`},{left:`${V}px`,top:`${q}px`}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"});Rh.set(d,{animation:bt,left:V,top:q})}}}function ww(d){D||d instanceof DOMException&&d.name==="AbortError"||(ft=d instanceof Error?d.message:"Something went wrong. Try again.",ko(ft))}function it(d){d().catch(ww)}function Ew(d,w){return w.then(k=>{d.isConnected&&d.replaceWith(k)}).catch(ww),d}function Tw(d){return Ew(M("section","account-usage"),Promise.resolve().then(()=>(lh(),sh)).then(({accountUsage:w})=>w(E,d,!0,x&&z==="local")))}function Hd(){it(Kt?Xo:bc)}async function B8(d){if(!ye){ye=!0,ft="",br();try{for(await d();ve&&!D;)await new Promise(w=>setTimeout(w,20));await Xo()}finally{ye=!1,et()}}}let Oh=d=>d.map(w=>({...w,comments:w.comments.filter(k=>k.body!=="[Comment deleted]")})).filter(w=>w.comments.length>0),di,ac,Sw=-1;async function Xo(){if(D||ve||ge.busy||e.onboarding)return;let d=ge.revision,w=E,k=w.token,_=Ee;ve=!0;try{let j=await w.list();if(D||w!==E||_!==Ee||k!==w.token||ge.busy||d!==ge.revision)return;if(j===ac&&d===Sw&&He==="Live")return!1;ac=j,Sw=d,xe=!0;let V=Oh(j),$=JSON.stringify(V)!==JSON.stringify(fe),q=He!=="Live";return Ot="",Kt&&(rn=null),He=rn?"Offline":"Live",N&&!V.some(ee=>ee.id===N)&&(N=null),$?ge.replace(V,d):q&&(oo(),Ln()),$}catch(j){if(D||w!==E||_!==Ee||j instanceof DOMException&&j.name==="AbortError")return;throw k!==w.token&&fa(),j instanceof Qn&&(j.status===401||j.status===403)&&j.code!=="site_not_approved"&&(Ot=j.message,N=null,ac=void 0,ge.replace([],d)),rn=Ot?null:g1(j),He="Offline",oo(),Ln(),j}finally{w===E&&_===Ee&&(ve=!1)}}function Es(){!te&&m&&(m=!1,la=Fl,_i()),!(T===te||te&&(!f||b||g!=="edge"))&&(T=te,b?g="edge":Lh(te?"background":"edge",!0))}let Od=()=>A&&!v&&!b&&!T;function Ts(d){if(e.onboarding)return;te&&(te=!1,le?.setActive(!1),Es()),R=d,A&&!Od()&&Xt(!1);let w=d?W??oe.shift():null;if(w){G=w.anchor,Cn=w.text,W=null,N=null,Z=!1,H=!1,et(),ct.querySelector("textarea")?.focus();return}H=d,di?.wake(!1),I=!1,Z=!1,d&&(N=null,G=null),et()}function kw(){Re&&(Re=!1,Xt(!0),requestAnimationFrame(()=>{let d=P.querySelector(".list");d&&(d.scrollTop=$e),P.querySelector('[data-menu-item="design"]')?.focus({preventScroll:!0})}))}function jh(d){e.onboarding||G||d&&!i||(d&&(Re=!0,A&&($e=P.querySelector(".list")?.scrollTop??0),Ts(!1),te=!0,h=!1,Es(),A||Xt(!0),Z=!1,P.querySelector(".panel")?.contains(lt.activeElement)&&P.focus({preventScroll:!0})),te=d,d?W8().then(w=>w?.setActive(te)):(le?.setActive(!1),Es(),kw()),et())}let Nh=0;function V8(){let d=ii(window.innerWidth,window.innerHeight);d!==b&&(lt.append(P),ic(),sc(!0),jd(),Ss(),b=d,d||(pe.style.translate="",ot||(pe.style.bottom="")),v=!d&&g==="edge",P.removeAttribute("style"),Ah(),Bh="",et())}let $n=1,Bh="",Mw=()=>(window.visualViewport?.offsetTop??0)+Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight)-window.innerHeight;function $8(){let d=Math.max(1,Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight)*.9),w=Mw(),k=Ph().getBoundingClientRect();Ce.style.setProperty("--mobile-pill-x",`${k.left+k.width/2-window.innerWidth/2}px`),Ce.style.setProperty("--mobile-pill-y",`${k.bottom-(window.innerHeight+w-6)}px`),Ce.style.setProperty("--mobile-pill-scale-x",String(Math.max(.01,k.width/Math.max(1,window.innerWidth-24)))),Ce.style.setProperty("--mobile-pill-scale-y",String(Math.max(.01,k.height/d)))}function Vh(){for(let[d,w]of Cd)Object.assign(d.style,w);Cd.clear(),qt.style.overflow=R8,Object.assign(u.style,da),Object.assign(document.body.style,xh),qt.style.background=vh}function zi(){let d=rc(),w=ii(window.innerWidth,window.innerHeight)?Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight):window.innerHeight,k=`${window.innerWidth}:${window.innerHeight}:${w}:${d}:${A}:${Z}:${g}:${te}:${window.visualViewport?.offsetTop??0}`;if(Bh===k)return;if(b||ic(),Bh=k,Ce.style.zoom=String(1/d),Ce.style.width=`${window.innerWidth}px`,jt.style.opacity="",v||b){ci?.stop(),Ko=!1;let ee=Yt?u.scrollTop*d:null;if(Yt&&(Vh(),$n=1),ee!==null&&window.scrollTo({top:ee,behavior:"instant"}),Ce.style.height=b?`${window.innerHeight}px`:"",Ce.style.top=b?"":"0px",b){let re=Mw();pe.style.translate=`0 ${re}px`,Ce.style.setProperty("--mobile-panel-height",`${Math.max(1,w*.9)}px`),Ce.style.setProperty("--mobile-panel-bottom",`${-re}px`)}Ce.classList.toggle("review-open",A),Yt=!1,mr(),jt.style.clipPath="",Object.assign(Eo.style,{left:"",top:"",width:"",height:""});return}let _=Yt?u.scrollTop:window.scrollY/(d*$n),j=Yt,V=Yt?u.getBoundingClientRect():{left:0,top:0,width:window.innerWidth};ci?.stop(),Ko=!1;let $=u1(window.innerWidth,w,A,window.innerHeight,Z,!0),q=$.framed;if(Ce.style.setProperty("--review-viewport-height",`${w}px`),Ce.style.height=`${w}px`,Ce.style.top="",Ce.classList.toggle("review-open",A),Ce.classList.toggle("design-active",te),q){$n=$.scale;let ee=$n*d;Object.assign(u.style,{position:"fixed",transform:`scale(${$n})`,transformOrigin:"top left",left:`${$.left/d}px`,top:`${$.top/d}px`,width:`${window.innerWidth/d}px`,boxSizing:"border-box",height:`${$.height/ee}px`,paddingBottom:da.paddingBottom,zoom:da.zoom,overflow:"hidden auto",borderRadius:`${12/ee}px`,background:Ld});for(let re of u.querySelectorAll("header"))!Cd.has(re)&&getComputedStyle(re).position==="fixed"&&(Cd.set(re,Ad(re,["position","marginBottom"])),re.style.position="sticky",re.style.marginBottom=`-${re.offsetHeight}px`);qt.style.overflow="hidden",document.body.style.overflow="hidden",qt.style.background=document.body.style.background="#080808",u.scrollTop=_}else Vh(),Yt&&window.scrollTo({top:_*d,behavior:"instant"}),$n=1;if(Yt=q,mr(),!q&&e.drawerContainer?.isConnected){let ee=e.drawerContainer.getBoundingClientRect();_d=ee.width?ee.left+ee.width/2:void 0}if(q!==j&&!Sh&&!Ch&&!no&&!It()){let ee=q?u.getBoundingClientRect():{left:0,top:0,width:window.innerWidth},re=`translate(${(V.left-ee.left)/d}px, ${(V.top-ee.top)/d}px) scale(${$n*V.width/ee.width})`;if(u.style.transformOrigin=q?"top left":`0 ${_}px`,!q){qt.style.background=document.body.style.background="#080808",u.style.background=Ld;let se=getComputedStyle(u).minHeight;u.style.minHeight=`max(${se==="auto"?"0px":se}, ${window.innerHeight/d}px)`}jt.style.opacity="0",Ko=!0,ci=on(u,{transform:[re,`translate(0px, 0px) scale(${$n})`]},{duration:.25,ease:[.32,.72,0,1]});let X=ci;X.finished.then(()=>{D||ci!==X||(Ko=!1,Yt||(u.style.transformOrigin=da.transformOrigin,u.style.transform=da.transform,u.style.background=da.background,u.style.minHeight=da.minHeight,document.body.style.background=xh.background,qt.style.background=vh),jt.style.opacity="",mr(),wh.reposition(),Fo())})}jt.style.clipPath=q?`inset(${$.visibleTop}px ${$.right}px ${$.bottom}px ${$.visibleLeft}px)`:"",Object.assign(Eo.style,q?{left:`${$.visibleLeft}px`,top:`${$.visibleTop}px`,width:`${$.visibleWidth}px`,height:`${$.visibleHeight}px`}:{left:"",top:"",width:"",height:""})}let $h;function Uh(){pe.dataset.edgeTabs!=="true"&&($h=Ad(pe,["left","top","bottom","transform"])),Object.assign(pe.style,{left:"",top:"",bottom:"",transform:""}),pe.parentElement!==P&&P.append(pe),pe.dataset.edgeTabs="true",A?pe.dataset.edgeOrient="horizontal":delete pe.dataset.edgeOrient}function Ss(){pe.dataset.edgeTabs==="true"&&(Object.assign(pe.style,$h),$h=void 0),delete pe.dataset.edgeTabs,delete pe.dataset.edgeOrient,pe.parentElement===P&&oc.before(pe)}function qh(){return N&&!Z&&!G&&A&&!b&&!te&&!e.onboarding?P.querySelector(".panel"):null}function U8(d){let w=d??(v&&Z?P:lt);ct.parentNode!==w&&(w===lt?an.before(ct):w.append(ct)),ct.classList.toggle("thread-pane",!!d),P.querySelector(".panel")?.toggleAttribute("data-thread",!!d)}function Ph(){return pe.querySelector(".morphing-menu__shell")??pe}function Gh(){return pe.querySelector(".morphing-menu")}function q8(){return pe.querySelector(".morphing-menu__bar")}function Kh(){return[...P.querySelectorAll(".panel-head, .panel .empty, .thread-card")]}function ma(d){return Mh.push(d),d}function jd(){for(let d of Kh())Object.assign(d.style,{opacity:"",transform:"",filter:""});ui.style.opacity=""}function Nd(d,w){for(let k of P.getAnimations())k.cancel();Object.assign(P.style,{transition:"none",transform:"none",translate:"none",opacity:"1",left:`${d.left}px`,top:`${d.top}px`,width:`${d.width}px`,height:`${d.height}px`,borderRadius:w})}function Aw(){Object.assign(P.style,{width:"",height:"",borderRadius:"",transform:"",opacity:""}),v&&_i(),P.offsetWidth,P.style.transition=""}function Cw(d=Gh()){delete P.dataset.morphing,delete pe.dataset.edgeSurface,delete pe.dataset.edgeMorph,delete pe.dataset.hidden,d&&(d.style.transition="")}function sc(d=!1){xs+=1;for(let k of Mh)k.stop();Mh=[];let w=So;So=!1,d&&P.toggleAttribute("data-tips-ready",A),!(!d||!w)&&(Cw(),Ss(),jd(),Aw())}function P8(d,w,k){let _=P.getBoundingClientRect(),j=d?null:{left:_.left,top:_.top,width:_.width,height:_.height,radius:P.style.borderRadius||"16px"};sc(!1),j&&Nd(j,j.radius);let V=xs;So=!0;let $=Gh();$&&($.style.transition="none");let q=q8(),ee=Ph(),re=!1,X=()=>{re||V!==xs||D||(re=!0,So=!1,Cw($),d||(jd(),P.style.opacity="0",Ss()),Aw(),d&&(P.dataset.tipsReady=""))},se=no||It();if(d){let Le=w?P.getBoundingClientRect():null,qe=P.style.borderRadius||"16px";P.style.transition="none",P.style.width="",P.style.height="",P.style.borderRadius="",P.style.transform="none";let F=ee.getBoundingClientRect(),he=!w&&k&&k.width>0?k:F;!w&&he.width>0&&(pw={left:he.left,top:he.top,width:he.width,height:he.height}),Uh(),delete P.dataset.morphing,_i();let Y=P.getBoundingClientRect();if(P.dataset.morphing="true",se||he.width<=0||Y.width<=0||w&&!Le){X();return}let ne=`${he.height/2}px`;w&&Le?Nd(Le,qe):Nd(he,ne),Kh().forEach((Ze,_e)=>{Ze.style.opacity="0",Ze.style.transform="translateY(48px)",Ze.style.filter="blur(4px)",ma(on(Ze,{opacity:1,y:0,filter:"blur(0px)"},{...Jy,delay:tx+_e*QM}))}),ui.style.opacity="0",ma(on(ui,{opacity:1},{...Jy,delay:tx}));let de=()=>{if(V!==xs||D)return;delete P.dataset.morphing;let Ze=P.getBoundingClientRect();ma(on(P,{left:[`${Ze.left}px`,`${Y.left}px`],top:[`${Ze.top}px`,`${Y.top}px`],width:[`${Ze.width}px`,`${Y.width}px`],height:[`${Ze.height}px`,`${Y.height}px`],borderRadius:[P.style.borderRadius||"16px","16px"]},Ba)).finished.then(X).catch(()=>{V===xs&&X()})};if(w||he.height>he.width+8){de();return}let be=JM(q?.offsetWidth||he.width,q?.offsetHeight||he.height),Be=eA(he.left+he.width/2,he.top+he.height,be.width,be.height),Fe=P.getBoundingClientRect();ma(on(P,{left:[`${Fe.left}px`,`${Be.left}px`],top:[`${Fe.top}px`,`${Be.top}px`],width:[`${Fe.width}px`,`${Be.width}px`],height:[`${Fe.height}px`,`${Be.height}px`]},Bp)).finished.then(de).catch(()=>{});return}let bt=j??P.getBoundingClientRect(),mt=j?.radius||P.style.borderRadius||"16px";delete pe.dataset.hidden,P.dataset.morphing="true",Uh();let Lt=pe.getBoundingClientRect(),ce=pw??{left:(window.innerWidth-(Lt.width||228))/2,top:window.innerHeight-24-(Lt.height||52),width:Lt.width||228,height:Lt.height||52};if(se||ce.width<=0||bt.width<=0){X();return}Nd(bt,mt);for(let Le of Kh())ma(on(Le,{opacity:0,y:16,filter:"blur(2px)"},ex));ma(on(ui,{opacity:0},ex)),ma(on(P,{left:[`${bt.left}px`,`${ce.left}px`],top:[`${bt.top}px`,`${ce.top}px`],width:[`${bt.width}px`,`${ce.width}px`],height:[`${bt.height}px`,`${ce.height}px`],borderRadius:[mt,`${ce.height/2}px`]},Vp)).finished.then(X).catch(()=>{V===xs&&X()})}function Xt(d){ic();let w=d&&!A;if(A=d,no||di?.wake(w),delete P.dataset.tipsReady,P.toggleAttribute("data-tips-restored",no),e.onboarding||fw.set(d),d&&(H=!1),d||(clearTimeout(To),To=0,Z=!1,mc=hc="",gc()),b){cancelAnimationFrame(Nh),$8(),w&&!no&&!It()?Ce.dataset.mobileEntering="":delete Ce.dataset.mobileEntering,I=!1,zi(),et(),Yo.show(),Yo.update(),Ce.dataset.mobileEntering!==void 0&&(Nh=requestAnimationFrame(()=>{delete Ce.dataset.mobileEntering}));return}if(v){let j=So,V=d?Ph().getBoundingClientRect():null;d||delete pe.dataset.edgeOrient,ot=d?ot:wo,vs=void 0,I=!1,So=!0;let $=Gh();$&&($.style.transition="none"),Yo.show(),zi(),et(),P8(d,j,V),Yo.update();return}let k=pe.getBoundingClientRect();ot=d?void 0:wo,vs=void 0,I=!1,zi(),et(),hr?.stop(),pe.style.translate="0px 0px";let _=pe.getBoundingClientRect();!no&&!It()&&(hr=on(pe,{translate:[`${k.left-_.left}px ${k.top-_.top}px`,"0px 0px"]},{type:"spring",stiffness:680,damping:32,mass:.55})),Yo.show(),Yo.update()}function fi(){if(R=!1,clearTimeout(To),To=0,Z){it(pn),tc=null,Z=!1,et();return}N=null,G=null,Z=!1,eo=null,ft="",H=!1,et()}function G8(){Re=!1,te=!1,le?.setActive(!1),Es(),fi(),A&&Xt(!1),H=!1,R=!1,I=!0,J=!0;try{sessionStorage.setItem(kh,"1")}catch{}et()}function Lw(){J=!1,I=!1;try{sessionStorage.removeItem(kh)}catch{}et()}function lc(d){if(gh=!!lt.activeElement?.matches(":focus-visible")&&P.contains(lt.activeElement),R=!1,clearTimeout(To),To=0,d.page!==Vn()){let _=new URL(d.page,location.origin);_.searchParams.set("comment",d.id),eL(_);return}bs=nc===d.id&&!an.hidden?an.getBoundingClientRect():null,bs&&to(!0),N=d.id,G=null,Z=!1,eo=null,ft="",H=!1;let w=b&&A;w&&Xt(!1);let k=As(d.anchor);k.attached&&!bs&&(w||!b)&&(Yt?u:window).scrollBy({top:(k.y-(w?Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight):window.innerHeight)*.35)/(Yt?$n*rc():1),behavior:w&&!It()?"smooth":"instant"}),et()}function Yh(){return fe.filter(d=>(we||d.page===Vn())&&(Q==="all"||d.resolved===(Q==="resolved"))&&(!ie||!!d.tags?.includes(ie))&&(!Xe||d.comments.some(w=>`${w.body} ${w.author.name}`.toLowerCase().includes(Xe.toLowerCase()))||d.page.toLowerCase().includes(Xe.toLowerCase()))).sort((d,w)=>w.updatedAt-d.updatedAt)}function Ln(){pe.style.display=J?"none":"",Yo.update();let{dockCenter:d}=u1(window.innerWidth,window.innerHeight,A);if(b)Ss(),Object.assign(pe.style,{left:"50%",top:"auto",bottom:"calc(16px + env(safe-area-inset-bottom,0px))",transform:"translateX(-50%)"});else if(v)So||(delete pe.dataset.hidden,A?Uh():(Ss(),ot&&zd(ot)),_i());else{delete pe.dataset.hidden;let _=!A&&e.drawerContainer?.isConnected?e.drawerContainer.getBoundingClientRect():void 0;_?.width&&!Ko&&(_d=_.left+_.width/2);let j=pe.offsetWidth/2,V=_?.width&&_d!==void 0?Math.max(16+j,Math.min(window.innerWidth-16-j,_d)):d;if(ot)zd(ot);else if(V!==vs){let $=pe.getBoundingClientRect(),q=$.left+$.width/2;hr?.stop(),pe.style.top="",pe.style.bottom="",pe.style.left=`${V}px`,pe.style.translate="0px 0px",vs!==void 0&&!It()&&(hr=on(pe,{translate:[`${q-V}px ${$.top-pe.getBoundingClientRect().top}px`,"0px 0px"]},{type:"spring",stiffness:680,damping:32,mass:.55})),vs=V}}let w=_=>({glyph:_}),k=[{id:"browse",label:pd("Browse website",o.browse),icon:w("pointer"),onSelect:()=>Ts(!1)},{id:"comment",label:pd("Add comment",o.comment),icon:w("comment"),onSelect:()=>Ts(!R)},...i?[{id:"design",label:pd("Design mode",o.design),icon:w("design"),onSelect:()=>jh(!te)}]:[],{id:"comments",label:e.onboarding?A?"Close project sidebar":"Project settings":`${pd(A?"Close comment sidebar":"View all comments",o.comments)}${A?"":` \xB7 ${fe.filter(_=>!_.resolved).length} open`}`,icon:w("expand"),onSelect:()=>Xt(!A)},{id:"account",expandedOrder:-1,label:E.user?`${E.user.name} \xB7 Account`:e.onboarding?.inProject?"Set up inline feedback":"Enter your name",icon:{user:E.user},onSelect:()=>{Z||To?(clearTimeout(To),To=0,Z=!1,et()):yr()}},{id:"copy-prompts",keepOpenOnSelect:!0,label:ks==="all"?"Copied prompt":"Copy all comments for agent",icon:w(ks==="all"?"check":"copy"),showInBar:!1,onSelect:()=>it(()=>_w("all"))},...f&&!b&&!te?[{id:"layout",label:g==="edge"?"Frame view":"Floating view",icon:w("expand"),showInBar:!1,onSelect:()=>Lh(g==="edge"?"background":"edge")}]:[],{id:"dismiss",label:o.restore?`Dismiss inline feedback \xB7 ${o.restore.label} to restore`:"Dismiss inline feedback",icon:w("close"),onSelect:G8},{id:"visibility",label:I?"Show comment pins":"Hide comment pins",icon:w("comment"),showInBar:!1,onSelect:()=>{I=!I,Io(),Ln()}}];He==="Offline"&&k.push({id:"retry",label:`${rn?.title??"Offline"} \xB7 Retry`,icon:w("info"),showInBar:!1,onSelect:Hd}),sw.render({items:e.onboarding?k.filter(_=>_.id==="account"||_.id==="comments"):k,alignEnd:A&&v?!1:!!ot&&ot.y>window.innerHeight/2,edge:A&&v?"bottom":ot?.edgeX??ot?.edgeY??(ot&&ot.y<window.innerHeight/2?"top":"bottom"),activeId:Z?"account":te?"design":R?"comment":A?"comments":"browse",label:"Website review",moreLabel:"More review tools"})}let Di="",cc=new Set,gN=d=>d.page!==Vn()?d.page:cc.has(d.id)?"Not found on page":"";function Xh(d,w){let k=d.querySelector(".page");if(!k)return;let _=new URL(w.page,location.origin).href;k.textContent=w.page!==Vn()?w.page:"",k.title=_,k.parentElement.hidden=!k.textContent;let j=d.querySelector(".card-status");j.textContent=w.resolved?"Resolved":cc.has(w.id)?"Not found on page":"",j.hidden=!j.textContent,d.querySelector(".thread-card").setAttribute("aria-description",[_,j.textContent].filter(Boolean).join(" \xB7 "))}let Ih=!1,Fh=0;function Io(d=!1){if(jn||Ih&&!d)return;if(I){Di="",to(),jt.replaceChildren();return}let w=Vn(),k=fe.filter(X=>X.page===w&&!X.resolved&&(!ie||!!X.tags?.includes(ie))),_=O3(),j=n2(k,X=>_.resolve(X.anchor)),V=k.map(X=>{let se=_.locate(X.anchor);if(se.y<-se.height-40||se.y>window.innerHeight+40)return{thread:X,rect:se,blocked:!1};let bt=_.resolve(X.anchor),mt=ig(se.x+8,se.y-10),Lt=!!(bt&&mt&&!bt.contains(mt)&&!mt.contains(bt));return{thread:X,rect:se,blocked:Lt}});for(let{thread:X,rect:se}of V){if(cc.has(X.id)===!se.attached)continue;se.attached?cc.delete(X.id):cc.add(X.id);let bt=lt.querySelector(`.thread-item[data-thread="${CSS.escape(X.id)}"]`);bt&&Xh(bt,X)}let $=JSON.stringify([N,G&&_.locate(G),V.map(({thread:X,rect:se,blocked:bt})=>[X.id,se,bt,Yd(se,window.innerWidth)])]);if($===Di)return;Di=$,ms?.isPreviewing(yh)||to();let q=new Map(Array.from(jt.querySelectorAll(".pin-stack"),X=>[X.dataset.stack,X.scrollLeft]));jt.replaceChildren();let ee=new Map,re=new Map(V.map(X=>[X.thread.id,X]));for(let{thread:X,rect:se,blocked:bt}of V){if(!se.attached)continue;let mt=j.get(X.id),Lt=mt&&re.get(mt[0].id),ce=Lt?.rect.attached?Lt:{rect:se,blocked:bt};if(ce.rect.y<-ce.rect.height-40||ce.rect.y>window.innerHeight+40||ce.blocked)continue;let je=fe.indexOf(X)+1;if(se.width&&se.height){let F=M("div","area");Object.assign(F.style,{left:`${se.x}px`,top:`${se.y}px`,width:`${se.width}px`,height:`${se.height}px`,opacity:X.id===N?"1":".45"}),jt.append(F)}let Le=ae(`Comment ${je}: ${ow(X.comments[0]?.body??"").slice(0,100)}`,()=>lc(X),`pin${X.id===N?" active":""}${X.id===pc?" hot":""}${X.resolved?" resolved":""}${se.attached?"":" detached"}`);if(Le.textContent="",Le.title="",X.comments[0]){let F=X.comments[0].author;xc(Le,F.accentColor),Le.append(vr(F));let he=Le.querySelector("img");he&&(he.draggable=!1)}if(Q8(Le,X,se),X.resolved){let F=M("span","pin-check");F.append(nt("check")),Le.append(F)}let qe=()=>{if(N||G||H||jn||$t||hs)return;kd=!1,window.clearTimeout(Sd);let F=an.hidden||nc!==X.id;gs?.cancel(),nc=X.id,an.replaceChildren();let he=X.comments[0];if(!he)return;let Y=ae("Open comment",()=>lc(X),"pin-preview-open");Y.textContent="";let ne=Wl.test(he.body),de=M(ne?"div":"p","hover-message",ow(he.body));ne&&Ql().then(({renderDesignComment:Ze})=>Ze(de,he.body,{key:yh=`hover:${he.id}`,resolve:hh(X.anchor),note:(_e,sn)=>_e.textContent=sn,compact:!0})),Y.append(Ow(he)),ne?(de.classList.add("pin-preview-card"),de.addEventListener("click",Ze=>{Ze.target.closest(".design-toggle")||lc(X)})):Y.append(de);let be=ae(X.resolved?"Reopen comment":"Resolve comment",()=>{to(),Jh(X)},"icon pin-preview-resolve","check");be.disabled=!Vd(),an.append(Y,...ne?[de]:[],be),an.hidden=!1;let Be=ag(Le,se),Fe=A&&!b?396:12,kt=Be.x+20+320>window.innerWidth-Fe?Be.x-340:Be.x+20;Object.assign(an.style,{left:`${Math.max(12,kt)}px`,transformOrigin:Be.x<Math.max(12,kt)+160?"top left":"top right",top:`${Math.max(12,Math.min(Be.y-28,window.innerHeight-an.offsetHeight-92))}px`}),F&&!It()&&(gs=an.animate([{opacity:0,transform:"translateY(6px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}))};if(Le.addEventListener("pointerenter",qe),Le.addEventListener("pointermove",F=>{hs&&!jn&&!$t&&F.buttons===0&&(F.movementX||F.movementY)&&(hs=!1,qe())}),Le.addEventListener("focus",qe),Le.addEventListener("blur",()=>to()),Le.addEventListener("pointerleave",()=>{Sd=window.setTimeout(to,120)}),Le.dataset.thread=X.id,Le.dataset.pointer=Yd(ce.rect,window.innerWidth),Object.assign(Le.style,{left:`${se.x}px`,top:`${se.y}px`}),mt&&Lt?.rect.attached&&!Lt.blocked){let F=ee.get(mt[0].id);if(!F){F=M("div","pin-stack"),F.dataset.stack=mt[0].id,F.setAttribute("role","group"),F.setAttribute("aria-label",`${mt.length} comments on this component`);let he=Math.min(178,40+(mt.length-1)*22);Object.assign(F.style,{left:`${Math.max(4,Math.min(Lt.rect.x-25,window.innerWidth-he-8))}px`,top:`${Lt.rect.y-34}px`,maxWidth:`${he}px`}),F.addEventListener("scroll",()=>{to(),Tn()}),ee.set(mt[0].id,F),jt.append(F)}Le.style.left="",Le.style.top="",Le.style.order=String(mt.indexOf(X)),Le.style.marginLeft=mt[0].id===X.id?"0":"-12px",F.append(Le)}else jt.append(Le)}for(let[X,se]of ee)se.scrollLeft=q.get(X)??0;if(G&&G.width>0&&G.height>0){let X=As(G),se=M("div","area");Object.assign(se.style,{left:`${X.x}px`,top:`${X.y}px`,width:`${Math.max(8,X.width)}px`,height:`${Math.max(8,X.height)}px`}),jt.append(se)}}let ks=null,Zh=0;async function _w(d){let w=a2(fe,{...e,origin:location.origin,page:d==="page"?Vn():void 0});if(!w){ko(d==="page"?"No open comments on this page":"No open comments to copy");return}await navigator.clipboard.writeText(w),!D&&(ks=d,oc.textContent="Agent prompt copied",clearTimeout(Zh),Ln(),oo(),Zh=window.setTimeout(()=>{ks=null,Ln(),oo()},2e3))}let uc,Bd=new Set,zw="branch-comments:dismissed-tips",Dw=[["copy","Copy comments for your agent."]];o.comment&&Dw.push(["shortcut",`Press ${o.comment.label} to comment.`]);function K8(d){try{let w=JSON.parse(localStorage.getItem(zw)??"[]");if(Array.isArray(w))for(let k of w)typeof k=="string"&&Bd.add(k)}catch{}for(let[w,k]of Dw){let _=P.querySelector(`[data-tip="${w}"]`);if(!d||Bd.has(w)){_?.remove();continue}if(_)continue;_=M("div","morphing-menu__tooltip sidebar-tip"),_.dataset.tip=w;let j=_;_.append(M("p","",k),ae("Dismiss tip",()=>{Bd.add(w);try{localStorage.setItem(zw,JSON.stringify([...Bd]))}catch{}j.dataset.leaving="",setTimeout(()=>j.remove(),150)},"icon","close")),P.append(_)}Wh()}function Wh(){let d=P.getBoundingClientRect();for(let w of P.querySelectorAll(".sidebar-tip")){let k=w.dataset.tip==="copy",_=P.querySelector(k?".copy-page-prompt":'.toolbar [aria-label^="Add comment"]')?.getBoundingClientRect();if(w.hidden=!_?.width,!_?.width)continue;let j=_.left+_.width/2-d.left,V=Math.max(12,Math.min(d.width-12-w.offsetWidth,j-w.offsetWidth/2));w.style.left=`${V}px`,w.style.top=k?`${_.bottom-d.top+10}px`:`${_.top-d.top-10-w.offsetHeight}px`,w.style.setProperty("--caret-x",`${j-V}px`)}}let Qh,dc=!1;function Y8(d){if(!dc||ge.busy)return;let w=Yh().filter($=>$.resolved).map($=>$.id);if(!w.length)return;let k=M("div","cleanup-confirm");k.popover="auto",k.setAttribute("role","alertdialog"),k.setAttribute("aria-label","Delete resolved comments permanently"),k.append(M("strong","",`Delete ${w.length} resolved ${w.length===1?"thread":"threads"}?`),M("p","","Their replies will be deleted too. This can\u2019t be undone."));let _=M("div","cleanup-actions"),j=()=>{k.hidePopover(),d.focus({preventScroll:!0})};_.append(ae("Cancel",j,"secondary"),ae("Delete permanently",()=>{j(),it(async()=>{try{for(let $=0;$<w.length;$+=250){let q=w.slice($,$+250),ee=new Set(q);await ge.submit(re=>re.filter(X=>!ee.has(X.id)),async()=>{await E.request("project/clear-resolved","POST",{confirm:e.project,threadIds:q})})}}finally{await Xo()}})},"secondary destructive")),k.append(_),P.append(k),k.addEventListener("toggle",()=>{k.matches(":popover-open")||k.remove()}),k.showPopover();let V=d.getBoundingClientRect();k.style.left=`${Math.max(12,Math.min(V.right-k.offsetWidth,innerWidth-k.offsetWidth-12))}px`,k.style.top=`${Math.max(12,Math.min(V.bottom+8,innerHeight-k.offsetHeight-12))}px`,_.querySelector("button")?.focus()}let Vd=()=>!ye&&(O||!!E.user?.verified);function Jh(d,w){if(!E.user&&(!wt||!ua.trim())){yr();return}let k=N===d.id,_=j=>{let V=N;return k&&(N=j?null:d.id),B(Ue(d.id,$=>({...$,resolved:j,resolvedBy:j?E.user:null})),async $=>{E.user||await E.guest(ua),await E.request(`threads/${$(d.id)}`,"PATCH",{resolved:j})},()=>{N||(N=V)})};it(()=>_(!d.resolved)),ko(d.resolved?"Comment reopened":"Comment resolved",{label:"Undo",run:()=>it(()=>_(d.resolved))},w)}let Rw=new WeakMap,Ms=new Set;function Hw(d,w){return d.textContent=w,Wl.test(w)&&(d.textContent="Design change",Ql().then(({summarizeDesignComment:k})=>{d.textContent=k(w)})),d}function oo(){if(e.onboarding){if(uc?.(),P.replaceChildren(),e.onboarding.inProject)return;if(A){let F=M("aside","panel");F.setAttribute("aria-label","Project settings");let he=M("div","panel-head","Project settings"),Y=M("div","empty");Y.append(M("p","","Leave comments on your connected website."),ae("Manage project",()=>{yr()},"secondary")),F.append(he,Y),P.append(F)}return}if(!A&&(v||b))return;let d=P.querySelector(".list"),w=d?.scrollTop??0,k=lt.activeElement?.getAttribute("aria-label")==="Search comments",_=k?lt.activeElement.selectionStart:null;if(!A&&!v&&!b){uc?.(),P.replaceChildren();return}let j=P.querySelector(".panel");if(!j){j=M("aside","panel"),j.setAttribute("aria-label","All comments");let F=M("div","panel-head"),he=M("div","row between sidebar-title"),Y=M("div","filter-slot"),ne=M("div","row"),de=Mt=>{let qn=j.querySelector(".sidebar-search-field"),ha=ne.querySelector('[aria-label="Search comments"]'),Hi=(Mt?ha:qn).getBoundingClientRect();ys=Mt,Mt||(Xe="",qn.querySelector("input").value=""),oo();let _s=(Mt?qn:ha).getBoundingClientRect();It()||qn.animate(Mt?[{transform:`translate(${Hi.left-_s.left}px, ${Hi.top-_s.top}px)`,width:`${Hi.width}px`,height:`${Hi.height}px`,borderRadius:"50%",opacity:.4},{transform:"none",width:`${_s.width}px`,height:`${_s.height}px`,borderRadius:"10px",opacity:1}]:[{transform:"none",opacity:1},{transform:`translate(${_s.left-Hi.left}px, ${_s.top-Hi.top}px) scale(.2)`,opacity:0}],{duration:280,easing:"cubic-bezier(.22,1,.36,1)"}),Mt?qn.querySelector("input")?.focus():ha.focus()};ne.append(ae("Copy page comments",()=>Q==="resolved"?Y8(j.querySelector(".copy-page-prompt")):it(()=>_w("page")),"icon copy-page-prompt","copy"),M("div","tag-filter-slot"),ae("Search comments",()=>de(!0),"icon sidebar-search-trigger","search"),ae("Close sidebar",()=>Xt(!1),"icon","close"));let be=M("div","sidebar-selector");be.append(Y,M("div","scope-slot")),he.append(be,ne);let Be=M("div","sidebar-search"),Fe=M("div","sidebar-search-inner"),kt=M("div","sidebar-search-row"),Ze=M("div","sidebar-search-field"),_e=M("input");_e.type="search",_e.placeholder="Search",_e.setAttribute("aria-label","Search comments"),_e.addEventListener("input",()=>{Xe=_e.value,oo()}),_e.addEventListener("keydown",Mt=>{Mt.key==="Escape"&&(Mt.stopPropagation(),sn())}),Ze.append(nt("search"),_e);let sn=()=>de(!1);Ze.append(ae("Close search",sn,"icon search-cancel","close")),kt.append(Ze),Fe.append(kt),Be.append(Fe),F.append(he,Be);let rt=M("div","morphing-menu__tooltip sidebar-tooltip");rt.setAttribute("aria-hidden","true"),lt.append(rt);let ut=0,tt=0,Un=()=>{clearTimeout(ut),rt.dataset.open&&(delete rt.dataset.open,tt=Date.now()+300)};uc=()=>{clearTimeout(ut),rt.remove(),uc=void 0};let Ri=Mt=>{clearTimeout(ut);let qn=()=>{if(!Mt.isConnected)return;let ha=Mt.getBoundingClientRect();rt.textContent=Mt.ariaLabel;let Hi=rt.offsetWidth/2;rt.style.left=`${Math.max(8+Hi,Math.min(innerWidth-8-Hi,ha.left+ha.width/2))}px`,rt.style.top=`${ha.bottom+8}px`,rt.dataset.open="true"};rt.dataset.open||Date.now()<tt?qn():ut=window.setTimeout(qn,400)};for(let Mt of ne.querySelectorAll("button"))Mt.removeAttribute("title"),Mt.addEventListener("pointerenter",qn=>{qn.pointerType==="mouse"&&Ri(Mt)}),Mt.addEventListener("pointerleave",Un),Mt.addEventListener("focus",()=>Ri(Mt)),Mt.addEventListener("blur",Un);ne.addEventListener("pointerdown",Un),j.append(F),P.append(j)}let V=j.querySelector(".copy-page-prompt");if(Q==="resolved"&&Qh!==E.token){Qh=E.token,dc=!1;let F=Qh;F&&E.request("project").then(()=>{E.token===F&&(dc=!0,oo())}).catch(()=>{})}let $=Q==="resolved";V.disabled=$&&(!dc||ge.busy||!Yh().length),V.classList.toggle("destructive",$);let q=$?"trash":ks==="page"?"check":"copy";if(V.dataset.glyph!==q){let F=V.querySelector("svg:not([data-leaving])"),he=nt(q),Y=V.dataset.glyph!==void 0&&!It();if(V.dataset.glyph=q,Y&&F){F.setAttribute("data-leaving","true"),V.append(he);let ne={duration:200,easing:"cubic-bezier(.22,1,.36,1)"},de={opacity:0,transform:"scale(.7)",filter:"blur(2px)"},be={opacity:1,transform:"scale(1)",filter:"blur(0px)"};F.animate([be,de],{...ne,fill:"forwards"}).finished.then(()=>F.remove()).catch(()=>F.remove()),he.animate([de,be],ne)}else V.replaceChildren(he)}V.setAttribute("aria-label",$?dc?"Delete resolved comments permanently":"Project owner only":ks==="page"?"Copied prompt":"Copy page comments"),j.dataset.search=String(ys),j.querySelector(".filter-slot").inert=ys,j.querySelector(".scope-slot").inert=!ys,j.querySelector(".sidebar-search-trigger").inert=ys;let ee=j.querySelector(".sidebar-search");ee.inert=!ys;let re=j.querySelector(".filter-slot"),X=r?[...new Set(fe.flatMap(F=>F.tags??[]))].sort():[];ie&&!X.includes(ie)&&(ie=""),re.dataset.value!==Q&&(re.dataset.value=Q,re.replaceChildren(os("Filter comments",[["open","Comments"],["all","All comments"],["resolved","Resolved"]],Q,F=>{Q=F,oo(),Io()})));let se=j.querySelector(".tag-filter-slot"),bt=`${ie} ${X}`;if(se&&se.dataset.value!==bt&&(se.dataset.value=bt,se.replaceChildren(),X.length)){let F=ie?`Filtered by #${ie}`:"Filter by tag",he=os(F,[["","All tags"],...X.map(ne=>[ne,`#${ne}`])],ie,ne=>{ie=ne,oo(),Io()}),Y=he.querySelector("summary");Y.className=`icon tag-filter-trigger${ie?" active":""}`,Y.setAttribute("aria-label",F),Y.title=F,Y.replaceChildren(nt("tag")),se.append(he)}let mt=j.querySelector(".scope-slot");mt.dataset.value!==String(we)&&(mt.dataset.value=String(we),mt.replaceChildren(os("Comment pages",[["page","This page"],["all","All pages"]],we?"all":"page",F=>{we=F==="all",oo()})));let Lt=!b&&!no&&!It(),ce=new Map;if(Lt&&d){let F=d.getBoundingClientRect();for(let he of d.querySelectorAll("[data-thread]")){let Y=he.getBoundingClientRect();Y.bottom>=F.top&&Y.top<=F.bottom&&ce.set(he.dataset.thread,Y.top)}}let je=M("div","list"),Le=Yh();Le.length>40&&(je.dataset.long="");let qe=!xe&&He==="Connecting";je.setAttribute("aria-busy",String(qe)),clearTimeout(Ed),je.addEventListener("scroll",()=>{je.dataset.scrolling="true",clearTimeout(Ed),Ed=window.setTimeout(()=>{delete je.dataset.scrolling},800)},{passive:!0});for(let F of Le){let he=F.comments[0];if(!he)continue;let Y=Rw.get(F);if(Y){Y.querySelector(".thread-card").classList.toggle("active",N===F.id),Y.querySelector(".card-resolve").disabled=!Vd(),Y.querySelector("small").textContent=Rs(he.createdAt),Y.querySelectorAll(".reply-meta").forEach((_e,sn)=>{let rt=F.comments[sn+1];_e.textContent=`${rt.author.name} \xB7 ${Rs(rt.createdAt)}`}),Xh(Y,F),je.append(Y);continue}let ne=ae(`Open comment by ${he.author.name}`,()=>lc(F),`thread-card${N===F.id?" active":""}`);ne.replaceChildren();let de=M("div","row");de.append(vr(he.author),M("span","author",he.author.name),M("small","",Rs(he.createdAt)));let be=M("div","card-page-row");be.append(nt("link"),M("span","page"));let Be=M("span","card-status"),Fe=Hw(M("p","preview"),he.body);if(ne.append(de,be,Be,Fe),r&&F.tags?.length){let _e=M("div","card-tags");_e.setAttribute("role","group"),_e.setAttribute("aria-label","Tags");for(let sn of F.tags){let rt=M("span","card-tag",`#${sn}`);rt.title=sn,_e.append(rt)}ne.append(_e)}let kt=M("div","thread-item");kt.dataset.thread=F.id;let Ze=ae(F.resolved?"Reopen comment":"Resolve comment",()=>Jh(F),"icon card-resolve","check");if(Ze.disabled=!Vd(),kt.append(ne,Ze),Xh(kt,F),F.comments.length>1){let _e=M("div","sidebar-replies");_e.id=`replies-${F.id}`,_e.setAttribute("role","group"),_e.setAttribute("aria-label",`Replies to ${he.author.name}`);let sn=`${F.comments.length-1} ${F.comments.length===2?"reply":"replies"}`,rt=ae(sn,()=>{Ms.has(F.id)?Ms.delete(F.id):Ms.add(F.id),ut()},"card-reply-toggle");rt.replaceChildren(nt("comment"),M("span","",sn),nt("chevron")),rt.setAttribute("aria-controls",_e.id);let ut=()=>{let tt=Ms.has(F.id);_e.hidden=!tt,rt.setAttribute("aria-expanded",String(tt)),rt.setAttribute("aria-label",`${tt?"Hide":"Show"} ${sn}`),rt.title=`${tt?"Hide":"Show"} ${sn}`};ut();for(let tt of F.comments.slice(1)){let Un=M("div","sidebar-reply");Un.append(vr(tt.author));let Ri=M("div");Ri.append(M("div","reply-meta",`${tt.author.name} \xB7 ${Rs(tt.createdAt)}`),M("p","",tt.body)),Un.append(Ri),_e.append(Un)}kt.append(rt,_e),kt.addEventListener("keydown",tt=>{tt.key!=="Escape"||!Ms.has(F.id)||(tt.preventDefault(),tt.stopPropagation(),Ms.delete(F.id),ut(),rt.focus({preventScroll:!0}))})}Rw.set(F,kt),je.append(kt)}if(!je.childElementCount){let F=M("div","empty");if(qe&&F.setAttribute("role","status"),F.append(nt("comment"),M("strong","",Ot?mn?"Private project":"Sign in required":He==="Offline"&&rn?rn.title:qe?"Loading comments\u2026":Xe?"No matching comments":Q==="resolved"?"Nothing resolved yet":"No comments yet")),Ot)F.append(M("p","",Ot)),E.user?.verified||F.append(ae("Sign in",yr,"secondary"));else if(He==="Offline"&&rn){F.append(M("p","",rn.detail));let he=M("div","empty-actions");rn.kind==="site"&&he.append(ae("Turn on comments",()=>{let Y=new URL("/setup",e.endpoint);Y.searchParams.set("workspace",e.project),Y.searchParams.set("site",location.origin),window.open(Y,"_blank","noopener")},"primary"),ae("Copy link",()=>{navigator.clipboard.writeText(location.origin).then(()=>ko("Link copied")).catch(()=>ko(location.origin))},"secondary")),rn.kind!=="site"&&he.append(ae("Try again",Hd,"secondary")),F.append(he)}else xe&&!Xe&&Q!=="resolved"&&F.append(ae("Add a comment",()=>{ii(window.innerWidth,window.innerHeight)&&Xt(!1),Ts(!0)},"secondary"));je.append(F),je.dataset.empty=""}if(fe.length&&He==="Offline"&&je.prepend(ae("Saved comments \xB7 Try again",Hd,"secondary")),d?d.replaceWith(je):j.append(je),K8(!!je.querySelector(".empty [aria-label='Add a comment']")),requestAnimationFrame(Wh),je.scrollTop=w,Lt){let F=0,he=je.getBoundingClientRect();for(let Y of je.querySelectorAll("[data-thread]")){let ne=Y.getBoundingClientRect();if(ne.bottom<he.top||ne.top>he.bottom)continue;let de=ce.get(Y.dataset.thread),be=de===void 0?8:de-ne.top;Math.abs(be)>.5&&Y.animate([{opacity:de===void 0?0:1,transform:`translateY(${Math.max(-40,Math.min(40,be))}px)`},{opacity:1,transform:"translateY(0)"}],{duration:250,delay:de===void 0?Math.min(F++,5)*40:0,easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"backwards"})}je.querySelector("[data-thread]")||je.animate([{opacity:0},{opacity:1}],{duration:150})}if(k){let F=j.querySelector('input[type="search"]');F.focus(),_!==null&&F.setSelectionRange(_,_)}}function Ow(d){let w=M("div","row");return w.append(vr(d.author),M("span","author",d.author.name),M("small","",Rs(d.createdAt))),w.title=d.author.verified?"Verified":"Guest",w}function jw(d,w){return E.user?.id!==d.author.id||d.body==="[Comment deleted]"?[]:[{label:"Edit",icon:"edit",onSelect:()=>{eo=d.id,Jl=d.body,br()}},{label:"Delete",icon:"trash",destructive:!0,onSelect:()=>{let k=Hh(w.anchor);ko("Delete this comment?",{label:"Delete",run:()=>{let _=N;w.comments.length===1&&(N=null),it(()=>B(Ue(w.id,j=>{let V=j.comments.filter($=>$.id!==ge.id(d.id));return V.length?{...j,comments:V}:null}),async j=>{await E.request(`threads/${j(w.id)}/comments/${j(d.id)}`,"DELETE")},()=>{N||(N=_)})),ko("Comment deleted",void 0,k)}})}}]}function X8(d,w){let k=M("article","message");if(k.dataset.comment=d.id,k.append(Ow(d)),eo===d.id){let q=M("textarea");q.value=Jl,q.maxLength=4e3,q.setAttribute("aria-label","Edit comment"),q.dataset.focusKey="edit",q.addEventListener("input",()=>Jl=q.value);let ee=ae("Save changes",()=>{let re=Jl;eo=null,it(()=>B(Ue(w.id,X=>({...X,comments:X.comments.map(se=>se.id===ge.id(d.id)?{...se,body:re,editedAt:Date.now()}:se)})),async X=>{await E.request(`threads/${X(w.id)}/comments/${X(d.id)}`,"PATCH",{body:re})},()=>{eo||(eo=ge.id(d.id),Jl=re)}))},"primary");return ee.disabled=ye,k.append(q,ee,ae("Cancel",()=>{eo=null,br()},"secondary")),k}let _=M("div","message-content"),j=Wl.test(d.body),V=M(j?"div":"p","message-text");if(kx(V,d.body),j){let q=({renderDesignComment:ee})=>ee(V,d.body,{key:d.id,resolve:hh(w.anchor),note:kx,onSwitch:()=>Tn()});ms?q(ms):Ql().then(q)}if(_.append(V),d.body!=="[Comment deleted]"){let q=ae("Add reaction",()=>{ec?.(!0),ec=jA(lt,q,re=>I8(d,w,re,!(E.user&&d.reactions[re]?.includes(E.user.id))),Object.entries(d.reactions).find(([,re])=>E.user&&re.includes(E.user.id))?.[0],`branch-comments:emoji:${e.project}:${E.user?.id??"guest"}`,e.emojiDataSource)},"icon message-reaction","smile"),ee=Object.entries(d.reactions).filter(([,re])=>re.length>0);if(q.dataset.reactions=JSON.stringify(ee),ee.length){q.replaceChildren(),q.classList.add("has-reactions");for(let[re,X]of ee)q.append(M("span","reaction-value",`${re}${X.length>1?` ${X.length}`:""}`));q.setAttribute("aria-label","Change reactions")}q.setAttribute("aria-haspopup","menu"),q.setAttribute("aria-expanded","false"),_.append(q)}k.append(_);let $=M("div","actions");if(E.user?.id===d.author.id&&d.body!=="[Comment deleted]"){let q=Wm("Message actions",jw(d,w));w.comments[0]?.id!==d.id&&k.firstElementChild?.append(q)}return d.editedAt&&$.append(M("small","","Edited")),$.childElementCount&&k.append($),k}function I8(d,w,k,_){if(!E.user&&(!wt||!ua.trim())){yr();return}it(async()=>{E.user||await E.guest(ua);let j=E.user;await B(Ue(w.id,V=>({...V,comments:V.comments.map($=>{if($.id!==ge.id(d.id))return $;let q=Object.fromEntries(Object.entries($.reactions).map(([ee,re])=>[ee,re.filter(X=>X!==j.id)]));return _&&(q[k]=[...q[k]??[],j.id]),{...$,reactions:q}})})),async V=>{await E.request(`threads/${V(w.id)}/comments/${V(d.id)}/reactions`,"POST",{emoji:k,active:_})}),_&&nA(`branch-comments:emoji:${e.project}:${j.id}`,k)})}async function eg(d="github"){let w=window.open("about:blank","branch-comments-signin","popup,width=600,height=720");if(!w)throw new Error("Allow popups to sign in.");try{let k=await E.request(`auth/${d}/start`,"POST",{}),_=new URL(k.url).origin,j=V=>{if(V.origin!==_||V.source!==w||V.data?.type!=="branch-comments:auth")return;let{token:$,user:q}=V.data;typeof $!="string"||!q?.id||!q?.name||q.verified!==!0||(E.save({token:$,user:q}),fa(),U=null,window.removeEventListener("message",j),clearTimeout(bh),w.close(),Z=!!e.onboarding,et(),!e.onboarding&&(tc?it(Uw):(it(Xo),ko(`Signed in as ${q.name}`))))};window.addEventListener("message",j,{signal:C.signal}),bh=window.setTimeout(()=>{window.removeEventListener("message",j)},6e5),w.location.href=k.url}catch(k){throw w.close(),k}}let tg;function Nw(d,w,k,_){let j=M("div","tag-slot");j.hidden=!!_&&!d.length;let V=({tagEditor:$})=>$(j,{tags:d,suggestions:[...new Set(fe.flatMap(q=>q.tags??[]))].sort(),onAdd:w,onRemove:k,trigger:_});if(tg)V(tg);else{let $=!1;_&&(_.onclick=()=>{$=!0}),Promise.resolve().then(()=>(o6(),n6)).then(q=>{tg=q,V(q),$&&_?.isConnected&&_.click(),Tn()})}return j}function Bw(d,w){if(!E.user){yr();return}it(async()=>{let{tags:k}=await E.request(`threads/${ge.id(d.id)}`,"PATCH",w);fe=fe.map(_=>_.id===d.id?{..._,tags:k}:_),oo()})}function Vw(d){let w=M("form",`composer ${d?"reply-composer":"new-comment-composer"}`),k=M("textarea"),_=d?"":fr;k.placeholder=d?"Reply\u2026":_?"Add a note\u2026":"Add a comment\u2026",k.rows=1,k.maxLength=4e3,k.required=!!d||!fr,k.value=d?Po.get(d.id)??"":Cn,k.setAttribute("aria-label",d?"Reply":"Comment"),k.dataset.focusKey="body";let j=()=>{k.style.height="auto",k.style.height=`${Math.min(128,Math.max(d?34:28,k.scrollHeight))}px`,k.style.overflowY=k.scrollHeight>128?"auto":"hidden",Tn()};k.addEventListener("input",j),k.addEventListener("input",()=>{d?Po.set(d.id,k.value):Cn=k.value}),k.addEventListener("keydown",$=>{$.key==="Enter"&&!$.shiftKey&&!$.isComposing&&($.preventDefault(),w.requestSubmit())});let V=ae(d?"Send reply":"Post comment",()=>{},"send","arrow");if(V.type="submit",V.disabled=ye,d)w.append(k,V);else{let $=M("div","draft-body");E.user&&$.append(vr(E.user)),$.append(k,V),r&&$.append(Nw(si,q=>si=[...si,q],q=>si=si.filter(ee=>ee!==q))),w.append($)}if(k.addEventListener("input",()=>{V.disabled=ye||!k.value.trim()&&!_}),V.disabled||=!k.value.trim()&&!_,_){let $=M("div","draft-proposal");$.textContent=_;let q=G?hh(G):()=>null;Ql().then(({renderDraftProposal:ee})=>{ee($,_,q),Tn()}),w.prepend($)}return w.addEventListener("submit",$=>{if($.preventDefault(),!(!k.value.trim()&&!_||ye)){if(!E.user){tc=()=>$w(d),yr();return}it(()=>$w(d))}}),requestAnimationFrame(()=>{k.isConnected&&j()}),w}async function $w(d){if(e.onboarding)throw new Error("Open your connected website to leave a comment.");if(!E.user)throw new Error("Enter your name to leave a comment.");let w=Date.now(),k={id:`pending-${crypto.randomUUID()}`,body:d?Po.get(d.id)??"":[Cn.trim(),fr].filter(Boolean).join(`
2968
2968
 
2969
2969
  `),author:{...E.user},createdAt:w,editedAt:null,reactions:{}};if(k.body.trim()){if(d)Po.delete(d.id),await B(Ue(d.id,_=>({..._,updatedAt:w,comments:[..._.comments,k]})),async _=>{let V=(await E.request(`threads/${_(d.id)}/comments`,"POST",{body:k.body})).id??(await E.list()).find($=>$.id===_(d.id))?.comments.filter($=>$.author.id===k.author.id&&$.body===k.body).at(-1)?.id;return V?{[k.id]:V}:{}},()=>{let _=ge.id(d.id);fe.some(j=>j.id===_)?Po.set(_,[k.body,Po.get(_)].filter(Boolean).join(`
2970
2970
  `)):G===d.anchor?Cn=[Cn,k.body].filter(Boolean).join(`
2971
- `):oe.push({anchor:d.anchor,text:k.body})});else if(G){let _=G,j=si,V=Cn,$=fr,q={id:`pending-${crypto.randomUUID()}`,page:Vn(),anchor:_,tags:j,resolved:!1,resolvedBy:null,createdAt:w,updatedAt:w,comments:[k]};N=q.id,G=null,Cn=fr="",si=[],await B(ee=>[...ee,q],async()=>{let ee=await E.request("threads","POST",{page:q.page,anchor:_,body:k.body,...j.length?{tags:j}:{}}),re=ee.commentId??(await E.list()).find(X=>X.id===ee.id)?.comments[0]?.id;return{[q.id]:ee.id,...re?{[k.id]:re}:{}}},()=>{G?oe.push({anchor:_,text:k.body}):(N=null,G=_,Cn=V,fr=$,si=j)}),R&&!G&&!Z&&N===ge.id(q.id)&&(Od()||(N=null,A&&Xt(!1)),H=!0,et())}}}async function Uw(){let d=tc;tc=null,d&&await d()}let fc=new Map;function br(){tw?.then(({resetDesignPreviews:Y})=>Y(new Set([...Z?[]:fe.find(ne=>ne.id===N)?.comments.map(ne=>ne.id)??[],...an.hidden?[]:[yh],...G?["draft"]:[]])));let d=Ae;Ae=void 0,ec?.(!0),ec=void 0;let w=lt.activeElement,k=w?.dataset.focusKey,_=k?w?.selectionStart:null,j=!!w?.matches(":focus-visible"),V=ct.querySelector(".messages")?.scrollTop??0,$=ct.querySelector(".account-dialog")?.scrollTop??0,q=Z?"account":G?"draft":N;q!==me&&(Me=null);let ee=ct.firstElementChild,re=qh(),X=ct.classList.contains("thread-pane"),se=me!==q,bt=ee?.getBoundingClientRect(),mt=new Map([...ee?.querySelectorAll("[data-comment]")??[]].map(Y=>[Y.dataset.comment,Y.querySelector(".message-reaction")]));if(ee&&se&&!It()&&!(X&&(re||!ct.isConnected))){let Y=getComputedStyle(ee),ne={opacity:Y.opacity,transform:Y.transform};ee.getAnimations().forEach(Fe=>Fe.cancel());let de={duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"},be=me==="account"?M("div","account-layer"):X?M("div","thread-pane"):ee;be!==ee&&be.append(ee),ee.animate([{transform:ne.transform},{transform:X?"translateX(24px)":"translateY(4px) scale(.99)"}],de);let Be=be.animate([{opacity:ne.opacity},{opacity:0}],de);be.inert=!0,be.setAttribute("aria-hidden","true"),ee.style.pointerEvents="none",(X?ct.parentElement:be!==ee&&v?P:lt).append(be),Zl.set(be,d),d=void 0,Be.finished.catch(()=>{}).finally(()=>{be.remove(),Zl.get(be)?.(),Zl.delete(be)})}d?.(),ct.replaceChildren(),U8(re);let Lt=P.querySelector(".panel");if(Lt&&X!==!!re){if(!It())for(let ne of Lt.querySelectorAll(":scope > :not(.thread-pane)")){let de=[{visibility:"visible",opacity:1,transform:"none"},{visibility:"visible",opacity:0,transform:"translateX(-24px)"}];ne.animate(re?de:de.reverse(),{duration:250,easing:"cubic-bezier(.22,1,.36,1)"})}let Y=`[data-thread="${CSS.escape(me??"")}"] .thread-card`;(re?gh:!G&&j&&(Lt.contains(w)||!w.isConnected))&&queueMicrotask(()=>(re?ct:Lt).querySelector(re?".thread-back":Y)?.focus({preventScroll:!0})),gh=!1}if(me=q,ct.classList.toggle("account-layer",Z),!G&&!N&&!Z){gr();return}let ce=M("section",Z?"dialog account-dialog":"dialog");Z&&ce.setAttribute("aria-modal","false"),ce.setAttribute("role","dialog"),ce.setAttribute("aria-label",Z?"Reviewer account":G?"New comment":"Comment thread");let je=M("div","dialog-head row between"),Ce=M("div","row"),qe=fe.find(Y=>Y.id===N)??null,F;if(qe&&!Z){let Y=(Fe,kt)=>({label:Fe,icon:Fe==="Copy link"?"link":Fe==="Copy selector"?"code":"comment",onSelect:()=>it(async()=>{await navigator.clipboard.writeText(kt()),ko("Copied")})}),ne=qe.anchor.source,de=ne?e.sourceUrl?.(ne,e.branch)??`https://github.com/${e.repo}/blob/${encodeURIComponent(e.branch)}/${ne.split("/").map(encodeURIComponent).join("/")}`:"",be=Wm("Comment actions",[...jw(qe.comments[0],qe),...de&&/^(https?:|vscode:|cursor:)/.test(de)?[{label:"Open source",icon:"code",onSelect:()=>window.open(de,"_blank","noopener,noreferrer")}]:[],Y("Copy link",()=>{let Fe=new URL(qe.page,location.origin);return Fe.searchParams.set("comment",qe.id),Fe.href}),Y("Copy feedback",()=>[`Repository: ${e.repo}`,`Branch: ${e.branch}`,`Page: ${new URL(qe.page,location.origin).href}`,`Target: ${qe.anchor.selector||"Page position"}`,...qe.anchor.source?[`Source: ${qe.anchor.source}`]:[],...qe.anchor.text?[`Element text: ${qe.anchor.text}`]:[],"",...qe.comments.map(Fe=>`${Fe.author.name}: ${Fe.body}`)].join(`
2972
- `)),Y("Copy selector",()=>qe.anchor.selector)]);Ce.append(be),r&&(F=ae(qe.tags?.length?"Manage tags":"Add tag",()=>{},"icon thread-tag-action","tag"),Ce.append(F));let Be=ae(qe.resolved?"Reopen comment":"Resolve comment",()=>Jh(qe,Hh(qe.anchor)),"icon","check");Be.disabled=!Vd(),Ce.append(Be)}if(Ce.append(re?ae("Close sidebar",()=>{fi(),Xt(!1)},"icon","close"):ae(Z?"Close account":"Close comment",fi,"icon","close")),re&&je.append(ae("Back to comments",fi,"icon thread-back","chevron"),Hw(M("strong","thread-title"),qe?.comments[0]?.body??"")),je.append(Ce),qe||Z||re?ce.append(je):ce.append(ae("Close comment",fi,"draft-close icon","close")),Z){let Y=M("form","account");if(E.user){U??={name:E.user.name,avatarUrl:E.user.avatarUrl??"",accentColor:E.user.accentColor??bg};let ne=U,de=vr({...E.user,...ne}),be=M("div","account-summary"),Be=M("span","account-status");E.user.verified?(Be.append(document.createTextNode("Connected with ")),E.user.id.startsWith("google:")&&Be.append(pb()),Be.append(document.createTextNode(E.user.id.startsWith("google:")?"Google":"GitHub"))):Be.textContent="Guest account";let Fe=ae("Update profile photo",()=>_e.click(),"account-avatar-button");Fe.replaceChildren(de),be.append(Fe,M("h2","","Your profile"),Be),Y.append(be);let kt=M("label","account-name-label","Display name"),Ze=M("input");Ze.value=ne.name,Ze.name="name",Ze.autocomplete="name",Ze.required=!0,Ze.maxLength=60,Ze.dataset.focusKey="profile-name",Ze.addEventListener("input",()=>{ne.name=Ze.value,pt(ne)}),Ze.addEventListener("blur",()=>{pt(ne,!0)}),kt.append(Ze);let _e=M("input");_e.type="file",_e.accept="image/png,image/jpeg,image/webp",_e.hidden=!0,_e.setAttribute("aria-label","Choose profile photo"),_e.addEventListener("change",()=>it(async()=>{let ut=_e.files?.[0];if(!ut)return;if(ut.size>10*1024*1024)throw new Error("Choose a photo under 10 MB.");let tt=await createImageBitmap(ut),Un=document.createElement("canvas");Un.width=Un.height=128;let Ri=Un.getContext("2d"),Mt=Math.min(tt.width,tt.height);Ri.drawImage(tt,(tt.width-Mt)/2,(tt.height-Mt)/2,Mt,Mt,0,0,128,128),tt.close();let qn=.8;do ne.avatarUrl=Un.toDataURL("image/jpeg",qn),qn-=.15;while(ne.avatarUrl.length>12e3&&qn>.1);if(ne.avatarUrl.length>12e3)throw new Error("Choose a smaller photo.");pt(ne,!0),br()})),be.append(_e);let sn=UM(ne.accentColor,ut=>{ne.accentColor=ut,xc(de,ut),pt(ne)});if(Ae=sn.destroy,Y.append(kt,sn.element),e.onboarding){let ut=e.onboarding;Y.append(Ew(M("section","onboarding-panel"),Promise.resolve().then(()=>(lh(),sh)).then(({onboardingPanel:tt})=>tt(E,ut))))}else Y.append(H8()),x&&Y.append(O8()),Y.append(Tw());if(E.user?.verified&&!e.onboarding?.code&&!e.onboarding?.claimKey&&!e.onboarding?.invite){let ut=M("div");Y.append(ut),Promise.resolve().then(()=>(lh(),sh)).then(({projectManagement:tt})=>{ut.isConnected&&ut.replaceWith(tt(E,e.onboarding?.workspace,Un=>{if(Un)N=null,ge.replace([],ge.revision),Y.querySelector(".account-usage")?.remove();else{let Ri=e.onboarding?.workspace?`usage?workspace=${encodeURIComponent(e.onboarding.workspace)}`:"usage";Y.querySelector(".account-usage")?.replaceWith(Tw(Ri)),Xo().catch(()=>{})}}))})}Y.addEventListener("submit",ut=>{ut.preventDefault(),pt(ne,!0)});let rt=M("div","account-session");rt.append(ae("Sign out",()=>it(async()=>{if(ge.busy||ye){ko("Wait for your changes to save.");return}clearTimeout(Te),Ct=null;let ut=E.logout();fa(),U=null,Ie=null,et();try{await ut}finally{fa(),it(Xo),et()}}),"secondary")),Y.append(rt),!E.user.verified&&vo&&Y.append(vt()),!E.user.verified&&Nn&&Y.append(ae("Sign in with GitHub",()=>it(()=>eg()),"primary"))}else{if(Y.append(M("h2","",e.onboarding?"Set up inline feedback":"Leave comments")),e.onboarding?.inProject){Y.append(M("p","","Add the sites where you want to leave feedback. One site per line."));let ne=M("label","account-name-label","Production and preview sites"),de=M("textarea");de.rows=2,de.placeholder="https://your-site.com",de.value=ps,de.dataset.focusKey="setup-sites",de.addEventListener("input",()=>{ps=de.value}),ne.append(de),Y.append(ne);let be=ae("Connect",()=>it(async()=>{if(!Jn){Jn=!0,be.disabled=!0;try{let Be=await e2(e,C.signal,Jw(ps,location.origin));if(D)return;Ww(e,Be),e={...e,project:Be.project,repo:Be.repo,onboarding:void 0},E=new is(e),E.save(Be),Z=!1,U=null,me=null,await bc(),et(),ko("Inline feedback is connected. Select an element to comment.")}finally{Jn=!1,D||et()}}}),"primary");be.disabled=Jn,Y.append(be)}if(wt){let ne=M("label","account-name-label","Your name"),de=M("input");de.name="name",de.autocomplete="name",de.placeholder="Your name",de.required=!0,de.maxLength=60,de.value=ua,de.dataset.focusKey="account-name",de.addEventListener("input",()=>ua=de.value),ne.append(de),Y.append(ne);let be=ae("Continue",()=>{},"primary");be.type="submit",be.disabled=ye,ye&&be.setAttribute("aria-busy","true"),Y.append(be)}wt&&(vo||Nn)&&Y.append(M("div","account-divider","or")),vo&&Y.append(vt()),Nn&&Y.append(ae("Continue with GitHub",()=>it(()=>eg()),"secondary")),Y.addEventListener("submit",ne=>{ne.preventDefault(),it(async()=>{await B8(async()=>{await E.guest(ua),Z=!1}),await Uw()})})}ce.append(Y)}else if(G)ce.append(Vw(null));else if(qe){let Y=M("div","messages");for(let de of qe.comments)Y.append(X8(de,qe));ce.append(Y);let ne=()=>Y.dataset.fade=`${Y.scrollTop>2?"top":""} ${Y.scrollTop+Y.clientHeight<Y.scrollHeight-2?"bottom":""}`;if(Y.addEventListener("scroll",ne,{passive:!0}),requestAnimationFrame(ne),r){let de=Nw(qe.tags??[],Fe=>Bw(qe,{tag:Fe}),Fe=>Bw(qe,{untag:Fe}),F);de.classList.add("thread-tags");let be=Y.querySelector(".message"),Be=be?.querySelector(".message-text");Be?Be.after(de):be?.append(de)}ce.append(Vw(qe))}else ce.append(M("div","empty","This comment is no longer available."));if(ct.append(ce),Z&&se&&!It()&&(ct.animate([{opacity:0},{opacity:1}],{duration:250,easing:"ease-out"}),ce.animate([{opacity:0,transform:"translateY(8px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"})),!Z&&!re){let Y=M("div","comment-drag-handle");Y.setAttribute("aria-hidden","true"),ce.prepend(Y),Op(ce,Y,ne=>{me&&St.set(me,ne),Tn()},C.signal,()=>Wt.stop())}if(Tn(),re){se&&(Ud=!1,qd(!0,1200));let Y=ne=>{Ud=ne,qd(ne)};for(let ne of[je,ce.querySelector(".messages")])ne?.addEventListener("pointermove",()=>Ud||Y(!0)),ne?.addEventListener("pointerleave",()=>Y(!1)),ne?.addEventListener("focusin",de=>{de.target.matches(":focus-visible")&&Y(!0)}),ne?.addEventListener("focusout",()=>Y(!1));ce.addEventListener("click",()=>qd(!1,600)),ce.addEventListener("pointerover",ne=>ne.target.closest(".design-card-target")?.removeAttribute("title"))}if(!Z&&!It()){let Y=ce.getBoundingClientRect(),ne=bs??(se?null:bt);re?se&&ce.animate([{opacity:0,transform:X?"none":"translateX(24px)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}):ne&&(bs||Math.abs(ne.height-Y.height)>1||Math.abs(ne.width-Y.width)>1)?ce.animate([{left:`${ne.left}px`,top:`${ne.top}px`,width:`${ne.width}px`,height:`${ne.height}px`,opacity:1},{left:`${Y.left}px`,top:`${Y.top}px`,width:`${Y.width}px`,height:`${Y.height}px`,opacity:1}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}):se&&ce.animate([{opacity:0,transform:"translateY(6px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"});for(let de of ce.querySelectorAll("[data-comment]")){let be=de.querySelector(".message-reaction"),Be=mt.get(de.dataset.comment),Fe=de.dataset.comment;be&&Be&&Be.dataset.reactions!==be.dataset.reactions&&fc.set(Fe,{from:Be,to:be.dataset.reactions,started:performance.now()});let kt=fc.get(Fe),Ze=kt?performance.now()-kt.started:470;if(be&&kt&&Ze<470&&kt.to===be.dataset.reactions){let _e=M("span","reaction-leaving");_e.setAttribute("aria-hidden","true");for(let ut of kt.from.children){if(ut.classList.contains("reaction-leaving"))continue;let tt=ut.cloneNode(!0);_e.append(tt)}let sn=[...be.children];be.append(_e);let rt=_e.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"scale(.2, .35)"}],{duration:110,easing:"ease-in",fill:"forwards"});rt.currentTime=Ze,rt.finished.then(()=>_e.remove()).catch(()=>_e.remove());for(let ut of sn){let tt=ut.animate([{opacity:0,transform:"scale(.25, .4)",offset:0},{opacity:1,transform:"scale(1.16, .92)",offset:.38},{opacity:1,transform:"scale(.95, 1.07)",offset:.6},{opacity:1,transform:"scale(1.025, .985)",offset:.8},{opacity:1,transform:"scale(1)",offset:1}],{duration:380,delay:90,easing:"ease-in-out",fill:"backwards"});tt.currentTime=Ze,tt.finished.then(()=>{fc.get(Fe)===kt&&fc.delete(Fe)}).catch(()=>{})}}}}bs=null;let he=ce.querySelector(".messages");if(he&&(he.scrollTop=V),Z&&!se&&(ce.scrollTop=$),k){let Y=ce.querySelector(`[data-focus-key="${k}"]`);Y&&(Y.focus({preventScroll:!0}),_!=null&&Y.setSelectionRange(_,_))}}let F8,$d=0,ng=!1,Ud=!1,qw=0,pc="",mc="",hc="",og=0;function gc(d=mc||hc){if(clearTimeout(og),d!==pc){pc=d;for(let w of jt.querySelectorAll(".pin"))w.classList.toggle("hot",w.dataset.thread===d);Cs()}}function qd(d,w=0){clearTimeout(qw),ng=d,Cs(),w&&(qw=window.setTimeout(()=>qd(Ud),w))}function Tn(){let d=Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight),w=ct.firstElementChild;if(!w||Z)return;if(ct.classList.contains("thread-pane")){let ce=$d;$d=performance.now()+500;let je=()=>{Cs(),performance.now()<$d?requestAnimationFrame(je):$d=0};ce||je();return}if(b&&w.querySelector("textarea:focus")){let je=window.visualViewport?.offsetTop??0;w.style.maxHeight=`${Math.max(0,d-24)}px`;let Ce=c3(window.innerWidth,d,je,w.offsetWidth,w.offsetHeight);Wt.place(me,w,Ce.x,Ce.y,!0),w.style.bottom="auto",w.style.transformOrigin="bottom center",gr();return}let k=Yt?u.getBoundingClientRect().bottom-12:d-92;w.style.maxHeight=`${k-12}px`,(F8??=new ResizeObserver(()=>Tn())).observe(w);let _=fe.find(ce=>ce.id===N),j=G??_?.anchor,V,$=$t?.id===N?$t:j?(()=>{let ce=As(j);if(!ce.attached)return Me===me?!1:null;Me=me,V=ce.width>16&&ce.height>16?{left:ce.x,top:ce.y,right:ce.x+ce.width,bottom:ce.y+ce.height}:(G?Kw:Wl.test(_?.comments[0]?.body??""))?ce.component:void 0;let je=N&&jt.querySelector(`[data-thread="${CSS.escape(N)}"]`);return je?ag(je,ce):ce})():null;if($===!1)return G&&Cn.trim()&&(W={anchor:G,text:Cn}),fi();let q=$t?.id===N,ee=()=>{w.style.transformOrigin=!$||$.x<w.offsetLeft+w.offsetWidth/2?"top left":"top right"},re=!q&&me&&St.get(me);if(re){let ce=or(re,w.offsetWidth,w.offsetHeight,qt.clientWidth,d);Wt.place(me,w,ce.x,ce.y,q),ee(),gr();return}let X=(window.innerWidth-354)/2,se=d-450;$&&(X=$.x+20,se=$.y-28);let bt=A&&!b?396:12,mt=w.offsetWidth,Lt=w.offsetHeight;if($&&X+mt>window.innerWidth-bt&&(X=$.x-mt-20),V&&!b&&!q){let ce=k-V.bottom-14,je=V.top-26;if(V.right+14+mt<=window.innerWidth-bt)[X,se]=[V.right+14,V.top];else if(V.left-14-mt>=12)[X,se]=[V.left-14-mt,V.top];else if(Math.max(ce,je)>=Math.min(Lt,200)){let Ce=ce>=Lt||ce>=je?ce:je;w.style.maxHeight=`${Ce}px`,[X,se]=[V.left,Ce===ce?V.bottom+14:V.top-14-Math.min(Lt,Ce)]}}Wt.place(me,w,Math.max(12,Math.min(X,window.innerWidth-w.offsetWidth-bt)),Math.max(12,Math.min(se,k-w.offsetHeight)),q),ee(),gr()}function yr(){clearTimeout(To),U=null,H=!1;let d=b;d&&!A&&Xt(!0),To=0,!(D||d&&!A)&&(Z=!0,et(),Z8())}function Z8(){queueMicrotask(()=>{if(!Z)return;let d=b,w=d?ct.querySelector(".account-dialog"):ct.querySelector("input,button");d&&w&&(w.tabIndex=-1),w?.focus({preventScroll:!0})})}let Pw=Gl,As=R3;function ig(d,w){return document.elementsFromPoint(d,w).find(k=>k!==Le&&!Le.contains(k))??null}function rg(d){return!!d&&d!==u&&d!==document.body&&(e.pickRoots?[u,...e.pickRoots()]:[document.body]).some(w=>w.contains(d))}function W8(){return le?Promise.resolve(le):(Oe||(Oe=Promise.resolve().then(()=>(L8(),C8)).then(({createDesignMode:d})=>{let w=d({root:lt,panelRoot:P,host:Le,exitKey:o.design?.label,design:e.design,flip(){if(!v||!A||h||So)return;let k=P.getBoundingClientRect();mw({x:qt.clientWidth-k.right,y:k.top}),m=!0,P.animate([{transform:`translateX(${k.left-P.getBoundingClientRect().left}px)`},{}],{duration:320,easing:"cubic-bezier(.22,1,.36,1)"})},targetAt(k,_){let j=ig(k,_);return rg(j)?j:null},onComment(k,_){Re=!1,A&&!Od()&&Xt(!1),jh(!1),Cn="",fr=_??"",si=[];let j=k.getBoundingClientRect(),V={x:j.left+j.width/2,y:j.top+j.height/2};lg(k,V,V,!0)},onExit(){te=!1,Es(),Ln(),kw()}});return D?(w.destroy(),null):(le=w,w.setActive(te),w)}).catch(()=>(te=!1,Es(),Ln(),null)).finally(()=>{Oe=null})),Oe)}function ag(d,w){if(!d.closest(".pin-stack")||d.dataset.dragging)return w;let k=d.getBoundingClientRect();return{x:k.left+(d.dataset.pointer==="right"?25:9),y:k.top+28}}function Q8(d,w,k){let _=null,j=!1,V=k;E.user&&(E.user.verified||w.comments[0]?.author.id===E.user.id)&&(d.style.cursor="grab"),d.addEventListener("pointerdown",$=>{$.button!==0||ye||!E.user||!(E.user.verified||w.comments[0]?.author.id===E.user.id)||(V={...k,...ag(d,k)},_={x:$.clientX,y:$.clientY},j=!1,d.setPointerCapture($.pointerId))}),d.addEventListener("pointermove",$=>{if(!_)return;let q=$.clientX-_.x,ee=$.clientY-_.y;!j&&Math.hypot(q,ee)<5||(j||(d.dataset.dragging="true",d.style.position="fixed",d.style.margin="0",jn=w.id,hs=!0,to(),N===w.id&&(Wt.stop(),N=null,eo=null,br())),j=!0,d.dataset.pointer=Yd({...V,x:V.x+q,y:V.y+ee},window.innerWidth),d.style.left=`${V.x+q}px`,d.style.top=`${V.y+ee}px`,$t={id:w.id,x:V.x+q,y:V.y+ee},St.delete(w.id),Tn())}),d.addEventListener("click",$=>{j&&($.preventDefault(),$.stopImmediatePropagation())},!0),d.addEventListener("pointerup",$=>{if(!_)return;let q=V.x+$.clientX-_.x,ee=V.y+$.clientY-_.y;if(_=null,jn=null,!j)return;$t={id:w.id,x:q,y:ee},Tn();let re=sg(q,ee);if(!re){$t=null,Tn(),Di="",Io();return}let X=v1(nh(re,u,e.anchorTarget),{x:q,y:ee},{x:q+k.width,y:ee+k.height},e.source);X.unstacked=!0,it(async()=>{try{$t=null,await B(Ue(w.id,se=>({...se,anchor:X})),async se=>{await E.request(`threads/${se(w.id)}`,"PATCH",{anchor:X})})}finally{$t=null,Tn(),Di="",Io()}})}),d.addEventListener("pointercancel",()=>{$t=null,Tn(),_=null,jn=null,Di="",Io()})}function sg(d,w){let k=ig(d,w);if(!rg(k))return null;let _=k.closest("button,a,input,textarea,select,[role=button],[role=link],[data-comment-anchor],h1,h2,h3,h4,h5,h6,p,li,figure,svg,canvas,img,video")??k,j=_.closest("button,a,[role=button],[role=link]");return rg(j)?j:_}function Cs(){let d=!H&&!!qh(),w=d?N:A&&!G&&!qh()&&P.querySelector(`.list [data-thread="${CSS.escape(pc)}"]`)&&pc,k=w&&fe.find(V=>V.id===w&&V.page===Vn()),_=k&&As(k.anchor),j=_&&_.attached&&(_.width&&_.height?{left:_.x,top:_.y,right:_.x+_.width,bottom:_.y+_.height}:_.component);if(Go.toggleAttribute("data-thread",!!j),jt.toggleAttribute("data-quiet",!!j&&d),jt.toggleAttribute("data-outlined",!!j&&d&&ng),j){let V=Pw(k.anchor);Gw(j,_.width&&_.height?null:V,Yt&&!!V&&u.contains(V)),d&&!ng&&(Go.style.opacity="0");return}if(!H&&!G||Mo||G&&G.width>0&&G.height>0){Go.style.opacity="0",!H&&!G&&(Bn=null,pr=null);return}if(G&&(Bn=Pw(G)),H&&pr&&(Bn=sg(pr.x,pr.y)),H&&Bn&&(Bn=nh(Bn,u,e.anchorTarget)),!Bn?.isConnected){Go.style.opacity="0";return}Gw(Bn.getBoundingClientRect(),Bn,Yt&&u.contains(Bn))}function Gw(d,w,k){Go.style.opacity=Xd(Go,d,w,k?u.getBoundingClientRect():void 0)?"1":"0"}function J8(){Md||(Md=requestAnimationFrame(()=>{Md=0,Cs()}))}function et(){if(D)return;if(Le.classList.toggle("design-active",te),Z&&!A){ii(window.innerWidth,window.innerHeight)?(Z=!1,yr()):Xt(!0);return}zi();let d=!!G&&!Z&&ii(window.innerWidth,window.innerHeight);Le.classList.toggle("mobile-composing",d),P.inert=b?!A||Z:v?!A:Z,(N||G||H||I||Z)&&to(!0),Eo.hidden=!H,Cs(),aw.replaceChildren(),Ln(),pe.inert=te,Io(),oo(),br();let w=P.querySelector(".panel");w&&(w.inert=te,w.setAttribute("aria-hidden",String(te)),w.hidden=te),te&&le?.mountPanel(P);let k=P.querySelector(".design-inspector__heading");k&&!k.dataset.drag&&(k.dataset.drag="",yw(k))}let Mo=null,xr=null;Eo.addEventListener("pointerdown",d=>{if(d.button!==0)return;d.preventDefault(),d.stopPropagation();let w=sg(d.clientX,d.clientY);w&&(Bn=w,pr=null,Go.style.opacity="0",Mo={x:d.clientX,y:d.clientY,element:w,pointerId:d.pointerId},Eo.setPointerCapture(d.pointerId),xr=M("div","selection"),lt.append(xr))}),Eo.addEventListener("pointermove",d=>{if(!Mo||!xr){pr={x:d.clientX,y:d.clientY},J8();return}Object.assign(xr.style,{left:`${Math.min(Mo.x,d.clientX)}px`,top:`${Math.min(Mo.y,d.clientY)}px`,width:`${Math.abs(Mo.x-d.clientX)}px`,height:`${Math.abs(Mo.y-d.clientY)}px`})});let Kw=!1;function lg(d,w,k=w,_=!1){if(Kw=_,to(),d=nh(d,u,e.anchorTarget),G=v1(d,w,k,e.source),Yt){let j=u.getBoundingClientRect(),V=$n*rc();G.pageX=(Math.min(w.x,k.x)-j.left)/V+u.scrollLeft,G.pageY=(Math.min(w.y,k.y)-j.top)/V+u.scrollTop}Bn=d,H=!1,N=null,Z=!1,eo=null,ft="",et(),ct.querySelector('[data-focus-key="body"]')?.focus({preventScroll:!0}),Tn()}Eo.addEventListener("pointerup",d=>{if(!Mo)return;let w=Mo;xr?.remove(),xr=null,Mo=null,lg(w.element,w,{x:d.clientX,y:d.clientY})}),Eo.addEventListener("pointerleave",()=>{Mo||G||(pr=null,Bn=null,Go.style.opacity="0")}),Eo.addEventListener("pointercancel",()=>{Mo=null,xr?.remove(),xr=null,pr=null,Bn=null,Go.style.opacity="0"});function Fo(){if(Td||D||document.hidden)return;let d=Vn();!G&&!N&&!H&&!pa&&(I||!fe.some(w=>w.page===d&&!w.resolved))||(Td=requestAnimationFrame(()=>{Td=0,Io(),Tn(),gr(),Cs()}))}document.addEventListener("scroll",d=>{hs=!0,to();let w=d.target;w===Le||!w||w instanceof Node&&w.getRootNode()===lt||!((w===document?document.scrollingElement:w)instanceof Element)||(jn||(Ih=!0,jt.dataset.scrolling="true",clearTimeout(Fh),Fh=window.setTimeout(()=>{D||(Di="",Io(!0),Ih=!1,delete jt.dataset.scrolling)},180)),Fo())},{capture:!0,passive:!0,signal:C.signal});for(let d of["focusin","focusout","click"])ct.addEventListener(d,()=>requestAnimationFrame(Tn),{signal:C.signal});window.visualViewport?.addEventListener("scroll",()=>{ii(window.innerWidth,window.innerHeight)&&(zi(),(Z||G||N)&&Fo())},{signal:C.signal}),window.visualViewport?.addEventListener("resize",()=>{ii(window.innerWidth,window.innerHeight)&&(zi(),Fo())},{signal:C.signal}),window.addEventListener("resize",()=>{V8(),zi(),b||Ln(),Fo()},{signal:C.signal}),ji(lt,"keydown",d=>{Sh=!0,queueMicrotask(()=>{Sh=!1});let w=d.composedPath()[0];if((Z||b&&A)&&d.key==="Tab"){let j=[...(Z?ct:lt).querySelectorAll("button:not(:disabled),input:not(:disabled):not([type=hidden]),select:not(:disabled),textarea:not(:disabled),summary,a[href],[tabindex]")].filter(q=>q.tabIndex>=0&&q.getClientRects().length>0&&!q.closest("[inert]")&&(Z||!b||!!q.closest(".panel,.toolbar"))),V=j[0],$=j.at(-1);d.shiftKey&&(lt.activeElement===V||!j.includes(lt.activeElement))?(d.preventDefault(),$?.focus()):!d.shiftKey&&(lt.activeElement===$||!j.includes(lt.activeElement))&&(d.preventDefault(),V?.focus())}let k=document.activeElement;for(;k?.shadowRoot?.activeElement;)k=k.shadowRoot.activeElement;let _=nf(w)||nf(k)||d.isComposing;if(d.key==="Escape"){H||G||N||Z?fi():A&&Xt(!1);return}if(!_){if(J&&Kl(d,o.restore)){d.preventDefault(),Lw();return}e.onboarding||(Kl(d,o.comment)?(d.preventDefault(),Ts(!R)):Kl(d,o.browse)?(d.preventDefault(),Ts(!1)):i&&Kl(d,o.design)?(d.preventDefault(),jh(!te)):Kl(d,o.comments)&&(d.preventDefault(),Xt(!A)))}},{signal:C.signal}),ji(lt,"pointerdown",d=>{let w=d.composedPath(),k=w.some(_=>_ instanceof Element&&_.getRootNode()===lt&&_.matches("button,input,textarea,summary,[role=menu],[role=listbox],.emoji-menu,.emoji-keyboard,.floating-notice"));d.button===0&&(N||G)&&!(G&&ii(window.innerWidth,window.innerHeight))&&!Z&&!w.includes(ct)&&!w.includes(pe)&&!w.includes(jt)&&!(H&&w.includes(Eo))&&!k&&(G&&Cn.trim()&&(W={anchor:G,text:Cn}),fi());for(let _ of lt.querySelectorAll(".comment-menu[open]"))d.composedPath().includes(_)||(_.open=!1)},{signal:C.signal});let Yw=new ResizeObserver(()=>{mr(),Fo()});Yw.observe(u);let Ls=0,Pd=new MutationObserver(d=>{if(d.some(w=>w.target===document.body)&&mr(),G||N||H||pa)return Fo();Ls||(Ls=window.setTimeout(()=>{Ls=0,Fo()},80))});Pd.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),ct.addEventListener("pointerdown",d=>{Z&&d.target===ct&&fi()});function Gd(){D||Vn()===iw||(iw=Vn(),W=null,N=null,G=null,et())}let Xw=()=>setTimeout(()=>(Gd(),Kd()));window.addEventListener("popstate",Xw,{signal:C.signal}),window.navigation?.addEventListener("navigatesuccess",Xw,{signal:C.signal});async function eL(d){if(!e.navigate||d.origin!==location.origin)return location.assign(d);try{await e.navigate(d)}catch{return location.assign(d)}Gd(),Kd()}let cg=null;async function Kd(){let d=new URL(location.href).searchParams.get("comment"),w=fe.find(_=>_.id===d);if(!w||cg===d)return;cg=d;for(let _=0;_<5e3&&(Vn()!==w.page||!Gl(w.anchor));_+=100)await new Promise(j=>setTimeout(j,100));cg=null;let k=new URL(location.href);D||k.searchParams.get("comment")!==d||(k.searchParams.delete("comment"),history.replaceState(history.state,"",k),Gd(),w.page===Vn()&&(A||Xt(!0),lc(w)))}function ug(){let d=new is(e);return d.token===E.token||E.transient&&!d.token?!1:(E.cancelReads(),E=d,Kt=!1,rn=null,He="Connecting",vo=Nn=wt=O=mn=!1,G=W=null,Cn=fr="",si=[],Po.clear(),oe.length=0,Ct=U=Ie=null,Ne++,clearTimeout(Te),fa(),et(),it(bc),!0)}window.addEventListener("storage",d=>{d.storageArea===localStorage&&d.key===E.sessionKey&&d.newValue!==E.token&&ug()},{signal:C.signal}),window.addEventListener("focus",()=>{ug()||di?.wake()},{signal:C.signal});let Iw=d=>d.target.closest?.(".list .thread-item")?.dataset.thread??"",dg=()=>{clearTimeout(og),og=window.setTimeout(()=>gc(),80)};for(let[d,w]of[["pointerover",k=>(mc=Iw(k))?gc():dg()],["pointerleave",()=>{mc="",dg()}],["focusin",k=>{hc=Iw(k),gc()}],["focusout",()=>{hc="",dg()}],["scroll",()=>{mc=hc="",gc()}]])P.addEventListener(d,w,{capture:!0,signal:C.signal});di=t2({interval:Math.max(2e3,e.pollInterval??4e3),enabled:()=>!D&&!document.hidden&&navigator.onLine!==!1&&!e.onboarding,active:()=>A||Z||H||!!G||!!N,read:async()=>(Gd(),Kt?Xo():bc())});for(let d of["online","offline"])window.addEventListener(d,()=>di?.wake(),{signal:C.signal});if(Le.addEventListener("click",()=>di?.wake(!1),{signal:C.signal}),Le.addEventListener("keydown",()=>di?.wake(!1),{signal:C.signal}),e.isolateEvents!==!1){Le.setAttribute("data-isolate",""),I2(Le,C.signal);for(let d of X2)Le.addEventListener(d,w=>ub(w,lt)&&w.stopPropagation(),{passive:!0,signal:C.signal});document.addEventListener("focusout",d=>d.relatedTarget===Le&&d.stopImmediatePropagation(),{signal:C.signal})}document.addEventListener("visibilitychange",()=>{document.hidden?(Pd.disconnect(),clearTimeout(Ls),Ls=0):(Pd.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),mr(),Fo()),(document.hidden||!ug())&&di?.wake()},{signal:C.signal});let Fw={destroy(){if(D)return;D=!0,di?.stop(),le?.destroy(),ms?.resetDesignPreviews(),E.cancelReads(),ic(),uc?.(),cancelAnimationFrame(Nh),clearTimeout(Ls),clearTimeout(Fh),clearTimeout(To),clearTimeout(Zh),fc.clear(),Wt.stop(),it(pn),Ae?.(),ec?.(!0);for(let[w,k]of Zl)k?.(),w.getAnimations().forEach(_=>_.cancel()),w.remove();Zl.clear(),ci?.stop(),hr?.stop(),sc(!0),C.abort(),clearTimeout(wd),clearTimeout(Ed),clearTimeout(bh),cancelAnimationFrame(Td),cancelAnimationFrame(Md),cancelAnimationFrame(Dh),to(),Yw.disconnect(),Pd.disconnect(),Th.disconnect(),uw.disconnect(),cancelAnimationFrame(Eh);let d=Yt?u.scrollTop*rc():window.scrollY/$n;mr(),(Yt||!v)&&(Vh(),window.scrollTo({top:d,behavior:"instant"})),zh.disconnect(),sw.unmount(),Le.remove(),J1.delete(document)},comment(d){let w=()=>{if(D||!d.isConnected)return;let k=d.getBoundingClientRect();!k.width||!k.height||lg(d,{x:k.left+k.width/2,y:k.top+k.height/2})};A&&!Od()?(Xt(!1),ci&&Ko?ci.finished.then(w):w()):w()},open(){D||(Lw(),Xt(!0))},close(){D||(fi(),Xt(!1))},async refresh(){await Xo()}};J1.set(document,{scope:a,controller:Fw}),no=!e.onboarding&&fw.get(),zi();let fg=e.onboarding?null:E.cached();xe||=fg!==null;let tL=no;if(no=!0,fg&&ge.replace(Oh(fg)),et(),v&&(P.style.transition="none",_i(),P.offsetWidth,P.style.transition=""),no=tL,no&&(Xt(!0),no=!1,!It()))for(let d of[Le,Yt?u:null])d?.animate([{opacity:0},{opacity:1}],{duration:200,easing:"cubic-bezier(0.22, 1, 0.36, 1)"});Kd();async function bc(){let d=E,w=d.token,k;try{await d.restore()}catch{}if(D||d!==E)return;w!==d.token&&fa(),Ln(),Z&&br();let _=Xo();_.catch(()=>{});try{k=await d.request("config")}catch(V){if(D||d!==E||V instanceof DOMException&&V.name==="AbortError")return;let $=g1(V),q=rn?.detail!==$.detail;throw rn=$,He="Offline",q&&et(),V}if(D||d!==E)return;Kt=!0,vo=!!k.google,Nn=k.github,wt=k.guests,O=k.guestResolve,mn=!!k.private,et();let j=await _;if(!(D||d!==E))return Kd(),et(),j}return e.onboarding?.inProject||it(()=>bc().finally(()=>di?.wake(!1))),Fw}var sa=new URL(location.href),z8=sa.searchParams.get("project")||"_komo",D8=new URLSearchParams(sa.hash.slice(1)).get("invite")||void 0,hN=D8?void 0:sa.hash.slice(1)||void 0;history.replaceState(null,"",sa.pathname+sa.search);_8({endpoint:location.origin,project:z8,repo:z8,branch:"shared",pageRoot:document.querySelector("main"),onboarding:{code:sa.searchParams.get("code")||void 0,workspace:sa.searchParams.get("workspace")||void 0,site:sa.searchParams.get("site")||void 0,claimKey:hN,invite:D8}});
2971
+ `):oe.push({anchor:d.anchor,text:k.body})});else if(G){let _=G,j=si,V=Cn,$=fr,q={id:`pending-${crypto.randomUUID()}`,page:Vn(),anchor:_,tags:j,resolved:!1,resolvedBy:null,createdAt:w,updatedAt:w,comments:[k]};N=q.id,G=null,Cn=fr="",si=[],await B(ee=>[...ee,q],async()=>{let ee=await E.request("threads","POST",{page:q.page,anchor:_,body:k.body,...j.length?{tags:j}:{}}),re=ee.commentId??(await E.list()).find(X=>X.id===ee.id)?.comments[0]?.id;return{[q.id]:ee.id,...re?{[k.id]:re}:{}}},()=>{G?oe.push({anchor:_,text:k.body}):(N=null,G=_,Cn=V,fr=$,si=j)}),R&&!G&&!Z&&N===ge.id(q.id)&&(Od()||(N=null,A&&Xt(!1)),H=!0,et())}}}async function Uw(){let d=tc;tc=null,d&&await d()}let fc=new Map;function br(){tw?.then(({resetDesignPreviews:Y})=>Y(new Set([...Z?[]:fe.find(ne=>ne.id===N)?.comments.map(ne=>ne.id)??[],...an.hidden?[]:[yh],...G?["draft"]:[]])));let d=Ae;Ae=void 0,ec?.(!0),ec=void 0;let w=lt.activeElement,k=w?.dataset.focusKey,_=k?w?.selectionStart:null,j=!!w?.matches(":focus-visible"),V=ct.querySelector(".messages")?.scrollTop??0,$=ct.querySelector(".account-dialog")?.scrollTop??0,q=Z?"account":G?"draft":N;q!==me&&(Me=null);let ee=ct.firstElementChild,re=qh(),X=ct.classList.contains("thread-pane"),se=me!==q,bt=ee?.getBoundingClientRect(),mt=new Map([...ee?.querySelectorAll("[data-comment]")??[]].map(Y=>[Y.dataset.comment,Y.querySelector(".message-reaction")]));if(ee&&se&&!It()&&!(X&&(re||!ct.isConnected))){let Y=getComputedStyle(ee),ne={opacity:Y.opacity,transform:Y.transform};ee.getAnimations().forEach(Fe=>Fe.cancel());let de={duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"},be=me==="account"?M("div","account-layer"):X?M("div","thread-pane"):ee;be!==ee&&be.append(ee),ee.animate([{transform:ne.transform},{transform:X?"translateX(24px)":"translateY(4px) scale(.99)"}],de);let Be=be.animate([{opacity:ne.opacity},{opacity:0}],de);be.inert=!0,be.setAttribute("aria-hidden","true"),ee.style.pointerEvents="none",(X?ct.parentElement:be!==ee&&v?P:lt).append(be),Zl.set(be,d),d=void 0,Be.finished.catch(()=>{}).finally(()=>{be.remove(),Zl.get(be)?.(),Zl.delete(be)})}d?.(),ct.replaceChildren(),U8(re);let Lt=P.querySelector(".panel");if(Lt&&X!==!!re){if(!It())for(let ne of Lt.querySelectorAll(":scope > :not(.thread-pane)")){let de=[{visibility:"visible",opacity:1,transform:"none"},{visibility:"visible",opacity:0,transform:"translateX(-24px)"}];ne.animate(re?de:de.reverse(),{duration:250,easing:"cubic-bezier(.22,1,.36,1)"})}let Y=`[data-thread="${CSS.escape(me??"")}"] .thread-card`;(re?gh:!G&&j&&(Lt.contains(w)||!w.isConnected))&&queueMicrotask(()=>(re?ct:Lt).querySelector(re?".thread-back":Y)?.focus({preventScroll:!0})),gh=!1}if(me=q,ct.classList.toggle("account-layer",Z),!G&&!N&&!Z){gr();return}let ce=M("section",Z?"dialog account-dialog":"dialog");Z&&ce.setAttribute("aria-modal","false"),ce.setAttribute("role","dialog"),ce.setAttribute("aria-label",Z?"Reviewer account":G?"New comment":"Comment thread");let je=M("div","dialog-head row between"),Le=M("div","row"),qe=fe.find(Y=>Y.id===N)??null,F;if(qe&&!Z){let Y=(Fe,kt)=>({label:Fe,icon:Fe==="Copy link"?"link":Fe==="Copy selector"?"code":"comment",onSelect:()=>it(async()=>{await navigator.clipboard.writeText(kt()),ko("Copied")})}),ne=qe.anchor.source,de=ne?e.sourceUrl?.(ne,e.branch)??`https://github.com/${e.repo}/blob/${encodeURIComponent(e.branch)}/${ne.split("/").map(encodeURIComponent).join("/")}`:"",be=Wm("Comment actions",[...jw(qe.comments[0],qe),...de&&/^(https?:|vscode:|cursor:)/.test(de)?[{label:"Open source",icon:"code",onSelect:()=>window.open(de,"_blank","noopener,noreferrer")}]:[],Y("Copy link",()=>{let Fe=new URL(qe.page,location.origin);return Fe.searchParams.set("comment",qe.id),Fe.href}),Y("Copy feedback",()=>[`Repository: ${e.repo}`,`Branch: ${e.branch}`,`Page: ${new URL(qe.page,location.origin).href}`,`Target: ${qe.anchor.selector||"Page position"}`,...qe.anchor.source?[`Source: ${qe.anchor.source}`]:[],...qe.anchor.text?[`Element text: ${qe.anchor.text}`]:[],"",...qe.comments.map(Fe=>`${Fe.author.name}: ${Fe.body}`)].join(`
2972
+ `)),Y("Copy selector",()=>qe.anchor.selector)]);Le.append(be),r&&(F=ae(qe.tags?.length?"Manage tags":"Add tag",()=>{},"icon thread-tag-action","tag"),Le.append(F));let Be=ae(qe.resolved?"Reopen comment":"Resolve comment",()=>Jh(qe,Hh(qe.anchor)),"icon","check");Be.disabled=!Vd(),Le.append(Be)}if(Le.append(re?ae("Close sidebar",()=>{fi(),Xt(!1)},"icon","close"):ae(Z?"Close account":"Close comment",fi,"icon","close")),re&&je.append(ae("Back to comments",fi,"icon thread-back","chevron"),Hw(M("strong","thread-title"),qe?.comments[0]?.body??"")),je.append(Le),qe||Z||re?ce.append(je):ce.append(ae("Close comment",fi,"draft-close icon","close")),Z){let Y=M("form","account");if(E.user){U??={name:E.user.name,avatarUrl:E.user.avatarUrl??"",accentColor:E.user.accentColor??bg};let ne=U,de=vr({...E.user,...ne}),be=M("div","account-summary"),Be=M("span","account-status");E.user.verified?(Be.append(document.createTextNode("Connected with ")),E.user.id.startsWith("google:")&&Be.append(pb()),Be.append(document.createTextNode(E.user.id.startsWith("google:")?"Google":"GitHub"))):Be.textContent="Guest account";let Fe=ae("Update profile photo",()=>_e.click(),"account-avatar-button");Fe.replaceChildren(de),be.append(Fe,M("h2","","Your profile"),Be),Y.append(be);let kt=M("label","account-name-label","Display name"),Ze=M("input");Ze.value=ne.name,Ze.name="name",Ze.autocomplete="name",Ze.required=!0,Ze.maxLength=60,Ze.dataset.focusKey="profile-name",Ze.addEventListener("input",()=>{ne.name=Ze.value,pt(ne)}),Ze.addEventListener("blur",()=>{pt(ne,!0)}),kt.append(Ze);let _e=M("input");_e.type="file",_e.accept="image/png,image/jpeg,image/webp",_e.hidden=!0,_e.setAttribute("aria-label","Choose profile photo"),_e.addEventListener("change",()=>it(async()=>{let ut=_e.files?.[0];if(!ut)return;if(ut.size>10*1024*1024)throw new Error("Choose a photo under 10 MB.");let tt=await createImageBitmap(ut),Un=document.createElement("canvas");Un.width=Un.height=128;let Ri=Un.getContext("2d"),Mt=Math.min(tt.width,tt.height);Ri.drawImage(tt,(tt.width-Mt)/2,(tt.height-Mt)/2,Mt,Mt,0,0,128,128),tt.close();let qn=.8;do ne.avatarUrl=Un.toDataURL("image/jpeg",qn),qn-=.15;while(ne.avatarUrl.length>12e3&&qn>.1);if(ne.avatarUrl.length>12e3)throw new Error("Choose a smaller photo.");pt(ne,!0),br()})),be.append(_e);let sn=UM(ne.accentColor,ut=>{ne.accentColor=ut,xc(de,ut),pt(ne)});if(Ae=sn.destroy,Y.append(kt,sn.element),e.onboarding){let ut=e.onboarding;Y.append(Ew(M("section","onboarding-panel"),Promise.resolve().then(()=>(lh(),sh)).then(({onboardingPanel:tt})=>tt(E,ut))))}else Y.append(H8()),x&&Y.append(O8()),Y.append(Tw());if(E.user?.verified&&!e.onboarding?.code&&!e.onboarding?.claimKey&&!e.onboarding?.invite){let ut=M("div");Y.append(ut),Promise.resolve().then(()=>(lh(),sh)).then(({projectManagement:tt})=>{ut.isConnected&&ut.replaceWith(tt(E,e.onboarding?.workspace,Un=>{if(Un)N=null,ge.replace([],ge.revision),Y.querySelector(".account-usage")?.remove();else{let Ri=e.onboarding?.workspace?`usage?workspace=${encodeURIComponent(e.onboarding.workspace)}`:"usage";Y.querySelector(".account-usage")?.replaceWith(Tw(Ri)),Xo().catch(()=>{})}}))})}Y.addEventListener("submit",ut=>{ut.preventDefault(),pt(ne,!0)});let rt=M("div","account-session");rt.append(ae("Sign out",()=>it(async()=>{if(ge.busy||ye){ko("Wait for your changes to save.");return}clearTimeout(Te),Ct=null;let ut=E.logout();fa(),U=null,Ie=null,et();try{await ut}finally{fa(),it(Xo),et()}}),"secondary")),Y.append(rt),!E.user.verified&&vo&&Y.append(vt()),!E.user.verified&&Nn&&Y.append(ae("Sign in with GitHub",()=>it(()=>eg()),"primary"))}else{if(Y.append(M("h2","",e.onboarding?"Set up inline feedback":"Leave comments")),e.onboarding?.inProject){Y.append(M("p","","Add the sites where you want to leave feedback. One site per line."));let ne=M("label","account-name-label","Production and preview sites"),de=M("textarea");de.rows=2,de.placeholder="https://your-site.com",de.value=ps,de.dataset.focusKey="setup-sites",de.addEventListener("input",()=>{ps=de.value}),ne.append(de),Y.append(ne);let be=ae("Connect",()=>it(async()=>{if(!Jn){Jn=!0,be.disabled=!0;try{let Be=await e2(e,C.signal,Jw(ps,location.origin));if(D)return;Ww(e,Be),e={...e,project:Be.project,repo:Be.repo,onboarding:void 0},E=new is(e),E.save(Be),Z=!1,U=null,me=null,await bc(),et(),ko("Inline feedback is connected. Select an element to comment.")}finally{Jn=!1,D||et()}}}),"primary");be.disabled=Jn,Y.append(be)}if(wt){let ne=M("label","account-name-label","Your name"),de=M("input");de.name="name",de.autocomplete="name",de.placeholder="Your name",de.required=!0,de.maxLength=60,de.value=ua,de.dataset.focusKey="account-name",de.addEventListener("input",()=>ua=de.value),ne.append(de),Y.append(ne);let be=ae("Continue",()=>{},"primary");be.type="submit",be.disabled=ye,ye&&be.setAttribute("aria-busy","true"),Y.append(be)}wt&&(vo||Nn)&&Y.append(M("div","account-divider","or")),vo&&Y.append(vt()),Nn&&Y.append(ae("Continue with GitHub",()=>it(()=>eg()),"secondary")),Y.addEventListener("submit",ne=>{ne.preventDefault(),it(async()=>{await B8(async()=>{await E.guest(ua),Z=!1}),await Uw()})})}ce.append(Y)}else if(G)ce.append(Vw(null));else if(qe){let Y=M("div","messages");for(let de of qe.comments)Y.append(X8(de,qe));ce.append(Y);let ne=()=>Y.dataset.fade=`${Y.scrollTop>2?"top":""} ${Y.scrollTop+Y.clientHeight<Y.scrollHeight-2?"bottom":""}`;if(Y.addEventListener("scroll",ne,{passive:!0}),requestAnimationFrame(ne),r){let de=Nw(qe.tags??[],Fe=>Bw(qe,{tag:Fe}),Fe=>Bw(qe,{untag:Fe}),F);de.classList.add("thread-tags");let be=Y.querySelector(".message"),Be=be?.querySelector(".message-text");Be?Be.after(de):be?.append(de)}ce.append(Vw(qe))}else ce.append(M("div","empty","This comment is no longer available."));if(ct.append(ce),Z&&se&&!It()&&(ct.animate([{opacity:0},{opacity:1}],{duration:250,easing:"ease-out"}),ce.animate([{opacity:0,transform:"translateY(8px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"})),!Z&&!re){let Y=M("div","comment-drag-handle");Y.setAttribute("aria-hidden","true"),ce.prepend(Y),Op(ce,Y,ne=>{me&&St.set(me,ne),Tn()},C.signal,()=>Wt.stop())}if(Tn(),re){se&&(Ud=!1,qd(!0,1200));let Y=ne=>{Ud=ne,qd(ne)};for(let ne of[je,ce.querySelector(".messages")])ne?.addEventListener("pointermove",()=>Ud||Y(!0)),ne?.addEventListener("pointerleave",()=>Y(!1)),ne?.addEventListener("focusin",de=>{de.target.matches(":focus-visible")&&Y(!0)}),ne?.addEventListener("focusout",()=>Y(!1));ce.addEventListener("click",()=>qd(!1,600)),ce.addEventListener("pointerover",ne=>ne.target.closest(".design-card-target")?.removeAttribute("title"))}if(!Z&&!It()){let Y=ce.getBoundingClientRect(),ne=bs??(se?null:bt);re?se&&ce.animate([{opacity:0,transform:X?"none":"translateX(24px)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}):ne&&(bs||Math.abs(ne.height-Y.height)>1||Math.abs(ne.width-Y.width)>1)?ce.animate([{left:`${ne.left}px`,top:`${ne.top}px`,width:`${ne.width}px`,height:`${ne.height}px`,opacity:1},{left:`${Y.left}px`,top:`${Y.top}px`,width:`${Y.width}px`,height:`${Y.height}px`,opacity:1}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}):se&&ce.animate([{opacity:0,transform:"translateY(6px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"});for(let de of ce.querySelectorAll("[data-comment]")){let be=de.querySelector(".message-reaction"),Be=mt.get(de.dataset.comment),Fe=de.dataset.comment;be&&Be&&Be.dataset.reactions!==be.dataset.reactions&&fc.set(Fe,{from:Be,to:be.dataset.reactions,started:performance.now()});let kt=fc.get(Fe),Ze=kt?performance.now()-kt.started:470;if(be&&kt&&Ze<470&&kt.to===be.dataset.reactions){let _e=M("span","reaction-leaving");_e.setAttribute("aria-hidden","true");for(let ut of kt.from.children){if(ut.classList.contains("reaction-leaving"))continue;let tt=ut.cloneNode(!0);_e.append(tt)}let sn=[...be.children];be.append(_e);let rt=_e.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"scale(.2, .35)"}],{duration:110,easing:"ease-in",fill:"forwards"});rt.currentTime=Ze,rt.finished.then(()=>_e.remove()).catch(()=>_e.remove());for(let ut of sn){let tt=ut.animate([{opacity:0,transform:"scale(.25, .4)",offset:0},{opacity:1,transform:"scale(1.16, .92)",offset:.38},{opacity:1,transform:"scale(.95, 1.07)",offset:.6},{opacity:1,transform:"scale(1.025, .985)",offset:.8},{opacity:1,transform:"scale(1)",offset:1}],{duration:380,delay:90,easing:"ease-in-out",fill:"backwards"});tt.currentTime=Ze,tt.finished.then(()=>{fc.get(Fe)===kt&&fc.delete(Fe)}).catch(()=>{})}}}}bs=null;let he=ce.querySelector(".messages");if(he&&(he.scrollTop=V),Z&&!se&&(ce.scrollTop=$),k){let Y=ce.querySelector(`[data-focus-key="${k}"]`);Y&&(Y.focus({preventScroll:!0}),_!=null&&Y.setSelectionRange(_,_))}}let F8,$d=0,ng=!1,Ud=!1,qw=0,pc="",mc="",hc="",og=0;function gc(d=mc||hc){if(clearTimeout(og),d!==pc){pc=d;for(let w of jt.querySelectorAll(".pin"))w.classList.toggle("hot",w.dataset.thread===d);Cs()}}function qd(d,w=0){clearTimeout(qw),ng=d,Cs(),w&&(qw=window.setTimeout(()=>qd(Ud),w))}function Tn(){let d=Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight),w=ct.firstElementChild;if(!w||Z)return;if(ct.classList.contains("thread-pane")){let ce=$d;$d=performance.now()+500;let je=()=>{Cs(),performance.now()<$d?requestAnimationFrame(je):$d=0};ce||je();return}if(b&&w.querySelector("textarea:focus")){let je=window.visualViewport?.offsetTop??0;w.style.maxHeight=`${Math.max(0,d-24)}px`;let Le=c3(window.innerWidth,d,je,w.offsetWidth,w.offsetHeight);Wt.place(me,w,Le.x,Le.y,!0),w.style.bottom="auto",w.style.transformOrigin="bottom center",gr();return}let k=Yt?u.getBoundingClientRect().bottom-12:d-92;w.style.maxHeight=`${k-12}px`,(F8??=new ResizeObserver(()=>Tn())).observe(w);let _=fe.find(ce=>ce.id===N),j=G??_?.anchor,V,$=$t?.id===N?$t:j?(()=>{let ce=As(j);if(!ce.attached)return Me===me?!1:null;Me=me,V=ce.width>16&&ce.height>16?{left:ce.x,top:ce.y,right:ce.x+ce.width,bottom:ce.y+ce.height}:(G?Kw:Wl.test(_?.comments[0]?.body??""))?ce.component:void 0;let je=N&&jt.querySelector(`[data-thread="${CSS.escape(N)}"]`);return je?ag(je,ce):ce})():null;if($===!1)return G&&Cn.trim()&&(W={anchor:G,text:Cn}),fi();let q=$t?.id===N,ee=()=>{w.style.transformOrigin=!$||$.x<w.offsetLeft+w.offsetWidth/2?"top left":"top right"},re=!q&&me&&St.get(me);if(re){let ce=or(re,w.offsetWidth,w.offsetHeight,qt.clientWidth,d);Wt.place(me,w,ce.x,ce.y,q),ee(),gr();return}let X=(window.innerWidth-354)/2,se=d-450;$&&(X=$.x+20,se=$.y-28);let bt=A&&!b?396:12,mt=w.offsetWidth,Lt=w.offsetHeight;if($&&X+mt>window.innerWidth-bt&&(X=$.x-mt-20),V&&!b&&!q){let ce=k-V.bottom-14,je=V.top-26;if(V.right+14+mt<=window.innerWidth-bt)[X,se]=[V.right+14,V.top];else if(V.left-14-mt>=12)[X,se]=[V.left-14-mt,V.top];else if(Math.max(ce,je)>=Math.min(Lt,200)){let Le=ce>=Lt||ce>=je?ce:je;w.style.maxHeight=`${Le}px`,[X,se]=[V.left,Le===ce?V.bottom+14:V.top-14-Math.min(Lt,Le)]}}Wt.place(me,w,Math.max(12,Math.min(X,window.innerWidth-w.offsetWidth-bt)),Math.max(12,Math.min(se,k-w.offsetHeight)),q),ee(),gr()}function yr(){clearTimeout(To),U=null,H=!1;let d=b;d&&!A&&Xt(!0),To=0,!(D||d&&!A)&&(Z=!0,et(),Z8())}function Z8(){queueMicrotask(()=>{if(!Z)return;let d=b,w=d?ct.querySelector(".account-dialog"):ct.querySelector("input,button");d&&w&&(w.tabIndex=-1),w?.focus({preventScroll:!0})})}let Pw=Gl,As=R3;function ig(d,w){return document.elementsFromPoint(d,w).find(k=>k!==Ce&&!Ce.contains(k))??null}function rg(d){return!!d&&d!==u&&d!==document.body&&(e.pickRoots?[u,...e.pickRoots()]:[document.body]).some(w=>w.contains(d))}function W8(){return le?Promise.resolve(le):(Oe||(Oe=Promise.resolve().then(()=>(L8(),C8)).then(({createDesignMode:d})=>{let w=d({root:lt,panelRoot:P,host:Ce,exitKey:o.design?.label,design:e.design,flip(){if(!v||!A||h||So)return;let k=P.getBoundingClientRect();mw({x:qt.clientWidth-k.right,y:k.top}),m=!0,P.animate([{transform:`translateX(${k.left-P.getBoundingClientRect().left}px)`},{}],{duration:320,easing:"cubic-bezier(.22,1,.36,1)"})},targetAt(k,_){let j=ig(k,_);return rg(j)?j:null},onComment(k,_){Re=!1,A&&!Od()&&Xt(!1),jh(!1),Cn="",fr=_??"",si=[];let j=k.getBoundingClientRect(),V={x:j.left+j.width/2,y:j.top+j.height/2};lg(k,V,V,!0)},onExit(){te=!1,Es(),Ln(),kw()}});return D?(w.destroy(),null):(le=w,w.setActive(te),w)}).catch(()=>(te=!1,Es(),Ln(),null)).finally(()=>{Oe=null})),Oe)}function ag(d,w){if(!d.closest(".pin-stack")||d.dataset.dragging)return w;let k=d.getBoundingClientRect();return{x:k.left+(d.dataset.pointer==="right"?25:9),y:k.top+28}}function Q8(d,w,k){let _=null,j=!1,V=k;E.user&&(E.user.verified||w.comments[0]?.author.id===E.user.id)&&(d.style.cursor="grab"),d.addEventListener("pointerdown",$=>{$.button!==0||ye||!E.user||!(E.user.verified||w.comments[0]?.author.id===E.user.id)||(V={...k,...ag(d,k)},_={x:$.clientX,y:$.clientY},j=!1,d.setPointerCapture($.pointerId))}),d.addEventListener("pointermove",$=>{if(!_)return;let q=$.clientX-_.x,ee=$.clientY-_.y;!j&&Math.hypot(q,ee)<5||(j||(d.dataset.dragging="true",d.style.position="fixed",d.style.margin="0",jn=w.id,hs=!0,to(),N===w.id&&(Wt.stop(),N=null,eo=null,br())),j=!0,d.dataset.pointer=Yd({...V,x:V.x+q,y:V.y+ee},window.innerWidth),d.style.left=`${V.x+q}px`,d.style.top=`${V.y+ee}px`,$t={id:w.id,x:V.x+q,y:V.y+ee},St.delete(w.id),Tn())}),d.addEventListener("click",$=>{j&&($.preventDefault(),$.stopImmediatePropagation())},!0),d.addEventListener("pointerup",$=>{if(!_)return;let q=V.x+$.clientX-_.x,ee=V.y+$.clientY-_.y;if(_=null,jn=null,!j)return;$t={id:w.id,x:q,y:ee},Tn();let re=sg(q,ee);if(!re){$t=null,Tn(),Di="",Io();return}let X=v1(nh(re,u,e.anchorTarget),{x:q,y:ee},{x:q+k.width,y:ee+k.height},e.source);X.unstacked=!0,it(async()=>{try{$t=null,await B(Ue(w.id,se=>({...se,anchor:X})),async se=>{await E.request(`threads/${se(w.id)}`,"PATCH",{anchor:X})})}finally{$t=null,Tn(),Di="",Io()}})}),d.addEventListener("pointercancel",()=>{$t=null,Tn(),_=null,jn=null,Di="",Io()})}function sg(d,w){let k=ig(d,w);if(!rg(k))return null;let _=k.closest("button,a,input,textarea,select,[role=button],[role=link],[data-comment-anchor],h1,h2,h3,h4,h5,h6,p,li,figure,svg,canvas,img,video")??k,j=_.closest("button,a,[role=button],[role=link]");return rg(j)?j:_}function Cs(){let d=!H&&!!qh(),w=d?N:A&&!G&&!qh()&&P.querySelector(`.list [data-thread="${CSS.escape(pc)}"]`)&&pc,k=w&&fe.find(V=>V.id===w&&V.page===Vn()),_=k&&As(k.anchor),j=_&&_.attached&&(_.width&&_.height?{left:_.x,top:_.y,right:_.x+_.width,bottom:_.y+_.height}:_.component);if(Go.toggleAttribute("data-thread",!!j),jt.toggleAttribute("data-quiet",!!j&&d),jt.toggleAttribute("data-outlined",!!j&&d&&ng),j){let V=Pw(k.anchor);Gw(j,_.width&&_.height?null:V,Yt&&!!V&&u.contains(V)),d&&!ng&&(Go.style.opacity="0");return}if(!H&&!G||Mo||G&&G.width>0&&G.height>0){Go.style.opacity="0",!H&&!G&&(Bn=null,pr=null);return}if(G&&(Bn=Pw(G)),H&&pr&&(Bn=sg(pr.x,pr.y)),H&&Bn&&(Bn=nh(Bn,u,e.anchorTarget)),!Bn?.isConnected){Go.style.opacity="0";return}Gw(Bn.getBoundingClientRect(),Bn,Yt&&u.contains(Bn))}function Gw(d,w,k){Go.style.opacity=Xd(Go,d,w,k?u.getBoundingClientRect():void 0)?"1":"0"}function J8(){Md||(Md=requestAnimationFrame(()=>{Md=0,Cs()}))}function et(){if(D)return;if(Ce.classList.toggle("design-active",te),Z&&!A){ii(window.innerWidth,window.innerHeight)?(Z=!1,yr()):Xt(!0);return}zi();let d=!!G&&!Z&&ii(window.innerWidth,window.innerHeight);Ce.classList.toggle("mobile-composing",d),P.inert=b?!A||Z:v?!A:Z,(N||G||H||I||Z)&&to(!0),Eo.hidden=!H,Cs(),aw.replaceChildren(),Ln(),pe.inert=te,Io(),oo(),br();let w=P.querySelector(".panel");w&&(w.inert=te,w.setAttribute("aria-hidden",String(te)),w.hidden=te),te&&le?.mountPanel(P);let k=P.querySelector(".design-inspector__heading");k&&!k.dataset.drag&&(k.dataset.drag="",yw(k))}let Mo=null,xr=null;Eo.addEventListener("pointerdown",d=>{if(d.button!==0)return;d.preventDefault(),d.stopPropagation();let w=sg(d.clientX,d.clientY);w&&(Bn=w,pr=null,Go.style.opacity="0",Mo={x:d.clientX,y:d.clientY,element:w,pointerId:d.pointerId},Eo.setPointerCapture(d.pointerId),xr=M("div","selection"),lt.append(xr))}),Eo.addEventListener("pointermove",d=>{if(!Mo||!xr){pr={x:d.clientX,y:d.clientY},J8();return}Object.assign(xr.style,{left:`${Math.min(Mo.x,d.clientX)}px`,top:`${Math.min(Mo.y,d.clientY)}px`,width:`${Math.abs(Mo.x-d.clientX)}px`,height:`${Math.abs(Mo.y-d.clientY)}px`})});let Kw=!1;function lg(d,w,k=w,_=!1){if(Kw=_,to(),d=nh(d,u,e.anchorTarget),G=v1(d,w,k,e.source),Yt){let j=u.getBoundingClientRect(),V=$n*rc();G.pageX=(Math.min(w.x,k.x)-j.left)/V+u.scrollLeft,G.pageY=(Math.min(w.y,k.y)-j.top)/V+u.scrollTop}Bn=d,H=!1,N=null,Z=!1,eo=null,ft="",et(),ct.querySelector('[data-focus-key="body"]')?.focus({preventScroll:!0}),Tn()}Eo.addEventListener("pointerup",d=>{if(!Mo)return;let w=Mo;xr?.remove(),xr=null,Mo=null,lg(w.element,w,{x:d.clientX,y:d.clientY})}),Eo.addEventListener("pointerleave",()=>{Mo||G||(pr=null,Bn=null,Go.style.opacity="0")}),Eo.addEventListener("pointercancel",()=>{Mo=null,xr?.remove(),xr=null,pr=null,Bn=null,Go.style.opacity="0"});function Fo(){if(Td||D||document.hidden)return;let d=Vn();!G&&!N&&!H&&!pa&&(I||!fe.some(w=>w.page===d&&!w.resolved))||(Td=requestAnimationFrame(()=>{Td=0,Io(),Tn(),gr(),Cs()}))}document.addEventListener("scroll",d=>{hs=!0,to();let w=d.target;w===Ce||!w||w instanceof Node&&w.getRootNode()===lt||!((w===document?document.scrollingElement:w)instanceof Element)||(jn||(Ih=!0,jt.dataset.scrolling="true",clearTimeout(Fh),Fh=window.setTimeout(()=>{D||(Di="",Io(!0),Ih=!1,delete jt.dataset.scrolling)},180)),Fo())},{capture:!0,passive:!0,signal:C.signal});for(let d of["focusin","focusout","click"])ct.addEventListener(d,()=>requestAnimationFrame(Tn),{signal:C.signal});window.visualViewport?.addEventListener("scroll",()=>{ii(window.innerWidth,window.innerHeight)&&(zi(),(Z||G||N)&&Fo())},{signal:C.signal}),window.visualViewport?.addEventListener("resize",()=>{ii(window.innerWidth,window.innerHeight)&&(zi(),Fo())},{signal:C.signal}),window.addEventListener("resize",()=>{V8(),zi(),b||Ln(),Fo()},{signal:C.signal}),ji(lt,"keydown",d=>{Sh=!0,queueMicrotask(()=>{Sh=!1});let w=d.composedPath()[0];if((Z||b&&A)&&d.key==="Tab"){let j=[...(Z?ct:lt).querySelectorAll("button:not(:disabled),input:not(:disabled):not([type=hidden]),select:not(:disabled),textarea:not(:disabled),summary,a[href],[tabindex]")].filter(q=>q.tabIndex>=0&&q.getClientRects().length>0&&!q.closest("[inert]")&&(Z||!b||!!q.closest(".panel,.toolbar"))),V=j[0],$=j.at(-1);d.shiftKey&&(lt.activeElement===V||!j.includes(lt.activeElement))?(d.preventDefault(),$?.focus()):!d.shiftKey&&(lt.activeElement===$||!j.includes(lt.activeElement))&&(d.preventDefault(),V?.focus())}let k=document.activeElement;for(;k?.shadowRoot?.activeElement;)k=k.shadowRoot.activeElement;let _=nf(w)||nf(k)||d.isComposing;if(d.key==="Escape"){if(d.defaultPrevented&&!d.composedPath().includes(Ce))return;H||G||N||Z?(d.preventDefault(),fi()):A&&(d.preventDefault(),Xt(!1));return}if(!_){if(J&&Kl(d,o.restore)){d.preventDefault(),Lw();return}e.onboarding||(Kl(d,o.comment)?(d.preventDefault(),Ts(!R)):Kl(d,o.browse)?(d.preventDefault(),Ts(!1)):i&&Kl(d,o.design)?(d.preventDefault(),jh(!te)):Kl(d,o.comments)&&(d.preventDefault(),Xt(!A)))}},{signal:C.signal}),ji(lt,"pointerdown",d=>{let w=d.composedPath(),k=w.some(_=>_ instanceof Element&&_.getRootNode()===lt&&_.matches("button,input,textarea,summary,[role=menu],[role=listbox],.emoji-menu,.emoji-keyboard,.floating-notice"));d.button===0&&(N||G)&&!(G&&ii(window.innerWidth,window.innerHeight))&&!Z&&!w.includes(ct)&&!w.includes(pe)&&!w.includes(jt)&&!(H&&w.includes(Eo))&&!k&&(G&&Cn.trim()&&(W={anchor:G,text:Cn}),fi());for(let _ of lt.querySelectorAll(".comment-menu[open]"))d.composedPath().includes(_)||(_.open=!1)},{signal:C.signal});let Yw=new ResizeObserver(()=>{mr(),Fo()});Yw.observe(u);let Ls=0,Pd=new MutationObserver(d=>{if(d.some(w=>w.target===document.body)&&mr(),G||N||H||pa)return Fo();Ls||(Ls=window.setTimeout(()=>{Ls=0,Fo()},80))});Pd.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),ct.addEventListener("pointerdown",d=>{Z&&d.target===ct&&fi()});function Gd(){D||Vn()===iw||(iw=Vn(),W=null,N=null,G=null,et())}let Xw=()=>setTimeout(()=>(Gd(),Kd()));window.addEventListener("popstate",Xw,{signal:C.signal}),window.navigation?.addEventListener("navigatesuccess",Xw,{signal:C.signal});async function eL(d){if(!e.navigate||d.origin!==location.origin)return location.assign(d);try{await e.navigate(d)}catch{return location.assign(d)}Gd(),Kd()}let cg=null;async function Kd(){let d=new URL(location.href).searchParams.get("comment"),w=fe.find(_=>_.id===d);if(!w||cg===d)return;cg=d;for(let _=0;_<5e3&&(Vn()!==w.page||!Gl(w.anchor));_+=100)await new Promise(j=>setTimeout(j,100));cg=null;let k=new URL(location.href);D||k.searchParams.get("comment")!==d||(k.searchParams.delete("comment"),history.replaceState(history.state,"",k),Gd(),w.page===Vn()&&(A||Xt(!0),lc(w)))}function ug(){let d=new is(e);return d.token===E.token||E.transient&&!d.token?!1:(E.cancelReads(),E=d,Kt=!1,rn=null,He="Connecting",vo=Nn=wt=O=mn=!1,G=W=null,Cn=fr="",si=[],Po.clear(),oe.length=0,Ct=U=Ie=null,Ne++,clearTimeout(Te),fa(),et(),it(bc),!0)}window.addEventListener("storage",d=>{d.storageArea===localStorage&&d.key===E.sessionKey&&d.newValue!==E.token&&ug()},{signal:C.signal}),window.addEventListener("focus",()=>{ug()||di?.wake()},{signal:C.signal});let Iw=d=>d.target.closest?.(".list .thread-item")?.dataset.thread??"",dg=()=>{clearTimeout(og),og=window.setTimeout(()=>gc(),80)};for(let[d,w]of[["pointerover",k=>(mc=Iw(k))?gc():dg()],["pointerleave",()=>{mc="",dg()}],["focusin",k=>{hc=Iw(k),gc()}],["focusout",()=>{hc="",dg()}],["scroll",()=>{mc=hc="",gc()}]])P.addEventListener(d,w,{capture:!0,signal:C.signal});di=t2({interval:Math.max(2e3,e.pollInterval??4e3),enabled:()=>!D&&!document.hidden&&navigator.onLine!==!1&&!e.onboarding,active:()=>A||Z||H||!!G||!!N,read:async()=>(Gd(),Kt?Xo():bc())});for(let d of["online","offline"])window.addEventListener(d,()=>di?.wake(),{signal:C.signal});if(Ce.addEventListener("click",()=>di?.wake(!1),{signal:C.signal}),Ce.addEventListener("keydown",()=>di?.wake(!1),{signal:C.signal}),e.isolateEvents!==!1){Ce.setAttribute("data-isolate",""),I2(Ce,C.signal);for(let d of X2)Ce.addEventListener(d,w=>ub(w,lt)&&w.stopPropagation(),{passive:!0,signal:C.signal});document.addEventListener("focusout",d=>d.relatedTarget===Ce&&d.stopImmediatePropagation(),{signal:C.signal})}document.addEventListener("visibilitychange",()=>{document.hidden?(Pd.disconnect(),clearTimeout(Ls),Ls=0):(Pd.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),mr(),Fo()),(document.hidden||!ug())&&di?.wake()},{signal:C.signal});let Fw={destroy(){if(D)return;D=!0,di?.stop(),le?.destroy(),ms?.resetDesignPreviews(),E.cancelReads(),ic(),uc?.(),cancelAnimationFrame(Nh),clearTimeout(Ls),clearTimeout(Fh),clearTimeout(To),clearTimeout(Zh),fc.clear(),Wt.stop(),it(pn),Ae?.(),ec?.(!0);for(let[w,k]of Zl)k?.(),w.getAnimations().forEach(_=>_.cancel()),w.remove();Zl.clear(),ci?.stop(),hr?.stop(),sc(!0),C.abort(),clearTimeout(wd),clearTimeout(Ed),clearTimeout(bh),cancelAnimationFrame(Td),cancelAnimationFrame(Md),cancelAnimationFrame(Dh),to(),Yw.disconnect(),Pd.disconnect(),Th.disconnect(),uw.disconnect(),cancelAnimationFrame(Eh);let d=Yt?u.scrollTop*rc():window.scrollY/$n;mr(),(Yt||!v)&&(Vh(),window.scrollTo({top:d,behavior:"instant"})),zh.disconnect(),sw.unmount(),Ce.remove(),J1.delete(document)},comment(d){let w=()=>{if(D||!d.isConnected)return;let k=d.getBoundingClientRect();!k.width||!k.height||lg(d,{x:k.left+k.width/2,y:k.top+k.height/2})};A&&!Od()?(Xt(!1),ci&&Ko?ci.finished.then(w):w()):w()},open(){D||(Lw(),Xt(!0))},close(){D||(fi(),Xt(!1))},async refresh(){await Xo()}};J1.set(document,{scope:a,controller:Fw}),no=!e.onboarding&&fw.get(),zi();let fg=e.onboarding?null:E.cached();xe||=fg!==null;let tL=no;if(no=!0,fg&&ge.replace(Oh(fg)),et(),v&&(P.style.transition="none",_i(),P.offsetWidth,P.style.transition=""),no=tL,no&&(Xt(!0),no=!1,!It()))for(let d of[Ce,Yt?u:null])d?.animate([{opacity:0},{opacity:1}],{duration:200,easing:"cubic-bezier(0.22, 1, 0.36, 1)"});Kd();async function bc(){let d=E,w=d.token,k;try{await d.restore()}catch{}if(D||d!==E)return;w!==d.token&&fa(),Ln(),Z&&br();let _=Xo();_.catch(()=>{});try{k=await d.request("config")}catch(V){if(D||d!==E||V instanceof DOMException&&V.name==="AbortError")return;let $=g1(V),q=rn?.detail!==$.detail;throw rn=$,He="Offline",q&&et(),V}if(D||d!==E)return;Kt=!0,vo=!!k.google,Nn=k.github,wt=k.guests,O=k.guestResolve,mn=!!k.private,et();let j=await _;if(!(D||d!==E))return Kd(),et(),j}return e.onboarding?.inProject||it(()=>bc().finally(()=>di?.wake(!1))),Fw}var sa=new URL(location.href),z8=sa.searchParams.get("project")||"_komo",D8=new URLSearchParams(sa.hash.slice(1)).get("invite")||void 0,hN=D8?void 0:sa.hash.slice(1)||void 0;history.replaceState(null,"",sa.pathname+sa.search);_8({endpoint:location.origin,project:z8,repo:z8,branch:"shared",pageRoot:document.querySelector("main"),onboarding:{code:sa.searchParams.get("code")||void 0,workspace:sa.searchParams.get("workspace")||void 0,site:sa.searchParams.get("site")||void 0,claimKey:hN,invite:D8}});
2973
2973
  /*! Bundled license information:
2974
2974
 
2975
2975
  react/cjs/react.production.js: