@snagset/server 0.1.14 → 0.1.15
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/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var G,C,Te,q,Me,Ee,De,ce,Q,W,Ae,ue,pe,he,J={},X=[],_n=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Z=Array.isArray;function B(e,n){for(var t in n)e[t]=n[t];return e}function ge(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function N(e,n,t){var o,s,a,i={};for(a in n)a=="key"?o=n[a]:a=="ref"?s=n[a]:i[a]=n[a];if(arguments.length>2&&(i.children=arguments.length>3?G.call(arguments,2):t),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)i[a]===void 0&&(i[a]=e.defaultProps[a]);return ee(e,i,o,s,null)}function ee(e,n,t,o,s){var a={type:e,props:n,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Te,__i:-1,__u:0};return s==null&&C.vnode!=null&&C.vnode(a),a}function H(e){return e.children}function ne(e,n){this.props=e,this.context=n}function K(e,n){if(n==null)return e.__?K(e.__,e.__i+1):null;for(var t;n<e.__k.length;n++)if((t=e.__k[n])!=null&&t.__e!=null)return t.__e;return typeof e.type=="function"?K(e):null}function kn(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],a=B({},n);a.__v=n.__v+1,C.vnode&&C.vnode(a),fe(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??K(n),!!(32&n.__u),s),a.__v=n.__v,a.__.__k[a.__i]=a,He(o,a,s),n.__e=n.__=null,a.__e!=t&&Pe(a)}}function Pe(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(n){if(n!=null&&n.__e!=null)return e.__e=e.__c.base=n.__e}),Pe(e)}function Re(e){(!e.__d&&(e.__d=!0)&&q.push(e)&&!te.__r++||Me!=C.debounceRendering)&&((Me=C.debounceRendering)||Ee)(te)}function te(){try{for(var e,n=1;q.length;)q.length>n&&q.sort(De),e=q.shift(),n=q.length,kn(e)}finally{q.length=te.__r=0}}function ze(e,n,t,o,s,a,i,c,g,l,m){var x,u,f,S,_,y,$=o&&o.__k||X,v=n.length;for(g=bn(t,n,$,g,v),x=0;x<v;x++)(f=t.__k[x])!=null&&(u=f.__i!=-1&&$[f.__i]||J,f.__i=x,y=fe(e,f,u,s,a,i,c,g,l,m),S=f.__e,f.ref&&u.ref!=f.ref&&(u.ref&&me(u.ref,null,f),m.push(f.ref,f.__c||S,f)),_==null&&S!=null&&(_=S),4&f.__u?(g=Oe(f,g,e),u.__e&&(u.__e=null)):typeof f.type=="function"&&y!==void 0?g=y:S&&(g=S.nextSibling),f.__u&=-7);return t.__e=_,g}function bn(e,n,t,o,s){var a,i,c,g,l,m=t.length,x=m,u=0;for(e.__k=new Array(s),a=0;a<s;a++)(i=n[a])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[a]=ee(null,i,null,null,null):Z(i)?i=e.__k[a]=ee(H,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[a]=ee(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[a]=i,g=a+u,i.__=e,i.__b=e.__b+1,c=null,(l=i.__i=xn(i,t,g,x))!=-1&&(x--,(c=t[l])&&(c.__u|=2)),c==null||c.__v==null?(l==-1&&(s>m?u--:s<m&&u++),typeof i.type!="function"&&(i.__u|=4)):l!=g&&(l==g-1?u--:l==g+1?u++:(l>g?u--:u++,i.__u|=4))):e.__k[a]=null;if(x)for(a=0;a<m;a++)(c=t[a])!=null&&(2&c.__u)==0&&(c.__e==o&&(o=K(c)),Ue(c,c));return o}function Oe(e,n,t){var o,s;if(typeof e.type=="function"){for(o=e.__k,s=0;o&&s<o.length;s++)o[s]&&(o[s].__=e,n=Oe(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=K(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function xn(e,n,t,o){var s,a,i,c=e.key,g=e.type,l=n[t],m=l!=null&&(2&l.__u)==0;if(l===null&&c==null||m&&c==l.key&&g==l.type)return t;if(o>(m?1:0)){for(s=t-1,a=t+1;s>=0||a<n.length;)if((l=n[i=s>=0?s--:a++])!=null&&(2&l.__u)==0&&c==l.key&&g==l.type)return i}return-1}function Le(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||_n.test(n)?t:t+"px"}function oe(e,n,t,o,s){var a,i;e:if(n=="style")if(typeof t=="string")e.style.cssText=t;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(n in o)t&&n in t||Le(e.style,n,"");if(t)for(n in t)o&&t[n]==o[n]||Le(e.style,n,t[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(Ae,"$1")),i=n.toLowerCase(),n=i in e||n=="onFocusOut"||n=="onFocusIn"?i.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=t,t?o?t[W]=o[W]:(t[W]=ue,e.addEventListener(n,a?he:pe,a)):e.removeEventListener(n,a?he:pe,a);else{if(s=="http://www.w3.org/2000/svg")n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(n!="width"&&n!="height"&&n!="href"&&n!="list"&&n!="form"&&n!="tabIndex"&&n!="download"&&n!="rowSpan"&&n!="colSpan"&&n!="role"&&n!="popover"&&n in e)try{e[n]=t??"";break e}catch{}typeof t=="function"||(t==null||t===!1&&n[4]!="-"?e.removeAttribute(n):e.setAttribute(n,n=="popover"&&t==1?"":t))}}function Ne(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[Q]==null)n[Q]=ue++;else if(n[Q]<t[W])return;return t(C.event?C.event(n):n)}}}function fe(e,n,t,o,s,a,i,c,g,l){var m,x,u,f,S,_,y,$,v,E,h,T,M,R,I,L,b=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(g=!!(32&t.__u),a=[c=n.__e=t.__e]),(m=C.__b)&&m(n);e:if(typeof b=="function"){x=i.length;try{if(v=n.props,E=b.prototype&&b.prototype.render,h=(m=b.contextType)&&o[m.__c],T=m?h?h.props.value:m.__:o,t.__c?$=(u=n.__c=t.__c).__=u.__E:(E?n.__c=u=new b(v,T):(n.__c=u=new ne(v,T),u.constructor=b,u.render=vn),h&&h.sub(u),u.state||(u.state={}),u.__n=o,f=u.__d=!0,u.__h=[],u._sb=[]),E&&u.__s==null&&(u.__s=u.state),E&&b.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=B({},u.__s)),B(u.__s,b.getDerivedStateFromProps(v,u.__s))),S=u.props,_=u.state,u.__v=n,f)E&&b.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),E&&u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(E&&b.getDerivedStateFromProps==null&&v!==S&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps(v,T),n.__v==t.__v||!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate(v,u.__s,T)===!1){n.__v!=t.__v&&(u.props=v,u.state=u.__s,u.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(P){P&&(P.__=n)}),X.push.apply(u.__h,u._sb),u._sb=[],u.__h.length&&i.push(u),c=K(t);break e}u.componentWillUpdate!=null&&u.componentWillUpdate(v,u.__s,T),E&&u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(S,_,y)})}if(u.context=T,u.props=v,u.__P=e,u.__e=!1,M=C.__r,R=0,E)u.state=u.__s,u.__d=!1,M&&M(n),m=u.render(u.props,u.state,u.context),X.push.apply(u.__h,u._sb),u._sb=[];else do u.__d=!1,M&&M(n),m=u.render(u.props,u.state,u.context),u.state=u.__s;while(u.__d&&++R<25);u.state=u.__s,u.getChildContext!=null&&(o=B(B({},o),u.getChildContext())),E&&!f&&u.getSnapshotBeforeUpdate!=null&&(y=u.getSnapshotBeforeUpdate(S,_)),I=m!=null&&m.type===H&&m.key==null?je(m.props.children):m,c=ze(e,Z(I)?I:[I],n,t,o,s,a,i,c,g,l),u.base=n.__e,n.__u&=-161,u.__h.length&&i.push(u),$&&(u.__E=u.__=null)}catch(P){if(i.length=x,n.__v=null,g||a!=null){if(P.then){for(n.__u|=g?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;a!=null&&(a[a.indexOf(c)]=null),n.__e=c}else if(a!=null)for(L=a.length;L--;)ge(a[L])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),P.then||Ie(n),C.__e(P,n,t)}}else a==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):c=n.__e=yn(t.__e,n,t,o,s,a,i,g,l);return(m=C.diffed)&&m(n),128&n.__u?void 0:c}function Ie(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ie))}function He(e,n,t){for(var o=0;o<t.length;o++)me(t[o],t[++o],t[++o]);C.__c&&C.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(a){a.call(s)})}catch(a){C.__e(a,s.__v)}})}function je(e){return typeof e!="object"||e==null||e.__b>0?e:Z(e)?e.map(je):e.constructor!==void 0?null:B({},e)}function yn(e,n,t,o,s,a,i,c,g){var l,m,x,u,f,S,_,y=t.props||J,$=n.props,v=n.type;if(v=="svg"?s="http://www.w3.org/2000/svg":v=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),a!=null){for(l=0;l<a.length;l++)if((f=a[l])&&"setAttribute"in f==!!v&&(v?f.localName==v:f.nodeType==3)){e=f,a[l]=null;break}}if(e==null){if(v==null)return document.createTextNode($);e=document.createElementNS(s,v,$.is&&$),c&&(C.__m&&C.__m(n,a),c=!1),a=null}if(v==null)y===$||c&&e.data==$||(e.data=$);else{if(a=v=="textarea"&&$.defaultValue!=null?null:a&&G.call(e.childNodes),!c&&a!=null)for(y={},l=0;l<e.attributes.length;l++)y[(f=e.attributes[l]).name]=f.value;for(l in y)f=y[l],l=="dangerouslySetInnerHTML"?x=f:l=="children"||l in $||l=="value"&&"defaultValue"in $||l=="checked"&&"defaultChecked"in $||oe(e,l,null,f,s);for(l in $)f=$[l],l=="children"?u=f:l=="dangerouslySetInnerHTML"?m=f:l=="value"?S=f:l=="checked"?_=f:c&&typeof f!="function"||y[l]===f||oe(e,l,f,y[l],s);if(m)c||x&&(m.__html==x.__html||m.__html==e.innerHTML)||(e.innerHTML=m.__html),n.__k=[];else if(x&&(e.innerHTML=""),ze(n.type=="template"?e.content:e,Z(u)?u:[u],n,t,o,v=="foreignObject"?"http://www.w3.org/1999/xhtml":s,a,i,a?a[0]:t.__k&&K(t,0),c,g),a!=null)for(l=a.length;l--;)ge(a[l]);c&&v!="textarea"||(l="value",v=="progress"&&S==null?e.removeAttribute("value"):S!=null&&(S!==e[l]||v=="progress"&&!S||v=="option"&&S!=y[l])&&oe(e,l,S,y[l],s),l="checked",_!=null&&_!=e[l]&&oe(e,l,_,y[l],s))}return e}function me(e,n,t){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&n==null||(e.__u=e(n))}else e.current=n}catch(s){C.__e(s,t)}}function Ue(e,n,t){var o,s;if(C.unmount&&C.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||me(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(a){C.__e(a,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&Ue(o[s],n,t||typeof e.type!="function");t||ge(e.__e),e.__c=e.__=e.__e=void 0}function vn(e,n,t){return this.constructor(e,t)}function Fe(e,n,t){var o,s,a,i;n==document&&(n=document.documentElement),C.__&&C.__(e,n),s=(o=!1)?null:n.__k,a=[],i=[],fe(n,e=n.__k=N(H,null,[e]),s||J,J,n.namespaceURI,s?null:n.firstChild?G.call(n.childNodes):null,a,s?s.__e:n.firstChild,o,i),He(a,e,i),e.props.children=null}G=X.slice,C={__e:function(e,n,t,o){for(var s,a,i;n=n.__;)if((s=n.__c)&&!s.__)try{if((a=s.constructor)&&a.getDerivedStateFromError!=null&&(s.setState(a.getDerivedStateFromError(e)),i=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(e,o||{}),i=s.__d),i)return s.__E=s}catch(c){e=c}throw e}},Te=0,ne.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=B({},this.state),typeof e=="function"&&(e=e(B({},t),this.props)),e&&B(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),Re(this))},ne.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Re(this))},ne.prototype.render=H,q=[],Ee=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,De=function(e,n){return e.__v.__b-n.__v.__b},te.__r=0,ce=Math.random().toString(8),Q="__d"+ce,W="__a"+ce,Ae=/(PointerCapture)$|Capture$/i,ue=0,pe=Ne(!1),he=Ne(!0);var wn=0;function r(e,n,t,o,s,a){n||(n={});var i,c,g=n;if("ref"in g)for(c in g={},n)c=="ref"?i=n[c]:g[c]=n[c];var l={type:e,props:g,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--wn,__i:-1,__u:0,__source:s,__self:a};if(typeof e=="function"&&(i=e.defaultProps))for(c in i)g[c]===void 0&&(g[c]=i[c]);return C.vnode&&C.vnode(l),l}const $n="Snagset",Sn="Snagset",Cn="Snag",Tn="Snags",k={font:"--snag-font",accent:"--snag-accent",onAccent:"--snag-onAccent",bg:"--snag-bg",fg:"--snag-fg",muted:"--snag-muted",border:"--snag-border",radius:"--snag-radius",shadow:"--snag-shadow",z:"--snag-z",motion:"--snag-motion",surface:"--snag-surface",sunken:"--snag-sunken",hover:"--snag-hover",focus:"--snag-focus",disabled:"--snag-disabled",statusOpen:"--snag-status-open",statusProgress:"--snag-status-progress",statusReview:"--snag-status-review",statusResolved:"--snag-status-resolved",anchorOrphan:"--snag-anchor-orphan",tbH:"--snag-tb-h",dockW:"--snag-dock-w",kb:"--snag-kb",thumbX:"--snag-thumb-x",thumbW:"--snag-thumb-w"},Mn=e=>`var(${k[e]})`,En=e=>"snag_"+e,Be={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},Dn="data-snag-theme";var Y,D,_e,qe,re=0,Ke=[],A=C,We=A.__b,Ye=A.__r,Ve=A.diffed,Ge=A.__c,Qe=A.unmount,Je=A.__;function ke(e,n){A.__h&&A.__h(D,e,re||n),re=0;var t=D.__H||(D.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function z(e){return re=1,An(en,e)}function An(e,n,t){var o=ke(Y++,2);if(o.t=e,!o.__c&&(o.__=[en(void 0,n),function(c){var g=o.__N?o.__N[0]:o.__[0],l=o.t(g,c);g!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=D,!D.__f)){var s=function(c,g,l){if(!o.__c.__H)return!0;var m=!1,x=o.__c.props!==c;if(o.__c.__H.__.some(function(f){if(f.__N){m=!0;var S=f.__[0];f.__=f.__N,f.__N=void 0,S!==f.__[0]&&(x=!0)}}),a){var u=a.call(this,c,g,l);return m?u||x:u}return!m||x};D.__f=!0;var a=D.shouldComponentUpdate,i=D.componentWillUpdate;D.componentWillUpdate=function(c,g,l){if(this.__e){var m=a;a=void 0,s(c,g,l),a=m}i&&i.call(this,c,g,l)},D.shouldComponentUpdate=s}return o.__N||o.__}function j(e,n){var t=ke(Y++,3);!A.__s&&Ze(t.__H,n)&&(t.__=e,t.u=n,D.__H.__h.push(t))}function U(e){return re=5,Pn(function(){return{current:e}},[])}function Pn(e,n){var t=ke(Y++,7);return Ze(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function Rn(){for(var e;e=Ke.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(ae),n.__h.some(be),n.__h=[]}catch(t){n.__h=[],A.__e(t,e.__v)}}}A.__b=function(e){D=null,We&&We(e)},A.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),Je&&Je(e,n)},A.__r=function(e){Ye&&Ye(e),Y=0;var n=(D=e.__c).__H;n&&(_e===D?(n.__h=[],D.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(ae),n.__h.some(be),n.__h=[],Y=0)),_e=D},A.diffed=function(e){Ve&&Ve(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(Ke.push(n)!==1&&qe===A.requestAnimationFrame||((qe=A.requestAnimationFrame)||zn)(Rn)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),_e=D=null},A.__c=function(e,n){n.some(function(t){try{t.__h.some(ae),t.__h=t.__h.filter(function(o){return!o.__||be(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],A.__e(o,t.__v)}}),Ge&&Ge(e,n)},A.unmount=function(e){Qe&&Qe(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{ae(o)}catch(s){n=s}}),t.__H=void 0,n&&A.__e(n,t.__v))};var Xe=typeof requestAnimationFrame=="function";function zn(e){var n,t=function(){clearTimeout(o),Xe&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);Xe&&(n=requestAnimationFrame(t))}function ae(e){var n=D,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),D=n}function be(e){var n=D;e.__c=e.__(),D=n}function Ze(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function en(e,n){return typeof n=="function"?n(e):n}const On={product:$n,set:Sn,item:Cn,items:Tn};function nn(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const a=t?.[s]??On[s];return a===void 0?o:String(a)})}const O=e=>new Intl.NumberFormat().format(e),tn={"where.anchored":"{label}","where.approximate":"position approximate \u2014 the page changed","where.orphaned":"moved \u2014 the element is gone","status.open":"Active","status.progress":"In progress","status.review":"In review","status.resolved":"Resolved","author.unknown":"Someone","label.image":"an image","label.link":"a link","label.button":"a button","label.tag":"the {tag}"},Ln=nn(tn),se={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},xe=e=>se[e]?.colour??"#8a8f98",on=e=>e==="open"||e==="review"?"#fff":"#16161a",ye=e=>e in se?Ln(`status.${e}`):e,d=Object.fromEntries(Object.keys(k).map(e=>[e,Mn(e)])),Nn=Object.entries(se).map(([e,n])=>` ${k[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.colour};`).join(`
|
|
2
|
-
`);`${
|
|
3
|
-
`),t=[];let o=0,s=0;for(;o<n.length;){const a=n[o];if(
|
|
4
|
-
`))));continue}const i=
|
|
5
|
-
`)))):o++}return N("div",{class:"snag-md"},t)}const Wn={"detail.details":"Anchor details","detail.hidden":"This element isn't visible right now \u2014 it may be inside a closed menu, tab, or accordion.","detail.orphaned":"The element this was pinned to has moved or gone \u2014 it was {label}.","detail.approximate":"The page changed since this was written, so the pin is close rather than exact \u2014 it points at {label}.","detail.unavailable":"Some of the matching steps couldn't load, so this was judged with the basic ones only.","detail.filedat":"Filed at {query}.","detail.openquery":"Open with original query","capture.agent":"{browser} \xB7 {os}","capture.agent.noos":"{browser}","capture.device":"{device} \xB7 {w}\xD7{h} @{dpr}x","capture.device.at1x":"{device} \xB7 {w}\xD7{h}"},Yn={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.signin":"Studio member? Sign in","composer.signin.blocked":"Allow pop-ups for this page to sign in.","composer.member":"Commenting as {name}","composer.signout":"Not you? Sign out","composer.chars":"{n} characters left","composer.body":"Comment","composer.body.placeholder":"What's the {item}?","action.cancel":"Cancel","action.post":"Post comment","composer.discard.sure":"Sure? Discard this comment","action.discard":"Discard?"},Vn={"shot.open":"See the screenshot","shot.aria":"Screenshot","shot.close":"Close","announce.status":"Comment {key} set to {status}.","search.placeholder":"Search {n} comments\u2026","search.aria":"Search comments","round.label":"Round","round.closed":"(closed)","filter.status":"Status","filter.clear":"Clear","filter.selectall":"Select all","sort.button":"Sort","sort.newest":"Newest first","sort.oldest":"Oldest first","sort.page":"By page","filter.button":"Filter","filter.button.n":"Filter \xB7 {n}","filter.by":"Comments by","filter.by.anyone":"Anyone","filter.pages":"Pages","filter.pages.all":"All pages","filter.pageonly":"Show comments on this page only","filter.new":"See new activity \xB7 {n}","filter.new.on":"Showing new activity \u2014 show all","filter.new.none":"You\u2019re caught up \u2014 show all","filter.read":"Marked as","filter.read.all":"Anyone\u2019s, read or not","filter.read.unread":"Unread","filter.read.read":"Read","dock.unread":"Unread","badge.anchored":"","badge.approximate":"~","badge.orphaned":"moved","badge.hidden":"hidden","capture.label":"Comment left on","capture.page":"{route}","device.Mobile":"Mobile","device.Desktop":"Desktop","dock.aria":"All comments","dock.title.list":"All comments","dock.title.detail":"Comment","dock.close":"Close all comments","dock.empty":"No comments yet. Press +, then click anything on the page.","dock.empty.filter":"Nothing matches that filter.","dock.empty.orphans":"Every comment here lost its element \u2014 but what each one pointed at is still recorded.","dock.empty.page":"Nothing on this page. {n} comments on {m} other pages.","dock.row.empty":"(no comment)","dock.replies":"{n} replies","dock.goto":"Go to {route}","dock.cluster":"{n} comments in this cluster","dock.cluster.clear":"Show all","dock.hiddenrow":"That comment is now hidden by your filter","dock.hiddenrow.show":"Show","dock.back":"All","dock.back.aria":"Back to all comments","dock.position":"{n} of {total}","dock.prev":"Previous comment","dock.next":"Next comment","dock.clear":"Clear all","dock.clear.aria":"Delete every comment in this review","comment.edit":"Edit this comment","comment.delete":"Delete this comment and its pin","reply.delete":"Delete this reply","time.now":"just now","detail.hidden.show":"Show anyway","field.status":"Status","permalink.copy":"Copy link","permalink.copied":"Copied","reply.add":"Add reply","reply.aria":"Reply","reply.placeholder":"Reply\u2026","reply.send":"Reply","action.more":"More actions","action.edit":"Edit","action.delete":"Delete","action.save":"Save","action.sure":"Sure?","export.button":"Export","export.md":"Markdown","export.json":"JSON"},Gn={...tn,...Wn,...Yn,...Vn},p=nn(Gn),Qn=[/^utm_/,/^(gclid|gbraid|wbraid|fbclid|msclkid|ttclid|twclid|igshid|yclid|li_fat_id)$/,/^(mc_cid|mc_eid|_hsenc|_hsmi|vero_id|oly_enc_id|oly_anon_id)$/,/^_vercel_/,/^__vercel_/,/^_rsc$/],Jn=[...Be.query,...Be.fragment];function Xn(e,n=[]){return Jn.includes(e)||n.includes(e)?!0:Qn.some(t=>t.test(e))}const le=["open","progress","review","resolved"];function Zn(e,n){const t=e.includes(n)?e.filter(o=>o!==n):[...e,n];return t.length>=le.length?[]:t}function et(e,n,t){if(n.statuses.length>0&&le.includes(e.status)&&!n.statuses.includes(e.status)||n.by&&e.createdBy.id!==n.by||n.page&&e.route!==n.page)return!1;if(n.read!=="all"&&t){const o=de(e,t);if(n.read==="unread"&&!o||n.read==="read"&&o)return!1}return!0}function de(e,n){const t=n.get(e.id)??0;return Date.parse(e.updatedAt)>t}function nt(e,n,t,o){let s=e;n.pageOnly&&(s=s.filter(i=>i.route===t)),n.newOnly&&o&&(s=s.filter(i=>de(i,o)));const a=n.q?.trim().toLowerCase();return a&&(s=s.filter(i=>i.comments.some(c=>(c.body??"").toLowerCase().includes(a)||c.author.name.toLowerCase().includes(a))||i.createdBy.name.toLowerCase().includes(a))),s}function tt(e,n){if(n==="page")return e;const t=(s,a)=>Date.parse(s.createdAt)-Date.parse(a.createdAt),o=[...e].sort(t);return n==="oldest"?o:o.reverse()}function ot(e){const n=new Map;for(const t of e)n.set(t.status,(n.get(t.status)??0)+1);return{all:e.length,byStatus:n}}function rt(e){return(e.read!=="all"?1:0)+(e.by?1:0)+(e.page?1:0)}const Se=Object.keys(se);function ln({label:e,title:n,cls:t,role:o,onConfirm:s}){const{armed:a,press:i}=jn(s);return r("button",{type:"button",...o===void 0?{}:{role:o},class:`${t}${a?" snag-dk-armed":""}`,"aria-label":a?`${p("action.sure")} ${n}`:n,title:n,onClick:i,children:a?p("action.sure"):e})}function at({snag:e}){const n=e.context?.derived?.device;if(!n)return null;const t=p(`device.${n}`);return r("span",{class:"snag-dk-dev",title:t,"aria-label":t,role:"img",children:n==="Mobile"?r("svg",{width:"11",height:"14",viewBox:"0 0 11 14",fill:"none","aria-hidden":"true",children:[r("rect",{x:".75",y:".75",width:"9.5",height:"12.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),r("path",{d:"M4.5 11h2",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]}):r("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none","aria-hidden":"true",children:[r("rect",{x:".75",y:"1.75",width:"12.5",height:"8.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),r("path",{d:"M5 12.75h4",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]})})}function st({anchor:e}){const n=[];if(e.testid&&n.push(["testid",e.testid]),e.domid&&n.push(["id",e.domid]),e.css&&n.push(["css",e.css]),e.hostPath?.length&&n.push(["shadow host",e.hostPath.join(" >> ")]),e.role&&n.push(["role",e.role]),e.accessibleName&&n.push(["name",e.accessibleName]),e.text?.exact&&n.push(["text",e.text.exact]),e.path?.length&&n.push(["path",e.path.join(" > ")]),e.rect){const t=e.rect;n.push(["rect",`${Math.round(t.x)}, ${Math.round(t.y)} \u2014 ${Math.round(t.w)} x ${Math.round(t.h)}`])}return e.breakpoint&&n.push(["breakpoint",`${e.breakpoint} at capture \xB7 you are at ${typeof window>"u"?"?":window.innerWidth}px`]),r("details",{class:"snag-dk-anchor",children:[r("summary",{children:p("detail.details")}),r("dl",{children:n.map(([t,o])=>r("div",{children:[r("dt",{children:t}),r("dd",{children:o})]},t))})]})}function dn({iso:e}){const n=Date.parse(e);if(!Number.isFinite(n))return null;const t=new Date(n),o=Math.round((n-Date.now())/1e3);let s;if(Math.abs(o)<45)s=p("time.now");else if(Math.abs(o)<7*86400){const a=new Intl.RelativeTimeFormat(void 0,{numeric:"auto",style:"short"}),[i,c]=Math.abs(o)<3600?[Math.round(o/60),"minute"]:Math.abs(o)<86400?[Math.round(o/3600),"hour"]:[Math.round(o/86400),"day"];s=a.format(i,c)}else s=t.toLocaleDateString(void 0,{day:"numeric",month:"short",...t.getFullYear()===new Date().getFullYear()?{}:{year:"numeric"}});return r("time",{class:"snag-dk-dim snag-dk-when",dateTime:t.toISOString(),title:t.toLocaleString(),children:s})}function cn({body:e,onEdit:n,deleteLabel:t,onDelete:o}){const s=e??"",[a,i]=z(!1),[c,g]=z(!1),[l,m]=z(s),x=U(null),u=f=>{f.key!=="Escape"||!c||(f.stopPropagation(),g(!1))};return j(()=>{a&&x.current?.focus()},[a]),a&&n?r("div",{class:"snag-dk-editbox",children:[r("textarea",{ref:x,class:"snag-text",rows:3,"aria-label":p("comment.edit"),value:l,onInput:f=>m(f.target.value),onKeyDown:f=>{f.key==="Enter"&&(f.metaKey||f.ctrlKey)&&(f.preventDefault(),l.trim()&&(n(l.trim()),i(!1))),f.key==="Escape"&&(f.stopPropagation(),m(s),i(!1))}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{m(s),i(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!l.trim()||l.trim()===s,onClick:()=>{n(l.trim()),i(!1)},children:p("action.save")})]})]}):r("div",{class:"snag-dk-acts snag-dk-menus",onKeyDown:u,children:[c&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>g(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-act snag-dk-more","aria-label":p("action.more"),"aria-expanded":c,"aria-haspopup":"menu",title:p("action.more"),onClick:()=>g(!c),children:"\u22EF"}),c&&r("div",{class:"snag-dk-menu",role:"menu",children:[n&&r("button",{type:"button",role:"menuitem",title:p("comment.edit"),"aria-label":p("comment.edit"),onClick:()=>{g(!1),m(s),i(!0)},children:p("action.edit")}),o&&r(ln,{label:p("action.delete"),title:t,cls:"snag-dk-act--danger",role:"menuitem",onConfirm:o})]})]})]})}function it({snag:e}){const n=e.anchorReasons?.includes("hidden")??!1;return r("span",{class:"snag-dk-dim snag-dk-where",children:[n&&r(H,{children:[r("span",{class:"snag-dk-moved",children:p("badge.hidden")})," "]}),e.anchorState!=="anchored"&&r(H,{children:[r("span",{class:"snag-dk-moved",children:p(`badge.${e.anchorState}`)})," "]}),e.anchor.label]})}function lt(e){const n=new Map,t=new Map;for(const o of e){const s=(n.get(o.route)??0)+1;n.set(o.route,s),t.set(o.id,s)}return t}function dt(e,n){const t=new Map;for(const o of e){const s=t.get(o.route);s?s.push(o):t.set(o.route,[o])}return[...t.entries()].map(([o,s])=>({route:o,here:o===n,snags:s})).sort((o,s)=>o.route.localeCompare(s.route))}function ct({snag:e,n,here:t,unread:o,onOpen:s,onHover:a}){const i=g=>a(t?g:null),c=t?"":p("dock.goto",{route:e.route});return r("li",{children:r("button",{type:"button",class:"snag-dk-item",onClick:()=>s(e.id),onPointerEnter:()=>i(e.id),onPointerLeave:()=>i(null),onFocus:()=>i(e.id),onBlur:()=>i(null),children:[r("span",{class:`snag-dk-dot${o?" snag-dk-dot--on":""}`,role:"img","aria-label":o?p("dock.unread"):""}),r("span",{class:`snag-dk-num${e.anchorState==="anchored"?"":` snag-dk-num--${e.anchorState}`}`,style:{background:xe(e.status),color:on(e.status)},children:n}),r("span",{class:"snag-dk-main",children:[r("span",{class:`snag-dk-body${e.status==="resolved"?" snag-dk-done":""}`,children:e.comments[0]?.body??p("dock.row.empty")}),r("span",{class:"snag-dk-sub",children:r(it,{snag:e})})]}),r(at,{snag:e}),e.comments.length>1&&r("span",{class:"snag-dk-replies",role:"img","aria-label":p("dock.replies",{n:O(e.comments.length-1)}),children:O(e.comments.length-1)}),!t&&r("span",{class:"snag-dk-goto",role:"img",title:c,"aria-label":c,children:"\u2197"})]})})}const un=e=>d[`status${e[0].toUpperCase()}${e.slice(1)}`]??d.muted;function ut({round:e,filter:n,onFilter:t,rounds:o,activeRound:s,onRound:a,onClearAll:i,seenAt:c}){const g=!!o&&o.length>1&&!!a,l=e.length>0,[m,x]=z(null),u=ot(e),f=h=>{const T={...n};for(const[M,R]of Object.entries(h))R===void 0?delete T[M]:T[M]=R;t(T)},S=n.statuses.length>0,_=rt(n),y=[...new Map(e.map(h=>[h.createdBy.id,h.createdBy.name]))],$=[...new Set(e.map(h=>h.route))].sort(),v=[...u.byStatus.keys()].filter(h=>!le.includes(h)),E=r("div",{class:"snag-dk-menugroup",children:[r("div",{class:"snag-dk-chiphead",children:[r("span",{class:"snag-dk-menutitle",children:p("filter.status")}),r("button",{type:"button",class:"snag-dk-link",onClick:()=>f({statuses:[]}),children:p(S?"filter.selectall":"filter.clear")})]}),r("div",{class:"snag-dk-chips",role:"group","aria-label":p("filter.status"),children:[le.map(h=>{const T=n.statuses.includes(h);return r("button",{type:"button",class:"snag-dk-chip","aria-pressed":T,style:`border-color:color-mix(in srgb, ${un(h)} 60%, transparent);background:color-mix(in srgb, ${un(h)} ${T?28:10}%, transparent)`,onClick:()=>f({statuses:Zn(n.statuses,h)}),children:[ye(h)," ",r("span",{class:"snag-dk-dim",children:O(u.byStatus.get(h)??0)})]})}),v.map(h=>r("span",{class:"snag-dk-chip snag-dk-chip-stray",children:[h," ",r("span",{class:"snag-dk-dim",children:O(u.byStatus.get(h)??0)})]}))]})]});return r("div",{class:"snag-dk-filters",children:[l&&r("input",{class:"snag-input snag-dk-search",type:"search","aria-label":p("search.aria"),placeholder:p("search.placeholder",{n:O(e.length)}),value:n.q??"",onInput:h=>f({q:h.currentTarget.value||void 0})}),r("div",{class:"snag-dk-menus",onKeyDown:h=>{h.key!=="Escape"||!m||(h.stopPropagation(),x(null))},children:[m&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>x(null)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":m==="filter",onClick:()=>x(m==="filter"?null:"filter"),children:_>0?p("filter.button.n",{n:O(_)}):p("filter.button")}),m==="filter"&&r("div",{class:"snag-dk-menu snag-dk-menu-form",role:"group","aria-label":p("filter.button"),children:[(g||l)&&r("div",{class:"snag-dk-menugroup",children:[!g&&r("span",{class:"snag-dk-menutitle",children:p("round.label")}),g&&r("label",{class:"snag-dk-round",children:[r("span",{class:"snag-dk-menutitle",children:p("round.label")}),r("select",{class:"snag-input",value:String(s??""),onChange:h=>a(Number(h.currentTarget.value)),children:o.map(h=>r("option",{value:String(h.number),children:[h.name,h.closed?` ${p("round.closed")}`:""]},h.number))})]}),l&&r(ln,{label:p("dock.clear"),title:p("dock.clear.aria"),cls:"snag-dk-link snag-dk-clear",onConfirm:i})]}),l&&E,l&&r("div",{class:"snag-dk-menugroup",role:"radiogroup","aria-label":p("sort.button"),children:[r("span",{class:"snag-dk-menutitle","aria-hidden":"true",children:p("sort.button")}),[["newest","sort.newest"],["oldest","sort.oldest"],["page","sort.page"]].map(([h,T])=>r("button",{type:"button",role:"radio","aria-checked":n.sort===h,onClick:()=>f({sort:h}),children:[r("span",{class:"snag-dk-tick","aria-hidden":"true",children:n.sort===h?"\u2713":"\xA0"}),p(T)]}))]}),l&&r("div",{class:"snag-dk-menugroup snag-dk-menugroup-last",children:[c&&r("label",{children:[p("filter.read"),r("select",{value:n.read,onChange:h=>f({read:h.currentTarget.value}),children:[r("option",{value:"all",children:p("filter.read.all")}),r("option",{value:"unread",children:p("filter.read.unread")}),r("option",{value:"read",children:p("filter.read.read")})]})]}),r("label",{children:[p("filter.by"),r("select",{value:n.by??"",onChange:h=>f({by:h.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.by.anyone")}),y.map(([h,T])=>r("option",{value:h,children:T}))]})]}),r("label",{children:[p("filter.pages"),r("select",{value:n.page??"",onChange:h=>f({page:h.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.pages.all")}),$.map(h=>r("option",{value:h,children:h}))]})]}),r("label",{class:"snag-dk-pageonly",children:[r("input",{type:"checkbox",checked:n.pageOnly,onChange:h=>f({pageOnly:h.currentTarget.checked})})," ",p("filter.pageonly")]})]})]})]})]})]})}function pt({snags:e,groups:n,route:t,onOpen:o,onHover:s,onExport:a,onClearAll:i,clusterFilter:c,onClusterClear:g,filter:l,onFilter:m,hiddenNote:x,onHiddenShow:u,rounds:f,activeRound:S,onRound:_,seenAt:y}){const $=lt(e),v=n.flatMap(b=>b.snags),E=l.statuses.length>0||!!l.by||!!l.page||!!l.q?.trim()||l.pageOnly||l.newOnly||l.read!=="all",h=y?e.filter(b=>de(b,y)).length:0,T=U(null),[M,R]=z(!1),I=b=>{b.key!=="Escape"||!M||(b.stopPropagation(),R(!1))},L=U(null);return j(()=>{const b=T.current,P=L.current;!b||!P||(b.scrollTop+=P.getBoundingClientRect().top-b.getBoundingClientRect().top)},[t,n.length]),r(H,{children:[(e.length>0||f&&f.length>1&&_)&&r(ut,{round:e,filter:l,onFilter:m,onClearAll:i,...y===void 0?{}:{seenAt:y},...f===void 0?{}:{rounds:f},...S===void 0?{}:{activeRound:S},..._===void 0?{}:{onRound:_}}),y&&(h>0||l.newOnly)&&r("button",{type:"button",class:"snag-dk-newpill","aria-pressed":l.newOnly,onClick:()=>m({...l,newOnly:!l.newOnly}),children:l.newOnly?p(h===0?"filter.new.none":"filter.new.on"):p("filter.new",{n:O(h)})}),e.length===0?r("div",{class:"snag-dk-empty",children:r("p",{children:p("dock.empty")})}):v.length===0&&E?r("div",{class:"snag-dk-empty",children:l.pageOnly&&e.some(b=>b.route!==t)?r("p",{children:p("dock.empty.page",{n:O(e.filter(b=>b.route!==t).length),m:O(new Set(e.filter(b=>b.route!==t).map(b=>b.route)).size)})}):r("p",{children:p("dock.empty.filter")})}):r(H,{children:[x&&r("p",{class:"snag-dk-notice",children:[p("dock.hiddenrow")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>u(x),children:p("dock.hiddenrow.show")})]}),c&&r("p",{class:"snag-dk-notice",children:[p("dock.cluster",{n:c.length})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>g?.(),children:p("dock.cluster.clear")})]}),e.every(b=>b.anchorState==="orphaned")&&r("p",{class:"snag-dk-notice",children:p("dock.empty.orphans")}),r("div",{class:"snag-dk-scroll",ref:T,children:n.map(b=>r("section",{class:"snag-dk-group",ref:b.here?L:null,children:[b.route!==""&&r("h3",{class:"snag-dk-grouphd",children:[r("span",{class:"snag-dk-route",children:b.route}),r("span",{class:"snag-dk-dim",children:O(b.snags.length)})]}),r("ul",{class:"snag-dk-list",children:b.snags.map(P=>r(ct,{snag:P,n:$.get(P.id),here:b.here,unread:!!y&&de(P,y),onOpen:o,onHover:s},P.id))})]},b.route))})]}),r("div",{class:"snag-dk-foot",children:r("div",{class:"snag-dk-menus snag-dk-menus-up",onKeyDown:I,children:[M&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>R(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":M,"aria-haspopup":"menu",onClick:()=>R(!M),children:p("export.button")}),M&&r("div",{class:"snag-dk-menu snag-dk-menu-up",role:"menu",children:["md","json"].map(b=>r("button",{type:"button",role:"menuitem",onClick:()=>{R(!1),a(b)},children:p(b==="md"?"export.md":"export.json")}))})]})]})})]})}const Ce=new Map;function ht(e){const n=[];try{for(const[t,o]of new URL(e).searchParams)Xn(t)||n.push(o&&o!=="[redacted]"?`${t}=${o}`:t)}catch{return null}return n.length?`?${n.join("&")}`:null}function gt({att:e,load:n}){const t=U(null),[o,s]=z(!1),[a,i]=z(null);return j(()=>{let c=!1;return n(e).then(async g=>{if(!g||c)return;const l=await createImageBitmap(g);c?l.close():i(l)}).catch(()=>{}),()=>{c=!0}},[e.id,e.url]),j(()=>{const c=t.current;if(!c||!a)return;const g=142,l=g/a.width;c.width=g,c.height=Math.min(96,Math.round(a.height*l)),c.getContext("2d").drawImage(a,0,0,a.width,Math.round(c.height/l),0,0,c.width,c.height)},[a]),a?r(H,{children:[r("button",{type:"button",class:"snag-dk-shot",onClick:()=>s(!0),"aria-label":p("shot.open"),children:r("canvas",{ref:t,width:142,height:Math.min(96,Math.round(a.height*(142/a.width)))})}),o&&r(ft,{bmp:a,onClose:()=>s(!1)})]}):null}function ft({bmp:e,onClose:n}){const t=U(null);return j(()=>{const o=t.current;o&&(o.width=e.width,o.height=e.height,o.getContext("2d").drawImage(e,0,0))},[e]),r("div",{class:"snag-dk-lightbox",role:"dialog","aria-modal":"true","aria-label":p("shot.aria"),tabIndex:-1,ref:o=>o?.focus(),onKeyDown:o=>{o.key==="Escape"&&(o.stopPropagation(),n())},onClick:n,children:[r("canvas",{ref:t}),r("button",{type:"button",class:"snag-dk-link snag-dk-lightclose",onClick:n,children:p("shot.close")})]})}function mt({snag:e,loadShot:n}){const t=e.context;if(!t)return null;const o=e.attachments?.find(c=>c.kind==="screenshot"),s=t.derived,a=t.viewport,i=a?Math.round(a.dpr*100)/100:1;return r("div",{class:"snag-dk-cap",children:[o&&n&&r(gt,{att:o,load:n}),r("p",{class:"snag-dk-caplabel",children:p("capture.label")}),t.page?.route!==void 0&&r("p",{children:p("capture.page",{route:t.page.route})}),s&&a&&r(H,{children:[r("p",{children:s.os?p("capture.agent",{browser:s.browser,os:s.os}):p("capture.agent.noos",{browser:s.browser})}),r("p",{children:i===1?p("capture.device.at1x",{device:s.device,w:a.w,h:a.h}):p("capture.device",{device:s.device,w:a.w,h:a.h,dpr:i})})]}),t.capture?.reasons?.map(c=>r("p",{class:"snag-dk-capwhy",children:c},c)),t.capture?.blindSpots?.map(c=>r("p",{class:"snag-dk-capwhy",children:c},c)),(()=>{const c=ht(t.url);return c?r("p",{class:"snag-dk-capwhy",children:[p("detail.filedat",{query:c})," ",r("a",{class:"snag-dk-openq",href:t.url,target:"_blank",rel:"noreferrer",children:p("detail.openquery")})]}):null})()]})}function pn(e){const n=e.context?.url??e.route;return`${n}${n.includes("?")?"&":"?"}${En("t")}=${e.key}`}function _t({snag:e}){const[n,t]=z(!1),o=pn(e);return navigator.clipboard?r("button",{type:"button",class:"snag-dk-link",onClick:()=>void navigator.clipboard.writeText(o).then(()=>{t(!0),setTimeout(()=>t(!1),1500)},()=>{}),children:p(n?"permalink.copied":"permalink.copy")}):null}function kt({snag:e}){return navigator.clipboard?null:r("p",{class:"snag-dk-permaline",children:[r("span",{class:"snag-dk-permalabel",children:p("permalink.copy")})," ",r("span",{class:"snag-dk-permaurl",children:pn(e)})]})}function bt({snags:e,round:n,fallbackCursor:t,openId:o,onOpen:s,onStatus:a,onReply:i,onEdit:c,onDeleteComment:g,onDeleteThread:l,isMine:m,canDeleteOwnThread:x=!0,canModerate:u=!1,onShowAnyway:f,onAnnounce:S,loadShot:_}){const y=e.findIndex(w=>w.id===o),$=y>=0,v=w=>m?m(w):!0,E=$?y:Math.min(t,e.length),h=$?e[y]:n.find(w=>w.id===o),T=o?Ce.get(o)??"":"",[M,R]=z(T),[I,L]=z(T.length>0),b=U(null);j(()=>{I&&b.current?.focus()},[I]);const P=w=>{R(w),o&&(w?Ce.set(o,w):Ce.delete(o))};if(!h)return null;const F=h.comments[0],mn=n.filter(w=>w.route===h.route).findIndex(w=>w.id===h.id)+1;return r("div",{class:"snag-dk-detail",children:[r("div",{class:"snag-dk-detailhd",children:[r("button",{type:"button",class:"snag-dk-link",onClick:()=>s(null),"aria-label":p("dock.back.aria"),children:[r("span",{"aria-hidden":"true",children:"\u2190"})," ",p("dock.back")]}),r("span",{class:"snag-dk-dim",children:p("dock.position",{n:$?O(E+1):"\u2013",total:O(e.length)})}),r("span",{class:"snag-dk-nav",children:[r("button",{type:"button",class:"snag-dk-link",disabled:E<=0,"aria-label":p("dock.prev"),onClick:()=>s(e[E-1].id),children:"\u2191"}),r("button",{type:"button",class:"snag-dk-link",disabled:$?E>=e.length-1:E>=e.length,"aria-label":p("dock.next"),onClick:()=>s(e[$?E+1:E].id),children:"\u2193"})]})]}),r("div",{class:"snag-dk-card",children:[r("div",{class:"snag-dk-meta",children:[r("span",{class:"snag-dk-num",style:{background:xe(h.status),color:on(h.status)},children:mn}),r("strong",{children:F?.author.name??p("author.unknown")}),r("span",{class:"snag-dk-dim",children:h.key}),F&&r(dn,{iso:F.createdAt}),r(_t,{snag:h})]}),r("div",{class:"snag-dk-cardbody",children:sn(F?.body??"")}),r(kt,{snag:h}),F&&(v(F.author)||u)&&r(cn,{body:F.body,...v(F.author)?{onEdit:w=>c(F.id,w)}:{},deleteLabel:p("comment.delete"),...u||x&&h.comments.every(w=>v(w.author))?{onDelete:()=>l(h.id)}:{}})]}),r("label",{class:"snag-dk-field",children:[r("span",{class:"snag-dk-dim",children:p("field.status")}),r("select",{class:"snag-dk-select",style:{borderColor:xe(h.status)},value:h.status,onChange:w=>{const V=w.target.value;a(h.id,V),S?.(p("announce.status",{key:h.key,status:ye(V)}))},children:Se.map(w=>r("option",{value:w,children:ye(w)},w))})]}),r(mt,{snag:h,..._?{loadShot:_}:{}}),h.anchorReasons?.includes("hidden")&&r("p",{class:"snag-dk-moved-note",children:[p("detail.hidden")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>f?.(h),children:p("detail.hidden.show")})]}),h.anchorState!=="anchored"&&r("p",{class:"snag-dk-moved-note",children:[p(`detail.${h.anchorState}`,{label:h.anchor.label}),h.anchorReasons?.includes("budget-exceeded")&&` ${p("detail.unavailable")}`]}),h.anchorState!=="anchored"&&r(st,{anchor:h.anchor}),h.comments.length>1&&r("ul",{class:"snag-dk-replies-list",children:h.comments.slice(1).map(w=>r("li",{children:[r("strong",{children:w.author.name})," ",r(dn,{iso:w.createdAt}),sn(w.body??""),(v(w.author)||u)&&r(cn,{body:w.body,...v(w.author)?{onEdit:V=>c(w.id,V)}:{},deleteLabel:p("reply.delete"),onDelete:()=>g(w.id)})]},w.id))}),I?r("div",{class:"snag-dk-replybox",children:[r("textarea",{ref:b,class:"snag-text",rows:2,enterkeyhint:"enter","aria-label":p("reply.aria"),placeholder:p("reply.placeholder"),value:M,onInput:w=>P(w.target.value),onKeyDown:w=>{w.key==="Enter"&&(w.metaKey||w.ctrlKey)&&(w.preventDefault(),M.trim()&&(i(h.id,M.trim()),P(""),L(!1))),w.key==="Escape"&&(w.stopPropagation(),w.target.blur())}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{P(""),L(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!M.trim(),onClick:()=>{i(h.id,M.trim()),P(""),L(!1)},children:p("reply.send")})]})]}):r("button",{type:"button",class:"snag-dk-addreply",onClick:()=>L(!0),children:p("reply.add")})]})}function xt(e){const n=e.openId?e.snags.find(_=>_.id===e.openId):null,t=U(null),o=e.clusterFilter?e.snags.filter(_=>e.clusterFilter.includes(_.id)):e.snags,s=nt(o.filter(_=>et(_,e.filter,e.seenAt)),e.filter,e.route,e.seenAt),a=tt(s,e.filter.sort),i=e.filter.sort==="page"?dt(a,e.route):[{route:"",here:!1,snags:a}],c=i.flatMap(_=>_.snags),g=U(0),l=c.findIndex(_=>_.id===e.openId);l>=0&&(g.current=l);const m=U(null),[x,u]=z(null);e.openId?(m.current={id:e.openId,absent:l===-1},x&&u(null)):m.current?.absent&&x!==m.current.id&&(u(m.current.id),m.current=null),j(()=>{t.current?.focus()},[e.openId]),j(()=>{if(!(window.matchMedia?.("(pointer: coarse)").matches??!1))return;const _=t.current;return _?Un(_):void 0},[]);const f=U({snag:n,onStatus:e.onStatus});f.current={snag:n,onStatus:e.onStatus},j(()=>{const _=y=>{const{snag:$,onStatus:v}=f.current;if(!$||y.metaKey||y.ctrlKey||y.altKey||y.composedPath().some(T=>{const M=T;if(!M?.tagName)return!1;const R=M.tagName.toLowerCase();return R==="textarea"||R==="select"?!0:R==="input"?!/^(button|submit|checkbox|radio)$/i.test(M.type):M.isContentEditable?!0:/^(textbox|searchbox|combobox)$/.test(M.getAttribute?.("role")??"")}))return;const h=Number(y.key);if(h>=1&&h<=Se.length){y.preventDefault(),v($.id,Se[h-1]);return}(y.key==="r"||y.key==="R")&&(y.preventDefault(),v($.id,$.status==="resolved"?"open":"resolved"))};return document.addEventListener("keydown",_),()=>document.removeEventListener("keydown",_)},[]);const S=window.matchMedia?.("(pointer: coarse)").matches??!1;return r("aside",{ref:t,class:"snag-dk",role:"complementary","aria-label":p("dock.aria"),tabIndex:-1,onKeyDown:_=>{_.key==="Escape"&&(_.stopPropagation(),e.openId?e.onOpen(null):e.onClose())},children:[S&&r("div",{class:"snag-dk-scrim","aria-hidden":"true",onClick:e.onClose}),S&&r("div",{class:"snag-dk-grab","aria-hidden":"true",onPointerDown:_=>{const y=_.clientY,$=_.currentTarget;try{$.setPointerCapture(_.pointerId)}catch{}$.onpointermove=v=>{v.clientY-y>56&&($.onpointermove=null,e.onClose())},$.onpointerup=()=>$.onpointermove=null},children:r("span",{})}),r("header",{class:"snag-dk-hd",children:[r("strong",{children:p(n?"dock.title.detail":"dock.title.list")}),r("button",{type:"button",class:"snag-dk-link",onClick:e.onClose,"aria-label":p("dock.close"),children:"\u2715"})]}),n?r(bt,{...e,snags:c,round:e.snags,fallbackCursor:g.current},n.id):r(pt,{...e,groups:i,hiddenNote:x,onHiddenShow:_=>{u(null),e.onOpen(_)}})]})}const hn=360,yt=` .snag-dk{position:fixed;inset-block:0;inset-inline-end:0;width:${hn}px;max-width:100vw;z-index:${In.dock};background:${d.bg};color:${d.fg};display:flex;flex-direction:column;font:400 13px/1.45 ${d.font};box-shadow:${d.shadow};border-inline-start:1px solid ${d.border};pointer-events:auto;overscroll-behavior:contain}.snag-dk-filters{padding:8px 12px 6px;border-block-end:1px solid ${d.border};display:grid;gap:6px}.snag-dk-search{width:100%;box-sizing:border-box;font-size:12px;padding:5px 8px}.snag-dk-chiphead{display:flex;justify-content:space-between;align-items:center;padding-inline-end:8px}.snag-dk-chips{display:grid;grid-template-columns:1fr 1fr;gap:4px}.snag-dk-chip{font:500 11px/1.2 ${d.font};color:${d.fg};padding:5px 8px;border-radius:6px;border:1px solid ${d.border};background:none;cursor:pointer;text-align:start;display:flex;justify-content:space-between;align-items:center;gap:4px}.snag-dk-chip[aria-pressed="true"]{font-weight:600}.snag-dk-chip-stray{color:${d.muted};cursor:default}.snag-dk-menus{display:flex;gap:10px;position:relative}.snag-dk-menuwrap{position:relative}.snag-dk-menugroup{display:flex;flex-direction:column;gap:1px;padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid ${d.border}}.snag-dk-menugroup-last{padding-bottom:0;margin-bottom:0;border-bottom:0}.snag-dk-menutitle{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:${d.muted};padding:2px 8px 4px}.snag-dk-menubg{position:absolute;inset:-200px -20px -2000px;background:transparent;z-index:2}.snag-dk-menu{position:absolute;inset-block-start:100%;inset-inline-start:0;z-index:3;min-width:150px;background:${d.bg};border:1px solid ${d.border};border-radius:6px;box-shadow:${d.shadow};display:grid;padding:4px}.snag-dk-menu button{font:400 12px/1.3 ${d.font};color:${d.fg};background:none;border:0;text-align:start;padding:5px 8px;border-radius:4px;cursor:pointer;display:flex;gap:4px}.snag-dk-menu button:hover{background:color-mix(in srgb,${d.fg} 8%,transparent)}.snag-dk-menus-up{position:relative}.snag-dk-menu-up{inset-block-start:auto;inset-block-end:100%;margin-block-end:4px}.snag-dk-menu-form{padding:8px;gap:6px;min-width:224px}.snag-dk-menu-form label:not(.snag-dk-pageonly){display:grid;gap:2px;font:600 10px/1.4 ${d.font};letter-spacing:.05em;text-transform:uppercase;color:${d.muted}}.snag-dk-menu-form select{font:400 12px/1.3 ${d.font};color:${d.fg};background:${d.bg};border:1px solid ${d.border};border-radius:4px;padding:4px}.snag-dk-pageonly{display:flex;align-items:center;gap:6px;font-size:12px;color:${d.fg};cursor:pointer}.snag-dk-permaline{margin:6px 0 0;font-size:11px;color:${d.muted};overflow-wrap:anywhere}.snag-dk-permalabel{font-weight:600}.snag-dk-permaurl{user-select:all}.snag-dk:focus{outline:none}@media (pointer:coarse){.snag-dk{inset-block-start:auto;inset-inline-start:0;width:auto;height:82vh;border-radius:14px 14px 0 0;box-sizing:border-box;padding-bottom:max(var(${k.tbH},68px),var(${k.kb},0px));padding-inline:env(safe-area-inset-left) env(safe-area-inset-right)}.snag-dk-scrim{position:fixed;inset:0;background:#0005;touch-action:none;z-index:-1}.snag-dk-grab{display:flex;justify-content:center;padding:10px 0 4px;touch-action:none}.snag-dk-grab span{width:36px;height:4px;border-radius:2px;background:${d.border}}.snag-dk-item{min-height:56px}.snag-dk-link{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.snag-dk-select{min-height:44px}.snag-dk-chip{min-height:44px}.snag-dk-search{min-height:44px}}@media (pointer:fine){.snag-dk-scrim,.snag-dk-grab{display:none}}.snag-dk-hd{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid ${d.border};flex:0 0 auto}.snag-dk-scroll{overflow-y:auto;flex:1 1 auto}.snag-dk-list{list-style:none;margin:0;padding:0}.snag-dk-grouphd{position:sticky;top:0;z-index:1;margin:0;display:flex;align-items:center;gap:8px;padding:7px 14px;font:600 11px/1.45 ${d.font};letter-spacing:.02em;background:${d.sunken};border-bottom:1px solid ${d.border}}.snag-dk-route{color:${d.fg};overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;direction:ltr;unicode-bidi:isolate}.snag-dk-grouphd .snag-dk-dim{margin-inline-start:auto;font-weight:400;flex:0 0 auto}.snag-dk-goto{flex:0 0 auto;color:${d.muted};font-size:13px;line-height:1}.snag-dk-dev{flex:0 0 auto;color:${d.muted};display:flex;align-items:center}.snag-dk-item:hover .snag-dk-goto,.snag-dk-item:focus-visible .snag-dk-goto{color:${d.accent}}.snag-dk-item{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:start;background:transparent;border:0;border-bottom:1px solid ${d.border};color:inherit;font:inherit;padding:11px 14px;cursor:pointer;transition:background ${d.motion}}.snag-dk-item:hover{background:${d.hover}}.snag-dk-item:focus-visible{outline:2px solid ${d.focus};outline-offset:-2px}.snag-dk-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%;margin-block-start:8px;background:transparent}.snag-dk-dot--on{background:${d.accent}}.snag-dk-newpill{display:block;width:100%;box-sizing:border-box;text-align:start;background:${d.sunken};border:0;border-block-end:1px solid ${d.border};color:${d.accent};font:600 12px/1.45 ${d.font};padding:8px 14px;cursor:pointer;flex:0 0 auto}.snag-dk-newpill:hover{background:${d.hover}}.snag-dk-newpill:focus-visible{outline:2px solid ${d.focus};outline-offset:-2px}.snag-dk-num{flex:0 0 22px;height:22px;border-radius:50% 50% 50% 2px;font-weight:600;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.snag-dk-num--orphaned{border:2px solid currentColor;box-shadow:inset 0 0 0 2px currentColor}.snag-dk-num--approximate{border:2px dashed currentColor}.snag-dk-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.snag-dk-body,.snag-dk-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dk-sub{font-size:11px}.snag-dk-dim{color:${d.muted}}.snag-dk-moved{color:${d.anchorOrphan};font-weight:600}.snag-dk-replies{background:${d.surface};border-radius:999px;padding:1px 7px;font-size:11px;flex:0 0 auto}.snag-dk-empty{padding:28px 16px;text-align:center;flex:1 1 auto}.snag-dk-empty p{margin:0 0 4px}.snag-dk-notice{margin:0;padding:11px 14px;font-size:12px;color:${d.muted};border-bottom:1px solid ${d.border};flex:0 0 auto}.snag-dk-foot{display:flex;gap:6px;padding:10px 14px;border-top:1px solid ${d.border};flex:0 0 auto}.snag-dk-link{background:transparent;border:0;color:${d.accent};font:inherit;cursor:pointer;padding:4px 6px;border-radius:calc(${d.radius} - 2px);transition:background ${d.motion}}.snag-dk-link:hover:not(:disabled){background:${d.hover}}.snag-dk-link:disabled{color:${d.disabled};cursor:not-allowed}.snag-dk-link:focus-visible{outline:2px solid ${d.focus};outline-offset:1px}.snag-dk-detail{padding:12px 14px;overflow-y:auto;flex:1 1 auto;display:flex;flex-direction:column;gap:12px}.snag-dk-detailhd{display:flex;align-items:center;justify-content:space-between;gap:8px}.snag-dk-nav{display:flex;gap:2px}.snag-dk-card{background:${d.surface};border-radius:${d.radius};padding:11px}.snag-dk-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:6px}.snag-md{overflow-wrap:anywhere}.snag-md>*{margin:0}.snag-md>*+*{margin-block-start:6px}.snag-md p{white-space:pre-wrap}.snag-md ul,.snag-md ol{padding-inline-start:20px}.snag-md li+li{margin-block-start:2px}.snag-md code{background:${d.sunken};border-radius:3px;padding:1px 4px;font-size:.92em;font-family:ui-monospace,monospace}.snag-md pre{background:${d.sunken};border-radius:${d.radius};padding:8px 10px;overflow-x:auto}.snag-md pre code{background:none;padding:0;font-size:.92em}.snag-md a{color:${d.accent}}.snag-dk-field{display:flex;flex-direction:column;gap:4px;font-size:12px}.snag-dk-select{background:${d.surface};color:inherit;border:2px solid;border-radius:${d.radius};padding:7px 9px;font:inherit;min-height:34px}.snag-dk-done{color:${d.muted};text-decoration:line-through}.snag-dk-meta .snag-dk-num{margin-inline-end:2px}.snag-dk-cap{background:${d.sunken};border-radius:${d.radius};padding:9px 11px;display:flex;flex-direction:column;gap:1px;font-size:12px;overflow-wrap:anywhere}.snag-dk-cap p{margin:0}.snag-dk-shot{padding:0;border:1px solid ${d.border};border-radius:calc(${d.radius} - 2px);background:none;cursor:zoom-in;overflow:hidden;line-height:0;align-self:flex-start;margin-block-end:6px}.snag-dk-shot canvas{display:block;max-width:100%}.snag-dk-lightbox{position:fixed;inset:0;z-index:1;background:#000c;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}.snag-dk-lightbox canvas{max-width:100%;max-height:100%;object-fit:contain;box-shadow:${d.shadow};background:${d.bg}}.snag-dk-lightclose{position:absolute;inset-block-start:12px;inset-inline-end:16px;color:#fff}.snag-dk-caplabel{font-weight:600;font-size:11px;letter-spacing:.02em;margin-bottom:3px!important}.snag-dk-capwhy{color:${d.muted};font-size:11px;margin-top:5px!important}.snag-dk-moved-note{margin:0;padding:8px 10px;font-size:12px;background:${d.sunken};border-inline-start:3px solid ${d.anchorOrphan};border-radius:${d.radius}}.snag-dk-anchor{font-size:12px;border:1px solid ${d.border};border-radius:${d.radius};padding:6px 10px;background:${d.sunken}}.snag-dk-anchor summary{cursor:pointer;color:${d.muted};font-weight:600;list-style:revert}.snag-dk-anchor dl{margin:8px 0 2px;display:grid;gap:6px}.snag-dk-anchor dt{color:${d.muted};font-size:11px;letter-spacing:.03em;text-transform:uppercase}.snag-dk-anchor dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;user-select:text}.snag-dk-replies-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.snag-dk-replies-list li{background:${d.sunken};border-radius:${d.radius};padding:9px;overflow-wrap:anywhere}.snag-dk-acts{display:flex;gap:2px;margin-top:6px}.snag-dk-act{background:transparent;border:0;color:${d.muted};font:inherit;font-size:11px;cursor:pointer;padding:3px 6px;border-radius:calc(${d.radius} - 3px);transition:background ${d.motion},color ${d.motion}}.snag-dk-more{font-size:14px;line-height:1;letter-spacing:1px}.snag-dk-act:hover{background:${d.hover};color:inherit}.snag-dk-act:focus-visible{outline:2px solid ${d.focus};outline-offset:1px}.snag-dk-act--danger:hover{color:${d.anchorOrphan}}.snag-dk-menu .snag-dk-act--danger{color:${d.fg}}.snag-dk-menu .snag-dk-act--danger:hover{color:${d.anchorOrphan}}.snag-dk-armed{color:${d.anchorOrphan};font-weight:600}.snag-dk-clear{margin-inline-start:auto}.snag-dk-menu .snag-dk-clear{margin-inline-start:0}.snag-dk-editbox{display:flex;flex-direction:column;gap:8px;margin-top:8px}.snag-dk-addreply{background:transparent;border:1px dashed ${d.border};color:${d.muted};border-radius:${d.radius};padding:9px;font:inherit;cursor:pointer;text-align:start;transition:border-color ${d.motion},color ${d.motion}}.snag-dk-addreply:hover{border-color:${d.accent};color:inherit}.snag-dk-replybox{display:flex;flex-direction:column;gap:8px}`;function vt(e,n,t){const o=e.ownerDocument??document;an(e,"form",Hn),an(e,"dock",yt);const s=o.createElement("div");(t??e).appendChild(s);const a=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1,i=g=>{const l=e.host;g&&!a?l.style.setProperty(k.dockW,`${hn}px`):l.style.removeProperty(k.dockW)};i(!0);const c=g=>{Fe(r(xt,{...g}),s)};return c(n),{update:c,close(){i(!1),Fe(null,s),s.remove()}}}const gn=24;function fn(e,n){const t=e.innerHeight,o=n.querySelector(".snag-dk");if(!o)return{top:0,bottom:t};const s=o.getBoundingClientRect();return s.height>=t-1?{top:0,bottom:t}:{top:0,bottom:Math.max(0,s.top)}}function wt(e,n,t){const o=t.anchor.rect;if(!o)return;const s=t.anchor.offset??{fy:.5},a=o.y+o.h*s.fy,i=fn(e,n),c=a-e.scrollY;if(c>=i.top+gn&&c<=i.bottom-gn)return;const g=e.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;e.scrollTo({top:Math.max(0,a-(i.top+i.bottom)/2),behavior:g?"auto":"smooth"})}export{vt as openDock,wt as scrollToSnag,fn as visibleStrip};
|
|
1
|
+
var X,E,ze,K,Ue,je,He,_e,Z,G,Fe,ke,be,xe,ee={},ne=[],Nn=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,te=Array.isArray;function F(e,n){for(var t in n)e[t]=n[t];return e}function ye(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function O(e,n,t){var o,s,a,i={};for(a in n)a=="key"?o=n[a]:a=="ref"?s=n[a]:i[a]=n[a];if(arguments.length>2&&(i.children=arguments.length>3?X.call(arguments,2):t),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)i[a]===void 0&&(i[a]=e.defaultProps[a]);return oe(e,i,o,s,null)}function oe(e,n,t,o,s){var a={type:e,props:n,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++ze,__i:-1,__u:0};return s==null&&E.vnode!=null&&E.vnode(a),a}function L(e){return e.children}function re(e,n){this.props=e,this.context=n}function q(e,n){if(n==null)return e.__?q(e.__,e.__i+1):null;for(var t;n<e.__k.length;n++)if((t=e.__k[n])!=null&&t.__e!=null)return t.__e;return typeof e.type=="function"?q(e):null}function In(e){if(e.__P&&e.__d){var n=e.__v,t=n.__e,o=[],s=[],a=F({},n);a.__v=n.__v+1,E.vnode&&E.vnode(a),ve(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[t]:null,o,t??q(n),!!(32&n.__u),s),a.__v=n.__v,a.__.__k[a.__i]=a,Je(o,a,s),n.__e=n.__=null,a.__e!=t&&Be(a)}}function Be(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(n){if(n!=null&&n.__e!=null)return e.__e=e.__c.base=n.__e}),Be(e)}function Ke(e){(!e.__d&&(e.__d=!0)&&K.push(e)&&!ae.__r++||Ue!=E.debounceRendering)&&((Ue=E.debounceRendering)||je)(ae)}function ae(){try{for(var e,n=1;K.length;)K.length>n&&K.sort(He),e=K.shift(),n=K.length,In(e)}finally{K.length=ae.__r=0}}function qe(e,n,t,o,s,a,i,d,g,l,f){var v,u,h,C,b,$,S=o&&o.__k||ne,w=n.length;for(g=On(t,n,S,g,w),v=0;v<w;v++)(h=t.__k[v])!=null&&(u=h.__i!=-1&&S[h.__i]||ee,h.__i=v,$=ve(e,h,u,s,a,i,d,g,l,f),C=h.__e,h.ref&&u.ref!=h.ref&&(u.ref&&we(u.ref,null,h),f.push(h.ref,h.__c||C,h)),b==null&&C!=null&&(b=C),4&h.__u?(g=We(h,g,e),u.__e&&(u.__e=null)):typeof h.type=="function"&&$!==void 0?g=$:C&&(g=C.nextSibling),h.__u&=-7);return t.__e=b,g}function On(e,n,t,o,s){var a,i,d,g,l,f=t.length,v=f,u=0;for(e.__k=new Array(s),a=0;a<s;a++)(i=n[a])!=null&&typeof i!="boolean"&&typeof i!="function"?(typeof i=="string"||typeof i=="number"||typeof i=="bigint"||i.constructor==String?i=e.__k[a]=oe(null,i,null,null,null):te(i)?i=e.__k[a]=oe(L,{children:i},null,null,null):i.constructor===void 0&&i.__b>0?i=e.__k[a]=oe(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):e.__k[a]=i,g=a+u,i.__=e,i.__b=e.__b+1,d=null,(l=i.__i=Ln(i,t,g,v))!=-1&&(v--,(d=t[l])&&(d.__u|=2)),d==null||d.__v==null?(l==-1&&(s>f?u--:s<f&&u++),typeof i.type!="function"&&(i.__u|=4)):l!=g&&(l==g-1?u--:l==g+1?u++:(l>g?u--:u++,i.__u|=4))):e.__k[a]=null;if(v)for(a=0;a<f;a++)(d=t[a])!=null&&(2&d.__u)==0&&(d.__e==o&&(o=q(d)),Xe(d,d));return o}function We(e,n,t){var o,s;if(typeof e.type=="function"){for(o=e.__k,s=0;o&&s<o.length;s++)o[s]&&(o[s].__=e,n=We(o[s],n,t));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=q(e)),n=t.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function Ln(e,n,t,o){var s,a,i,d=e.key,g=e.type,l=n[t],f=l!=null&&(2&l.__u)==0;if(l===null&&d==null||f&&d==l.key&&g==l.type)return t;if(o>(f?1:0)){for(s=t-1,a=t+1;s>=0||a<n.length;)if((l=n[i=s>=0?s--:a++])!=null&&(2&l.__u)==0&&d==l.key&&g==l.type)return i}return-1}function Ye(e,n,t){n[0]=="-"?e.setProperty(n,t??""):e[n]=t==null?"":typeof t!="number"||Nn.test(n)?t:t+"px"}function se(e,n,t,o,s){var a,i;e:if(n=="style")if(typeof t=="string")e.style.cssText=t;else{if(typeof o=="string"&&(e.style.cssText=o=""),o)for(n in o)t&&n in t||Ye(e.style,n,"");if(t)for(n in t)o&&t[n]==o[n]||Ye(e.style,n,t[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(Fe,"$1")),i=n.toLowerCase(),n=i in e||n=="onFocusOut"||n=="onFocusIn"?i.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=t,t?o?t[G]=o[G]:(t[G]=ke,e.addEventListener(n,a?xe:be,a)):e.removeEventListener(n,a?xe:be,a);else{if(s=="http://www.w3.org/2000/svg")n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(n!="width"&&n!="height"&&n!="href"&&n!="list"&&n!="form"&&n!="tabIndex"&&n!="download"&&n!="rowSpan"&&n!="colSpan"&&n!="role"&&n!="popover"&&n in e)try{e[n]=t??"";break e}catch{}typeof t=="function"||(t==null||t===!1&&n[4]!="-"?e.removeAttribute(n):e.setAttribute(n,n=="popover"&&t==1?"":t))}}function Ge(e){return function(n){if(this.l){var t=this.l[n.type+e];if(n[Z]==null)n[Z]=ke++;else if(n[Z]<t[G])return;return t(E.event?E.event(n):n)}}}function ve(e,n,t,o,s,a,i,d,g,l){var f,v,u,h,C,b,$,S,w,T,m,k,M,R,B,z,x=n.type;if(n.constructor!==void 0)return null;128&t.__u&&(g=!!(32&t.__u),a=[d=n.__e=t.__e]),(f=E.__b)&&f(n);e:if(typeof x=="function"){v=i.length;try{if(w=n.props,T=x.prototype&&x.prototype.render,m=(f=x.contextType)&&o[f.__c],k=f?m?m.props.value:f.__:o,t.__c?S=(u=n.__c=t.__c).__=u.__E:(T?n.__c=u=new x(w,k):(n.__c=u=new re(w,k),u.constructor=x,u.render=Un),m&&m.sub(u),u.state||(u.state={}),u.__n=o,h=u.__d=!0,u.__h=[],u._sb=[]),T&&u.__s==null&&(u.__s=u.state),T&&x.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=F({},u.__s)),F(u.__s,x.getDerivedStateFromProps(w,u.__s))),C=u.props,b=u.state,u.__v=n,h)T&&x.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),T&&u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(T&&x.getDerivedStateFromProps==null&&w!==C&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps(w,k),n.__v==t.__v||!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate(w,u.__s,k)===!1){n.__v!=t.__v&&(u.props=w,u.state=u.__s,u.__d=!1),n.__e=t.__e,n.__k=t.__k,n.__k.some(function(P){P&&(P.__=n)}),ne.push.apply(u.__h,u._sb),u._sb=[],u.__h.length&&i.push(u),d=q(t);break e}u.componentWillUpdate!=null&&u.componentWillUpdate(w,u.__s,k),T&&u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(C,b,$)})}if(u.context=k,u.props=w,u.__P=e,u.__e=!1,M=E.__r,R=0,T)u.state=u.__s,u.__d=!1,M&&M(n),f=u.render(u.props,u.state,u.context),ne.push.apply(u.__h,u._sb),u._sb=[];else do u.__d=!1,M&&M(n),f=u.render(u.props,u.state,u.context),u.state=u.__s;while(u.__d&&++R<25);u.state=u.__s,u.getChildContext!=null&&(o=F(F({},o),u.getChildContext())),T&&!h&&u.getSnapshotBeforeUpdate!=null&&($=u.getSnapshotBeforeUpdate(C,b)),B=f!=null&&f.type===L&&f.key==null?Qe(f.props.children):f,d=qe(e,te(B)?B:[B],n,t,o,s,a,i,d,g,l),u.base=n.__e,n.__u&=-161,u.__h.length&&i.push(u),S&&(u.__E=u.__=null)}catch(P){if(i.length=v,n.__v=null,g||a!=null){if(P.then){for(n.__u|=g?160:128;d&&d.nodeType==8&&d.nextSibling;)d=d.nextSibling;a!=null&&(a[a.indexOf(d)]=null),n.__e=d}else if(a!=null)for(z=a.length;z--;)ye(a[z])}else n.__e=t.__e;n.__k==null&&(n.__k=t.__k||[]),P.then||Ve(n),E.__e(P,n,t)}}else a==null&&n.__v==t.__v?(n.__k=t.__k,n.__e=t.__e):d=n.__e=zn(t.__e,n,t,o,s,a,i,g,l);return(f=E.diffed)&&f(n),128&n.__u?void 0:d}function Ve(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ve))}function Je(e,n,t){for(var o=0;o<t.length;o++)we(t[o],t[++o],t[++o]);E.__c&&E.__c(n,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(a){a.call(s)})}catch(a){E.__e(a,s.__v)}})}function Qe(e){return typeof e!="object"||e==null||e.__b>0?e:te(e)?e.map(Qe):e.constructor!==void 0?null:F({},e)}function zn(e,n,t,o,s,a,i,d,g){var l,f,v,u,h,C,b,$=t.props||ee,S=n.props,w=n.type;if(w=="svg"?s="http://www.w3.org/2000/svg":w=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),a!=null){for(l=0;l<a.length;l++)if((h=a[l])&&"setAttribute"in h==!!w&&(w?h.localName==w:h.nodeType==3)){e=h,a[l]=null;break}}if(e==null){if(w==null)return document.createTextNode(S);e=document.createElementNS(s,w,S.is&&S),d&&(E.__m&&E.__m(n,a),d=!1),a=null}if(w==null)$===S||d&&e.data==S||(e.data=S);else{if(a=w=="textarea"&&S.defaultValue!=null?null:a&&X.call(e.childNodes),!d&&a!=null)for($={},l=0;l<e.attributes.length;l++)$[(h=e.attributes[l]).name]=h.value;for(l in $)h=$[l],l=="dangerouslySetInnerHTML"?v=h:l=="children"||l in S||l=="value"&&"defaultValue"in S||l=="checked"&&"defaultChecked"in S||se(e,l,null,h,s);for(l in S)h=S[l],l=="children"?u=h:l=="dangerouslySetInnerHTML"?f=h:l=="value"?C=h:l=="checked"?b=h:d&&typeof h!="function"||$[l]===h||se(e,l,h,$[l],s);if(f)d||v&&(f.__html==v.__html||f.__html==e.innerHTML)||(e.innerHTML=f.__html),n.__k=[];else if(v&&(e.innerHTML=""),qe(n.type=="template"?e.content:e,te(u)?u:[u],n,t,o,w=="foreignObject"?"http://www.w3.org/1999/xhtml":s,a,i,a?a[0]:t.__k&&q(t,0),d,g),a!=null)for(l=a.length;l--;)ye(a[l]);d&&w!="textarea"||(l="value",w=="progress"&&C==null?e.removeAttribute("value"):C!=null&&(C!==e[l]||w=="progress"&&!C||w=="option"&&C!=$[l])&&se(e,l,C,$[l],s),l="checked",b!=null&&b!=e[l]&&se(e,l,b,$[l],s))}return e}function we(e,n,t){try{if(typeof e=="function"){var o=typeof e.__u=="function";o&&e.__u(),o&&n==null||(e.__u=e(n))}else e.current=n}catch(s){E.__e(s,t)}}function Xe(e,n,t){var o,s;if(E.unmount&&E.unmount(e),(o=e.ref)&&(o.current&&o.current!=e.__e||we(o,null,n)),(o=e.__c)!=null){if(o.componentWillUnmount)try{o.componentWillUnmount()}catch(a){E.__e(a,n)}o.base=o.__P=o.__n=null}if(o=e.__k)for(s=0;s<o.length;s++)o[s]&&Xe(o[s],n,t||typeof e.type!="function");t||ye(e.__e),e.__c=e.__=e.__e=void 0}function Un(e,n,t){return this.constructor(e,t)}function Ze(e,n,t){var o,s,a,i;n==document&&(n=document.documentElement),E.__&&E.__(e,n),s=(o=!1)?null:n.__k,a=[],i=[],ve(n,e=n.__k=O(L,null,[e]),s||ee,ee,n.namespaceURI,s?null:n.firstChild?X.call(n.childNodes):null,a,s?s.__e:n.firstChild,o,i),Je(a,e,i),e.props.children=null}X=ne.slice,E={__e:function(e,n,t,o){for(var s,a,i;n=n.__;)if((s=n.__c)&&!s.__)try{if((a=s.constructor)&&a.getDerivedStateFromError!=null&&(s.setState(a.getDerivedStateFromError(e)),i=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(e,o||{}),i=s.__d),i)return s.__E=s}catch(d){e=d}throw e}},ze=0,re.prototype.setState=function(e,n){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=F({},this.state),typeof e=="function"&&(e=e(F({},t),this.props)),e&&F(t,e),e!=null&&this.__v&&(n&&this._sb.push(n),Ke(this))},re.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ke(this))},re.prototype.render=L,K=[],je=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,He=function(e,n){return e.__v.__b-n.__v.__b},ae.__r=0,_e=Math.random().toString(8),Z="__d"+_e,G="__a"+_e,Fe=/(PointerCapture)$|Capture$/i,ke=0,be=Ge(!1),xe=Ge(!0);var jn=0;function r(e,n,t,o,s,a){n||(n={});var i,d,g=n;if("ref"in g)for(d in g={},n)d=="ref"?i=n[d]:g[d]=n[d];var l={type:e,props:g,key:t,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--jn,__i:-1,__u:0,__source:s,__self:a};if(typeof e=="function"&&(i=e.defaultProps))for(d in i)g[d]===void 0&&(g[d]=i[d]);return E.vnode&&E.vnode(l),l}const Hn="Snagset",Fn="snagset",Bn="snagset:",Kn="Snagset",qn="Snag",Wn="Snags",y={font:"--snag-font",accent:"--snag-accent",onAccent:"--snag-onAccent",bg:"--snag-bg",fg:"--snag-fg",muted:"--snag-muted",border:"--snag-border",radius:"--snag-radius",shadow:"--snag-shadow",z:"--snag-z",motion:"--snag-motion",surface:"--snag-surface",sunken:"--snag-sunken",hover:"--snag-hover",focus:"--snag-focus",disabled:"--snag-disabled",statusOpen:"--snag-status-open",statusProgress:"--snag-status-progress",statusReview:"--snag-status-review",statusResolved:"--snag-status-resolved",anchorOrphan:"--snag-anchor-orphan",tbH:"--snag-tb-h",dockW:"--snag-dock-w",kb:"--snag-kb",thumbX:"--snag-thumb-x",thumbW:"--snag-thumb-w"},Yn=e=>`var(${y[e]})`,Gn=e=>"snag_"+e,en={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},nn="snag:identity",Vn="data-snag-theme";var V,D,$e,tn,ie=0,on=[],A=E,rn=A.__b,an=A.__r,sn=A.diffed,ln=A.__c,cn=A.unmount,dn=A.__;function Se(e,n){A.__h&&A.__h(D,e,ie||n),ie=0;var t=D.__H||(D.__H={__:[],__h:[]});return e>=t.__.length&&t.__.push({}),t.__[e]}function N(e){return ie=1,Jn(gn,e)}function Jn(e,n,t){var o=Se(V++,2);if(o.t=e,!o.__c&&(o.__=[gn(void 0,n),function(d){var g=o.__N?o.__N[0]:o.__[0],l=o.t(g,d);g!==l&&(o.__N=[l,o.__[1]],o.__c.setState({}))}],o.__c=D,!D.__f)){var s=function(d,g,l){if(!o.__c.__H)return!0;var f=!1,v=o.__c.props!==d;if(o.__c.__H.__.some(function(h){if(h.__N){f=!0;var C=h.__[0];h.__=h.__N,h.__N=void 0,C!==h.__[0]&&(v=!0)}}),a){var u=a.call(this,d,g,l);return f?u||v:u}return!f||v};D.__f=!0;var a=D.shouldComponentUpdate,i=D.componentWillUpdate;D.componentWillUpdate=function(d,g,l){if(this.__e){var f=a;a=void 0,s(d,g,l),a=f}i&&i.call(this,d,g,l)},D.shouldComponentUpdate=s}return o.__N||o.__}function U(e,n){var t=Se(V++,3);!A.__s&&pn(t.__H,n)&&(t.__=e,t.u=n,D.__H.__h.push(t))}function j(e){return ie=5,Qn(function(){return{current:e}},[])}function Qn(e,n){var t=Se(V++,7);return pn(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}function Xn(){for(var e;e=on.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(le),n.__h.some(Ce),n.__h=[]}catch(t){n.__h=[],A.__e(t,e.__v)}}}A.__b=function(e){D=null,rn&&rn(e)},A.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),dn&&dn(e,n)},A.__r=function(e){an&&an(e),V=0;var n=(D=e.__c).__H;n&&($e===D?(n.__h=[],D.__h=[],n.__.some(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(n.__h.some(le),n.__h.some(Ce),n.__h=[],V=0)),$e=D},A.diffed=function(e){sn&&sn(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(on.push(n)!==1&&tn===A.requestAnimationFrame||((tn=A.requestAnimationFrame)||Zn)(Xn)),n.__H.__.some(function(t){t.u&&(t.__H=t.u,t.u=void 0)})),$e=D=null},A.__c=function(e,n){n.some(function(t){try{t.__h.some(le),t.__h=t.__h.filter(function(o){return!o.__||Ce(o)})}catch(o){n.some(function(s){s.__h&&(s.__h=[])}),n=[],A.__e(o,t.__v)}}),ln&&ln(e,n)},A.unmount=function(e){cn&&cn(e);var n,t=e.__c;t&&t.__H&&(t.__H.__.some(function(o){try{le(o)}catch(s){n=s}}),t.__H=void 0,n&&A.__e(n,t.__v))};var un=typeof requestAnimationFrame=="function";function Zn(e){var n,t=function(){clearTimeout(o),un&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,35);un&&(n=requestAnimationFrame(t))}function le(e){var n=D,t=e.__c;typeof t=="function"&&(e.__c=void 0,t()),D=n}function Ce(e){var n=D;e.__c=e.__(),D=n}function pn(e,n){return!e||e.length!==n.length||n.some(function(t,o){return t!==e[o]})}function gn(e,n){return typeof n=="function"?n(e):n}const et={product:Hn,set:Kn,item:qn,items:Wn};function hn(e){return(n,t)=>(e[n]??"").replace(/\{(\w+)\}/g,(o,s)=>{const a=t?.[s]??et[s];return a===void 0?o:String(a)})}const I=e=>new Intl.NumberFormat().format(e),fn={"where.anchored":"{label}","where.approximate":"position approximate \u2014 the page changed","where.orphaned":"moved \u2014 the element is gone","status.open":"Active","status.progress":"In progress","status.review":"In review","status.resolved":"Resolved","author.unknown":"Someone","label.image":"an image","label.link":"a link","label.button":"a button","label.tag":"the {tag}"},nt=hn(fn),ce={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},Ee=e=>ce[e]?.colour??"#8a8f98",mn=e=>e==="open"||e==="review"?"#fff":"#16161a",Me=e=>e in ce?nt(`status.${e}`):e,c=Object.fromEntries(Object.keys(y).map(e=>[e,Yn(e)])),tt=Object.entries(ce).map(([e,n])=>` ${y[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${n.colour};`).join(`
|
|
2
|
+
`);`${c.font}${c.fg}${y.font}${y.accent}${y.bg}${y.fg}${y.muted}${y.border}${y.radius}${y.shadow}${y.z}${y.motion}${y.surface}${c.fg}${c.bg}${y.sunken}${c.fg}${c.bg}${y.hover}${c.fg}${c.bg}${y.onAccent}${y.focus}${c.accent}${c.fg}${y.disabled}${c.muted}${c.bg}${tt}${y.anchorOrphan}${Vn}${y.accent}${y.onAccent}${y.bg}${y.fg}${y.muted}${y.border}${y.shadow}${y.motion}${y.bg}${y.fg}${y.muted}${y.border}${y.accent}${y.onAccent}${y.surface}${y.sunken}${y.hover}${y.focus}${y.disabled}${y.shadow}${y.anchorOrphan}`;const ot={dock:5},_n=new WeakMap;function kn(e,n,t){let o=_n.get(e);if(o||_n.set(e,o=new Set),o.has(n))return;o.add(n);try{const i=new CSSStyleSheet;i.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,i];return}catch{}const a=(e.ownerDocument??document).createElement("style");a.setAttribute(`data-snag-${n}`,""),a.textContent=t,e.appendChild(a)}const rt=` .snag-input,.snag-text{width:100%;box-sizing:border-box;background:${c.surface};color:inherit;border:1px solid ${c.border};border-radius:${c.radius};padding:8px;font:inherit;resize:vertical}@media (pointer:coarse){.snag-input,.snag-text{font-size:16px}}.snag-input:focus,.snag-text:focus{outline:2px solid ${c.focus};outline-offset:1px;border-color:transparent}.snag-input--bad{border-color:${c.anchorOrphan}}.snag-note{margin:-2px 0 0;color:${c.anchorOrphan};font-size:11px;line-height:1.35}.snag-note.snag-dim{color:${c.muted}}.snag-actions{display:flex;justify-content:flex-end;gap:6px}.snag-actions button{appearance:none;border:0;border-radius:calc(${c.radius} - 1px);padding:7px 13px;font:inherit;cursor:pointer;min-height:32px;transition:background ${c.motion}}.snag-cancel{background:transparent;color:${c.muted}}.snag-armed{color:${c.anchorOrphan};font-weight:600}.snag-cancel:hover{background:${c.hover};color:inherit}.snag-send{background:${c.accent};color:${c.onAccent};font-weight:600}.snag-send:disabled{opacity:.45;cursor:not-allowed}.snag-actions button:focus-visible{outline:2px solid ${c.focus};outline-offset:2px}`;function at(e,n,t){const[o,s]=N(!1);return U(()=>{if(!o)return;const a=setTimeout(()=>s(!1),3e3);return()=>clearTimeout(a)},[o]),{armed:o,press(){if(o||n){s(!1),e();return}s(!0)}}}function st(e){const n=window.visualViewport;if(!n)return;let t=0,o=0;const s=()=>{t=0;const d=Math.max(0,Math.round(window.innerHeight-n.height-n.offsetTop));e.style.setProperty(y.kb,`${d}px`)},a=()=>{t||(t=requestAnimationFrame(s))},i=()=>{clearTimeout(o),o=window.setTimeout(s,300)};return s(),n.addEventListener("resize",a),n.addEventListener("scroll",a),window.addEventListener("orientationchange",a),e.addEventListener("focusout",i),()=>{t&&cancelAnimationFrame(t),clearTimeout(o),n.removeEventListener("resize",a),n.removeEventListener("scroll",a),window.removeEventListener("orientationchange",a),e.removeEventListener("focusout",i)}}const it="noreferrer nofollow";function lt(e){const n=e.trim();if(!n||/[-]/.test(n)||n.startsWith("//"))return null;const t=/^([a-z][a-z0-9+.-]*):/i.exec(n);return t?/^(https?|mailto)$/i.test(t[1])?n:null:n}const ct=new RegExp(["\\*\\*(?=\\S)(?<bold>[\\s\\S]*?\\S)\\*\\*","(?<!\\w)__(?=\\S)(?<boldU>[\\s\\S]*?\\S)__(?!\\w)","(?<!\\*)\\*(?!\\*)(?=\\S)(?<em>[\\s\\S]*?\\S)(?<!\\*)\\*(?!\\*)","(?<!\\w)_(?=\\S)(?<emU>[\\s\\S]*?\\S)_(?!\\w)","`(?<code>[^`]+)`","\\[(?<label>[^\\]\\n]*)\\]\\((?<href>(?:[^()\\s]|\\([^()\\s]*\\))*)\\)"].join("|")),dt=4;function de(e,n=0,t=0){const o=[];let s=e,a=n;if(t>=dt)return e?[e]:[];for(;;){const i=ct.exec(s);if(!i)return s&&o.push(s),o;i.index>0&&o.push(s.slice(0,i.index));const d=`i${a++}`,g=i.groups,l=g.bold??g.boldU,f=g.em??g.emU;if(l!==void 0)o.push(O("strong",{key:d},de(l,a,t+1)));else if(f!==void 0)o.push(O("em",{key:d},de(f,a,t+1)));else if(g.code!==void 0)o.push(O("code",{key:d},g.code));else{const v=lt(g.href??"");o.push(v?O("a",{key:d,href:v,target:"_blank",rel:it},g.label??""):i[0])}s=s.slice(i.index+i[0].length)}}const Te=/^```[^\n]*$/,De=/^[-*]\s+(.*)$/,Ae=/^\d{1,9}[.)]\s+(.*)$/;function bn(e){const n=e.split(`
|
|
3
|
+
`),t=[];let o=0,s=0;for(;o<n.length;){const a=n[o];if(Te.test(a)){const l=[];for(o++;o<n.length&&!Te.test(n[o]);)l.push(n[o++]);o++,t.push(O("pre",{key:`b${s++}`},O("code",null,l.join(`
|
|
4
|
+
`))));continue}const i=De.exec(a),d=Ae.exec(a);if(i||d){const l=i?De:Ae,f=[];for(;o<n.length;){const v=l.exec(n[o]);if(!v)break;f.push(O("li",{key:`l${f.length}`},de(v[1]))),o++}t.push(O(i?"ul":"ol",{key:`b${s++}`},f));continue}const g=[];for(;o<n.length;){const l=n[o];if(!l.trim()||Te.test(l)||De.test(l)||Ae.test(l))break;g.push(l),o++}g.length?t.push(O("p",{key:`b${s++}`},de(g.join(`
|
|
5
|
+
`)))):o++}return O("div",{class:"snag-md"},t)}const ut=`${Bn}session`;function pt(e,n,t){if(e.origin!==n||!t||e.source!==t)return!1;const o=e.data;return!!o&&o.type===ut&&typeof o.session?.sessionToken=="string"&&typeof o.session.reviewer?.name=="string"}function gt(e,n,t,o){const s=new URLSearchParams({project:n,origin:t});return o&&s.set("env",o),`${new URL(e).origin}/widget-signin?${s}`}function ht(e,n,t){const o=new URL(e).origin,s=window.open(gt(e,n,location.origin,t),`${Fn}-signin`,"popup,width=480,height=600");return s?new Promise(a=>{let i=0;const d=f=>{removeEventListener("message",g),clearInterval(l),a(f)},g=f=>{pt(f,o,s)&&d(f.data.session)};addEventListener("message",g);const l=setInterval(()=>{s.closed&&++i>1&&d(null)},400)}):Promise.resolve("blocked")}function xn(){let e=null;try{e=localStorage.getItem(nn)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const n=JSON.parse(e);return n&&typeof n=="object"?n:{}}catch{return{}}}function ft(e){try{localStorage.setItem(nn,JSON.stringify(e))}catch{}}function mt(){const e=xn();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function _t(e){const n=xn();ft({...n,name:e.name,...e.email?{email:e.email}:{}})}const kt={"detail.details":"Anchor details","detail.hidden":"This element isn't visible right now \u2014 it may be inside a closed menu, tab, or accordion.","detail.orphaned":"The element this was pinned to has moved or gone \u2014 it was {label}.","detail.approximate":"The page changed since this was written, so the pin is close rather than exact \u2014 it points at {label}.","detail.unavailable":"Some of the matching steps couldn't load, so this was judged with the basic ones only.","detail.filedat":"Filed at {query}.","detail.openquery":"Open with original query","capture.agent":"{browser} \xB7 {os}","capture.agent.noos":"{browser}","capture.device":"{device} \xB7 {w}\xD7{h} @{dpr}x","capture.device.at1x":"{device} \xB7 {w}\xD7{h}"},bt={"disclosure.title":"Before your first comment","disclosure.always":"Each comment carries the page address, viewport size and browser make.","disclosure.crumbs.on":"Recent console messages and network results ride along, recognisable secrets redacted first.","disclosure.crumbs.off":"Console and network capture is off here.","disclosure.screenshot.off":"Screenshots are off for this project.","disclosure.screenshot.on":"{product} never reads what you type. Screenshots are pictures of the page, so anything visible on screen is in the picture \u2014 mark sensitive regions with {maskAttr} and they are blurred before the screenshot leaves your browser.","disclosure.retention":"Everything stays in this browser until someone exports it \u2014 the privacy notes list what can still leak.","disclosure.retention.server":"Your comment, the page address and the details above are sent to {host} when you post \u2014 the privacy notes list what can still leak.","disclosure.ack":"Got it","composer.aria":"New comment","composer.parent":"Pin the parent","composer.child":"Pin the first child","composer.shot":"Add a screenshot","composer.name":"Your name","composer.email":"Email, so we can reply","composer.email.bad":"Check the address \u2014 or leave it blank.","composer.signin":"Studio member? Sign in","composer.signin.blocked":"Allow pop-ups for this page to sign in.","composer.member":"Commenting as {name}","composer.signout":"Not you? Sign out","composer.chars":"{n} characters left","composer.body":"Comment","composer.body.placeholder":"What's the {item}?","action.cancel":"Cancel","action.post":"Post comment","composer.discard.sure":"Sure? Discard this comment","action.discard":"Discard?"},xt={"shot.open":"See the screenshot","shot.aria":"Screenshot","shot.close":"Close","announce.status":"Comment {key} set to {status}.","search.placeholder":"Search {n} comments\u2026","search.aria":"Search comments","round.label":"Round","round.closed":"(closed)","filter.status":"Status","filter.clear":"Clear","filter.selectall":"Select all","sort.button":"Sort","sort.newest":"Newest first","sort.oldest":"Oldest first","sort.page":"By page","filter.button":"Filter","filter.button.n":"Filter \xB7 {n}","filter.by":"Comments by","filter.by.anyone":"Anyone","filter.pages":"Pages","filter.pages.all":"All pages","filter.pageonly":"Show comments on this page only","filter.new":"See new activity \xB7 {n}","filter.new.on":"Showing new activity \u2014 show all","filter.new.none":"You\u2019re caught up \u2014 show all","filter.read":"Marked as","filter.read.all":"Anyone\u2019s, read or not","filter.read.unread":"Unread","filter.read.read":"Read","dock.unread":"Unread","badge.anchored":"","badge.approximate":"~","badge.orphaned":"moved","badge.hidden":"hidden","capture.label":"Comment left on","capture.page":"{route}","device.Mobile":"Mobile","device.Desktop":"Desktop","dock.aria":"All comments","dock.title.list":"All comments","dock.title.detail":"Comment","dock.close":"Close all comments","dock.empty":"No comments yet. Press +, then click anything on the page.","dock.empty.filter":"Nothing matches that filter.","dock.empty.orphans":"Every comment here lost its element \u2014 but what each one pointed at is still recorded.","dock.empty.page":"Nothing on this page. {n} comments on {m} other pages.","dock.row.empty":"(no comment)","dock.replies":"{n} replies","dock.goto":"Go to {route}","dock.cluster":"{n} comments in this cluster","dock.cluster.clear":"Show all","dock.hiddenrow":"That comment is now hidden by your filter","dock.hiddenrow.show":"Show","dock.back":"All","dock.back.aria":"Back to all comments","dock.position":"{n} of {total}","dock.prev":"Previous comment","dock.next":"Next comment","dock.clear":"Clear all","dock.clear.aria":"Delete every comment in this review","comment.edit":"Edit this comment","comment.delete":"Delete this comment and its pin","reply.delete":"Delete this reply","time.now":"just now","who.name":"Your name","who.email":"Email, so we can reply","who.email.bad":"Check the address \u2014 or leave it blank.","who.signin":"Studio member? Sign in","who.signin.blocked":"Allow pop-ups for this page to sign in.","who.member":"Replying as {name}","who.signout":"Not you? Sign out","detail.hidden.show":"Show anyway","field.status":"Status","permalink.copy":"Copy link","permalink.copied":"Copied","reply.add":"Add reply","reply.aria":"Reply","reply.placeholder":"Reply\u2026","reply.send":"Reply","action.more":"More actions","action.edit":"Edit","action.delete":"Delete","action.save":"Save","action.sure":"Sure?","export.button":"Export","export.md":"Markdown","export.json":"JSON"},yt={...fn,...kt,...bt,...xt},p=hn(yt),vt=[/^utm_/,/^(gclid|gbraid|wbraid|fbclid|msclkid|ttclid|twclid|igshid|yclid|li_fat_id)$/,/^(mc_cid|mc_eid|_hsenc|_hsmi|vero_id|oly_enc_id|oly_anon_id)$/,/^_vercel_/,/^__vercel_/,/^_rsc$/],wt=[...en.query,...en.fragment];function $t(e,n=[]){return wt.includes(e)||n.includes(e)?!0:vt.some(t=>t.test(e))}const ue=["open","progress","review","resolved"];function St(e,n){const t=e.includes(n)?e.filter(o=>o!==n):[...e,n];return t.length>=ue.length?[]:t}function Ct(e,n,t){if(n.statuses.length>0&&ue.includes(e.status)&&!n.statuses.includes(e.status)||n.by&&e.createdBy.id!==n.by||n.page&&e.route!==n.page)return!1;if(n.read!=="all"&&t){const o=pe(e,t);if(n.read==="unread"&&!o||n.read==="read"&&o)return!1}return!0}function pe(e,n){const t=n.get(e.id)??0;return Date.parse(e.updatedAt)>t}function Et(e,n,t,o){let s=e;n.pageOnly&&(s=s.filter(i=>i.route===t)),n.newOnly&&o&&(s=s.filter(i=>pe(i,o)));const a=n.q?.trim().toLowerCase();return a&&(s=s.filter(i=>i.comments.some(d=>(d.body??"").toLowerCase().includes(a)||d.author.name.toLowerCase().includes(a))||i.createdBy.name.toLowerCase().includes(a))),s}function Mt(e,n){if(n==="page")return e;const t=(s,a)=>Date.parse(s.createdAt)-Date.parse(a.createdAt),o=[...e].sort(t);return n==="oldest"?o:o.reverse()}function Tt(e){const n=new Map;for(const t of e)n.set(t.status,(n.get(t.status)??0)+1);return{all:e.length,byStatus:n}}function Dt(e){return(e.read!=="all"?1:0)+(e.by?1:0)+(e.page?1:0)}const Re=Object.keys(ce);function yn({label:e,title:n,cls:t,role:o,onConfirm:s}){const{armed:a,press:i}=at(s);return r("button",{type:"button",...o===void 0?{}:{role:o},class:`${t}${a?" snag-dk-armed":""}`,"aria-label":a?`${p("action.sure")} ${n}`:n,title:n,onClick:i,children:a?p("action.sure"):e})}function At({snag:e}){const n=e.context?.derived?.device;if(!n)return null;const t=p(`device.${n}`);return r("span",{class:"snag-dk-dev",title:t,"aria-label":t,role:"img",children:n==="Mobile"?r("svg",{width:"11",height:"14",viewBox:"0 0 11 14",fill:"none","aria-hidden":"true",children:[r("rect",{x:".75",y:".75",width:"9.5",height:"12.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),r("path",{d:"M4.5 11h2",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]}):r("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none","aria-hidden":"true",children:[r("rect",{x:".75",y:"1.75",width:"12.5",height:"8.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),r("path",{d:"M5 12.75h4",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]})})}function Rt({anchor:e}){const n=[];if(e.testid&&n.push(["testid",e.testid]),e.domid&&n.push(["id",e.domid]),e.css&&n.push(["css",e.css]),e.hostPath?.length&&n.push(["shadow host",e.hostPath.join(" >> ")]),e.role&&n.push(["role",e.role]),e.accessibleName&&n.push(["name",e.accessibleName]),e.text?.exact&&n.push(["text",e.text.exact]),e.path?.length&&n.push(["path",e.path.join(" > ")]),e.rect){const t=e.rect;n.push(["rect",`${Math.round(t.x)}, ${Math.round(t.y)} \u2014 ${Math.round(t.w)} x ${Math.round(t.h)}`])}return e.breakpoint&&n.push(["breakpoint",`${e.breakpoint} at capture \xB7 you are at ${typeof window>"u"?"?":window.innerWidth}px`]),r("details",{class:"snag-dk-anchor",children:[r("summary",{children:p("detail.details")}),r("dl",{children:n.map(([t,o])=>r("div",{children:[r("dt",{children:t}),r("dd",{children:o})]},t))})]})}function vn({iso:e}){const n=Date.parse(e);if(!Number.isFinite(n))return null;const t=new Date(n),o=Math.round((n-Date.now())/1e3);let s;if(Math.abs(o)<45)s=p("time.now");else if(Math.abs(o)<7*86400){const a=new Intl.RelativeTimeFormat(void 0,{numeric:"auto",style:"short"}),[i,d]=Math.abs(o)<3600?[Math.round(o/60),"minute"]:Math.abs(o)<86400?[Math.round(o/3600),"hour"]:[Math.round(o/86400),"day"];s=a.format(i,d)}else s=t.toLocaleDateString(void 0,{day:"numeric",month:"short",...t.getFullYear()===new Date().getFullYear()?{}:{year:"numeric"}});return r("time",{class:"snag-dk-dim snag-dk-when",dateTime:t.toISOString(),title:t.toLocaleString(),children:s})}function wn({body:e,onEdit:n,deleteLabel:t,onDelete:o}){const s=e??"",[a,i]=N(!1),[d,g]=N(!1),[l,f]=N(s),v=j(null),u=h=>{h.key!=="Escape"||!d||(h.stopPropagation(),g(!1))};return U(()=>{a&&v.current?.focus()},[a]),a&&n?r("div",{class:"snag-dk-editbox",children:[r("textarea",{ref:v,class:"snag-text",rows:3,"aria-label":p("comment.edit"),value:l,onInput:h=>f(h.target.value),onKeyDown:h=>{h.key==="Enter"&&(h.metaKey||h.ctrlKey)&&(h.preventDefault(),l.trim()&&(n(l.trim()),i(!1))),h.key==="Escape"&&(h.stopPropagation(),f(s),i(!1))}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{f(s),i(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!l.trim()||l.trim()===s,onClick:()=>{n(l.trim()),i(!1)},children:p("action.save")})]})]}):r("div",{class:"snag-dk-acts snag-dk-menus",onKeyDown:u,children:[d&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>g(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-act snag-dk-more","aria-label":p("action.more"),"aria-expanded":d,"aria-haspopup":"menu",title:p("action.more"),onClick:()=>g(!d),children:"\u22EF"}),d&&r("div",{class:"snag-dk-menu",role:"menu",children:[n&&r("button",{type:"button",role:"menuitem",title:p("comment.edit"),"aria-label":p("comment.edit"),onClick:()=>{g(!1),f(s),i(!0)},children:p("action.edit")}),o&&r(yn,{label:p("action.delete"),title:t,cls:"snag-dk-act--danger",role:"menuitem",onConfirm:o})]})]})]})}function Pt({snag:e}){const n=e.anchorReasons?.includes("hidden")??!1;return r("span",{class:"snag-dk-dim snag-dk-where",children:[n&&r(L,{children:[r("span",{class:"snag-dk-moved",children:p("badge.hidden")})," "]}),e.anchorState!=="anchored"&&r(L,{children:[r("span",{class:"snag-dk-moved",children:p(`badge.${e.anchorState}`)})," "]}),e.anchor.label]})}function Nt(e){const n=new Map,t=new Map;for(const o of e){const s=(n.get(o.route)??0)+1;n.set(o.route,s),t.set(o.id,s)}return t}function It(e,n){const t=new Map;for(const o of e){const s=t.get(o.route);s?s.push(o):t.set(o.route,[o])}return[...t.entries()].map(([o,s])=>({route:o,here:o===n,snags:s})).sort((o,s)=>o.route.localeCompare(s.route))}function Ot({snag:e,n,here:t,unread:o,onOpen:s,onHover:a}){const i=g=>a(t?g:null),d=t?"":p("dock.goto",{route:e.route});return r("li",{children:r("button",{type:"button",class:"snag-dk-item",onClick:()=>s(e.id),onPointerEnter:()=>i(e.id),onPointerLeave:()=>i(null),onFocus:()=>i(e.id),onBlur:()=>i(null),children:[r("span",{class:`snag-dk-dot${o?" snag-dk-dot--on":""}`,role:"img","aria-label":o?p("dock.unread"):""}),r("span",{class:`snag-dk-num${e.anchorState==="anchored"?"":` snag-dk-num--${e.anchorState}`}`,style:{background:Ee(e.status),color:mn(e.status)},children:n}),r("span",{class:"snag-dk-main",children:[r("span",{class:`snag-dk-body${e.status==="resolved"?" snag-dk-done":""}`,children:e.comments[0]?.body??p("dock.row.empty")}),r("span",{class:"snag-dk-sub",children:r(Pt,{snag:e})})]}),r(At,{snag:e}),e.comments.length>1&&r("span",{class:"snag-dk-replies",role:"img","aria-label":p("dock.replies",{n:I(e.comments.length-1)}),children:I(e.comments.length-1)}),!t&&r("span",{class:"snag-dk-goto",role:"img",title:d,"aria-label":d,children:"\u2197"})]})})}const $n=e=>c[`status${e[0].toUpperCase()}${e.slice(1)}`]??c.muted;function Lt({round:e,filter:n,onFilter:t,rounds:o,activeRound:s,onRound:a,onClearAll:i,seenAt:d}){const g=!!o&&o.length>1&&!!a,l=e.length>0,[f,v]=N(null),u=Tt(e),h=m=>{const k={...n};for(const[M,R]of Object.entries(m))R===void 0?delete k[M]:k[M]=R;t(k)},C=n.statuses.length>0,b=Dt(n),$=[...new Map(e.map(m=>[m.createdBy.id,m.createdBy.name]))],S=[...new Set(e.map(m=>m.route))].sort(),w=[...u.byStatus.keys()].filter(m=>!ue.includes(m)),T=r("div",{class:"snag-dk-menugroup",children:[r("div",{class:"snag-dk-chiphead",children:[r("span",{class:"snag-dk-menutitle",children:p("filter.status")}),r("button",{type:"button",class:"snag-dk-link",onClick:()=>h({statuses:[]}),children:p(C?"filter.selectall":"filter.clear")})]}),r("div",{class:"snag-dk-chips",role:"group","aria-label":p("filter.status"),children:[ue.map(m=>{const k=n.statuses.includes(m);return r("button",{type:"button",class:"snag-dk-chip","aria-pressed":k,style:`border-color:color-mix(in srgb, ${$n(m)} 60%, transparent);background:color-mix(in srgb, ${$n(m)} ${k?28:10}%, transparent)`,onClick:()=>h({statuses:St(n.statuses,m)}),children:[Me(m)," ",r("span",{class:"snag-dk-dim",children:I(u.byStatus.get(m)??0)})]})}),w.map(m=>r("span",{class:"snag-dk-chip snag-dk-chip-stray",children:[m," ",r("span",{class:"snag-dk-dim",children:I(u.byStatus.get(m)??0)})]}))]})]});return r("div",{class:"snag-dk-filters",children:[l&&r("input",{class:"snag-input snag-dk-search",type:"search","aria-label":p("search.aria"),placeholder:p("search.placeholder",{n:I(e.length)}),value:n.q??"",onInput:m=>h({q:m.currentTarget.value||void 0})}),r("div",{class:"snag-dk-menus",onKeyDown:m=>{m.key!=="Escape"||!f||(m.stopPropagation(),v(null))},children:[f&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>v(null)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":f==="filter",onClick:()=>v(f==="filter"?null:"filter"),children:b>0?p("filter.button.n",{n:I(b)}):p("filter.button")}),f==="filter"&&r("div",{class:"snag-dk-menu snag-dk-menu-form",role:"group","aria-label":p("filter.button"),children:[(g||l)&&r("div",{class:"snag-dk-menugroup",children:[!g&&r("span",{class:"snag-dk-menutitle",children:p("round.label")}),g&&r("label",{class:"snag-dk-round",children:[r("span",{class:"snag-dk-menutitle",children:p("round.label")}),r("select",{class:"snag-input",value:String(s??""),onChange:m=>a(Number(m.currentTarget.value)),children:o.map(m=>r("option",{value:String(m.number),children:[m.name,m.closed?` ${p("round.closed")}`:""]},m.number))})]}),l&&r(yn,{label:p("dock.clear"),title:p("dock.clear.aria"),cls:"snag-dk-link snag-dk-clear",onConfirm:i})]}),l&&T,l&&r("div",{class:"snag-dk-menugroup",role:"radiogroup","aria-label":p("sort.button"),children:[r("span",{class:"snag-dk-menutitle","aria-hidden":"true",children:p("sort.button")}),[["newest","sort.newest"],["oldest","sort.oldest"],["page","sort.page"]].map(([m,k])=>r("button",{type:"button",role:"radio","aria-checked":n.sort===m,onClick:()=>h({sort:m}),children:[r("span",{class:"snag-dk-tick","aria-hidden":"true",children:n.sort===m?"\u2713":"\xA0"}),p(k)]}))]}),l&&r("div",{class:"snag-dk-menugroup snag-dk-menugroup-last",children:[d&&r("label",{children:[p("filter.read"),r("select",{value:n.read,onChange:m=>h({read:m.currentTarget.value}),children:[r("option",{value:"all",children:p("filter.read.all")}),r("option",{value:"unread",children:p("filter.read.unread")}),r("option",{value:"read",children:p("filter.read.read")})]})]}),r("label",{children:[p("filter.by"),r("select",{value:n.by??"",onChange:m=>h({by:m.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.by.anyone")}),$.map(([m,k])=>r("option",{value:m,children:k}))]})]}),r("label",{children:[p("filter.pages"),r("select",{value:n.page??"",onChange:m=>h({page:m.currentTarget.value||void 0}),children:[r("option",{value:"",children:p("filter.pages.all")}),S.map(m=>r("option",{value:m,children:m}))]})]}),r("label",{class:"snag-dk-pageonly",children:[r("input",{type:"checkbox",checked:n.pageOnly,onChange:m=>h({pageOnly:m.currentTarget.checked})})," ",p("filter.pageonly")]})]})]})]})]})]})}function zt({snags:e,groups:n,route:t,onOpen:o,onHover:s,onExport:a,onClearAll:i,clusterFilter:d,onClusterClear:g,filter:l,onFilter:f,hiddenNote:v,onHiddenShow:u,rounds:h,activeRound:C,onRound:b,seenAt:$}){const S=Nt(e),w=n.flatMap(x=>x.snags),T=l.statuses.length>0||!!l.by||!!l.page||!!l.q?.trim()||l.pageOnly||l.newOnly||l.read!=="all",m=$?e.filter(x=>pe(x,$)).length:0,k=j(null),[M,R]=N(!1),B=x=>{x.key!=="Escape"||!M||(x.stopPropagation(),R(!1))},z=j(null);return U(()=>{const x=k.current,P=z.current;!x||!P||(x.scrollTop+=P.getBoundingClientRect().top-x.getBoundingClientRect().top)},[t,n.length]),r(L,{children:[(e.length>0||h&&h.length>1&&b)&&r(Lt,{round:e,filter:l,onFilter:f,onClearAll:i,...$===void 0?{}:{seenAt:$},...h===void 0?{}:{rounds:h},...C===void 0?{}:{activeRound:C},...b===void 0?{}:{onRound:b}}),$&&(m>0||l.newOnly)&&r("button",{type:"button",class:"snag-dk-newpill","aria-pressed":l.newOnly,onClick:()=>f({...l,newOnly:!l.newOnly}),children:l.newOnly?p(m===0?"filter.new.none":"filter.new.on"):p("filter.new",{n:I(m)})}),e.length===0?r("div",{class:"snag-dk-empty",children:r("p",{children:p("dock.empty")})}):w.length===0&&T?r("div",{class:"snag-dk-empty",children:l.pageOnly&&e.some(x=>x.route!==t)?r("p",{children:p("dock.empty.page",{n:I(e.filter(x=>x.route!==t).length),m:I(new Set(e.filter(x=>x.route!==t).map(x=>x.route)).size)})}):r("p",{children:p("dock.empty.filter")})}):r(L,{children:[v&&r("p",{class:"snag-dk-notice",children:[p("dock.hiddenrow")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>u(v),children:p("dock.hiddenrow.show")})]}),d&&r("p",{class:"snag-dk-notice",children:[p("dock.cluster",{n:d.length})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>g?.(),children:p("dock.cluster.clear")})]}),e.every(x=>x.anchorState==="orphaned")&&r("p",{class:"snag-dk-notice",children:p("dock.empty.orphans")}),r("div",{class:"snag-dk-scroll",ref:k,children:n.map(x=>r("section",{class:"snag-dk-group",ref:x.here?z:null,children:[x.route!==""&&r("h3",{class:"snag-dk-grouphd",children:[r("span",{class:"snag-dk-route",children:x.route}),r("span",{class:"snag-dk-dim",children:I(x.snags.length)})]}),r("ul",{class:"snag-dk-list",children:x.snags.map(P=>r(Ot,{snag:P,n:S.get(P.id),here:x.here,unread:!!$&&pe(P,$),onOpen:o,onHover:s},P.id))})]},x.route))})]}),r("div",{class:"snag-dk-foot",children:r("div",{class:"snag-dk-menus snag-dk-menus-up",onKeyDown:B,children:[M&&r("div",{class:"snag-dk-menubg","aria-hidden":"true",onClick:()=>R(!1)}),r("span",{class:"snag-dk-menuwrap",children:[r("button",{type:"button",class:"snag-dk-link","aria-expanded":M,"aria-haspopup":"menu",onClick:()=>R(!M),children:p("export.button")}),M&&r("div",{class:"snag-dk-menu snag-dk-menu-up",role:"menu",children:["md","json"].map(x=>r("button",{type:"button",role:"menuitem",onClick:()=>{R(!1),a(x)},children:p(x==="md"?"export.md":"export.json")}))})]})]})})]})}const Pe=new Map;function Ut(e){const n=[];try{for(const[t,o]of new URL(e).searchParams)$t(t)||n.push(o&&o!=="[redacted]"?`${t}=${o}`:t)}catch{return null}return n.length?`?${n.join("&")}`:null}function jt({att:e,load:n}){const t=j(null),[o,s]=N(!1),[a,i]=N(null);return U(()=>{let d=!1;return n(e).then(async g=>{if(!g||d)return;const l=await createImageBitmap(g);d?l.close():i(l)}).catch(()=>{}),()=>{d=!0}},[e.id,e.url]),U(()=>{const d=t.current;if(!d||!a)return;const g=142,l=g/a.width;d.width=g,d.height=Math.min(96,Math.round(a.height*l)),d.getContext("2d").drawImage(a,0,0,a.width,Math.round(d.height/l),0,0,d.width,d.height)},[a]),a?r(L,{children:[r("button",{type:"button",class:"snag-dk-shot",onClick:()=>s(!0),"aria-label":p("shot.open"),children:r("canvas",{ref:t,width:142,height:Math.min(96,Math.round(a.height*(142/a.width)))})}),o&&r(Ht,{bmp:a,onClose:()=>s(!1)})]}):null}function Ht({bmp:e,onClose:n}){const t=j(null);return U(()=>{const o=t.current;o&&(o.width=e.width,o.height=e.height,o.getContext("2d").drawImage(e,0,0))},[e]),r("div",{class:"snag-dk-lightbox",role:"dialog","aria-modal":"true","aria-label":p("shot.aria"),tabIndex:-1,ref:o=>o?.focus(),onKeyDown:o=>{o.key==="Escape"&&(o.stopPropagation(),n())},onClick:n,children:[r("canvas",{ref:t}),r("button",{type:"button",class:"snag-dk-link snag-dk-lightclose",onClick:n,children:p("shot.close")})]})}function Ft({snag:e,loadShot:n}){const t=e.context;if(!t)return null;const o=e.attachments?.find(d=>d.kind==="screenshot"),s=t.derived,a=t.viewport,i=a?Math.round(a.dpr*100)/100:1;return r("div",{class:"snag-dk-cap",children:[o&&n&&r(jt,{att:o,load:n}),r("p",{class:"snag-dk-caplabel",children:p("capture.label")}),t.page?.route!==void 0&&r("p",{children:p("capture.page",{route:t.page.route})}),s&&a&&r(L,{children:[r("p",{children:s.os?p("capture.agent",{browser:s.browser,os:s.os}):p("capture.agent.noos",{browser:s.browser})}),r("p",{children:i===1?p("capture.device.at1x",{device:s.device,w:a.w,h:a.h}):p("capture.device",{device:s.device,w:a.w,h:a.h,dpr:i})})]}),t.capture?.reasons?.map(d=>r("p",{class:"snag-dk-capwhy",children:d},d)),t.capture?.blindSpots?.map(d=>r("p",{class:"snag-dk-capwhy",children:d},d)),(()=>{const d=Ut(t.url);return d?r("p",{class:"snag-dk-capwhy",children:[p("detail.filedat",{query:d})," ",r("a",{class:"snag-dk-openq",href:t.url,target:"_blank",rel:"noreferrer",children:p("detail.openquery")})]}):null})()]})}function Sn(e){const n=e.context?.url??e.route;return`${n}${n.includes("?")?"&":"?"}${Gn("t")}=${e.key}`}function Bt({snag:e}){const[n,t]=N(!1),o=Sn(e);return navigator.clipboard?r("button",{type:"button",class:"snag-dk-link",onClick:()=>void navigator.clipboard.writeText(o).then(()=>{t(!0),setTimeout(()=>t(!1),1500)},()=>{}),children:p(n?"permalink.copied":"permalink.copy")}):null}function Kt({snag:e}){return navigator.clipboard?null:r("p",{class:"snag-dk-permaline",children:[r("span",{class:"snag-dk-permalabel",children:p("permalink.copy")})," ",r("span",{class:"snag-dk-permaurl",children:Sn(e)})]})}function qt({snags:e,round:n,fallbackCursor:t,openId:o,onOpen:s,onStatus:a,onReply:i,onEdit:d,onDeleteComment:g,onDeleteThread:l,isMine:f,canDeleteOwnThread:v=!0,canModerate:u=!1,studio:h,onShowAnyway:C,onAnnounce:b,loadShot:$}){const S=e.findIndex(_=>_.id===o),w=S>=0,T=_=>f?f(_):!0,m=w?S:Math.min(t,e.length),k=w?e[S]:n.find(_=>_.id===o),M=o?Pe.get(o)??"":"",[R,B]=N(M),[z,x]=N(M.length>0),P=j(null);U(()=>{z&&P.current?.focus()},[z]);const ge=_=>{B(_),o&&(_?Pe.set(o,_):Pe.delete(o))},he=mt(),[fe]=N(!he.name),[W,Ne]=N(h?.member??null),[me,Tn]=N(he.name??""),[Y,Dn]=N(he.email??""),[An,Ie]=N(!1),J=Y.trim().length>0&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Y.trim()),Oe=!!R.trim()&&(!!W||!fe||!!me.trim()&&!J),Rn=()=>{h&&(Ie(!1),ht(h.host,h.uid,h.env).then(_=>{if(_==="blocked")return Ie(!0);_&&(h.adopt(_),Ne(_.reviewer.name),P.current?.focus())}))},Le=()=>{if(!k||!Oe)return;let _;W?_=W:fe&&(_=me.trim(),_t({name:_,...Y.trim()?{email:Y.trim()}:{}})),i(k.id,R.trim(),_),ge(""),x(!1)};if(!k)return null;const H=k.comments[0],Pn=n.filter(_=>_.route===k.route).findIndex(_=>_.id===k.id)+1;return r("div",{class:"snag-dk-detail",children:[r("div",{class:"snag-dk-detailhd",children:[r("button",{type:"button",class:"snag-dk-link",onClick:()=>s(null),"aria-label":p("dock.back.aria"),children:[r("span",{"aria-hidden":"true",children:"\u2190"})," ",p("dock.back")]}),r("span",{class:"snag-dk-dim",children:p("dock.position",{n:w?I(m+1):"\u2013",total:I(e.length)})}),r("span",{class:"snag-dk-nav",children:[r("button",{type:"button",class:"snag-dk-link",disabled:m<=0,"aria-label":p("dock.prev"),onClick:()=>s(e[m-1].id),children:"\u2191"}),r("button",{type:"button",class:"snag-dk-link",disabled:w?m>=e.length-1:m>=e.length,"aria-label":p("dock.next"),onClick:()=>s(e[w?m+1:m].id),children:"\u2193"})]})]}),r("div",{class:"snag-dk-card",children:[r("div",{class:"snag-dk-meta",children:[r("span",{class:"snag-dk-num",style:{background:Ee(k.status),color:mn(k.status)},children:Pn}),r("strong",{children:H?.author.name??p("author.unknown")}),r("span",{class:"snag-dk-dim",children:k.key}),H&&r(vn,{iso:H.createdAt}),r(Bt,{snag:k})]}),r("div",{class:"snag-dk-cardbody",children:bn(H?.body??"")}),r(Kt,{snag:k}),H&&(T(H.author)||u)&&r(wn,{body:H.body,...T(H.author)?{onEdit:_=>d(H.id,_)}:{},deleteLabel:p("comment.delete"),...u||v&&k.comments.every(_=>T(_.author))?{onDelete:()=>l(k.id)}:{}})]}),r("label",{class:"snag-dk-field",children:[r("span",{class:"snag-dk-dim",children:p("field.status")}),r("select",{class:"snag-dk-select",style:{borderColor:Ee(k.status)},value:k.status,onChange:_=>{const Q=_.target.value;a(k.id,Q),b?.(p("announce.status",{key:k.key,status:Me(Q)}))},children:Re.map(_=>r("option",{value:_,children:Me(_)},_))})]}),r(Ft,{snag:k,...$?{loadShot:$}:{}}),k.anchorReasons?.includes("hidden")&&r("p",{class:"snag-dk-moved-note",children:[p("detail.hidden")," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>C?.(k),children:p("detail.hidden.show")})]}),k.anchorState!=="anchored"&&r("p",{class:"snag-dk-moved-note",children:[p(`detail.${k.anchorState}`,{label:k.anchor.label}),k.anchorReasons?.includes("budget-exceeded")&&` ${p("detail.unavailable")}`]}),k.anchorState!=="anchored"&&r(Rt,{anchor:k.anchor}),k.comments.length>1&&r("ul",{class:"snag-dk-replies-list",children:k.comments.slice(1).map(_=>r("li",{children:[r("strong",{children:_.author.name})," ",r(vn,{iso:_.createdAt}),bn(_.body??""),(T(_.author)||u)&&r(wn,{body:_.body,...T(_.author)?{onEdit:Q=>d(_.id,Q)}:{},deleteLabel:p("reply.delete"),onDelete:()=>g(_.id)})]},_.id))}),z?r("div",{class:"snag-dk-replybox",children:[W?r("p",{class:"snag-dk-who",children:[p("who.member",{name:W})," ",r("button",{type:"button",class:"snag-dk-link",onClick:()=>{h?.signOut(),Ne(null)},children:p("who.signout")})]}):fe&&r(L,{children:[r("input",{class:"snag-input",type:"text",autocomplete:"name",placeholder:p("who.name"),"aria-label":p("who.name"),value:me,onInput:_=>Tn(_.target.value)}),r("input",{class:`snag-input${J?" snag-input--bad":""}`,type:"email",inputMode:"email",autocomplete:"email",placeholder:p("who.email"),"aria-label":p("who.email"),"aria-invalid":J?"true":void 0,value:Y,onInput:_=>Dn(_.target.value)}),J&&r("p",{class:"snag-dk-who",children:p("who.email.bad")})]}),h&&!W&&r("p",{class:"snag-dk-who",children:[r("button",{type:"button",class:"snag-dk-link",onClick:Rn,children:p("who.signin")}),An&&r("span",{role:"status",children:[" ",p("who.signin.blocked")]})]}),r("textarea",{ref:P,class:"snag-text",rows:2,enterkeyhint:"enter","aria-label":p("reply.aria"),placeholder:p("reply.placeholder"),value:R,onInput:_=>ge(_.target.value),onKeyDown:_=>{_.key==="Enter"&&(_.metaKey||_.ctrlKey)&&(_.preventDefault(),Le()),_.key==="Escape"&&(_.stopPropagation(),_.target.blur())}}),r("div",{class:"snag-actions",children:[r("button",{type:"button",class:"snag-cancel",onClick:()=>{ge(""),x(!1)},children:p("action.cancel")}),r("button",{type:"button",class:"snag-send",disabled:!Oe,onClick:Le,children:p("reply.send")})]})]}):r("button",{type:"button",class:"snag-dk-addreply",onClick:()=>x(!0),children:p("reply.add")})]})}function Wt(e){const n=e.openId?e.snags.find(b=>b.id===e.openId):null,t=j(null),o=e.clusterFilter?e.snags.filter(b=>e.clusterFilter.includes(b.id)):e.snags,s=Et(o.filter(b=>Ct(b,e.filter,e.seenAt)),e.filter,e.route,e.seenAt),a=Mt(s,e.filter.sort),i=e.filter.sort==="page"?It(a,e.route):[{route:"",here:!1,snags:a}],d=i.flatMap(b=>b.snags),g=j(0),l=d.findIndex(b=>b.id===e.openId);l>=0&&(g.current=l);const f=j(null),[v,u]=N(null);e.openId?(f.current={id:e.openId,absent:l===-1},v&&u(null)):f.current?.absent&&v!==f.current.id&&(u(f.current.id),f.current=null),U(()=>{t.current?.focus()},[e.openId]),U(()=>{if(!(window.matchMedia?.("(pointer: coarse)").matches??!1))return;const b=t.current;return b?st(b):void 0},[]);const h=j({snag:n,onStatus:e.onStatus});h.current={snag:n,onStatus:e.onStatus},U(()=>{const b=$=>{const{snag:S,onStatus:w}=h.current;if(!S||$.metaKey||$.ctrlKey||$.altKey||$.composedPath().some(k=>{const M=k;if(!M?.tagName)return!1;const R=M.tagName.toLowerCase();return R==="textarea"||R==="select"?!0:R==="input"?!/^(button|submit|checkbox|radio)$/i.test(M.type):M.isContentEditable?!0:/^(textbox|searchbox|combobox)$/.test(M.getAttribute?.("role")??"")}))return;const m=Number($.key);if(m>=1&&m<=Re.length){$.preventDefault(),w(S.id,Re[m-1]);return}($.key==="r"||$.key==="R")&&($.preventDefault(),w(S.id,S.status==="resolved"?"open":"resolved"))};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[]);const C=window.matchMedia?.("(pointer: coarse)").matches??!1;return r("aside",{ref:t,class:"snag-dk",role:"complementary","aria-label":p("dock.aria"),tabIndex:-1,onKeyDown:b=>{b.key==="Escape"&&(b.stopPropagation(),e.openId?e.onOpen(null):e.onClose())},children:[C&&r("div",{class:"snag-dk-scrim","aria-hidden":"true",onClick:e.onClose}),C&&r("div",{class:"snag-dk-grab","aria-hidden":"true",onPointerDown:b=>{const $=b.clientY,S=b.currentTarget;try{S.setPointerCapture(b.pointerId)}catch{}S.onpointermove=w=>{w.clientY-$>56&&(S.onpointermove=null,e.onClose())},S.onpointerup=()=>S.onpointermove=null},children:r("span",{})}),r("header",{class:"snag-dk-hd",children:[r("strong",{children:p(n?"dock.title.detail":"dock.title.list")}),r("button",{type:"button",class:"snag-dk-link",onClick:e.onClose,"aria-label":p("dock.close"),children:"\u2715"})]}),n?r(qt,{...e,snags:d,round:e.snags,fallbackCursor:g.current},n.id):r(zt,{...e,groups:i,hiddenNote:v,onHiddenShow:b=>{u(null),e.onOpen(b)}})]})}const Cn=360,Yt=` .snag-dk{position:fixed;inset-block:0;inset-inline-end:0;width:${Cn}px;max-width:100vw;z-index:${ot.dock};background:${c.bg};color:${c.fg};display:flex;flex-direction:column;font:400 13px/1.45 ${c.font};box-shadow:${c.shadow};border-inline-start:1px solid ${c.border};pointer-events:auto;overscroll-behavior:contain}.snag-dk-filters{padding:8px 12px 6px;border-block-end:1px solid ${c.border};display:grid;gap:6px}.snag-dk-search{width:100%;box-sizing:border-box;font-size:12px;padding:5px 8px}.snag-dk-chiphead{display:flex;justify-content:space-between;align-items:center;padding-inline-end:8px}.snag-dk-chips{display:grid;grid-template-columns:1fr 1fr;gap:4px}.snag-dk-chip{font:500 11px/1.2 ${c.font};color:${c.fg};padding:5px 8px;border-radius:6px;border:1px solid ${c.border};background:none;cursor:pointer;text-align:start;display:flex;justify-content:space-between;align-items:center;gap:4px}.snag-dk-chip[aria-pressed="true"]{font-weight:600}.snag-dk-chip-stray{color:${c.muted};cursor:default}.snag-dk-menus{display:flex;gap:10px;position:relative}.snag-dk-menuwrap{position:relative}.snag-dk-menugroup{display:flex;flex-direction:column;gap:1px;padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid ${c.border}}.snag-dk-menugroup-last{padding-bottom:0;margin-bottom:0;border-bottom:0}.snag-dk-menutitle{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:${c.muted};padding:2px 8px 4px}.snag-dk-menubg{position:absolute;inset:-200px -20px -2000px;background:transparent;z-index:2}.snag-dk-menu{position:absolute;inset-block-start:100%;inset-inline-start:0;z-index:3;min-width:150px;background:${c.bg};border:1px solid ${c.border};border-radius:6px;box-shadow:${c.shadow};display:grid;padding:4px}.snag-dk-menu button{font:400 12px/1.3 ${c.font};color:${c.fg};background:none;border:0;text-align:start;padding:5px 8px;border-radius:4px;cursor:pointer;display:flex;gap:4px}.snag-dk-menu button:hover{background:color-mix(in srgb,${c.fg} 8%,transparent)}.snag-dk-menus-up{position:relative}.snag-dk-menu-up{inset-block-start:auto;inset-block-end:100%;margin-block-end:4px}.snag-dk-menu-form{padding:8px;gap:6px;min-width:224px}.snag-dk-menu-form label:not(.snag-dk-pageonly){display:grid;gap:2px;font:600 10px/1.4 ${c.font};letter-spacing:.05em;text-transform:uppercase;color:${c.muted}}.snag-dk-menu-form select{font:400 12px/1.3 ${c.font};color:${c.fg};background:${c.bg};border:1px solid ${c.border};border-radius:4px;padding:4px}.snag-dk-pageonly{display:flex;align-items:center;gap:6px;font-size:12px;color:${c.fg};cursor:pointer}.snag-dk-permaline{margin:6px 0 0;font-size:11px;color:${c.muted};overflow-wrap:anywhere}.snag-dk-permalabel{font-weight:600}.snag-dk-permaurl{user-select:all}.snag-dk:focus{outline:none}@media (pointer:coarse){.snag-dk{inset-block-start:auto;inset-inline-start:0;width:auto;height:82vh;border-radius:14px 14px 0 0;box-sizing:border-box;padding-bottom:max(var(${y.tbH},68px),var(${y.kb},0px));padding-inline:env(safe-area-inset-left) env(safe-area-inset-right)}.snag-dk-scrim{position:fixed;inset:0;background:#0005;touch-action:none;z-index:-1}.snag-dk-grab{display:flex;justify-content:center;padding:10px 0 4px;touch-action:none}.snag-dk-grab span{width:36px;height:4px;border-radius:2px;background:${c.border}}.snag-dk-item{min-height:56px}.snag-dk-link{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.snag-dk-select{min-height:44px}.snag-dk-chip{min-height:44px}.snag-dk-search{min-height:44px}}@media (pointer:fine){.snag-dk-scrim,.snag-dk-grab{display:none}}.snag-dk-hd{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid ${c.border};flex:0 0 auto}.snag-dk-scroll{overflow-y:auto;flex:1 1 auto}.snag-dk-list{list-style:none;margin:0;padding:0}.snag-dk-grouphd{position:sticky;top:0;z-index:1;margin:0;display:flex;align-items:center;gap:8px;padding:7px 14px;font:600 11px/1.45 ${c.font};letter-spacing:.02em;background:${c.sunken};border-bottom:1px solid ${c.border}}.snag-dk-route{color:${c.fg};overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;direction:ltr;unicode-bidi:isolate}.snag-dk-grouphd .snag-dk-dim{margin-inline-start:auto;font-weight:400;flex:0 0 auto}.snag-dk-goto{flex:0 0 auto;color:${c.muted};font-size:13px;line-height:1}.snag-dk-dev{flex:0 0 auto;color:${c.muted};display:flex;align-items:center}.snag-dk-item:hover .snag-dk-goto,.snag-dk-item:focus-visible .snag-dk-goto{color:${c.accent}}.snag-dk-item{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:start;background:transparent;border:0;border-bottom:1px solid ${c.border};color:inherit;font:inherit;padding:11px 14px;cursor:pointer;transition:background ${c.motion}}.snag-dk-item:hover{background:${c.hover}}.snag-dk-item:focus-visible{outline:2px solid ${c.focus};outline-offset:-2px}.snag-dk-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%;margin-block-start:8px;background:transparent}.snag-dk-dot--on{background:${c.accent}}.snag-dk-newpill{display:block;width:100%;box-sizing:border-box;text-align:start;background:${c.sunken};border:0;border-block-end:1px solid ${c.border};color:${c.accent};font:600 12px/1.45 ${c.font};padding:8px 14px;cursor:pointer;flex:0 0 auto}.snag-dk-newpill:hover{background:${c.hover}}.snag-dk-newpill:focus-visible{outline:2px solid ${c.focus};outline-offset:-2px}.snag-dk-num{flex:0 0 22px;height:22px;border-radius:50% 50% 50% 2px;font-weight:600;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.snag-dk-num--orphaned{border:2px solid currentColor;box-shadow:inset 0 0 0 2px currentColor}.snag-dk-num--approximate{border:2px dashed currentColor}.snag-dk-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.snag-dk-body,.snag-dk-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snag-dk-sub{font-size:11px}.snag-dk-dim{color:${c.muted}}.snag-dk-moved{color:${c.anchorOrphan};font-weight:600}.snag-dk-replies{background:${c.surface};border-radius:999px;padding:1px 7px;font-size:11px;flex:0 0 auto}.snag-dk-empty{padding:28px 16px;text-align:center;flex:1 1 auto}.snag-dk-empty p{margin:0 0 4px}.snag-dk-notice{margin:0;padding:11px 14px;font-size:12px;color:${c.muted};border-bottom:1px solid ${c.border};flex:0 0 auto}.snag-dk-foot{display:flex;gap:6px;padding:10px 14px;border-top:1px solid ${c.border};flex:0 0 auto}.snag-dk-link{background:transparent;border:0;color:${c.accent};font:inherit;cursor:pointer;padding:4px 6px;border-radius:calc(${c.radius} - 2px);transition:background ${c.motion}}.snag-dk-link:hover:not(:disabled){background:${c.hover}}.snag-dk-link:disabled{color:${c.disabled};cursor:not-allowed}.snag-dk-link:focus-visible{outline:2px solid ${c.focus};outline-offset:1px}.snag-dk-detail{padding:12px 14px;overflow-y:auto;flex:1 1 auto;display:flex;flex-direction:column;gap:12px}.snag-dk-detailhd{display:flex;align-items:center;justify-content:space-between;gap:8px}.snag-dk-nav{display:flex;gap:2px}.snag-dk-card{background:${c.surface};border-radius:${c.radius};padding:11px}.snag-dk-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:6px}.snag-md{overflow-wrap:anywhere}.snag-md>*{margin:0}.snag-md>*+*{margin-block-start:6px}.snag-md p{white-space:pre-wrap}.snag-md ul,.snag-md ol{padding-inline-start:20px}.snag-md li+li{margin-block-start:2px}.snag-md code{background:${c.sunken};border-radius:3px;padding:1px 4px;font-size:.92em;font-family:ui-monospace,monospace}.snag-md pre{background:${c.sunken};border-radius:${c.radius};padding:8px 10px;overflow-x:auto}.snag-md pre code{background:none;padding:0;font-size:.92em}.snag-md a{color:${c.accent}}.snag-dk-field{display:flex;flex-direction:column;gap:4px;font-size:12px}.snag-dk-select{background:${c.surface};color:inherit;border:2px solid;border-radius:${c.radius};padding:7px 9px;font:inherit;min-height:34px}.snag-dk-done{color:${c.muted};text-decoration:line-through}.snag-dk-meta .snag-dk-num{margin-inline-end:2px}.snag-dk-cap{background:${c.sunken};border-radius:${c.radius};padding:9px 11px;display:flex;flex-direction:column;gap:1px;font-size:12px;overflow-wrap:anywhere}.snag-dk-cap p{margin:0}.snag-dk-shot{padding:0;border:1px solid ${c.border};border-radius:calc(${c.radius} - 2px);background:none;cursor:zoom-in;overflow:hidden;line-height:0;align-self:flex-start;margin-block-end:6px}.snag-dk-shot canvas{display:block;max-width:100%}.snag-dk-lightbox{position:fixed;inset:0;z-index:1;background:#000c;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}.snag-dk-lightbox canvas{max-width:100%;max-height:100%;object-fit:contain;box-shadow:${c.shadow};background:${c.bg}}.snag-dk-lightclose{position:absolute;inset-block-start:12px;inset-inline-end:16px;color:#fff}.snag-dk-caplabel{font-weight:600;font-size:11px;letter-spacing:.02em;margin-bottom:3px!important}.snag-dk-capwhy{color:${c.muted};font-size:11px;margin-top:5px!important}.snag-dk-moved-note{margin:0;padding:8px 10px;font-size:12px;background:${c.sunken};border-inline-start:3px solid ${c.anchorOrphan};border-radius:${c.radius}}.snag-dk-anchor{font-size:12px;border:1px solid ${c.border};border-radius:${c.radius};padding:6px 10px;background:${c.sunken}}.snag-dk-anchor summary{cursor:pointer;color:${c.muted};font-weight:600;list-style:revert}.snag-dk-anchor dl{margin:8px 0 2px;display:grid;gap:6px}.snag-dk-anchor dt{color:${c.muted};font-size:11px;letter-spacing:.03em;text-transform:uppercase}.snag-dk-anchor dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;user-select:text}.snag-dk-replies-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.snag-dk-replies-list li{background:${c.sunken};border-radius:${c.radius};padding:9px;overflow-wrap:anywhere}.snag-dk-acts{display:flex;gap:2px;margin-top:6px}.snag-dk-act{background:transparent;border:0;color:${c.muted};font:inherit;font-size:11px;cursor:pointer;padding:3px 6px;border-radius:calc(${c.radius} - 3px);transition:background ${c.motion},color ${c.motion}}.snag-dk-more{font-size:14px;line-height:1;letter-spacing:1px}.snag-dk-act:hover{background:${c.hover};color:inherit}.snag-dk-act:focus-visible{outline:2px solid ${c.focus};outline-offset:1px}.snag-dk-act--danger:hover{color:${c.anchorOrphan}}.snag-dk-menu .snag-dk-act--danger{color:${c.fg}}.snag-dk-menu .snag-dk-act--danger:hover{color:${c.anchorOrphan}}.snag-dk-armed{color:${c.anchorOrphan};font-weight:600}.snag-dk-clear{margin-inline-start:auto}.snag-dk-menu .snag-dk-clear{margin-inline-start:0}.snag-dk-editbox{display:flex;flex-direction:column;gap:8px;margin-top:8px}.snag-dk-addreply{background:transparent;border:1px dashed ${c.border};color:${c.muted};border-radius:${c.radius};padding:9px;font:inherit;cursor:pointer;text-align:start;transition:border-color ${c.motion},color ${c.motion}}.snag-dk-addreply:hover{border-color:${c.accent};color:inherit}.snag-dk-replybox{display:flex;flex-direction:column;gap:8px}.snag-dk-who{margin:0;font-size:11px;color:${c.muted}}.snag-dk-who .snag-dk-link{padding:0;font-size:inherit;text-decoration:underline}`;function Gt(e,n,t){const o=e.ownerDocument??document;kn(e,"form",rt),kn(e,"dock",Yt);const s=o.createElement("div");(t??e).appendChild(s);const a=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1,i=g=>{const l=e.host;g&&!a?l.style.setProperty(y.dockW,`${Cn}px`):l.style.removeProperty(y.dockW)};i(!0);const d=g=>{Ze(r(Wt,{...g}),s)};return d(n),{update:d,close(){i(!1),Ze(null,s),s.remove()}}}const En=24;function Mn(e,n){const t=e.innerHeight,o=n.querySelector(".snag-dk");if(!o)return{top:0,bottom:t};const s=o.getBoundingClientRect();return s.height>=t-1?{top:0,bottom:t}:{top:0,bottom:Math.max(0,s.top)}}function Vt(e,n,t){const o=t.anchor.rect;if(!o)return;const s=t.anchor.offset??{fy:.5},a=o.y+o.h*s.fy,i=Mn(e,n),d=a-e.scrollY;if(d>=i.top+En&&d<=i.bottom-En)return;const g=e.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;e.scrollTo({top:Math.max(0,a-(i.top+i.bottom)/2),behavior:g?"auto":"smooth"})}export{Gt as openDock,Vt as scrollToSnag,Mn as visibleStrip};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const be="Snagset",Ao="snagset",pn="snagset.v1",ko="Snagset",Pt="Snag",$o="Snags",Eo={config:"SnagsetConfig"},Co={root:"data-snag-root"},Mt=e=>Co[e],To={anchor:"data-snag-anchor",ignore:"data-snag-ignore",mask:"data-snag-mask",nomask:"data-snag-nomask",src:"data-snag-src",component:"data-snag-component"},Ro=e=>To[e],P={font:"--snag-font",accent:"--snag-accent",onAccent:"--snag-onAccent",bg:"--snag-bg",fg:"--snag-fg",muted:"--snag-muted",border:"--snag-border",radius:"--snag-radius",shadow:"--snag-shadow",z:"--snag-z",motion:"--snag-motion",surface:"--snag-surface",sunken:"--snag-sunken",hover:"--snag-hover",focus:"--snag-focus",disabled:"--snag-disabled",statusOpen:"--snag-status-open",statusProgress:"--snag-status-progress",statusReview:"--snag-status-review",statusResolved:"--snag-status-resolved",anchorOrphan:"--snag-anchor-orphan",tbH:"--snag-tb-h",dockW:"--snag-dock-w",kb:"--snag-kb",thumbX:"--snag-thumb-x",thumbW:"--snag-thumb-w"},_o=e=>`var(${P[e]})`,Io=e=>"snag_"+e,bt={query:["snag_t","snag_off","snag_debug","snag_theme"],fragment:["snag_k"]},Po="snag:disclosure:v1",zt="snag:identity",mn="data-snag-theme",le={session:e=>`snag:session:${e}`,identity:zt,threads:(e,t)=>`snag:threads:${e}:${t}`,seen:(e,t)=>`snag:seen:${e}:${t}`,counts:e=>`snag:counts:${e}`,draft:(e,t)=>`snag:draft:${e}:${t}`,outbox:e=>`snag:outbox:${e}`,mode:"snag:mode",handoff:"snag:handoff",seenCoach:"snag:seen-coach",disclosure:Po},Re={panels:"snag.panels.js",crumbs:"snag.crumbs.js",capture:"snag.capture.js",screenshot:"snag.screenshot.js",anchorExt:"snag.anchor-ext.js",anchorFuzzy:"snag.anchor-fuzzy.js",dock:"snag.dock.js",text:"snag.text.js"},vt={thread:"thr_",comment:"cmt_",attachment:"att_"},Ot={attachmentKind:"x-snagset-attachment-kind",attachmentWidth:"x-snagset-attachment-width",attachmentHeight:"x-snagset-attachment-height"},Mo={route:"snagset:route"},gn={original:"snagset.original",wrapped:"snagset.wrapped"},yn="position:absolute!important;top:0!important;left:0!important;width:0!important;height:0!important;margin:0!important;padding:0!important;border:0!important;pointer-events:none!important;z-index:2147483647;isolation:isolate;color-scheme:light dark;";function bn(e){const t=e.ownerDocument.defaultView?.getComputedStyle(e);return t?t.transform!=="none"&&t.transform!==""||t.filter!=="none"&&t.filter!==""||t.perspective!=="none"&&t.perspective!==""||/transform|filter|perspective|contain/.test(t.willChange)||/paint|layout|strict|content/.test(t.contain)||t.containerType!==void 0&&t.containerType!=="normal"&&t.containerType!=="":!1}function Lt(e){const t=e.documentElement,n=e.body;return t&&bn(t)?{parent:n??t,trapped:!0}:n&&bn(n)?{parent:t??n,trapped:!1}:{parent:n??t,trapped:!1}}function vn(e=document){const t=Mt("root"),n=e.querySelector(`[${t}]`);if(n?.shadowRoot)return n.shadowRoot;const o=e.createElement("div");return o.setAttribute(t,""),o.style.cssText=yn,Lt(e).parent.appendChild(o),o.attachShadow({mode:"open"})}function zo(e,t,n=5){const o=e.ownerDocument??document,r=e.host,c=Lt(o).parent;if(typeof MutationObserver!="function"||!c)return()=>{};let u=0;const s=new MutationObserver(()=>{if(!r.isConnected){if(u++,u>n){s.disconnect(),t(u);return}Lt(o).parent.appendChild(r)}});return s.observe(c,{childList:!0}),()=>s.disconnect()}const wn=[["pointerdown",!0],["mousedown",!0],["touchstart",!0],["pointerup",!0],["mouseup",!0],["touchend",!0],["click",!0],["dblclick",!0],["focusin",!0],["focusout",!0]];function Oo(e){const t=e.host,n=o=>o.stopPropagation();for(const[o,r]of wn)t.addEventListener(o,n,{passive:r});return()=>{for(const[o]of wn)t.removeEventListener(o,n)}}function Lo(e,t,n=20){const o=e.host;if(typeof MutationObserver!="function")return()=>{};let r=0;const c=()=>{let s=!1;return o.getAttribute("aria-hidden")==="true"&&(o.removeAttribute("aria-hidden"),s=!0),o.hasAttribute("inert")&&(o.removeAttribute("inert"),s=!0),s},u=new MutationObserver(()=>{c()&&++r>n&&(u.disconnect(),t(r))});return c(),u.observe(o,{attributes:!0,attributeFilter:["aria-hidden","inert"]}),()=>u.disconnect()}const Do={product:be,set:ko,item:Pt,items:$o};function xn(e){return(t,n)=>(e[t]??"").replace(/\{(\w+)\}/g,(o,r)=>{const c=n?.[r]??Do[r];return c===void 0?o:String(c)})}const No=e=>new Intl.NumberFormat().format(e),Sn={"where.anchored":"{label}","where.approximate":"position approximate \u2014 the page changed","where.orphaned":"moved \u2014 the element is gone","status.open":"Active","status.progress":"In progress","status.review":"In review","status.resolved":"Resolved","author.unknown":"Someone","label.image":"an image","label.link":"a link","label.button":"a button","label.tag":"the {tag}"},An=xn(Sn),kn={open:{colour:"#4f6ef7"},progress:{colour:"#f59e0b"},review:{colour:"#8b5cf6"},resolved:{colour:"#10b981"}},$n=e=>e==="open"||e==="review"?"#fff":"#16161a",En=e=>e in kn?An(`status.${e}`):e,Ho=e=>An(`where.${e.anchorState}`,{label:e.anchor.label});class Dt extends Error{code;constructor(t,n){super(n??t),this.name="AdapterError",this.code=t}}function Cn(e){return{id:e.id,key:e.key,route:e.route,...e.scope?{scope:e.scope}:{},...e.attachments?.length?{attachments:e.attachments}:{},anchor:e.anchor,anchorState:e.anchorState,context:e.context,status:"open",comments:e.comment?[{id:e.comment.id,snagId:e.id,body:e.comment.body,author:e.comment.author,createdAt:e.createdAt}]:[],createdBy:e.createdBy,createdAt:e.createdAt,updatedAt:e.createdAt}}const k=Object.fromEntries(Object.keys(P).map(e=>[e,_o(e)])),Wo=Object.entries(kn).map(([e,t])=>` ${P[`status${e[0].toUpperCase()}${e.slice(1)}`]}:${t.colour};`).join(`
|
|
2
|
-
`),Fo=` :host{all:initial}[hidden]{display:none!important}:host{display:block;font:400 14px/1.45 ${k.font};color:${k.fg};${P.font}:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;${P.accent}:#2a51b8;${P.bg}:#fefdfc;${P.fg}:#181716;${P.muted}:#666564;${P.border}:#e4e3e0;${P.radius}:8px;${P.shadow}:0 6px 24px -4px rgb(0 0 0 / .18);${P.z}:2147483647;${P.motion}:160ms;${P.surface}:color-mix(in srgb,${k.fg} 6%,${k.bg});${P.sunken}:color-mix(in srgb,${k.fg} 3%,${k.bg});${P.hover}:color-mix(in srgb,${k.fg} 8%,${k.bg});${P.onAccent}:#fff;${P.focus}:color-mix(in srgb,${k.accent} 62%,${k.fg});${P.disabled}:color-mix(in srgb,${k.muted} 52%,${k.bg});${Wo} ${P.anchorOrphan}:#DC2626;}:host([${mn}="dark"]){${P.accent}:#8aafff;${P.onAccent}:#1d1c1a;${P.bg}:#1d1c1a;${P.fg}:#f0eeec;${P.muted}:#9a9997;${P.border}:#2d2c2b;${P.shadow}:0 6px 24px -4px rgb(0 0 0 / .6);}@media (prefers-reduced-motion:reduce){:host{${P.motion}:0ms}}@media (forced-colors:active){:host{${P.bg}:Canvas;${P.fg}:CanvasText;${P.muted}:CanvasText;${P.border}:CanvasText;${P.accent}:Highlight;${P.onAccent}:HighlightText;${P.surface}:Canvas;${P.sunken}:Canvas;${P.hover}:Canvas;${P.focus}:Highlight;${P.disabled}:GrayText;${P.shadow}:none;${P.anchorOrphan}:CanvasText;}.snag-pin{border-color:CanvasText!important;color:CanvasText!important;forced-color-adjust:none}}`,Ve={shield:1,pins:3,dock:5,notice:6,toolbar:7},Tn=new WeakMap;function nt(e,t,n){let o=Tn.get(e);if(o||Tn.set(e,o=new Set),o.has(t))return;o.add(t);try{const u=new CSSStyleSheet;u.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,u];return}catch{}const c=(e.ownerDocument??document).createElement("style");c.setAttribute(`data-snag-${t}`,""),c.textContent=n,e.appendChild(c)}function Bo(e){return e==="light"||e==="dark"?e:"auto"}function jo(e,t){const n=mn;if(t!=="auto")return e.setAttribute(n,t),()=>e.removeAttribute(n);const o=e.ownerDocument?.defaultView?.matchMedia?.("(prefers-color-scheme: dark)");if(!o)return e.setAttribute(n,"light"),()=>e.removeAttribute(n);const r=()=>e.setAttribute(n,o.matches?"dark":"light");return r(),o.addEventListener("change",r),()=>{o.removeEventListener("change",r),e.removeAttribute(n)}}function Nt(e){return e.getBoundingClientRect()}function wt(e){if(e.closest('[inert],[aria-hidden="true"]'))return!1;const t=e.checkVisibility;if(typeof t=="function")return t.call(e,{contentVisibilityAuto:!0,opacityProperty:!1,visibilityProperty:!0});const n=Nt(e);if(!(n.width>0||n.height>0||e.getClientRects().length>0))return!1;const r=e.ownerDocument?.defaultView;return r?r.getComputedStyle(e).visibility!=="hidden":!0}const Uo="button,a[href],[role=button],[role=link],[role=tab],[role=menuitem],label,input,select,textarea,summary",Zo=3,Rn=8,Vo=new Set(["img","picture","canvas","video","audio","iframe","embed","object","svg","math","input","select","textarea","button","progress","meter"]);function Yo(e,t){return Vo.has(e.tagName.toLowerCase())?!1:t.getComputedStyle(e).display==="inline"}function _n(e){const t=e.ownerDocument?.defaultView;if(!t)return e;let n=e;for(let r=e;r;r=r.parentElement){const c=Nt(r);if(c.width>=Rn&&c.height>=Rn&&!Yo(r,t)){n=r;break}n=r}let o=0;for(let r=n;r&&o<=Zo;r=r.parentElement){if(r.matches(Uo))return r;o++}return n}const Xo=10,Ht=[["click",!1],["auxclick",!1],["dblclick",!1],["pointerdown",!1],["pointerup",!1],["mousedown",!1],["mouseup",!1],["contextmenu",!1],["dragstart",!1],["wheel",!1],["touchstart",!0],["touchmove",!0],["touchend",!0],["selectstart",!0],["keydown",!1],["keyup",!1]];function Ko(e,t,n){let o=e;for(;o&&o!==o.ownerDocument.documentElement&&o!==o.ownerDocument.body;){const r=getComputedStyle(o),c=(r.overflowY==="auto"||r.overflowY==="scroll")&&o.scrollHeight>o.clientHeight&&(t>0&&o.scrollTop+o.clientHeight<o.scrollHeight-1||t<0&&o.scrollTop>0),u=(r.overflowX==="auto"||r.overflowX==="scroll")&&o.scrollWidth>o.clientWidth&&(n>0&&o.scrollLeft+o.clientWidth<o.scrollWidth-1||n<0&&o.scrollLeft>0);if(c||u)return o;o=o.parentElement}return null}function In(e,t){const n=t==="y"?e.deltaY:e.deltaX;return e.deltaMode===1?n*16:e.deltaMode===2?n*(t==="y"?innerHeight:innerWidth):n}const Jo=["position:fixed","inset:0",`z-index:${Ve.shield}`,"touch-action:pan-x pan-y pinch-zoom","background:transparent"].join(";");function qo(e,t={}){const n=t.doc??e.ownerDocument??document,o=n.defaultView??window;let r=t.coarsePointer??o.matchMedia?.("(pointer: coarse)").matches??!1;const c=l=>{const _=l.pointerType,S=_==="touch"?!0:_==="mouse"||_==="pen"?!1:r;S!==r&&(r=S,d())},u=n.createElement("div");u.className="snag-shield",u.style.cssText=Jo;let s="browse";const d=()=>{u.style.pointerEvents=r?"none":"auto",u.style.cursor="crosshair"};d();const y=l=>{const _=l;return!_||typeof _.closest!="function"?!1:e.contains(_)?!0:!!_.closest(`[${Mt("root")}]`)};function w(l,_,S){let I=S,M=0;for(;I.shadowRoot&&M++<Xo;){const N=T(I.shadowRoot,l,_);if(!N||N===I)break;I=N}return I}function T(l,_,S){const I=l.elementsFromPoint;if(typeof I=="function"){for(const N of I.call(l,_,S))if(N.getRootNode()===l)return N;return null}const M=l.elementFromPoint(_,S);return M&&M.getRootNode()===l?M:null}function g(l,_){const S=[];for(const I of n.elementsFromPoint(l,_)){if(y(I))continue;if(I===n.documentElement||I===n.body){S.push(I);continue}const M=w(l,_,I);S.push(y(M)?I:M)}return S}let f=null;const m=(l,_)=>{const[S]=g(l,_);S&&t.onPick?.(_n(S),{x:l,y:_})};let p=!1;const E=()=>{const l=n.getSelection?.();if(!l||l.isCollapsed||l.rangeCount===0||!l.toString().trim())return!1;const _=l.anchorNode;if(!_||e.contains(_))return!1;const S=_.nodeType===1?_:_.parentElement;return!y(S)},D=l=>{const _=l.composedPath()[0];if(_&&y(_)){p=!1;return}if(l.type==="selectstart"){t.onSelectStart?.();return}const S=l.type;if(S.endsWith("down")||S.endsWith("start")){p=!1;return}if(S.endsWith("up")||S.endsWith("end")){p=E();return}if(S==="click"||S==="auxclick"){if(!p)return;p=!1,l.preventDefault(),l.stopImmediatePropagation()}},O=l=>{if(l.type==="pointerdown"&&c(l),s==="comments"){D(l);return}if(s!=="add")return;if(l.type==="keydown"||l.type==="keyup"){Ee(l);return}const _=l.composedPath()[0];if(_&&_!==u&&y(_))return;const S=Ht.find(([I])=>I===l.type)?.[1]??!1;if(l.stopImmediatePropagation(),!S){if(r&&l.type==="pointerdown"){const I=l;f={x:I.clientX,y:I.clientY,t:performance.now()},pe(I.clientX,I.clientY)}if(r&&l.type==="pointerup"&&f){const I=l,M=f;f=null,Math.hypot(I.clientX-M.x,I.clientY-M.y)<=8&&performance.now()-M.t<=700&&m(I.clientX,I.clientY);return}if(l.type==="click"||l.type==="auxclick"||l.type==="dblclick"){l.preventDefault();const I=l;m(I.clientX,I.clientY);return}if(l.type==="wheel"){const I=l,M=In(I,"y"),N=In(I,"x"),[U]=g(I.clientX,I.clientY),G=Ko(U??null,M,N);G&&(G.scrollTop+=M,G.scrollLeft+=N,l.preventDefault());return}if(l.type==="dragstart"||l.type==="contextmenu"){l.preventDefault();return}(l.type==="pointerdown"||l.type==="mousedown")&&!r&&l.preventDefault()}},V=new Set(["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"," ","Spacebar","PageUp","PageDown","Home","End"]),re=/^[a-z0-9/?]$/;function Y(l){for(const _ of l.composedPath()){const S=_;if(!(!S||S.nodeType!==1||typeof S.matches!="function")&&S.matches('input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]),textarea,select,[contenteditable=""],[contenteditable=true],[role=textbox],[role=searchbox],[role=combobox]'))return!0}return!1}function Ee(l){V.has(l.key)||l.metaKey||l.ctrlKey||l.altKey||/^F\d{1,2}$/.test(l.key)||l.key!=="Escape"&&l.key.length===1&&re.test(l.key.toLowerCase())&&!Y(l)&&(l.preventDefault(),l.stopImmediatePropagation())}for(const[l,_]of Ht)o.addEventListener(l,O,{capture:!0,passive:_});let ee=0,te=null;function Pe(){if(ee=0,s!=="add"||!te)return;const[l]=g(te.x,te.y);t.onHover?.(l?_n(l):null)}function pe(l,_){s==="add"&&(te={x:l,y:_},!ee&&(ee=o.requestAnimationFrame(Pe)))}return u.addEventListener("pointermove",l=>pe(l.clientX,l.clientY)),u.addEventListener("pointerleave",()=>{te=null,t.onHover?.(null)}),{shield:u,getMode:()=>s,setMode(l){s=l,p=!1,d(),l==="add"?e.appendChild(u):u.remove(),l!=="add"&&(te=null,t.onHover?.(null))},hitTest:g,destroy(){ee&&o.cancelAnimationFrame(ee);for(const[l]of Ht)o.removeEventListener(l,O,{capture:!0});u.remove()}}}const Qo=/[\u200B-\u200D\u2060\uFEFF]/gu,Go=/[\s\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+/gu,er=[[/[\u2018\u2019\u201A\u201B]/gu,"'"],[/[\u201C\u201D\u201E\u201F]/gu,'"'],[/[\u2010-\u2015\u2212]/gu,"-"],[/\u2026/gu,"..."],[/\u2044/gu,"/"]];function tr(e){let t=e.normalize("NFC").replace(Qo,"");for(const[n,o]of er)t=t.replace(n,o);return t.replace(Go," ").trim()}const nr={testid:1,domid:1,css:.9,aria:.75,"text-exact":.8,"text-fuzzy":.78,"path-rect":.35,none:0,manual:1},Pn={anchored:.75,approximate:.35};function or(e,t){const n=nr[e];return t===1?n:n/(1+Math.log2(t))}function Mn(e){return e>=Pn.anchored?"anchored":e>=Pn.approximate?"approximate":"orphaned"}const rr=[Ro("anchor"),"data-testid","data-test-id","data-test","data-cy","data-qa","data-pw","data-automation-id"],zn=e=>typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),ar=[{strategy:"testid",applicable:e=>!!e.testid,find:(e,t)=>Wt(t,rr.map(n=>`[${n}="${zn(e.testid)}"]`).join(","))},{strategy:"domid",applicable:e=>!!e.domid,find:(e,t)=>Wt(t,`#${zn(e.domid)}`)},{strategy:"css",applicable:e=>!!e.css,find:(e,t)=>{try{return Wt(t,e.css)}catch{return[]}}}];function Wt(e,t){return[...e.querySelectorAll(t)].filter(sr)}function sr(e){return!e.closest(`[${Mt("root")}]`)}function ir(e,t){const n=t.text?.exact;if(!n)return!0;const o=tr(e.textContent??"");return o?o===n||o.includes(n)||n.includes(o):!0}function On(e,t,n,o){wt(e)||o.push("hidden"),t.hostPath?.length&&o.push("shadow-boundary");const r=!ir(e,t);r&&o.push("text-drift");let c=o.includes("hidden")?Math.min(n,.7):n;return r&&(c=Math.min(c,.5)),c}const cr={element:null,strategy:"none",score:0,state:"orphaned",reasons:["not-found"],candidates:0};function Ft(e,t=document,n={}){const o=[];for(const r of ar){if(!r.applicable(e))continue;const c=r.find(e,t);if(c.length===0)continue;const u=or(r.strategy,c.length),s=c[0];c.length>1&&o.push("ambiguous");const d=On(s,e,u,o),y={element:s,strategy:r.strategy,score:d,state:Mn(d),reasons:o.length?o:["exact"],candidates:c.length};if(y.reasons.includes("text-drift")&&n.extended){const w=n.extended(e,t,{...n.viewportWidth===void 0?{}:{viewportWidth:n.viewportWidth},...n.passCaches?{caches:n.passCaches}:{}});if(w&&w.score>y.score)return w}return y}return n.extended?.(e,t,{...n.viewportWidth===void 0?{}:{viewportWidth:n.viewportWidth},...n.passCaches?{caches:n.passCaches}:{}})??cr}const lr={"toolbar.aria":"{product} review toolbar","toolbar.group":"What you see","toolbar.browse":"Browse","toolbar.comments":"Comment","toolbar.comments.unresolved":"Comment, {n} unresolved","toolbar.add":"Add a comment","toolbar.add.draft":"Add a comment \u2014 one is unfinished","toolbar.panel":"All comments","pin.aria":"Comment {key} on {target}. {status}, {replies} replies. Press Enter.","pin.aria.one":"Comment {key} on {target}. {status}, 1 reply. Press Enter.","pin.aria.none":"Comment {key} on {target}. {status}. Press Enter.","pin.aria.moved":"Comment {key} on {target}. {status}. {where}. Press Enter.","pin.target":"{role} \u201C{name}\u201D","cluster.aria":"{n} comments here: {list}","nav.announce":"Comment {n} on {label}, {i} of {total}","action.retry":"Retry","action.dismiss":"Dismiss","action.export":"Export","action.exportclear":"Export & clear","error.quota":"Storage is full \u2014 this {item} is on screen but not saved. Export to keep them.","error.nostorage":"Comments won't be saved in this browser. Export before you leave to keep them.","error.linkrevoked":"This review link was turned off. Ask whoever sent it for a new one.","error.sessionended":"This review session has ended. Open your review link again to carry on.","error.sendfailed":"That {item} couldn't be sent, so it wasn't kept. Check your connection and try again.","error.origin":"{product} is not enabled for {origin}. Add that address to the site's allowed origins.","error.panels":"{product} loaded, but its comment UI didn't. You can still see the comments on the page.","error.panels.add":"Adding comments is unavailable until the comment UI loads.","error.capture":"{product} can't take new comments \u2014 the part that records the page didn't load. Everything already here still works.","paused.dialog":"Review paused \u2014 a dialog is open on this page. Close it to carry on commenting. Commenting inside a native dialog isn't supported yet.","paused.close":"Close","announce.created":"Comment {key} added.","permalink.unknown":"That comment isn't on this page any more"},dr={...Sn,...lr},B=xn(dr);function ur(e,t){const n=new Array(e.length),o=[],r=new Map,c=[];let u=0;for(let s=0;s<e.length;s++){u++;const d=e[s],y=Math.floor(d.x/t),w=Math.floor(d.y/t);let T=-1;e:for(let g=-1;g<=1;g++)for(let f=-1;f<=1;f++)for(const m of r.get(`${y+g},${w+f}`)??[]){const p=c[m],E=d.x-p.x,D=d.y-p.y;if(E*E+D*D<=t*t){T=m;break e}}if(T===-1){T=o.length,o.push([]),c.push(d);const g=`${y},${w}`,f=r.get(g);f?f.push(T):r.set(g,[T])}n[s]=T,o[T].push(s)}return{group:n,members:o,visits:u}}const fr=`position:absolute;top:0;left:0;width:0;height:0;pointer-events:none;z-index:${Ve.pins}`,hr=' .snag-pp{animation:snag-pp .5s ease-out 2}@keyframes snag-pp{50%{transform:scale(1.45)}}@media (prefers-reduced-motion: reduce){.snag-pp{animation:none}}.snag-pin{width:28px;height:28px;margin:-14px 0 0 -14px}.snag-pin::after{content:"";position:absolute;inset:-8px}@media (pointer:coarse){.snag-pin{width:34px;height:34px;margin:-17px 0 0 -17px}}',pr=`position:fixed;inset:0;width:0;height:0;pointer-events:none;z-index:${Ve.pins}`,ot=["position:absolute",`color:${k.onAccent}`,`font:600 12px/1 ${k.font}`,"display:flex","align-items:center","justify-content:center","box-shadow:0 1px 4px rgb(0 0 0 / .35)","pointer-events:auto","cursor:pointer","box-sizing:border-box"].join(";"),xt="border-radius:50% 50% 50% 2px",Ln=e=>k[`status${e[0].toUpperCase()}${e.slice(1)}`]??k.muted;function Dn(e,t){const n=$n(t.status),o=`background:${Ln(t.status)};color:${n}`,r="0 1px 4px rgb(0 0 0 / .35)";return e==="anchored"?`${ot};${xt};${o};border:2px solid ${n};box-shadow:${r}`:e==="approximate"?`${ot};${xt};${o};border:2px dashed ${n};box-shadow:${r}`:`${ot};${xt};${o};border:2px solid ${n};box-shadow:inset 0 0 0 2px ${n},${r}`}function mr(e,t){const n=[];let o="static",r=!1;for(let c=e;c&&c!==e.ownerDocument.documentElement;c=c.parentElement){const u=t.getComputedStyle(c),s=c!==e.ownerDocument.body&&/auto|scroll|hidden|overlay/.test(u.overflowY+u.overflowX);s&&!r&&n.push(c),u.position==="fixed"?(o="dynamic",r=!0):u.transform!=="none"||u.filter!=="none"||u.perspective!=="none"?(o="dynamic",r=!1):(u.position==="sticky"||u.willChange.includes("transform")||u.contain.includes("layout")||s&&(c.scrollHeight>c.clientHeight||c.scrollWidth>c.clientWidth))&&(o="dynamic")}return{tier:o,clips:n}}function gr(e,t,n,o){const r=e.ownerDocument??document,c=r.defaultView??window;nt(e,"pins",hr);const u=r.createElement("div");u.className="snag-pins",u.style.cssText=fr,e.appendChild(u);const s=r.createElement("div");s.className="snag-pins-dyn",s.style.cssText=pr,e.appendChild(s);let d=[],y=[];const w=new Map;let T=new Map,g=null;const f=new Map;let m=new Map;const p=c.matchMedia?.("(pointer: coarse)").matches??!1,E=p?32:24,D=p?34:28;let O=[],V=null,re=null,Y={x:0,y:0};function Ee(){const A=r.defaultView,$=u.getBoundingClientRect();Y={x:$.left+(A?.scrollX??0),y:$.top+(A?.scrollY??0)}}let ee=[];const te=new Map,Pe=1e4,pe=5,l=new Map,_=new Set(["testid","domid"]);function S(A){const $=l.get(A.id),b=$?.ref.deref();if(!b||!b.isConnected)return null;if(_.has($.strategy))return b;if(A.anchor.css)try{if(!b.matches(A.anchor.css))return null}catch{return null}return b}function I(A,$){const b=[],H=On($,A.anchor,1,b);return{element:$,strategy:l.get(A.id).strategy,score:H,state:Mn(H),reasons:b.length?b:["exact"],candidates:1}}function M(A,$="authoritative"){w.clear(),ee=[];const b=Date.now(),H=n?.newPass?.();return A.map(v=>{const z=S(v),C=n?.get();let x=z?I(v,z):Ft(v.anchor,r,{viewportWidth:r.defaultView?.innerWidth??0,...C?{extended:C}:{},...H?{passCaches:H}:{}});if(z&&x.reasons.includes("text-drift")){const W=Ft(v.anchor,r,{viewportWidth:r.defaultView?.innerWidth??0,...C?{extended:C}:{},...H?{passCaches:H}:{}});W.score>x.score&&(x=W)}if(n&&(!x.element||x.reasons.includes("text-drift"))&&n.want(v.anchor),!x.element&&n){const W=n.fuzzyHit?.(v.id);W?x=W:n.wantFuzzy?.(v.id,v.anchor)}const ne=x.element&&v.anchor.text?.exact&&(x.reasons.includes("text-drift")||x.strategy==="path-rect"&&x.score<.5);if(n&&ne){const W=n.fuzzyHit?.(v.id);W&&W.score>x.score?x=W:W||n.wantFuzzy?.(v.id,v.anchor)}x.element?l.set(v.id,{ref:new WeakRef(x.element),strategy:x.strategy}):l.delete(v.id),x.element&&w.set(v.id,x.element);let X=!1;if(x.state==="orphaned"){const W=te.get(v.id)??{firstSeenAt:b,tries:0,best:x};W.tries++,x.score>=W.best.score&&(W.best=x),te.set(v.id,W);const K=n?.unavailable?.()??!1,J=K?2:pe,ce=b-W.firstSeenAt<Pe;$==="optimistic"||ce&&($==="navigating"||W.tries<J)?X=!0:(x=W.best,K&&!x.reasons.includes("budget-exceeded")&&(x={...x,reasons:[...x.reasons,"budget-exceeded"]}),te.delete(v.id))}else te.delete(v.id);X||ee.push({id:v.id,state:x.state,strategy:x.strategy,confidence:x.score});const L=x.element?Nt(x.element):void 0;if(L&&(L.width>0||L.height>0)){const W=r.defaultView;v.anchor.rect={x:L.left+(W?.scrollX??0),y:L.top+(W?.scrollY??0),w:L.width,h:L.height}}return{...v,anchorState:X?v.anchorState:x.state,anchorPending:X,anchorReasons:x.reasons}})}function N(){const A=r.documentElement;return{w:A.scrollWidth,h:A.scrollHeight}}function U(A,$,b){return{x:Math.min(Math.max(A,14),Math.max(b.w,28)-14),y:Math.min(Math.max($,14),Math.max(b.h,28)-14)}}function G(A,$){Ee(),u.textContent="",s.textContent="",d=[],y=[],T=new Map,m=new Map,f.clear(),O=[],re=null,A.forEach((b,H)=>{const v=b.anchor.rect;if(!v)return;const z=b.anchor.offset??{fx:.5,fy:.5},C=r.createElement("div");C.className="snag-pin",C.setAttribute("data-state",b.anchorPending?"pending":b.anchorState),C.setAttribute("data-key",b.key),C.style.cssText=b.anchorPending?`${Dn("approximate",b)};opacity:.55`:Dn(b.anchorState,b);const x=w.get(b.id),{tier:ne,clips:X}=x?mr(x,c):{tier:"static",clips:[]};if(ne==="dynamic"&&x){const q=x.getBoundingClientRect(),me=Fe();C.style.left=`${q.left-me.left+q.width*z.fx}px`,C.style.top=`${q.top-me.top+q.height*z.fy}px`,f.set(C,{x:q.left+q.width*z.fx+c.scrollX-Y.x,y:q.top+q.height*z.fy+c.scrollY-Y.y});const Oe={node:C,el:x,fx:z.fx,fy:z.fy,clips:X};d.push(Oe),C.hidden=!wt(x),C.hidden||Be(Oe,q,new Map(X.map(lt=>[lt,lt.getBoundingClientRect()])))}else{const q=U(v.x+v.w*z.fx-Y.x,v.y+v.h*z.fy-Y.y,N());C.style.left=`${q.x}px`,C.style.top=`${q.y}px`,f.set(C,q),x&&(y.push({node:C,el:x,fx:z.fx,fy:z.fy,clips:[]}),C.hidden=!wt(x))}C.textContent=String(H+1);const L=Ho(b),W=b.anchor.role?B("pin.target",{role:b.anchor.role,name:b.anchor.accessibleName??b.anchor.label}):b.anchor.label,K=b.comments.length-1,J=b.anchorState==="approximate"?`~ ${b.key}`:b.key;C.setAttribute("role","button"),C.setAttribute("tabindex","0");const ce=b.anchorState==="anchored"?B(K===0?"pin.aria.none":K===1?"pin.aria.one":"pin.aria",{key:J,target:W,status:En(b.status),replies:K}):B("pin.aria.moved",{key:J,target:W,status:En(b.status),where:L});C.title=ce,C.setAttribute("aria-label",ce),t&&xe(C,()=>t(b)),$?.has(b.id)&&(C.hidden=!0,C.setAttribute("data-fo","")),T.set(b.id,C),m.set(C,{snag:b,ordinal:H+1}),(ne==="dynamic"?s:u).appendChild(C)}),Ke(),g&&je(g),ze(),ie="",ue(r.visibilityState==="visible"&&T.size>0)}const Fe=()=>s.getBoundingClientRect();let we=!1;function Be(A,$,b){for(const H of A.clips){const v=b.get(H);if(v&&($.right<=v.left||$.left>=v.right||$.bottom<=v.top||$.top>=v.bottom)){A.node.hidden=!0;return}}A.node.hidden=!1}function $t(A){const $=new Map;for(const b of A)for(const H of b.clips)$.has(H)||$.set(H,H.getBoundingClientRect());return $}const Ce=["open","progress","review","resolved"];function xe(A,$){A.addEventListener("click",$),A.addEventListener("keydown",b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),$())})}function Me(A,$,b,H,v){const z=Ce.find(x=>A.some(ne=>ne.snag.status===x))??"open",C=r.createElement("div");C.className="snag-pin snag-cluster",C.style.cssText=`${ot};border-radius:50%;background:${Ln(z)};color:${$n(z)};border:2px solid ${k.onAccent}`,C.style.left=`${$}px`,C.style.top=`${b}px`,C.textContent=String(A.length),C.setAttribute("data-count",String(A.length)),C.setAttribute("data-state",z),C.setAttribute("role","button"),C.setAttribute("tabindex","0"),v&&C.setAttribute("aria-expanded","true"),C.setAttribute("aria-label",B("cluster.aria",{n:A.length,list:A.map(x=>x.ordinal).join(", ")})),xe(C,()=>{if(v)V=null;else if(A.length<=6)V=H;else{o?.(A.map(x=>x.snag.id));return}Ke()}),u.appendChild(C),O.push(C)}function de(A,$,b,H){Me(A,$,b,H,!0),A.forEach((v,z)=>{const C=$,x=b+(z+1)*(D+12),ne=v.x-C,X=v.y-x,L=Math.hypot(ne,X);if(L>4){const K=r.createElement("div");K.className="snag-leader",K.setAttribute("aria-hidden","true"),K.style.cssText=`position:absolute;left:${C}px;top:${x}px;width:${L}px;height:0;border-top:1px solid ${k.onAccent};transform-origin:0 0;transform:rotate(${Math.atan2(X,ne)}rad)`,u.appendChild(K),O.push(K)}const W=v.dot.cloneNode(!0);W.style.visibility="",W.style.left=`${C}px`,W.style.top=`${x}px`,xe(W,()=>t?.(v.snag)),u.appendChild(W),O.push(W)})}function Ke(){for(const v of O)v.remove();O=[];const A=[];for(const[v,z]of m){if(v.hidden){v.style.visibility="";continue}const C=f.get(v);C&&A.push({dot:v,snag:z.snag,ordinal:z.ordinal,x:C.x,y:C.y})}const{members:$,visits:b}=ur(A,E);u.setAttribute("data-cv",String(b)),u.setAttribute("data-cp",String(A.length));let H=!1;for(const v of $){if(v.length<2){A[v[0]].dot.style.visibility="";continue}const z=v.map(X=>A[X]),C=z.map(X=>X.snag.id).sort().join("|");for(const X of z)X.dot.style.visibility="hidden";const x=z.reduce((X,L)=>X+L.x,0)/z.length,ne=z.reduce((X,L)=>X+L.y,0)/z.length;V===C&&z.length<=6?(H=!0,de(z,x,ne,C)):Me(z,x,ne,C,!1)}V&&!H&&(V=null)}function Je(A){re?.remove(),re=null;const $=A.anchor.rect;if(!$)return;const b=A.anchor.offset??{fx:.5,fy:.5},H=r.createElement("div");H.className="snag-pin snag-ghost",H.style.cssText=`${ot};${xt};background:transparent;border:2px dashed ${k.anchorOrphan};color:${k.anchorOrphan};box-shadow:none;pointer-events:none`;const v=U($.x+$.w*b.fx-Y.x,$.y+$.h*b.fy-Y.y,N());H.style.left=`${v.x}px`,H.style.top=`${v.y}px`,H.setAttribute("aria-hidden","true"),u.appendChild(H),re=H}function ze(A=!1){const $=A?[...d,...y]:d;we||$.length===0||(we=!0,c.requestAnimationFrame(()=>{we=!1;const b=performance.now(),H=c.scrollX,v=c.scrollY,z=Fe(),C=$.map(L=>L.el.isConnected?L.el.getBoundingClientRect():null),x=$.map(L=>L.el.isConnected&&wt(L.el)),ne=$t($),X=N();$.forEach((L,W)=>{const K=C[W];if(!K)return;if(L.node.hasAttribute("data-fo")){L.node.hidden=!0;return}if(!x[W]){L.node.hidden=!0;return}L.node.hidden=!1;const J=K.left+K.width*L.fx,ce=K.top+K.height*L.fy;if(L.node.parentElement===s)L.node.style.left=`${J-z.left}px`,L.node.style.top=`${ce-z.top}px`,Be(L,K,ne),f.set(L.node,{x:J+H-Y.x,y:ce+v-Y.y});else{const q=U(J+H-Y.x,ce+v-Y.y,X);L.node.style.left=`${q.x}px`,L.node.style.top=`${q.y}px`,f.set(L.node,q)}}),Ke(),u.setAttribute("data-ms",(performance.now()-b).toFixed(2))}))}const Se=()=>ze();r.addEventListener("scroll",Se,{capture:!0,passive:!0});const it=typeof c.ResizeObserver=="function"?new c.ResizeObserver(()=>ze(!0)):null;it?.observe(r.documentElement);let Ae=null,ie="";function Et(){let A="";for(const $ of[...y,...d]){if(!$.el.isConnected)continue;const b=$.el.getBoundingClientRect();A+=`${Math.round(b.left)},${Math.round(b.top)},${Math.round(b.width)};`}!A||A===ie||(ie=A,ze(!0))}function ue(A){if(Ae&&clearTimeout(Ae),Ae=null,!A)return;const $=()=>{Et(),Ae=setTimeout($,500)};Ae=setTimeout($,500)}const ct=()=>ue(r.visibilityState==="visible"&&T.size>0);r.addEventListener("visibilitychange",ct);function ae(A){const $=T.get(A);$&&($.classList.remove("snag-pp"),c.requestAnimationFrame(()=>$.classList.add("snag-pp")),c.setTimeout(()=>$.classList.remove("snag-pp"),1400))}function je(A){const $=g?T.get(g):void 0;$&&($.style.transform="",$.style.zIndex=""),g=A;const b=A?T.get(A):void 0;b&&(b.style.transform="scale(1.4)",b.style.zIndex="1")}return{el:u,render:G,showGhost:Je,pulse:ae,reanchor:M,settled:()=>ee,hasPending:()=>te.size>0,highlight:je,destroy(){r.removeEventListener("scroll",Se,{capture:!0}),r.removeEventListener("visibilitychange",ct),it?.disconnect(),ue(!1),u.remove(),s.remove()}}}const yr=` .snag-notice{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + var(${P.tbH},56px));z-index:${Ve.notice};max-width:min(420px,calc(100vw - 24px));background:${k.bg};color:${k.fg};border:1px solid ${k.border};border-inline-start:3px solid ${k.anchorOrphan};border-radius:${k.radius};box-shadow:${k.shadow};padding:12px 14px;pointer-events:auto;font:400 13px/1.45 ${k.font};display:flex;flex-direction:column;gap:10px}@media (pointer:coarse){.snag-notice{bottom:calc(12px + var(${P.tbH},64px))}}.snag-notice p{margin:0}.snag-notice-actions{display:flex;gap:6px;justify-content:flex-end}.snag-notice button{appearance:none;font:inherit;cursor:pointer;border-radius:calc(${k.radius} - 2px);padding:6px 12px;min-height:30px;border:0;transition:background ${k.motion}}.snag-notice-retry{background:${k.accent};color:${k.onAccent};font-weight:600}.snag-notice-dismiss{background:transparent;color:${k.muted}}.snag-notice-dismiss:hover{background:${k.hover};color:inherit}.snag-notice button:focus-visible{outline:2px solid ${k.focus};outline-offset:2px}`;function br(e,t){const n=e.ownerDocument??document,o=n.defaultView??window;nt(e,"notice",yr);const r=n.createElement("div");r.className="snag-notice",r.setAttribute("role","alert"),r.hidden=!0;const c=n.createElement("p"),u=n.createElement("div");u.className="snag-notice-actions";const s=n.createElement("button");s.type="button",s.className="snag-notice-dismiss",s.textContent=B("action.dismiss"),s.addEventListener("click",()=>T());const d=n.createElement("button");d.type="button",d.className="snag-notice-retry",u.append(s,d),r.append(c,u);let y;d.addEventListener("click",()=>{T(),y?.run()});let w=0;function T(){w&&o.cancelAnimationFrame(w),w=0,r.hidden=!0,r.remove()}return{show(g,f,m){y=f,d.hidden=!f,f&&(d.textContent=B(f.label)),r.hidden=!1,c.textContent="",(t??e).appendChild(r);const p=B(g,m);w&&o.cancelAnimationFrame(w),w=o.requestAnimationFrame(()=>{w=0,c.textContent=p})},hide:T,visible:()=>r.isConnected&&!r.hidden,destroy(){r.remove()}}}const vr=` .snag-paused{border:0;padding:0;background:transparent;pointer-events:auto;max-width:min(420px,calc(100vw - 32px))}.snag-paused::backdrop{background:rgb(0 0 0 / .28)}.snag-paused-box{background:${k.bg};color:${k.fg};border:1px solid ${k.border};border-inline-start:3px solid ${k.accent};border-radius:${k.radius};box-shadow:${k.shadow};padding:14px 16px;font:400 13px/1.45 ${k.font};display:flex;flex-direction:column;gap:12px}.snag-paused p{margin:0}.snag-paused-actions{display:flex;justify-content:flex-end}.snag-paused button{appearance:none;font:inherit;cursor:pointer;border:0;font-weight:600;border-radius:calc(${k.radius} - 2px);padding:6px 14px;min-height:30px;background:${k.accent};color:${k.onAccent}}.snag-paused button:focus-visible{outline:2px solid ${k.focus};outline-offset:2px}`;function wr(e,t){const n=e.ownerDocument??document;nt(e,"paused",vr);const o=n.createElement("dialog");o.className="snag-paused",o.setAttribute("aria-label",B("paused.dialog"));const r=n.createElement("div");r.className="snag-paused-box",r.setAttribute("role","status");const c=n.createElement("p");c.textContent=B("paused.dialog");const u=n.createElement("div");u.className="snag-paused-actions";const s=n.createElement("button");s.type="button",s.textContent=B("paused.close"),s.addEventListener("click",()=>w()),u.append(s),r.append(c,u),o.append(r);let d=!1;function y(){if(!d){(t??e).appendChild(o);try{o.showModal(),d=!0}catch{o.setAttribute("open",""),d=!0}}}function w(){if(d){d=!1;try{o.close()}catch{o.removeAttribute("open")}o.remove()}}return o.addEventListener("close",()=>{d=!1,o.remove()}),{show:y,hide:w,destroy(){w(),o.remove()}}}const xr=Symbol.for(gn.original),Nn=Symbol.for(gn.wrapped),rt=()=>{};function Sr(e,t,n){let o;try{o=e[t]}catch{return rt}if(typeof o!="function"||o[Nn])return rt;const r=o,c=n(r);let u=!1;const s=function(...d){return u?r.apply(this,d):c.apply(this,d)};try{const d=s;d[Nn]=!0,d[xr]=r,Object.defineProperty(s,"name",{value:r.name,configurable:!0}),Object.defineProperty(s,"length",{value:r.length,configurable:!0})}catch{}try{e[t]=s}catch{return rt}return e[t]!==s?rt:()=>{let d;try{d=e[t]}catch{d=void 0}if(d===s)try{e[t]=r;return}catch{}u=!0}}function Ar(e,t){const n=[];let o=0;const r=()=>{o||(o=e.requestAnimationFrame(()=>{o=0,t.onResize()}))};e.addEventListener("resize",r),n.push(()=>{o&&e.cancelAnimationFrame(o),e.removeEventListener("resize",r)}),e.visualViewport?.addEventListener("resize",r),n.push(()=>e.visualViewport?.removeEventListener("resize",r));const c=()=>void e.setTimeout(t.onResize,250);e.addEventListener("orientationchange",c),n.push(()=>e.removeEventListener("orientationchange",c));let u=e.location.pathname;const s=()=>{const E=e.location.pathname;E!==u&&(u=E,t.onRoute())},d=e.navigation;if(d){const E=()=>void e.setTimeout(s,0);d.addEventListener("navigatesuccess",E),n.push(()=>d.removeEventListener("navigatesuccess",E))}else for(const E of["pushState","replaceState"])n.push(Sr(e.history,E,D=>function(...O){const V=D.apply(this,O);return e.setTimeout(s,0),V}));const y=e.document;let w=!0;try{y.documentElement.matches(":modal")}catch{w=!1}const T=()=>{const E=y.querySelectorAll("dialog[open]");if(!w)return E.length>0;for(const D of E)if(D.matches(":modal"))return!0;return!1};let g=!1;const f=()=>{const E=T();E!==g&&(g=E,t.onModal(E))};y.addEventListener("toggle",f,!0),n.push(()=>y.removeEventListener("toggle",f,!0));const m=new MutationObserver(f);m.observe(y.documentElement,{subtree:!0,attributes:!0,attributeFilter:["open"]}),n.push(()=>m.disconnect());const p=()=>void e.setTimeout(s,0);return e.addEventListener("popstate",p),n.push(()=>e.removeEventListener("popstate",p)),{destroy(){for(const E of n)E();n.length=0}}}function kr(e,t){try{e.sessionStorage.setItem(le.handoff,JSON.stringify({openThreadId:t}))}catch{}}function $r(e){try{const t=e.sessionStorage.getItem(le.handoff);if(t===null)return null;e.sessionStorage.removeItem(le.handoff);const n=JSON.parse(t);return typeof n.openThreadId=="string"?n.openThreadId:null}catch{return null}}function Er(){return{statuses:[],read:"all",pageOnly:!1,newOnly:!1,sort:"page"}}const Cr=["open","progress","review","resolved"];function Tr(e,t,n){if(t.statuses.length>0&&Cr.includes(e.status)&&!t.statuses.includes(e.status)||t.by&&e.createdBy.id!==t.by||t.page&&e.route!==t.page)return!1;if(t.read!=="all"&&n){const o=Rr(e,n);if(t.read==="unread"&&!o||t.read==="read"&&o)return!1}return!0}function Rr(e,t){const n=t.get(e.id)??0;return Date.parse(e.updatedAt)>n}function _r(e,t,n){const o=e.visualViewport;let r=0;const c=()=>{if(r=0,!o)return;const s=o.offsetLeft,d=o.offsetTop;t.style.translate=s||d?`${s}px ${d}px`:"",t.style.width=`${o.width}px`,t.style.height=`${o.height}px`,n?.(o.scale)},u=()=>{r||(r=e.requestAnimationFrame(c))};return o?.addEventListener("resize",u,{passive:!0}),o?.addEventListener("scroll",u,{passive:!0}),u(),()=>{r&&e.cancelAnimationFrame(r),o?.removeEventListener("resize",u),o?.removeEventListener("scroll",u)}}const Ir=/^eyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}/,Pr=/^[a-f0-9]{32,}$/i,Mr=/^(?=[A-Za-z0-9_-]{24,}$)(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9_-]+$/,zr="[redacted]";function Hn(e){return e.includes("/")?e.split("/").map(t=>Ir.test(t)||Pr.test(t)||Mr.test(t)?zr:t).join("/"):e}const Or=/\/index\.(html?|php)$/i;function Lr(e){if(!e.startsWith("/"))return e;let t=e.replace(Or,"/");return t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t.toLowerCase()}function Dr(e){try{const t=e.querySelector(`meta[name="${Mo.route}"]`)?.getAttribute("content")?.trim();return!t||t.length>512||!t.startsWith("/")?null:t}catch{return null}}function Nr(e,t){const n=t??Dr(e);return Lr(n??Hn(e.location.pathname))}const Hr=[/^utm_/,/^(gclid|gbraid|wbraid|fbclid|msclkid|ttclid|twclid|igshid|yclid|li_fat_id)$/,/^(mc_cid|mc_eid|_hsenc|_hsmi|vero_id|oly_enc_id|oly_anon_id)$/,/^_vercel_/,/^__vercel_/,/^_rsc$/],Wr=[...bt.query,...bt.fragment];function Fr(e,t=[]){return Wr.includes(e)||t.includes(e)?!0:Hr.some(n=>n.test(e))}function Br(e,t={}){const n=t.significantQueryParams??[];if(n!=="*"&&n.length===0)return;let o;try{o=new URLSearchParams(e)}catch{return}const r={};for(const[c,u]of o)Fr(c,t.ignoredQueryParams??[])||n!=="*"&&!n.includes(c)||(r[c]=u);return Object.keys(r).length>0?r:void 0}function jr(e,t,n={}){const o=n.significantQueryParams??[];if(o==="*"){const r=e??{},c=t??{},u=new Set([...Object.keys(r),...Object.keys(c)]);for(const s of u)if(r[s]!==c[s])return!1;return!0}for(const r of o)if((e?.[r]??void 0)!==(t?.[r]??void 0))return!1;return!0}const Ur=120,Zr=1e3,Vr=200,Yr=1e4;function Xr(e,t,n){const o=t.MutationObserver;if(typeof o!="function")return{destroy:()=>{}};let r=!1,c=null,u=!1,s=!1,d=0,y=T(),w=0;function T(){return t.performance?.now?.()??0}const g=new o(()=>{r=!0,d++,m()});function f(){const E=T();return E-y>=1e3&&(d>Vr&&(w=E+Yr),d=0,y=E),E<w?Zr:Ur}function m(){c||(c=setTimeout(p,f()))}function p(){if(c=null,!!r){if(u){s=!0;return}r=!1,u=!0;try{n()}finally{u=!1,s&&(s=!1,r=!0,m())}}}return g.observe(e.documentElement,{childList:!0,subtree:!0}),{destroy(){g.disconnect(),c&&clearTimeout(c),c=null}}}const Kr="0.0.0",Jr={capture:Re.capture,"anchor-ext":Re.anchorExt,"anchor-fuzzy":Re.anchorFuzzy,crumbs:Re.crumbs,screenshot:Re.screenshot,dock:Re.dock,text:Re.text},Wn=new Map,Bt=new Map,Fn=new Map;function qr(e,t,n){const o=new URL(t,n.location.href).href,r=new URL(Jr[e],o);r.searchParams.set("cv",Kr);const c=Fn.get(e)??0;return c>0&&r.searchParams.set("r",String(c)),Fn.set(e,c+1),r.href}async function _e(e,t,n=document){const o=Wn.get(e);if(o)return{ok:!0,mod:o};const r=Bt.get(e);if(r)return r;const c=(async()=>{for(let u=0;u<2;u++)try{const s=await import(qr(e,t,n));return Wn.set(e,s),{ok:!0,mod:s}}catch{}return{ok:!1,reason:"unavailable"}})();Bt.set(e,c);try{return await c}finally{Bt.delete(e)}}const Qr="composer",jt=e=>le.draft(e,Qr),Gr=le.draft("\0","").split("\0")[0];function ea(e){try{return e.body.trim()?(localStorage.setItem(jt(e.route),JSON.stringify(e)),!0):(Bn(e.route),!0)}catch{return!1}}function ta(e){try{const t=localStorage.getItem(jt(e));if(!t)return null;const n=JSON.parse(t);return!n||typeof n.body!="string"||!n.anchor||n.route!==e?null:n}catch{return null}}function Bn(e){try{localStorage.removeItem(jt(e))}catch{}}function Ut(){try{for(let e=0;e<localStorage.length;e++){const t=localStorage.key(e);if(t&&t.startsWith(Gr))return!0}return!1}catch{return!1}}const na="http://www.w3.org/2000/svg";function Ie(e,t,n,o=[]){const r=e.createElementNS(na,t);for(const c in n)r.setAttribute(c,n[c]);for(const c of o)r.appendChild(c);return r}const Zt=(e,t="16",n="16",o="0 0 16 16")=>({width:t,height:n,viewBox:o,fill:"none","aria-hidden":"true"}),oa=e=>Ie(e,"svg",Zt(),[Ie(e,"path",{d:"M8 3v10M3 8h10",stroke:"currentColor","stroke-width":"1.75","stroke-linecap":"round"})]),ra=e=>Ie(e,"svg",Zt(),[Ie(e,"rect",{x:"2.25",y:"3.25",width:"11.5",height:"9.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),Ie(e,"path",{d:"M9.5 3.5v9",stroke:"currentColor","stroke-width":"1.5"})]),aa=e=>Ie(e,"svg",{...Zt(e,"10","16","0 0 10 16"),fill:"currentColor"},[Ie(e,"g",{fill:"currentColor"},[4,8,12].flatMap(t=>[3,7].map(n=>Ie(e,"circle",{cx:String(n),cy:String(t),r:"1"}))))]),sa=` .snag-tb{position:fixed;z-index:${Ve.toolbar};display:flex;align-items:center;gap:2px;padding:4px;border-radius:calc(${k.radius} + 4px);background:${k.bg};color:${k.fg};box-shadow:${k.shadow};font:500 13px/1 ${k.font};pointer-events:auto;user-select:none;border:1px solid ${k.border}}.snag-tb{transition:inset-inline-end ${k.motion}}.snag-tb--fine{inset-inline-end:calc(20px + env(safe-area-inset-right) + var(${P.dockW},0px));inset-block-end:calc(20px + env(safe-area-inset-bottom));transition:inset-inline-end ${k.motion}}.snag-tb--coarse{inset-inline:0;inset-block-end:0;border-radius:14px 14px 0 0;padding:6px 10px calc(6px + env(safe-area-inset-bottom));justify-content:center;gap:4px;flex-direction:column}.snag-grabber{width:36px;height:4px;border-radius:2px;background:${k.muted};margin:2px auto 6px}.snag-row{display:flex;align-items:center;gap:2px}.snag-grip{display:flex;align-items:center;padding:0 4px;color:${k.muted};cursor:grab;touch-action:none}.snag-grip:active{cursor:grabbing}.snag-seg{display:flex;background:${k.surface};border-radius:${k.radius};padding:2px;position:relative}.snag-seg::before{content:"";position:absolute;inset-block:2px;inset-inline-start:var(${P.thumbX},0);width:var(${P.thumbW},0);background:${k.accent};border-radius:calc(${k.radius} - 2px);pointer-events:none;transition:inset-inline-start ${k.motion},width ${k.motion}}.snag-seg>.snag-b[aria-pressed="true"]{background:transparent;color:${k.onAccent}}.snag-seg>.snag-b{z-index:1}.snag-b{appearance:none;border:0;background:transparent;color:inherit;font:inherit;padding:6px 11px;border-radius:calc(${k.radius} - 2px);cursor:pointer;display:flex;align-items:center;gap:6px;position:relative;min-height:32px;transition:background ${k.motion}}.snag-b:hover:not(:disabled){background:color-mix(in srgb,currentColor 12%,transparent)}.snag-b:disabled{opacity:.4;cursor:not-allowed}.snag-b[aria-pressed="true"]{background:${k.accent};color:${k.onAccent}}.snag-b:focus-visible{outline:2px solid ${k.focus};outline-offset:2px}.snag-icon{padding:6px 9px}@media (pointer:coarse){.snag-b{min-height:44px;min-width:44px;padding:6px 14px}.snag-icon{padding:6px 14px}}.snag-puck .snag-row>:not([aria-expanded]){display:none}.snag-puck{padding:4px;border-radius:50%}.snag-puck [aria-expanded]{min-width:44px;min-height:44px;border-radius:50%}`;function ia(e,t){const n=e.ownerDocument??document,o=t.coarsePointer??n.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1;nt(e,"toolbar",sa);const r=n.createElement("div");r.className=`snag-tb ${o?"snag-tb--coarse":"snag-tb--fine"}`,r.setAttribute("role","toolbar"),r.setAttribute("aria-label",B("toolbar.aria"));const c=n.createElement("div");c.className="snag-grabber",c.setAttribute("aria-hidden","true");const u=n.createElement("div");u.className="snag-row";const s=n.createElement("span");s.className="snag-grip",s.setAttribute("aria-hidden","true"),s.appendChild(aa(n));const d=n.createElement("div");d.className="snag-seg",d.setAttribute("role","group"),d.setAttribute("aria-label",B("toolbar.group"));const y=(l,_,S)=>{const I=n.createElement("button");return I.type="button",I.className=`snag-b ${l}`,I.setAttribute("aria-label",_),typeof S=="string"?I.textContent=S:I.appendChild(S),I},w=y("",B("toolbar.browse"),B("toolbar.browse")),T=y("",B("toolbar.comments"),B("toolbar.comments")),g=y("snag-icon",B("toolbar.add"),oa(n)),f=y("snag-icon",B("toolbar.panel"),ra(n));f.setAttribute("aria-expanded","false"),d.append(w,T),o||u.appendChild(s),u.append(d,g,f),o&&r.appendChild(c),r.appendChild(u),(t.parent??e).appendChild(r);const m=()=>{e.host.style.setProperty(P.tbH,`${r.offsetHeight}px`)};m();let p=null;function E(l,_){const S=n.defaultView,I=r.offsetWidth,M=r.offsetHeight,N=jn(l,8,Math.max(8,S.innerWidth-I-8)),U=jn(_,8,Math.max(8,S.innerHeight-M-8));p={left:N,top:U},r.style.left=`${N}px`,r.style.top=`${U}px`,r.style.right="auto",r.style.bottom="auto"}const D=()=>{m(),p&&E(p.left,p.top)},O=n.defaultView;if(O?.addEventListener("resize",D),w.addEventListener("click",()=>t.onState("browse")),T.addEventListener("click",()=>t.onState("comments")),g.addEventListener("click",()=>t.onState(V==="add"?"comments":"add")),f.addEventListener("click",()=>t.onPanel()),!o){let l=null;s.addEventListener("pointerdown",S=>{l={x:S.clientX,y:S.clientY,r:r.getBoundingClientRect()},s.setPointerCapture(S.pointerId),S.preventDefault()}),s.addEventListener("pointermove",S=>{l&&E(l.r.left+(S.clientX-l.x),l.r.top+(S.clientY-l.y))});const _=S=>{l=null,s.hasPointerCapture(S.pointerId)&&s.releasePointerCapture(S.pointerId)};s.addEventListener("pointerup",_),s.addEventListener("pointercancel",_)}let V="browse";function re(l){V=l,w.setAttribute("aria-pressed",String(l==="browse")),T.setAttribute("aria-pressed",String(l!=="browse")),g.setAttribute("aria-pressed",String(l==="add")),Y()}function Y(){const l=d.querySelector('.snag-b[aria-pressed="true"]'),_=d.getBoundingClientRect(),S=l?.getBoundingClientRect();if(!l||!S?.width){d.style.setProperty(P.thumbW,"0px");return}const I=n.defaultView?.getComputedStyle(d),M=I?.direction==="rtl",N=parseFloat((M?I?.paddingRight:I?.paddingLeft)??"0")||0,U=(M?_.right-S.right:S.left-_.left)-N;d.style.setProperty(P.thumbW,`${Math.round(S.width)}px`),d.style.setProperty(P.thumbX,`${Math.max(0,Math.round(U))}px`)}function Ee(l){g.disabled=l,l?g.title=B("error.panels.add"):g.removeAttribute("title")}function ee(l){g.setAttribute("aria-label",B(l?"toolbar.add.draft":"toolbar.add"))}function te(l){T.setAttribute("aria-label",l!==null&&l>0?B("toolbar.comments.unresolved",{n:No(l)}):B("toolbar.comments"))}re("browse"),te(0);function Pe(l){r.classList.toggle("snag-puck",l),l||Y()}function pe(l){r.hidden=l,l||Y(),m()}return{el:r,setState:re,setCount:te,setDegraded:Ee,setDraft:ee,setPuck:Pe,setConcealed:pe,destroy(){O?.removeEventListener("resize",D),e.host.style.removeProperty(P.tbH),r.remove()}}}const jn=(e,t,n)=>e<t?t:e>n?n:e,Un=24;function ca(e,t){const n=e.innerHeight,o=t.querySelector(".snag-dk");if(!o)return{top:0,bottom:n};const r=o.getBoundingClientRect();return r.height>=n-1?{top:0,bottom:n}:{top:0,bottom:Math.max(0,r.top)}}function la(e,t,n){const o=n.anchor.rect;if(!o)return;const r=n.anchor.offset??{fy:.5},c=o.y+o.h*r.fy,u=ca(e,t),s=c-e.scrollY;if(s>=u.top+Un&&s<=u.bottom-Un)return;const d=e.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;e.scrollTo({top:Math.max(0,c-(u.top+u.bottom)/2),behavior:d?"auto":"smooth"})}function Vt(){const e=new Uint8Array(16);crypto.getRandomValues(e);const t=Date.now();e[0]=Math.floor(t/2**40)&255,e[1]=Math.floor(t/2**32)&255,e[2]=Math.floor(t/2**24)&255,e[3]=Math.floor(t/2**16)&255,e[4]=Math.floor(t/2**8)&255,e[5]=t&255,e[6]=e[6]&15|112,e[8]=e[8]&63|128;const n=Array.from(e,o=>o.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}const da=()=>vt.thread+Vt(),Zn=()=>vt.comment+Vt(),ua=()=>vt.attachment+Vt(),fa={attachments:"direct",realtime:"none",anchorReports:!1,identity:["guest"],export:["json","md"],serverSideSearch:!1,privateThreads:!1,assignees:!1};function ha(){const e=le.threads("probe","probe");try{return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(t){return Vn(t)}}function pa(e,t,n){const o=le.threads(e,t);function r(){let s=null;try{s=localStorage.getItem(o)}catch{return[]}if(!s)return[];try{const d=JSON.parse(s);return Array.isArray(d)?d.filter(ga):[]}catch{return[]}}function c(s){try{localStorage.setItem(o,JSON.stringify(s))}catch(d){if(!Vn(d))return;throw new Dt("local_quota_exceeded")}}const u=s=>({...s,updatedAt:new Date().toISOString()});return{kind:"local",capabilities:fa,async init(s){return{uid:s.uid,env:s.env,features:{screenshots:!0,uploads:!1}}},async listThreads(s={}){let d=r();return s.route!==void 0&&(d=d.filter(y=>y.route===s.route)),s.status?.length&&(d=d.filter(y=>s.status.includes(y.status))),{data:d,serverTime:new Date().toISOString()}},async getThread(s){return r().find(d=>d.id===s)??null},async createThread(s){const d=Cn(s);return c([...r(),d]),d},async patchThread(s,d){const y=r(),w=y.findIndex(g=>g.id===s);if(w<0)return null;const T=u({...y[w],...ma(d)});return y[w]=T,c(y),T},async deleteThread(s){const d=r(),y=d.find(T=>T.id===s),w=d.filter(T=>T.id!==s);w.length!==d.length&&c(w);for(const T of y?.attachments??[])n?.del(T.id).catch(()=>{})},async uploadAttachment(s,d){if(!n)throw new Dt("attachments_unsupported");const y=ua();return await n.put(y,{blob:s,uid:e,env:t,kind:d.kind,...d.width!==void 0?{width:d.width}:{},...d.height!==void 0?{height:d.height}:{},createdAt:Date.now()}),{id:y,kind:d.kind,url:"",...d.width!==void 0?{width:d.width}:{},...d.height!==void 0?{height:d.height}:{},bytes:s.size,contentType:s.type}},async createComment(s,d){const y=r(),w=y.findIndex(g=>g.id===s);if(w<0)return null;const T={id:d.id,snagId:s,body:d.body,author:d.author,createdAt:new Date().toISOString()};return y[w]=u({...y[w],comments:[...y[w].comments,T]}),c(y),T},async patchComment(s,d){const y=r();for(let w=0;w<y.length;w++){const T=y[w].comments.find(f=>f.id===s);if(!T)continue;const g={...T,body:d};return y[w]=u({...y[w],comments:y[w].comments.map(f=>f.id===s?g:f)}),c(y),g}return null},async deleteComment(s){const d=r(),y=d.findIndex(w=>w.comments.some(T=>T.id===s));y<0||(d[y]=u({...d[y],comments:d[y].comments.filter(w=>w.id!==s)}),c(d))}}}function ma(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Vn(e){return e instanceof Error?e.name==="QuotaExceededError"||e.name==="NS_ERROR_DOM_QUOTA_REACHED"||e.code===22||e.code===1014:!1}function ga(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.id=="string"&&typeof t.key=="string"&&typeof t.route=="string"&&typeof t.anchor=="object"&&t.anchor!==null&&typeof t.anchor.label=="string"&&Array.isArray(t.comments)}function ya(e,t,n=()=>Date.now()){const o=le.seen(e,t);let r=null;function c(){if(r)return r;try{const s=localStorage.getItem(o),d=s?JSON.parse(s):{};return r=typeof d=="object"&&d!==null&&!Array.isArray(d)?d:{}}catch{return r={}}}function u(s){r=s;try{localStorage.setItem(o,JSON.stringify(s))}catch{}}return{map:()=>new Map(Object.entries(c())),mark(s){u({...c(),[s]:n()})},markAll(s){const d=n(),y={...c()};for(const w of s)y[w.id]=d;u(y)}}}function at(){let e=null;try{e=localStorage.getItem(zt)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function Yn(e){try{localStorage.setItem(zt,JSON.stringify(e))}catch{}}function Yt(){const e=at();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function Xn(e){return at().projects?.[e]?.holderId}function ba(e){const t=at().projects?.[e]?.holderSecret;return t&&/^[\w-]{43}$/.test(t)?t:void 0}function va(e,t,n){const o=at();Yn({...o,projects:{...o.projects,[e]:{holderId:t,holderSecret:n}}})}function wa(e,t){const n=at(),o=n.projects?.[e];o&&Yn({...n,projects:{...n.projects,[e]:{...o,holderId:t}}})}const We=e=>le.session(e);function Kn(e){if(!e)return null;const t=JSON.parse(e);return typeof t?.token=="string"&&typeof t?.refreshableUntil=="number"?t:null}function Ye(e){try{const t=Kn(sessionStorage.getItem(We(e)));if(t)return t;const n=Kn(localStorage.getItem(We(e)));return n?.member?n:null}catch{return null}}function Xt(e,t){try{t.member?(localStorage.setItem(We(e),JSON.stringify(t)),sessionStorage.removeItem(We(e))):sessionStorage.setItem(We(e),JSON.stringify(t))}catch{}}function st(e){try{sessionStorage.removeItem(We(e)),localStorage.removeItem(We(e))}catch{}}const xa=(e,t=Date.now())=>t>e.expiresAt-3e4,Kt=(e,t=Date.now())=>t>=e.refreshableUntil;class Xe extends Error{code;status;constructor(t,n,o){super(o),this.name="HttpAdapterError",this.status=t,this.code=n}}function Sa(e){const{offset:t,testId:n,domId:o,page:r,schemaVersion:c,...u}=e;return{...u,...n?{testid:n}:{},...o?{domid:o}:{},...t?{offset:{fx:t.x,fy:t.y}}:{}}}function Aa(e,t){const n=e.url??"",o=/^https?:/i.test(n)?n:n?`${t}${n.startsWith("/")?"":"/"}${n}`:`${t}/api/v1/attachments/${encodeURIComponent(e.id)}/blob`;return{...e,url:o}}function St(e,t,n){return{id:e.id,route:e.anchor?.page?.route??"",key:e.key,status:e.status,anchor:Sa(e.anchor),anchorState:e.anchorState,context:e.context,comments:e.comments??[],createdBy:e.createdBy,createdAt:e.createdAt,updatedAt:e.updatedAt,...e.resolvedAt?{resolvedAt:e.resolvedAt}:{},...e.attachments?.length?{attachments:e.attachments.map(o=>Aa(o,n))}:{},...t?{scope:{environment:t}}:{}}}function ka(e,t){const{offset:n,testid:o,domid:r,...c}=e;return{...c,schemaVersion:pn,...o?{testId:o}:{},...r?{domId:r}:{},offset:n?{x:n.fx,y:n.fy}:{x:.5,y:.5},page:{route:t,pathname:location.pathname,origin:location.origin}}}function $a(e,t,n,o={}){const r=e.replace(/\/+$/,""),c=`${r}/api/v1/projects/${encodeURIComponent(t)}`;let u=o.reviewToken,s=Ye(t);async function d(f=!1){const m=s&&!Kt(s)?s.token:null,p=!!m&&!u&&!f,E=p?void 0:u?{kind:"link",token:u,name:Yt().name||void 0}:{kind:"guest",name:Yt().name||"Anonymous",holderId:Xn(t),holderSecret:ba(t)};let D;try{D=await fetch(`${c}/sessions`,{method:"POST",credentials:"omit",headers:{"content-type":"application/json",...m?{Authorization:`Bearer ${m}`}:{}},body:JSON.stringify({...n?{environment:n}:{},...E?{identity:E}:{},client:{widget:Ao,schema:pn}})})}catch(re){throw new Xe(0,"network_error",re.message)}finally{u=void 0}if(!D.ok){const Y=(await D.json().catch(()=>null))?.error?.code??"unauthorized";throw st(t),s=null,Y==="session_revoked"||Y==="token_revoked"?o.onSessionEnded?.("revoked"):D.status===401&&o.onSessionEnded?.("expired"),new Xe(D.status,Y,"This review session is not valid.")}const O=await D.json();O.holderSecret&&O.reviewer?va(t,O.reviewer.id,O.holderSecret):O.reviewer&&wa(t,O.reviewer.id);const V=O.round?.number??(p?s?.round:void 0);return s={token:O.sessionToken,expiresAt:Date.parse(O.expiresAt),refreshableUntil:Date.parse(O.refreshableUntil),reviewerId:O.reviewer?.id??s?.reviewerId??"",permissions:O.permissions??s?.permissions??[],...V!==void 0?{round:V}:{},...p&&s?.member?{member:s.member}:{},...p&&s?.member&&s.moderator?{moderator:!0}:{}},Xt(t,s),E&&(w=E.name??null),o.onSessionStarted?.(),s}async function y(){if(s){if(Kt(s)){st(t),s=null,o.onSessionEnded?.("expired");return}await d().catch(()=>{})}}let w=null;async function T(){if(s&&Kt(s))return st(t),s=null,w=null,o.onSessionEnded?.("expired"),null;const f=Yt().name||null,m=s!==null&&!s.member&&f!==null&&f!==w;if(!s||xa(s)||u||m)try{await d(m)}catch(p){if(!(p instanceof Xe)||p.status===0)throw p;return null}return s?.token??null}async function g(f,m,p=!1){const E=await T();let D;try{D=await fetch(c+f,{...m,headers:{"content-type":"application/json",...E?{Authorization:`Bearer ${E}`}:{},...m?.headers??{}},credentials:"omit"})}catch(O){throw new Xe(0,"network_error",O.message)}if(!D.ok){const O=await D.json().catch(()=>null),V=O?.error?.code??"http_error";if(D.status===401&&!p&&V!=="session_revoked")return st(t),s=null,g(f,m,!0);throw new Xe(D.status,V,O?.error?.message??`The server answered ${D.status}.`)}return await D.json()}return{kind:"http",capabilities:{attachments:"none",realtime:"none",anchorReports:!0,identity:["guest"],export:[],serverSideSearch:!1,privateThreads:!1,assignees:!1},async init(f){const m=await g("/config");return this.capabilities.attachments=m.features.screenshots?"direct":"none",{uid:f.uid,env:f.env,features:m.features,...m.rounds?{rounds:m.rounds}:{},...m.writable===void 0?{}:{writable:m.writable},...m.reason===void 0?{}:{reason:m.reason}}},async reportAnchors(f){if(f.length!==0)for(let m=0;m<f.length;m+=50)try{await g("/anchor-reports",{method:"POST",body:JSON.stringify({reports:f.slice(m,m+50)})})}catch{return}},revalidate:y,member:()=>s?.member??null,adoptSession(f){s={token:f.sessionToken,expiresAt:Date.parse(f.expiresAt),refreshableUntil:Date.parse(f.refreshableUntil),reviewerId:f.reviewer.id,permissions:f.permissions,member:f.reviewer.name,...f.moderator?{moderator:!0}:{}},Xt(t,s),o.onSessionStarted?.()},signOut(){st(t),s=null,w=null},getRound(){return s?.round??Ye(t)?.round??null},setRound(f){s&&(s={...s,round:f});const m=Ye(t);m&&Xt(t,{...m,round:f})},async fetchForeignImage(f){try{const m=await T(),p=await fetch(`${c}/image?src=${encodeURIComponent(f)}`,{credentials:"omit",...m?{headers:{Authorization:`Bearer ${m}`}}:{}});if(!p.ok)return null;const E=await p.blob();return E.type.startsWith("image/")?E:null}catch{return null}},async uploadAttachment(f,m){const p=await T(),E=await fetch(`${c}/attachments`,{method:"POST",credentials:"omit",headers:{"content-type":f.type||"image/webp",[Ot.attachmentKind]:m.kind,...m.width?{[Ot.attachmentWidth]:String(m.width)}:{},...m.height?{[Ot.attachmentHeight]:String(m.height)}:{},...p?{Authorization:`Bearer ${p}`}:{}},body:f});if(!E.ok){const O=await E.json().catch(()=>null);throw new Xe(E.status,O?.error?.code??"upload_failed",O?.error?.message??"Upload failed.")}const D=await E.json();return{id:D.id,kind:m.kind,contentType:D.contentType,byteSize:D.byteSize,...m.width?{width:m.width}:{},...m.height?{height:m.height}:{},url:`${r}/api/v1/attachments/${D.id}/blob`}},async listThreads(f){await T();const m=new URLSearchParams;n&&m.set("env",n),f?.route&&m.set("route",f.route),s?.round&&m.set("round",String(s.round));const p=await g(`/threads?${m}`);return{data:p.data.map(E=>St(E,n,r)),...p.nextCursor?{nextCursor:p.nextCursor}:{},deleted:[],serverTime:p.serverTime}},async getThread(f){return(await this.listThreads()).data.find(p=>p.id===f)??null},async getThreadByKey(f){const m=new URLSearchParams({key:f});n&&m.set("env",n);const E=(await g(`/threads?${m}`)).data[0];return E?St(E,n,r):null},async createThread(f){const m=await g("/threads",{method:"POST",body:JSON.stringify({id:f.id,anchor:ka(f.anchor,f.route),anchorState:f.anchorState,context:f.context,...n?{scope:{environment:n}}:{},createdBy:{name:f.createdBy.name},...f.comment?{comment:{id:f.comment.id,body:f.comment.body}}:{},...f.attachments?.length?{attachments:f.attachments.map(p=>p.id)}:{}})});return St(m,n,r)},async patchThread(f,m){if(!m.status)return null;const p=await g(`/threads/${encodeURIComponent(f)}`,{method:"PATCH",body:JSON.stringify({status:m.status})});return St(p,n,r)},async deleteThread(f){await g(`/threads/${encodeURIComponent(f)}`,{method:"DELETE"})},isMine(f){return f.id?f.id===(s??Ye(t))?.reviewerId||f.id===Xn(t):!1},canModerate(){const f=s??Ye(t);return!!f?.member&&!!f.moderator},can(f){return(s??Ye(t))?.permissions.includes(f)??!1},async createComment(f,m){const p=await g(`/threads/${encodeURIComponent(f)}/comments`,{method:"POST",body:JSON.stringify({id:m.id,body:m.body})});return{id:p.id,snagId:f,body:p.body,author:p.author,createdAt:p.createdAt}},async patchComment(f,m){return await g(`/comments/${encodeURIComponent(f)}`,{method:"PATCH",body:JSON.stringify({body:m})}),null},async deleteComment(f){await g(`/comments/${encodeURIComponent(f)}`,{method:"DELETE"})}}}async function Ea(e,t){if(e.url&&/^https?:/i.test(e.url))try{const n=await fetch(e.url,{credentials:"omit"});if(!n.ok)return null;const o=await n.blob();return o.type&&!o.type.startsWith("image/")?null:o}catch{return null}return t(e.id)}const Ca=64,Ta=4096,Ra=e=>le.counts(e),_a=e=>e.filter(t=>t.status!=="resolved").length;function Ia(e,t,n){const o=new Map;for(const s of t){const d=o.get(s.route)??{n:0,seen:""};s.status!=="resolved"&&d.n++,s.updatedAt>d.seen&&(d.seen=s.updatedAt),o.set(s.route,d)}o.has(n)||o.set(n,{n:0,seen:new Date().toISOString()});const c=[...o.entries()].sort((s,d)=>d[1].seen.localeCompare(s[1].seen)).slice(0,Ca);c.some(([s])=>s===n)||(c[c.length-1]=[n,o.get(n)]);let u={v:1,p:_a(t),r:Object.fromEntries(c.map(([s,d])=>[s,d.n])),t:new Date().toISOString()};JSON.stringify(u).length>Ta&&(u={...u,r:{}});try{localStorage.setItem(Ra(e),JSON.stringify(u))}catch{return null}return u}function Pa(e,t){return e?.r[t]??0}const Ma="pass(?:word|wd)?|pwd|secret|token|api[_-]?key|apikey|auth(?:orization)?|credential|session|sid|cookie|jwt|bearer|otp|mfa|totp|cvv|cvc|ssn|nino|iban|card(?:[_-]?number)?|account[_-]?number|private[_-]?key|signature|client[_-]?secret|refresh[_-]?token|access[_-]?token",za=new RegExp(`(["'\`]?)(?<![A-Za-z0-9])(?:${Ma})[\\w-]*\\b\\1?\\s*[:=]\\s*(?:(["'\`])((?:\\\\.|(?!\\2)[^\\\\])*)\\2|([^\\s,;&}\\])]{3,}))`,"gi"),Oa=/^(?:Bearer|Basic|Digest|Negotiate|Token)$/i,La=(e,t,n,o,r,c,u)=>{if(!n&&Oa.test(r)&&u.slice(c+e.length).startsWith(" [redacted]")||(n?o:r).startsWith("[redacted"))return e;const s=n?`${n}${o}${n}`:r;return e.slice(0,e.length-s.length)+(n?`${n}[redacted]${n}`:"[redacted]")},Jn=/data:[a-z0-9.+-]*\/?[a-z0-9.+-]*;base64,[A-Za-z0-9+/=]{16,}/gi,qn=/\beyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{0,}/g,Qn=/\b(sk-[A-Za-z0-9]+-[A-Za-z0-9_-]{20,}|sk-ant-[A-Za-z0-9_-]{20,}|sk-[A-Za-z0-9]{20,}|(sk|pk|rk)_(live|test)_[A-Za-z0-9]{16,}|gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|glpat-[A-Za-z0-9_-]{16,}|xox[baprs]-[A-Za-z0-9-]{10,}|xapp-[A-Za-z0-9-]{10,}|AKIA[0-9A-Z]{16}|ASIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{35}|ya29\.[A-Za-z0-9_-]{20,}|SG\.[A-Za-z0-9_-]{20,}|npm_[A-Za-z0-9]{30,}|dop_v1_[a-f0-9]{40,}|shpat_[a-f0-9]{30,}|sbp_[a-f0-9]{30,}|hf_[A-Za-z0-9]{30,}|nvapi-[A-Za-z0-9_-]{20,})\b/g,Da=/\b(Bearer|Basic|Digest|Negotiate|Token)\s+[A-Za-z0-9._~+/=-]{8,}/gi,Gn=/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\.[A-Za-z]{2,24})+\b/g,Jt=/\b(?:\d[ -]?){12,18}\d\b/g,eo=/\b(?=[A-Za-z0-9+/]*[a-z])(?=[A-Za-z0-9+/]*[A-Z])(?=[A-Za-z0-9+/]*\d)[A-Za-z0-9+/]{40,}={0,2}\b/g,to=/\b[0-9a-f]{32,}\b/gi,no=/\b(?=[A-Za-z0-9_-]*[a-z])(?=[A-Za-z0-9_-]*[A-Z])(?=[A-Za-z0-9_-]*\d)[A-Za-z0-9_-]{40,}\b/g,oo=/\b[a-z][a-z0-9]{1,15}(?:_[a-z0-9]{1,15}){0,2}_(?=[A-Za-z0-9_-]*[A-Z])(?=[A-Za-z0-9_-]*\d)[A-Za-z0-9_-]{24,}\b/g,ro=/\b[a-z][a-z0-9+.-]*:\/\/[^\s/:@]+:[^\s/@]+@/gi,Na=/^(?=[A-Za-z0-9_~.+/=-]*[a-z])(?=[A-Za-z0-9_~.+/=-]*[A-Z])(?=[A-Za-z0-9_~.+/=-]*\d)[A-Za-z0-9_~.+/=-]{24,}$/;function $e(e,t){e.lastIndex=0;const n=e.test(t);return e.lastIndex=0,n}function ao(e){const t=e.replace(/[ -]/g,"");if(t.length<13||t.length>19)return!1;let n=0,o=!1;for(let r=t.length-1;r>=0;r--){let c=t.charCodeAt(r)-48;o&&(c*=2,c>9&&(c-=9)),n+=c,o=!o}return n%10===0}function Ha(e){Jt.lastIndex=0;for(const t of e.matchAll(Jt))if(ao(t[0]))return!0;return!1}function At(e){let t=e;return t=t.replace(Jn,"data:[redacted]"),t=t.replace(Da,"$1 [redacted]"),t=t.replace(za,La),t=t.replace(qn,"[redacted:jwt]"),t=t.replace(Qn,"[redacted:key]"),t=t.replace(oo,"[redacted:key]"),t=t.replace(ro,"[redacted:url-cred]@"),t=t.replace(Gn,"[redacted:email]"),t=t.replace(Jt,n=>ao(n)?"[redacted:card]":n),t=t.replace(no,n=>`[redacted:b64:${n.length}]`),t=t.replace(eo,n=>`[redacted:b64:${n.length}]`),t=t.replace(to,n=>`[redacted:hex:${n.length}]`),t}const Wa=bt.query,Fa=bt.fragment;function Ba(e,t=[]){let n;try{const o=globalThis.location?.href;n=new URL(e,o)}catch{return At(e)}n.username="",n.password="";for(const o of[...n.searchParams.keys()]){if(Fa.includes(o)){n.searchParams.set(o,"[redacted]");continue}if(Wa.includes(o))continue;if(!t.includes(o)){n.searchParams.set(o,"[redacted]");continue}const r=n.searchParams.get(o)??"";At(r)!==r&&n.searchParams.set(o,"[redacted]")}return n.hash&&n.hash.length>1&&(n.hash=t.includes("#")?n.hash:"#[redacted]"),At(n.toString().replace(/%5Bredacted%5D/gi,"[redacted]"))}function ja(e){return e.length>120?!0:$e(Gn,e)||$e(qn,e)||$e(Qn,e)||$e(to,e)||$e(eo,e)||$e(Jn,e)||$e(no,e)||$e(oo,e)||$e(ro,e)||Na.test(e)||Ha(e)}const kt={id:"rev_local",name:B("author.unknown"),kind:"guest"},Ua="0.0.0";function so(e,t){if(e)return{...kt,name:e,...t?{email:t}:{}};try{const n=localStorage.getItem(le.identity);if(n)return{...kt,name:n[0]==="{"?JSON.parse(n).name??kt.name:n}}catch{}return kt}function Za(e){return`SN-${e.reduce((n,o)=>{const r=Number(o.key.split("-")[1]??0);return Number.isFinite(r)&&r>n?r:n},0)+1}`}let qt=null;const ve=e=>Nr(e,qt);function Va(e,t){const n=vn(),o=n.ownerDocument??document,r=o.defaultView??window,c=t?.config?.site??"local",u=t?.emit??(()=>{}),s=t?.assetBase??"./",d=t?.config?.env??"default";nt(n,"tokens",Fo);const y=jo(n.host,Bo(t?.config?.theme)),w={},T=t?.config?.storage==="local"?void 0:t?.config?.host,g=T&&c!=="local"?$a(T,c,t?.config?.env,{reviewToken:t?.reviewToken,onSessionEnded:a=>{ae.show(a==="revoked"?"error.linkrevoked":"error.sessionended")},onSessionStarted:()=>ae.hide()}):pa(c,d,{put:(a,i)=>w.put(a,i),del:a=>w.del(a)}),f=ya(c,d);let m=null;g.init({uid:c,env:d}).then(a=>{m=a.rounds??null,U?.update(x()),a.writable===!1&&a.reason==="origin_not_allowed"&&ae.show("error.origin",void 0,{origin:location.origin})}).catch(()=>{});let p=[],E=[];const D=ha();let O=null,V=null,re=!1,Y=!1,Ee=!1,ee=null,te=!1;const Pe={get:()=>O,unavailable:()=>Y||Ee,newPass:()=>V?.createPassCaches(),fuzzyHit:a=>ee?.hit(a)??null,wantFuzzy:(a,i)=>{if(ee){ee.enqueue(a,i,()=>Q());return}te||!V||!i.text?.exact||i.text.exact.length<8||(te=!0,_e("anchor-fuzzy",s,o).then(h=>{if(!h.ok||!V){Ee=!0,Q();return}ee=h.mod.createFuzzyEngine(o,V.fuzzyDeps),Te()}))},want:a=>{re||!(a.role&&a.accessibleName)&&!a.text?.exact&&!a.path?.length||(re=!0,_e("anchor-ext",s,o).then(i=>{if(!i.ok){Y=!0,Q();return}V=i.mod,O=i.mod.resolveExtended,Te()}))}};let pe=null,l=Er();const _=()=>l.statuses.length>0||!!l.by||!!l.page||l.read!=="all",S=gr(n,a=>{if(M==="add"){if(N?.hasText()){N.pulse();return}N?.close(),N=null,fe("comments")}v(a.id)},Pe,a=>{pe=a,U?U.update(x()):v()});let M=(()=>{try{return sessionStorage.getItem(le.mode)==="comments"?"comments":"browse"}catch{return"browse"}})(),N=null,U=null,G=null,Fe=!1,we=null,Be=!1,$t=null,Ce=null,xe=null,Me=!1;function de(){return xe?Promise.resolve(xe):Me?Promise.resolve(null):_e("capture",s,o).then(i=>i.ok?(w.put=i.mod.putBlob,w.del=i.mod.deleteBlob,xe=i.mod):(Ke(new Error("chunk unavailable")),null))}function Ke(a){Me||(Me=!0,M==="add"&&fe("comments"),J.setDegraded(!0),ae.show("error.capture",{label:"action.retry",run:()=>{Me=!1,J.setDegraded(!1),de()}}),console.warn(`[${be}] the capture chunk failed to load`,a))}let Je=0;function ze(){const a=new URL(s,o.location.href).href,i=new URL(Re.panels,a);return i.searchParams.set("cv",Ua),Je>0&&i.searchParams.set("r",String(Je)),Je++,import(i.href)}async function Se(){if(Be)return null;if(we)return we.catch(()=>null);we=ze().catch(async()=>(await new Promise(a=>setTimeout(a,1e3)),ze()));try{return $t=await we}catch(a){return we=null,it(a),null}}function it(a){Be=!0,M==="add"&&fe("comments"),J.setDegraded(!0),ae.show("error.panels",{label:"action.retry",run:()=>{Be=!1,J.setDegraded(!1),v(G)}}),console.warn(`[${be}] the panels chunk failed to load`,a)}const Ae=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1;let ie=null;async function Et(){if(ie)return;const a=await de();!a||ie||(ie=a.createAddChrome(n,Ae,{pick:(i,h)=>void $(i,h),announce:Qe}),ie.setActive(M==="add"))}const ue=o.createElement("div");ue.style.cssText=`position:fixed;left:0;top:0;pointer-events:none;z-index:${Ve.dock}`,n.appendChild(ue);const ct=_r(r,ue,a=>J.setPuck(a>1.2)),ae=br(n,ue),je=wr(n,ue),A=qo(n,{onPick:(a,i)=>void $(a,i),onHover:a=>a?ie?.show(a):ie?.clear(),onSelectStart:()=>{Ae||nn()}});async function $(a,i){if(N?.hasText()){N.pulse();return}N?.close();const[h,R]=await Promise.all([Se(),de()]);if(!h||!R)return;const F=R.captureContext({page:R.derivePageRef(o.location,ht()),...mt()});hn(a);const Z=R.deriveAnchorLabel(a);b(h,a,i,F,Z,R)}function b(a,i,h,R,F,Z,j,He){let ge=i;pt=!1;const he=ve(o);_t=!1;const gt=()=>{N=null,Bn(he),J.setDraft(Ut()),fe("comments")},tt=()=>{et?.abort(),Ne=et=null,gt()},ye={at:h,label:F,...j?{initialBody:j.body,initialName:j.author,...j.email?{initialEmail:j.email}:{}}:{},onDraft:(oe,se,yt)=>{const So=ea({route:he,body:oe,author:se,...yt?{email:yt}:{},label:F,anchor:He??Z.createElementAnchor(i,{point:h,viewportWidth:r.innerWidth,label:F,...Z.describeElement(i)}),at:{x:h.x+r.scrollX,y:h.y+r.scrollY},savedAt:new Date().toISOString()});J.setDraft(Ut()),!So&&!_t&&(_t=!0,sn())},onSend:(oe,se,yt)=>{gt(),cn(ge,h,R,oe,se,yt,He)},onRetarget:oe=>{const se=oe==="up"?Z.widen(ge):Z.narrow(ge);se&&(ge=se,ie?.show(se),N?.setLabel(Z.deriveAnchorLabel(se)))},...ce&&Ge!==!1?{onShotOptIn:oe=>pt=oe}:{},onCancel:tt,crumbsOn:fn!==!1,shotsOn:Ge!==!1,...T&&c!=="local"?{serverHost:new URL(T).host}:{},...T&&g.adoptSession?{studio:{host:T,uid:c,env:t?.config?.env,member:g.member(),adopt:oe=>g.adoptSession(oe),signOut:()=>g.signOut()}}:{},...He?.text?.exact?{quote:He.text.exact}:{}};N=a.openComposer(n,ye,ue),q()}async function H(){const a=ve(o),i=ta(a);if(J.setDraft(Ut()),!i||N)return;const[h,R]=await Promise.all([Se(),de()]);if(!h||!R)return;const F=Ft(i.anchor,o,{viewportWidth:r.innerWidth,...O?{extended:O}:{}});if(!F.element)return;const Z=F.element.getBoundingClientRect();if(Z.width===0&&Z.height===0)return;const j={x:i.at.x-r.scrollX,y:i.at.y-r.scrollY};fe("add"),b(h,F.element,j,R.captureContext({page:R.derivePageRef(o.location,ht()),...mt()}),i.label,R,{body:i.body,author:i.author,...i.email?{email:i.email}:{}})}async function v(a=null){if(a&&a!==G&&u("thread:open",{threadId:a}),a&&f.mark(a),G=a,Fe=!0,M==="browse"&&fe("comments"),U){U.update(x());return}if(!await Se())return;const h=await _e("dock",s,o);if(!h.ok){ae.show("error.panels",{label:"action.retry",run:()=>void v(G)});return}!Fe||U||(Ce=h.mod,U=h.mod.openDock(n,x(),ue),q())}function z(){f.markAll(p),l.newOnly&&(l={...l,newOnly:!1}),Fe=!1,U?.close(),U=null,G=null,S.highlight(null),q(),_()&&Q()}function C(a){const i=a?p.find(h=>h.id===a):void 0;if(i&&i.route!==ve(o)){kr(r,i.id),r.location.assign(i.route);return}a&&f.mark(a),G=a,S.highlight(null),_()?Q():U?.update(x()),i&&Ce?.scrollToSnag(r,n,i)}function x(){return{snags:p,route:ve(o),openId:G,seenAt:f.map(),onOpen:C,onStatus:(a,i)=>void uo(a,i),onReply:(a,i)=>void fo(a,i),onEdit:(a,i)=>void X(a,i),onDeleteComment:a=>void L(a),onDeleteThread:a=>void W(a),...g.isMine?{isMine:a=>g.isMine(a)}:{},canDeleteOwnThread:g.can?g.can("thread:delete:own"):!0,canModerate:g.canModerate?.()??!1,onClearAll:()=>void K(),onClose:z,onExport:Rt,onHover:a=>S.highlight(a),...m&&m.length>1&&g.setRound?{rounds:m,activeRound:g.getRound?.()??m.find(a=>!a.closed)?.number??m[0].number,onRound:a=>{g.setRound(a),Te()}}:{},onAnnounce:Qe,loadShot:a=>Ea(a,async i=>{const h=await de();return h?(await h.getBlob(i))?.blob??null:null}),filter:l,onFilter:a=>{const i=a.statuses.join()!==l.statuses.join()||a.by!==l.by||a.page!==l.page||a.read!==l.read;l=a,i?Q():U?.update(x())},...pe?{clusterFilter:pe}:{},onClusterClear:()=>{pe=null,U?.update(x())},onShowAnyway:a=>{S.showGhost(a),Ce?.scrollToSnag(r,n,a)}}}async function ne(a,i){const h=p;p=a,Q();try{await Le(i)}catch{p=h,Q(),ae.show("error.sendfailed",void 0,{item:"change"})}}async function X(a,i){await ne(p.map(h=>({...h,comments:h.comments.map(R=>R.id===a?{...R,body:i}:R)})),()=>g.patchComment(a,i))}async function L(a){await ne(p.map(i=>({...i,comments:i.comments.filter(h=>h.id!==a)})),()=>g.deleteComment(a))}async function W(a){const i=G;G===a&&(G=null),await ne(p.filter(h=>h.id!==a),()=>g.deleteThread(a)),p.some(h=>h.id===a)&&(G=i)}async function K(){const a=p.map(i=>i.id);p=[],G=null,Q(),await Promise.all(a.map(i=>Le(()=>g.deleteThread(i))))}const J=ia(n,{onState:a=>fe(a),onPanel:()=>U?z():void v(),onNav:a=>en(a),parent:ue}),ce=r.matchMedia?.("(pointer: coarse)").matches??!1,q=()=>{ce&&J.setConcealed(!!N||!!U)};let me=null,Oe=[];function lt(a){let i=!1;const h=()=>{i||(i=!0,r.removeEventListener("scrollend",h),a())};r.addEventListener("scrollend",h,{once:!0}),r.setTimeout(h,600)}const qe=o.createElement("div");qe.setAttribute("aria-live","polite"),qe.setAttribute("role","status");const Qt="position:absolute;width:1px;height:1px;overflow:hidden";qe.style.cssText=Qt;const Ct=o.createElement("div");Ct.setAttribute("aria-live","assertive"),Ct.style.cssText=Qt,n.append(qe,Ct);let Gt=0;function Qe(a){r.clearTimeout(Gt),Gt=r.setTimeout(()=>{qe.textContent=a},400)}function en(a){const i=Oe.length;if(i===0)return;me=me===null?a===1?0:i-1:(me+a+i)%i;const h=Oe[me];la(r,n,h);const R=me+1;lt(()=>{S.pulse(h.id),Qe(B("nav.announce",{n:R,label:h.anchor.label,i:R,total:i}))})}function tn(){if(M!=="comments"||Ae){ke?.disarm();return}nn().then(a=>{a&&M==="comments"&&a.arm()})}let ke=null,Tt=null;async function nn(){if(ke)return ke;const a=await _e("text",s,o);return!a.ok||ke||(Tt=a.mod,ke=a.mod.createSelectionWatcher(n,{onQuote:(i,h)=>void io(i,h)})),ke}async function io(a,i){const h=xe??await de();if(!h||!Tt)return;const R=Tt.createTextAnchor(a,h,{viewportWidth:r.innerWidth,ourRoot:n});if(R.kind==="refused-form-control"){$(R.el,i);return}if(R.kind!=="text")return;const F=await Se();if(!F)return;const Z=h.captureContext({page:h.derivePageRef(o.location,ht()),...mt()});try{a.removeAllRanges()}catch{}b(F,R.el,R.point,Z,R.label,h,void 0,R.record)}function fe(a,i=!1){const h=M;M=a,a!=="add"&&N&&!i&&(N.close(),N=null),a==="add"&&U&&z(),a==="add"&&(Se(),de());try{sessionStorage.setItem(le.mode,a==="add"?"comments":a)}catch{}A.setMode(a),a!==h&&Qe(B(`toolbar.${a}`)),q(),a==="add"&&Et(),tn(),ie?.setActive(a==="add"),J.setState(a),Q(),a!==h&&u("modechange",{mode:a,previous:h})}let Ue=0,on=0;const rn=[300,800,1600,3200];function co(){if(Ue||!S.hasPending()){S.hasPending()||(on=0);return}const a=rn[Math.min(on++,rn.length-1)];Ue=r.setTimeout(()=>{Ue=0,Q()},a)}const lo=3e3;let an=0;function Q(a){const i=a??(Date.now()<an?"navigating":"authoritative");E=S.reanchor(p.filter(vo()),i),bo(),co();const h=new Map(E.map(j=>[j.id,j]));p=p.map(j=>h.get(j.id)??j);const R=_()?new Set(E.filter(j=>!Tr(j,l,f.map())&&j.id!==G).map(j=>j.id)):void 0;Oe=R?E.filter(j=>!R.has(j.id)):E,S.render(M==="browse"?[]:E,R);const F=ve(o),Z=D?Ia(o.location.origin,p,F):null;J.setCount(Z?Pa(Z,F):D?E.filter(j=>j.status!=="resolved").length:null),me!==null&&me>=Oe.length&&(me=null),U?.update(x())}async function Te(){const{data:a}=await g.listThreads();p=a,Q();const i=S.settled();for(const h of i)u("anchor:settled",{threadId:h.id,state:h.state,strategy:h.strategy,confidence:h.confidence});return g.capabilities.anchorReports&&g.reportAnchors&&i.length&&Le(()=>g.reportAnchors(i.map(h=>({threadId:h.id,state:h.state,confidence:h.confidence,strategy:h.strategy})))),g.capabilities.anchorReports||await Promise.all(a.flatMap(h=>{const R=p.find(F=>F.id===h.id);return!R||R.anchorState===h.anchorState?[]:[Le(()=>g.patchThread(R.id,{anchor:R.anchor,anchorState:R.anchorState}))]})),E}async function uo(a,i){p=p.map(h=>h.id===a?{...h,status:i}:h),Q(),u("thread:resolve",{threadId:a,status:i}),await Le(()=>g.patchThread(a,{status:i}))}async function fo(a,i){const h={id:Zn(),body:i,author:so()};p=p.map(R=>R.id===a?{...R,comments:[...R.comments,{...h,snagId:a,createdAt:new Date().toISOString()}]}:R),f.mark(a),Q(),u("comment:create",{threadId:a,comment:h}),await Le(()=>g.createComment(a,h))}function sn(){ae.show("error.quota",{label:"action.exportclear",run:()=>{Rt("json"),K()}}),console.warn(`[${be}] ${B("error.quota")}`)}async function Le(a){try{return await a()}catch(i){if(i instanceof Dt&&i.code==="local_quota_exceeded")return sn(),null;throw i}}function Rt(a){de().then(async i=>{if(!i)return;const h=await i.resolveAttachmentUris(p).catch(()=>new Map);i.download(n,i.buildExport(a,p,{origin:o.location.origin,exportedAt:new Date().toISOString()},h),r)})}async function cn(a,i,h,R,F,Z,j){const He=so(F,Z),ge=xe??await de();if(!ge)throw new Error(`[${be}] add() needs the capture chunk`);Ne||hn(a);const he=Ne?await Ne:null;Ne=et=null,ge.applyShotOutcome(h,he,Ge===!1,ce&&!pt);const gt=he?.blob&&g.uploadAttachment?g.uploadAttachment(he.blob,{kind:"screenshot",...he.width!==void 0?{width:he.width}:{},...he.height!==void 0?{height:he.height}:{}}).catch(()=>null):Promise.resolve(null),tt={id:da(),key:Za(p),route:ve(o),anchor:j??ge.createElementAnchor(a,{point:i,viewportWidth:r.innerWidth,label:ge.deriveAnchorLabel(a),...ge.describeElement(a)}),anchorState:"anchored",scope:go(),context:h,createdBy:He,createdAt:new Date().toISOString(),...R?{comment:{id:Zn(),body:R,author:He}}:{}},ye=Cn(tt);he?.blob&&(ye.screenshotBlob=he.blob),p=[...p,ye],f.mark(ye.id),Qe(B("announce.created",{key:ye.key})),u("thread:create",{thread:ye}),M==="browse"?fe("comments"):Q();try{const oe=await gt;oe&&(tt.attachments=[oe],p=p.map(se=>se.id===ye.id?{...se,attachments:[oe]}:se),Q()),await Le(()=>g.createThread(tt))}catch(oe){throw p=p.filter(se=>se.id!==ye.id),Q(),ae.show("error.sendfailed",void 0,{item:Pt.toLowerCase()}),console.warn(`[${be}] ${B("error.sendfailed",{item:Pt.toLowerCase()})}`,oe),oe}return ye}function ln(a){if((a.key==="n"||a.key==="p")&&M==="comments"&&!N){if(a.metaKey||a.ctrlKey||a.altKey)return;const i=a.target;if(i&&(i.closest?.("input,textarea,select,[contenteditable]")||i.isContentEditable))return;a.preventDefault(),a.stopPropagation(),en(a.key==="n"?1:-1);return}M==="add"&&a.key==="Escape"&&(N||(a.stopPropagation(),fe("comments")))}o.addEventListener("keydown",ln,!0);let dn=0;const un=()=>{if(o.hidden||!g.revalidate)return;const a=Date.now();a-dn<3e4||(dn=a,g.revalidate())};o.addEventListener("visibilitychange",un);const ho=Oo(n),po=Lo(n,a=>{console.warn(`[${be}] the host page hid the widget from assistive technology ${a} times; leaving it alone.`)}),mo=zo(n,a=>{console.warn(`[${be}] the host page removed the widget ${a} times; leaving it alone. Reload to comment again.`)});function go(){return{environment:d,...t?.config?.branch?{branch:t.config.branch}:{}}}let dt={route:ve(o),url:o.location.href},_t=!1,ut=null;function yo(a){if(a){if(M==="browse")return;ut=M,fe("browse",!0),je.show(),u("paused",{reason:"modal-dialog"})}else if(ut){const i=ut;ut=null,je.hide(),fe(i),u("resumed",{mode:i})}}Se();function bo(){E.length>0&&_e("dock",s,o)}{const a=o.createElement("div");a.style.cssText="position:fixed;inset:0;pointer-events:none;visibility:hidden",n.appendChild(a);const i=a.getBoundingClientRect(),h=Math.abs(i.left)>1||Math.abs(i.top)>1||Math.abs(i.width-r.innerWidth)>1||Math.abs(i.height-r.innerHeight)>1;a.remove(),h&&(console.warn(`[${be}] fixed-trapped: <html> has transform/filter/contain, so our fixed layer follows it, not the viewport. Remove it, or expect drift.`),u("error",{code:"fixed-trapped"}))}let Ze=null;const ft=new Set,De=(()=>{const a=r[Eo.config];return a&&typeof a=="object"?a:void 0})(),fn=De?.breadcrumbs,It=(()=>{const a=De?.significantQueryParams,i=De?.ignoredQueryParams,h={};return a==="*"?h.significantQueryParams="*":Array.isArray(a)&&(h.significantQueryParams=a.map(String)),Array.isArray(i)&&(h.ignoredQueryParams=i.map(String)),h})(),ht=()=>({routeOverride:qt,query:It,doc:o}),Ge=De?.screenshot===!1?!1:De?.screenshot&&typeof De.screenshot=="object"?De.screenshot:{};let pt=!1,Ne=null,et=null;function hn(a){if(Ge===!1||Ne||ce&&!pt)return;et=new AbortController;const i=et.signal;Ne=_e("screenshot",s,o).then(h=>h.ok?h.mod.captureScreenshot({doc:o,target:a,signal:i,...Ge,...g.fetchForeignImage?{fetchForeignImage:R=>g.fetchForeignImage(R)}:{}}):{situation:"engine-load-failed",blindSpots:[],maskedCount:0})}function vo(){const a=ve(o),i=Hn(o.location.pathname),h=Br(o.location.search,It);return R=>(R.route===a||R.context?.page?.pathname===i)&&jr(R.context?.page?.query,h,It)}{const a=fn;a!==!1&&_e("crumbs",s,o).then(i=>{i.ok&&(Ze=i.mod.installTierC({win:r,...t?.early?{early:t.early}:{},...a&&typeof a=="object"?{config:a}:{},subscribeNav:h=>(ft.add(h),()=>ft.delete(h))}))})}const mt=()=>Ze?{breadcrumbs:{records:Ze.drain(),status:Ze.status()}}:{},wo=Xr(o,r,()=>{M!=="browse"&&E.length>0&&Q()}),xo=Ar(r,{onResize:()=>Q(),onRoute:()=>{const a={route:ve(o),url:o.location.href},i=a.route!==dt.route;if(i){u("navigate",{from:dt,to:a});for(const h of ft)h(dt.url,a.url)}if(dt=a,!i){Te();return}an=Date.now()+lo,r.setTimeout(()=>{g.listThreads().then(({data:h})=>{p=h,Q("optimistic")})},100),r.setTimeout(()=>void Te(),600)},onModal:yo});return J.setState(M),A.setMode(M),tn(),D||ae.show("error.nostorage",{label:"action.export",run:()=>Rt("md")}),Te().then(async a=>{const i=$r(r);if(!i){const R=new URLSearchParams(o.location.search).get(Io("t"));if(R){let F=a.find(Z=>Z.key===R);if(!F&&g.getThreadByKey){const Z=await g.getThreadByKey(R).catch(()=>null);Z&&(p=[...p.filter(j=>j.id!==Z.id),Z],Q(),F=p.find(j=>j.id===Z.id))}F?(await v(F.id),Ce?.scrollToSnag(r,n,F)):(ae.show("permalink.unknown"),await v(null));return}await H();return}const h=a.find(R=>R.id===i);await v(h?i:null),h&&Ce?.scrollToSnag(r,n,h)}),{root:n,assetBase:t?.assetBase??"",snags:()=>E,async add(a,i,h,R){const F=R?null:await de(),Z=R??(F?F.captureContext({page:F.derivePageRef(o.location,ht()),...mt()}):void 0);if(!Z)throw new Error(`[${be}] add() needs the capture chunk, or an explicit context`);return cn(a,i,Z,h)},refresh:Te,setRoute(a){qt=a&&a.startsWith("/")?a:null,Te()},setState:fe,getState:()=>M,openPanel:v,async open(a){const i=a.startsWith(vt.thread)?p.find(h=>h.id===a):p.find(h=>h.key===a);return i?i.route!==ve(o)?{ok:!1,reason:"wrong-page",url:i.context?.url??i.route,route:i.route}:(await v(i.id),Ce?.scrollToSnag(r,n,i),{ok:!0,anchorState:i.anchorState}):{ok:!1,reason:"not-found"}},closePanel:z,hitTest:(a,i)=>A.hitTest(a,i),destroy(){N?.close(),z(),ie?.destroy(),ae.destroy(),je.destroy(),ct(),mo(),po(),ho(),xo.destroy(),wo.destroy(),Ze?.destroy(),Ze=null,ft.clear(),ke?.destroy(),ke=null,ee?.destroy(),ee=null,Ue&&r.clearTimeout(Ue),Ue=0,o.removeEventListener("keydown",ln,!0),o.removeEventListener("visibilitychange",un),y(),A.destroy(),S.destroy(),J.destroy(),n.host.remove()}}}export{yn as HOST_CSS,vn as createHost,ja as isSensitiveValue,Va as mount,At as redactText,Ba as redactUrl};
|
|
2
|
+
`),Fo=` :host{all:initial}[hidden]{display:none!important}:host{display:block;font:400 14px/1.45 ${k.font};color:${k.fg};${P.font}:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;${P.accent}:#2a51b8;${P.bg}:#fefdfc;${P.fg}:#181716;${P.muted}:#666564;${P.border}:#e4e3e0;${P.radius}:8px;${P.shadow}:0 6px 24px -4px rgb(0 0 0 / .18);${P.z}:2147483647;${P.motion}:160ms;${P.surface}:color-mix(in srgb,${k.fg} 6%,${k.bg});${P.sunken}:color-mix(in srgb,${k.fg} 3%,${k.bg});${P.hover}:color-mix(in srgb,${k.fg} 8%,${k.bg});${P.onAccent}:#fff;${P.focus}:color-mix(in srgb,${k.accent} 62%,${k.fg});${P.disabled}:color-mix(in srgb,${k.muted} 52%,${k.bg});${Wo} ${P.anchorOrphan}:#DC2626;}:host([${mn}="dark"]){${P.accent}:#8aafff;${P.onAccent}:#1d1c1a;${P.bg}:#1d1c1a;${P.fg}:#f0eeec;${P.muted}:#9a9997;${P.border}:#2d2c2b;${P.shadow}:0 6px 24px -4px rgb(0 0 0 / .6);}@media (prefers-reduced-motion:reduce){:host{${P.motion}:0ms}}@media (forced-colors:active){:host{${P.bg}:Canvas;${P.fg}:CanvasText;${P.muted}:CanvasText;${P.border}:CanvasText;${P.accent}:Highlight;${P.onAccent}:HighlightText;${P.surface}:Canvas;${P.sunken}:Canvas;${P.hover}:Canvas;${P.focus}:Highlight;${P.disabled}:GrayText;${P.shadow}:none;${P.anchorOrphan}:CanvasText;}.snag-pin{border-color:CanvasText!important;color:CanvasText!important;forced-color-adjust:none}}`,Ve={shield:1,pins:3,dock:5,notice:6,toolbar:7},Tn=new WeakMap;function nt(e,t,n){let o=Tn.get(e);if(o||Tn.set(e,o=new Set),o.has(t))return;o.add(t);try{const u=new CSSStyleSheet;u.replaceSync(n),e.adoptedStyleSheets=[...e.adoptedStyleSheets,u];return}catch{}const c=(e.ownerDocument??document).createElement("style");c.setAttribute(`data-snag-${t}`,""),c.textContent=n,e.appendChild(c)}function Bo(e){return e==="light"||e==="dark"?e:"auto"}function jo(e,t){const n=mn;if(t!=="auto")return e.setAttribute(n,t),()=>e.removeAttribute(n);const o=e.ownerDocument?.defaultView?.matchMedia?.("(prefers-color-scheme: dark)");if(!o)return e.setAttribute(n,"light"),()=>e.removeAttribute(n);const r=()=>e.setAttribute(n,o.matches?"dark":"light");return r(),o.addEventListener("change",r),()=>{o.removeEventListener("change",r),e.removeAttribute(n)}}function Nt(e){return e.getBoundingClientRect()}function wt(e){if(e.closest('[inert],[aria-hidden="true"]'))return!1;const t=e.checkVisibility;if(typeof t=="function")return t.call(e,{contentVisibilityAuto:!0,opacityProperty:!1,visibilityProperty:!0});const n=Nt(e);if(!(n.width>0||n.height>0||e.getClientRects().length>0))return!1;const r=e.ownerDocument?.defaultView;return r?r.getComputedStyle(e).visibility!=="hidden":!0}const Uo="button,a[href],[role=button],[role=link],[role=tab],[role=menuitem],label,input,select,textarea,summary",Zo=3,Rn=8,Vo=new Set(["img","picture","canvas","video","audio","iframe","embed","object","svg","math","input","select","textarea","button","progress","meter"]);function Yo(e,t){return Vo.has(e.tagName.toLowerCase())?!1:t.getComputedStyle(e).display==="inline"}function _n(e){const t=e.ownerDocument?.defaultView;if(!t)return e;let n=e;for(let r=e;r;r=r.parentElement){const c=Nt(r);if(c.width>=Rn&&c.height>=Rn&&!Yo(r,t)){n=r;break}n=r}let o=0;for(let r=n;r&&o<=Zo;r=r.parentElement){if(r.matches(Uo))return r;o++}return n}const Xo=10,Ht=[["click",!1],["auxclick",!1],["dblclick",!1],["pointerdown",!1],["pointerup",!1],["mousedown",!1],["mouseup",!1],["contextmenu",!1],["dragstart",!1],["wheel",!1],["touchstart",!0],["touchmove",!0],["touchend",!0],["selectstart",!0],["keydown",!1],["keyup",!1]];function Ko(e,t,n){let o=e;for(;o&&o!==o.ownerDocument.documentElement&&o!==o.ownerDocument.body;){const r=getComputedStyle(o),c=(r.overflowY==="auto"||r.overflowY==="scroll")&&o.scrollHeight>o.clientHeight&&(t>0&&o.scrollTop+o.clientHeight<o.scrollHeight-1||t<0&&o.scrollTop>0),u=(r.overflowX==="auto"||r.overflowX==="scroll")&&o.scrollWidth>o.clientWidth&&(n>0&&o.scrollLeft+o.clientWidth<o.scrollWidth-1||n<0&&o.scrollLeft>0);if(c||u)return o;o=o.parentElement}return null}function In(e,t){const n=t==="y"?e.deltaY:e.deltaX;return e.deltaMode===1?n*16:e.deltaMode===2?n*(t==="y"?innerHeight:innerWidth):n}const Jo=["position:fixed","inset:0",`z-index:${Ve.shield}`,"touch-action:pan-x pan-y pinch-zoom","background:transparent"].join(";");function qo(e,t={}){const n=t.doc??e.ownerDocument??document,o=n.defaultView??window;let r=t.coarsePointer??o.matchMedia?.("(pointer: coarse)").matches??!1;const c=l=>{const _=l.pointerType,S=_==="touch"?!0:_==="mouse"||_==="pen"?!1:r;S!==r&&(r=S,d())},u=n.createElement("div");u.className="snag-shield",u.style.cssText=Jo;let s="browse";const d=()=>{u.style.pointerEvents=r?"none":"auto",u.style.cursor="crosshair"};d();const y=l=>{const _=l;return!_||typeof _.closest!="function"?!1:e.contains(_)?!0:!!_.closest(`[${Mt("root")}]`)};function w(l,_,S){let I=S,M=0;for(;I.shadowRoot&&M++<Xo;){const N=C(I.shadowRoot,l,_);if(!N||N===I)break;I=N}return I}function C(l,_,S){const I=l.elementsFromPoint;if(typeof I=="function"){for(const N of I.call(l,_,S))if(N.getRootNode()===l)return N;return null}const M=l.elementFromPoint(_,S);return M&&M.getRootNode()===l?M:null}function m(l,_){const S=[];for(const I of n.elementsFromPoint(l,_)){if(y(I))continue;if(I===n.documentElement||I===n.body){S.push(I);continue}const M=w(l,_,I);S.push(y(M)?I:M)}return S}let f=null;const g=(l,_)=>{const[S]=m(l,_);S&&t.onPick?.(_n(S),{x:l,y:_})};let p=!1;const E=()=>{const l=n.getSelection?.();if(!l||l.isCollapsed||l.rangeCount===0||!l.toString().trim())return!1;const _=l.anchorNode;if(!_||e.contains(_))return!1;const S=_.nodeType===1?_:_.parentElement;return!y(S)},D=l=>{const _=l.composedPath()[0];if(_&&y(_)){p=!1;return}if(l.type==="selectstart"){t.onSelectStart?.();return}const S=l.type;if(S.endsWith("down")||S.endsWith("start")){p=!1;return}if(S.endsWith("up")||S.endsWith("end")){p=E();return}if(S==="click"||S==="auxclick"){if(!p)return;p=!1,l.preventDefault(),l.stopImmediatePropagation()}},O=l=>{if(l.type==="pointerdown"&&c(l),s==="comments"){D(l);return}if(s!=="add")return;if(l.type==="keydown"||l.type==="keyup"){Ee(l);return}const _=l.composedPath()[0];if(_&&_!==u&&y(_))return;const S=Ht.find(([I])=>I===l.type)?.[1]??!1;if(l.stopImmediatePropagation(),!S){if(r&&l.type==="pointerdown"){const I=l;f={x:I.clientX,y:I.clientY,t:performance.now()},pe(I.clientX,I.clientY)}if(r&&l.type==="pointerup"&&f){const I=l,M=f;f=null,Math.hypot(I.clientX-M.x,I.clientY-M.y)<=8&&performance.now()-M.t<=700&&g(I.clientX,I.clientY);return}if(l.type==="click"||l.type==="auxclick"||l.type==="dblclick"){l.preventDefault();const I=l;g(I.clientX,I.clientY);return}if(l.type==="wheel"){const I=l,M=In(I,"y"),N=In(I,"x"),[U]=m(I.clientX,I.clientY),G=Ko(U??null,M,N);G&&(G.scrollTop+=M,G.scrollLeft+=N,l.preventDefault());return}if(l.type==="dragstart"||l.type==="contextmenu"){l.preventDefault();return}(l.type==="pointerdown"||l.type==="mousedown")&&!r&&l.preventDefault()}},V=new Set(["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"," ","Spacebar","PageUp","PageDown","Home","End"]),re=/^[a-z0-9/?]$/;function Y(l){for(const _ of l.composedPath()){const S=_;if(!(!S||S.nodeType!==1||typeof S.matches!="function")&&S.matches('input:not([type=button]):not([type=submit]):not([type=checkbox]):not([type=radio]),textarea,select,[contenteditable=""],[contenteditable=true],[role=textbox],[role=searchbox],[role=combobox]'))return!0}return!1}function Ee(l){V.has(l.key)||l.metaKey||l.ctrlKey||l.altKey||/^F\d{1,2}$/.test(l.key)||l.key!=="Escape"&&l.key.length===1&&re.test(l.key.toLowerCase())&&!Y(l)&&(l.preventDefault(),l.stopImmediatePropagation())}for(const[l,_]of Ht)o.addEventListener(l,O,{capture:!0,passive:_});let ee=0,te=null;function Pe(){if(ee=0,s!=="add"||!te)return;const[l]=m(te.x,te.y);t.onHover?.(l?_n(l):null)}function pe(l,_){s==="add"&&(te={x:l,y:_},!ee&&(ee=o.requestAnimationFrame(Pe)))}return u.addEventListener("pointermove",l=>pe(l.clientX,l.clientY)),u.addEventListener("pointerleave",()=>{te=null,t.onHover?.(null)}),{shield:u,getMode:()=>s,setMode(l){s=l,p=!1,d(),l==="add"?e.appendChild(u):u.remove(),l!=="add"&&(te=null,t.onHover?.(null))},hitTest:m,destroy(){ee&&o.cancelAnimationFrame(ee);for(const[l]of Ht)o.removeEventListener(l,O,{capture:!0});u.remove()}}}const Qo=/[\u200B-\u200D\u2060\uFEFF]/gu,Go=/[\s\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+/gu,er=[[/[\u2018\u2019\u201A\u201B]/gu,"'"],[/[\u201C\u201D\u201E\u201F]/gu,'"'],[/[\u2010-\u2015\u2212]/gu,"-"],[/\u2026/gu,"..."],[/\u2044/gu,"/"]];function tr(e){let t=e.normalize("NFC").replace(Qo,"");for(const[n,o]of er)t=t.replace(n,o);return t.replace(Go," ").trim()}const nr={testid:1,domid:1,css:.9,aria:.75,"text-exact":.8,"text-fuzzy":.78,"path-rect":.35,none:0,manual:1},Pn={anchored:.75,approximate:.35};function or(e,t){const n=nr[e];return t===1?n:n/(1+Math.log2(t))}function Mn(e){return e>=Pn.anchored?"anchored":e>=Pn.approximate?"approximate":"orphaned"}const rr=[Ro("anchor"),"data-testid","data-test-id","data-test","data-cy","data-qa","data-pw","data-automation-id"],zn=e=>typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),ar=[{strategy:"testid",applicable:e=>!!e.testid,find:(e,t)=>Wt(t,rr.map(n=>`[${n}="${zn(e.testid)}"]`).join(","))},{strategy:"domid",applicable:e=>!!e.domid,find:(e,t)=>Wt(t,`#${zn(e.domid)}`)},{strategy:"css",applicable:e=>!!e.css,find:(e,t)=>{try{return Wt(t,e.css)}catch{return[]}}}];function Wt(e,t){return[...e.querySelectorAll(t)].filter(sr)}function sr(e){return!e.closest(`[${Mt("root")}]`)}function ir(e,t){const n=t.text?.exact;if(!n)return!0;const o=tr(e.textContent??"");return o?o===n||o.includes(n)||n.includes(o):!0}function On(e,t,n,o){wt(e)||o.push("hidden"),t.hostPath?.length&&o.push("shadow-boundary");const r=!ir(e,t);r&&o.push("text-drift");let c=o.includes("hidden")?Math.min(n,.7):n;return r&&(c=Math.min(c,.5)),c}const cr={element:null,strategy:"none",score:0,state:"orphaned",reasons:["not-found"],candidates:0};function Ft(e,t=document,n={}){const o=[];for(const r of ar){if(!r.applicable(e))continue;const c=r.find(e,t);if(c.length===0)continue;const u=or(r.strategy,c.length),s=c[0];c.length>1&&o.push("ambiguous");const d=On(s,e,u,o),y={element:s,strategy:r.strategy,score:d,state:Mn(d),reasons:o.length?o:["exact"],candidates:c.length};if(y.reasons.includes("text-drift")&&n.extended){const w=n.extended(e,t,{...n.viewportWidth===void 0?{}:{viewportWidth:n.viewportWidth},...n.passCaches?{caches:n.passCaches}:{}});if(w&&w.score>y.score)return w}return y}return n.extended?.(e,t,{...n.viewportWidth===void 0?{}:{viewportWidth:n.viewportWidth},...n.passCaches?{caches:n.passCaches}:{}})??cr}const lr={"toolbar.aria":"{product} review toolbar","toolbar.group":"What you see","toolbar.browse":"Browse","toolbar.comments":"Comment","toolbar.comments.unresolved":"Comment, {n} unresolved","toolbar.add":"Add a comment","toolbar.add.draft":"Add a comment \u2014 one is unfinished","toolbar.panel":"All comments","pin.aria":"Comment {key} on {target}. {status}, {replies} replies. Press Enter.","pin.aria.one":"Comment {key} on {target}. {status}, 1 reply. Press Enter.","pin.aria.none":"Comment {key} on {target}. {status}. Press Enter.","pin.aria.moved":"Comment {key} on {target}. {status}. {where}. Press Enter.","pin.target":"{role} \u201C{name}\u201D","cluster.aria":"{n} comments here: {list}","nav.announce":"Comment {n} on {label}, {i} of {total}","action.retry":"Retry","action.dismiss":"Dismiss","action.export":"Export","action.exportclear":"Export & clear","error.quota":"Storage is full \u2014 this {item} is on screen but not saved. Export to keep them.","error.nostorage":"Comments won't be saved in this browser. Export before you leave to keep them.","error.linkrevoked":"This review link was turned off. Ask whoever sent it for a new one.","error.sessionended":"This review session has ended. Open your review link again to carry on.","error.sendfailed":"That {item} couldn't be sent, so it wasn't kept. Check your connection and try again.","error.origin":"{product} is not enabled for {origin}. Add that address to the site's allowed origins.","error.panels":"{product} loaded, but its comment UI didn't. You can still see the comments on the page.","error.panels.add":"Adding comments is unavailable until the comment UI loads.","error.capture":"{product} can't take new comments \u2014 the part that records the page didn't load. Everything already here still works.","paused.dialog":"Review paused \u2014 a dialog is open on this page. Close it to carry on commenting. Commenting inside a native dialog isn't supported yet.","paused.close":"Close","announce.created":"Comment {key} added.","permalink.unknown":"That comment isn't on this page any more"},dr={...Sn,...lr},B=xn(dr);function ur(e,t){const n=new Array(e.length),o=[],r=new Map,c=[];let u=0;for(let s=0;s<e.length;s++){u++;const d=e[s],y=Math.floor(d.x/t),w=Math.floor(d.y/t);let C=-1;e:for(let m=-1;m<=1;m++)for(let f=-1;f<=1;f++)for(const g of r.get(`${y+m},${w+f}`)??[]){const p=c[g],E=d.x-p.x,D=d.y-p.y;if(E*E+D*D<=t*t){C=g;break e}}if(C===-1){C=o.length,o.push([]),c.push(d);const m=`${y},${w}`,f=r.get(m);f?f.push(C):r.set(m,[C])}n[s]=C,o[C].push(s)}return{group:n,members:o,visits:u}}const fr=`position:absolute;top:0;left:0;width:0;height:0;pointer-events:none;z-index:${Ve.pins}`,hr=' .snag-pp{animation:snag-pp .5s ease-out 2}@keyframes snag-pp{50%{transform:scale(1.45)}}@media (prefers-reduced-motion: reduce){.snag-pp{animation:none}}.snag-pin{width:28px;height:28px;margin:-14px 0 0 -14px}.snag-pin::after{content:"";position:absolute;inset:-8px}@media (pointer:coarse){.snag-pin{width:34px;height:34px;margin:-17px 0 0 -17px}}',pr=`position:fixed;inset:0;width:0;height:0;pointer-events:none;z-index:${Ve.pins}`,ot=["position:absolute",`color:${k.onAccent}`,`font:600 12px/1 ${k.font}`,"display:flex","align-items:center","justify-content:center","box-shadow:0 1px 4px rgb(0 0 0 / .35)","pointer-events:auto","cursor:pointer","box-sizing:border-box"].join(";"),xt="border-radius:50% 50% 50% 2px",Ln=e=>k[`status${e[0].toUpperCase()}${e.slice(1)}`]??k.muted;function Dn(e,t){const n=$n(t.status),o=`background:${Ln(t.status)};color:${n}`,r="0 1px 4px rgb(0 0 0 / .35)";return e==="anchored"?`${ot};${xt};${o};border:2px solid ${n};box-shadow:${r}`:e==="approximate"?`${ot};${xt};${o};border:2px dashed ${n};box-shadow:${r}`:`${ot};${xt};${o};border:2px solid ${n};box-shadow:inset 0 0 0 2px ${n},${r}`}function mr(e,t){const n=[];let o="static",r=!1;for(let c=e;c&&c!==e.ownerDocument.documentElement;c=c.parentElement){const u=t.getComputedStyle(c),s=c!==e.ownerDocument.body&&/auto|scroll|hidden|overlay/.test(u.overflowY+u.overflowX);s&&!r&&n.push(c),u.position==="fixed"?(o="dynamic",r=!0):u.transform!=="none"||u.filter!=="none"||u.perspective!=="none"?(o="dynamic",r=!1):(u.position==="sticky"||u.willChange.includes("transform")||u.contain.includes("layout")||s&&(c.scrollHeight>c.clientHeight||c.scrollWidth>c.clientWidth))&&(o="dynamic")}return{tier:o,clips:n}}function gr(e,t,n,o){const r=e.ownerDocument??document,c=r.defaultView??window;nt(e,"pins",hr);const u=r.createElement("div");u.className="snag-pins",u.style.cssText=fr,e.appendChild(u);const s=r.createElement("div");s.className="snag-pins-dyn",s.style.cssText=pr,e.appendChild(s);let d=[],y=[];const w=new Map;let C=new Map,m=null;const f=new Map;let g=new Map;const p=c.matchMedia?.("(pointer: coarse)").matches??!1,E=p?32:24,D=p?34:28;let O=[],V=null,re=null,Y={x:0,y:0};function Ee(){const A=r.defaultView,$=u.getBoundingClientRect();Y={x:$.left+(A?.scrollX??0),y:$.top+(A?.scrollY??0)}}let ee=[];const te=new Map,Pe=1e4,pe=5,l=new Map,_=new Set(["testid","domid"]);function S(A){const $=l.get(A.id),b=$?.ref.deref();if(!b||!b.isConnected)return null;if(_.has($.strategy))return b;if(A.anchor.css)try{if(!b.matches(A.anchor.css))return null}catch{return null}return b}function I(A,$){const b=[],H=On($,A.anchor,1,b);return{element:$,strategy:l.get(A.id).strategy,score:H,state:Mn(H),reasons:b.length?b:["exact"],candidates:1}}function M(A,$="authoritative"){w.clear(),ee=[];const b=Date.now(),H=n?.newPass?.();return A.map(v=>{const z=S(v),T=n?.get();let x=z?I(v,z):Ft(v.anchor,r,{viewportWidth:r.defaultView?.innerWidth??0,...T?{extended:T}:{},...H?{passCaches:H}:{}});if(z&&x.reasons.includes("text-drift")){const W=Ft(v.anchor,r,{viewportWidth:r.defaultView?.innerWidth??0,...T?{extended:T}:{},...H?{passCaches:H}:{}});W.score>x.score&&(x=W)}if(n&&(!x.element||x.reasons.includes("text-drift"))&&n.want(v.anchor),!x.element&&n){const W=n.fuzzyHit?.(v.id);W?x=W:n.wantFuzzy?.(v.id,v.anchor)}const ne=x.element&&v.anchor.text?.exact&&(x.reasons.includes("text-drift")||x.strategy==="path-rect"&&x.score<.5);if(n&&ne){const W=n.fuzzyHit?.(v.id);W&&W.score>x.score?x=W:W||n.wantFuzzy?.(v.id,v.anchor)}x.element?l.set(v.id,{ref:new WeakRef(x.element),strategy:x.strategy}):l.delete(v.id),x.element&&w.set(v.id,x.element);let X=!1;if(x.state==="orphaned"){const W=te.get(v.id)??{firstSeenAt:b,tries:0,best:x};W.tries++,x.score>=W.best.score&&(W.best=x),te.set(v.id,W);const K=n?.unavailable?.()??!1,J=K?2:pe,ce=b-W.firstSeenAt<Pe;$==="optimistic"||ce&&($==="navigating"||W.tries<J)?X=!0:(x=W.best,K&&!x.reasons.includes("budget-exceeded")&&(x={...x,reasons:[...x.reasons,"budget-exceeded"]}),te.delete(v.id))}else te.delete(v.id);X||ee.push({id:v.id,state:x.state,strategy:x.strategy,confidence:x.score});const L=x.element?Nt(x.element):void 0;if(L&&(L.width>0||L.height>0)){const W=r.defaultView;v.anchor.rect={x:L.left+(W?.scrollX??0),y:L.top+(W?.scrollY??0),w:L.width,h:L.height}}return{...v,anchorState:X?v.anchorState:x.state,anchorPending:X,anchorReasons:x.reasons}})}function N(){const A=r.documentElement;return{w:A.scrollWidth,h:A.scrollHeight}}function U(A,$,b){return{x:Math.min(Math.max(A,14),Math.max(b.w,28)-14),y:Math.min(Math.max($,14),Math.max(b.h,28)-14)}}function G(A,$){Ee(),u.textContent="",s.textContent="",d=[],y=[],C=new Map,g=new Map,f.clear(),O=[],re=null,A.forEach((b,H)=>{const v=b.anchor.rect;if(!v)return;const z=b.anchor.offset??{fx:.5,fy:.5},T=r.createElement("div");T.className="snag-pin",T.setAttribute("data-state",b.anchorPending?"pending":b.anchorState),T.setAttribute("data-key",b.key),T.style.cssText=b.anchorPending?`${Dn("approximate",b)};opacity:.55`:Dn(b.anchorState,b);const x=w.get(b.id),{tier:ne,clips:X}=x?mr(x,c):{tier:"static",clips:[]};if(ne==="dynamic"&&x){const q=x.getBoundingClientRect(),me=Fe();T.style.left=`${q.left-me.left+q.width*z.fx}px`,T.style.top=`${q.top-me.top+q.height*z.fy}px`,f.set(T,{x:q.left+q.width*z.fx+c.scrollX-Y.x,y:q.top+q.height*z.fy+c.scrollY-Y.y});const Oe={node:T,el:x,fx:z.fx,fy:z.fy,clips:X};d.push(Oe),T.hidden=!wt(x),T.hidden||Be(Oe,q,new Map(X.map(lt=>[lt,lt.getBoundingClientRect()])))}else{const q=U(v.x+v.w*z.fx-Y.x,v.y+v.h*z.fy-Y.y,N());T.style.left=`${q.x}px`,T.style.top=`${q.y}px`,f.set(T,q),x&&(y.push({node:T,el:x,fx:z.fx,fy:z.fy,clips:[]}),T.hidden=!wt(x))}T.textContent=String(H+1);const L=Ho(b),W=b.anchor.role?B("pin.target",{role:b.anchor.role,name:b.anchor.accessibleName??b.anchor.label}):b.anchor.label,K=b.comments.length-1,J=b.anchorState==="approximate"?`~ ${b.key}`:b.key;T.setAttribute("role","button"),T.setAttribute("tabindex","0");const ce=b.anchorState==="anchored"?B(K===0?"pin.aria.none":K===1?"pin.aria.one":"pin.aria",{key:J,target:W,status:En(b.status),replies:K}):B("pin.aria.moved",{key:J,target:W,status:En(b.status),where:L});T.title=ce,T.setAttribute("aria-label",ce),t&&xe(T,()=>t(b)),$?.has(b.id)&&(T.hidden=!0,T.setAttribute("data-fo","")),C.set(b.id,T),g.set(T,{snag:b,ordinal:H+1}),(ne==="dynamic"?s:u).appendChild(T)}),Ke(),m&&je(m),ze(),ie="",ue(r.visibilityState==="visible"&&C.size>0)}const Fe=()=>s.getBoundingClientRect();let we=!1;function Be(A,$,b){for(const H of A.clips){const v=b.get(H);if(v&&($.right<=v.left||$.left>=v.right||$.bottom<=v.top||$.top>=v.bottom)){A.node.hidden=!0;return}}A.node.hidden=!1}function $t(A){const $=new Map;for(const b of A)for(const H of b.clips)$.has(H)||$.set(H,H.getBoundingClientRect());return $}const Ce=["open","progress","review","resolved"];function xe(A,$){A.addEventListener("click",$),A.addEventListener("keydown",b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),$())})}function Me(A,$,b,H,v){const z=Ce.find(x=>A.some(ne=>ne.snag.status===x))??"open",T=r.createElement("div");T.className="snag-pin snag-cluster",T.style.cssText=`${ot};border-radius:50%;background:${Ln(z)};color:${$n(z)};border:2px solid ${k.onAccent}`,T.style.left=`${$}px`,T.style.top=`${b}px`,T.textContent=String(A.length),T.setAttribute("data-count",String(A.length)),T.setAttribute("data-state",z),T.setAttribute("role","button"),T.setAttribute("tabindex","0"),v&&T.setAttribute("aria-expanded","true"),T.setAttribute("aria-label",B("cluster.aria",{n:A.length,list:A.map(x=>x.ordinal).join(", ")})),xe(T,()=>{if(v)V=null;else if(A.length<=6)V=H;else{o?.(A.map(x=>x.snag.id));return}Ke()}),u.appendChild(T),O.push(T)}function de(A,$,b,H){Me(A,$,b,H,!0),A.forEach((v,z)=>{const T=$,x=b+(z+1)*(D+12),ne=v.x-T,X=v.y-x,L=Math.hypot(ne,X);if(L>4){const K=r.createElement("div");K.className="snag-leader",K.setAttribute("aria-hidden","true"),K.style.cssText=`position:absolute;left:${T}px;top:${x}px;width:${L}px;height:0;border-top:1px solid ${k.onAccent};transform-origin:0 0;transform:rotate(${Math.atan2(X,ne)}rad)`,u.appendChild(K),O.push(K)}const W=v.dot.cloneNode(!0);W.style.visibility="",W.style.left=`${T}px`,W.style.top=`${x}px`,xe(W,()=>t?.(v.snag)),u.appendChild(W),O.push(W)})}function Ke(){for(const v of O)v.remove();O=[];const A=[];for(const[v,z]of g){if(v.hidden){v.style.visibility="";continue}const T=f.get(v);T&&A.push({dot:v,snag:z.snag,ordinal:z.ordinal,x:T.x,y:T.y})}const{members:$,visits:b}=ur(A,E);u.setAttribute("data-cv",String(b)),u.setAttribute("data-cp",String(A.length));let H=!1;for(const v of $){if(v.length<2){A[v[0]].dot.style.visibility="";continue}const z=v.map(X=>A[X]),T=z.map(X=>X.snag.id).sort().join("|");for(const X of z)X.dot.style.visibility="hidden";const x=z.reduce((X,L)=>X+L.x,0)/z.length,ne=z.reduce((X,L)=>X+L.y,0)/z.length;V===T&&z.length<=6?(H=!0,de(z,x,ne,T)):Me(z,x,ne,T,!1)}V&&!H&&(V=null)}function Je(A){re?.remove(),re=null;const $=A.anchor.rect;if(!$)return;const b=A.anchor.offset??{fx:.5,fy:.5},H=r.createElement("div");H.className="snag-pin snag-ghost",H.style.cssText=`${ot};${xt};background:transparent;border:2px dashed ${k.anchorOrphan};color:${k.anchorOrphan};box-shadow:none;pointer-events:none`;const v=U($.x+$.w*b.fx-Y.x,$.y+$.h*b.fy-Y.y,N());H.style.left=`${v.x}px`,H.style.top=`${v.y}px`,H.setAttribute("aria-hidden","true"),u.appendChild(H),re=H}function ze(A=!1){const $=A?[...d,...y]:d;we||$.length===0||(we=!0,c.requestAnimationFrame(()=>{we=!1;const b=performance.now(),H=c.scrollX,v=c.scrollY,z=Fe(),T=$.map(L=>L.el.isConnected?L.el.getBoundingClientRect():null),x=$.map(L=>L.el.isConnected&&wt(L.el)),ne=$t($),X=N();$.forEach((L,W)=>{const K=T[W];if(!K)return;if(L.node.hasAttribute("data-fo")){L.node.hidden=!0;return}if(!x[W]){L.node.hidden=!0;return}L.node.hidden=!1;const J=K.left+K.width*L.fx,ce=K.top+K.height*L.fy;if(L.node.parentElement===s)L.node.style.left=`${J-z.left}px`,L.node.style.top=`${ce-z.top}px`,Be(L,K,ne),f.set(L.node,{x:J+H-Y.x,y:ce+v-Y.y});else{const q=U(J+H-Y.x,ce+v-Y.y,X);L.node.style.left=`${q.x}px`,L.node.style.top=`${q.y}px`,f.set(L.node,q)}}),Ke(),u.setAttribute("data-ms",(performance.now()-b).toFixed(2))}))}const Se=()=>ze();r.addEventListener("scroll",Se,{capture:!0,passive:!0});const it=typeof c.ResizeObserver=="function"?new c.ResizeObserver(()=>ze(!0)):null;it?.observe(r.documentElement);let Ae=null,ie="";function Et(){let A="";for(const $ of[...y,...d]){if(!$.el.isConnected)continue;const b=$.el.getBoundingClientRect();A+=`${Math.round(b.left)},${Math.round(b.top)},${Math.round(b.width)};`}!A||A===ie||(ie=A,ze(!0))}function ue(A){if(Ae&&clearTimeout(Ae),Ae=null,!A)return;const $=()=>{Et(),Ae=setTimeout($,500)};Ae=setTimeout($,500)}const ct=()=>ue(r.visibilityState==="visible"&&C.size>0);r.addEventListener("visibilitychange",ct);function ae(A){const $=C.get(A);$&&($.classList.remove("snag-pp"),c.requestAnimationFrame(()=>$.classList.add("snag-pp")),c.setTimeout(()=>$.classList.remove("snag-pp"),1400))}function je(A){const $=m?C.get(m):void 0;$&&($.style.transform="",$.style.zIndex=""),m=A;const b=A?C.get(A):void 0;b&&(b.style.transform="scale(1.4)",b.style.zIndex="1")}return{el:u,render:G,showGhost:Je,pulse:ae,reanchor:M,settled:()=>ee,hasPending:()=>te.size>0,highlight:je,destroy(){r.removeEventListener("scroll",Se,{capture:!0}),r.removeEventListener("visibilitychange",ct),it?.disconnect(),ue(!1),u.remove(),s.remove()}}}const yr=` .snag-notice{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + var(${P.tbH},56px));z-index:${Ve.notice};max-width:min(420px,calc(100vw - 24px));background:${k.bg};color:${k.fg};border:1px solid ${k.border};border-inline-start:3px solid ${k.anchorOrphan};border-radius:${k.radius};box-shadow:${k.shadow};padding:12px 14px;pointer-events:auto;font:400 13px/1.45 ${k.font};display:flex;flex-direction:column;gap:10px}@media (pointer:coarse){.snag-notice{bottom:calc(12px + var(${P.tbH},64px))}}.snag-notice p{margin:0}.snag-notice-actions{display:flex;gap:6px;justify-content:flex-end}.snag-notice button{appearance:none;font:inherit;cursor:pointer;border-radius:calc(${k.radius} - 2px);padding:6px 12px;min-height:30px;border:0;transition:background ${k.motion}}.snag-notice-retry{background:${k.accent};color:${k.onAccent};font-weight:600}.snag-notice-dismiss{background:transparent;color:${k.muted}}.snag-notice-dismiss:hover{background:${k.hover};color:inherit}.snag-notice button:focus-visible{outline:2px solid ${k.focus};outline-offset:2px}`;function br(e,t){const n=e.ownerDocument??document,o=n.defaultView??window;nt(e,"notice",yr);const r=n.createElement("div");r.className="snag-notice",r.setAttribute("role","alert"),r.hidden=!0;const c=n.createElement("p"),u=n.createElement("div");u.className="snag-notice-actions";const s=n.createElement("button");s.type="button",s.className="snag-notice-dismiss",s.textContent=B("action.dismiss"),s.addEventListener("click",()=>C());const d=n.createElement("button");d.type="button",d.className="snag-notice-retry",u.append(s,d),r.append(c,u);let y;d.addEventListener("click",()=>{C(),y?.run()});let w=0;function C(){w&&o.cancelAnimationFrame(w),w=0,r.hidden=!0,r.remove()}return{show(m,f,g){y=f,d.hidden=!f,f&&(d.textContent=B(f.label)),r.hidden=!1,c.textContent="",(t??e).appendChild(r);const p=B(m,g);w&&o.cancelAnimationFrame(w),w=o.requestAnimationFrame(()=>{w=0,c.textContent=p})},hide:C,visible:()=>r.isConnected&&!r.hidden,destroy(){r.remove()}}}const vr=` .snag-paused{border:0;padding:0;background:transparent;pointer-events:auto;max-width:min(420px,calc(100vw - 32px))}.snag-paused::backdrop{background:rgb(0 0 0 / .28)}.snag-paused-box{background:${k.bg};color:${k.fg};border:1px solid ${k.border};border-inline-start:3px solid ${k.accent};border-radius:${k.radius};box-shadow:${k.shadow};padding:14px 16px;font:400 13px/1.45 ${k.font};display:flex;flex-direction:column;gap:12px}.snag-paused p{margin:0}.snag-paused-actions{display:flex;justify-content:flex-end}.snag-paused button{appearance:none;font:inherit;cursor:pointer;border:0;font-weight:600;border-radius:calc(${k.radius} - 2px);padding:6px 14px;min-height:30px;background:${k.accent};color:${k.onAccent}}.snag-paused button:focus-visible{outline:2px solid ${k.focus};outline-offset:2px}`;function wr(e,t){const n=e.ownerDocument??document;nt(e,"paused",vr);const o=n.createElement("dialog");o.className="snag-paused",o.setAttribute("aria-label",B("paused.dialog"));const r=n.createElement("div");r.className="snag-paused-box",r.setAttribute("role","status");const c=n.createElement("p");c.textContent=B("paused.dialog");const u=n.createElement("div");u.className="snag-paused-actions";const s=n.createElement("button");s.type="button",s.textContent=B("paused.close"),s.addEventListener("click",()=>w()),u.append(s),r.append(c,u),o.append(r);let d=!1;function y(){if(!d){(t??e).appendChild(o);try{o.showModal(),d=!0}catch{o.setAttribute("open",""),d=!0}}}function w(){if(d){d=!1;try{o.close()}catch{o.removeAttribute("open")}o.remove()}}return o.addEventListener("close",()=>{d=!1,o.remove()}),{show:y,hide:w,destroy(){w(),o.remove()}}}const xr=Symbol.for(gn.original),Nn=Symbol.for(gn.wrapped),rt=()=>{};function Sr(e,t,n){let o;try{o=e[t]}catch{return rt}if(typeof o!="function"||o[Nn])return rt;const r=o,c=n(r);let u=!1;const s=function(...d){return u?r.apply(this,d):c.apply(this,d)};try{const d=s;d[Nn]=!0,d[xr]=r,Object.defineProperty(s,"name",{value:r.name,configurable:!0}),Object.defineProperty(s,"length",{value:r.length,configurable:!0})}catch{}try{e[t]=s}catch{return rt}return e[t]!==s?rt:()=>{let d;try{d=e[t]}catch{d=void 0}if(d===s)try{e[t]=r;return}catch{}u=!0}}function Ar(e,t){const n=[];let o=0;const r=()=>{o||(o=e.requestAnimationFrame(()=>{o=0,t.onResize()}))};e.addEventListener("resize",r),n.push(()=>{o&&e.cancelAnimationFrame(o),e.removeEventListener("resize",r)}),e.visualViewport?.addEventListener("resize",r),n.push(()=>e.visualViewport?.removeEventListener("resize",r));const c=()=>void e.setTimeout(t.onResize,250);e.addEventListener("orientationchange",c),n.push(()=>e.removeEventListener("orientationchange",c));let u=e.location.pathname;const s=()=>{const E=e.location.pathname;E!==u&&(u=E,t.onRoute())},d=e.navigation;if(d){const E=()=>void e.setTimeout(s,0);d.addEventListener("navigatesuccess",E),n.push(()=>d.removeEventListener("navigatesuccess",E))}else for(const E of["pushState","replaceState"])n.push(Sr(e.history,E,D=>function(...O){const V=D.apply(this,O);return e.setTimeout(s,0),V}));const y=e.document;let w=!0;try{y.documentElement.matches(":modal")}catch{w=!1}const C=()=>{const E=y.querySelectorAll("dialog[open]");if(!w)return E.length>0;for(const D of E)if(D.matches(":modal"))return!0;return!1};let m=!1;const f=()=>{const E=C();E!==m&&(m=E,t.onModal(E))};y.addEventListener("toggle",f,!0),n.push(()=>y.removeEventListener("toggle",f,!0));const g=new MutationObserver(f);g.observe(y.documentElement,{subtree:!0,attributes:!0,attributeFilter:["open"]}),n.push(()=>g.disconnect());const p=()=>void e.setTimeout(s,0);return e.addEventListener("popstate",p),n.push(()=>e.removeEventListener("popstate",p)),{destroy(){for(const E of n)E();n.length=0}}}function kr(e,t){try{e.sessionStorage.setItem(le.handoff,JSON.stringify({openThreadId:t}))}catch{}}function $r(e){try{const t=e.sessionStorage.getItem(le.handoff);if(t===null)return null;e.sessionStorage.removeItem(le.handoff);const n=JSON.parse(t);return typeof n.openThreadId=="string"?n.openThreadId:null}catch{return null}}function Er(){return{statuses:[],read:"all",pageOnly:!1,newOnly:!1,sort:"page"}}const Cr=["open","progress","review","resolved"];function Tr(e,t,n){if(t.statuses.length>0&&Cr.includes(e.status)&&!t.statuses.includes(e.status)||t.by&&e.createdBy.id!==t.by||t.page&&e.route!==t.page)return!1;if(t.read!=="all"&&n){const o=Rr(e,n);if(t.read==="unread"&&!o||t.read==="read"&&o)return!1}return!0}function Rr(e,t){const n=t.get(e.id)??0;return Date.parse(e.updatedAt)>n}function _r(e,t,n){const o=e.visualViewport;let r=0;const c=()=>{if(r=0,!o)return;const s=o.offsetLeft,d=o.offsetTop;t.style.translate=s||d?`${s}px ${d}px`:"",t.style.width=`${o.width}px`,t.style.height=`${o.height}px`,n?.(o.scale)},u=()=>{r||(r=e.requestAnimationFrame(c))};return o?.addEventListener("resize",u,{passive:!0}),o?.addEventListener("scroll",u,{passive:!0}),u(),()=>{r&&e.cancelAnimationFrame(r),o?.removeEventListener("resize",u),o?.removeEventListener("scroll",u)}}const Ir=/^eyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}/,Pr=/^[a-f0-9]{32,}$/i,Mr=/^(?=[A-Za-z0-9_-]{24,}$)(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9_-]+$/,zr="[redacted]";function Hn(e){return e.includes("/")?e.split("/").map(t=>Ir.test(t)||Pr.test(t)||Mr.test(t)?zr:t).join("/"):e}const Or=/\/index\.(html?|php)$/i;function Lr(e){if(!e.startsWith("/"))return e;let t=e.replace(Or,"/");return t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t.toLowerCase()}function Dr(e){try{const t=e.querySelector(`meta[name="${Mo.route}"]`)?.getAttribute("content")?.trim();return!t||t.length>512||!t.startsWith("/")?null:t}catch{return null}}function Nr(e,t){const n=t??Dr(e);return Lr(n??Hn(e.location.pathname))}const Hr=[/^utm_/,/^(gclid|gbraid|wbraid|fbclid|msclkid|ttclid|twclid|igshid|yclid|li_fat_id)$/,/^(mc_cid|mc_eid|_hsenc|_hsmi|vero_id|oly_enc_id|oly_anon_id)$/,/^_vercel_/,/^__vercel_/,/^_rsc$/],Wr=[...bt.query,...bt.fragment];function Fr(e,t=[]){return Wr.includes(e)||t.includes(e)?!0:Hr.some(n=>n.test(e))}function Br(e,t={}){const n=t.significantQueryParams??[];if(n!=="*"&&n.length===0)return;let o;try{o=new URLSearchParams(e)}catch{return}const r={};for(const[c,u]of o)Fr(c,t.ignoredQueryParams??[])||n!=="*"&&!n.includes(c)||(r[c]=u);return Object.keys(r).length>0?r:void 0}function jr(e,t,n={}){const o=n.significantQueryParams??[];if(o==="*"){const r=e??{},c=t??{},u=new Set([...Object.keys(r),...Object.keys(c)]);for(const s of u)if(r[s]!==c[s])return!1;return!0}for(const r of o)if((e?.[r]??void 0)!==(t?.[r]??void 0))return!1;return!0}const Ur=120,Zr=1e3,Vr=200,Yr=1e4;function Xr(e,t,n){const o=t.MutationObserver;if(typeof o!="function")return{destroy:()=>{}};let r=!1,c=null,u=!1,s=!1,d=0,y=C(),w=0;function C(){return t.performance?.now?.()??0}const m=new o(()=>{r=!0,d++,g()});function f(){const E=C();return E-y>=1e3&&(d>Vr&&(w=E+Yr),d=0,y=E),E<w?Zr:Ur}function g(){c||(c=setTimeout(p,f()))}function p(){if(c=null,!!r){if(u){s=!0;return}r=!1,u=!0;try{n()}finally{u=!1,s&&(s=!1,r=!0,g())}}}return m.observe(e.documentElement,{childList:!0,subtree:!0}),{destroy(){m.disconnect(),c&&clearTimeout(c),c=null}}}const Kr="0.0.0",Jr={capture:Re.capture,"anchor-ext":Re.anchorExt,"anchor-fuzzy":Re.anchorFuzzy,crumbs:Re.crumbs,screenshot:Re.screenshot,dock:Re.dock,text:Re.text},Wn=new Map,Bt=new Map,Fn=new Map;function qr(e,t,n){const o=new URL(t,n.location.href).href,r=new URL(Jr[e],o);r.searchParams.set("cv",Kr);const c=Fn.get(e)??0;return c>0&&r.searchParams.set("r",String(c)),Fn.set(e,c+1),r.href}async function _e(e,t,n=document){const o=Wn.get(e);if(o)return{ok:!0,mod:o};const r=Bt.get(e);if(r)return r;const c=(async()=>{for(let u=0;u<2;u++)try{const s=await import(qr(e,t,n));return Wn.set(e,s),{ok:!0,mod:s}}catch{}return{ok:!1,reason:"unavailable"}})();Bt.set(e,c);try{return await c}finally{Bt.delete(e)}}const Qr="composer",jt=e=>le.draft(e,Qr),Gr=le.draft("\0","").split("\0")[0];function ea(e){try{return e.body.trim()?(localStorage.setItem(jt(e.route),JSON.stringify(e)),!0):(Bn(e.route),!0)}catch{return!1}}function ta(e){try{const t=localStorage.getItem(jt(e));if(!t)return null;const n=JSON.parse(t);return!n||typeof n.body!="string"||!n.anchor||n.route!==e?null:n}catch{return null}}function Bn(e){try{localStorage.removeItem(jt(e))}catch{}}function Ut(){try{for(let e=0;e<localStorage.length;e++){const t=localStorage.key(e);if(t&&t.startsWith(Gr))return!0}return!1}catch{return!1}}const na="http://www.w3.org/2000/svg";function Ie(e,t,n,o=[]){const r=e.createElementNS(na,t);for(const c in n)r.setAttribute(c,n[c]);for(const c of o)r.appendChild(c);return r}const Zt=(e,t="16",n="16",o="0 0 16 16")=>({width:t,height:n,viewBox:o,fill:"none","aria-hidden":"true"}),oa=e=>Ie(e,"svg",Zt(),[Ie(e,"path",{d:"M8 3v10M3 8h10",stroke:"currentColor","stroke-width":"1.75","stroke-linecap":"round"})]),ra=e=>Ie(e,"svg",Zt(),[Ie(e,"rect",{x:"2.25",y:"3.25",width:"11.5",height:"9.5",rx:"1.75",stroke:"currentColor","stroke-width":"1.5"}),Ie(e,"path",{d:"M9.5 3.5v9",stroke:"currentColor","stroke-width":"1.5"})]),aa=e=>Ie(e,"svg",{...Zt(e,"10","16","0 0 10 16"),fill:"currentColor"},[Ie(e,"g",{fill:"currentColor"},[4,8,12].flatMap(t=>[3,7].map(n=>Ie(e,"circle",{cx:String(n),cy:String(t),r:"1"}))))]),sa=` .snag-tb{position:fixed;z-index:${Ve.toolbar};display:flex;align-items:center;gap:2px;padding:4px;border-radius:calc(${k.radius} + 4px);background:${k.bg};color:${k.fg};box-shadow:${k.shadow};font:500 13px/1 ${k.font};pointer-events:auto;user-select:none;border:1px solid ${k.border}}.snag-tb{transition:inset-inline-end ${k.motion}}.snag-tb--fine{inset-inline-end:calc(20px + env(safe-area-inset-right) + var(${P.dockW},0px));inset-block-end:calc(20px + env(safe-area-inset-bottom));transition:inset-inline-end ${k.motion}}.snag-tb--coarse{inset-inline:0;inset-block-end:0;border-radius:14px 14px 0 0;padding:6px 10px calc(6px + env(safe-area-inset-bottom));justify-content:center;gap:4px;flex-direction:column}.snag-grabber{width:36px;height:4px;border-radius:2px;background:${k.muted};margin:2px auto 6px}.snag-row{display:flex;align-items:center;gap:2px}.snag-grip{display:flex;align-items:center;padding:0 4px;color:${k.muted};cursor:grab;touch-action:none}.snag-grip:active{cursor:grabbing}.snag-seg{display:flex;background:${k.surface};border-radius:${k.radius};padding:2px;position:relative}.snag-seg::before{content:"";position:absolute;inset-block:2px;inset-inline-start:var(${P.thumbX},0);width:var(${P.thumbW},0);background:${k.accent};border-radius:calc(${k.radius} - 2px);pointer-events:none;transition:inset-inline-start ${k.motion},width ${k.motion}}.snag-seg>.snag-b[aria-pressed="true"]{background:transparent;color:${k.onAccent}}.snag-seg>.snag-b{z-index:1}.snag-b{appearance:none;border:0;background:transparent;color:inherit;font:inherit;padding:6px 11px;border-radius:calc(${k.radius} - 2px);cursor:pointer;display:flex;align-items:center;gap:6px;position:relative;min-height:32px;transition:background ${k.motion}}.snag-b:hover:not(:disabled){background:color-mix(in srgb,currentColor 12%,transparent)}.snag-b:disabled{opacity:.4;cursor:not-allowed}.snag-b[aria-pressed="true"]{background:${k.accent};color:${k.onAccent}}.snag-b:focus-visible{outline:2px solid ${k.focus};outline-offset:2px}.snag-icon{padding:6px 9px}@media (pointer:coarse){.snag-b{min-height:44px;min-width:44px;padding:6px 14px}.snag-icon{padding:6px 14px}}.snag-puck .snag-row>:not([aria-expanded]){display:none}.snag-puck{padding:4px;border-radius:50%}.snag-puck [aria-expanded]{min-width:44px;min-height:44px;border-radius:50%}`;function ia(e,t){const n=e.ownerDocument??document,o=t.coarsePointer??n.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1;nt(e,"toolbar",sa);const r=n.createElement("div");r.className=`snag-tb ${o?"snag-tb--coarse":"snag-tb--fine"}`,r.setAttribute("role","toolbar"),r.setAttribute("aria-label",B("toolbar.aria"));const c=n.createElement("div");c.className="snag-grabber",c.setAttribute("aria-hidden","true");const u=n.createElement("div");u.className="snag-row";const s=n.createElement("span");s.className="snag-grip",s.setAttribute("aria-hidden","true"),s.appendChild(aa(n));const d=n.createElement("div");d.className="snag-seg",d.setAttribute("role","group"),d.setAttribute("aria-label",B("toolbar.group"));const y=(l,_,S)=>{const I=n.createElement("button");return I.type="button",I.className=`snag-b ${l}`,I.setAttribute("aria-label",_),typeof S=="string"?I.textContent=S:I.appendChild(S),I},w=y("",B("toolbar.browse"),B("toolbar.browse")),C=y("",B("toolbar.comments"),B("toolbar.comments")),m=y("snag-icon",B("toolbar.add"),oa(n)),f=y("snag-icon",B("toolbar.panel"),ra(n));f.setAttribute("aria-expanded","false"),d.append(w,C),o||u.appendChild(s),u.append(d,m,f),o&&r.appendChild(c),r.appendChild(u),(t.parent??e).appendChild(r);const g=()=>{e.host.style.setProperty(P.tbH,`${r.offsetHeight}px`)};g();let p=null;function E(l,_){const S=n.defaultView,I=r.offsetWidth,M=r.offsetHeight,N=jn(l,8,Math.max(8,S.innerWidth-I-8)),U=jn(_,8,Math.max(8,S.innerHeight-M-8));p={left:N,top:U},r.style.left=`${N}px`,r.style.top=`${U}px`,r.style.right="auto",r.style.bottom="auto"}const D=()=>{g(),p&&E(p.left,p.top)},O=n.defaultView;if(O?.addEventListener("resize",D),w.addEventListener("click",()=>t.onState("browse")),C.addEventListener("click",()=>t.onState("comments")),m.addEventListener("click",()=>t.onState(V==="add"?"comments":"add")),f.addEventListener("click",()=>t.onPanel()),!o){let l=null;s.addEventListener("pointerdown",S=>{l={x:S.clientX,y:S.clientY,r:r.getBoundingClientRect()},s.setPointerCapture(S.pointerId),S.preventDefault()}),s.addEventListener("pointermove",S=>{l&&E(l.r.left+(S.clientX-l.x),l.r.top+(S.clientY-l.y))});const _=S=>{l=null,s.hasPointerCapture(S.pointerId)&&s.releasePointerCapture(S.pointerId)};s.addEventListener("pointerup",_),s.addEventListener("pointercancel",_)}let V="browse";function re(l){V=l,w.setAttribute("aria-pressed",String(l==="browse")),C.setAttribute("aria-pressed",String(l!=="browse")),m.setAttribute("aria-pressed",String(l==="add")),Y()}function Y(){const l=d.querySelector('.snag-b[aria-pressed="true"]'),_=d.getBoundingClientRect(),S=l?.getBoundingClientRect();if(!l||!S?.width){d.style.setProperty(P.thumbW,"0px");return}const I=n.defaultView?.getComputedStyle(d),M=I?.direction==="rtl",N=parseFloat((M?I?.paddingRight:I?.paddingLeft)??"0")||0,U=(M?_.right-S.right:S.left-_.left)-N;d.style.setProperty(P.thumbW,`${Math.round(S.width)}px`),d.style.setProperty(P.thumbX,`${Math.max(0,Math.round(U))}px`)}function Ee(l){m.disabled=l,l?m.title=B("error.panels.add"):m.removeAttribute("title")}function ee(l){m.setAttribute("aria-label",B(l?"toolbar.add.draft":"toolbar.add"))}function te(l){C.setAttribute("aria-label",l!==null&&l>0?B("toolbar.comments.unresolved",{n:No(l)}):B("toolbar.comments"))}re("browse"),te(0);function Pe(l){r.classList.toggle("snag-puck",l),l||Y()}function pe(l){r.hidden=l,l||Y(),g()}return{el:r,setState:re,setCount:te,setDegraded:Ee,setDraft:ee,setPuck:Pe,setConcealed:pe,destroy(){O?.removeEventListener("resize",D),e.host.style.removeProperty(P.tbH),r.remove()}}}const jn=(e,t,n)=>e<t?t:e>n?n:e,Un=24;function ca(e,t){const n=e.innerHeight,o=t.querySelector(".snag-dk");if(!o)return{top:0,bottom:n};const r=o.getBoundingClientRect();return r.height>=n-1?{top:0,bottom:n}:{top:0,bottom:Math.max(0,r.top)}}function la(e,t,n){const o=n.anchor.rect;if(!o)return;const r=n.anchor.offset??{fy:.5},c=o.y+o.h*r.fy,u=ca(e,t),s=c-e.scrollY;if(s>=u.top+Un&&s<=u.bottom-Un)return;const d=e.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;e.scrollTo({top:Math.max(0,c-(u.top+u.bottom)/2),behavior:d?"auto":"smooth"})}function Vt(){const e=new Uint8Array(16);crypto.getRandomValues(e);const t=Date.now();e[0]=Math.floor(t/2**40)&255,e[1]=Math.floor(t/2**32)&255,e[2]=Math.floor(t/2**24)&255,e[3]=Math.floor(t/2**16)&255,e[4]=Math.floor(t/2**8)&255,e[5]=t&255,e[6]=e[6]&15|112,e[8]=e[8]&63|128;const n=Array.from(e,o=>o.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}const da=()=>vt.thread+Vt(),Zn=()=>vt.comment+Vt(),ua=()=>vt.attachment+Vt(),fa={attachments:"direct",realtime:"none",anchorReports:!1,identity:["guest"],export:["json","md"],serverSideSearch:!1,privateThreads:!1,assignees:!1};function ha(){const e=le.threads("probe","probe");try{return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(t){return Vn(t)}}function pa(e,t,n){const o=le.threads(e,t);function r(){let s=null;try{s=localStorage.getItem(o)}catch{return[]}if(!s)return[];try{const d=JSON.parse(s);return Array.isArray(d)?d.filter(ga):[]}catch{return[]}}function c(s){try{localStorage.setItem(o,JSON.stringify(s))}catch(d){if(!Vn(d))return;throw new Dt("local_quota_exceeded")}}const u=s=>({...s,updatedAt:new Date().toISOString()});return{kind:"local",capabilities:fa,async init(s){return{uid:s.uid,env:s.env,features:{screenshots:!0,uploads:!1}}},async listThreads(s={}){let d=r();return s.route!==void 0&&(d=d.filter(y=>y.route===s.route)),s.status?.length&&(d=d.filter(y=>s.status.includes(y.status))),{data:d,serverTime:new Date().toISOString()}},async getThread(s){return r().find(d=>d.id===s)??null},async createThread(s){const d=Cn(s);return c([...r(),d]),d},async patchThread(s,d){const y=r(),w=y.findIndex(m=>m.id===s);if(w<0)return null;const C=u({...y[w],...ma(d)});return y[w]=C,c(y),C},async deleteThread(s){const d=r(),y=d.find(C=>C.id===s),w=d.filter(C=>C.id!==s);w.length!==d.length&&c(w);for(const C of y?.attachments??[])n?.del(C.id).catch(()=>{})},async uploadAttachment(s,d){if(!n)throw new Dt("attachments_unsupported");const y=ua();return await n.put(y,{blob:s,uid:e,env:t,kind:d.kind,...d.width!==void 0?{width:d.width}:{},...d.height!==void 0?{height:d.height}:{},createdAt:Date.now()}),{id:y,kind:d.kind,url:"",...d.width!==void 0?{width:d.width}:{},...d.height!==void 0?{height:d.height}:{},bytes:s.size,contentType:s.type}},async createComment(s,d){const y=r(),w=y.findIndex(m=>m.id===s);if(w<0)return null;const C={id:d.id,snagId:s,body:d.body,author:d.author,createdAt:new Date().toISOString()};return y[w]=u({...y[w],comments:[...y[w].comments,C]}),c(y),C},async patchComment(s,d){const y=r();for(let w=0;w<y.length;w++){const C=y[w].comments.find(f=>f.id===s);if(!C)continue;const m={...C,body:d};return y[w]=u({...y[w],comments:y[w].comments.map(f=>f.id===s?m:f)}),c(y),m}return null},async deleteComment(s){const d=r(),y=d.findIndex(w=>w.comments.some(C=>C.id===s));y<0||(d[y]=u({...d[y],comments:d[y].comments.filter(w=>w.id!==s)}),c(d))}}}function ma(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Vn(e){return e instanceof Error?e.name==="QuotaExceededError"||e.name==="NS_ERROR_DOM_QUOTA_REACHED"||e.code===22||e.code===1014:!1}function ga(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.id=="string"&&typeof t.key=="string"&&typeof t.route=="string"&&typeof t.anchor=="object"&&t.anchor!==null&&typeof t.anchor.label=="string"&&Array.isArray(t.comments)}function ya(e,t,n=()=>Date.now()){const o=le.seen(e,t);let r=null;function c(){if(r)return r;try{const s=localStorage.getItem(o),d=s?JSON.parse(s):{};return r=typeof d=="object"&&d!==null&&!Array.isArray(d)?d:{}}catch{return r={}}}function u(s){r=s;try{localStorage.setItem(o,JSON.stringify(s))}catch{}}return{map:()=>new Map(Object.entries(c())),mark(s){u({...c(),[s]:n()})},markAll(s){const d=n(),y={...c()};for(const w of s)y[w.id]=d;u(y)}}}function at(){let e=null;try{e=localStorage.getItem(zt)}catch{return{}}if(!e)return{};if(e[0]!=="{")return{name:e};try{const t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function Yn(e){try{localStorage.setItem(zt,JSON.stringify(e))}catch{}}function Yt(){const e=at();return{name:typeof e.name=="string"?e.name:"",...e.email?{email:e.email}:{}}}function Xn(e){return at().projects?.[e]?.holderId}function ba(e){const t=at().projects?.[e]?.holderSecret;return t&&/^[\w-]{43}$/.test(t)?t:void 0}function va(e,t,n){const o=at();Yn({...o,projects:{...o.projects,[e]:{holderId:t,holderSecret:n}}})}function wa(e,t){const n=at(),o=n.projects?.[e];o&&Yn({...n,projects:{...n.projects,[e]:{...o,holderId:t}}})}const We=e=>le.session(e);function Kn(e){if(!e)return null;const t=JSON.parse(e);return typeof t?.token=="string"&&typeof t?.refreshableUntil=="number"?t:null}function Ye(e){try{const t=Kn(sessionStorage.getItem(We(e)));if(t)return t;const n=Kn(localStorage.getItem(We(e)));return n?.member?n:null}catch{return null}}function Xt(e,t){try{t.member?(localStorage.setItem(We(e),JSON.stringify(t)),sessionStorage.removeItem(We(e))):sessionStorage.setItem(We(e),JSON.stringify(t))}catch{}}function st(e){try{sessionStorage.removeItem(We(e)),localStorage.removeItem(We(e))}catch{}}const xa=(e,t=Date.now())=>t>e.expiresAt-3e4,Kt=(e,t=Date.now())=>t>=e.refreshableUntil;class Xe extends Error{code;status;constructor(t,n,o){super(o),this.name="HttpAdapterError",this.status=t,this.code=n}}function Sa(e){const{offset:t,testId:n,domId:o,page:r,schemaVersion:c,...u}=e;return{...u,...n?{testid:n}:{},...o?{domid:o}:{},...t?{offset:{fx:t.x,fy:t.y}}:{}}}function Aa(e,t){const n=e.url??"",o=/^https?:/i.test(n)?n:n?`${t}${n.startsWith("/")?"":"/"}${n}`:`${t}/api/v1/attachments/${encodeURIComponent(e.id)}/blob`;return{...e,url:o}}function St(e,t,n){return{id:e.id,route:e.anchor?.page?.route??"",key:e.key,status:e.status,anchor:Sa(e.anchor),anchorState:e.anchorState,context:e.context,comments:e.comments??[],createdBy:e.createdBy,createdAt:e.createdAt,updatedAt:e.updatedAt,...e.resolvedAt?{resolvedAt:e.resolvedAt}:{},...e.attachments?.length?{attachments:e.attachments.map(o=>Aa(o,n))}:{},...t?{scope:{environment:t}}:{}}}function ka(e,t){const{offset:n,testid:o,domid:r,...c}=e;return{...c,schemaVersion:pn,...o?{testId:o}:{},...r?{domId:r}:{},offset:n?{x:n.fx,y:n.fy}:{x:.5,y:.5},page:{route:t,pathname:location.pathname,origin:location.origin}}}function $a(e,t,n,o={}){const r=e.replace(/\/+$/,""),c=`${r}/api/v1/projects/${encodeURIComponent(t)}`;let u=o.reviewToken,s=Ye(t);async function d(f=!1){const g=s&&!Kt(s)?s.token:null,p=!!g&&!u&&!f,E=p?void 0:u?{kind:"link",token:u,name:Yt().name||void 0}:{kind:"guest",name:Yt().name||"Anonymous",holderId:Xn(t),holderSecret:ba(t)};let D;try{D=await fetch(`${c}/sessions`,{method:"POST",credentials:"omit",headers:{"content-type":"application/json",...g?{Authorization:`Bearer ${g}`}:{}},body:JSON.stringify({...n?{environment:n}:{},...E?{identity:E}:{},client:{widget:Ao,schema:pn}})})}catch(re){throw new Xe(0,"network_error",re.message)}finally{u=void 0}if(!D.ok){const Y=(await D.json().catch(()=>null))?.error?.code??"unauthorized";throw st(t),s=null,Y==="session_revoked"||Y==="token_revoked"?o.onSessionEnded?.("revoked"):D.status===401&&o.onSessionEnded?.("expired"),new Xe(D.status,Y,"This review session is not valid.")}const O=await D.json();O.holderSecret&&O.reviewer?va(t,O.reviewer.id,O.holderSecret):O.reviewer&&wa(t,O.reviewer.id);const V=O.round?.number??(p?s?.round:void 0);return s={token:O.sessionToken,expiresAt:Date.parse(O.expiresAt),refreshableUntil:Date.parse(O.refreshableUntil),reviewerId:O.reviewer?.id??s?.reviewerId??"",permissions:O.permissions??s?.permissions??[],...V!==void 0?{round:V}:{},...p&&s?.member?{member:s.member}:{},...p&&s?.member&&s.moderator?{moderator:!0}:{}},Xt(t,s),E&&(w=E.name??null),o.onSessionStarted?.(),s}async function y(){if(s){if(Kt(s)){st(t),s=null,o.onSessionEnded?.("expired");return}await d().catch(()=>{})}}let w=null;async function C(){if(s&&Kt(s))return st(t),s=null,w=null,o.onSessionEnded?.("expired"),null;const f=Yt().name||null,g=s!==null&&!s.member&&f!==null&&f!==w;if(!s||xa(s)||u||g)try{await d(g)}catch(p){if(!(p instanceof Xe)||p.status===0)throw p;return null}return s?.token??null}async function m(f,g,p=!1){const E=await C();let D;try{D=await fetch(c+f,{...g,headers:{"content-type":"application/json",...E?{Authorization:`Bearer ${E}`}:{},...g?.headers??{}},credentials:"omit"})}catch(O){throw new Xe(0,"network_error",O.message)}if(!D.ok){const O=await D.json().catch(()=>null),V=O?.error?.code??"http_error";if(D.status===401&&!p&&V!=="session_revoked")return st(t),s=null,m(f,g,!0);throw new Xe(D.status,V,O?.error?.message??`The server answered ${D.status}.`)}return await D.json()}return{kind:"http",capabilities:{attachments:"none",realtime:"none",anchorReports:!0,identity:["guest"],export:[],serverSideSearch:!1,privateThreads:!1,assignees:!1},async init(f){const g=await m("/config");return this.capabilities.attachments=g.features.screenshots?"direct":"none",{uid:f.uid,env:f.env,features:g.features,...g.rounds?{rounds:g.rounds}:{},...g.writable===void 0?{}:{writable:g.writable},...g.reason===void 0?{}:{reason:g.reason}}},async reportAnchors(f){if(f.length!==0)for(let g=0;g<f.length;g+=50)try{await m("/anchor-reports",{method:"POST",body:JSON.stringify({reports:f.slice(g,g+50)})})}catch{return}},revalidate:y,member:()=>s?.member??null,adoptSession(f){s={token:f.sessionToken,expiresAt:Date.parse(f.expiresAt),refreshableUntil:Date.parse(f.refreshableUntil),reviewerId:f.reviewer.id,permissions:f.permissions,member:f.reviewer.name,...f.moderator?{moderator:!0}:{}},Xt(t,s),o.onSessionStarted?.()},signOut(){st(t),s=null,w=null},getRound(){return s?.round??Ye(t)?.round??null},setRound(f){s&&(s={...s,round:f});const g=Ye(t);g&&Xt(t,{...g,round:f})},async fetchForeignImage(f){try{const g=await C(),p=await fetch(`${c}/image?src=${encodeURIComponent(f)}`,{credentials:"omit",...g?{headers:{Authorization:`Bearer ${g}`}}:{}});if(!p.ok)return null;const E=await p.blob();return E.type.startsWith("image/")?E:null}catch{return null}},async uploadAttachment(f,g){const p=await C(),E=await fetch(`${c}/attachments`,{method:"POST",credentials:"omit",headers:{"content-type":f.type||"image/webp",[Ot.attachmentKind]:g.kind,...g.width?{[Ot.attachmentWidth]:String(g.width)}:{},...g.height?{[Ot.attachmentHeight]:String(g.height)}:{},...p?{Authorization:`Bearer ${p}`}:{}},body:f});if(!E.ok){const O=await E.json().catch(()=>null);throw new Xe(E.status,O?.error?.code??"upload_failed",O?.error?.message??"Upload failed.")}const D=await E.json();return{id:D.id,kind:g.kind,contentType:D.contentType,byteSize:D.byteSize,...g.width?{width:g.width}:{},...g.height?{height:g.height}:{},url:`${r}/api/v1/attachments/${D.id}/blob`}},async listThreads(f){await C();const g=new URLSearchParams;n&&g.set("env",n),f?.route&&g.set("route",f.route),s?.round&&g.set("round",String(s.round));const p=await m(`/threads?${g}`);return{data:p.data.map(E=>St(E,n,r)),...p.nextCursor?{nextCursor:p.nextCursor}:{},deleted:[],serverTime:p.serverTime}},async getThread(f){return(await this.listThreads()).data.find(p=>p.id===f)??null},async getThreadByKey(f){const g=new URLSearchParams({key:f});n&&g.set("env",n);const E=(await m(`/threads?${g}`)).data[0];return E?St(E,n,r):null},async createThread(f){const g=await m("/threads",{method:"POST",body:JSON.stringify({id:f.id,anchor:ka(f.anchor,f.route),anchorState:f.anchorState,context:f.context,...n?{scope:{environment:n}}:{},createdBy:{name:f.createdBy.name},...f.comment?{comment:{id:f.comment.id,body:f.comment.body}}:{},...f.attachments?.length?{attachments:f.attachments.map(p=>p.id)}:{}})});return St(g,n,r)},async patchThread(f,g){if(!g.status)return null;const p=await m(`/threads/${encodeURIComponent(f)}`,{method:"PATCH",body:JSON.stringify({status:g.status})});return St(p,n,r)},async deleteThread(f){await m(`/threads/${encodeURIComponent(f)}`,{method:"DELETE"})},isMine(f){return f.id?f.id===(s??Ye(t))?.reviewerId||f.id===Xn(t):!1},canModerate(){const f=s??Ye(t);return!!f?.member&&!!f.moderator},can(f){return(s??Ye(t))?.permissions.includes(f)??!1},async createComment(f,g){const p=await m(`/threads/${encodeURIComponent(f)}/comments`,{method:"POST",body:JSON.stringify({id:g.id,body:g.body})});return{id:p.id,snagId:f,body:p.body,author:p.author,createdAt:p.createdAt}},async patchComment(f,g){return await m(`/comments/${encodeURIComponent(f)}`,{method:"PATCH",body:JSON.stringify({body:g})}),null},async deleteComment(f){await m(`/comments/${encodeURIComponent(f)}`,{method:"DELETE"})}}}async function Ea(e,t){if(e.url&&/^https?:/i.test(e.url))try{const n=await fetch(e.url,{credentials:"omit"});if(!n.ok)return null;const o=await n.blob();return o.type&&!o.type.startsWith("image/")?null:o}catch{return null}return t(e.id)}const Ca=64,Ta=4096,Ra=e=>le.counts(e),_a=e=>e.filter(t=>t.status!=="resolved").length;function Ia(e,t,n){const o=new Map;for(const s of t){const d=o.get(s.route)??{n:0,seen:""};s.status!=="resolved"&&d.n++,s.updatedAt>d.seen&&(d.seen=s.updatedAt),o.set(s.route,d)}o.has(n)||o.set(n,{n:0,seen:new Date().toISOString()});const c=[...o.entries()].sort((s,d)=>d[1].seen.localeCompare(s[1].seen)).slice(0,Ca);c.some(([s])=>s===n)||(c[c.length-1]=[n,o.get(n)]);let u={v:1,p:_a(t),r:Object.fromEntries(c.map(([s,d])=>[s,d.n])),t:new Date().toISOString()};JSON.stringify(u).length>Ta&&(u={...u,r:{}});try{localStorage.setItem(Ra(e),JSON.stringify(u))}catch{return null}return u}function Pa(e,t){return e?.r[t]??0}const Ma="pass(?:word|wd)?|pwd|secret|token|api[_-]?key|apikey|auth(?:orization)?|credential|session|sid|cookie|jwt|bearer|otp|mfa|totp|cvv|cvc|ssn|nino|iban|card(?:[_-]?number)?|account[_-]?number|private[_-]?key|signature|client[_-]?secret|refresh[_-]?token|access[_-]?token",za=new RegExp(`(["'\`]?)(?<![A-Za-z0-9])(?:${Ma})[\\w-]*\\b\\1?\\s*[:=]\\s*(?:(["'\`])((?:\\\\.|(?!\\2)[^\\\\])*)\\2|([^\\s,;&}\\])]{3,}))`,"gi"),Oa=/^(?:Bearer|Basic|Digest|Negotiate|Token)$/i,La=(e,t,n,o,r,c,u)=>{if(!n&&Oa.test(r)&&u.slice(c+e.length).startsWith(" [redacted]")||(n?o:r).startsWith("[redacted"))return e;const s=n?`${n}${o}${n}`:r;return e.slice(0,e.length-s.length)+(n?`${n}[redacted]${n}`:"[redacted]")},Jn=/data:[a-z0-9.+-]*\/?[a-z0-9.+-]*;base64,[A-Za-z0-9+/=]{16,}/gi,qn=/\beyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{0,}/g,Qn=/\b(sk-[A-Za-z0-9]+-[A-Za-z0-9_-]{20,}|sk-ant-[A-Za-z0-9_-]{20,}|sk-[A-Za-z0-9]{20,}|(sk|pk|rk)_(live|test)_[A-Za-z0-9]{16,}|gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|glpat-[A-Za-z0-9_-]{16,}|xox[baprs]-[A-Za-z0-9-]{10,}|xapp-[A-Za-z0-9-]{10,}|AKIA[0-9A-Z]{16}|ASIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{35}|ya29\.[A-Za-z0-9_-]{20,}|SG\.[A-Za-z0-9_-]{20,}|npm_[A-Za-z0-9]{30,}|dop_v1_[a-f0-9]{40,}|shpat_[a-f0-9]{30,}|sbp_[a-f0-9]{30,}|hf_[A-Za-z0-9]{30,}|nvapi-[A-Za-z0-9_-]{20,})\b/g,Da=/\b(Bearer|Basic|Digest|Negotiate|Token)\s+[A-Za-z0-9._~+/=-]{8,}/gi,Gn=/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\.[A-Za-z]{2,24})+\b/g,Jt=/\b(?:\d[ -]?){12,18}\d\b/g,eo=/\b(?=[A-Za-z0-9+/]*[a-z])(?=[A-Za-z0-9+/]*[A-Z])(?=[A-Za-z0-9+/]*\d)[A-Za-z0-9+/]{40,}={0,2}\b/g,to=/\b[0-9a-f]{32,}\b/gi,no=/\b(?=[A-Za-z0-9_-]*[a-z])(?=[A-Za-z0-9_-]*[A-Z])(?=[A-Za-z0-9_-]*\d)[A-Za-z0-9_-]{40,}\b/g,oo=/\b[a-z][a-z0-9]{1,15}(?:_[a-z0-9]{1,15}){0,2}_(?=[A-Za-z0-9_-]*[A-Z])(?=[A-Za-z0-9_-]*\d)[A-Za-z0-9_-]{24,}\b/g,ro=/\b[a-z][a-z0-9+.-]*:\/\/[^\s/:@]+:[^\s/@]+@/gi,Na=/^(?=[A-Za-z0-9_~.+/=-]*[a-z])(?=[A-Za-z0-9_~.+/=-]*[A-Z])(?=[A-Za-z0-9_~.+/=-]*\d)[A-Za-z0-9_~.+/=-]{24,}$/;function $e(e,t){e.lastIndex=0;const n=e.test(t);return e.lastIndex=0,n}function ao(e){const t=e.replace(/[ -]/g,"");if(t.length<13||t.length>19)return!1;let n=0,o=!1;for(let r=t.length-1;r>=0;r--){let c=t.charCodeAt(r)-48;o&&(c*=2,c>9&&(c-=9)),n+=c,o=!o}return n%10===0}function Ha(e){Jt.lastIndex=0;for(const t of e.matchAll(Jt))if(ao(t[0]))return!0;return!1}function At(e){let t=e;return t=t.replace(Jn,"data:[redacted]"),t=t.replace(Da,"$1 [redacted]"),t=t.replace(za,La),t=t.replace(qn,"[redacted:jwt]"),t=t.replace(Qn,"[redacted:key]"),t=t.replace(oo,"[redacted:key]"),t=t.replace(ro,"[redacted:url-cred]@"),t=t.replace(Gn,"[redacted:email]"),t=t.replace(Jt,n=>ao(n)?"[redacted:card]":n),t=t.replace(no,n=>`[redacted:b64:${n.length}]`),t=t.replace(eo,n=>`[redacted:b64:${n.length}]`),t=t.replace(to,n=>`[redacted:hex:${n.length}]`),t}const Wa=bt.query,Fa=bt.fragment;function Ba(e,t=[]){let n;try{const o=globalThis.location?.href;n=new URL(e,o)}catch{return At(e)}n.username="",n.password="";for(const o of[...n.searchParams.keys()]){if(Fa.includes(o)){n.searchParams.set(o,"[redacted]");continue}if(Wa.includes(o))continue;if(!t.includes(o)){n.searchParams.set(o,"[redacted]");continue}const r=n.searchParams.get(o)??"";At(r)!==r&&n.searchParams.set(o,"[redacted]")}return n.hash&&n.hash.length>1&&(n.hash=t.includes("#")?n.hash:"#[redacted]"),At(n.toString().replace(/%5Bredacted%5D/gi,"[redacted]"))}function ja(e){return e.length>120?!0:$e(Gn,e)||$e(qn,e)||$e(Qn,e)||$e(to,e)||$e(eo,e)||$e(Jn,e)||$e(no,e)||$e(oo,e)||$e(ro,e)||Na.test(e)||Ha(e)}const kt={id:"rev_local",name:B("author.unknown"),kind:"guest"},Ua="0.0.0";function so(e,t){if(e)return{...kt,name:e,...t?{email:t}:{}};try{const n=localStorage.getItem(le.identity);if(n)return{...kt,name:n[0]==="{"?JSON.parse(n).name??kt.name:n}}catch{}return kt}function Za(e){return`SN-${e.reduce((n,o)=>{const r=Number(o.key.split("-")[1]??0);return Number.isFinite(r)&&r>n?r:n},0)+1}`}let qt=null;const ve=e=>Nr(e,qt);function Va(e,t){const n=vn(),o=n.ownerDocument??document,r=o.defaultView??window,c=t?.config?.site??"local",u=t?.emit??(()=>{}),s=t?.assetBase??"./",d=t?.config?.env??"default";nt(n,"tokens",Fo);const y=jo(n.host,Bo(t?.config?.theme)),w={},C=t?.config?.storage==="local"?void 0:t?.config?.host,m=C&&c!=="local"?$a(C,c,t?.config?.env,{reviewToken:t?.reviewToken,onSessionEnded:a=>{ae.show(a==="revoked"?"error.linkrevoked":"error.sessionended")},onSessionStarted:()=>ae.hide()}):pa(c,d,{put:(a,i)=>w.put(a,i),del:a=>w.del(a)}),f=ya(c,d);let g=null;m.init({uid:c,env:d}).then(a=>{g=a.rounds??null,U?.update(x()),a.writable===!1&&a.reason==="origin_not_allowed"&&ae.show("error.origin",void 0,{origin:location.origin})}).catch(()=>{});let p=[],E=[];const D=ha();let O=null,V=null,re=!1,Y=!1,Ee=!1,ee=null,te=!1;const Pe={get:()=>O,unavailable:()=>Y||Ee,newPass:()=>V?.createPassCaches(),fuzzyHit:a=>ee?.hit(a)??null,wantFuzzy:(a,i)=>{if(ee){ee.enqueue(a,i,()=>Q());return}te||!V||!i.text?.exact||i.text.exact.length<8||(te=!0,_e("anchor-fuzzy",s,o).then(h=>{if(!h.ok||!V){Ee=!0,Q();return}ee=h.mod.createFuzzyEngine(o,V.fuzzyDeps),Te()}))},want:a=>{re||!(a.role&&a.accessibleName)&&!a.text?.exact&&!a.path?.length||(re=!0,_e("anchor-ext",s,o).then(i=>{if(!i.ok){Y=!0,Q();return}V=i.mod,O=i.mod.resolveExtended,Te()}))}};let pe=null,l=Er();const _=()=>l.statuses.length>0||!!l.by||!!l.page||l.read!=="all",S=gr(n,a=>{if(M==="add"){if(N?.hasText()){N.pulse();return}N?.close(),N=null,fe("comments")}v(a.id)},Pe,a=>{pe=a,U?U.update(x()):v()});let M=(()=>{try{return sessionStorage.getItem(le.mode)==="comments"?"comments":"browse"}catch{return"browse"}})(),N=null,U=null,G=null,Fe=!1,we=null,Be=!1,$t=null,Ce=null,xe=null,Me=!1;function de(){return xe?Promise.resolve(xe):Me?Promise.resolve(null):_e("capture",s,o).then(i=>i.ok?(w.put=i.mod.putBlob,w.del=i.mod.deleteBlob,xe=i.mod):(Ke(new Error("chunk unavailable")),null))}function Ke(a){Me||(Me=!0,M==="add"&&fe("comments"),J.setDegraded(!0),ae.show("error.capture",{label:"action.retry",run:()=>{Me=!1,J.setDegraded(!1),de()}}),console.warn(`[${be}] the capture chunk failed to load`,a))}let Je=0;function ze(){const a=new URL(s,o.location.href).href,i=new URL(Re.panels,a);return i.searchParams.set("cv",Ua),Je>0&&i.searchParams.set("r",String(Je)),Je++,import(i.href)}async function Se(){if(Be)return null;if(we)return we.catch(()=>null);we=ze().catch(async()=>(await new Promise(a=>setTimeout(a,1e3)),ze()));try{return $t=await we}catch(a){return we=null,it(a),null}}function it(a){Be=!0,M==="add"&&fe("comments"),J.setDegraded(!0),ae.show("error.panels",{label:"action.retry",run:()=>{Be=!1,J.setDegraded(!1),v(G)}}),console.warn(`[${be}] the panels chunk failed to load`,a)}const Ae=o.defaultView?.matchMedia?.("(pointer: coarse)").matches??!1;let ie=null;async function Et(){if(ie)return;const a=await de();!a||ie||(ie=a.createAddChrome(n,Ae,{pick:(i,h)=>void $(i,h),announce:Qe}),ie.setActive(M==="add"))}const ue=o.createElement("div");ue.style.cssText=`position:fixed;left:0;top:0;pointer-events:none;z-index:${Ve.dock}`,n.appendChild(ue);const ct=_r(r,ue,a=>J.setPuck(a>1.2)),ae=br(n,ue),je=wr(n,ue),A=qo(n,{onPick:(a,i)=>void $(a,i),onHover:a=>a?ie?.show(a):ie?.clear(),onSelectStart:()=>{Ae||nn()}});async function $(a,i){if(N?.hasText()){N.pulse();return}N?.close();const[h,R]=await Promise.all([Se(),de()]);if(!h||!R)return;const F=R.captureContext({page:R.derivePageRef(o.location,ht()),...mt()});hn(a);const Z=R.deriveAnchorLabel(a);b(h,a,i,F,Z,R)}function b(a,i,h,R,F,Z,j,He){let ge=i;pt=!1;const he=ve(o);_t=!1;const gt=()=>{N=null,Bn(he),J.setDraft(Ut()),fe("comments")},tt=()=>{et?.abort(),Ne=et=null,gt()},ye={at:h,label:F,...j?{initialBody:j.body,initialName:j.author,...j.email?{initialEmail:j.email}:{}}:{},onDraft:(oe,se,yt)=>{const So=ea({route:he,body:oe,author:se,...yt?{email:yt}:{},label:F,anchor:He??Z.createElementAnchor(i,{point:h,viewportWidth:r.innerWidth,label:F,...Z.describeElement(i)}),at:{x:h.x+r.scrollX,y:h.y+r.scrollY},savedAt:new Date().toISOString()});J.setDraft(Ut()),!So&&!_t&&(_t=!0,sn())},onSend:(oe,se,yt)=>{gt(),cn(ge,h,R,oe,se,yt,He)},onRetarget:oe=>{const se=oe==="up"?Z.widen(ge):Z.narrow(ge);se&&(ge=se,ie?.show(se),N?.setLabel(Z.deriveAnchorLabel(se)))},...ce&&Ge!==!1?{onShotOptIn:oe=>pt=oe}:{},onCancel:tt,crumbsOn:fn!==!1,shotsOn:Ge!==!1,...C&&c!=="local"?{serverHost:new URL(C).host}:{},...C&&m.adoptSession?{studio:{host:C,uid:c,env:t?.config?.env,member:m.member(),adopt:oe=>m.adoptSession(oe),signOut:()=>m.signOut()}}:{},...He?.text?.exact?{quote:He.text.exact}:{}};N=a.openComposer(n,ye,ue),q()}async function H(){const a=ve(o),i=ta(a);if(J.setDraft(Ut()),!i||N)return;const[h,R]=await Promise.all([Se(),de()]);if(!h||!R)return;const F=Ft(i.anchor,o,{viewportWidth:r.innerWidth,...O?{extended:O}:{}});if(!F.element)return;const Z=F.element.getBoundingClientRect();if(Z.width===0&&Z.height===0)return;const j={x:i.at.x-r.scrollX,y:i.at.y-r.scrollY};fe("add"),b(h,F.element,j,R.captureContext({page:R.derivePageRef(o.location,ht()),...mt()}),i.label,R,{body:i.body,author:i.author,...i.email?{email:i.email}:{}})}async function v(a=null){if(a&&a!==G&&u("thread:open",{threadId:a}),a&&f.mark(a),G=a,Fe=!0,M==="browse"&&fe("comments"),U){U.update(x());return}if(!await Se())return;const h=await _e("dock",s,o);if(!h.ok){ae.show("error.panels",{label:"action.retry",run:()=>void v(G)});return}!Fe||U||(Ce=h.mod,U=h.mod.openDock(n,x(),ue),q())}function z(){f.markAll(p),l.newOnly&&(l={...l,newOnly:!1}),Fe=!1,U?.close(),U=null,G=null,S.highlight(null),q(),_()&&Q()}function T(a){const i=a?p.find(h=>h.id===a):void 0;if(i&&i.route!==ve(o)){kr(r,i.id),r.location.assign(i.route);return}a&&f.mark(a),G=a,S.highlight(null),_()?Q():U?.update(x()),i&&Ce?.scrollToSnag(r,n,i)}function x(){return{snags:p,route:ve(o),openId:G,seenAt:f.map(),onOpen:T,onStatus:(a,i)=>void uo(a,i),onReply:(a,i,h)=>void fo(a,i,h),onEdit:(a,i)=>void X(a,i),onDeleteComment:a=>void L(a),onDeleteThread:a=>void W(a),...m.isMine?{isMine:a=>m.isMine(a)}:{},...C&&m.adoptSession?{studio:{host:C,uid:c,env:t?.config?.env,member:m.member(),adopt:a=>m.adoptSession(a),signOut:()=>m.signOut()}}:{},canDeleteOwnThread:m.can?m.can("thread:delete:own"):!0,canModerate:m.canModerate?.()??!1,onClearAll:()=>void K(),onClose:z,onExport:Rt,onHover:a=>S.highlight(a),...g&&g.length>1&&m.setRound?{rounds:g,activeRound:m.getRound?.()??g.find(a=>!a.closed)?.number??g[0].number,onRound:a=>{m.setRound(a),Te()}}:{},onAnnounce:Qe,loadShot:a=>Ea(a,async i=>{const h=await de();return h?(await h.getBlob(i))?.blob??null:null}),filter:l,onFilter:a=>{const i=a.statuses.join()!==l.statuses.join()||a.by!==l.by||a.page!==l.page||a.read!==l.read;l=a,i?Q():U?.update(x())},...pe?{clusterFilter:pe}:{},onClusterClear:()=>{pe=null,U?.update(x())},onShowAnyway:a=>{S.showGhost(a),Ce?.scrollToSnag(r,n,a)}}}async function ne(a,i){const h=p;p=a,Q();try{await Le(i)}catch{p=h,Q(),ae.show("error.sendfailed",void 0,{item:"change"})}}async function X(a,i){await ne(p.map(h=>({...h,comments:h.comments.map(R=>R.id===a?{...R,body:i}:R)})),()=>m.patchComment(a,i))}async function L(a){await ne(p.map(i=>({...i,comments:i.comments.filter(h=>h.id!==a)})),()=>m.deleteComment(a))}async function W(a){const i=G;G===a&&(G=null),await ne(p.filter(h=>h.id!==a),()=>m.deleteThread(a)),p.some(h=>h.id===a)&&(G=i)}async function K(){const a=p.map(i=>i.id);p=[],G=null,Q(),await Promise.all(a.map(i=>Le(()=>m.deleteThread(i))))}const J=ia(n,{onState:a=>fe(a),onPanel:()=>U?z():void v(),onNav:a=>en(a),parent:ue}),ce=r.matchMedia?.("(pointer: coarse)").matches??!1,q=()=>{ce&&J.setConcealed(!!N||!!U)};let me=null,Oe=[];function lt(a){let i=!1;const h=()=>{i||(i=!0,r.removeEventListener("scrollend",h),a())};r.addEventListener("scrollend",h,{once:!0}),r.setTimeout(h,600)}const qe=o.createElement("div");qe.setAttribute("aria-live","polite"),qe.setAttribute("role","status");const Qt="position:absolute;width:1px;height:1px;overflow:hidden";qe.style.cssText=Qt;const Ct=o.createElement("div");Ct.setAttribute("aria-live","assertive"),Ct.style.cssText=Qt,n.append(qe,Ct);let Gt=0;function Qe(a){r.clearTimeout(Gt),Gt=r.setTimeout(()=>{qe.textContent=a},400)}function en(a){const i=Oe.length;if(i===0)return;me=me===null?a===1?0:i-1:(me+a+i)%i;const h=Oe[me];la(r,n,h);const R=me+1;lt(()=>{S.pulse(h.id),Qe(B("nav.announce",{n:R,label:h.anchor.label,i:R,total:i}))})}function tn(){if(M!=="comments"||Ae){ke?.disarm();return}nn().then(a=>{a&&M==="comments"&&a.arm()})}let ke=null,Tt=null;async function nn(){if(ke)return ke;const a=await _e("text",s,o);return!a.ok||ke||(Tt=a.mod,ke=a.mod.createSelectionWatcher(n,{onQuote:(i,h)=>void io(i,h)})),ke}async function io(a,i){const h=xe??await de();if(!h||!Tt)return;const R=Tt.createTextAnchor(a,h,{viewportWidth:r.innerWidth,ourRoot:n});if(R.kind==="refused-form-control"){$(R.el,i);return}if(R.kind!=="text")return;const F=await Se();if(!F)return;const Z=h.captureContext({page:h.derivePageRef(o.location,ht()),...mt()});try{a.removeAllRanges()}catch{}b(F,R.el,R.point,Z,R.label,h,void 0,R.record)}function fe(a,i=!1){const h=M;M=a,a!=="add"&&N&&!i&&(N.close(),N=null),a==="add"&&U&&z(),a==="add"&&(Se(),de());try{sessionStorage.setItem(le.mode,a==="add"?"comments":a)}catch{}A.setMode(a),a!==h&&Qe(B(`toolbar.${a}`)),q(),a==="add"&&Et(),tn(),ie?.setActive(a==="add"),J.setState(a),Q(),a!==h&&u("modechange",{mode:a,previous:h})}let Ue=0,on=0;const rn=[300,800,1600,3200];function co(){if(Ue||!S.hasPending()){S.hasPending()||(on=0);return}const a=rn[Math.min(on++,rn.length-1)];Ue=r.setTimeout(()=>{Ue=0,Q()},a)}const lo=3e3;let an=0;function Q(a){const i=a??(Date.now()<an?"navigating":"authoritative");E=S.reanchor(p.filter(vo()),i),bo(),co();const h=new Map(E.map(j=>[j.id,j]));p=p.map(j=>h.get(j.id)??j);const R=_()?new Set(E.filter(j=>!Tr(j,l,f.map())&&j.id!==G).map(j=>j.id)):void 0;Oe=R?E.filter(j=>!R.has(j.id)):E,S.render(M==="browse"?[]:E,R);const F=ve(o),Z=D?Ia(o.location.origin,p,F):null;J.setCount(Z?Pa(Z,F):D?E.filter(j=>j.status!=="resolved").length:null),me!==null&&me>=Oe.length&&(me=null),U?.update(x())}async function Te(){const{data:a}=await m.listThreads();p=a,Q();const i=S.settled();for(const h of i)u("anchor:settled",{threadId:h.id,state:h.state,strategy:h.strategy,confidence:h.confidence});return m.capabilities.anchorReports&&m.reportAnchors&&i.length&&Le(()=>m.reportAnchors(i.map(h=>({threadId:h.id,state:h.state,confidence:h.confidence,strategy:h.strategy})))),m.capabilities.anchorReports||await Promise.all(a.flatMap(h=>{const R=p.find(F=>F.id===h.id);return!R||R.anchorState===h.anchorState?[]:[Le(()=>m.patchThread(R.id,{anchor:R.anchor,anchorState:R.anchorState}))]})),E}async function uo(a,i){p=p.map(h=>h.id===a?{...h,status:i}:h),Q(),u("thread:resolve",{threadId:a,status:i}),await Le(()=>m.patchThread(a,{status:i}))}async function fo(a,i,h){const R={id:Zn(),body:i,author:so(h)};p=p.map(F=>F.id===a?{...F,comments:[...F.comments,{...R,snagId:a,createdAt:new Date().toISOString()}]}:F),f.mark(a),Q(),u("comment:create",{threadId:a,comment:R}),await Le(()=>m.createComment(a,R))}function sn(){ae.show("error.quota",{label:"action.exportclear",run:()=>{Rt("json"),K()}}),console.warn(`[${be}] ${B("error.quota")}`)}async function Le(a){try{return await a()}catch(i){if(i instanceof Dt&&i.code==="local_quota_exceeded")return sn(),null;throw i}}function Rt(a){de().then(async i=>{if(!i)return;const h=await i.resolveAttachmentUris(p).catch(()=>new Map);i.download(n,i.buildExport(a,p,{origin:o.location.origin,exportedAt:new Date().toISOString()},h),r)})}async function cn(a,i,h,R,F,Z,j){const He=so(F,Z),ge=xe??await de();if(!ge)throw new Error(`[${be}] add() needs the capture chunk`);Ne||hn(a);const he=Ne?await Ne:null;Ne=et=null,ge.applyShotOutcome(h,he,Ge===!1,ce&&!pt);const gt=he?.blob&&m.uploadAttachment?m.uploadAttachment(he.blob,{kind:"screenshot",...he.width!==void 0?{width:he.width}:{},...he.height!==void 0?{height:he.height}:{}}).catch(()=>null):Promise.resolve(null),tt={id:da(),key:Za(p),route:ve(o),anchor:j??ge.createElementAnchor(a,{point:i,viewportWidth:r.innerWidth,label:ge.deriveAnchorLabel(a),...ge.describeElement(a)}),anchorState:"anchored",scope:go(),context:h,createdBy:He,createdAt:new Date().toISOString(),...R?{comment:{id:Zn(),body:R,author:He}}:{}},ye=Cn(tt);he?.blob&&(ye.screenshotBlob=he.blob),p=[...p,ye],f.mark(ye.id),Qe(B("announce.created",{key:ye.key})),u("thread:create",{thread:ye}),M==="browse"?fe("comments"):Q();try{const oe=await gt;oe&&(tt.attachments=[oe],p=p.map(se=>se.id===ye.id?{...se,attachments:[oe]}:se),Q()),await Le(()=>m.createThread(tt))}catch(oe){throw p=p.filter(se=>se.id!==ye.id),Q(),ae.show("error.sendfailed",void 0,{item:Pt.toLowerCase()}),console.warn(`[${be}] ${B("error.sendfailed",{item:Pt.toLowerCase()})}`,oe),oe}return ye}function ln(a){if((a.key==="n"||a.key==="p")&&M==="comments"&&!N){if(a.metaKey||a.ctrlKey||a.altKey)return;const i=a.composedPath()[0]??a.target;if(i&&(i.closest?.("input,textarea,select,[contenteditable]")||i.isContentEditable))return;a.preventDefault(),a.stopPropagation(),en(a.key==="n"?1:-1);return}M==="add"&&a.key==="Escape"&&(N||(a.stopPropagation(),fe("comments")))}o.addEventListener("keydown",ln,!0);let dn=0;const un=()=>{if(o.hidden||!m.revalidate)return;const a=Date.now();a-dn<3e4||(dn=a,m.revalidate())};o.addEventListener("visibilitychange",un);const ho=Oo(n),po=Lo(n,a=>{console.warn(`[${be}] the host page hid the widget from assistive technology ${a} times; leaving it alone.`)}),mo=zo(n,a=>{console.warn(`[${be}] the host page removed the widget ${a} times; leaving it alone. Reload to comment again.`)});function go(){return{environment:d,...t?.config?.branch?{branch:t.config.branch}:{}}}let dt={route:ve(o),url:o.location.href},_t=!1,ut=null;function yo(a){if(a){if(M==="browse")return;ut=M,fe("browse",!0),je.show(),u("paused",{reason:"modal-dialog"})}else if(ut){const i=ut;ut=null,je.hide(),fe(i),u("resumed",{mode:i})}}Se();function bo(){E.length>0&&_e("dock",s,o)}{const a=o.createElement("div");a.style.cssText="position:fixed;inset:0;pointer-events:none;visibility:hidden",n.appendChild(a);const i=a.getBoundingClientRect(),h=Math.abs(i.left)>1||Math.abs(i.top)>1||Math.abs(i.width-r.innerWidth)>1||Math.abs(i.height-r.innerHeight)>1;a.remove(),h&&(console.warn(`[${be}] fixed-trapped: <html> has transform/filter/contain, so our fixed layer follows it, not the viewport. Remove it, or expect drift.`),u("error",{code:"fixed-trapped"}))}let Ze=null;const ft=new Set,De=(()=>{const a=r[Eo.config];return a&&typeof a=="object"?a:void 0})(),fn=De?.breadcrumbs,It=(()=>{const a=De?.significantQueryParams,i=De?.ignoredQueryParams,h={};return a==="*"?h.significantQueryParams="*":Array.isArray(a)&&(h.significantQueryParams=a.map(String)),Array.isArray(i)&&(h.ignoredQueryParams=i.map(String)),h})(),ht=()=>({routeOverride:qt,query:It,doc:o}),Ge=De?.screenshot===!1?!1:De?.screenshot&&typeof De.screenshot=="object"?De.screenshot:{};let pt=!1,Ne=null,et=null;function hn(a){if(Ge===!1||Ne||ce&&!pt)return;et=new AbortController;const i=et.signal;Ne=_e("screenshot",s,o).then(h=>h.ok?h.mod.captureScreenshot({doc:o,target:a,signal:i,...Ge,...m.fetchForeignImage?{fetchForeignImage:R=>m.fetchForeignImage(R)}:{}}):{situation:"engine-load-failed",blindSpots:[],maskedCount:0})}function vo(){const a=ve(o),i=Hn(o.location.pathname),h=Br(o.location.search,It);return R=>(R.route===a||R.context?.page?.pathname===i)&&jr(R.context?.page?.query,h,It)}{const a=fn;a!==!1&&_e("crumbs",s,o).then(i=>{i.ok&&(Ze=i.mod.installTierC({win:r,...t?.early?{early:t.early}:{},...a&&typeof a=="object"?{config:a}:{},subscribeNav:h=>(ft.add(h),()=>ft.delete(h))}))})}const mt=()=>Ze?{breadcrumbs:{records:Ze.drain(),status:Ze.status()}}:{},wo=Xr(o,r,()=>{M!=="browse"&&E.length>0&&Q()}),xo=Ar(r,{onResize:()=>Q(),onRoute:()=>{const a={route:ve(o),url:o.location.href},i=a.route!==dt.route;if(i){u("navigate",{from:dt,to:a});for(const h of ft)h(dt.url,a.url)}if(dt=a,!i){Te();return}an=Date.now()+lo,r.setTimeout(()=>{m.listThreads().then(({data:h})=>{p=h,Q("optimistic")})},100),r.setTimeout(()=>void Te(),600)},onModal:yo});return J.setState(M),A.setMode(M),tn(),D||ae.show("error.nostorage",{label:"action.export",run:()=>Rt("md")}),Te().then(async a=>{const i=$r(r);if(!i){const R=new URLSearchParams(o.location.search).get(Io("t"));if(R){let F=a.find(Z=>Z.key===R);if(!F&&m.getThreadByKey){const Z=await m.getThreadByKey(R).catch(()=>null);Z&&(p=[...p.filter(j=>j.id!==Z.id),Z],Q(),F=p.find(j=>j.id===Z.id))}F?(await v(F.id),Ce?.scrollToSnag(r,n,F)):(ae.show("permalink.unknown"),await v(null));return}await H();return}const h=a.find(R=>R.id===i);await v(h?i:null),h&&Ce?.scrollToSnag(r,n,h)}),{root:n,assetBase:t?.assetBase??"",snags:()=>E,async add(a,i,h,R){const F=R?null:await de(),Z=R??(F?F.captureContext({page:F.derivePageRef(o.location,ht()),...mt()}):void 0);if(!Z)throw new Error(`[${be}] add() needs the capture chunk, or an explicit context`);return cn(a,i,Z,h)},refresh:Te,setRoute(a){qt=a&&a.startsWith("/")?a:null,Te()},setState:fe,getState:()=>M,openPanel:v,async open(a){const i=a.startsWith(vt.thread)?p.find(h=>h.id===a):p.find(h=>h.key===a);return i?i.route!==ve(o)?{ok:!1,reason:"wrong-page",url:i.context?.url??i.route,route:i.route}:(await v(i.id),Ce?.scrollToSnag(r,n,i),{ok:!0,anchorState:i.anchorState}):{ok:!1,reason:"not-found"}},closePanel:z,hitTest:(a,i)=>A.hitTest(a,i),destroy(){N?.close(),z(),ie?.destroy(),ae.destroy(),je.destroy(),ct(),mo(),po(),ho(),xo.destroy(),wo.destroy(),Ze?.destroy(),Ze=null,ft.clear(),ke?.destroy(),ke=null,ee?.destroy(),ee=null,Ue&&r.clearTimeout(Ue),Ue=0,o.removeEventListener("keydown",ln,!0),o.removeEventListener("visibilitychange",un),y(),A.destroy(),S.destroy(),J.destroy(),n.host.remove()}}}export{yn as HOST_CSS,vn as createHost,ja as isSensitiveValue,Va as mount,At as redactText,Ba as redactUrl};
|